关于__no_init等关键字的一些疑问

__no_init用于禁止系统启动时的变量初始化,我想知道,什么情况下需要用这个关键字使系统禁止变量的初始化,禁止变量初始化用在什么场合,为什么要这样做,有什么意义吗?
另外__ramfunc也有类似疑问,书上只是说用__ramfunc定义的函数企图访问ROM将导致编译器产生警告,请问什么情况下才需要用__ramfunc

 

 

noinit做到复位后数据保持不变

用途常见的有
1、看门狗复位的现场恢复,如果初始化了就完全不可恢复了
2、使用nvram保存数据,需要连续记录的。
至于ram功能就是把程序放到ram里面跑,用途有
1、rom不可访问的阶段程序可以继续运行,像flash升级操作,iap操作等都需要
2、要求更高的速度,在大多数系统下ram的速度要快于rom,所以可以得到更大的速度

你可能感兴趣的:(单片机)