133
715
2157
初级工程师
(1)如何禁止KEIL初始化RAM为零?
1. 在KEIL Noinit 打钩
2. <1> 另须对需要热启动保持的变量用__at关键字指定某个区域,否则还是没用 (#include "absacc.h")
<2>或者__attribute__((zero_init)) 关键字 .bss段
使用特权
int test1=1; __attribute__((zero_init)) int test2; int test3 __at(0x20001000); 查看MAP文件 test1 0x20000000 Data 4 main.o(.data) test2 0x2000000c Data 4 main.o(.bss) test3 0x20001000 Data 4 main.o(.ARM.__AT_0x20001000)
if (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET) { //这是上电复位 } else if (RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET) { //这是外部RST管脚复位 } else if (RCC_GetFlagStatus(RCC_FLAG_SFTRST) != RESET) { //这是外部RST管脚复位 } //清除RCC中复位标志 RCC_ClearFlag(); void RestStm32Cpu(void) { __set_FAULTMASK(1); // 关闭所有中端 NVIC_SystemReset(); // 复位 }
if(unStartFlag==0xAA55AA55) { //热启动处理 } else { //冷启动处理 unStartFlag=0xAA55AA55; }
QQ图片20150527222733.png (55.18 KB )
下载附件
2015-5-27 22:26 上传
QQ图片20150527222836.png (173.98 KB )
2015-5-27 22:27 上传
5
68
204
中级技术员
2
282
853
高级技术员
16
720
2218
发表回复 本版积分规则 回帖后跳转到最后一页
人才类勋章
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号