S3C2440外部中断

#include "2440addr.h"
#include "def.h"
#include "option.h"



/*
EINT8(GPG0),EINT11(GPG3),EINT13(GPG5),EINT14(GPG6),
EINT15(GPG7),EINT19(GPG11),为按键接口。


*/
static void __irq EINT8_23_ISR(void)
{
 ClearPending(BIT_EINT8_23);
  if(rEINTPEND&(1<<8))
 {
  
  rEINTPEND|=1<<5;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((0<<5)|(1<<6)|(1<<7)|(1<<8));
 }
  if(rEINTPEND&(1<<11))
 {
  
  rEINTPEND|=1<<11;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((1<<5)|(0<<6)|(1<<7)|(1<<8));
 }
   if(rEINTPEND&(1<<13))
 {
  
  rEINTPEND|=1<<13;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((1<<5)|(1<<6)|(0<<7)|(1<<8));
 }
   if(rEINTPEND&(1<<14))
 {
  
  rEINTPEND|=1<<14;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((1<<5)|(1<<6)|(1<<7)|(0<<8));
 }
   if(rEINTPEND&(1<<15))
 {
  
  rEINTPEND|=1<<11;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((1<<5)|(0<<6)|(0<<7)|(1<<8));
 }
   if(rEINTPEND&(1<<19))
 {
  
  rEINTPEND|=1<<11;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((0<<5)|(1<<6)|(1<<7)|(0<<8));
 }
 
 
}
void Interrupt_Init(void)
{
 rGPGUP&=~((1)|(1<<3)|(1<<5)|(1<<6)|(1<<7)|(1<<11));
 rGPGCON&=~((3)|(3<<6)|(3<<10)|(3<<12)|(3<<14)|(3<<22));
 rGPGCON|= ((2)|(2<<6)|(2<<10)|(2<<12)|(2<<14)|(2<<22));
// 设置GPG0.GPG3,GPG5,GPG6,GPG7,GPG11为中断口。
 rSRCPND|=BIT_EINT8_23;
 //写入BIT_EINT8_23到rSRCPND来清除EINT8_23中断请求。
 rINTPND|=BIT_EINT8_23;
 //写入BIT_EINT8_23到rINTPND来清除EINT8_23中断请求。
 rINTMOD&=~BIT_EINT8_23;
 //EINT8_23设置为IRQ中断模式。
 rINTMSK&=~BIT_EINT8_23;
 //是其可以服务EINT8_23中断。
 rPRIORITY=0x0;
 //中断优先级设置。
 rEXTINT1 &= ~((15<<0)); 
 rEXTINT1 |= ((2<<0)); //set eint8 falling edge int
 
 rEXTINT1 &= ~(15<<12);
 rEXTINT1 |= (2<<12); //set eint11 falling edge int
 
 rEXTINT1 &= ~(15<<20);
 rEXTINT1 |= (2<<20); //set eint13 falling edge int
 
 rEXTINT1 &= ~(15<<24);
 rEXTINT1 |= (2<<24); //set eint14 falling edge int
 
 rEXTINT1 &= ~(7<<28);
 rEXTINT1 |= (2<<28); //set eint15 falling edge int
 
 rEXTINT2&=~(15<<12);
 rEXTINT2|= (2<<12);
 //EINT8~23设置为有滤波器,下降沿触发。
 rEINTMASK&=~((1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19));
 rEINTPEND&=~((1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19));
 //EINT8~13中断使能。 
 pISR_EINT8_23=(U32)EINT8_23_ISR;
 //注册中断
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值