Chinaunix首页 | 论坛 | 博客
  • 博客访问: 566181
  • 博文数量: 169
  • 博客积分: 2656
  • 博客等级: 少校
  • 技术积分: 1685
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-30 13:03
文章分类

全部博文(169)

文章存档

2011年(1)

2010年(135)

2009年(33)

我的朋友

分类: 嵌入式

2010-10-19 12:42:13

向量中断就是不同的中断有不同的入口地址,非向量中断就只有一个入口地址,进去了在判断中断标志来识别具体是哪个中断。向量中断实时性好,非向量中断简单。
        
向量者,矢量也,即指方向,门路。
        
向量中断——由硬件提供中断服务程序入口地址;
        
非向量中断——由软件件提供中断服务程序入口地址
        
向量中断模式用于RESETNMI、异常处理。当向量中断产生时,控制器直接将PC赋值,如跳到0×0000000d处,而在0×0000000d地址处通常放置ISR服务程序地址LDR PC, =ISR_HANDLER
       
非向量中断模式,有一个寄存器标识位,跳转到统一的函数地址,此函数通过判别寄存器标识位和优先级关系进行中断处理。
       
向量中断模式是当CPU读取位于0×18处的IRQ中断指令的时候,系统自动读取对应于该中断源确定地址上的指令取代0×18处的指令,通过跳转指令系统就直接跳转到对应地址函数中,节省了中断处理时间提高了中断处理速度。例如 ADC 中断的向量地址为0xC0,则在0xC0处放如下代码:ldr PC,=HandlerADC ADC中断产生的时候系统会自动跳转到HandlerADC函数中处理中断。
      
非向量中断模式处理方式是一种传统的中断处理方法,当系统产生中断的时候,系统将INTPND寄存器中对应标志位置位,然后跳转到位于0×18处的统一中断函数中;该函数通过读取INTPND寄存器中对应标志位来判断中断源,并根据优先级关系再跳到对应中断源的处理代码中处理中断。其实,所有的非向量中断可以看成是一个向量中断。

阅读(1407) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~