安防之家讯:ARM7 TDMI有两种类型的中断模式:FIQ和IRQ。IRQ和FIQ之间的区别是:对于FIQ必须尽快处理事件并离开这个模式;IRQ可以被FIQ中断,但IRQ不能中断FIQ;为了使FIQ更快,FIQ模式具有更多的私有寄存器。
CPSR指ARM7 TDMI处理器的程序状态寄存器。如果CPSR的F位被设置为1,处理器将不接受来自中断控制器的FIQ;如果CPSR的I位被设置为1,处理器将不接受来自中断控制器的IRQ。因此,为了使能相应中断机制,CPSR的F位或I位必须被清零,同时中断屏蔽寄存器INTMSK的相应位也必须被清零。
中断请求寄存器INTPND的各位指示了某个中断请求是否还未被处理。在INTPND中将要或已被置位的中断位称为Pending位。若某个Pending位被置位,当CPSR的I标志位或F标志位被清零或者为0状态时,中断服务程序就会被启动执行。Pending寄存器是一个只读寄存器,所以在中断服务程序中要想清除Pending位时,需要采用在中断服务寄存器I_ISPC或F_ISPC的相应位写入1的方式来实现。
在30个中断源中有26个中断源提供给中断控制器,4个外部中断(EINT4/5/6/7)请求是通过“或”的形式合成为1个中断源送至中断控制器,2个UART错误中断(UERROR0/1)也是如此。
有关中断源的详细信息如表所示。 中 断 源 描 述 主 单 元 辅单元IDEINT0外部中断0mGAsGAEINT1外部中断1mGAsGBEINT2外部中断2mGAsGCEINT3外部中断3mGAsGDEINT4/5/6/7外部中断4/5/6/7mGAsGKATICKRTC时钟节拍中断 mGAsGKBINT_ZDMA0通用DMA0中断 mGBsGAINT_ZDMA1通用DMA1中断 mGBsGBINT_BDMA0桥DMA0中断 mGBsGCINT_BDMA1桥DMA1中断 mGBsGDINT_WDT看门狗定时器中断 mGBsGKAINT_UERR0/1串行口0/1错误中断 mGBsGKBINT_TIMER0定时器0中断 mGCsGAINT_TIMER1定时器1中断 mGCsGBINT_TIMER2定时器2中断 mGCsGCINT_TIMER3定时器3中断 mGCsGDINT_TIMER4定时器4中断 mGCsGKAINT_TIMER5定时器5中断 mGCsGKBINT_URXD0串行口0接收中断 mGDsGAINT_URXD1串行口1接收中断 mGDsGBINT_IICIIC中断 mGDsGCINT_SIOIIC中断 mGDsGDINT_UTXD0串行口0发送中断 mGDsGKAINT_UTXD1串行口1发送中断 mGDsGKBINT_RTCRTC报警中断 mGKAINT_ADCAD转换结束中断 mGKB 3C44B0X中断优先级的决定有两种方式:一是通过软件查询决定中断优先级,该方式在跳到相应服务程序之前需要一个较长的延迟时间;另一种是通过硬件决定中断优先级——矢量中断模式。在多个中断源同时请求中断时,硬件优先级逻辑可以决定哪一个中断应该得到响应,然后这个硬件逻辑产生一条跳转指令跳到矢量表中对应的中断矢量地址处,在这个地址上事先已经放置了跳转到与该中断相应的中断服务程序的跳转指令。与前一种软件方式相比,这种方式将大大减少中断延迟。安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/