阅读:1211回复:4
为什么调用InterruptInitialize总是失败
我现在做can总线的驱动,在中断部分调用InterruptInitialize总是失败,下面是我的代码
hEvent=CreateEvent(0,FALSE,FALSE,NULL); if(hEvent) { RETAILMSG(1,(TEXT("CAN:CreateEvent_okaaaaaaaaaaaaaaaaaaaa"))); } hCanThread=CreateThread(NULL, 0, CanIST, NULL, CREATE_SUSPENDED, &dwThreadID); if(hCanThread) { RETAILMSG(1,(TEXT("CANTHREAT:CREATETHREAD_OKhhhhhhhhhhhhhhhhhhhhhhhhhh\n"))); } else { RETAILMSG(1,(TEXT("CANTHREAT:CREATETHREAD_FALSEhhhhhhhhhhhhhhhhhhhhhhhhhh\n"))); return 0; } dwISTPriority=253; if(!CeSetThreadPriority(hCanThread,dwISTPriority)) { RETAILMSG(1,(TEXT("CeSetThreadPriority Failed!!hhhhhhhhhhhhhhhhhhhhhhhhhh\n"))); } if(!InterruptInitialize(SYSINTR_CAN,hEvent,NULL,0)) { RETAILMSG(1,(TEXT("InterruptInitialize Failed!!hhhhhhhhhhhhhhhhhhhhhhhhhh\n"))); } ResumeThread(hCanThread); 前面的几步都没有问题,就是在连接系统中断号和事件的时候失败? 我的其他中断的设置都做了,驱动编译没有问题 请大家帮忙 |
|
沙发#
发布于:2007-01-09 18:59
问题解决了,原来是系统中断号设置的太大了,希望大家不要范同样的错误。
但是又有了一个问题, hCanThread=CreateThread(NULL, 0, CanIST, NULL, 0, &dwThreadID); if(hCanThread) { RETAILMSG(1,(TEXT("CANTHREAT:CREATETHREAD_OKhhhhhhhhhhhhhhhhhhhhhhhhhh\n"))); } 提示说CreateThread成功,但是我的CanIST并没有执行,这是为什么啊? |
|
板凳#
发布于:2007-01-09 21:03
你的IST是怎么写的,在函数设置断点跟踪一下。
|
|
地板#
发布于:2007-01-10 09:02
static DWORD WINAPI CanIST(PVOID pContext)
{ RETAILMSG(1,(TEXT("CAN:istaaaaaaaaaaaaaaaaaaaa"))); while(1) { WaitForSingleObject(hEvent,INFINITE); RETAILMSG(1,(TEXT("CAN:interrupt_okdsffgdgdgdfgaaaaaaaaaaaaaaaaaaaa"))); InterruptDone(SYSINTR_CAN); } return 0; } 第一条信息就出不来 |
|
地下室#
发布于:2007-01-10 11:47
ist能响应了,是线程优先级的问题,我现在把线程优先级设置为250,小于250的都不行,可是我看help说252~255才是开放的,我不知道设成250是不是会对系统有没有影响。
|
|