Chinaunix首页 | 论坛 | 博客
  • 博客访问: 80449
  • 博文数量: 12
  • 博客积分: 1445
  • 博客等级: 上尉
  • 技术积分: 166
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-24 20:15
文章分类

全部博文(12)

文章存档

2011年(1)

2009年(1)

2008年(10)

我的朋友

分类:

2008-10-01 10:29:53

     矢量中断是当cpu读取位于0x18处的IRQ中断指令的时候,系统自动读取对应于该中断源确定地址上的指令取代0x18处的指令,通过跳转指令系统就直接跳转到对应中断服务函数首地址。因此,矢量中断节省了中断响应时间。 例如 EXTINT0中断的向量地址为0x20,则在0x20处的代码如下:ldr PC,=HandlerEXTINT0. 当EXTINT0中断产生的时候,系统就自动跳转到HandlerEXTINT0函数中。
    非矢量中断处理方式是一种较传统的中断处理方法,当系统产生中断的时候,系统将INTPEND寄存器中对应标志位置位, 然后在0x18处找到中断服务函数首地址,跳转到中断服务函数中。在中断服务函数中通过读取INTPEND寄存器中对应标志位来判断中断源,根据预先设置的优先级关系再跳到对应中断源的处理函数中。由此可见非矢量中断用软件实现查找对应中断的方式,因此,其响应速度较矢量中断慢。

阅读(2557) | 评论(0) | 转发(0) |
1

上一篇:电脑开机电源不亮

下一篇:C 语言库函数

给主人留下些什么吧!~~