1:配置外设GPIO端口(具体配置为请看配置GPIO流程)
GPIO_Init();
2:使能复用功能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
3:初始化外部中断以及配置中断映射
EXTI_InitTypeDef EXTI_InitStruct;
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0); //中断映射
EXTI_InitStruct.EXTI_Line = EXTI_Line0; //中断线
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt; //中断模式
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising; //上升/下降沿选择
EXTI_InitStruct.EXTI_LineCmd = ENABLE; //中断使能
EXTI_Init(&EXTI_InitStruct);
4:初始化中断控制器以及中断分组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn; //中断通道
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2; //优先级
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3; //响应级
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; //使能
NVIC_Init(&NVIC_InitStruct);
5:编写中断服务函数 以及 清除中断标志
void EXTI0_IRQHandler(void){ //中断通道0的中断服务函数
EXTI_ClearITPendingBit(EXTI_Line0); //清除中断标志
}