我正在 GHS 环境中编写嵌入式代码,我面临着一个从未遇到过的奇怪问题。除了在运行时初始化的常量之外的所有全局变量都被设置为数据类型的最大值。例如:
我定义了一个全局变量:
静态 uint8 Dcm_Cbk_Gu8_FirstReqAfterReset = 1;
但是,无论初始值是多少,变量的值始终设置为 255。我确信该变量尚未在代码中的任何地方使用。如果数据类型为uint16,则该值应始终为 65535 ,直到在运行时更改。好吧,它发生在所有全局变量上,而不是数据类型。
请注意,如果变量被全局声明并在运行时初始化,则不会发生这种情况,但这种方式违反了编码约定。
实际上,一切都在另一个环境中运行良好(由 make 构建)但是当我合并代码(*.c,*h)并将整个链接器文件移动到不同的环境(由 Scon 结构构建)时,我遇到了问题。使用的MCU是合唱10M(SPC58NH92)。
任何人都知道原因,你能扩大我的知识吗?谢谢!