主题中讨论的其他器件: MSP-CGT
我们在 MSP430FR5994程序中使用一些 noinit 变量。 例如:
extern volatile unsigned int test_timer __attribute__(section (".TI.noinit")));
通常情况下,对于几乎所有的模块,在软件复位("reset();")或断电后,所有 noinit 变量仍然正确,使用旧的初始化值(重置或关机操作之前保存的值)。 这正是我所期望的。 NOINIT 变量不会改变、因为它们"永久"存储在 FRAM 中。
现在、对于少量器件(所有器件约为10%)、这些 noinit 变量主题在复位后将无法保存。 在软件复位或断电复位后、它们始终显示"0"。 例如:
TEST_TIMER=10; //变量初始化
Reset (); //软件复位
// TEST_TIMER 变量现在重置为 o
我使用 PERSISTENT pragma 尝试、但结果是相同的。
是否有人追究了类似的问题? 这种影响的根源是什么? 在软件复位后、可避免将所有 noinit 变量重新初始化为0的解决方案是什么? 那么、如果应在复位后保存变量、最好使用 NOINIT 或 PERSISTENT 呢?