STM32的存储结构
STM32F103 芯片是基于 ARM Cortex-M3 内核的微控制器,它集成了多种类型的存储器,每种存储器都有其特定的作用和存储对象。以下是关于 STM32F103 中 Flash、ROM 和 SRAM 的详细介绍:
1. Flash Memory (闪存)
-
作用:Flash 是非易失性存储器(Non-volatile Memory),即使在断电后也能保持数据。
-
存储对象:
- 程序代码:Flash 主要用于存放用户编写的固件或应用程序代码。当 MCU 上电时,从 Flash 加载并执行这些代码。
- 常量数据:如字符串表、查找表等不会更改的数据也可以存储在这里。
- 配置参数:某些需要长期保存但又不经常改变的数据,比如校准值、用户设置等,可以存储在 Flash 中。
-
特性:
- 支持读取、编程(写入)和擦除操作。
- 编程和擦除速度相对较慢,且有一定的寿命限制(擦写次数有限)。
- 典型容量范围为 16KB 到 512KB(具体取决于型号)。
2. ROM (只读存储器)
-
作用:ROM 也是一种非易失性存储器,但在 STM32F103 系列中通常指的是内部预编程的存储区域,即包含芯片厂商提供的库函数或其他固定功能。
-
存储对象:
- 启动代码:一些基本的启动引导代码可能已经固化在 ROM 中。
- 标准外设库:部分器件可能带有内置的标准外设驱动库,帮助开发者快速上手开发工作。
-
特性:
- 不可改写,内容由制造商在出厂前烧录好。
- 由于现代大多数 STM32F103 型号不再配备独立的 ROM 区域,而是完全依赖于用户可编程的 Flash 来实现类似的功能,因此这里的描述适用于早期或者特定版本的 STM32F103。
3. SRAM (静态随机存取存储器)
-
作用:SRAM 是易失性存储器(Volatile Memory),仅在供电期间保留数据。它是 CPU 进行高速数据交换的地方。
-
存储对象:
- 变量:全局变量、局部变量、堆栈指针等运行时动态生成的数据都存储在 SRAM 中。
- 缓冲区:用于临时存储待处理的数据块,例如通信协议中的接收/发送缓冲区。
- 堆:如果启用了动态内存分配,则用于管理动态分配的内存块。
-
特性:
- 高速访问,适合频繁读写操作。
- 断电后数据丢失,因此不适合长期存储。
- 典型容量范围为 6KB 到 64KB(具体取决于型号)。
总结
- Flash 用于存放程序代码和持久化的数据。
- ROM 在 STM32F103 上可能不存在作为独立的存储单元,但如果存在的话,它用来存放固定的启动代码或库函数。
- SRAM 提供快速的数据访问空间,用于存储运行时的变量、堆栈和其他临时数据。