LPC2000系列ARM向量中断控制器(VIC)_第1页
LPC2000系列ARM向量中断控制器(VIC)_第2页
LPC2000系列ARM向量中断控制器(VIC)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本文格式为Word版,下载可任意编辑LPC2000系列ARM向量中断控制器(VIC) 向量中断掌握器概述 ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。但是芯片内部有很多中断源, 最多可以有32个中断输入恳求。向量中断掌握器的作用就是允许哪些中断源可以产生中断、可以产生哪类中断、产生中断后执行哪段服务程序。 中断源列表 允许中断源产生中断 芯片内部很多部件都可以作为中断源,但并不是每个中断源都需要在中断状况下进行操作,也可以通过其它方法来处理各种状态。 比如通过串口发送一段数据,可以选择在一批发送结束后产生中断,然后在中断服务程序中发送下一批数据。也可以通过查询发送标志位

2、来打算什么时候发送下一批数据。 允许中断源产生中断由寄存器VICIntEnable和VICIntEnClr掌握,前者使能中断,后者禁止中断。 中断使能寄存器(VICIntEnable): 寄存器中每一位掌握着一个中断源,各中断源的位置与中断源列表所示相同。向某位写入1时,允许对应的中断源产生中断。 中断使能清零寄存器(VICIntEnClr): 与中断使能寄存器的功能相反,向某位写入1时,禁止对应的中断源产生中断。 选择产生中断的类型 ARM7TDMI内核具有FIQ和IRQ两个中断输入,全部中断源产生的中断都可以选择产生其中一种中断。这通过中断选择寄存器完成。 中断选择寄存器(VICIntSe

3、lect): 寄存器中每一位掌握着一个中断源,各中断源的位置与中断源列表所示相同。向某位写入1时,对应中断源产生的中断为FIQ中断,否则为IRQ中断。 中断类型 中断输入恳求可以在VIC中被设置为以下三类: FIQ中断:具有最高优先级; 向量IRQ中断:具有中等优先级; 非向量IRQ中断:具有最低优先级; 向量IRQ中断 VIC最多支持16个向量IRQ中断,这些中断被分为16个优先级,并且为每个优先级指定一个服务程序入口地址。在发生向量IRQ中断后,相应优先级的服务程序入口地址被装入向量地址寄存器VICVectAddr中,通过一条ARM指令即可跳转到相应的服务程序入口处,所以向量IRQ中断具有

4、较快的中断响应。 非向量IRQ中断 任何中断源都可以设置为非向量IRQ中断。它与向量IRQ中断的区分在于前者不能为每个非向量IRQ中断源设置服务程序地址,而是全部的非向量IRQ中断都共用一个相同的服务程序入口地址。 当有多个中断源被设置为非向量IRQ中断时,需要在用户程序中识别中断源,并分别作出处理。所以非向量IRQ中断响应延时相对较长。 向量IRQ中断相关寄存器 VICVectCntl015和VICVectAddr015两类寄存器与向量IRQ中断设置有关,前者为中断源安排向量IRQ中断的优先级,后者为该中断优先级设置服务程序入口地址。寄存器名称最终的数字同时也代表该寄存器掌握的向量IRQ中断

5、的优先级,数值越小优先级越高。 留意:假如将同一个中断源安排给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。 向量IRQ中断相关寄存器 向量掌握寄存器(VICVectCntl015): VICVectCntlx4:0:安排给此优先级向量IRQ中断的中断源序号; VICVectCntlx5:该位为1,使能当前优先级的向量IRQ中断。否则为禁止。 向量地址寄存器(VICVectAddr015): 该寄存器中存放对应优先级向量IRQ中断服务程序的入口地址。 非向量IRQ中断相关寄存器 向量地址寄存器(VICDefVectAddr): VICDefVect

6、Addr寄存器存放非向量中断服务程序的入口地址,当发生非向量中断时该寄存器中保存的地址存入VICVectAddr寄存器。 产生中断后的服务程序地址 在发生向量IRQ中断后,VIC能将对应中断的服务程序地址存入VICVectAddr寄存器中。假如为非向量中断,将把VICDefVectAddr寄存器的值存入该寄存器。在特别向量表的IRQ特别入口处放置一条指令,将VICVectAddr寄存器的内容装入程序计数器(PC),就可以跳转到当前中断的服务函数。 这样的设计可以减小中断响应延时。 向量地址寄存器(VICVectAddr): 中断状态寄存器 假如使用了多个非向量IRQ中断或多个FIQ中断,那么在

7、发生中断后要在程序中查找中断源。通过IRQ状态寄存器和FIQ状态寄存器可以了解到这些中断源的中断恳求状态。 任何在VIC中使能的中断都会把中断恳求反映在“全部中断状态寄存器(VICRawIntr)”中。 全部中断状态寄存器(VICRawIntr): FIQ状态寄存器(VICFIQStatus): IRQ状态寄存器(VICIRQStatus): 软件中断寄存器 在一些特别场合或者调试时,可能需要使用软件强制产生某个中断恳求。 软件中断寄存器(VICSoftInt): 软件中断清零寄存器(VICSoftIntClear): 爱护使能寄存器 在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的平安等级。 软件中断寄存器(VICSoftInt): IRQ中断的设计实例 设置外部中断0产生向量IRQ中断后执行中断服务程序“IRQ_Eint0( )”。 图示IRQ中断的发生过程 使用VIC的留意要点 假如在片内RAM中调试程序,并使用了中断,那么必需将存储器映射掌握设置为内部RAM模式; 将多个中断源设置为FIQ,将增加中断响应延时,所以建议FIQ中断只有一个中断源; ADS1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论