引用 9 楼 gooogleman 的回复:
引用 6 楼 reallyu 的回复:
// 初始化外部按键中断: 注册中断事件, 允许外部中断
if (!(InterruptInitialize(g_TIMER2SysIntr, TimerEvent, 0, 0)))
{
RETAILMSG(1, (TEXT("ERROR: TIMER2TIM: InterruptInitialize failed.\r\n")));
CloseHandle(TimerEvent);
return 0;
}
// 从 OAL 请求一个 SYSINTR 值
? ? if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &g_TIMER2Irq, sizeof(UINT32), &g_TIMER2SysIntr, sizeof(UINT32), NULL))
? ? {
? ? ? ? RETAILMSG(1, (TEXT("ERROR: TIMER2: Failed to request sysintr value for EINT interrupt.\r\n")));
? ? ? ? return(0);
? ? }
? ? RETAILMSG(1,(TEXT("INFO: TIMER2: Mapped Irq 0x%x to SysIntr 0x%x.\r\n"), g_TIMER2Irq, g_TIMER2SysIntr));
这两个顺序反了吧, 先请求 sysIntr 的值
然后再绑定事件
我也觉得是反了
我的是
if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &g_CamIrq, sizeof(UINT32), &g_CamSysIntr, sizeof(UINT32), NULL))
? ? {
? ? ? ? RETAILMSG(1, (TEXT("ERROR: CIS_INIT: Failed to request sysintr value for Camera interrupt.\r\n")));
? ? ? ? return(0);
? ? }
RETAILMSG(1,(TEXT("INFO: Mapped g_CamIrq 0x%x to g_CamSysIntr 0x%x.\r\n"), g_CamIrq, g_CamSysIntr));
//#define IRQ_CAM? ? ? ? ? ? 6
bSuccess = InterruptInitialize(g_CamSysIntr, CameraEvent, NULL, 0);
? ? if (!bSuccess)
? ? {
? ? ? ? RETAILMSG(1,(TEXT("Fail to initialize camera interrupt event\r\n")));
? ? ? ? return FALSE;
? ? }? ?
? ? CameraThread = CreateThread(NULL,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (LPTHREAD_START_ROUTINE)CameraCaptureThread,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? &threadID);
? ?
? ? if (NULL == CameraThread ) {
? ? RETAILMSG(1,(TEXT("Create Camera Thread Fail\r\n")));
? ? }
触摸屏有定时器中断的,你仔细看看。
我都看了好几遍了,它里面只是设置了参数,但是没有IST啊~~~
我改了顺序后,还是不行,放在开发板上调试程序加载失败,但是有PWM脉冲波输出就是没有中断!!!