寄存器映射代码讲解
1.外设总线
查阅系统手册:
由图可知,AHB(Advanced High performance Bus,高级高性能总线)下面挂载了RCC(Reset and clock control复位时钟控制器)和2个APB(Advanced Peripheral Bus,高级外设总线)。
其中,APB2为高速总线。
1.RCC总线
实际开发中,大部分的外设启用之前,都需要先启用RCC。APB1和APB2都有独立的RCC寄存器。而RCC寄存器是挂载在AHB上的。
查阅手册目录得知,RCC相关寄存器有如下种类:
查阅手册里的寄存器地址得知,RCC总线的起始地址为0x40021000-0x400213FF
1.外设时钟使能寄存器
一般我们使用RCC之前,首先需要对寄存器进行使能,这里以APB2进行举例。
我们查询到APB2外设时钟使能寄存器(RCC_APB2ENR)的偏移地址为:0x18
2.外设时钟使能代码实现
//存储器映像从0x40000000开始。
#define PERIPH_BASE (unsigned int)0x40000000
//APB1的范围为0x40000000到0x4000FFFF,所以基址和PERIPH_BASE相同。
#define APB1_PERIPH_BASE PERIPH_BASE
//APB1的范围为0x40010000到0x4003FFF,所以基址为PERIPH_BASE