当前位置:首页 > 单片机 > 单片机
[导读] 概述flash作为stm32中的存储物质,使用非常广泛。关于flash的概念什么的网上已经有很多介绍,笔者便不再赘述,分享一篇stm32的闪存中文编程手册。相对于很多操作寄存器的例子,笔者这篇着重于用库函数处

概述
  • flash作为stm32中的存储物质,使用非常广泛。关于flash的概念什么的网上已经有很多介绍,笔者便不再赘述,分享一篇stm32的闪存中文编程手册。

  • 相对于很多操作寄存器的例子,笔者这篇着重于用库函数处理。

代码设计写入

编写代码的时候实际上非常简单。只需要几个步骤就可以完成写入。

  • 解锁
    FLASH_Unlock();
    这一步非常简单。只需要调用上面的解锁函数即可。虽然简单,但是不能省略~

  • 清除相应的标志位
    FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_BSY | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
    笔者于头文件中找到了这几个标志位于是全部清除。同样也是不能省略。

  • 擦除扇区

    • 这一步是整个写入过程中最为让人不解的。但是只要搞懂了原理。其实也不是那么难懂。

      flash中有一个叫扇区的概念,有的教材也称为页。按照不同容量,flash存储器组织成32个1K字节/页(小容量)、 128个1K字节/页(中容量)、 256个2K字节/页(大容量)的主存储器块和一个信息块。

    • st公司提供的擦除flash扇区库函数,一次至少要擦除一个扇区。
      FLASH_Status FLASH_ErasePage(uint32_t Page_Address)
      其中Page_Address是要擦除扇区的地址,若传入的不是首地址也会对齐到首地址擦除相应的一个扇区。也就是说我们存在这个扇区上的所有东西都会被清除。

    • 如果不清除该扇区,我们是没有办法在该扇区上写东西的。据说这样是因为硬件设计的原因(笔者不是很确定)。

    • 这里就涉及到了一个可擦除范围的问题。flash的地址范围那么大,会不会有什么地方是不能擦除的呢。答案是有的。经过笔者的实验,笔者的stm32f107vct6的地址范围是0x08032000~0x0803FFC4。至于为什么不是从flash的起始地址0x08000000开始呢。根据笔者的查询,是因为避开rom开始的位置,不能把正在运行的程序给擦除了,至于为什么是在0x0803FFC4结束,这个笔者就不是特别明白了,但是总的来说不影响我们的使用。

  • 写入数据

    这也是最关键的一步,前面说了半天,都是为这个做铺垫。

    先介绍一个字和半字的概念

  • 字(Word): 32位长的数据或指令

    半字(Half Word): 16位长的数据或指令

    flash的写入是分字和半字的。

    FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data)

    FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data)

    根据所指定的地址,一次只能写进一个数据。

  • 上锁

    最后一步,重新锁定

    FLASH_Lock();

  • 流程图

解锁清楚标志位擦除写入上锁

读取

读取就更为简单了,只需要根据地址转为指针在转为数据即可
pBuf[i] = *((u16*)startAddr + i);


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

中国北京(2025年9月10日)—— 业界领先的半导体器件供应商兆易创新GigaDevice(股票代码 603986)亮相于深圳国际会展中心举办的第26届中国国际光电博览会(展位号:12C12),全面展示GD25 SPI...

关键字: 光通信 MCU Flash

在嵌入式系统中,Flash存储器因其非易失性、高密度和低成本特性,成为代码存储和关键数据保存的核心组件。然而,MCU驱动Flash读写时,开发者常因对硬件特性理解不足或操作流程疏忽,陷入性能下降、数据损坏甚至硬件损坏的陷...

关键字: MCU驱动 Flash

深圳2025年4月24日 /美通社/ -- 4月23日,2025上海国际车展盛大启幕,全球汽车产业的目光聚焦于这场科技与创新的盛宴。在众多展示亮点中,汽车AI+应用无疑是最大的热点之一,“驾控超级大脑”技术概念、车机交互...

关键字: GB EMMC Flash PS

在自动驾驶、机器人与工业检测领域,激光雷达作为环境感知的核心传感器,其技术路线正从机械式向固态化演进。MEMS、OPA与Flash作为固态激光雷达的三大主流架构,分别通过微机电系统、光学相控阵与泛光面阵技术实现扫描与探测...

关键字: MEMS OPA Flash

在嵌入式系统开发中,外部存储介质的选择和管理至关重要。SPI Flash以其高容量、低功耗、高速率等特点,成为众多嵌入式设备的首选存储方案。然而,如何高效管理SPI Flash存储,避免数据丢失、提高读写性能,是开发者必...

关键字: 嵌入式SPI Flash LittleFS

STM32单片机作为一种高性能、低功耗的嵌入式微控制器,广泛应用于各种电子设备中。在实际应用中,为了扩展存储空间或实现数据的持久化存储,经常需要使用外部FLASH存储器。本文将详细介绍STM32单片机如何读写外部FLAS...

关键字: STM32 Flash

在嵌入式系统和存储设备领域,Flash和EEPROM(电可擦可编程只读存储器)因其非易失性存储特性而被广泛应用。这些存储设备能够在断电后保持数据,对于需要长期保存配置参数、程序代码或用户数据的应用来说至关重要。然而,关于...

关键字: Flash EEPROM
关闭