嵌入式系统设计一讲.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统设计一讲

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寄存器中的中断服务地址; ⑤ ⑥ 6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码。 图示IRQ中断的发生过程 ③ IRQ_Eint0 ??? VICVectAddr0 VICVectAddr IRQ_Eint0 ⑤ LDR PC, [PC, #-0xff0] 0x0000 0000 0xFFFF FFFF 用户程序 中断服务程序 异常向量表 ① ② ④ ⑤ ⑥ 图示IRQ中断的发生过程 ③ IRQ_Eint0 ??? VICVectAddr0 VICVectAddr IRQ_Eint0 ⑤ LDR PC, [PC, #-0xff0] 注意: 任何IRQ中断产生之后,微控制器跳转到地址0x18执行代码,该地址处的指令为: LDR PC, [PC, #-0xff0] 在执行该指令时,PC指向当前指令后的第2条指令,即地址0x20。 该指令将内存地址: 0x20-0xFF0 = 0xFFFFF030 处的内容存入PC,该地址正是 VICVectAddr寄存器的地址。 所以一条ARM指令即可实现程序向中断服务程序的跳转。 5.8 向量中断控制器(VIC) 使用VIC的注意要点 如果在片内RAM中调试程序,并使用了中断,那么必须将存储器映射控制设置为内部RAM模式; 将多个中断源设置为FIQ,将增加中断响应延时,所以建议FIQ中断只有一个中断源; ADS1.2规定在定义中断服务函数时必须加入关键字“__irq”,保证函数返回时会切换处理器模式; 在退出中断服务程序时要清零相应外设的中断标志,以及VICVectAddr寄存器,为响应下次中断作好准备。 VIC相关启动代码分析 ... /* 初始化VIC */ VICIntEnClr = 0xffffffff; VICVectAddr = 0; VICIntSelect = 0; ... 在LPC2100、LPC2200的启动代码中包含有VIC初始化程序,默认是禁止所有中断。 TargetResetInit函数: InitStack ... MSR CPSR_c,#0xdf LDR SP,=StackUsr MOV PC,R0 在LPC2100、 LPC2200的启动代码中默认是关闭IRQ和FIQ中断的。如果用户需要使用这两个中断,则

文档评论(0)

ipad0d + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档