为什么调用InterruptInitialize总是失败

xinyu_lj 2007-01-09 09:08:29
我现在做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);
前面的几步都没有问题,就是在连接系统中断号和事件的时候失败?
我的其他中断的设置都做了,驱动编译没有问题
请大家帮忙
...全文
397 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinyu_lj 2007-01-11
  • 打赏
  • 举报
回复
谢谢ccyy2002兄弟,现在又出现一个问题
while(1)
{
dwStatus=WaitForSingleObject(Can_hEvent,INFINITE);
if(dwStatus==WAIT_OBJECT_0)
{
RETAILMSG(1,(TEXT("CAN:interrupt_okdsffgdgdgdfgaaaaaaaaaaaaaaaaaaaa")));
InterruptDone(SYSINTR_CAN);
}
}
我在线程里面等待中断触发,可是我还没有给中断信号中断就触发了,并且调用了oal层的
OEMInterruptHandler函数,这是为什么啊,而且电路上我也没有发现什么问题?
xinyu_lj 2007-01-10
  • 打赏
  • 举报
回复
ist能响应了,是线程优先级的问题,我现在把线程优先级设置为250,小于250的都不行,可是我看help说252~255才是开放的,我不知道设成250是不是会对系统有没有影响。
希望大家讨论一下线程优先级的问题。
xinyu_lj 2007-01-10
  • 打赏
  • 举报
回复
我开始是设为挂起的,用ResumeThread(hCanThread)激活线程,可是这样不行啊,我又改成创建后直接激活了
ccyy2002 2007-01-10
  • 打赏
  • 举报
回复
你上面创建的是挂起的线程,到了下面怎么没这么做?应该是挂起,然后由系统中断号来激活吧
xinyu_lj 2007-01-10
  • 打赏
  • 举报
回复
帮帮忙
ccyy2002 2007-01-10
  • 打赏
  • 举报
回复
一般97-152 给基于Windows CE的驱动程序
248-255 是给普通的应用程序用的
xinyu_lj 2007-01-09
  • 打赏
  • 举报
回复
自己顶一下
erichelen 2007-01-09
  • 打赏
  • 举报
回复
帮顶,继续关注!!!正在学习驱动开发中.......
xinyu_lj 2007-01-09
  • 打赏
  • 举报
回复
问题解决了,原来是系统中断号设置的太大了,希望大家不要范同样的错误。
但是又有了一个问题,
hCanThread=CreateThread(NULL,
0,
CanIST,
NULL,
0,
&dwThreadID);
if(hCanThread)
{
RETAILMSG(1,(TEXT("CANTHREAT:CREATETHREAD_OKhhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
}
提示说CreateThread成功,但是我的CanIST并没有执行,这是为什么啊?

19,503

社区成员

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

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