ARM入门笔记(8)_第1页
免费预览已结束,剩余2页可下载查看

下载本文档

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

文档简介

1、arm入门笔记(8)事实上的中断与51的中断类似,都有类似的中断入口地址(arm称异样向量表)。只不过 51给两个互相的中断入口之间留有足够的空间(如外部中断0的中断入口在03h处,而定时器0的中断入口在0bh处),在这段空间中可以放多条命令,这样在编写中断处理程序时十分灵便。arm总共有7种中断(或异样)类型,它们的入口分离为00h、04h 1ch,入口与入口之间只够放一条命令,这条通常为“b xx”或者“ldr pc, resetaddr”的跳转命令。二试验目的在irq中断向量地址(0x18)处设置一个断点后全速运行,用按钮产生pio中断输入信号,使产生中断,而跳转到设置的断点处。三试验程

2、序和参数设置1> 选项设置与上个试验相同2> 启动代码与前几个试验相比,使能了irq中断后再跳到的主函数。area init,code,readonlycode32mode_usr equ 0x10 ;cpsr中各种处理器模式对应的控制位usr_stack equ 0x00204000 ;定义ram的最高地址,无重映射entryb initreset ; 0x00 reset handlerundefvec b undefvec ; 0x04 undefined instructionswivec b swivec ; 0x08 software interruptpabtvec

3、b pabtvec ; 0x0c prefetch abortdabtvec b dabtvec ; 0x10 data abortrsvdvec b rsvdvec ; 0x14 reservedirqvec b irqvec ; 0x18 irqfiqvec b fiqvec ; 0x1c fiqinitresetmsr cpsr_c,mode_usr ;使能fiq,irq中断ldr sp,=usr_stackimport mainb mainend3> c语言代码i nclude "at91sam7s64.h"i nclude "board.h&quo

4、t;unsigned int key_val;unsigned int key;int main(void)*at91c_pmc_scer = 0x1; /使能系统时钟寄存器的处理器时钟*at91c_pmc_pcer = 1 91c_id_pioa; /使能pioa外围时钟*at91c_pioa_per = sw_mask; /使能key引脚的i/o口功能*at91c_aic_idcr = 1 91c_id_pioa; /禁止pio外围中断功能*at91c_pioa_odr = sw_mask; /使能4个key管脚的输入功能at91c_base_aic -> aic_smrat91c_

5、id_pioa = at91c_aic_prior_highest | at91c_aic_srctype_int_edge_triggered;/中断模式(优先级和触发模式)*at91c_aic_iccr = 1 91c_id_pioa; /中断清除*at91c_pioa_idr = 0xffffffff; /禁止全部pio口的中断功能*at91c_pioa_ier = sw3_mask; /使能pio的sw3脚中断功能*at91c_aic_iecr = 1 91c_id_pioa; /使能pio外围中断功能while (1);四浮现的问题与解决办法1> cpu进不了中断,即跳不到ir

6、q中断向量入口地址。缘由是打开了memory窗口,观看中断相关的寄存器。axd软件为了在memory窗口中刷新这些寄存器值,在程序运行过程中会拜访cpu中相应寄存器值。当中断源触发后,在跳到irq的中断入口之前,irq的中断向量寄存器aic_ivr就由于上述缘由被读过 ,这时cpu就认为已经完成对irq中断的处理,因此就不再跳转到irq中断入口。2> 刚一执行“msr cpsr_c,mode_usr”语句使能irq中断,cpu就立刻产生irq中断。缘由当上一次产生irq中断后,没有读pio的中断状态寄存器,将其清零。由于中断状态寄存器置1时表示自从上一次读取此寄存器,起码检测到了一次电平变幻。所以当没有读该寄存器时,该状态位会向来保持着。又由于在重新装载程序举行调试时,没有复位目标cpu,所以当使能irq中断后,因为pio中断状态寄存器为1的缘由而产生中断。五总结个人认为arm的中断与51的中断,在本质上并没有多大的区分,浮现上述的问题是因为它们在、调试时的差异造成。在用一般的51仿真器举行仿真、调试时,假如我们不举行如单步、全速等执行程序运行,内部的各种寄存器、状态寄存器等是不会转变的,此时目标的cpu处于停

温馨提示

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

评论

0/150

提交评论