UCOS-II操作系统
274-μC/OS-II:实时操作系统内核
OSMboxPend( )
Void *OSMboxPend ( OS_EVNNT *pevent, INT16U timeout, int8u *err );
所属文件 调用者 开关量
OS_MBOX_EN 任务
OSMboxPend()用于任务等待消息。消息通过中断或另外的任务发送给需要的任务。消息是一OS_MBOX.C
个以指针定义的变量,在不同的程序中消息的使用也可能不同。如果调用数时消息邮箱已经存在需要的消息,那么该消息被返回给OSMboxPend箱中清除该消息。如果调用OSMboxPend()函数时消息邮箱中没有需要的消息,()函数挂起当前任务直到得到需要的消息或超出定义等待超时的时间。如果同时有多个任务等待同一个消息,μC/OS-Ⅱ默认最高优先级的任务取得消息并且任务恢复执行。一个由OSTaskSuspend()函数挂起的任务也可以接受消息,但这个任务将一直保持挂起状态直到通过调用OSTaskResume()函数恢复任务的运行。
参数
pevent 是指向即将接受消息的消息邮箱的指针。该指针的值在建立该消息邮箱时可以得到。(参考OSMboxCreate()函数)。
Timeout 允许一个任务在经过了指定数目的时钟节拍后还没有得到需要的消息时恢复运行果该值为零表示任务将持续的等待消息。最大的等待时间为65,535个时钟节拍。这个时间长度并不是非常严格的,可能存在一个时钟节拍的误差,因为只有在一个时钟节拍结束后才会减少定义的等待超时时钟节拍。
Err 是指向包含错误码的变量的指针。OSMboxPend()函数返回的错误码可能为下述几种: OS_NO_ERR :消息被正确的接受。
OS_TIMEOUT :消息没有在指定的周期数内送到。
OS_ERR_PEND_ISR :从中断调用该函数。虽然规定了不允许从中断调用该函数,但μ
C/OS-Ⅱ仍然包含了检测这种情况的功能。
OS_ERR_EVENT_TYPE :pevent 不是指向消息邮箱的指针。
返回值
OSMboxPend()函数返回接受的消息并将 *err置为OS_NO_ERR。如果没有在指定数目的时钟节拍内接受到需要的消息,OSMboxPend()函数返回空指针OS_TIMEOUT。
注意/警告
必须先建立消息邮箱,然后使用。 不允许从中断调用该函数。
OSMboxPend()函OSMboxPend。如 且将 *err设置为()的调用者,消息邮并
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新IT计算机UCOS-II操作系统第11章(13)全文阅读和word下载服务。
相关推荐: