4240|9

95

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

为什么调用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);
前面的几步都没有问题,就是在连接系统中断号和事件的时候失败?
我的其他中断的设置都做了,驱动编译没有问题
请大家帮忙

最新回复

谢谢ccyy2002兄弟,现在又出现一个问题 while(1)                         {                            dwStatus=WaitForSingleObject(Can_hEvent,INFINITE);                            if(dwStatus==WAIT_OBJECT_0)                            {                               RETAILMSG(1,(TEXT("CAN:interrupt_okdsffgdgdgdfgaaaaaaaaaaaaaaaaaaaa")));                               InterruptDone(SYSINTR_CAN);                            }                         } 我在线程里面等待中断触发,可是我还没有给中断信号中断就触发了,并且调用了oal层的 OEMInterruptHandler函数,这是为什么啊,而且电路上我也没有发现什么问题?  详情 回复 发表于 2007-1-11 09:27
点赞 关注

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮顶,继续关注!!!正在学习驱动开发中.......
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
自己顶一下
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
问题解决了,原来是系统中断号设置的太大了,希望大家不要范同样的错误。
但是又有了一个问题,
hCanThread=CreateThread(NULL,
                  0,
                        CanIST,
                          NULL,
                          0,
                          &dwThreadID);
  if(hCanThread)
     {
        RETAILMSG(1,(TEXT("CANTHREAT:CREATETHREAD_OKhhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
     }
  提示说CreateThread成功,但是我的CanIST并没有执行,这是为什么啊?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
帮帮忙
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

6
 
你上面创建的是挂起的线程,到了下面怎么没这么做?应该是挂起,然后由系统中断号来激活吧
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
我开始是设为挂起的,用ResumeThread(hCanThread)激活线程,可是这样不行啊,我又改成创建后直接激活了
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
ist能响应了,是线程优先级的问题,我现在把线程优先级设置为250,小于250的都不行,可是我看help说252~255才是开放的,我不知道设成250是不是会对系统有没有影响。
希望大家讨论一下线程优先级的问题。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
一般97-152 给基于Windows CE的驱动程序
248-255 是给普通的应用程序用的
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

10
 
谢谢ccyy2002兄弟,现在又出现一个问题
while(1)
                        {
                           dwStatus=WaitForSingleObject(Can_hEvent,INFINITE);
                           if(dwStatus==WAIT_OBJECT_0)
                           {
                              RETAILMSG(1,(TEXT("CAN:interrupt_okdsffgdgdgdfgaaaaaaaaaaaaaaaaaaaa")));
                              InterruptDone(SYSINTR_CAN);
                           }
                        }
我在线程里面等待中断触发,可是我还没有给中断信号中断就触发了,并且调用了oal层的
OEMInterruptHandler函数,这是为什么啊,而且电路上我也没有发现什么问题?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表