2019-07-21 04:17发布
hougeqvjing 发表于 2018-7-31 23:05 NVIC里面不能设置SYSTICK的优先级,也不能开启systick的优先级,为什么说是systick绑定在NVIC中呢?中断 ...
最多设置5个标签!
3、NVIC的寄存器管理着包括系统异常(小于0)和外部中断(0-240)的所有中断的优先级。有如下三处与优先级设置相关的寄存器:
一是应用程序中断及复位控制寄存器(AIRCR)的10:8这三位,用于定义全系统的优先级分组,它定义了如何去解读每一个中断优先级设定值的具体含义(即哪几位代表抢占级,哪几位代表响应级?)
二是系统异常(中断号小于0的)的中断优先级。就是第1点已经回答的SCB的SHP[12],共12个8BIT的数组,其中SHP[11]里存放着SYSTICK的优先级;
三是所有外部中断(中断号大于等于0的)的优先级,存放在IP[240]中,共240个8BIT的数组,可以通过各个中断号作为数组下标来访问。例如:如果想设置EXTI0_IRQn的优先级为最高,使用指令: NVIC->IP[6]=0x00; 就可以了(EXTI0_IRQn中断号为6)。
注意:以上二和三项的表示方法是统一的,每一个中断都可以最大用8BIT定义中断优先级,但我们常用的具体芯片只实现了4BIT,即只有高四位有效。
一周热门 更多>