存储区、电源、时钟体系
本节主要学习STM32的底层硬件组织方式,包括:
存储器映像、位带操作、启动模式、电源管理、复位机制、时钟树与 RCC寄存器。
这些内容是后续学习GPIO、定时器、中断、串口、外设驱动 的基础。
本章学习目标
学完这一章,应该能搞清楚下面几个问题:
- STM32的 4GB 地址空间 是怎么划分的?
- 为什么 STM32要有位带操作?
- STM32上电后到底是从哪里开 始执行程序的?
- ISP 和IAP分别是什么?
- STM32的低功耗模式有哪些,有什么区别?
- STM32的时钟系统为什么这么复杂?
- RCC里哪些寄存器是开发中最常用的?
1 STM32 总线架构

在小容量、中容量和 大容量产品中,主系统由以下部分构成: ● 四个驱动单元:
- Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)
- 通用DMA1和通用DMA2
● 四个被动单元
- 内部SRAM
- 内部闪存存储器
- FSMC
- AHB到APB的桥(AHB2APBx),它连接所有的APB设备 这些都是通过一个多级的AHB总线构架相互连接的,如上图所示
在互联型产品中,主系统由以下部分构成: ● 五个驱动单元:
- Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)
- 通用DMA1和通用DMA2
- 以太网DMA
● 三个被动单元
- 内部SRAM
- 内部闪存存储器
- AHB到APB的桥(AHB2APBx),它连接所有的APB设备
这些都是通过一个多级的AHB总线构架相互连接的,如下图所示

2. STM32 的存储器映像
2.1 什么是存储器映像
STM32 是 32 位单片机,地址总线通常按 32 位地址空间 来理解 ,因此理论上可以访问:
2^32 Byte = 4 GB
但实际芯片内部当然不可能真的有 4GB 存储器,所以 STM32 采用的是:
逻辑地址空间统一规划,实际硬件资源按区域映射到对应地址。
这就是所谓的:
存储器映像(Memory Map)
它的本质是:
告诉 CPU:不同地址范围分别对应哪一类硬件资源。
2.2 STM32 的统一编址
STM32(ARM Cortex-M)采用的是:
内存与 IO 统一编址
也就是说:
- RAM 是通过地址访问的
- Flash 是通过地址访问的
- 外设寄存器也是通过地址访问的
所以我们平时写寄存器,本质上就是在访问某个地址上的内容。
例如:
*(volatile unsigned int *)0x40021018 = 0x00000010;
本质上就是在操作某个外设寄存器。
2.3 STM32 地址空间的理解
学习 STM32 时,不需要死记整个 4GB 地址表,但必须建立下面这个认知:
STM32 所有资源,本质上都是“映射到地址上的”。
后面你会频繁接触:
- Flash
- SRAM
- 外设寄存器
- 系统存储区
- Boot 启动区
- RCC / GPIO / USART / TIM 等寄存器地址
所以“地址意识”非常重要。