中断处理函数
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/* EXTI line interrupt detected */
if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
HAL_GPIO_EXTI_Callback(GPIO_Pin);
}
}
调用 -> HAL_GPIO_EXTI_Callback(GPIO_Pin);
__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(GPIO_Pin);
/* NOTE: This function Should not be modified, when the callback is needed,
the HAL_GPIO_EXTI_Callback could be implemented in the user file
*/
}
HAL_GPIO_EXTI_Callback() 是虚函数 我们可以重写它
void EXTI1_Service(){
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
}
void EXTI2_Service(){
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
// 按键延时
switch (GPIO_Pin) {
case GPIO_PIN_0:
EXTI1_Service();
break;
case GPIO_PIN_1:
EXTI2_Service();
break;
}
}