void __irq IRQ_Exception(void)
{
void (*__Handler)(void);
int irq_no;
uint32 bak;
// 找出当前中断号
bak = rINTPND; // 读取INTPND的值
for(irq_no=0; irq_no<32; irq_no++)
{
bak = bak>>1;
if(bak == 0) break;
}
// 取得中断服务程序地址并执行
__Handler = (void (*)(void)) VICVectAddr[irq_no];
__Handler();
}
有一点不明白为什么要使用void (*__Handler)(void); 这个指针这种机制来实现跳到中断服务函数呢?中断号已经取得了,这个函数最后直接用VICVectAddr[irq_no];过去不行吗?
希望得到高手解惑!