在做 328 ESCL 的 lockTimes 和 unlockTimes 存入 内部Flash 的时候,出现了一个bug。就是上电初始化的时候,第一次读取出来的值,checkSum 通不过,恢复出厂设置,第一次写入 Flash 可以成功,但是后续当 lockTimes 和 unlockTimes 变化的时候,再次存入 Flash 一直擦除失败。
一步步跟进调试,发现是 FLASH_ERROR_PG 的错误。
后面上网搜了 “FLASH_ERROR_PG” 这个字符串,搜到这篇文章“解决stm32f103同一个扇区flash只能擦除一次,再次擦除报FLASH_ERROR_PG错误问题_stm32f103的flash只能写1次-优快云博客”,按照文章描述,加上清除标志位,和开关中断,问题解决