2.5.2 优先级

更新于 2026年10月10日 版权声明
2.5.2 优先级

ARM Cortex-M3的异常功能非常强大,机制非常灵活,异常可以通过占先、末尾连锁和迟来等处理方式来降低中断的延时,而优先级决定了处理器何时以及怎样处理异常。

1.优先级数

ARM Cortex-M3支持3个固定的高优先级和多达256级的可编程优先级,并且支持128级抢占。绝大多数芯片都会精简设计,实际支持的优先级数会更少,如8级、16级、32级等,通常的做法是裁掉表达优先级的几个低端有效位(防止优先级反转),以减少优先级的级数,比如STM32的芯片采用8级优先级。(https://www.daowen.com)

ARM Cortex-M3中,NVIC支持由软件指定的可配置的优先级(又称软件优先级),其寄存器地址为0xE000_E400-0xE000_E4EF。通过对中断优先级寄存器的8位PRI_N区执行写操作,来将中断的优先级指定为0~255。硬件优先级随着中断的增加而降低,0优先级最高,255优先级最低。指定软件优先级后,硬件优先级无效。例如,若将INTISR[0]指定为优先级1,INTISR[31]指定为优先级0,则INTISR[0]的优先级比INTISR[31]的低。

2.优先级分组

为了对具有大量中断的系统加强优先级控制,ARM Cortex-M3支持优先级分组,通过NVIC控制设置为占先优先级和次优先级。可通过对中断及复位控制寄存器(Application Interrupt and Reset Control Register,AIRCR,地址为0xE000_ED00)的[10∶8]位进行设置。若有多个激活异常共用相同的组优先级,则使用次优先级区来决定同组中的异常优先级,这就是同组内的次优先级。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)