打印

多个信号量的使用问题

[复制链接]
1926|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wolf_snow|  楼主 | 2007-1-18 16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位:
    我的COM0、COM1由于用法不同,所以要分开使用,这样也就出现两个任务(Task_Com0、Task_Com1)分别对应COM0、COM1,用来对接收来的数据进行解析,这两个任务平时不执行,只有当有相应的串口数据时才执行,这样也就出现2个不同的信号量。
    我分别在,任务Task_Com0和Task_Com1的任务初始化中建立信号量


    Task_Com0的任务初始化中:
    OS_EVENT  *Sem_Com0;     //定义为全局变量
    Sem_Com0=OSSemCreate(0);

    Task_Com1的任务初始化中:
    OS_EVENT  *Sem_Com1;     //定义为全局变量
    Sem_Com1=OSSemCreate(0);


   然后在
   Task_Com0的任务中等待Sem_Com0信号量 OSSemPend(Sem_Com0);

   Task_Com1的任务中等待Sem_Com1信号量 OSSemPend(Sem_Com1);

   在
   COM0的接收中断中 发送Sem_Com0信号量

   COM1的接收中断中 发送Sem_Com1信号量

//--------问题
   COM0的数据 接收与解析,完全正确,没有问题。
   可是COM1的数据解析任务,不能执行!!!
   调试:
     COM1的接收中断可以进入并且执行,也可以执行到Sem_Com1信号量的发送语句 "OSSemPost(Sem_Com1);"   可是 COM1 的数据解析任务 Task_Com1 不能执行,没有等待到信号量。

    不解!!请各位帮忙,感谢!!






相关帖子

沙发
lhshine| | 2007-2-5 16:35 | 只看该作者

re

看一下你的.h文件,你设置的最大信号量数目是几个
你的com1的数据解析函数是能进去的把?你可以看一下OSSemPend(Sem_Com1)的返回值,大概就知道是什么问题了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

1

粉丝