Qxsever 发表于 2024-3-30 10:15:12

STM32F107RBT6 页擦除函数返回值成功但目标扇区数据并未擦除

程序调用页擦除库函数擦除内部FLASH扇区数据时,函数返回值正常,但仿真查看内存发现目标扇区并未成功擦除。

擦除前解锁FLASH正常,FLASH寄存器相关状态标志正常。系统频率72MHz,按手册要求配置 FLASH_ACR 2个等待位,开启预取缓存区。MCU在执行擦除任务时供电稳定3.28V。

!(data/attachment/forum/202403/30/100243jm4sgue4j4xy4j4t.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

除此之外,使用 STM32 ST-LINK Utility 验证发现,全片擦除有效,但页擦除仅 0x0800E000-0x0800E7FF 这一个扇区正常擦除,其它扇区均擦除失败但未报错。

请各位大佬指点!

butterflyspring 发表于 2024-4-1 10:50:48

1. 首先确保相应的区域写保护位不要被使能。
2.代码中擦除后面不要立刻有写人功能。(例程中是这样的,经过复位后又被写入数值)

可以参考库中例程
STM32Cube_FW_F1_V1.8.5\Projects\STM32F103RB-Nucleo\Examples\FLASH\FLASH_EraseProgram
页: [1]
查看完整版本: STM32F107RBT6 页擦除函数返回值成功但目标扇区数据并未擦除