目录
野火
上面链接
最近工作有点忙,远吗阅读推迟了哈哈
队列又称消息队列
是一种常用于任务间通信的数据结构
能接收来自任务或中断的不固定长度的消息
根据不同的 API 选择传递消息是否存放在自己空间
任务能够从队列里面读取消息
当队列中的消息是空时
当队列中有新消息时
LiteOS 队列特性
队列控制块
usReadWriteableCnt
: 可读或可写的消息数量stReadWriteList
: 可读或可写的消息任务等待链表usQueueState
: 两种状态/**
/**
创建队列
队列中消息头节点 Head 和 消息尾节点 Tail
usReadWriteableCnt[0]
判断是否可读取
usReadWriteableCnt[1]
判断是否可写入
删除队列时
图解:
LiteOS 的消息传输方式有两种
用户可以根据需求选择不同的方式
中断中不允许使用带有阻塞机制的 API,所以中断中,阻塞值均取 0
LiteOS 已经实现了阻塞机制,用户直接使用即可
三种方式:主要参考队列里面是否有消息
不等待:0
读取消息时,队列里面
限时等待:
在规定时间内,消息队列里面
超时
永久等待:LOS_WAIT_FOREVER
读取消息时
三种方式:主要参考队列里面的消息是否满了
不等待:0
写入消息时
限时等待:
写入消息时
超时
永久等待:LOS_WAIT_FOREVER
写入消息时
接口名
描述
LOS_QueueCreate
创建一个消息
LOS_QueueRead
读取指定队列中的数据。(buff里存放的是队列节点的地址)
LOS_QueueWrite
向指定队列写数据。(写入队列节点中的是buff的地址)
LOS_QueueReadCopy
读取指定队列中的数据。(buff里存放的是队列节点中的数据)(预留接口)
LOS_QueueWriteCopy
向指定队列写数据。(写入队列节点中的是buff中的数据)(预留接口)
LOS_QueueWriteHead
向指定队列的头部写数据
LOS_QueueDelete
删除一个指定的队列
LOS_QueueInfoGet
获取指定队列信息
各函数使用可以看源码或者例程
系统可配置的队列资源个数
调用 LOS_QueueCreate 函数时所传入的队列名暂时未使用,作为以后的预留参数。
队列接口函数中的入参数 uwTimeOut 是指相对时间。
LOS_QueueReadCopy 和 LOS_QueueWriteCopy 是一组接口
LOS_QueueRead 和 LOS_QueueWrite 是一组接口,两组接口需要配套使用。
鉴于 LOS_QueueWrite 和 LOS_QueueRead 这组接口实际操作的是数据地址,用户必须保证调用 LOS_QueueRead 获取到的指针所指向内存区域在读队列期间没有被异常修改或释放,否则可能会导致不可预知的后果。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章