目录
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。
更多寄存器起始地址可以参考下表
注:以上内容仅个人理解,不具备唯一性和绝对正确性,仅供参考。