[STM32F1] 读写flash的注意事项

[复制链接]
mollylawrence 发表于 2024-8-21 10:17 | 显示全部楼层
从代码的优化和效率角度来看,先进行状态检查可以避免执行不必要的操作,提高程序的执行效率和稳定性。
yorkbarney 发表于 2024-8-21 17:25 | 显示全部楼层
虽然STM32的HAL库或标准外设库通常不提供直接检查Flash锁定状态的函数,但您可以通过检查解锁密钥寄存器(FLASH_KEYR)的状态来间接推断Flash是否已解锁。然而,更常见的做法是直接尝试解锁Flash,因为即使Flash已经解锁,再次执行解锁操作通常也不会造成问题
saservice 发表于 2024-8-21 19:22 | 显示全部楼层
在执行完编程或擦除操作后,FLASH会自动恢复到写保护状态。
bestwell 发表于 2024-8-21 21:01 | 显示全部楼层
如果在不清楚 FLASH 状态的情况下盲目执行解锁指令,可能会破坏 FLASH 中的数据,或者导致系统的运行出现异常,就像您提到的产生 HardFault 错误。
alvpeg 发表于 2024-8-22 10:32 | 显示全部楼层
FLASH通常被锁定以防止意外的写操作,这可以保护存储在其中的数据不被意外修改或损坏。
物联万物互联 发表于 2024-8-22 10:55 | 显示全部楼层
启用的数据高速缓存可能导致不成功的擦除操作或数据不一致
nomomy 发表于 2024-8-22 11:31 | 显示全部楼层
解锁FLASH是通过向FLASH_KEYR寄存器写入特定的解锁序列来实现的。如果FLASH已经是解锁状态,再次写入这个序列可能会引起处理器异常,因为它试图执行一个无效的操作。
hudi008 发表于 2024-8-22 12:31 | 显示全部楼层
应该在尝试解锁FLASH之前,先检查FLASH的锁定状态。
i1mcu 发表于 2024-8-22 12:52 | 显示全部楼层
在 STM32 的编程中,遵循这样的操作流程是至关重要的。首先检查 FLASH 的锁定状态可以避免不必要的错误和潜在的硬件故障。
macpherson 发表于 2024-8-22 13:14 | 显示全部楼层
若FLASH已经处于解锁状态,再次执行解锁指令不仅没有意义,还可能触发硬件错误。因此,在执行解锁操作前,应始终检查FLASH的当前锁定状态。
未来AI 发表于 2024-8-23 13:03 | 显示全部楼层
执行闪存擦除操作之前,需要关闭数据缓存(dcen位)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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