1、void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
这个函数我们在stm32f4xx_hal_gpio.c文件中找到它的实体,可以很清楚的看到它的解释
(不过是英文,需要点英文基础,不过有不认识的单词可以自己使用工具去翻译),
这个函数主要用来初始化我们需要用到的引脚的工作模式,包括具体引脚的工作速度、是否复用模式、上下拉等等参数。
2、void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
这个函数的主要功能是将我们在HAL_GPIO_Init函数初始化之后的引脚恢复成默认的状态,即各个寄存器复位时的值。这个函数比较容易理解。
3、GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
这个函数主要功能是读取我们想要知道的引脚的电平状态、函数返回值为0或1。
4、void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
这个函数从字面意思来看就是给某个引脚写0或1,但是不要理解成,写1就是使能之类的意思,有些寄存器写1是擦除的意思,这一点要谨记。
例如函数输入的参数是GPIOA、GPIO_Pin_1和GPIO_PIN_SET,则GPIOA->BSRR=((uint32_t)0x0002U);
即把二进制数0000000000000010转换为32位数赋值给BSRR,对应的GPIO_Pin_1管脚置高;
例如函数输入的参数是GPIOA、GPIO_Pin_1和GPIO_PIN_RESET,则GPIOA->BSRR=((uint32_t)0x0002U<<16);
即把二进制数0000000000000010左移16位并转换为32位数赋值给BSRR,高16位对应的GPIO_Pin_1为1,对应管脚被清零,置低;
5、void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
这个函数用来翻转某个引脚的电平状态,用的最多的场合是LED灯的翻转,也就是LED闪烁。
例如函数的输入参数是GPIOA、GPIO_Pin_1,则GPIOx->ODR与0000000000000010进行异或操作,0^1 =1,1^1 =0,异或运算后,原来的对应位被翻转。
6、HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
这个函数看函数名称就是锁住的意思,比如说一个管脚的当前状态是1,读管脚值使用锁定,当这个管脚电平变化时保持锁定时的值。
7、void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
这个函数是外部中断服务函数,用来响应外部中断的触发,函数实体里面有两个功能,1是清除中断标记位,2是调用下面8要介绍的回调函数。
很好理解,我们学习51单片机的时候肯定用过中断服务函数。
8、void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
这个函数是中断回调函数,可以理解为中断函数具体要响应的动作。