ZBLOG

能介绍一下stm32 地址从0到最大都放了什么吗

以下是 STM32(基于Cortex-M内核)的完整地址空间映射解析,涵盖从 0x00000000 到最大地址(如 0xFFFFFFFF)的典型布局。不同型号可能存在细微差异,但整体框架一致:


1. 地址空间总览

地址范围 用途 说明
0x0000 0000 - 0x1FFF FFFF Flash / ROM 存放用户代码、常量数据(具体大小由芯片型号决定,如512KB Flash对应到0x0807 FFFF
0x2000 0000 - 0x3FFF FFFF SRAM 片上RAM(如STM32F4的192KB SRAM占0x2002 FFFF
0x4000 0000 - 0x5FFF FFFF 外设寄存器 GPIO/USART/SPI等外设寄存器(通过APB/AHB总线访问)
0x6000 0000 - 0x9FFF FFFF FSMC/FMC外部存储器 NOR Flash/SRAM/SDRAM等(如0x60000000映射外部SRAM)
0xA000 0000 - 0xDFFF FFFFF Reserved Cortex-M内核保留区域
0xE000 0000 - 0xFFFF FFFF Cortex-M系统组件 NVIC/SCB/DWT等内核寄存器

2. STM32关键区域详解

(1) Boot模式与启动地址 (0x00000000)

  • 启动时映射规则: 通过BOOT引脚选择启动源,芯片会将以下地址映射到 0x00000000
    • BOOT=FLASH: 主Flash起始地址(通常为 _main_flash__)。
    • BOOT=SRAM: 片上SRAM起始地址(调试用)。
    • BOOT=System Memory: 系统Bootloader(用于串口/USB下载)。

(2) Flash区域 (_main_flash__)

  • 代码存储区
    用户程序、中断向量表(如`.isr_vector段放在_main_flash__+4*N处)。
  • 示例链接脚本片段
MEMORY {
    FLASH (rx) : ORIGIN = _main_flash__, LENGTH = _flash_size_
}

(3) SRAM区域 (_sram_base__)

  • 动态内存分配
    堆栈、全局变量、RTOS任务栈等。
  • 特殊用途
    某些型号支持CCM RAM(紧耦合内存,仅CPU可访问,无DMA权限)。

(4) Peripherals (_peripheral_base__)

  • 外设寄存器访问
    每个外设占用固定偏移块,例如:
#define GPIOA_BASE (_peripheral_base__ + _gpio_a_offset_) 
typedef struct { volatile uint32_t MODER, OTYPER...; } GPIO_TypeDef;
#define GPIOA ((GPIO_TypeDef*)GPIOA_BASE)

(5) FSMC/FMC外部存储 (_external_memory_base__)

  • 扩展设备接口
    需手动初始化控制器时序参数才能正常访问。

3. Cortex-M内核专用区域

(1) NVIC & SCB (`_nvic_scb_base___)

#define SCB_VTOR (*((volatile uint32_t*)(_nvic_scb_base___ + _scb_vtor_offset))) //重定位向量表

(2) DWT调试单元

#define DWT_CYCCNT (*((volatile uint32_t*) _dwt_counter_addr)) //时钟周期计数器

4. FAQ常见问题

Q:如何确认某地址是否有效?
✅ A:查阅对应型号的《参考手册》中的”Memory Map”章节或使用STM32CubeMX查看默认配置。

Q:为什么访问未启用外设的寄存器会触发BusFault?
✅ A:未开启外设时钟时,其寄存器空间不可访问!务必先调用类似函数:

__HAL_RCC_USART1_CLK_ENABLE(); //使能USART1时钟

🚀 *进阶技巧*:利用MPU配置某些区域为“仅特权模式可访问”(提升安全性),或启用Cache加速外部存储器访问(Cortex-M7)。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=8020

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?