前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ARM cortexM4异常处理(2)

ARM cortexM4异常处理(2)

作者头像
用户1605515
发布2018-04-10 16:07:16
7390
发布2018-04-10 16:07:16
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿
上次课程我们简单讲解了异常的一些基础知识,希望对大家有所帮助,今天我们来看看异常在向量表中的位置,异常的入口和返回。

中断向量表

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

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

异常入口和返回

入口:

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

返回:

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

通过低五位就可以判断出处理器和堆栈的信息,其他位为固定1.

嵌入式

程序猿

微信号:InterruptISR

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档