MDK下怎样才能让变量在复位时不被初始化

最近一个项目需要保存一下临时数据,而产品容易受干扰而复位。所以需要保存一下数据,那么只有在系统复位时候不再初始化变量即可。对应MDK(keil)来说是一个比较麻烦的问题。通过网络上找了大量资料和测试发现终于可以了。

如果要实现以上要求,必须设置两点,缺一不可:

1. 在MDK的选项中设置:

2. 必须在程序代码中如下编写:

#define __noinit__ __attribute__((zero_init))   // 变量不初始化为0
__noinit__  int  tmp;                                              // 变量前加上宏__noinit__ 

当然也可以直接:

__attribute__((zero_init))    int  tmp; 

说明:__noinit__ 不是mdk的关键字

粽子糖果 发表于08-28 09:26 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

粽子糖果
粽子糖果(总统)
金币:41631个|学分:51991个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号