你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L151为何FLASH擦除后全是是0x00?

[复制链接]
nicholasldf06 提问时间:2017-12-8 17:14 /
本帖最后由 nicholasldf06 于 2017-12-8 18:02 编辑

以前记得擦除后是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出来的数据,,第一次读的是对的,,后面第二次再读的数据是错的。。。

心率数据FLASH截图_20171208.png
1 收藏 评论9 发布时间:2017-12-8 17:14

举报

9个回答
nicholasldf06 回答时间:2017-12-15 13:54:20
问题调试OK:
(1)STM32代理FAE工程师回复说,STM32L、STM8S、STM8L这几个系列的内部Flash特性就是如此,执行擦除后就是0x00,,跟以往的STM32不一样,其他擦除后的状态为0xFF;
(2)某函数存在BUG,导致第一次数据返回正确,第二次及以后数据返回出错。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

nicholasldf06 回答时间:2017-12-8 17:41:51
用STM32L512-Discovery开发板测试,,发现擦除后,,ST-LINK监控FLASH也全是0值
Discovery开发板FLASH擦除也有为0x00的问题.JPG
Inc_brza 回答时间:2017-12-8 17:54:52
nicholasldf06 发表于 2017-12-8 17:41
用STM32L512-Discovery开发板测试,,发现擦除后,,ST-LINK监控FLASH也全是0值

这么奇怪?哈哈哈哈,我监控处来的都是0xFF,我用的Jlink~
nicholasldf06 回答时间:2017-12-9 13:45:55
STM32F103Flash擦除是可以的,,,STM32L1系列到底是啥奇怪的问题呢?芯片BUG?
STM32F103Flash擦除OK.JPG
废鱼 回答时间:2017-12-9 15:16:38
不好解释,楼主用的芯片FLASH是多大的?
nicholasldf06 回答时间:2017-12-9 17:01:31
STM32L151CBT6A,,128K
nicholasldf06 回答时间:2017-12-13 09:14:34
这里有ST的工程师吗???能否解释到底是怎么回事呢?
wangziyan1016 回答时间:2018-1-23 16:27:37
楼主您好,
您的问题解决了吗?
我用的STM32L152,遇到了同样的问题,擦除后Flash中的数据全是00。
望指教。
Cortexxx 回答时间:2018-5-3 15:53:25
而且Flash ErasePage 和F1 和F4的也有差, 只要在Enable FLASH_RECR_ERASE之后   要在page的首地址写0x0000000; 就可以擦出
微信截图_20180503155211.png


关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版