你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
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更新部分函数。求大神能指定一二。
赞
0
收藏
0
评论
8
分享
发布时间:2020-8-28 01:02
举报
请先
登录
后回复
8个回答
废鱼
回答时间:2020-8-28 08:40:45
a0a.1 32b0c
在操作之前是否操作了unlock?如果没有操作,需要先解锁flash,再进行擦写。
赞
0
评论
回复
支持
反对
小小超
回答时间:2020-8-28 10:31:49
a0a.1 32b0c
1.必须擦除一个扇区,因为ST的擦除是按扇区的。
2.必须按照先解锁,再擦除,再写入的顺序。
ST有相当的例程,写入flash还是很简单的。参考一下固件库的例程吧
赞
0
评论
回复
支持
反对
陌路夕颜
回答时间:2020-8-28 10:41:56
a0a.1 32b0c
1、flash是只能由1变0,写之前需要擦除
2、不只是STM32,其他的flash也有最小操作单位,一般是扇区为单位,有4k 8k等等
3、对于STM32的flash写,需要按照先解锁,读出目标地址所在扇区的数据放在内存,直接修改内存的数据再擦除,再写入,注意地址要4字节对其
4、看看写之前的数据对不对
赞
0
评论
回复
支持
反对
wenyangzeng
回答时间:2020-8-28 10:49:12
a0a.1 32b0c
官方有文档可以参考:
STM32_Flash_RM_CH_V6.rar
(238.9 KB, 下载次数: 61)
2020-8-28 10:48 上传
点击文件名下载附件
赞
0
评论
回复
支持
反对
kate2005_chen
回答时间:2020-8-28 12:19:17
a4a.1 32b0c
擦除一个扇区,解锁然后写入。。。
赞
0
评论
回复
支持
反对
大陶
回答时间:2020-8-30 13:11:57
a0a.1 32b0c
先擦除这个扇区或者块,然后解锁 就可以了
赞
0
评论
回复
支持
反对
butterflyspring
回答时间:2020-9-4 11:32:47
a0a.1 32b0c
看使用哪个系列,少数系列是不需要先擦除的(比如L0系列)。具体可以参相关系列手册部分,内容很少的。
另外代码可以参考例程,每个系列都有相关配套的CUBE库和内部自带例程
赞
0
评论
回复
支持
反对
fripside62e8bb
回答时间:2020-10-14 15:52:19
a4a.1 32b0c
谢谢各位的指点,我已经在真机(STM32L475)上擦写成功,只是Keli模拟器上(STM32F103)无法写成功。
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
2.必须按照先解锁,再擦除,再写入的顺序。
ST有相当的例程,写入flash还是很简单的。参考一下固件库的例程吧
2、不只是STM32,其他的flash也有最小操作单位,一般是扇区为单位,有4k 8k等等
3、对于STM32的flash写,需要按照先解锁,读出目标地址所在扇区的数据放在内存,直接修改内存的数据再擦除,再写入,注意地址要4字节对其
4、看看写之前的数据对不对
另外代码可以参考例程,每个系列都有相关配套的CUBE库和内部自带例程