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

STM32 Flash写入失败

[复制链接]
fripside62e8bb 提问时间:2020-8-28 01:02 /
关于stm32 flash写入有两个疑问:
1. 是否每次写操作都需要擦除一个扇区?看到资料说,Flash写入只能由1改成0,因此先要擦除一个整个扇区才能写。

2. 我尝试用HAL_FLASH_Program去写一个代码段的地址时(0x0800194这样的),返回HAL_OK,但实际上没有写成功。在Keli memory区域可以直接修改,但是在代码里面修改不成功。这是为什么?

想通过IAP修改部分代码,实现用patch更新部分函数。求大神能指定一二。
收藏 评论7 发布时间:2020-8-28 01:02

举报

7个回答
回答时间:2020-8-28 08:40:45
在操作之前是否操作了unlock?如果没有操作,需要先解锁flash,再进行擦写。
ts2000 回答时间:2020-8-28 10:31:49
1.必须擦除一个扇区,因为ST的擦除是按扇区的。
2.必须按照先解锁,再擦除,再写入的顺序。
ST有相当的例程,写入flash还是很简单的。参考一下固件库的例程吧
陌路夕颜 回答时间:2020-8-28 10:41:56
1、flash是只能由1变0,写之前需要擦除
2、不只是STM32,其他的flash也有最小操作单位,一般是扇区为单位,有4k 8k等等
3、对于STM32的flash写,需要按照先解锁,读出目标地址所在扇区的数据放在内存,直接修改内存的数据再擦除,再写入,注意地址要4字节对其
4、看看写之前的数据对不对
wenyangzeng 回答时间:2020-8-28 10:49:12
官方有文档可以参考:
STM32_Flash_RM_CH_V6.rar (238.9 KB, 下载次数: 5)
kate2005_chen 回答时间:2020-8-28 12:19:17
擦除一个扇区,解锁然后写入。。。
dataozi 回答时间:2020-8-30 13:11:57
先擦除这个扇区或者块,然后解锁 就可以了
butterflyspring 回答时间:2020-9-4 11:32:47
看使用哪个系列,少数系列是不需要先擦除的(比如L0系列)。具体可以参相关系列手册部分,内容很少的。
另外代码可以参考例程,每个系列都有相关配套的CUBE库和内部自带例程
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版