关于no_init

2019-03-24 12:28发布

请问各位:
no_init unsigned char a;
这样定义对不对,后面不加@指定地址有没有问题。另外用no_init与__no_init有没有区别,反正在IAR下编译好象都能编译通过。
用no_init主要是为了防止看门狗导致系统复位后数据重初始化。
目前我在系统中用no_init定义了两个标志位Flag1,Flag2以及其它几个no_init变量,初始化过程我作以下处理。
if((Flag1 != 0x5A) && (Flag2 != 0x5A))
{
     // 在此进行几个no_init变量初始化
     Flag1 = 0x5A;
     Flag2 = 0x5A;
}
这样防止看门狗复位时几个变量重新初始化。
但我采用这种方式处理时,有时候在系统掉电重新上电后发现某个no_int 定义数据会出现一个非正常值,如本来我应该初始化为0,但上电后发现这个值不为0,有没有可能这个变量根本就没有初始化,显示还是一个随机值呢。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
qwqwqw2088
1楼-- · 2019-03-24 19:56
 精彩回答 2  元偷偷看……
cotwin
2楼-- · 2019-03-24 21:27
< :TI_MSP430_内容页_SA7 --> 谢谢回复。
这个不修改XCL文件不行吗?
我现在没有修改的话基本上能实现复位数据不丢失,而且大部分定义成no_init的变量都是正常,只是有时候出现某个变量数据异常的情况,比如某个unsigned int型变量本来应该为0x0001,可有时候我插上仿真器去看的时候发现其值变为了0x4001,也就是高8位发生了变化,这种机率出现较小,不太好捕捉。
会不会存在跟RAM内定义的其它变量地址重复的情况。

一周热门 更多>

相关问题

    相关文章