电平相关
HAL_GPIO_ReadPin 函数
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
函数名 | HAL_GPIO_ReadPin |
---|---|
函数作用 | 读取对应引脚的电平状态 |
返回值 | GPIO_PinState,其中 GPIO_PIN_SET 代表高电平,GPIO_PIN_RESET 代表低电平 |
参数1:GPIOx | 对应 GPIO 总线,如 GPIOH |
参数2:GPIO_Pin | 对应引脚数,如 GPIO_PIN_10 |
HAL_GPIO_WritePin 函数
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
函数名 | HAL_GPIO_WritePin |
---|---|
函数作用 | 使得对应引脚输出高电平或者低电平 |
返回值 | void |
参数1:GPIOx | 对应 GPIO 总线,如 GPIOH |
参数2:GPIO_Pin | 对应引脚数,如 GPIO_PIN_10 |
参数3:PinState | GPIO_PIN_RESET:输出低电平;GPIO_PIN_SET:输出高电平 |
HAL_GPIO_TogglePin函数
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
函数名 | HAL_GPIO_TogglePin |
---|---|
函数作用 | 翻转对应引脚的电平 |
返回值 | Void |
参数1:GPIOx | 对应 GPIO 总线,如 GPIOH |
参数2:GPIO_Pin | 对应引脚数,如 GPIO_PIN_10 |
外部中断
HAL_TIM_Base_Start_IT函数
__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
该函数为虚函数,意味着需自行编写。当外部中断中断时,执行此函数。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
if(GPIO_Pin == GPIO_PIN_1){
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
else HAL_GPIO_WritePin(GPIOC , GPIO_PIN_13, GPIO_PIN_SET);
}
}
定时器相关
HAL_TIM_Base_Start_IT函数
如果不开启中断,仅让定时器以定时功能工作,为了使定时器开始工作,需要调用HAL库提供的函数。
HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)
如果需要使用定时中断,则需要调用函数
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
函数名 | HAL_TIM_Base_Start_IT |
---|---|
函数作用 | 使对应的定时器开始工作,并使能其定时中断 |
返回值 | HAL_StatusTypeDef,HAL 库定义的几种状态,如果成功使定时器开始工作,则返回 HAL_OK |
参数 | *htim 定时器的句柄指针,如定时器 1 就输入 &htim1,定时器 2 就输入 &htim2 |
HAL_TIM_PeriodElapsedCallback 函数
__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
该函数为虚函数,意味着需自行编写。当定时器中断时,执行此函数。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if (htim == (&htim2)) HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
}