请问STM32L151为什么FLASH擦除后全是0x00?

2019-07-14 14:39发布



以前记得擦除后是0xFF的,,今天调试发现,STM32L151调用官方库函数FLASH擦除也没有报错啊,但数据却全是0x00。。。
但是编程数据写进去是可以的,而且写数据也是正确的。。。奇怪了

翻遍了用户手册《STM32L1xxx Reference Manual.pdf》和数据手册《STM32L151x&L152x.pdf》,,,
也没有找到任何一个地方说明,,FLASH擦除后是0x00还是0xFF。。。

//Erase the sector(total 16 pages)
HAL_FLASH_Unlock();
EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
EraseInitStruct.PageAddress = USER_DATA_ADDRESS_SECTOR1 + (CurSector-1)*0x1000;
EraseInitStruct.NbPages     = 16;
HAL_FLASHEx_Erase(&EraseInitStruct, &AGEError);
HAL_FLASH_Lock();

以下是FLASH数据JLINK监控截图,,写进去是对的,,而且掉电后再次上电,,数据还是在的,也是对的,,但程序运行读FLASH出来的数据,,第一次读的是对的,,后面第二次再读的数据是错的。。。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
testd018
1楼-- · 2019-07-14 22:28
ryanyhh 发表于 2019-1-11 17:55
用STM32L512-Discovery开发板测试,,发现擦除后,,ST-LINK监控FLASH也全是0值

这么奇怪?哈哈哈哈,我监控处来的都是0xFF,我用的Jlink~
ryanyhh
2楼-- · 2019-07-14 22:46
 精彩回答 2  元偷偷看……
TOPCB
3楼-- · 2019-07-14 23:47
不好解释,楼主用的芯片FLASH是多大的?
ryanyhh
4楼-- · 2019-07-15 01:56
STM32L151CBT6A,,128K
ryanyhh
5楼-- · 2019-07-15 04:03
这里有ST的工程师吗???能否解释到底是怎么回事呢?
ryanyhh
6楼-- · 2019-07-15 07:24
问题调试OK:
(1)STM32代理FAE工程师回复说,STM32L、STM8S、STM8L这几个系列的内部Flash特性就是如此,执行擦除后就是0x00,,跟以往的STM32不一样,其他擦除后的状态为0xFF;
(2)某函数存在BUG,导致第一次数据返回正确,第二次及以后数据返回出错。

一周热门 更多>