STM32单片机----外部中断EXTI学习
扫描二维码
随时随地手机看文章
可屏蔽中断和不可屏蔽中断:
按照是否可以被屏蔽,可将中断分为两大类:不可屏蔽中断(又叫非屏蔽中断)和可屏蔽中断。不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应。CPU一般设置两根中断请求输入线:可屏蔽中断请求INTR(InterruptRequire)和不可屏蔽中断请求NMI(NonMaskableInterrupt)。对于可屏蔽中断,除了受本身的屏蔽位控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(IinterruptFlag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。
GPIO口与EXTI外中断的映像图:
EXTI线16连接到PVD输出,EXTI线17连接到RTC闹钟事件,EXTI线18连接到USB唤醒事件。
以上为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的向量通道、配置抢占优先级、配置响应优先级、使能NVIC6.初始化NVIC的参数设置(NVIC_Init)。