STM32F4外设驱动系列之GPIO
GPIO常用相关寄存器
MODER:GPIO端口模式控制寄存器(GPIOx_MODER)(x = A..I)
OTYPER:GPIO端口输出类型寄存器(GPIOx_OTYPER)(x = A..I)
OSPEEDR:GPIO端口输出速度寄存器(GPIOx_OSPEEDR)(x = A..I)
PUPDR:GPIO端口上拉/下拉寄存器(GPIOx_PUPDR)(x = A..I)
IDR:GPIO端口输入数据寄存器(GPIOx_IDR)(x = A..I)
ODR:GPIO端口输出数据寄存器(GPIOx_ODR)(x = A..I)
AFRH/AFRL:GPIO复用功能高/低位寄存器(GPIOx_AFRH/GPIOx_AFRL)(x = A..I)
寄存器具体详情可查看STM32F4xx参考手册。
GPIO初始化函数与参数
GPIO初始化函数:HAL_GPIO_Init()
HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
GPIO初始化参数结构体:GPIO_InitTypeDef
typedef struct
{
uint32_t Pin;
uint32_t Mode;
uint32_t Pull;
uint32_t Speed;
uint32_t Alternate;
}GPIO_InitTypeDef
函数与结构体具体实现可参见HAL库源代码。
GPIO初始化实例
//初始化PA0端口
void GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_Initure; //GPIO初始化结构体
__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟
GPIO_Initure.Pin = GPIO_PIN_0; //PA0
GPIO_Initure.Mode = GPIO_MODE_INPUT; //输入
GPIO_Initure.Pull = GPIO_PULLDOWN; //下拉
GPIO_Initure.Speed = GPIO_SPEED_HIGH; //高速
HAL_GPIO_Init(GPIOA, &GPIO_Initure);
}
GPIO引脚的参数需根据实际应用情况进行设置。