可屏蔽中断和不可屏蔽中断:
按照是否可以被屏蔽,可将中断分为两大类:不可屏蔽中断(又叫非屏蔽中断)和可屏蔽中断。不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应。CPU一般设置两根中断请求输入线:可屏蔽中断请求INTR(Interrupt Require)和不可屏蔽中断请求NMI(NonMaskable Interrupt)。对于可屏蔽中断,除了受本身的屏蔽位控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(Iinterrupt Flag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。
GPIO口与EXTI外中断的映像图:
EXTI线16连接到PVD输出,EXTI线17连接到RTC闹钟事件,EXTI线18连接到USB唤醒事件。
![STM32单片机----外部中断EXTI学习](https://i-blog.csdnimg.cn/blog_migrate/50338d88612fe6fe5a32a47556c6eb9d.jpeg)
![STM32单片机----外部中断EXTI学习](https://i-blog.csdnimg.cn/blog_migrate/7ae55224fe8748927651ff6f635dd39e.jpeg)
![STM32单片机----外部中断EXTI学习](https://i-blog.csdnimg.cn/blog_migrate/f62f399b56c87d9513359cc92be92fb8.jpeg)
![STM32单片机----外部中断EXTI学习](https://i-blog.csdnimg.cn/blog_migrate/c2799532098d8d498454aae109c741cf.jpeg)
![STM32单片机----外部中断EXTI学习](https://i-blog.csdnimg.cn/blog_migrate/4eec8cb4816af53fe9ef49504a12c743.jpeg)
![STM32单片机----外部中断EXTI学习](https://i-blog.csdnimg.cn/blog_migrate/5acb0ce310a437300f368e2f2e4b566f.jpeg)
以上为EXTI外部中断的各寄存器,在直接操作寄存器编程时需要了解,了解怎样配置EXTI寄存器。
NVIC的概念:
NVIC,中文名嵌套中断向量控制器,是Cortex-M3系列控制器内部独有集成单元,与CPU结合紧密,降低中断延迟时间并且能更加高效处理后续中断。举个例子,比如火车站买票,那些火车站的规章制度就是NVIC,规定学生和军人有比一般人更高优先级,它们则给你单独安排个窗口,同学与同学之间也有区别,那就是你也得排队,也就是你的组别(抢断优先级)和你的排队序号(响应优先级)决定你何时能买到票。抢断优先级,顾名思义,能再别人中断是抢占别人中断,实现中断嵌套。响应优先级则只能排队,不能抢在前面插别人的对,即不能嵌套。 STM32中指定优先级的寄存器为4位,其定义如下: 第0组:所有4位用于指定响应优先级 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级 第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级 第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级 第4组:所有4位用于指定抢占式优先级 以上定义也称作中断优先级分组,相关内容在STM32固件库的misc.h文件中有详细定义。 STM32--EXTI外部中断的编程步骤: 可分为2大步,第1步初始化EXTI,第2步初始化NVIC. 1.配置EXTI的外部中断源。 2.定义结构体EXTI_InitTypeDef的结构体类型。配置EXTI的中断线、配置EXTI的模式(中断模式和事件模式)、配置EXTI的触发方式(上升沿,下降沿,上升下降沿触发)、配置使能EXTI的外部中断线。 3.初始化EXTI的参数设置(EXTI_Init) 4.配置NVIC的优先级组(共有5组,分别是NVICNVIC_PriorityGroup_0~NVIC_PriorityGroup_4) 5.定义结构体NVIC_InitTypeDef的结构体类型。配置NVIC的向量通道、配置抢占优先级、配置响应优先级、使能NVIC 6.初始化NVIC的参数设置(NVIC_Init)。