IAR编译和单片机的一些积累

来源:本站
导读:目前正在解读《IAR编译和单片机的一些积累》的相关信息,《IAR编译和单片机的一些积累》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《IAR编译和单片机的一些积累》的详细说明。
简介:文章内容为IAR编译和单片机的一些积累。

IAR C编译器中如何选择才能不初始化片内RAM

程序复位不清除变量值

用__no_init 实现:__no_init 是一个SEGMENT,是给LINKER用的,定义到不初始化的块中去。

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

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

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

给一简单的程序,例如你做一个时钟,不希望在狗复位时丢失时间,可如此定义

__no_init unsigned char month,day,hour,minute,second;

例子:

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

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

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

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

//目的:为__no_init的变量类型赋初值,因为__no_init不能这样使用:__no_initintvar=0;

//实现:在系统上电时,var赋值为0,而系统工作中其他因素引起的复位则能够保留var变量值不丢失。

__no_initintvar;

voidmain(){

if(MCUCSR_Bit0==1){//MCUCSR_Bit0是上电复位标志位

var=0;//如果是上电复位,则变量赋初值

MCUCSR_Bit0=0;//清空上电复位寄存器

}

}

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

提醒:《IAR编译和单片机的一些积累》最后刷新时间 2024-03-14 01:08:55,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《IAR编译和单片机的一些积累》该内容的真实性请自行鉴别。