1.HAL_GPIO_Init

用来初始化引脚,设置其工作频率、工作模式、上下拉等参数。

void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)
例: HAL_GPIO_Init(GPIOB,&GPIO_InitStruct)

类似于标准库,如下设置:

GPIO_InitTypeDef  GPIO_InitStruct;            //结构体命名为GPIO_InitStruct

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);  //红色灯使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);  //绿色灯使能

//初始化设置参数    
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;                  
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    
GPIO_Init(GPIOE,&GPIO_InitStruct);   

2.HAL_GPIO_DeInit

HAL_GPIO_Init能够实现对GPIO的初始化,那么HAL_GPIO_DeInit就是与其相反的操作,够将GPIO口恢复至默认状态,即各个寄存器复位时的值。
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
例:HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9);

3.HAL_GPIO_ReadPin

读取我们想要知道的引脚的电平状态、函数返回值类型为GPIO_PinState  =  0或1。

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
例:pin_State = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_9);

 4.HAL_GPIO_WritePin

给某个引脚写0或1,GPIO_PIN_RESET 也可写成0;GPIO_PIN_RSET 也可写成1

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
例:HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9,GPIO_PIN_RESET)

5.HAL_GPIO_TogglePin

翻转某个引脚的电平状态

void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
例:HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9);

6.HAL_GPIO_EXTI_IRQHandler

这个函数是外部中断服务函数,用来响应外部中断的触发,函数实体里面有两个功能,1是清除中断标记位,2是调用下面要介绍的回调函数。如果使用CUbeMX生产,无需自己手写,直需要在main.c中重新定义相应的回调函数即可

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
例:HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);//配置好CubeMX后,自动生产

7.HAL_GPIO_EXTI_Callback

中断回调函数,可以理解为中断函数具体要响应的动作。

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

作者:嵌入式小蟹

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 HAL库GPIO函数详解

发表回复