最近在学习STM32,相比51单片机,STM32单片机的外设更加的复杂并且由于其寄存器是32位的,因此操作起来会比较麻烦,但是为了加深对STM32寄存器工作原理的理解,因此作为一个初学者,将使用GPIO外设点亮LED灯的过程进行记录
1.GPIO原理分析
首先是GPIO原理的分析,GPIO(General-purpose input/output)通用输入输出端口,作为单片机上最常见的一种最常见的外设,其最基本的功能就是接收输入的数据及向外发送数据。通过配置相应的寄存器,可以点亮与相应引脚连接的LED灯。
2.寄存器映射
与控制GPIO引脚输出高低电平的相关外设主要是GPIO与RCC,在这里以GPIOB中的PB0为例。GPIO在工作时相关的寄存器有GPIOB_CRL(端口控制寄存器)和GPIOB_ODR(端口数据输出寄存器)在对这些寄存器进行配置之前需要使用宏来对寄存器的地址进行映射,相关的寄存器映射代码如下:
//相关的寄存器映射
/*外设的基地址*/
#define PERIPH_BASE ((unsigned int)0x40000000)
/*总线基地址*/
#define APB1PERIPH_BASE PERIPH_BASE //APB1
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) //APB2
#define AHBPERIPH_BASE (PERIPH_BASE + 0x2000