STM32—学习外部中断

每个IO口都可以作为外部中断,下图是中断映射关系,供IO口使用的中短线只有16个
在这里插入图片描述
配置 IO 口外部中断的一般步骤:
1)使能 IO 口时钟。
2)调用函数 HAL_GPIO_Init 设置 IO 口模式,触发条件,使能 SYSCFG 时钟以及设置 IO口与中断线的映射关系。
3)配置中断优先级(NVIC),并使能中断。
4)在中断服务函数中调用外部中断共用入口函数 HAL_GPIO_EXTI_IRQHandler。
5)编写外部中断回调函数 HAL_GPIO_EXTI_Callback。

//中断服务函数
void EXTI0_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); //调用中断处理公用函数
}

//中断服务程序中需要做的事情 //在HAL库中所有的外部中断服务函数都会调用此函数 //GPIO_Pin:中断引脚号 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { delay_ms(100); //消抖 switch(GPIO_Pin) { case GPIO_PIN_0: if(WK_UP==1) { LED1=!LED1; //控制LED0,LED1互斥点亮 LED0=!LED1; } break;