第7章任务间的同步与通讯之消息队列.pptVIP

  • 4
  • 0
  • 约1.01万字
  • 约 51页
  • 2019-09-23 发布于湖北
  • 举报

第7章任务间的同步与通讯之消息队列.ppt

示例 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)

1亿VIP精品文档

相关文档