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