主题 : 求教中断 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 24248
精华: 0
发帖: 15
金钱: 75 两
威望: 15 点
综合积分: 30 分
注册时间: 2010-07-05
最后登录: 2018-07-15
楼主  发表于: 2010-12-01 12:06

 求教中断

我看开发板资料的2440test里的keyscan.c有中断的程序,我剪切了出来,想试试。
int Main(U32 RstStat)
{
    rGPGUP  = 0xffff;    //
  Isr_Init();
  rGPGCON = rGPGCON & (~((3<<22)|(3<<6)|(3<<0)|(3<<10)|(3<<12)|(3<<14))) |
         ((2<<22)|(2<<6)|(2<<0)|(2<<10)|(2<<12)|(2<<14)) ;        //GPG11,3 set EINT
    
    rEXTINT1 &= ~(7|(7<<0));    
    rEXTINT1 |= (0|(0<<0));    //set eint8 falling edge int
    
    rEXTINT1 &= ~(7<<12);
    rEXTINT1 |= (0<<12);    //set eint11 falling edge int
    
    rEXTINT1 &= ~(7<<20);
    rEXTINT1 |= (0<<20);    //set eint13 falling edge int
    
    rEXTINT1 &= ~(7<<24);
    rEXTINT1 |= (0<<24);    //set eint14 falling edge int
    
    rEXTINT1 &= ~(7<<28);
    rEXTINT1 |= (0<<28);    //set eint15 falling edge int
        
    rEXTINT2 &= ~(0xf<<12);
    rEXTINT2 |= (0<<12);    //set eint19 falling edge int
    

    rEINTPEND |= (1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19);        //clear eint 11,19
    rEINTMASK &= ~((1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19));    //enable eint11,19
    ClearPending(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);
    pISR_EINT0 = pISR_EINT2 = pISR_EINT8_23 = (U32)Key_ISR;
    EnableIrq(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);    
    while(1);
}
可是运行的时候不中断还好,一切正常,一按中断程序就跑飞了,界面也变了。谁知道是为什么啊?或者能给一个可以运行的程序?是不是和ADS的设置有关啊?