主题中讨论的其他器件: MSP-FET
大家好、
客户正在 MSP430F67771上执行全局变量初始化、但发现全局变量的初始化值是易失性的。 测试代码如下所示:
uint32_t test_value1 = 150;
uint32_t test_value2 = 300;
int main()
{
system_pre_init();
SystemCLK_init(); //配置到系统时钟
//ACLK=32.768kHz、MCLK=24.576MHz、SMCLK=12.288MHz
Watchdog_init(); //在固件初始化期间禁用看门狗
GPIO_init(); //外设初始化到 GPIO
while (1)
{
如果(test_value1 = 150)
{
LED1_ON;
}
其他
{
LED1_OFF;
}
如果(test_value2 == 300)
{
LED2_ON;
}
其他
{
LED2_OFF;
}
LED3_OFF;
_DELAY_CYCLES (1000000);
LED3_ON;
_DELAY_CYCLES (1000000);
}
}
客户使用 LED1和 LED2来监控全局变量 test_value1/2是否是初始化150/300的值。 然后使用 LED3监视 main() 循环。
问题:
当电路板与调试器相连并在 CCS 8.2.0中进行调试时、LED1和 LED2导通、LED3闪烁。 一切似乎都很好;
2.如果断开调试器的连接并重新为 MCU 供电、有时 LED1&LED2会打开、有时会关闭、但 LED3会闪烁。 因此、全局变量初始化似乎不正确、test_value1/2的值 是随机的。
与客户核实后、优化级别为0、甚至添加"volatile"、 问题仍然存在。 但是、如果他们将全局变量修改为局部变量、 一切看起来都是正确的。
那么、您对该问题有什么意见吗? 非常感谢。