一、何为中断
我们知道代码执行顺序是自上而下依次执行的,当CPU正在处理事件A的时候突然发生了事件B,此时CPU产生中断请求,停下了对A的执行而转去执行B,当事件B处理完毕后,返回来继续执行事件A,这样的一个过程就叫做中断
二、NVIC向量中断控制器
NVIC是中断控制器,控制着整个芯片的中断相关的功能,他跟内核紧密联系,是内核里的一个外设,具有 82 个可屏蔽中断通道,16 个可编程优先级(使用了 4 位中断优先级)
中断优先级:NVIC-IPR寄存器是用来配置中断优先级的,原则上每个外部中断可配置的优先级为0~255,但是大多数内核进行阉割后优先级一般只有高四位
三、EXTI外部中断
1、EXTI介绍
外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可 单独进行配置,以选择类型(中断或事件)和相应的触发事件
2、EXTI框图
3、外部中断/事件线映射
注:其中每根中断线能够映射多个IO口,但是同一组的IO口里面一次有且只有一个能够占用中断线
四、外部中断配置步骤及程序
1、使能SYSCFG时钟
RCC_APB2PeriphClockCMD(RCC_APB2Periph_SYSCFG,ENABLE);
2、初始化IO口为输入模式
GPIO_Init();
3、设置IO口与中断线的映射关系
void SYSCFG_EXTILineConfig();
4、初始化线上中断,设置触发条件等
EXTI_Init();
5、配置中断分组(NVIC),并使能中断
NVIC_Init();
6、编写中断服务函数
EXTIx_IRQHandler();
7、清除中断标志位
EXTI_ClearITPendingBit();