打印

关于UCOS任务同步及通信的问题

[复制链接]
1021|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
oywwen|  楼主 | 2016-7-20 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在看UCOS,但有个问题我一直没想明白,希望大家指点一下。
1.UCOS中,实现多个任务,任意一个到来,都执行本任务怎么实现?
我认为,可以在任务中等待消息/邮箱,任何一个任务到来,都发送一则消息/邮箱,那么当前任务就可以执行。不知道还有没有别的方式
2.多个任务,全到来,才执行本任务又怎么实现
我认为可以在这个任务中,等待任务1到来,再等待任务2到来...任务n,都到来后,才执行本任务来实现。不知道还有没有别的方式


我看消息也好,邮箱也好,它们都是对单一消息、邮箱的等待,怎么样实现对多个任务的等待实现类似于做“与或”判断,再依据判断结果来执行程序?

相关帖子

沙发
JasonWangSE| | 2016-7-20 17:56 | 只看该作者
OSFlagPend

使用特权

评论回复
板凳
oywwen|  楼主 | 2016-7-21 16:36 | 只看该作者
感谢楼上的回复,关于事件标志组,信号,邮箱也好,都可以设定等待时间。
如果我想设定等待时间,然后执行下面的程序,我如何知道是事件到来了,触发我执行下面的程序的,还是因为等待超时了?
因为这两种触发,我想执行不同的代码

使用特权

评论回复
地板
JasonWangSE| | 2016-7-21 17:06 | 只看该作者
oywwen 发表于 2016-7-21 16:36
感谢楼上的回复,关于事件标志组,信号,邮箱也好,都可以设定等待时间。
如果我想设定等待时间,然后执行 ...

*              p_err         is a pointer to an error code and can be:
*
*                                OS_ERR_NONE                The desired bits have been set within the specified 'timeout'
*                                OS_ERR_OBJ_PTR_NULL        If 'p_grp' is a NULL pointer.
*                                OS_ERR_OBJ_TYPE            You are not pointing to an event flag group
*                                OS_ERR_OPT_INVALID         You didn't specify a proper 'opt' argument.
*                                OS_ERR_PEND_ABORT          The wait on the flag was aborted.
*                                OS_ERR_PEND_ISR            If you tried to PEND from an ISR
*                                OS_ERR_PEND_WOULD_BLOCK    If you specified non-blocking but the flags were not
*                                                           available.
*                                OS_ERR_SCHED_LOCKED        If you called this function when the scheduler is locked
*                                OS_ERR_TIMEOUT             The bit(s) have not been set in the specified 'timeout'.

使用特权

评论回复
5
oywwen|  楼主 | 2016-7-21 17:13 | 只看该作者
多谢,明白了,然来有返回值。

使用特权

评论回复
6
oywwen|  楼主 | 2016-7-27 15:06 | 只看该作者
又有新问题,不解
我如下,用cost定义常量
const uint8_t PasscodeConIn = 0x01;
结果编译后,总是不对,我仿真查看这个常的量值,不是1,而是一个其它值0xA0,请问这个是什么原因?
C:\Users\Administrator\Desktop\20160727

使用特权

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

本版积分规则

24

主题

96

帖子

0

粉丝