2
12
36
初级技术员
使用特权
141
1520
4587
中级工程师
void BOD_ISR(void) interrupt 8
213
3552
1万
资深工程师
huangcunxiake 发表于 2018-8-14 21:46 官方有个文档介绍怎么掉电前保存512个字节数据
小明的同学 发表于 2018-8-14 20:47
发表回复 本版积分规则 回帖后跳转到最后一页
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号
void BOD_ISR(void) interrupt 8 { //清中断标志 clr_EA; clr_BODEN; config_f[0]=device_hours>> 24; config_f[1]=device_hours>> 16; config_f[2]=device_hours>> 8; config_f[3]=device_hours FLASH_ProgramData((u16)bod_buf, &config_f, 12, 0); clr_BOF; set_BODEN; set_EA;//断点在这 }
void BOD_ISR(void) interrupt 8 { //清中断标志 clr_EA; clr_BODEN; config_f[0]=device_hours>> 24; config_f[1]=device_hours>> 16; config_f[2]=device_hours>> 8; config_f[3]=device_hours FLASH_ProgramData((u16)bod_buf, &config_f, 12, 0); clr_BOF; set_BODEN; set_EA; }
void read_device_hours(void) { device_hours|= bod_buf[0] << 24; device_hours|= bod_buf[1] << 16; device_hours|= bod_buf[2] << 8; device_hours|= bod_buf[3] ; if(device_hours != 0xffffffff) device_hours = device_hours; else device_hours = 1; //擦除 FLASH_EraseBlock_a((u16)bod_buf); }
代码如下: u8 bod_buf[4] _at_ 0x3610; u32 device_hours=0; u8 config_f[4]; void main(void) { Set_All_GPIO_Quasi_Mode; BOD_Init(); read_device_hours(); while(1) { } } void BOD_Init(void) { clr_BOF; clr_BORF; clr_BORST; clr_BOV1; clr_BOV0; //4.4v set_EBOD; //使能欠压检测 set_EA; set_BODEN; }