闪存写入时STM32停电

2019-07-14 18:00发布

我试图在STM32F405VGT6上检测到停电,它应该在虚拟EEPROM(Flash)中写一个计数器。但是写作过程还不够快。现在,我不能再将Flash初始化,当我调用HAL_FLASH_Program(uint32_t TypeProgram,uint32_t Address,uint64_t Data)函数时,它总是给我一个HAL_ERROR(FLASH_FLAG_PGPERR和FLASH_FLAG_PGSERR)。我已经尝试使用STUtility工具完全使用STM32,但这也没有用。是因为我打破了我的Flash吗?有没有办法在写入时保护闪光灯免受停电?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
Lucia_nie
1楼-- · 2019-07-14 22:57
 精彩回答 2  元偷偷看……
weilai123
2楼-- · 2019-07-15 02:45
好吧,我认为闪光灯消失了。我会尝试更换微控制器。
iettke
3楼-- · 2019-07-15 06:33
错了。即使你使用SWD程序员调试器,实际上也可以编程FLASH内存运行时。没有其他办法。像openOCD或gdbserver这样的程序首先将小程序加载到RAM,然后该程序写入FLASH。
zyh34997
4楼-- · 2019-07-15 08:23
尝试执行批量擦除。使用寄存器代替这个的库
关于运行时FLASH编程是错误的。没有其他的FLASH编程方法,即使你使用自己喜欢的调试探针(与SWD或JTAG无关)软件编程芯片(在大多数情况下ooenOCD或gdbserver将小程序加载到编程FLASH的RAM中。没有STM32 FLASH写入的硬件机制。
Lucia_nie
5楼-- · 2019-07-15 14:01
您也可以直接通过SWD编程FLASH,闪存加载器只是通过传输二进制文件来减少协议开销而不是直接编程,从而加速了整个过程。当然,你的观点是没有其他方法存在仍然是正确的。FLASH仍然以相同的方式物理写入,只是通过AHB AP总线而不是D总线上的数据。
zyh34997
6楼-- · 2019-07-15 19:32
 精彩回答 2  元偷偷看……

一周热门 更多>