ARM cortexM4异常处理(2)



0?wx_fmt=gif

上次课程我们简单讲解了异常的一些基础知识,希望对大家有所帮助,今天我们来看看异常在向量表中的位置,异常的入口和返回。

中断向量表

有人会问,不是讲异常吗,怎么讲到中断向量表,其实我们在前面提高过,异常也是一种中断,在中断向量表中有他自己的位置,中断向量表包含堆栈指针的复位值,起始地址,也叫异常向量,中断向量表包含所有的异常向量如下图所示:

0?wx_fmt=jpeg系统复位后,中断向量表固定从0地址开始,特权模式下软件可以修改中断向量表的起始地址到其他地址,这个地址是有范围限制的,可以在0x00000080~0x3FFFFF80范围内修改。每个异常都有一个关联的优先级,优先级数值越低表示优先级越高,除过Reset,HardFault,NMI,所有的异常优先级都可配置。Reset,HardFault,NMI异常的优先级是固定的且为负数,比其他的异常优先级要高,这点要注意。高优先级的异常可以抢占低优先级的异常处理。

异常入口和返回

入口:

异常的入口发生在当有足够高优先级的异常挂起,或者处理器处于线程模式,或者高优先级的异常抢占低优先级的异常处理。当高优先级的异常抢占低优先级的异常处理,就出现异常嵌套。

返回:

异常返回发生在当处理器处于Handler模式并且执行指令装载EXC_RETURN到PC指针,EXC_RETURN是在异常入口时装载到链接寄存器LR中的值,异常机制依赖于这个值检测什么时候处理器完成了异常处理。EXC_RETURN低五位会提供堆栈返回和处理器模式的信息。异常返回的行为可以通过EXC_RETURN得值看出,具体的值如下图所示:

0?wx_fmt=jpeg

嵌入式

程序猿

微信号:InterruptISR

嵌入式程序猿致力于打造程序猿工程师交流分享的精品移动平台,欢迎各位猿友加入和分享。微信搜索嵌入式程序猿添加关注,或者长按下方二维码,选择识别图中二维码添加关注。

0?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值