一、中断的介绍:
STM32 中断非常强大,每个外设都可以产生中断。
所谓中断就是把正常正在运行的程序打断,运行中断服务函数,运行完之后再回到主程序。
所谓中断优先级就是当有多个中断源同时申请中断时,CPU会更据中断源的轻重缓急来进行裁决,优先响应更加紧急的中断源。
而中断嵌套就是当一个中断正在执行又有更高优先级的中断申请中断,CPU再次暂停当前中断函数转而去处理更高优先级的中断程序,处理完后依次返回程序。
STM32的中断非常多,其M3 内核都是支持 256 个中断,其中包含了 16 个系统中断和 240 个外部中断,并且具有 256 级的可编程中断设置。相较于51单片机,其中断是肯定不够看的,那么这么多中断如何管理呢?这不得不介绍另一个外设了——NVIC
二、NVIC (嵌套向量中断控制器)
2.1 NVIC的介绍:
所谓 NVIC ,即嵌套向量中断控制器,全称 Nested vectored interrupt controller。属于是内核的器件,其作用是对STM32中的中断进行管理,因为M3内核中的中断数量很多,当同时出现多个中断时,优先处理哪个中断?以及那些中断不处理等,都要靠NVIC 进行控制。NVIC可以统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先等级经行分组,进一步设置抢占优先级和响应优先级。
2.2 中断优先级
STM32中断优先级基本概念:
1、抢占优先级:高抢占优先级可以打断正在执行的低抢占优先级中断;
2、响应优先级:当抢占优先级相同时,响应优先级高的先执行,但是不能相互打断;
3、抢占优先级和响应优先级都相同的情况下,自然优先级越高的先执行;
4、自然优先级:中断向量表中的优先级;
5、数值越小,表示优先级越高;
STM32中断优先级分组:
NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级。
在此先介绍两个寄存器:
AIRCR寄存器,位10、9、8三位用于控制优先级的分组,但是只取其中的五组优先级分组;