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

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

相关文章:

  • JumpServer基础功能介绍演示
  • Flexus应用服务器L实例、X实例以及ECS(弹性计算服务)之间的区别及其适用场景
  • PostgreSQL数据库版本支持策略
  • C++ STL算法函数 —— 应用及其操作实现
  • Ubuntu 24 常用命令方法
  • ngx_conf_read_token
  • 博客网站(springboot)整合deepseek实现在线调用
  • keil引入头文件报错的问题
  • 代码随想录算法训练营第31天 | 56. 合并区间 738.单调递增的数字 968.监控二叉树
  • 玩转python:通俗易懂掌握高级数据结构-collections模块之ChainMap
  • SpringMVC(四)Restful软件架构风格
  • 吴恩达机器学习笔记复盘(五)均方误差函数
  • 基恩士PLC编程小技巧八:脚本过长如何实现换行及替换
  • 并发编程2
  • 【java】网络编程——IP
  • Vue 中 this 使用指南与注意事项
  • 音视频入门基础:RTP专题(19)——FFmpeg源码中,获取RTP的音频信息的实现(下)
  • 约瑟夫环(1+2)
  • 【JVM】GC 常见问题
  • Python Cookbook-4.3 若列表中某元素存在则返回之
  • 净海护渔,中国海警局直属第一局开展伏季休渔普法宣传活动
  • 5月起,这些新规将施行
  • 宁波市纪委监委通报4起违反中央八项规定精神典型问题
  • 特朗普执政百日集会吹嘘政绩,美国消费者信心指数跌至疫情以来最低
  • 蔡澜回应“入ICU观察”称未至于病危,助理:只是老毛病
  • 大学男生被捉奸后将女生推下高楼?桂林理工大学辟谣