打印
[应用相关]

STM32/什么是寄存器、寄存器映射和基地址

[复制链接]
26|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
晓伍|  楼主 | 2025-6-17 08:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1、寄存器
寄存器:计算机和微控制器(如STM32、ESP32等)中最基础、最快速的(快于内存)存储单元,直接集成在CPU或外设内部,用于临时存放数据、地址或控制信息。根据每个单元功能(如串口UART、引脚GPIO)的不同,以功能为名给这个内存单元取的一个别名,这个别名就叫寄存器。

2、寄存器映射
寄存器映射:给已经分配好地址的、有特定功能的内存单元取别名的过程就叫寄存器映射。

3、基地址
3.1、总线基地址
‌总线基地址‌:是指总线在存储器映射中的起始地址。在STM32系统中,总线基地址包括AHB、APB1和APB2的基地址。

‌AHB总线的基地址‌是0x4001 8000‌

‌APB1总线的基地址‌是0x4000 0000

‌APB2总线的基地址‌是0x4001 0000

这些基地址用于确定不同总线在存储器映射中的起始位置,从而实现对不同外设的访问。

3.2、外设基地址
外设基地址:总线上挂载很多外设(如GPIOx 其中x可以为A、B、C、D、E、F、G),而这些外设也有相对应的基地址,我们称该基地址为外设基地址。

外设基地址 = 对应总线基地址 + 外设偏移地址

4、地址偏移(偏移地址)
地址偏移:指给出一个地址(通常是基地址)到目标地址的差值。

例如外设GPIOA挂载在APB2总线下,APB2总线基地址为0x4001 0000,而GPIOA端口的基地址是0x4001 0800;此时我们不难发现0x4001 0800是在0x4001 0000的基础上加了一个0x0000 0800;而这个0x0000 0800就是GPIOA相对于APB2总线的一个偏移地址。

依次类推:GPIOB端口的基地址是0x4001 0C00,相对于APB2总线的偏移地址是0x0000 0C00‌。

更多寄存器起始地址可以参考下表



注:以上内容仅个人理解,不具备唯一性和绝对正确性,仅供参考。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/2502_91794894/article/details/147994617

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

83

主题

4285

帖子

1

粉丝