实验环境
MCU:STM32F103RCT6
IDE:keil v5.31.0.0
应用环境
1.用于系统异常复位,日志保存
2.用于系统异常复位,运行数据保存(复位后能保持工作)
设置NoInit
点击魔术棒或Project->Options for Target…
变量定义
定义一个缓存,用于存储复位数据。绝对地址和缓存为自己设置的参数即IRAMx (Start)和(Size)大小。
uint8_t sys_err_buf[0x400] __attribute__((at(0x2000C000)));
编写测试
myprintf("sys_err_buf:%d\r\n",sys_err_buf[0]);
HAL_Delay(500);
sys_err_buf[0] = 0;
myprintf("sys_err_buf:%d\r\n",sys_err_buf[0]);
HAL_Delay(1000);
sys_err_buf[0] = 10;
myprintf("sys_err_buf:%d\r\n",sys_err_buf[0]);
HAL_Delay(500);
实验说明:
第一次打印:用于测试上电数据是否随机,复位是否为保存数据
第二次打印:用于清除数据
第三次打印:用于测试当系统复位重启后,数据是否还是为“10”
实验结果
初次上电和掉电复位缓存都为随机数据
当系统软件复位时,缓存数据为上次设置值。