原创 __no_init

2011-3-10 15:28 4717 5 6 分类: MCU/ 嵌入式

__no_init用于禁止系统启动时的变量初始化,什么情况下需要用这个关键字使系统禁止变量的初始化,禁止变量初始化用在什么场合,为什么要这样做,有什么意义吗?

1、看门狗复位的现场恢复,如果初始化了就完全不可恢复了

2、使用nvram保存数据,需要连续记录的。

 

 我有个变量,需要在系统意外复位时,这个变量值能保留,所以采用__no_init来实现,只是上电的时候这个值不是零

//目的:为__no_init的变量类型赋初值,因为__no_init不能这样使用:__no_init int var=0;
//实现:在系统上电时,var赋值为0,而系统工作中其他因素引起的复位则能够保留var变量值不丢失。

 __no_init int var;

void main(){
    if(MCUCSR_Bit0==1){ // MCUCSR_Bit0是上电复位标志位
        var=0;          // 如果是上电复位,则变量赋初值
        MCUCSR_Bit0=0; // 清空上电复位寄存器
    }
}

_no_init 属性,有了这个属性,编译器只给你分配空间,不给你初始化

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1432715 2013-10-23 10:04

谢谢,正不懂
相关推荐阅读
cz81_503897891 2011-11-21 17:13
博客备份--查找
大家好:     各位朋友现在博客如何备份?如何指定关键词进行查找?     以前的版本可以,现在新版以来我一直找这个功能,找不到. 谢谢...
cz81_503897891 2011-11-01 11:20
查看Keil MDK-ARM各种数据类型占用的字节数
  笔者正在学习uCOS-II,移植到ARM时考虑到数据类型的定义,但对于Keil MDK编译器的数据类型定义还是很模糊,主要就是区分不了short int、i...
cz81_503897891 2011-10-28 16:44
理解指针函数 区别:*(pfun(int, int))与 (*pfun)(int, int)
1.int *(pfun(int, int)):一个返回值为整型指针的函数 2.int (*pfun)(int, int):是一个指向返回值为int的函数的指针 3.#define  IAP_ENT...
cz81_503897891 2011-10-20 15:49
各种接口与管脚 232,VGA、USB、DVI、PS/2 RJ45网线、HDMI 的接口引脚定义
232,VGA、USB、DVI、PS/2 RJ45网线、HDMI 的接口引脚定义 学习 2010-06-07 20:20:15 阅读82 评论0 字号:大中小 经常看到网络上很多人要各种电脑接口引...
cz81_503897891 2011-10-20 11:50
ARM 中断编程入门 寄存器介绍及编写过程
最近一直在和ARM2200打交道,总结了下在ARM zlg模版中如和编写中断的方法(涉及了向量中断,非向量中断和外部中断的编写方法) 本人初学,以下为本人观点,若有错误,请与我联系交流 一.   ...
cz81_503897891 2011-10-18 17:17
LPC2478 向量中断控制器(VIC)
简介:         VIC是处于芯片外设和ARM内核之间的一个模块,对芯片所有外设中断进行管理,决定哪些中断源可以产生中断、产生哪种类型的中断以及中断后执行哪段服务程序。  ARM处理器内核具...
我要评论
1
5
关闭 站长推荐上一条 /3 下一条