本章将介绍几个在比赛中常见的函数,这几个函数都是非常简单,关系到LED,按键,继电器等简单的外设。
第一节HAL_GPIO_Init
函数原型:
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
函数解析:
这个是GPIO的初始化的函数,这个函数主要用来初始化我们需要用到的引脚的工作模式,包括具体引脚的工作速度、是否复用模式、上下拉等等参数。
形参解析:
一共两名形参,该形参的具体功能如下:
GPIO_TypeDef *GPIOx:该形参是对GPIO的类型的定义,比如:GPIOA,GPIOC等等。
GPIO_InitTypeDef *GPIO_Init:该形参是对结构体GPIO_InitTypeDef的指针的初始化,包含了外设GPIO的配置信息,比如GPIO引脚,模式,速度等等。该配置信息如下:(见stm32l0xx_hal_gpio.h)
返回值:
void函数无返回值。
第二节HAL_GPIO_DeInit
函数原型:
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
函数解析:
该函数是承接HAL_GPIO_Init函数的,将初始化之后的引脚恢复成默认的状态,即各个寄存器复位时的值。
形参解析:
一共两名形参,该形参的具体功能如下:
GPIO_TypeDef *GPIOx:该形参是对GPIO的类型的定义,比如:GPIOA,GPIOC等等。
uint32_t GPIO_Pin:该形参是对GPIO引脚的定义,比如:GPIO_PIN_14,GPIO_PIN_15等等。
返回值:
void函数无返回值。
第三节HAL_GPIO_ReadPin
函数原型:
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
函数解析:
该函数是GPIO读函数,将GPIO的电平状态读取出来,一般读取之后,就明白该GPIO的状态了。
形参解析:
一共两名形参,该形参的具体功能如下:
GPIO_TypeDef *GPIOx:该形参是对GPIO的类型的定义,比如:GPIOA,GPIOC等等。
uint16_t GPIO_Pin:该形参是对GPIO引脚的定义,比如:GPIO_PIN_14,GPIO_PIN_15等等。
返回值:
如果读取到高电平,返回GPIO_PIN_SET;如果是低电平,返回GPIO_PIN_RESET。
第四节HAL_GPIO_WritePin
函数原型:
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
函数解析:
该函数是GPIO写函数,通过该函数操作GPIO的状态。
形参解析:
一共三名形参,该形参的具体功能如下:
GPIO_TypeDef *GPIOx:该形参是对GPIO的类型的定义,比如:GPIOA,GPIOC等等。
uint16_t GPIO_Pin:该形参是对GPIO引脚的定义,比如:GPIO_PIN_14,GPIO_PIN_15等等。
GPIO_PinState PinState:该形参是对GPIO引脚的电平状态的定义,如果是GPIO_PIN_SET,那么对该GPIO赋值为高电平;如果是GPIO_PIN_RESET,那么对该GPIO赋值为底电平。
返回值:
void函数无返回值。
第五节HAL_GPIO_TogglePin
函数原型:
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
函数解析:
该函数是GPIO引脚电平状态的翻转函数,通过该函数操作GPIO的电平的状态的翻转。
形参解析:
一共两名形参,该形参的具体功能如下:
GPIO_TypeDef *GPIOx:该形参是对GPIO的类型的定义,比如:GPIOA,GPIOC等等。
uint16_t GPIO_Pin:该形参是对GPIO引脚的定义,比如:GPIO_PIN_14,GPIO_PIN_15等等。
返回值:
void函数无返回值。
第六节HAL_GPIO_LockPin
函数原型:
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
函数解析:
该函数是GPIO引脚电平状态的锁存函数,使用该函数之后,将锁定GPIO的状态,写函数也无法改变,除非重置。
形参解析:
一共两名形参,该形参的具体功能如下:
GPIO_TypeDef *GPIOx:该形参是对GPIO的类型的定义,比如:GPIOA,GPIOC等等。
uint16_t GPIO_Pin:该形参是对GPIO引脚的定义,比如:GPIO_PIN_14,GPIO_PIN_15等等。
返回值:
由结构体HAL_StatusTypeDef(如下图,stm32l0xx_hal_def.h)可知,如果锁存成功,返回HAL_OK(0x00U),如果失败,返回HAL_ERROR(0x01U)。
需要注意的是,只能返回这两种值,即使该寄存器有四个变量。为什么呢?仔细看HAL_GPIO_LockPin函数的最后看明白了。
第七节HAL_GPIO_EXTI_IRQHandler
函数原型:
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
函数解析:
外部中断服务函数,用来响应外部中断的触发。
形参解析:
一共一名形参,该形参的具体功能如下:
uint16_t GPIO_Pin:该形参是对GPIO引脚的定义,比如:GPIO_PIN_14,GPIO_PIN_15等等。
返回值:
void函数无返回值。
第八节HAL_GPIO_EXTI_Callback
函数原型:
__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
函数解析:
该函数是回调函数,说白了就是中断之后,需要什么功能,就写在这个函数里面。至于__weak,它是一个弱化标识,带有这个的函数就是一个弱化函数,就是你可以在其他地方写一个名称和参数都一模一样的函数,编译器就会忽略这一个函数,而去执行你写的那个函数。
形参解析:
一共一名形参,该形参的具体功能如下:
uint16_t GPIO_Pin:该形参是对GPIO引脚的定义,比如:GPIO_PIN_14,GPIO_PIN_15等等。
返回值:
该函数无返回值。