配置外部中斷示例
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
3 映射IO到中斷線
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);映射PE4到中斷線
4 初始化線上中斷,設置觸發方式
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line4; //
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStructure);
5 配置中斷分組NVIC,使能中斷
//記得在主函數里設置中斷分組NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_Init();
編寫外部中斷函數EXTI_IRQHandler()
可能要進行必要的防抖處理
最后要手動清除相關寄存器的中斷標志位,否者下次不會進入中斷服務函數
EXTI_ClearITPendingBit(EXTI__Line4);
