- 4
- 0
- 约1.01万字
- 约 51页
- 2019-09-23 发布于湖北
- 举报
示例 OS_EVENT *TaskQ;void Task(void *pdata){ INT8U err; void *msg; pdata = pdata; for (;;) { msg = OSQPend(TaskQ, 100, err); if (err = = OS_NO_ERR) { . /*在指定时间内接收到消息 要做的事情*/} else { /*在指定的时间内没有接收到指定的消息 要做的事情 */ } }} 说明 如果调用OSQPend()函数时队列中已经存在需要的消息,那么该消息被返回给OSQPend()函数的调用者,队列中清除该消息。 如果调用OSQPend()函数时队列中没有需要的消息,OSQPend()函数挂起当前任务直到得到需要的消息或超出定义的超时时间。 如果同时有多个任务等待同一个消息,μC/OS-Ⅱ默认最高优先级的任务取得消息并且任务恢复执行。 一个由OSTaskSuspend()函数挂起的任务也可以接受消息,但这个任务将一直保持挂起状态直到通过调用OSTaskResume()函数恢复任务的运行。 消息队列的操作 OSQCreate() OSQDel() OSQPend() OSQPost() OSQPostFront() OSQ
原创力文档

文档评论(0)