4.5消息队列及其操作
4.5.1消息队列
(1)使用消息队列可在任务之间传递多条消息。
(2)消息队列由三部分组成:事件控制块、消息队列和消息。
1.消息指针数组
(1)消息队列的核心是消息数组指针。
(2) 消息队列主要参数:
2.队列控制块
(1)为了对消息指针数组进行有效的管理,ucos-II把消息指针数组的基本参数都记录在一个叫做队列控制块的结构中。
4.5.2消息队列的操作
1.创建消息队列
(1)调用函数:OSQCreate()
原型:OS_EVENT OSCreate(
void *start, //指针数组地址
INT16U size //数组长度
)
2.请求消息队列
(1)OSQPend(
OS_EVENT *pevent, //所请求消息队列的指针
INT16U timeout, //等待时限
INT8U * err //错误信息
)
(2)函数返回值为消息指针。
(3)pevent: 要访问的消息队列事件控制块的指针。
3.向消息队列发送消息
(1)函数原型:
INT8U OSQPost(
OS_EVENT * pevent, //消息队列的指针
void *msg //消息指针
);
4.清空消息队列
INT8U OSQFlush(
OS_EVENT * pevent //消息队列指针
)
5.删除消息队列
OS_EVENT * OSQDel(
OS_EVENT * pevent //消息队列指针
)
6.查询消息队列
INT8U OSQQuery(
OS_EVENT * pevent, //消息队列指针
OS_Q_DATA * pdata //存放状态信息的结构
);