当前位置: 代码迷 >> 综合 >> ucos-iii学习之消息传递
  详细解决方案

ucos-iii学习之消息传递

热度:63   发布时间:2023-09-19 06:33:05.0

有些情况下任务或 ISR 与另一个任务间进行通信,这种信息交换叫做作业间的通信。可以有两种方法实现这种通信:全局变量、发送消息。
1.消息
消息中包含一个指向数据的指针、该数据的大小、时间戳变量。
消息的内容(即数据)通常保留在其作用域中因为发送的是数的地址而不是数据。
2.消息队列
消息队列是先入先出模式(FIFO)。然而,uC/OS-III 也可以将其设置为后入先出模式(LIFO)。
3.任务的消息队列
很少会见到多个任务同时在一个消息队列中等待。因为这样,uC/OS-III 在任务中内建了一个消息队列。用户可以直接发送消息给任务而不通过外部消息队列。
4.双向通信
两个任务可以通过两个消息队列同步,这叫做双向通信,这两个任务间可能互相发送消息给对方。
5.流量控制
添加流量控制可以解决任务间的通信相互等待的问题。
6.保持数据在作用域
消息通常指向结构体、变量、数组等。然而,数据必须被保持在其作用域(结构体、变量、数组)中直到接收者完成对这些数据的操作。
7.使用消息队列
ucos-iii学习之消息传递
ucos-iii学习之消息传递
8.客户端和服务器端
9.消息队列的组成
消息由四个变量组成:指向下一条消息的指针、用于表明该消息所指向数据的大小的变量、存放消息最后一次被提交的时间戳的变 量、消息中包含一个指向实际数据的指针。