问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32学习:存储器与寄存器映射详解

创作时间:
作者:
@小白创作中心

STM32学习:存储器与寄存器映射详解

引用
CSDN
1.
https://m.blog.csdn.net/MANONGDKY/article/details/145472004

本文详细介绍了STM32微控制器的存储器与寄存器映射,包括寻址范围、存储器功能划分以及寄存器的分类和地址计算方法。对于从事嵌入式系统开发的技术人员来说,理解这些内容有助于更好地掌握STM32的硬件特性和内存管理机制。

1. STM32的寻址范围

要理解STM32的寻址范围,需要明确以下两点:

  1. 32位的单片机可以有32根地址线(每根地址线有两种状态:导通或不导通)
  2. 单片机内存地址访问的存储单元是按字节编址的(而不是bit)

根据32位地址线的组合,STM32的寻址大小为:

  • 2^32 = 4G(字节)
  • 寻址范围:0x0000 0000 ~ 0xFFFF FFFF

2. 存储器映射

存储器映射是指对可以存储数据的设备分配地址的过程。以STM32F1系列为例,ST公司将4GB(2^32)的地址空间划分为8个存储块,每个块的功能如下:

存储块
功能
地址范围
Block 0
Code(FLASH)
0x0000 0000 ~ 0x1FFF FFFF(512MB)
Block 1
SRAM
0x2000 0000 ~ 0x3FFF FFFF(512MB)
Block 2
片上外设
0x4000 0000 ~ 0x5FFF FFFF(512MB)
Block 3
FSMC Bank1&2
0x6000 0000 ~ 0x7FFF FFFF(512MB)
Block 4
FSMC Bank3&4
0x8000 0000 ~ 0x9FFF FFFF(512MB)
Block 5
SRAM2
0xA000 0000 ~ 0xBFFF FFFF(512MB)
Block 6
SRAM3
0xC000 0000 ~ 0xDFFF FFFF(512MB)
Block 7
SRAM4
0xE000 0000 ~ 0xFFFF FFFF(512MB)

3. 寄存器映射

3.1 STM32寄存器分类

STM32的寄存器主要分为以下几类:

  • 外设寄存器:用于控制和配置各种外设(如GPIO、USART等)
  • 系统控制寄存器:用于系统级的配置和控制
  • 中断控制器寄存器:用于中断管理
  • 调试和跟踪寄存器:用于调试和性能分析

3.2 寄存器映射(以F1为例)

STM32F1系列的寄存器主要分布在0x4000 0000到0x5FFF FFFF的地址范围内。每个外设都有其特定的基地址,例如:

  • GPIOA:0x4001 0800
  • USART1:0x4001 3800
  • RCC(复位和时钟控制):0x4002 1000

3.3 寄存器描述解读

每个外设的寄存器都有详细的描述,包括寄存器的位域、功能以及如何通过软件进行配置。例如,GPIO端口配置寄存器(GPIOx_CRL和GPIOx_CRH)用于配置引脚的模式(输入、输出等)和速度。

3.4 寄存器地址计算

寄存器的地址计算通常基于外设的基地址和寄存器的偏移量。例如,对于GPIOA端口:

  • GPIOA的基地址:0x4001 0800
  • GPIOA的输入数据寄存器(GPIOA_IDR)偏移量:0x08
  • GPIOA_IDR的实际地址:0x4001 0800 + 0x08 = 0x4001 0808

通过理解寄存器的地址映射和计算方法,开发者可以更有效地进行硬件控制和配置。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号