发 帖  
原厂入驻New
[问答] UCOS创建的问题如何解决
16 UCOS
分享
请问 原子老师  
我UCOS中创建四个任务    任务1,2,3,4的优先级分别是5 ,6,8,9   ,任务1,2,3,4里面我分别写着
printf("one\n");
printf("two\n");
printf("three\n");
printf("four\n");
但是串口出来 的数据 有时候是顺序的。有时候是 ONE TWO FOUR THREE    不知道为什么   
OStimeDlyHMSM(0,0,0,500); 这个函数都设成了500  不知道这个对它有没有影响 ?  还有这个500是什么作用 ?
0
2020-5-22 14:57:07   评论 分享淘帖 邀请回答
7个回答
正常啊.500是500ms吧.你看看这个函数的原型,就知道参数的意义了.
2020-5-22 13:43:15 评论

举报

2020-5-22 13:58:14 评论

举报

正常如果延时相同的情况下都是500,但优先级不同, 不是优先级高的先执行吗?跟延时函数里的500有关系吗?
2020-5-22 14:06:43 评论

举报

是优先级高的先运行.
但是延时500ms,不是每一次都是严格的500ms,有的可能是500.1,有的可能是500.5(因为中断调度的时间,不能准确预知),那么这个不同步,就可能导致你的那个顺序错乱.
2020-5-22 14:15:27 评论

举报

解了,谢谢原老老师。  真懂了  我刚开始这么想的 但是不敢确认 哈哈 谢谢。
2020-5-22 14:29:27 评论

举报

用这东西最好加入信号量机制
2020-5-22 14:37:17 评论

举报

嗯,控制顺序不能靠优先级,用信号量
2020-5-22 14:44:15 评论

举报

只有小组成员才能发言,加入小组>>

61个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表