首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

S3C2440中断控制器(2)

S3C2440中断控制器(2)

  • void __irq IRQ_KEY2(void)  
  • {  

  •     rSRCPND |=(1<<4); //清除中断标志位
  •     rINTPND |=(1<<4);  
  •     rEINTPEND |=(1<<4);   //清除ENIT4的中断标志位

  •     LED2_ON;  
  •     Delay();  
  •     LED2_OFF;  


  • }  

  • void __irq IRQ_KEY3(void)  
  • {  

  •     rSRCPND |=(1<<2); //清除中断标志位
  •     rINTPND |=(1<<2);  

  •     LED3_ON;  
  •     Delay();  
  •     LED3_OFF;  


  • }  

  • void __irq IRQ_KEY4(void)  
  • {  

  •     rSRCPND |=1<<0; //清除中断标志位  
  •     rINTPND |=1<<0;  

  •     LED4_ON;      
  •     Delay();  
  •     LED4_OFF;     
  • }  



  • void Eint_Init(void)  
  • {  
  •     rGPFCON &=~(0x33f);  
  •     rGPFCON |=0x22a;    //设置GPF0、1、2、4为中断输入功能

  •     rEXTINT0 = 0x20222; //ENIT0、1、2、4下降沿触发中断

  •     rSRCPND = 0x17;     //清除ENIT0、1、2、4的中断标志位
  •     rINTPND = 0x17;     //清除ENIT0、1、2、4的中断标志位
  •     rEINTPEND=(1<<4); //清除ENIT4的中断标志位

  •     rINTMOD=0x0;        //所有中断为IRQ中断

  •     rINTMSK &= ~0x17;   //ENIT0、1、2、4中断服务有效(这里就是使能外部中断)
  •     rEINTMASK &= ~(1<<4);//EINT4中断服务有效

  •     pISR_EINT0 = (unsigned)IRQ_KEY4;    //设置各中断服务子程序地址
  •     pISR_EINT1 = (unsigned)IRQ_KEY1;  
  •     pISR_EINT2 = (unsigned)IRQ_KEY3;  
  •     pISR_EINT4_7 = (unsigned)IRQ_KEY2;  
  • }  

  • void Main(void)  
  • {  
  •     rGPBCON &=~((3<<10)|(3<<12)|(3<<14)|(3<<16));   //对GPBCON[10:17]清零
  •     rGPBCON |=((1<<10)|(1<<12)|(1<<14)|(1<<16));    //设置GPB5~8为输出
  •     rGPBUP &=~((1<<5)|(1<<6)|(1<<7)|(1<<8));        //设置GPB5~8的上拉功能
  •     rGPBDAT |=(1<<5)|(1<<6)|(1<<7)|(1<<8);          //关闭LED

  •     Eint_Init();  

  •     while(1);  
  • }  
继承事业,薪火相传
返回列表