8260的irq3上拉接高电平,此脚接一个开关到地,当按开关按地时,怎么进不了中断呀?我用提下降沿触发。
程序如下:
void Irq3InterruptSeverWork(void)
{
UINT32 immrVal;// = vxImmrGet();
immrVal = vxImmrGet();
intDisable((int)(VOIDFUNCPTR *)21);//关闭
*M8260_SIPNR_H(immrVal) |= (0x00001000);/*写1清中断标示,19位 清中断标示, 0在前,31在后面*/
logMsg("irq3 sever works\n", 0,0,0,0,0,0,0,0,0,0);
intEnable((int)(VOIDFUNCPTR *)21);
return;
}
void Irq3InterruptSeverInit(void)
{
UINT32 uiIntVec;
UINT32 immrVal = vxImmrGet();
int temp;
intDisable((int)(VOIDFUNCPTR *)21);//中断向量21 先屏蔽
/* irq3相关的设置 */
*M8260_SIEXR(immrVal) |= (0x00001000);/*19位 EDI3设置成1,表示 电平从高到底时,下降沿触发 0在前,31在后面*/
/*M8260_SIUMCR(immrVal) 45位清0,表示 DBB/IRQ3 PIN 使用 IRQ3,在syslib.c中可以实现*/
*M8260_SIPNR_H(immrVal) |= (0x00001000);/*写1清中断标示,19位 清中断标示, 0在前,31在后面*/
uiIntVec=(UINT32)(INUM_TO_IVEC(21));
if(intConnect((VOIDFUNCPTR *)uiIntVec,Irq3InterruptSeverWork,NULL)==ERROR)//和中断服务程序挂钩
{
printf("connect interrupt error!\n");
}
*M8260_SIMR_H(immrVal) |= (0x00001000);/*19位 mask irq33设置成1,表示此中断使能,可以使用, 0在前,31在后面*/
//这里要关闭中断寄存器
//中断 开启
logMsg("irq3 init \n", 0,0,0,0,0,0,0,0,0,0);
intEnable((int)(VOIDFUNCPTR *)21);
return;
}
请各位帮我看一下,谢谢!
[align=right][color=#000066][此贴子已经被作者于2006-12-16 9:11:26编辑过][/color][/align]