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 所在的位段(右边的) 对应子优先级。
Cortex-M3编号为1-15对应系统异常,大于等于16的全部是内核级额外部中断,除个别异常(复位,NMI,硬fault)的优先级被定死之外,其他异常优先级都是可以编程的。
如果一个发生的异常不能即刻响应,就称它被“悬起”(pending)。少数异常时不能被悬起的。一个异常被悬起的原因有:
1.系统当前正在执行一个更高优先级异常的服务例程。
2.相关掩蔽位的设置导致该异常被除能。
异常被悬起时,“悬起状态寄存器”保存了该异常请求,待到该异常能被响应时执行其服务例程。
2.异常的优先级
优先级对于异常来说,它会决定一个异常是否被掩蔽,以及在未掩蔽的情况下何时可以可以响应。
M3规定最少使用3个位来表达优先级,即至少要支持8级优先级。
抢占优先级与子优先级
NVIC 中有一个寄存器是“应用程序中断及复位控制寄存器”(内容见表 7.5),它里面有一个位段名为“优先级组”。该位段的值对每一个优先级可配置的异常都有影响——把其优先级分为 2 个 位段: MSB所在的位段(左边的)对应抢占优先级,而 LSB 所在的位段(右边的) 对应子优先级。
相关文章推荐
- lintcode-不同的二叉查找树-163
- ueditor在JSP中的应用
- libvirtd 启动成功,但却没有监听
- centos 服务器配置注意项
- Deep learning系列(九)目标函数
- window设置Nginx+iis实现负载均衡
- [ACM] HDU 2295 Radar (二分法+DLX 重复覆盖)
- AutoHotKey的那些事儿:(四)、AutoHotkey的文件操作
- Java五颗星之剪刀石头布
- Windows下基于API的串口程序
- 继承+多态练习
- Android Studio Gradle编译问题
- js事件跨浏览器处理
- java核心技术之IO流(一)File类
- uboot 源码官方下载地址 2
- 进线程、库、第三范式
- spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creatio...
- navicat for mysql只导出数据表结构
- spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常
- BZOJ2705 [SDOI2012]Longge的问题