下面这个宏是用于第一次查表过程的实现中断向量的重定向,你会发现
在_ISR_STARTADDRESS=0x33FF_FF00里定义的第一级中断向量表
是采用型如Handle***的方式的. 而在程序的ENTRY处(程序开始处)采用的是
b Handler***的方式.
在这里Handler***就是通过HANDLER这个宏和Handle***进立联系的.
这种方式的优点就是正真定义的向量数据在内存空间里,而不是在ENTRY处
的ROM(FLASH)空间里, 这样,我们就可以在程序里灵活的改动向量的数据了.
其中HANDLER是一个宏,用于查找中断处理程序的入口地址。这些地址存放在
由HandleXXX指向的表项中,该表定位在RAM高端,基地址为_ISR_STARTADDRESS。
假如_ISR_STARTADDRESS为 0x800000000,当IRQ中断时,根据b HandlerFIQ,先跳转
再根据^ _ISR_STARTADDRESS基地址+HandleIRQ 的偏移地址(4*6)得到的中断地址
0x80000000+0x00000024=0x80000024