STM32(Cortex-M3) 有:抢占式优先级和响应优先级,有人把响应优先级称为'压优先级'或副优先级,每个中断源都需要被指定这两种优先级。
具有高抢占式优先级的中断可以在低抢占式优先级中嵌套,即中断优先级比较高。
当两个中断源的抢占式优先级级别相同时,这两个中断就没有了嵌套关系,如果系统正在处理其中一个中断,则另外一个中断就要等到前一个中断处理完毕后才能被处理,
如果这两个中断同时到达,则中断控制器根据他们地 相应优先级高低来决定先处理哪一个,如果他们的抢占式优先级和响应优先级都相同,则根据他们在中断表中的排位顺序决定先处理哪一个。
在Cortex-M3中定义了8个比特位用于设置中断源的优先级,Cortex-M3允许具有较少中断源时使用较少的寄存器指定中断源的优先级,因此STM32把指定优先级的寄存器减少到4位,这4位寄存器位的分组方式如下:
第0组:所有4位用于指定相应优先级。
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级。
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级。
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级。
第4组:所有4位用于指定抢占式优先级。