前言
UCOSIII实时操作系统------消息队列
提示:以下是本篇文章正文内容,下面案例可供参考
一、概述
“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源头发送到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
消息队列常用于数据的传输,等待消息队列成功后,得到的是消息内容指针。
二、函数接口
1.创建消息队列
代码如下(示例):
void OSQCreate (OS_Q *p_q,
CPU_CHAR *p_name,
OS_MSG_QTY max_qty,
OS_ERR *p_err)
参数:
p_q,消息队列对象
p_name,消息队列的名字
max_qty,消息队列支持多少条消息
p_err,返回错误码,没有错误的就返回OS_ERR_NONE
2.等待消息
代码如下(示例):
void *OSQPend (OS_Q *p_q,
OS_TICK timeout,
OS_OPT opt,
OS_MSG_SIZE *p_msg_size,
CPU_TS *p_ts,
OS_ERR *p_err)
参数:
p_q,消息队列对象
timeout,超时时间,默认写0,一直等待
opt,设置当前等待互斥锁的阻塞方式,默认写OS_OPT_PEND_BLOCKING,阻塞等待
p_msg_size,消息的大小
p_ts,用于记录等待消息花了多长时间,默认写NULL,不记录。
p_err,返回错误码,没有错误的就返回OS_ERR_NONE
返回值:
NULL,没有接收到消息
非NULL,指向消息内容
注意:
等待消息且使用完毕后,需将消息内容清空,否则在后续的使用可能出现问题。
3.发送消息
代码如下(示例):
void OSQPost (OS_Q *p_q,
void *p_void,
OS_MSG_SIZE msg_size,
OS_OPT opt,
OS_ERR *p_err)
参数:
p_q,消息队列的对象
p_void,消息的内容
msg_size,消息的大小
opt,OS_OPT_POST_FIFO+OS_OPT_POST_ALL(发送给所有等待消息的任务)或许OS_OPT_POST_FIFO
p_err,返回错误码,没有错误的就返回OS_ERR_NONE
总结
以上就是今天要讲的内容,本文仅仅简单介绍了UCOSIII实时操作系统------消息队列的使用,而UCOSIII实时操作系统还有更多的功能等着我们去挖掘,其他内容请移步博主其他文章或关注博主等待后续发布。