[STM32F0] STM32F030 擦写FLASH导致程序复位

[复制链接]
4047|15
 楼主| wsl_5631 发表于 2019-7-6 17:05 | 显示全部楼层 |阅读模式
用stm32f030RC做的项目,准备做OTA,擦写FLASH就好导致系统重启,前面加延时就可以了,真是怪事,请高手指点
                          //delay_ms(100);
                         __disable_irq();
                        IWDG_ReloadCounter();
                        FLASH_Unlock();
                        FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);  
                        FLASH_ErasePage(FLASH_APP_ADDS);
                        __enable_irq();

如上,加上delay_ms(100);就可以,否则,就会重启
xyz549040622 发表于 2019-7-7 08:00 | 显示全部楼层
不怪,说明你不满足flash的时间要求。delay_ms必须要加在__disable_irq();前面吗?前面进行了什么操作呢,你要定位下,重启是发生在哪段代码执行之后呢?
xuanhuanzi 发表于 2019-7-7 18:55 | 显示全部楼层
可能是前面的操作没有执行完。
xuanhuanzi 发表于 2019-7-7 18:55 | 显示全部楼层
延时后,确保了前面其他内容完成了。
airwill 发表于 2019-7-7 22:10 | 显示全部楼层
擦写 flash, 不能在 FLASH 里取指了, 所以你的代码先搬 SRAM 里执行就可以了
 楼主| wsl_5631 发表于 2019-7-8 08:30 | 显示全部楼层
xyz549040622 发表于 2019-7-7 08:00
不怪,说明你不满足flash的时间要求。delay_ms必须要加在__disable_irq();前面吗?前面进行了什么操作呢, ...

重启是发生在 执行FLASH_ErasePage(FLASH_APP_ADDS);这句。这段程序之前没有执行过擦或者写FLASH操作,应该不存在您说的FLASH延时要求。
 楼主| wsl_5631 发表于 2019-7-8 08:31 | 显示全部楼层
airwill 发表于 2019-7-7 22:10
擦写 flash, 不能在 FLASH 里取指了, 所以你的代码先搬 SRAM 里执行就可以了

如果必须放在SRAM里,为什么加上延时就好了呢
香水城 发表于 2019-7-8 14:50 | 显示全部楼层
复位是否跟看门狗的喂狗时机有关?

你的delay函数里是否有喂狗操作?
 楼主| wsl_5631 发表于 2019-7-8 15:07 | 显示全部楼层
香水城 发表于 2019-7-8 14:50
复位是否跟看门狗的喂狗时机有关?

你的delay函数里是否有喂狗操作?

delay函数没有喂狗,喂狗是在主程序循环中设置喂狗次数,定时器中断中,如果喂狗次数不为0,喂狗并递减。也怀疑过喂狗的问题。但是我再擦除前加了一次喂狗,看门狗复位时间也改成很长4秒以上,还是不行。我刚刚又试了一下,把狗关掉,程序就死机了。现在要排查的问题是为什么擦写执行不下去,香主有没有好的建议?
xyz549040622 发表于 2019-7-8 15:49 | 显示全部楼层
wsl_5631 发表于 2019-7-8 08:30
重启是发生在 执行FLASH_ErasePage(FLASH_APP_ADDS);这句。这段程序之前没有执行过擦或者写FLASH操作, ...

所以我要问你,重启发生在哪个语句的时候,你把延时加在FLASH_ErasePage(FLASH_APP_ADDS)之前是否解决呢?
 楼主| wsl_5631 发表于 2019-7-8 16:01 | 显示全部楼层
xyz549040622 发表于 2019-7-8 15:49
所以我要问你,重启发生在哪个语句的时候,你把延时加在FLASH_ErasePage(FLASH_APP_ADDS)之前是否解决呢 ...

可以
 楼主| wsl_5631 发表于 2019-7-10 09:08 | 显示全部楼层
沉下去了
晓伍 发表于 2019-8-6 10:29 | 显示全部楼层
是不是对时序要求很严格啊
八层楼 发表于 2019-8-6 10:38 | 显示全部楼层
那就加上延时呗
观海 发表于 2019-8-6 11:02 | 显示全部楼层
一点也不怪  有时候是需要延时的啊
huadong1357 发表于 2019-9-12 14:43 | 显示全部楼层
我遇到同样的问题,延时几毫秒就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

335

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部