当前位置: 首页 > article >正文

Freertos--把队列加入队列集

队列集的本质也是队列,只不过里面存放的是“队列句柄”。使用过程如下:

  • 创建队列A,它的长度是n1
  • 创建队列B,它的长度是n2
  • 创建队列集S,它的长度是“n1+n2”
  • 把队列A、B加入队列集S
  • 这样,写队列A的时候,会顺便把队列A的句柄写入队列集S
  • 这样,写队列B的时候,会顺便把队列B的句柄写入队列集S
  • InputTask先读取队列集S,它的返回值是一个队列句柄,这样就可以知道哪个队列有有数据了;然后InputTask再读取这个队列句柄得到数据

FreeRTOS 中队列集:

一、xQueueAddToSet(加入队列集)

参数是传入队列(句柄),队列通过 xQueueAddToSet 加入队列集时,FreeRTOS 会在内部维护一个队列列表(通常是一个链表或数组结构),按照加入的顺序存储队列句柄。

我们需要了解 FreeRTOS 的队列集实现,特别是 xQueueSelectFromSet 如何选择就绪队列。

二、xQueueSelectFromSet(选择就绪队列

xQueueSelectFromSet 在选择就绪队列时,会按照加入队列集的顺序遍历队列列表,检查每个队列的状态。

具体来说:

它从队列集的第一个成员(最先加入的队列)开始,检查是否就绪(例如,是否有数据可读)。

如果第一个队列就绪,返回其句handle

如果第一个队列未就绪,继续检查下一个队列,直到找到一个就绪队列,或者遍历完所有队列。

MPU6050为例

一、首先在MX_FREERTOS_Init里面初始化,创建队列(g_xQueueMPU6050)

二、然后会在自己的(mpu6050)文件中去把数据放到队列(g_xQueueMPU6050)

三、再创建队列集,读取到句柄,将句柄写入到队列集

以后,在选择就绪队列时,xQueueSelectFromSet会按照加入队列集的顺序遍历队列列表,检查每个队列的状态。

接下来xQueueSelectFromSet函数来处理队列集,检查每个队列的状态。队列就绪,返回其句handle

接下来就执行函数了:

最后放入最终的队列g_xQueuePlatform


http://www.kler.cn/a/587114.html

相关文章:

  • 使用tiptap快速搭建markdown-富文本编辑器
  • 电路基础【2】:三极管基础:PNP与NPN三极管详解
  • FPGA 中 assign 和 always 区别
  • 2.4滑动窗口专题:将 x 减到 0 的最小操作数
  • 均方误差(MSE)与最小二乘法(LS)的区别
  • 数字孪生像魔镜,映照出无限可能的未来
  • 二进制数(十进制转二进制)
  • 标定棋盘格大小的选择
  • 车载Android音频系统 CarAudioService
  • React 常用 Hooks 详细解析
  • 保持docker内容器一直运行
  • ChatGPT客户端无法在微软应用商店下载的解决方法
  • 生态安全的范式
  • Docker+Flask 实战:打造高并发微服务架构
  • 寄生虫仿生算法:基于寄生虫特征的算法设计
  • 【论文笔记】FLARE:feed-forward+posegeometry estimate+GS
  • RK3588 编译 openssl
  • 备赛蓝桥杯-Python-Day1-基础语法回顾
  • RunningHub:瞄准图形音视频,做AIGC应用共创平台,它有何特点?
  • 面试vue2开发时怎么加载编译速度(webpack)