最近一个项目需要保存一下临时数据,而产品容易受干扰而复位。所以需要保存一下数据,那么只有在系统复位时候不再初始化变量即可。对应MDK(keil)来说是一个比较麻烦的问题。通过网络上找了大量资料和测试发现终于可以了。
如果要实现以上要求,必须设置两点,缺一不可:
1. 在MDK的选项中设置:
2. 必须在程序代码中如下编写:
#define __noinit__ __attribute__((zero_init)) // 变量不初始化为0
__noinit__ int tmp; // 变量前加上宏__noinit__
当然也可以直接:
__attribute__((zero_init)) int tmp;
说明:__noinit__ 不是mdk的关键字