久芯网

STM32 Flash写入失败

avatar fripside62e8bb 提问时间: 2023-09-22 11:25:27 / 未解决
关于stm32 flash写入有两个疑问:
1. 是否每次写操作都需要擦除一个扇区?看到资料说,Flash写入只能由1改成0,因此先要擦除一个整个扇区才能写。

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

想通过IAP修改部分代码,实现用patch更新部分函数。求大神能指定一二。

如需获得 STM32 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

8个回答
  • avatar 废鱼
    回答时间: 2023-09-22 11:43:46

    在操作之前是否操作了unlock?如果没有操作,需要先解锁flash,再进行擦写。

  • avatar 小小超
    回答时间: 2023-09-22 12:01:31

    1.必须擦除一个扇区,因为ST的擦除是按扇区的。 2.必须按照先解锁,再擦除,再写入的顺序。 ST有相当的例程,写入flash还是很简单的。参考一下固件库的例程吧

  • avatar 陌路夕颜
    回答时间: 2023-09-22 12:25:08

    1、flash是只能由1变0,写之前需要擦除 2、不只是STM32,其他的flash也有最小操作单位,一般是扇区为单位,有4k 8k等等 3、对于STM32的flash写,需要按照先解锁,读出目标地址所在扇区的数据放在内存,直接修改内存的数据再擦除,再写入,注意地址要4字节对其 4、看看写之前的数据对不对

  • avatar wenyangzeng
    回答时间: 2023-09-22 12:58:17

    官方有文档可以参考: STM32_Flash_RM_CH_V6.rar (238.9 KB, 下载次数: 24) 2020-8-28 10:48 上传 点击文件名下载附件 下载积分: ST金币 -1

  • avatar kate2005_chen
    回答时间: 2023-09-22 13:17:08

    擦除一个扇区,解锁然后写入。。。

  • avatar 大陶
    回答时间: 2023-09-22 13:34:43

    先擦除这个扇区或者块,然后解锁 就可以了

  • avatar butterflyspring
    回答时间: 2023-09-22 13:56:30

    看使用哪个系列,少数系列是不需要先擦除的(比如L0系列)。具体可以参相关系列手册部分,内容很少的。 另外代码可以参考例程,每个系列都有相关配套的CUBE库和内部自带例程

  • avatar fripside62e8bb
    回答时间: 2023-09-22 14:28:33

    谢谢各位的指点,我已经在真机(STM32L475)上擦写成功,只是Keli模拟器上(STM32F103)无法写成功。

会员中心 微信客服
客服
回到顶部