STM32配置外部中断(EXTI)流程

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); //清除中断标志

}

经验分享 程序员 微信小程序 职场和发展