STM32
直播中

张浩

8年用户 1205经验值
私信 关注
[问答]

STM32g051c8tb擦除单页时,出现HardFault中断读取FLASH状态显示为CFGBSY一直为1,为什么?

请教各位大佬,我再使用STM32g051c8tb时,发现擦除单页时,会出现HardFault中断,然后读取FLASH状态显示为CFGBSY一直为1,用软件清不了零,不清楚是什么原因?有时候可以正常擦除,擦除数据地址可以被8整除的。

通过仿真执行擦除这段代码,有时可以正常,有时就异常进入HardFault里面。

这是我要保存到芯片内部FLASH的数据内容,指定起始地址,可以被8整除的。
通过百度也查询了一下解决措施,将未初始化的变量都初始化了,没有用的变量都去掉了,擦除页错误还是会偶尔出现的。


回帖(2)

彭亚光

2024-3-18 14:48:05
需要按页擦除,而不是按8字节擦除。
话说,为什么要指定内存地址啊~~
你这段内存地址可以被系统分配了哟
举报

孙成红

2024-3-18 16:44:19
初步分析可能是以下原因导致的擦除页错误:

1. 未正确初始化相关寄存器导致硬件错误。
   在使用ST的STM32系列芯片时,对于特定的功能(如擦除FLASH),需要正确配置相关寄存器。请确保正确初始化与擦除操作相关的寄存器,包括FLASH_CR、FLASH_SR等。

2. 可能是代码中存在未处理的中断或异常。
   中断或异常发生时,可能会修改FLASH的状态,导致擦除操作异常。请检查代码中是否正确处理了中断或异常,遵循正确的中断优先级处理机制,并适当的屏蔽或禁用中断。

3. 电源供应问题。
   使用FLASH擦除操作时,电源压降或电源干扰可能会导致芯片不稳定而发生错误。请确保提供足够稳定的电源供应,并注意电源线路设计和布局。

4. 在擦除页面操作时,要确保擦除操作的页面是有效的。
   在使用擦除操作前,可以先验证要擦除的页是否处于擦除保护状态。如果是,则需要先解锁擦除保护,然后再进行擦除操作。

5. 资源竞争或访问冲突。
   与FLASH访问相关的资源冲突可能导致异常。请确保在操作FLASH前,不会同时有其他代码访问或修改相关的寄存器或存储区域。

6. 由于FLASH的特性,可能需要延时等待擦除操作完成。
   在开始擦除操作后,需要等待足够的时间,以确保擦除操作完成。请根据芯片的规格表或文档,确定适当的延时时间。

以上仅为一些可能的原因和解决方法,具体问题需要根据实际情况进行调试和分析。如果问题仍然存在,请进一步提供详细的代码和硬件环境、操作流程等信息,以便更好地帮助解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分