- 1、本文档共59页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5讲_异常与中断.
对本部分的要求 了解异常与中断的基本概念、处理流程 掌握中断的程序编制方法 掌握外部中断的使用方法 了解中断嵌套 1、 ARM异常与中断 ARM异常(中断) ARM异常向量表 普通中断(IRQ)与快中断(FIQ) 中断服务程序在处理外设事务之前必须进行现场保护,处理完后需恢复现场(压栈与弹栈) STMFD R13!,{R0,R4-R12,LR} ;压栈 LDMFD R13!,{R0,R4-R12,PC} ;弹栈 专门为快中断设置了一个FIQ模式,并配置了较多的私有寄存器(即R8_fiq~R14_fiq),这样R8~R14无需压栈、弹栈,节约时间,加快速度 FIQ的中断向量在中断向量表的最后(即0x0000001C ),中断服务程序可直接存放在0x0000001C开始处,无需跳转,加快速度 ARM异常处理流程 注意: 在初始状态下(由启动代码设置),禁止中断,如果需要中断,需要先在启动代码Startup.s文件中的InitStack子程序中使能中断,例如:MSR CPSR_c , #0x5f 2、 中断源 ?????? LPC2000系列的向量中断控制器(VIC)支持32个中断请求输入,也即是支持32个中断源,见表5.1。这32个中断按顺序称为VIC通道0,VIC通道1,…,VIC通道31。 ?????? 每一个VIC通道都支持软件中断与硬件中断,即每个中断均可由软件或硬件中断产生,软件中断与对应通道上的硬件中断是逻辑“或”的关系。软件中断可通过置位VICSoftInt寄存器相应位来产生,也可通过置位VICSoftIntClear寄存器相应位来清除。 中断源列表 中断源列表 中断源列表 对多个可屏蔽中断源进行管理,使CPU核心能和更多的中断资源相联系。 能够对中断进行排队: 避免中断信号的丢失 对不同的中断进行优先级配置,使高优先级中断能够抢占低优先级中断。 LPC2000中断管理的3个层次 三种中断类型 LPC2000具有3类中断:FIQ、向量IRQ和非向量IRQ。 快速中断请求FIQ具有最高优先级。建议只分配一个中断请求给FIQ以减少中断处理程序的延迟。当然,VIC支持多个FIQ中断。 向量IRQ具有中等优先级。该级别最多可分配32个请求中的16个。32个请求中的任何一个都可以分配到16个向量IRQslot中的任意一个。其中,slot0具有最高优先级,而slot15则为最低优先级。 非向量IRQ具有最低优先级。 如何初始化某个中断源为三类中断中的一类 ?通过VICIntSelect中断选择寄存器将32个中断请求分配为FIQ或IRQ(其中IRQ又包括向量IRQ与非向量IRQ); 通过VICVectCntlx(x=0,1,…,15)来选择32个中断请求中的某个为向量IRQ并设定此中断请求为IRQ slotx(x对应于VICVectCntlx中的x)。→设定向量IRQ的中断优先级(x越小,优先级越高) 若某个中断源被设定为IRQ,但却未通过VICVectCntlx使能,则该中断源将被默认为非向量IRQ。 选择产生中断的类型 向量IRQ中断 非向量IRQ中断 设定向量IRQ中断优先级 允许中断源产生中断 中断状态寄存器 软件中断寄存器 中断处理过程 初始化:设置中断源为3种中断源之一,设置中断地址,使能中断,然后正常运行用户程序; 当有IRQ中断产生时,VIC将会根据中断源设置VICVectAddr寄存器为相应中断服务程序的地址,切换处理器工作模式为IRQ模式,并跳转到IRQ中断入口0; 异常中断向量表中0使用“LDR PC, [PC, #-0xFF0]”,使得程序跳转到(08-0x00000FF0=0xFFFFF030)存储器处保存的地址。0xFFFFF030是VICVectAddr寄存器地址。也即是说:通过该指令,程序跳转到VICVectAddr寄存器所指向的中断服务程序的地址; 中断服务程序执行相应的中断处理,清除中断。建议用__irq关键字定义中断服务程序; 中断服务完成后,即可返回原中断点。返回时要同时切换处理器工作模式。 注意:退出中断前,一定要对VICVectAddr寄存器写0,通知VIC中断结束;建议用__irq关键字定义中断服务程序,这样的话,该函数将自动切换处理器工作模式,但该函数不能返回参数或者数值。 IRQ中断 IRQ中断有向量IRQ和非向量IRQ中断两种类型,当IRQ中断产生时: 若是向量IRQ中断,由于之前VIC已经将最高优先级请求的IRQ服务程序地址VICVectAddrx(x=0,1,…,15)装入VICVectAddr,故程序跳入该中断服务程序继续执行。 若是非
您可能关注的文档
- 第3章关系数据库的基本理论..ppt
- 第3章可行性分析与软件计划PPT.ppt
- 第3章多元回归模型课件.ppt
- 第3章安全观OutlookonSafety课件..ppt
- 第3章多媒体..ppt
- 第3章存储管理课件.ppt
- 第3章工程造价的构成课件..ppt
- 第3章并发控制幻灯片.pptx
- 第3章数据库设计..ppt
- 第3章数据库、查询和视图..ppt
- 炼石图解-工业和信息化领域数据安全合规指引.V1.0.0 .docx
- 全民早期预警行动计划_预警技术发展和监管政策研究_.docx
- 基于加权域适应卷积神经网络的滚动轴承故障诊断.docx
- 基于改进的DeepLabv3+图像语义分割算法研究.docx
- 金融行业周报:保险风险分类办法修订,存款利率自律管理强化.docx
- 美妆-毛戈平:成功路径难以复制的高端国货美妆-毛戈平招股说明书梳理.docx
- 面向宽窄交替航道的船舶交通元胞自动机模型.docx
- 安全管理师工作职责与职位要求【16篇】.pdf
- 小学五年级脱式计算题300道-五年级上册脱式计算题及答.pdf
- 名侦探柯南读后感100字_读后感_模板.pdf
文档评论(0)