[STM32F4] 闪存损坏,显示为?(问号)

[复制链接]
 楼主| 小库里 发表于 2025-7-19 05:10 | 显示全部楼层 |阅读模式
使用STM32CubeIDE开发STM32F429芯片。
在使用flash时,有时会出现内部数据损坏的情况,显示为"?"。
可能是什么原因导致部分内存显示为"?"?
如何在不触发硬错误的情况下识别这个问题?
为什么在使用HAL_FLASHEx_Erase_IT后,数据变成了'0'而不是'1'?

公羊子丹 发表于 2025-7-24 07:18 | 显示全部楼层
STM32 的 FLASH 擦除后确实是全 1,不是 0,除非擦除没成功或者写了 0。
周半梅 发表于 2025-7-24 07:19 | 显示全部楼层
出现 ? 通常是读到非法地址或者数据校验失败,你读数据有没有做校验?
帛灿灿 发表于 2025-7-24 07:20 | 显示全部楼层
用 HAL_FLASHEx_Erase_IT 的时候,中断里有没有等擦除完成再写?
童雨竹 发表于 2025-7-24 07:22 | 显示全部楼层
擦除出错可能是电压不稳,FLASH 写擦都对供电有要求。
万图 发表于 2025-7-24 07:25 | 显示全部楼层
有可能写入的时候被别的中断打断了,写了一半掉电也会花屏。
Wordsworth 发表于 2025-7-24 07:29 | 显示全部楼层
STM32 的 FLASH 最小擦除单位是扇区,写的时候要对齐,没对齐会覆盖错地方。
Bblythe 发表于 2025-7-24 07:31 | 显示全部楼层
想判断损坏可以给数据加 CRC 或者 magic number,先判头尾标记。
Pulitzer 发表于 2025-7-24 07:32 | 显示全部楼层
显示 ? 也可能是你用串口或者 LCD 显示时格式化出错,并不一定真是问号。
Uriah 发表于 2025-7-24 07:33 | 显示全部楼层
你有开 ICACHE 或 DCACHE 吗?有时候读到缓存里没刷出来也会假数据。
Clyde011 发表于 2025-7-24 07:34 | 显示全部楼层
建议写完后用 HAL_FLASH_Program 再读一遍核对,别直接假定写成功了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

36

帖子

0

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