请问一个中断问题

xinyu_lj 2007-01-15 09:35:16

我在oal层OEMInterruptHandler函数中定义
else if(ulVic2Irq & INT2_GPIO)
{
gpioAIntrState=*GPIO_INTSTATUSA;
if(gpioAIntrState & 0x40)
{
*GPIO_AEOI=0x40;//CANINTTER_GPIO;
RETAILMSG(1,(TEXT("*---*startsysintr CANhhhhhhhhhhhhhhhhhhhhhhhhhhhhh\r\n")));

}
*VIC2_INTCLEAR = INT2_GPIO;
retval=SYSINTR_CAN;
}
而且我产生中断的时候也执行了RETAILMSG(1,(TEXT("*---*startsysintr CANhhhhhhhhhhhhhhhhhhhhhhhhhhhhh\r\n")));

说明isr已经返回了系统中断号SYSINTR_CAN;
我在驱动中定义
pCanInfo->hInterEvent=CreateEvent(0,FALSE,FALSE,NULL);
if(!pCanInfo->hInterEvent)
{
RETAILMSG(1,(TEXT("CAN:CreateEvent_Faileaaaaaaaaaaaaaaaaaaaa")));
}

if(!InterruptInitialize(SYSINTR_CAN,pCanInfo->hInterEvent,NULL,0))
{
RETAILMSG(1,(TEXT("InterruptInitialize Failed!!hhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
}

pCanInfo->hInterThread=CreateThread(NULL,
0,
CanIST,
pCanInfo,
CREATE_SUSPENDED,
0);
if(!pCanInfo->hInterThread)
{
RETAILMSG(1,(TEXT("CANTHREAT:CREATETHREAD_FALSEhhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
return 0;
}

dwISTPriority=100;//250;

if(!CeSetThreadPriority(pCanInfo->hInterThread,dwISTPriority))
{
RETAILMSG(1,(TEXT("CeSetThreadPriority Failed!!hhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
}
我在ist中WaitForSingleObject(pCanInfoIST->hInterEvent,INFINITE);
产生中断后驱动中却没有反应,请问这是为什么啊?
我觉得这些设置的没错啊,请兄弟们帮忙了。
...全文
266 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinyu_ha 2007-01-17
  • 打赏
  • 举报
回复
现在发现系统启动之前就给中断信号,加载了我的驱动之后就可以正常响应我的中断ist,系统启动之后就不行了。
xinyu_lj 2007-01-16
  • 打赏
  • 举报
回复
我发现我给了中断信号后返回三条信息

1:61172 PID:e3fd4f66 TID:23f5e63e *---* start sysintr CANhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
2: 61172 PID:e3fd4f66 TID:23f9e002 Prefetch Abort: Thread=83fa3db8 Proc=820290b0 'device.exe'
3: 61173 PID:e3fd4f66 TID:23f9e002 AKY=00000005 PC=01ea1338 RA=01ea1338 BVA=01ea1338 FSR=00000005
第一条是我在OEMInterruptHandler中添加的 表示响应了中断,后两句好像是预取异常的提示,我不知道该怎么解决了。
xinyu_lj 2007-01-15
  • 打赏
  • 举报
回复
不好意思就剩20分了,请大家帮忙了,一定给分
xinyu_lj 2007-01-15
  • 打赏
  • 举报
回复
自己顶一下吧

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧