关于picc的“persistent”修饰的变量

2019-07-16 06:37发布

请教各位高手:
picc的“persistent”修饰的变量值,会被按下复位键后给系统初始化吗?
还有该变量的值不会受到什么的复位影响?
请大家赐教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
diangongshi
2019-07-16 12:28
persistent — 非初始化变量声明

按照标准 C 语言的做法,程序在开始运行前首先要把所有定义的但没有预置初值的变量全部清零。PICC 会在最后生成的机器码中加入一小段初始化代码来实现这一变量清零操作,且这一操作将在 main 函数被调用之前执行。问题是作为一个单片机的控制系统有很多变量是不允许在程序复位后被清零的。为了达到这一目的,PICC 提供了“persistent”修饰词以声明此类变量无需在复位时自动清零,编程员应该自己决定程序中的那些变量是必须声明成“persisten”类型,而且须自己判断什么时候需要对其进行初始化赋值。例如:
persistent unsigned char hour,minute,second; //定义时分秒变量

经常用到的是如果程序经上电复位后开始运行,那么需要将 persistent 型的变量初始化,如果是其它形式的复位,例如看门狗引发的复位,则无需对 persistent 型变量作任何修改。PIC 单片机内提供了各种复位的判别标志,用户程序可依具体设计灵活处理不同的复位情形。


从网上找的,希望对你有用

一周热门 更多>