STM32F103C8T6 是一款基于 ARM Cortex-M3 内核的微控制器,其内存空间配置如下:
1. Flash 存储器(程序存储器)
- 大小:64 KB(64 * 1024 字节)
- 地址范围:0x0800 0000 - 0x0800 FFFF
Flash 存储器主要用于存放用户程序和常量数据。启动时,MCU 会从 Flash 的起始地址(0x0800 0000)开始执行用户代码。
2. SRAM(数据存储器)
- 大小:20 KB
- 地址范围:0x2000 0000 - 0x2000 4FFF
SRAM 用于存储程序运行时的动态数据,包括全局变量、栈和堆。在 STM32F103C8T6 上,有 20 KB 的 SRAM 可用,位于 0x2000 0000 至 0x2000 4FFF。
3. 外设寄存器地址空间
- 地址范围:0x4000 0000 - 0x5006 03FF
外设寄存器用于控制和配置 STM32F103C8T6 的各种外设模块(如 GPIO、USART、ADC 等)。每个外设模块通常映射到固定的寄存器地址空间中,用户可以通过这些地址配置外设。
4. 系统内存(Bootloader 区域)
- 大小:不固定,一般少于 32 KB
- 地址范围:0x1FFF F000 - 0x1FFF F7FF
系统内存包含 STM32 自带的 Bootloader 程序,用于在上电复位时通过串口、USB、CAN 或其他接口加载程序代码。这段代码不可更改,主要用于芯片的固件升级或程序下载。
5. Cortex-M3 内部的 PPB(私有外围总线)空间
- 地址范围:0xE000 0000 - 0xE00F FFFF
该空间包含系统控制寄存器、调试支持寄存器和 NVIC(嵌套向量中断控制器)等,用于芯片的中断控制和调试支持。
内存分布图概述
内存区域 | 大小 | 地址范围 | 用途 |
---|---|---|---|
Flash | 64 KB | 0x0800 0000 - 0x0800 FFFF | 程序存储 |
SRAM | 20 KB | 0x2000 0000 - 0x2000 4FFF | 数据存储 |
系统内存 | < 32 KB | 0x1FFF F000 - 0x1FFF F7FF | Bootloader 区域 |
外设寄存器地址空间 | - | 0x4000 0000 - 0x5006 03FF | 外设控制寄存器 |
PPB 区域 | - | 0xE000 0000 - 0xE00F FFFF | 系统控制和调试 |
这些内存地址空间分配使得 STM32F103C8T6 具备了灵活的代码、数据存储及外设控制功能,适用于各种嵌入式开发应用。