目录
一、GPIO端口初始化
(一)寄存器
STM32给不同的寄存器分配了不同的地址,在《STM32中文参考手册》中查找地址。
- 找到GPIOX端口的起始地址
由于STM32的每个IO都需要4个位来配置,所以一个32位的寄存器最大只能配置8个IO(32位的单片机的寄存器就是32位的)。STM32中,用端口配置低寄存器(GPIOx_CRL)来配置引脚Px0-Px7, 用端口配置高寄存器(GPIOx_CRH)来配置引脚Px8-Px15。
本次验采用通用推挽输出模式,最高输出时钟频率2Mhz。分别用到A12、B1、C14三个引脚。其中B1属于端口配置低寄存器偏移地址为0x00,C14、A12属于端口配置高寄存器偏移地址为0x04。
- 找到GPIO寄存器中的端口配置低寄存器(GPIOx_CRL) 控制端口低八位IO
- 找到GPIO寄存器中的端口配置高寄存器(GPIOx_CRH) 控制端口高八位IO
- 寄存器配置
//----------------GPIOA配置寄存器 ------------------------
#define GPIOA_CRH *((unsigned volatile int*)0x40010804)
#define GPIOA_ODR *((unsigned volatile int*)0x4001080C)
//----------------GPIOB配置寄存器 ------------------------
#define GPIOB_CRL *((unsigned volatile int*)0x40010C00)
#define GPIOB_ODR *((unsigned volatile int*)0x40010C0C)
//----------------GPIOC配置寄存器 ------------------------
#define GPIOC_CRH *((unsigned volatile int*)0x40011004)
#define GPIOC_ODR *((unsigned volatil