标题: 重要--S3C2440外部中断响应寄存器设置方法 [打印本页]

作者: 51heisex    时间: 2016-1-24 02:33
标题: 重要--S3C2440外部中断响应寄存器设置方法
如果不按照如下设置,中断将无法执行或者无法使下一个中断进入。
/*中断挂起设置,此过程加入到主函数中启动时加载*/
void Eint_wait()
{
   rSRCPND=rSRCPND; //中断挂起寄存器清除
   rINTPND=rINTPND; //中断源挂起寄存器清除
   rEINTPEND|=0x1<<13; //外部中断挂起寄存器,Eint挂起等待中断
   rSRCPND=BIT_EINT8_23; //中断源挂起寄存器相应位置1等待中断
   rINTPND=BIT_EINT8_23; //中断挂起寄存器相应位置1等待中断
}
/*中断挂起设置结束*/


/*以下为响应中断时的处理过程,为pISR指针中的函数*/
void __irq Eint_Isr(void)
{
   if(rEINTPEND == (1<<13)) //判断Eint13有响应时执行如下
   {
     rGPBDAT=0x0<<6;  //led6亮
     delay(10000);  //说明:由于使用边沿出发方式,故按钮按完后会完成边沿过程,完成后会立刻进入else处理过程中灭灯,肉眼可能无法看出来。为使其见到效果,需要让led亮一会儿!
     rEINTPEND=(1<<13); //将中断挂起寄存器Eint13置1等待下一个中断到来,如果不设置下一个中断无法进入
   }
   else  //当不为Eint13时,执行如下
   {
     rGPBDAT=0x1<<6;
     rEINTPEND=(1<<13); //将中断挂起寄存器Eint13置1等待下一个中断到来,如果不设置下一个中断无法进入
   }
}

以上两部分为简化了的中断处理过程中的重要内容,可根据输出引脚修改rGPBDAT和rEINTPEND即可使用。其它设置部分不在此说明。






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1