- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.8 向量中断控制器(VIC) 向量IRQ中断相关寄存器 向量地址寄存器(VICVectAddr0~15): 该寄存器中存放对应优先级向量IRQ中断服务程序的入口地址。 位 [31:0] 功能 中断服务程序入口地址 向量控制寄存器(VICVectCntl0~15): VICVectCntlx[4:0]:分配给此优先级向量IRQ中断的中断源序号; VICVectCntlx[5]:该位为1,使能当前优先级的向量IRQ中断。否则为禁止。 位 7 6 5 [4:0] 功能 - - EN 中断源序号 5.8 向量中断控制器(VIC) 非向量IRQ中断相关寄存器 向量地址寄存器(VICDefVectAddr): VICDefVectAddr寄存器存放非向量中断服务程序的入口地址,当发生非向量中断时该寄存器中保存的地址存入VICVectAddr寄存器。 位 [31:0] 功能 中断服务程序入口地址 5.8 向量中断控制器(VIC) 产生中断后的服务程序地址 在发生向量IRQ中断后,VIC能将对应中断的服务程序地址存入VICVectAddr寄存器中。如果为非向量中断,将把VICDefVectAddr寄存器的值存入该寄存器。在异常向量表的IRQ异常入口处放置一条指令,将VICVectAddr寄存器的内容装入程序计数器(PC),就可以跳转到当前中断的服务函数。 这样的设计可以减小中断响应延时。 向量地址寄存器(VICVectAddr): 位 [31:0] 功能 中断服务程序入口地址 5.8 向量中断控制器(VIC) 中断状态寄存器 如果使用了多个非向量IRQ中断或多个FIQ中断,那么在发生中断后要在程序中查找中断源。通过IRQ状态寄存器和FIQ状态寄存器可以了解到这些中断源的中断请求状态。 任何在VIC中使能的中断都会把中断请求反映在“所有中断状态寄存器(VICRawIntr)”中。 IRQ状态寄存器(VICIRQStatus): 位 [31:0] 功能 当某位为1时表示对应位的中断源产生IRQ中断请求。 5.8 向量中断控制器(VIC) 中断状态寄存器 所有中断状态寄存器(VICRawIntr): 位 [31:0] 功能 当某位为1时表示对应位的中断源产生中断请求。 FIQ状态寄存器(VICFIQStatus): 位 [31:0] 功能 当某位为1时表示对应位的中断源产生FIQ中断请求。 5.8 向量中断控制器(VIC) 软件中断寄存器 软件中断寄存器(VICSoftInt): 位 [31:0] 功能 当某位为1时,将产生与该位相对应的中断请求。 软件中断清零寄存器(VICSoftIntClear): 位 [31:0] 功能 当某位为1时,将清零VICSoftInt寄存器中对应位 在一些特殊场合或者调试时,可能需要使用软件强制产生某个中断请求。 5.8 向量中断控制器(VIC) 保护使能寄存器 软件中断寄存器(VICSoftInt): 位 [31:1] 0 功能 — 当该位为1时,只能在特权模式下访问VIC寄存器。 在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。 IRQ中断的设计实例 设置外部中断0产生向量IRQ中断后执行中断服务程序“IRQ_Eint0( )”。 ... PINSEL1 = (PINSEL10xFFFFFFFC)|0x01; VICIntSelect = 0 VICVectCntl0 = (0x20 | 14); VICVectAddr0 = (int)IRQ_Eint0; EXTINT = 0x01; VICIntEnable = (1 14); ... C代码: 1.设置引脚连接模块,将P0.16设置为外部中断功能; 步骤: 2.设置所有中断为IRQ中断; 3.将外部中断0(在中断源列表中序号14)设置到优先级0中,并使能IRQ中断; 4.将外部中断0的中断服务程序写入对应优先级的地址寄存器中; 5.清除外部中断0的标志后使能外部中断0; (1) (2) (3) (4) (5) (5) 0x0000 0000 0xFFFF FFFF 用户程序 中断服务程序 异常向量表 1.正在执行用户程序; ① 2.外部中断0发生中断; ② 3.VIC硬件将中断服务程序地址装入VICVectAddr寄存器; ④ 4.程序跳转至异常向量表中IRQ入口0x0018处; 5.执行指令跳转至VICVectAddr寄存器中的中断
文档评论(0)