我有一个静态“init”变量可以在启动时运行一次函数(RTOS),但它似乎初始化为一个随机值。如果我删除静态标签,一切都会很好。(除了它每次通过都运行 init 函数的明显问题。)任何人都可以更深入地了解为什么这不起作用或者可能是实现这一目标的更好方法吗?
示例代码:
void ManageStructures()
{
// Variable declarations/definitions
static uint8_t StructInitialized;
// Have also tried "static uint8_t StructInitialized = 0", neither worked
// Function prototypes
void InitStruct();
if (!StructInitialized)
{
StructInitialized= 1;
InitStruct();
}
Test = StructInitialized;
编辑:对于缺乏信息,我深表歉意。这是针对一家公司的,我正努力遵守我们的公共信息政策。该MCU是使用“Ac6 STM32 MCU GCC”工具链的STM32F7系列。我不精通编译器操作,因此可能需要更长时间才能找到编译器或 makefile 相关问题的答案。
编辑:很明显,这是编译器或链接器脚本的问题,而不是我的代码。话虽如此,但在找到问题的根源之前,我还需要了解更多关于工具链、链接器脚本和编译器的知识。一旦我熟悉到足以提供有价值的反馈或自己回答这个问题,我会回到这个问题。谢谢大家的反馈和指导!