stm32的flash内存分配
时间: 2025-01-23 14:16:53 浏览: 16
STM32 Flash 内存分配方法
STM32系列微控制器中的Flash存储器通常被划分为多个区域,用于不同的功能需求。对于STM32F107VCT6而言,其内部Flash大小为512KB[^1]。
主要分区描述
系统存储区 (System Memory)
这部分主要用于存放启动代码和一些预编程的功能库函数。这部分通常是只读的,在大多数情况下不会被应用程序覆盖。用户程序区 (User Program Area)
用户编写的固件代码会被烧录到这一区域内。该区域占据了大部分可用空间,并且可以根据实际应用的需求灵活调整起始地址以及结束位置。数据保存区 (Data Storage Area or EEPROM Emulation)
尽管STM32本身并不具备真正的EEPROM模块,但是可以通过特定算法将一小片Flash模拟成非易失性的数据储存单元来实现类似EEPROM的功能。这使得即使在掉电之后也能保持某些重要参数不变。
存储布局实例
假设一个典型的STM32项目中:
地址范围 | 描述 |
---|---|
0x0800_0000 - 0x0800_FFFF |
系统引导加载程序 |
0x0801_0000 - 0x080E_FFFF |
用户自定义的应用程序 |
0x080F_0000 - 0x080F_FFFF |
模拟EEPROM的数据保留区 |
这种划分并不是固定的,开发者可以在链接脚本(.ld
)文件里重新定义各个段的具体位置与长度,从而满足不同项目的特殊要求。
/* 定义闪存基地址 */
#define FLASH_BASE ((uint32_t)0x08000000)
/* 获取当前使用的闪存量 */
extern uint32_t __flash_size;
相关推荐


















