4138|2

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

UCOS-II的信号量问题 [复制链接]

 我用单片机移植UCOS-II创建了信号量后,不使用OSTaskQuery的时候OSSemPend和OSSemPost都可以正常调用,返回值都是OS_NO_ERR
杂个用了OSTaskQuery后OSSemPend和OSSemPost就不动了,返回值为OS_ERR_EVENT_TYPE
搞不懂啊,谁知道哦,帮帮忙 啊

最新回复

主要就是这部分 void        TestTask4 (void * pdata) TASK_REENTRANT        {                                                 OS_SEM_DATA sem_data; printf("Check semaphore:\n");                 err=OSSemQuery(mis5,&sem_data);         if(err==OS_NO_ERR){     printf("MIS4 has been established\n");} OSSemPost(mis5); } void        TestTask9(void * os_pdata) TASK_REENTRANT {     INT8U         err        ;         os_pdata        = os_pdata;         for(;;)         {                 OSSemPend(mis5,0,&err);                    if(err==OS_NO_ERR)        {                 printf ("OS_NO_ERR\n");            }         } } void main (void) {         OSInit();         OSTaskCreate (TestTask4,(void *)0, &TestTask4Stk[63], 4);         OSTaskCreate (TestTask5,(void *)0, &TestTask5Stk[63], 5);         OSTaskCreate (TestTask6,(void *)0, &TestTask6Stk[63], 6);         OSTaskCreate (TestTask7,(void *)0, &TestTask7Stk[63], 7);         OSTaskCreate (TestTask8,(void *)0, &TestTask8Stk[63], 8);         OSTaskCreate (TestTask9,(void *)0, &TestTask9Stk[63], 9);                mis1=OSSemCreate(0);     mis2=OSSemCreate(0);         mis3=OSSemCreate(0);     mis4=OSSemCreate(0);         mis5=OSSemCreate(0);         OSStart(); } 把OS_SEM_DATA改成其他的就可以正常运行   详情 回复 发表于 2009-12-29 13:27
点赞 关注
 

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
贴代码出来看看
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
主要就是这部分
void        TestTask4 (void * pdata) TASK_REENTRANT       
{
                                               
OS_SEM_DATA sem_data;
printf("Check semaphore:\n");

                err=OSSemQuery(mis5,&sem_data);
        if(err==OS_NO_ERR){
    printf("MIS4 has been established\n");}
OSSemPost(mis5);
}
void        TestTask9(void * os_pdata) TASK_REENTRANT
{
    INT8U         err        ;
        os_pdata        = os_pdata;
        for(;;)
        {
                OSSemPend(mis5,0,&err);
                   if(err==OS_NO_ERR)        {
                printf ("OS_NO_ERR\n");
           }
        }
}
void main (void)
{

        OSInit();

        OSTaskCreate (TestTask4,(void *)0, &TestTask4Stk[63], 4);
        OSTaskCreate (TestTask5,(void *)0, &TestTask5Stk[63], 5);
        OSTaskCreate (TestTask6,(void *)0, &TestTask6Stk[63], 6);
        OSTaskCreate (TestTask7,(void *)0, &TestTask7Stk[63], 7);
        OSTaskCreate (TestTask8,(void *)0, &TestTask8Stk[63], 8);
        OSTaskCreate (TestTask9,(void *)0, &TestTask9Stk[63], 9);       
        mis1=OSSemCreate(0);
    mis2=OSSemCreate(0);
        mis3=OSSemCreate(0);
    mis4=OSSemCreate(0);
        mis5=OSSemCreate(0);
        OSStart();
}
把OS_SEM_DATA改成其他的就可以正常运行
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表