登录/注册

stm32f103flash擦除

stm32f103flash擦除

更多

在STM32F103系列微控制器中,对内部Flash存储器进行擦除需要遵循特定的操作流程。以下是关键步骤和注意事项:


操作步骤

  1. 解锁Flash控制寄存器

    • STM32的Flash默认处于写保护状态,需先解锁才能操作:
      FLASH->KEYR = 0x45670123;  // 写入解锁KEY1
      FLASH->KEYR = 0xCDEF89AB;  // 写入解锁KEY2
    • 若解锁失败,需先清除FLASH->SR中的错误标志(如PGAERR, WRPRTERR)。
  2. 擦除操作

    • 扇区擦除(以擦除某1KB扇区为例):
      FLASH->CR |= FLASH_CR_PER;        // 选择扇区擦除模式
      FLASH->AR = 0x0800XXXX;           // 输入待擦除扇区的起始地址(如0x08004000)
      FLASH->CR |= FLASH_CR_STRT;       // 启动擦除
      while (FLASH->SR & FLASH_SR_BSY); // 等待擦除完成
      FLASH->CR &= ~FLASH_CR_PER;       // 关闭擦除模式
    • 全片擦除(谨慎使用,可能需逐扇区操作):
      FLASH->CR |= FLASH_CR_MER;        // 使能全片擦除
      FLASH->CR |= FLASH_CR_STRT;
      while (FLASH->SR & FLASH_SR_BSY);
      FLASH->CR &= ~FLASH_CR_MER;
  3. 重新上锁Flash

    FLASH->CR |= FLASH_CR_LOCK;  // 操作完成后恢复写保护

注意事项

  1. 中断与代码位置

    • 擦除期间需关闭全局中断(或确保代码未运行在待擦除的Flash区域)。
    • 建议将擦除代码加载到RAM中执行,避免擦除时程序崩溃。
  2. 电源稳定性

    • 确保VDD电压稳定(2.7-3.6V),避免擦写过程中断电。
  3. 擦除时间

    • 扇区擦除约需数ms,全片擦除时间更长。需通过FLASH_SR_BSY位等待完成。
  4. 扇区划分

    • 不同型号扇区大小不同(如小容量16KB/扇区,中容量1KB或2KB/扇区),需查阅数据手册确认。
  5. 选项字节保护

    • 若启用了写保护(RDP),需先解除保护才能擦除。

库函数简化操作(使用标准外设库)

#include "stm32f10x_flash.h"

void EraseFlashSector(uint32_t SectorAddress) {
    FLASH_Unlock();
    FLASH_Status status = FLASH_ErasePage(SectorAddress);  // 扇区擦除
    if (status != FLASH_COMPLETE) {
        // 处理错误
    }
    FLASH_Lock();
}

常见问题

如需进一步调试,可通过FLASH->SR寄存器分析错误标志(如编程错误、写保护错误等)。

STM32F103RET6 FLASH擦除失败的原因?怎么解决?

MCU是STM32F103RET6,512K大容量型,我现在程序内进行掉电存储,用到的地址是第224页到254页,共60kb,芯片上电后第一次擦除是成功的,然后写入一次数据,再读出数据是对的,之后

2025-07-10 06:40:10

STM32F103VET6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32F103RCT6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32F103xC/STM32F103xD/STM32F103xE微控制器手册

STM32F103xC/D/E的更多详细信息家庭,请参阅第2.2节:整个家庭的完全兼容性。高密度STM32F103xC/D/E数据表应与STM32F

资料下载 十里寂 2023-05-17 11:25:42

GD32F103STM32F103的区别 2021.6.2

GD32F103和STM32F103区别介绍关键词Key words:GD32F103、

资料下载 李杰 2021-12-08 11:06:03

解决stm32f103同一个扇区flash只能擦除一次,再次擦除FLASH_ERROR_PG错误问题

项目中用到stm32内部flash存储一些系统运行数据,每次上电重新加载保存的数据。早先用法如下图所示,擦除之前每次要关闭总中断,解锁

资料下载 佚名 2021-12-02 11:51:13

STM32F103:内部Flash模拟EEPROM

内部Flash模拟EEPROM一、原因由于STM32F103系列的单片机内部Flash的擦写次数仅有10k次,如果遇到想要存储又多变,又需要掉电

资料下载 1123127317 2021-12-02 11:36:21

STM32擦除内部FLASH时间过长导致IWDG复位

STM32擦除内部FLASH时间过长导致IWDG复位(嵌入式开发一般采用什么方式?)-客户反馈在使用

资料下载 佚名 2021-07-30 11:06:36

STM32F103RCT6自动擦除FLASH会导致产品变砖怎么解决?

本人最近在使用STM32F103RCT6这款芯片做产品,但是发现有个别芯片出现在掉点瞬间有上电时,MCU自动擦除了第一个FLASH扇区现象,导致

2024-04-23 06:06:35

stm32f103 flash模拟eeprom

,STM32F103的Flash存储器可以模拟EEPROM的功能,在本文中我们将详细介绍如何使用STM32F103的

2024-01-09 11:21:36

意法半导体STM32F103RCXX系列型号解读

  这些型号均属于意法半导体(STMicroelectronics)的STM32F103系列微控制器,其特点如下: STM32F103RCT6:512 KB

2023-08-24 18:54:49

STM32F103C8T6读写内部flash

大家好,今天和大家分享一下STM32F103C8T6读写内部flash,关于103系列的单片机大家可以参考选项手册查看

2021-09-30 15:48:18

STM32F407的FLASH为什么只能按扇区擦除

STM32F407的FLASH为什么只能按扇区擦除?怎样使用STM32F

2021-09-24 12:04:38

STM32F407的FLASH不能擦除某页

今天移植了某个F1的工程到F4上,发现STM32F407的FLASH不能

2021-08-02 09:00:06

STM32单片机内部FLASH的编程和擦除操作

F1和F4系列的芯片FLASH在擦除后会是0xFFFFFFFF,而L1系

2021-02-14 16:37:00

7天热门专题 换一换
相关标签