同时使用两个外部中断,这两个通道一个中断回调函数,其实外部中断的回调函数只有一个,中断服务函数是分开的。
不同的中断服务函数可以调用这唯一一个回调函数,所以需要在回调函数中判断中断来自哪个通道。 HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)这个函数已经在hal.gpio.c中被定义:__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)。只不过被weak修饰了,
HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin==GPIO_PIN_1)
{
}
if(GPIO_Pin==GPIO_PIN_3)
{
}
}
再执行完这个中断后,要清除中断标志位。
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3);