芯片复制IAR for arm 中断处理写法
芯片复制启动文件中:(默认启动文件也是这样)
org 0x18
ldr pc,[pc,#-0xFF0] ; 直接跳转到用户中断处理函数
直接写用户中断函数
__irq __arm void Tmr0_IntOnMR0_isr(void)
{
............
}
__irq __arm void Tmr1_IntOnMR0_isr(void)
{
............
}
芯片复制
启动文件中:(默认启动文件也是这样)
org 0x18
ldr pc,=irq_handler ;跳转到公共中断处理函数,再分支到具体功能的中断处理函数中
__irq __arm void irq_handler (void)//公共中断处理函数,检查VICVectAddr是否为空
{
void (*interrupt_function)();
unsigned int vector;
vector = VICVectAddr; // Get interrupt vector.
interrupt_function = (void(*)())vector;
if(interrupt_function != NULL)
{
interrupt_function(); // Call vectored interrupt function.
}
else
{
VICVectAddr = 0; // Clear interrupt in VIC.
}
}
具体功能的中断处理函数
void Tmr0_IntOnMR0_isr(void)
{
............
}
void Tmr1_IntOnMR0_isr(void)
{
............
}

芯片解密