学习LPC2103到中断时,感觉到与51的差别太大,思路转不过弯来,不理解LPC2103产生中断时的过程,按照我的思维,像51要进入中断,有关键字interrupt x来限定,比如串行中断程序
void SerialInt() interrupt 4
{
if(RI)
{
…………
}
if(TI)
{
…………
}
}
那发生串行中断产生后,PC的值变为0X0023,在0x0023处有一个跳转指令,跳转到处理串行程序的入口地址……
而LPC2103的中断,在头文件那里,有一段代码
__swi(0x00) void SwiHandle1(int Handle);
#define IRQDisable() SwiHandle1(0)
#define IRQEnable() SwiHandle1(1)
#define FIQDisable() SwiHandle1(2)
#define FIQEnable() SwiHandle1(3)
在程序当中,如果要使能IRQ中断,就直接使用IRQEnable() ;
然后有个函数void __irq Eint0IRQ(void){…………}
问:
__swi(0x00) void SwiHandle1(int Handle);是什么意思呢?
__irq是相当于51的interrupt 4之类的中断声明吗?如果是,那__swi我是不是可以理解为软件中断声明呢,那SwiHandle1(1)又怎么会跟IRQ挂上钩呢?
望各位大虾不吝赐教,谢谢了!!! |