您的位置:首页 > 其它

ucos-iii学习之消息传递

2017-10-01 17:47 1646 查看
有些情况下任务或 ISR 与另一个任务间进行通信,这种信息交换叫做作业间的通信。可以有两种方法实现这种通信:全局变量、发送消息。

1.消息

消息中包含一个指向数据的指针、该数据的大小、时间戳变量。

消息的内容(即数据)通常保留在其作用域中因为发送的是数的地址而不是数据。

2.消息队列

消息队列是先入先出模式(FIFO)。然而,uC/OS-III 也可以将其设置为后入先出模式(LIFO)。

3.任务的消息队列

很少会见到多个任务同时在一个消息队列中等待。因为这样,uC/OS-III 在任务中内建了一个消息队列。用户可以直接发送消息给任务而不通过外部消息队列。

4.双向通信

两个任务可以通过两个消息队列同步,这叫做双向通信,这两个任务间可能互相发送消息给对方。

5.流量控制

添加流量控制可以解决任务间的通信相互等待的问题。

6.保持数据在作用域

消息通常指向结构体、变量、数组等。然而,数据必须被保持在其作用域(结构体、变量、数组)中直到接收者完成对这些数据的操作。

7.使用消息队列





8.客户端和服务器端

9.消息队列的组成

消息由四个变量组成:指向下一条消息的指针、用于表明该消息所指向数据的大小的变量、存放消息最后一次被提交的时间戳的变 量、消息中包含一个指向实际数据的指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据