翻译自ti文档p102页
2.5.5 异常优先级
如表2-8所示,所有的异常都拥有一个相关的优先级,更低的优先级值表示的优先级越高,除了重置,硬错误和不可屏蔽中断外的异常都可以更改。如果程序没有更改任意优先级,则所有的异常会拥有0的优先级。如果想要了解更多关于设置异常优先级的信息,请看165页和147页。
注意:Stellaris把可更改的优先级值范围设定为0-7,。这意味着重置,硬错误和不可屏蔽中断拥有固定的负数优先级值,永远拥有比其他异常更高的优先级。
比如说,把IRQ[0]赋予个高优先级值,同时把IRQ[1]赋予低优先级值意味着IRQ[1]的优先级比IRQ[0]高。如果IRQ[1]和IRQ[1]同时触发的话,IRQ[1]将在IRQ[0]之前进行处理。
如果多个等待处理的异常拥有相同的优先级,则拥有最低异常序号的异常会优先处理。比如IRQ[0]和IRQ[1]都等待处理而且拥有相同的优先级,IRQ[0]将优先于IRQ[1]进行处理。
当处理器正在执行一个异常处理程序,如果一个拥有更高优先级的异常触发了,那么这个异常处理程序会被抢占。如果一个异常发生在拥有相同优先级的异常处理程序运行时,则那个异常处理程序不会被抢占,此时不考虑异常序号。新中断(异常)的状态会改为待处理(Pending)。