发新帖我要提问
123
返回列表
打印
[STM32F1]

读写flash的注意事项

[复制链接]
楼主: jackcat
手机看帖
扫描二维码
随时随地手机跟帖
41
光光雎鸠| | 2024-8-21 10:08 | 只看该作者 回帖奖励 |倒序浏览
一旦闪存解锁,就可以安全地擦除和编程。

使用特权

评论回复
42
mollylawrence| | 2024-8-21 10:17 | 只看该作者
从代码的优化和效率角度来看,先进行状态检查可以避免执行不必要的操作,提高程序的执行效率和稳定性。

使用特权

评论回复
43
yorkbarney| | 2024-8-21 17:25 | 只看该作者
虽然STM32的HAL库或标准外设库通常不提供直接检查Flash锁定状态的函数,但您可以通过检查解锁密钥寄存器(FLASH_KEYR)的状态来间接推断Flash是否已解锁。然而,更常见的做法是直接尝试解锁Flash,因为即使Flash已经解锁,再次执行解锁操作通常也不会造成问题

使用特权

评论回复
44
saservice| | 2024-8-21 19:22 | 只看该作者
在执行完编程或擦除操作后,FLASH会自动恢复到写保护状态。

使用特权

评论回复
45
bestwell| | 2024-8-21 21:01 | 只看该作者
如果在不清楚 FLASH 状态的情况下盲目执行解锁指令,可能会破坏 FLASH 中的数据,或者导致系统的运行出现异常,就像您提到的产生 HardFault 错误。

使用特权

评论回复
46
alvpeg| | 2024-8-22 10:32 | 只看该作者
FLASH通常被锁定以防止意外的写操作,这可以保护存储在其中的数据不被意外修改或损坏。

使用特权

评论回复
47
物联万物互联| | 2024-8-22 10:55 | 只看该作者
启用的数据高速缓存可能导致不成功的擦除操作或数据不一致

使用特权

评论回复
48
nomomy| | 2024-8-22 11:31 | 只看该作者
解锁FLASH是通过向FLASH_KEYR寄存器写入特定的解锁序列来实现的。如果FLASH已经是解锁状态,再次写入这个序列可能会引起处理器异常,因为它试图执行一个无效的操作。

使用特权

评论回复
49
hudi008| | 2024-8-22 12:31 | 只看该作者
应该在尝试解锁FLASH之前,先检查FLASH的锁定状态。

使用特权

评论回复
50
i1mcu| | 2024-8-22 12:52 | 只看该作者
在 STM32 的编程中,遵循这样的操作流程是至关重要的。首先检查 FLASH 的锁定状态可以避免不必要的错误和潜在的硬件故障。

使用特权

评论回复
51
macpherson| | 2024-8-22 13:14 | 只看该作者
若FLASH已经处于解锁状态,再次执行解锁指令不仅没有意义,还可能触发硬件错误。因此,在执行解锁操作前,应始终检查FLASH的当前锁定状态。

使用特权

评论回复
52
AuroraS| | 2024-8-22 17:49 | 只看该作者
一旦闪存成功解锁,您就可以执行所需的闪存操作,如编程(写入)或擦除。

使用特权

评论回复
53
未来AI| | 2024-8-23 13:03 | 只看该作者
执行闪存擦除操作之前,需要关闭数据缓存(dcen位)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则