您的位置:首页 > 其它

Cortex-M3异常笔记

2015-10-15 21:15 127 查看
异常类型

Cortex-M3编号为1-15对应系统异常,大于等于16的全部是内核级额外部中断,除个别异常(复位,NMI,硬fault)的优先级被定死之外,其他异常优先级都是可以编程的。

如果一个发生的异常不能即刻响应,就称它被“悬起”(pending)。少数异常时不能被悬起的。一个异常被悬起的原因有:

1.系统当前正在执行一个更高优先级异常的服务例程。

2.相关掩蔽位的设置导致该异常被除能。

异常被悬起时,“悬起状态寄存器”保存了该异常请求,待到该异常能被响应时执行其服务例程。

2.异常的优先级

优先级对于异常来说,它会决定一个异常是否被掩蔽,以及在未掩蔽的情况下何时可以可以响应。

M3规定最少使用3个位来表达优先级,即至少要支持8级优先级。

抢占优先级与子优先级

NVIC 中有一个寄存器是“应用程序中断及复位控制寄存器”(内容见表 7.5),它里面有一个位段名为“优先级组”。该位段的值对每一个优先级可配置的异常都有影响——把其优先级分为 2 个 位段: MSB所在的位段(左边的)对应抢占优先级,而 LSB 所在的位段(右边的) 对应子优先级。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: