完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我们知道STM32的flash是按32bit写入的,对应位只能由1变0,要反过来只有通过片、块、段擦除:有个对时间和电能都要求极度严格的应用里面,我按这个流程这样来写入flash的数据:
启动-解锁flash 写入0b 0001, 上锁-关机 启动 写入0b 0011, 关机 启动 写入0b 0111 关机 以此类推写入(有点像写正字计数的道理,中间还有逻辑判断的过程不表) 0b1111 0b11111 0b111111 0b1111111 就是这个样子,理论上来说,flash只能由1变0,不能反过来,所以按照我的方法每次往高位的bit写入的时候是不影响低位已经写入的bit位的. 但是我在程序里面发现,前面几次都能正常运行,但是当已经写入到0xf的时候,下次本应该写入0x1f,却写入失败了,无效,通过SW调试接口看到这个flash地址上的数据根本就没变化!再往下写入0x3f的时候却变成了0x7f。。。我的程序找个空白地方,单独写入任何数据都没问题。还有,调试的时候jlink供电,不缺电 换过机器各种代码,发现问题应该就在这个flash的控制上面,这里跪求对stm32精通的大大出来解释一些这种现象的原因了 MCU是stm32L051K8 调试环境是 keil MDK-ARM 5.17+jlink |
|
相关推荐
1 条评论
20个回答
|
|
在其他芯片上碰到类似问题,你看看芯片的Flash是不是支持Error Correction Code的功能,如果有这个功能会导致你对flash进行0-1操作时会有问题。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2136 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1970 浏览 3 评论
4566 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2116 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2629 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 03:52 , Processed in 0.549813 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号