在WinCE6.0内核中,申请外部中断17
Irq[0]=-1;Irq[1]=OAL_INTR_FORCE_STATIC;Irq[2]=IRQ_EINT17;
if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(Irq), &gIntrTouchChanged, sizeof(UINT32), NULL))
{
RETAILMSG(1, (TEXT("ERROR: Failed to request the touch changed sysintr.\r\n")));
gIntrTouchChanged = SYSINTR_UNDEFINED;
return(FALSE);
}
IO口申请
PRIVATE volatile S3C2440A_IOPORT_REG * v_pIOPregs;
v_pIOPregs = (volatile S3C2440A_IOPORT_REG *)TSP_RegAlloc((PVOID)S3C2440A_BASE_REG_PA_IOPORT, sizeof(S3C2440A_IOPORT_REG));
if (v_pIOPregs == NULL)
{
ERRORMSG(1,(TEXT("For IOPreg: VirtualAlloc failed!\r\n")));
break;
}
初始化外部中断
v_pIOPregs->GPGCON &= ~(3<<18); // Clear GPG9
v_pIOPregs->GPGCON |= (2<<18); // 设置 GPG9 为 EINT17
v_pIOPregs->EXTINT2 &= ~(0xf<<4); // Filter Disable, LOW LEVEL trigger for EINT17
v_pIOPregs->EXTINT2 |= (0<<4); // 设置低电平触发中断
v_pIOPregs->EINTPEND |=(1<<17);
v_pIOPregs->EINTMASK &= ~(1<<17); // 使能中断
在这里外部中断17设置为低电平触发可以顺利进入中断,但是会出现死机现象,另外如果
设置为下降沿触发
v_pIOPregs->EXTINT2 |= (0<<4); // 设置为下降沿触发中断
此时根本进入不了中断
请问哪位高人指点一下啊!万分感谢!迫切等待中!