UCOSIII实时操作系统------消息队列
前言
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
