EESKILL的个人空间 https://passport2.21ic.com/?1567396 [收藏] [复制] [RSS]

日志

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

已有 557 次阅读2015-9-8 17:34 |个人分类:开发环境|系统分类:单片机| MDK, keil, 单片机, 经验分享

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

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

1. 在MDK的选项中设置如下:

       

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

#define__noinit____attribute__((zero_init))// 变量不初始化为0

__noinit__ int tmp; // 变量前加上宏__noinit__

当然也可以直接:

__attribute__((zero_init))int tmp;

说明:__noinit__不是mdk的关键


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)