STM32之内部闪存(FLASH)

一、内部Flash原理与应用

  • 背景说明

程序是由指令+数据组成,一般产品都会选择把程序/固件进行固化,一般是选择把程序或者固件存储到非易失性存储设备,例如存储到Flash中,因为Flash的制作工艺简单,成本低,容量大。

  • 基本概念

存储器指的是若干个存储单元的集合,每个存储单元(1字节)都可以存储8bit二进制数,为了方便的操作存储单元,就为每个存储单元都分配了地址,就可以通过寻址来访问存储单元。由于计算机的处理的数据量较大,并且运算速度都很快,就要求存储器的容量更大,并且存取数据的速度更快。

  • 存储类型

一般存储器根据存取方式可以分为两类:ROM (只读存储器) or RAM(随机访问存储器),也可以根据掉电是否会丢失的特性分为两类:非易失性存储设备 or 易失性存储设备。主要研究的就是ROM。

  1. ROM 只读存储器
  1. PROM 可编程只读存储器
  1. EPROM 可擦除可编程只读存储器
  1. EEPROM 电可擦除可编程只读存储器
  1. Flash 快闪存储器
  • 内存分布

可以先掌握MCU内置的512KB大小的Flash的操作,注意:falsh的特点是掉电不丢失,但是Flash内部存储空间是分为若干个扇区的,并且扇区内部的存储单元在进行写入之前,必须要先进行擦除动作,并且擦除是不能针对某个存储单元,而是某个扇区或者整片空间。

目前STM32F407ZET6这颗MCU内部有512KB的Flash,分为8个扇区,扇区0 ~ 扇区7,并且扇区的寻址范围是0x0800 0000 ~ 0x0807 FFFF。

  • 工作原理

提示:一般存储IC都具有写保护机制,一般通过硬件管脚实现写保护,一般是低电平有效,但是MCU内部的Flash也具有写保护机制,是通过软件实现的,所以在对Flash进行编程/擦除的时候,需要先解除Flash的写保护。

  • 访问流程
  1. 擦除
  1. 编程
  • 程序设计

如果用户打算对Flash空间进行编程或者擦除,对应的流程可以参考帮助手册以及文件注释

  • 结果验证

练习:利用DHT11温湿度传感器获取室内的温湿度数据,每隔5获取1次,并记录获取温湿度的时间,进行格式化的转换,格式为"2025/04/10 16:51:30 temp=28#humi=50\r\n",要求把每次获取的数据写入到MCU内部的扇区中。

要求数据的上限是100条记录,如果数据到达100条,则在PC端输出"内存已满",然后要求用户可以通过2个机械按键KEY0和KEY3,当按下KEY0的时候输出所有记录,当按下KEY3的时候清空记录。

相关推荐
离凌寒5 小时前
一、关于linux开发板上移植ubuntu根文件系统并配置桌面环境笔记记录
驱动开发·单片机
Rsingstarzengjx6 小时前
第二十八章 Linux 并发与竞争实验
驱动开发·嵌入式硬件·stm32mp157
辰域电子6 小时前
STM32项目开源:实验室消防预警控制系统(代码 + 原理图 + 仿真)
stm32·单片机·嵌入式硬件·开源·proteus
szxinmai主板定制专家6 小时前
NXP LS1046A 硬件方案: LS1046A+FPGA 异构加速架构实践
大数据·图像处理·人工智能·嵌入式硬件·fpga开发
从零开始的嵌入式之旅7 小时前
day46
linux·arm开发·笔记·嵌入式硬件
老当益壮梁奶奶7 小时前
ARM汇编学习笔记(四):i.MX6ULL裸机开发:从汇编点灯到C语言BSP工程管理
c语言·arm开发·单片机·嵌入式硬件·51单片机
祖力557 小时前
ARM中断(IMX6ULL中断、GIC通用中断控制器)
嵌入式硬件·arm·imx6ull·中断·gic·通用中断控制器
AOI小白新手上路18 小时前
韦东山 01_ARM架构与编程_2-1_处理器的区分MCU_MPU_AP_内容总结
嵌入式硬件
ysu_031418 小时前
TinyML 模型部署:从 Edge Impulse 到 STM32F103
驱动开发·stm32·嵌入式硬件·mcu·硬件架构·硬件工程·dsp开发
zjxtxdy20 小时前
SPI通信协议
笔记·单片机