完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以前记得擦除后是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出来的数据,,第一次读的是对的,,后面第二次再读的数据是错的。。。 |
|
相关推荐
12个回答
|
|
|
|
|
|
这么奇怪?哈哈哈哈,我监控处来的都是0xFF,我用的Jlink~ |
|
|
|
|
|
|
|
不好解释,楼主用的芯片FLASH是多大的?
|
|
|
|
STM32L151CBT6A,,128K
|
|
|
|
这里有ST的工程师吗???能否解释到底是怎么回事呢?
|
|
|
|
问题调试OK:
(1)STM32代理FAE工程师回复说,STM32L、STM8S、STM8L这几个系列的内部Flash特性就是如此,执行擦除后就是0x00,,跟以往的STM32不一样,其他擦除后的状态为0xFF; (2)某函数存在BUG,导致第一次数据返回正确,第二次及以后数据返回出错。 |
|
|
|
|
|
|
|
而且Flash ErasePage 和F1 和F4的也有差, 只要在Enable FLASH_RECR_ERASE之后 要在page的首地址写0x0000000; 就可以擦出
|
|
|
|
应该是ff,不是0
|
|
|
|
有问题的了
|
|
|
|
估计是软件问题
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
621 浏览 1 评论
1962 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1068 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1487 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1924 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 14:43 , Processed in 0.813467 second(s), Total 62, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号