十六、FreeRTOS之FreeRTOS队列集

本节需要掌握以下内容:

1,队列集简介(了解)

2,队列集相关API函数介绍(熟悉)

3,队列集操作实验(掌握)

一、队列集简介(了解)

一个队列值允许任务间传递的消息为同一数据类型,如果需要在任务间传递不同数据类型消息时,那么就可以使用队列集!

作用:用于对多个队列或信号量进行“监听”,其中不管哪一个消息到来,都可以让任务退出阻塞状态。

假设:有个接收任务,使用到队列接收和信号量的获取,如下:

,队列集相关API函数介绍(熟悉)

函数

描述

xQueueCreateSet()

创建队列集

xQueueAddToSet()

队列添加到队列集中

xQueueRemoveFromSet()

从队列集中移除队列

xQueueSelectFromSet()

获取队列集中有有效消息的队列

xQueueSelectFromSetFromISR()

在中断中获取队列集中有有效消息的队列

 2.1 创建队列集函数

QueueSetHandle_t     xQueueCreateSet( const  UBaseType_t   uxEventQueueLength );

此函数用于创建队列集。

形参

描述

uxEventQueueLength

队列集可容纳的队列数量

返回值

描述

NULL

队列集创建失败

其他值

队列集创建成功,返回队列集句柄

 2.2 队列添加到队列集中

BaseType_t xQueueAddToSet( QueueSetMemberHandle_t     xQueueOrSemaphore ,

        QueueSetHandle_t     xQueueSet    );

此函数用于往队列集中添加队列,要注意的时,队列在被添加到队列集之前,队列中不能有有效的消息

形参

描述

xQueueOrSemaphore

待添加的队列句柄

xQueueSet

队列集

返回值

描述

pdPASS

队列集添加队列成功

pdFAIL

队列集添加队列失败

2.3 队列集中移除队列

BaseType_t   xQueueRemoveFromSet( QueueSetMemberHandle_t    xQueueOrSemaphore ,
           
QueueSetHandle_t     xQueueSet );

此函数用于往队列集中添加队列,到注意的是,队列在被添加到队列集之前,队列中不能有效的消息

形参

描述

xQueueOrSemaphore

待移除的队列句柄

xQueueSet

队列集

返回值

描述

pdPASS

队列集移除队列成功

pdFAIL

队列集移除队列失败

2.4 获取队列集中有有效消息的队列

QueueSetMemberHandle_t     xQueueSelectFromSet( QueueSetHandle_t   xQueueSet,

                                                        TickType_t const   xTicksToWait )

此函数用于从队列集中移除队列,要注意的是,队列在队列集移除之前,必须没有有效的消息

形参

描述

xQueueOrSemaphore

待移除的队列句柄

xQueueSet

队列集

返回值

描述

pdPASS

队列集移除队列成功

pdFAIL

队列集移除队列失败

2.5  获取队列集中有有效消息的队列

QueueSetMemberHandle_t     xQueueSelectFromSet( QueueSetHandle_t   xQueueSet,

                                                        TickType_t const   xTicksToWait )

 此函数用于在任务中获取队列集中有效消息的队列

形参

描述

xQueueSet

队列集

xTicksToWait

阻塞超时时间

返回值

描述

NULL

获取消息失败

其他值

获取到消息的队列句柄

三、 队列集使用流程

1、启用队列集功能需要将宏configUSE_QUEUE_SETS 配置为1

2、创建队列集

3、创建队列或信号量

4、往队列集中添加队列或信号量

5、往队列发送信息或释放信号量

6、获取队列集的消息

四、队列集操作实验(掌握)

3.1、实验目的:

学习 FreeRTOS 的队列集相关API的使用。

3.2、实验设计:

将设计三个任务:start_task、task1、task2

三个任务的功能如下:

  • start_task:用来创建其它任务,并创建队列集,队列/信号量,将队列/信号量添加到队列集中
  • task1:用于扫描按键,当KEY0按下,往队列写入数据,当KEY1按下,释放二值信号量
  • task2:读取队列集中的消息,并打印

3.3 实验代码

demo.c

代码明天更,今天太晚了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/227347.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

硬件基础:差模和共模

一直以来,都难以理解差模和共模这两个概念,什么差分信号、差模信号、共模信号,差模干扰、共模干扰……虽然看了一些资料,但貌似说法还挺多的,理解起来仍然是一头雾水。所以,专门用一篇文章来好好研究下这个…

Anisble中剧本的应用

1.什么是playbook及playbook的组成 1. Playbook 的功能 playbook 是由一个或多个 play 组成的列表 Playboot 文件使用 YAML 来写的 2. YAML 简介: 是一种表达资料序列的格式 , 类似 XML Yet Another Markup Language 3. 特点 可读性好 和脚本语言…

Java+Swing: 登录和重置按钮的点击事件 整理6

1. 在Login类中给按钮添加事件 // 按钮添加鼠标点击事件loginButton.addActionListener();resetButton.addActionListener(); 2. 创建一个事件处理的类, 该类实现了ActionListener package com.handler;/*** Author:xiexu* Date:2023/12/7 13…

Python面向对象③:封装【侯小啾Python基础领航计划 系列(二十一)】

Python面向对象③:封装【侯小啾Python基础领航计划 系列(二十一)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

simulink enable模块——使能子系统案例仿真分析

1.案例分析 仍以一个简单的乘法增益案例分析 分析:可以看到,在满足条件性才条用使能子系统,在t1s和3s时刻,进行增益操作,这和上篇博客中的触发trigger子系统相同的作用。 simulink trigger模块使用——多种调用案例分…

Pixyz Studio 和 Pixyz Scenario Processor 使用入门

介绍 Pixyz产品官网 下载、安装与技术文档 官网介绍:Pixyz 支持超过 45 种工业文件格式,包括 CATIA、JT、STEP、IFC、PVZ、NWD、USD 及 glTF。包括 CAD、曲面细分/网格模型、点云等。Unity 中的资产将实时关联到原始数据,可自动更新文件的修…

HL7/FHIR 是什么

如果你对上面 2 个单词不熟悉的话,那就需要先脑补下了。 HL7 HL7 可以认为是一个标准化的组织,这个组织主要对标准进行控制。 如果你希望在医疗系统中对数据进行交换,通常 HL7 现在就是事实上的标准了。 FHIR FHIR – Fast Health Inter…

华清远见嵌入式学习——QT——作业1

作业要求&#xff1a; 代码&#xff1a; ①&#xff1a;头文件 #ifndef LOGIN_H #define LOGIN_H#include <QWidget> #include <QLineEdit> //行编辑器类 #include <QPushButton> //按钮类 #include <QLabel> //标签类 #include <QM…

Java 实现TCP一对一聊天,UDP协议实现群聊

用TCP编程实现一对一式聊天&#xff0c;并用多线程解决了处于同一线程中的问题。 客户端代码&#xff1a;mport java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.ut…

c++ - 警告 : treating ‘c-header‘ input as ‘c++-header‘ when in C++ mode, 此行为已弃用

一、问题出现 在进行多文件编译的时候报错 二、原因 我们多文件编译的时候加了头文件 三、解决办法 去掉头文件&#xff0c;只编译源文件

流星雨效果

文章目录 html css实现jscanvas实现 html css实现 对于 HTML 来说&#xff0c;:root 表示 元素&#xff0c;除了优先级更高之外&#xff0c;与 html 选择器相同。带有前缀 – 的属性名&#xff0c;比如 --example–name&#xff0c;表示的是带有值的自定义属性&#xff0c;其…

Threejs项目实战之一:汽车外观换肤效果三维展示

目录 最终效果1 创建项目2 安装插件3 编写代码3.1 准备工作3.2 代码编写3.2.1 在template标签中构建html页面3.2.2 在style标签中构建页面样式文件3.2.3 在script标签中编写js代码 最终效果 先看下最终实现的效果 接下来&#xff0c;我们就从创建项目开始&#xff0c;一步一步…

ChatGPT/GPT4科研实践篇: AI绘图+论文写作+编程

1、熟练掌握ChatGPT提示词技巧及各种应用方法&#xff0c;并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告&#xff0c;提供写作能力及优化工作 3、熟练掌握ChatGPT融合相关插件的应用&#xff0c;完成数据分析、编程以及深度学习等相关科研项目。 4、…

【Windows本地端口占用脚本自动化】

本地启动多个Java微服务&#xff0c;因为停电或者内存回收原因&#xff0c;IDEA直接退出&#xff1b;再次启动各个服务会提示端口占用。 每次都cmd输入命令手动Kill比较繁琐&#xff0c;可以把此脚本放在桌面上作为一个小工具&#xff0c;运行即可。 代码(核心部分是chatGPT自…

k8s中的Pod网络;Service网络;网络插件Calico

Pod网络&#xff1b;Service网络&#xff1b;网络插件Calico Pod网络 在K8S集群里&#xff0c;多个节点上的Pod相互通信&#xff0c;要通过网络插件来完成&#xff0c;比如Calico网络插件。 使用kubeadm初始化K8S集群时&#xff0c;有指定一个参数–pod-network-cidr10.18.0…

【react】动态页面转换成html文件下载,解决样式问题

需求 今天遇到一个需求&#xff0c;挺恶心人的&#xff0c;将一个在线文档页面&#xff0c;可以导出成为html页面查看。 看到网上有使用fs模块&#xff0c;通过react的ReactDOMServer.renderToStaticMarkup将组件转成html字符串&#xff0c;输出文件了。 但是我尝试了&#x…

返回列表中满足指定条件的连续元素:只返回第一个不符合条件元素之前的各元素itertools.takewhile()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 返回列表中满足指定条件的连续元素&#xff1a; 只返回第一个不符合条件元素之前的各元素 itertools.takewhile() [太阳]选择题 请问以下代码输出的结果是&#xff1f; import itertools a …

在VSCode中运行Python脚本文件时如何传参

以下实验所处的操作系统环境说明&#xff1a; OS版本MacOSMonterey 12.1VSCodeOctober 2023 (version 1.84.2) 一、背景 在 VSCode 中写好 Python 脚本后&#xff0c;如果要运行起来&#xff0c;可以怎么做呢&#xff1f; 一般有以下几种方式&#xff1a; 1、直接在 VSCode…

【ARM Trace32(劳特巴赫) 使用介绍 11 -- Trace32 ARMv8/v9 系统寄存器读写】

文章目录 Trace32 ARMv8/v9 系统寄存器读写 Trace32 ARMv8/v9 系统寄存器读写 本文主要介绍如何使用trace32 来对 ARMv8 的系统寄存器及debug 寄存器进行配置&#xff0c;具体配置方法如下&#xff1a; 步骤1&#xff1a; 步骤2&#xff1a; 步骤3&#xff1a; 步骤4&#xf…

商务与经济统计案例分析:3-1Pelican 商店——python 实现

商务与经济统计案例分析:3-1Pelican 商店 要求Python实现 要求 1.净销售额的描述统计量和各种不同类型顾客的净销售额的描述统计量。 2.关于年龄与净销售额之间关系的描述统计量。 Python实现 0.相关分析&#xff1a;2-1案例 1.净销售额的描述统计量和各种不同类型顾客的净销…