天嵌 ARM开发社区

 找回密码
 注册
查看: 1636|回复: 2

按键中断无法返回

[复制链接]
落叶 发表于 2011-3-1 00:14:14 | 显示全部楼层 |阅读模式
代码如下

void __init_portf(void){
rGPFCON=0xFEEA;
                                                       


//rPRIORITY=0x00000000;       
rINTMOD=0x0;                                        //说明为IRQ中断rINTMSK&=~(1<<0|1<<1|1<<2|1<<4);                //  使EINT0 EINT1 EINT2 EINT3 EINT4 能够中断        
rEINTMASK&=~(1<<4);        //打开中断标示 EINT0 EINT1 EINT2 EINT4 0 1111
pISR_EINT0=(unsigned int)IRQ_key4;        //登记相关的中断函数
pISR_EINT1=(unsigned int)IRQ_key1;
pISR_EINT2=(unsigned int)IRQ_key3;
pISR_EINT4_7=(unsigned int)IRQ_key2;


}


void IRQ_key1(void){                //EIBT0

unsigned int i=rINTPND;
unsigned int j=rSRCPND;
unsigned int y=rGPFCON;


ClearPending(BIT_EINT1);
Uart_Printf(" interrupt EINT1 !\n");


Uart_Printf("rSRCPND=%d\n",j);
Uart_Printf("rINTPND=%d\n",i);
Uart_Printf("rGPFCON=%d\n",y);
i=rINTPND;
j=rSRCPND;
Uart_Printf("@rINTPND=%d\n",i);
Uart_Printf("@rSRCPND=%d\n",j);

}
void IRQ_key2(void){               

rSRCPND|=(1<<4);
rEINTPEND=1<<4;                       
rINTPND=1<<4;               
Uart_Printf(" interrupt EINT4 !\n");

}


void IRQ_key3(void){               
ClearPending(BIT_EINT2);
//rSRCPND|=(1<<2);               
//rINTPND=1<<2;               
Uart_Printf(" interrupt EINT2 !\n");
}


void IRQ_key4(void){               
if(rGPFDAT&1){
ClearPending(BIT_EINT0);
//rSRCPND=1;               
//rINTPND=1;               
Uart_Printf("interrupt EINT0 !\n");
}

}

我把main()里面的while(从pc接收选择测试的部分)去掉了,一直在等待中断,如下
while(1){
       
                /*
               
               
                Uart_Printf("\nPlease select function : \n");       
                for(i=0; CmdTip[i].fun!=0; i++)
                        Uart_Printf("%d : %s\n", i, CmdTip[i].tip);
                idx = Uart_GetIntNum_GJ() ;       
                if(idx<i)
                {
                        (*CmdTip[idx].fun)();
                        Delay(20);
                       
                }       
       
               
                               
               
       
        Uart_Printf(" OVER ?\n");
        */         

}

可是每次进入中断之后无法返回  出现pabort exception 和undefined instruction command  exception ! 可是在key1中断里面打印的端口状态没什么问题!!!

1.请问这是什么问题???()
2.怎么解决?
zengweitotty 发表于 2012-3-11 08:07:47 | 显示全部楼层
支持,我也纠结好久了的哈,:'(
raominping 发表于 2012-3-11 13:26:21 | 显示全部楼层
中断函数写法有点问题吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-16 11:07 , Processed in 1.031250 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表