UCOS-II的信号量问题

wtliubei 2009-12-29 01:07:03
我用单片机移植UCOS-II创建了信号量后,不使用OSTaskQuery的时候OSSemPend和OSSemPost都可以正常调用,返回值都是OS_NO_ERR
杂个用了OSTaskQuery后OSSemPend和OSSemPost就不动了,返回值为OS_ERR_EVENT_TYPE
搞不懂啊,谁知道哦,帮帮忙 啊
...全文
109 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtliubei 2009-12-29
  • 打赏
  • 举报
回复
主要就是这部分
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改成其他的就可以正常运行
Arnold9009 2009-12-29
  • 打赏
  • 举报
回复
贴代码出来看看

27,382

社区成员

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

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