HandleBDMA0#4
HandleZDMA1#4
HandleZDMA0#4
HandleTICK#4
HandleEINT4567#4
HandleEINT3#4
HandleEINT2#4
HandleEINT1#4
HandleEINT0#4
将异常中断矢量重构到SDRAM,这样的好处就是可以在其它的功能程序内对中断处理程序的地址任意赋值。为此,我们在44b。h文件中定义:
/*ISR*/
#definepISR_RESET(*(unsigned*)(_IRQ_BASEADDRESS+0x0))
#definepISR_UNDEF(*(unsigned*)(_IRQ_BASEADDRESS+0x4))
#definepISR_SWI(*(unsigned*)(_IRQ_BASEADDRESS+0x8))
#definepISR_PABORT(*(unsigned*)(_IRQ_BASEADDRESS+0xc))
#definepISR_DABORT(*(unsigned*)(_IRQ_BASEADDRESS+0x10))
#definepISR_RESERVED(*(unsigned*)(_IRQ_BASEADDRESS+0x14))
#definepISR_IRQ(*(unsigned*)(_IRQ_BASEADDRESS+0x18))
#definepISR_FIQ(*(unsigned*)(_IRQ_BASEADDRESS+0x1c))
#definepISR_ADC(*(unsigned*)(_IRQ_BASEADDRESS+0x100))//0x20))
#definepISR_RTC(*(unsigned*)(_IRQ_BASEADDRESS+0x104))//0x24))
#definepISR_UTXD1(*(unsigned*)(_IRQ_BASEADDRESS+0x108))//0x28))
#definepISR_UTXD0(*(unsigned*)(_IRQ_BASEADDRESS+0x10c))//0x2c))
#definepISR_SIO(*(unsigned*)(_IRQ_BASEADDRESS+0x110))//0x30))
#definepISR_IIC(*(unsigned*)(_IRQ_BASEADDRESS+0x114))//0x34))
#definepISR_URXD1(*(unsigned*)(_IRQ_BASEADDRESS+0x118))//0x38))
#definepISR_URXD0(*(unsigned*)(_IRQ_BASEADDRESS+0x11c))//0x3c))
#definepISR_TIMER5(*(unsigned*)(_IRQ_BASEADDRESS+0x120))//0x40))
#definepISR_TIMER4(*(unsigned*)(_IRQ_BASEADDRESS+0x124))//0x44))
#definepISR_TIMER3(*(unsigned*)(_IRQ_BASEADDRESS+0x128))//0x48))
#definepISR_TIMER2(*(unsigned*)(_IRQ_BASEADDRESS+0x12c))//0x4c))
#definepISR_TIMER1(*(unsigned*)(_IRQ_BASEADDRESS+0x130))//0x50))
#definepISR_TIMER0(*(unsigned*)(_IRQ_BASEADDRESS+0x134))//0x54))
#definepISR_UERR01(*(unsigned*)(_IRQ_BASEADDRESS+0x138))//0x58))
#definepISR_WDT(*(unsigned*)(_IRQ_BASEADDRESS+0x13c))//0x5c))
#definepISR_BDMA1(*(unsigned*)(_IRQ_BASEADDRESS+0x140))//0x60))
#definepISR_BDMA0(*(unsigned*)(_IRQ_BASEADDRESS+0x144))//0x64))
#definepISR_ZDMA1(*(unsigned*)(_IRQ_BASEADDRESS+0x148))//0x68))
#definepISR_ZDMA0(*(unsigned*)(_IRQ_BASEADDRESS+0x14c))//0x6c))
#definepISR_TICK(*(unsigned*)(_IRQ_BASEADDRESS+0x150))//0x70))
#definepISR_EINT4567(*(unsigned*)(_IRQ_BASEADDRESS+0x154))//0x74))
#definepISR_EINT3(*(unsigned*)(_IRQ_BASEADDRESS+0x158))//0x78))
#definepISR_EINT2(*(unsigned*)(_IRQ_BASEADDRESS+0x15c))//0x7c))
#definepISR_EINT1(*(unsigned*)(_IRQ_BASEADDRESS+0x160))//0x80))
#definepISR_EINT0(*(unsigned*)(_IRQ_BASEADDRESS+0x164))//0x84))
例如,我们要使用到Exint4567中断,定义好中断处理程序Meint4567Isr()后,仅需要一条语句:
pISR_EINT4567=(int)MEint4567Isr;
就能使中断发生后正确跳转到我们编写的处理程序上。