STM32 的“内存划分”

STM32 的"内存划分"要分两层看:

  1. 芯片厂商规定的 地址映射表(4 GB 空间划成 8 大段,每段 512 MB);
  2. 用户程序里的 运行时分区 (代码段、数据段、堆、栈、FreeRTOS 任务栈等)。
    把两张图叠在一起,就能快速定位"我的变量/代码/外设到底落在哪条总线、哪块物理区域"。

一、4 GB 地址映射(ARM Cortex-M 统一规范)

地址范围 官方名字 实际内容(以 F1/F4 为例)
0x0000 0000 -- 0x1FFF FFFF Code 别名区:BOOT 后重映射到 Flash/SRAM/SystemMemory
0x0800 0000 -- 0x080F FFFF 内部 Flash 真正放用户代码、常量、中断向量表
0x1000 0000 -- 0x1FFF FFFF 片上额外 RAM CCM(F4)、ITCM/DTCM(H7)、系统 BootROM、OTP
0x2000 0000 -- 0x3FFF FFFF SRAM 主 SRAM1/2/3、备份 SRAM(电池保持)
0x4000 0000 -- 0x5FFF FFFF 外设寄存器 APB1、APB2、AHB1、AHB2......所有外设寄存器
0x6000 0000 -- 0x9FFF FFFF FSMC/FMC 外部 NOR/NAND/PSRAM/SDRAM
0xA000 0000 -- 0xDFFF FFFF 保留 某些型号接 Quad-SPI、LCD 控制器
0xE000 0000 -- 0xFFFF FFFF 系统级 Cortex-M 内核外设 NVIC、SysTick、MPU、调试器

注:BOOT0/BOOT1 引脚决定 0x0000 0000 这条 512 MB 段到底"影子"到谁身上------Flash、系统 BootROM 还是 SRAM。


二、用户程序运行时"五段"落在上面哪一区

段名 存放内容 存储介质 地址举例
.text 代码、常量、向量表 内部 Flash 0x0800 0000 起
.rodata 只读字符串、const 内部 Flash 紧接代码后
.data 已初始化全局变量 启动时从 Flash 拷贝到 SRAM SRAM 低地址
.bss 未初始化全局/静态 直接清零在 SRAM 接在 .data 后
heap malloc/new 动态区 SRAM _end ~ 栈底
stack 局部变量、中断现场 SRAM 栈顶向下长
FreeRTOS 任务栈 TCB+任务私有栈 在 heap_4 方案下属于 heap 区,即也在 SRAM

栈向低地址"倒长",堆向高地址"长",二者中间剩余空间就是动态内存最大可用值。


三、快速记忆口诀

"4 G 八段 512,

Code 别名可重影;

Flash 代码常量坐,

SRAM 数据堆栈行;

外设寄存 4 开头,

6 9 外存接大屏;

E 段系统不可动,

调试内核藏性命。"


四、开发时最常问的 3 个"在哪"

  1. 全局变量/静态变量

    → 编译后落在 .data/.bss,运行期在 SRAM(0x2000 0000 起)。

  2. malloc / free

    → 堆区,仍在 SRAM,大小由启动文件里的 _heap_size 决定。

  3. 外设寄存器

    → 0x4000 0000 开始,APB1 低速、APB2 高速、AHB 更高速,手册里查偏移即可。

把这张"两层图"印在脑子里,STM32 任何一段代码、变量、寄存器都能秒说出它走在哪条总线、位于哪块物理区域。

相关推荐
Wave8455 小时前
基于 STM32 + ESP8266 + W25Q64 的双核 OTA 底层架构总结
stm32·嵌入式硬件·架构
xiangw@GZ6 小时前
WiFi 全世代(WiFi1~WiFi7)技术规范与核心参数总结
嵌入式硬件
振南的单片机世界6 小时前
CPU时钟:频率越高跑越快,但物理极限在“拖后腿”
stm32·单片机·嵌入式硬件
普中科技7 小时前
【普中 51-Ai8051 开发攻略】-- 第 20 章 输入捕获实验
单片机·嵌入式硬件·输入捕获·pca·普中科技·ai8051u·aicube
d111111111d7 小时前
直流电机位置式 PID 控制 和 舵机的区别
笔记·stm32·单片机·嵌入式硬件·学习
d111111111d10 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
三佛科技-1341638421210 小时前
主控FT32F031便携式吸尘器方案,迷你手持吸尘器MCU控制方案开发
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
一个平凡而乐于分享的小比特11 小时前
一文读懂MCU与FPGA:核心区别、协同之道与双修秘籍
单片机·fpga开发·职场发展·mcu开发
踏着七彩祥云的小丑12 小时前
嵌入式——认识电子元器件——微动开关系列
单片机·嵌入式硬件
调光IC-小雅12 小时前
解析FP62××系列限流保护机制:为何它是DC/DC芯片的安全底线
单片机·嵌入式硬件