库函数
/* 初始化(STM32CubeMX自动调用)*/ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) /* 重置 */ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) /* 读引脚状态 */ GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) /* 写引脚状态 */ void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) /* 反转引脚状态 */ void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) /* 锁定引脚状态 */ HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) /* 中断(STM32CubeMX自动调用,在中断服务函数中)*/ void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) /* 外部中断开启(一般不使用) */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) /* 外部中断关闭(一般不使用) */ void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
应用
以下举例分为两种
以引脚PA0为例
以经过STM32CubeMX重命名为QY的任意可使用的引脚为例
输入-读取引脚状态
HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)
HAL_GPIO_ReadPin(QY_GPIO_Port, QY_Pin)
输出-改变引脚状态
低电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET)
HAL_GPIO_WritePin(QY_GPIO_Port, QY_Pin, GPIO_PIN_RESET)
高电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET)
HAL_GPIO_WritePin(QY_GPIO_Port, QY_Pin, GPIO_PIN_SET)
反转电平
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0)
HAL_GPIO_TogglePin(QY_GPIO_Port, QY_Pin)
中断
NVIC(嵌套向量中断控制器)主要有三个参数:中断使能,抢占优先级,响应优先级(优先级数值越小,级别越高)
GPIO mode
ExternalInterruptModewithRisingedgetriggerdetection//上升沿触发
ExternalInterruptModewithFallingedgetriggerdetection//下降沿触发
ExternalInterruptModewithRising/Fallingedgetriggerdetection//上升沿或下降沿触发
在USERCODEBEGIN4中设置中断回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == KEY_Pin)
{ //应用代码 }
}