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

【RTOS】快速体验FreeRTOS所有常用API(6)事件组

目录

    • 六、事件组
      • 6.1 基本概念
      • 6.2 创建
      • 6.3 设置事件
      • 6.4 等待事件
      • 6.5 实例

六、事件组

该部分在上份代码基础上修改得来,代码下载链接:

https://wwzr.lanzout.com/iihn01la39je

密码:dtr0

该代码尽量做到最简,不添加多余的、不规范的代码。

内容主要包括

  • 事件组的概念、创建、设置事件、等待事件。

最终实现效果:

  • 任务1去设置事件位0,任务2去设置事件位1,任务等待事件位 0 和 1 同时发生。效果:1、2先运行,运行完后3运行。

img

6.1 基本概念

当你在一个多任务系统中需要对多个事件进行同步、通信或控制时,FreeRTOS的事件组(Event Group)就变得非常有用。事件组允许任务等待多个事件中的任何组合,从而实现复杂的同步和通信操作。

应用场景

  • 复杂任务同步:当任务需要等待多个事件中的任何组合时,事件组非常有用。任务可以使用 xEventGroupWaitBits 等待多个事件位的组合,从而实现复杂的条件同步。

6.2 创建

使用 xEventGroupCreate 函数来创建一个事件组。

// 定义事件组句柄
static EventGroupHandle_t g_xEventGroupTest;// 创建事件组
g_xEventGroupTest= xEventGroupCreate();

6.3 设置事件

设置事件位:

使用 xEventGroupSetBits 函数将指定的事件位设置为1。

/* 设置事件组: bit0 */
xEventGroupSetBits(g_xEventGroupTest, (1<<0));

这将设置事件组中对应的事件位。

6.4 等待事件

使用 xEventGroupWaitBits 函数等待指定的事件位被设置为1。

xEventGroupWaitBits(xEventGroup, xBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait);
/*
xEventGroup         事件组句柄
uxBitsToWaitFor     等待哪些位
xClearOnExit        等待完成后是否清除事件位 pdTRUE: 清除uxBitsToWaitFor指定的位 pdFALSE: 不清除
xWaitForAllBits     and还是or? pdTRUE: 等待的位,全部为1; pdFALSE: 等待的位,某一个为1即可
xTicksToWait        如果期待的事件未发生,阻塞多久。若为0,则立即返回;若为portMAX_DELAY,则无限等待。
*/

示例:

/* 等待事件:bit0 and bit1 */
xEventGroupWaitBits(g_xEventGroupTest, (1<<0)|(1<<1), pdTRUE, pdTRUE, portMAX_DELAY);

6.5 实例

创建

img

设置、等待

img

相关文章:

【RTOS】快速体验FreeRTOS所有常用API(6)事件组

目录 六、事件组6.1 基本概念6.2 创建6.3 设置事件6.4 等待事件6.5 实例 六、事件组 该部分在上份代码基础上修改得来&#xff0c;代码下载链接&#xff1a; https://wwzr.lanzout.com/iihn01la39je 密码:dtr0 该代码尽量做到最简&#xff0c;不添加多余的、不规范的代码。 内容…...

Springboot开发的大学生寝室考勤系统刷脸进出宿舍系统论文

摘要 近年来随着社会科学技术的全面进步及高等教育的普及&#xff0c;以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期&#xff0c;学生作为预备的高新技术人才数量也在急剧上升&#xff0c;随之而来的就是高校管理上的一系列问题&#xff0c;首当其冲的便是高校应对…...

2024年美赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…...

测试覆盖率 之 Cobertura的使用

什么是代码覆盖率&#xff1f; 代码覆盖率是对整个测试过程中被执行的代码的衡量&#xff0c;它能测量源代码中的哪些语句在测试中被执行&#xff0c;哪些语句尚未被执行。 为什么要测量代码覆盖率&#xff1f; 众所周知&#xff0c;测试可以提高软件版本的质量和可预测性。…...

vue表格插件vxe-table导出 excel

vxe-table 默认支持导出 CSV、HTML、XML、TXT格式的文件&#xff0c;不支持 xlsx 文件 要想导出 xlsx 文件&#xff0c;需要使用 vxe-table-plugin-export-xlsx 依赖 参考&#xff1a;https://cnpmjs.org/package/vxe-table-plugin-export-xlsx/v/2.1.0-beta 1.安装 npm inst…...

stable diffusion使用相关

IP Adapter&#xff0c;我愿称之它为SD垫图 IP Adapter是腾讯lab发布的一个新的Stable Diffusion适配器&#xff0c;它的作用是将你输入的图像作为图像提示词&#xff0c;本质上就像MJ的垫图。 IP Adapter比reference的效果要好&#xff0c;而且会快很多&#xff0c;适配于各种…...

Center项目创建——数据初始化(Linux/Windows版本)

本博客主要讲述Center的模块安装配置和数据初始化 1、定义安装Install函数&#xff0c;IP地址由makefile自动传入&#xff0c;也就是用户自动传入 bool Install(std::string ip); 2、编写Install函数 #define CENTER_CONF "ip bool XCenter::Install(std::string ip)…...

保送阿里云的云原生学习路线

近期好多人都有咨询学习云原生有什么资料。与其说提供资料不如先说一说应该如何学习云原生。 Linux基础知识&#xff1a;云原生技术通常在Linux环境中运行&#xff0c;因此建议首先掌握Linux的基础知识&#xff0c;包括命令行操作、文件系统、权限管理等。 容器化技术&#x…...

【昕宝爸爸小模块】深入浅出之JDK21 中的虚拟线程到底是怎么回事(二)

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你&#x1f44d;点赞、&#x1f5c2;️收藏、加❤️关注哦。 本文章CSDN首发&#xff0c;欢迎转载&#xff0c;要注明出处哦&#xff01; 先感谢优秀的你能认真的看完本文&…...

两周掌握Vue3(三):全局组件、局部组件、Props

文章目录 一、全局组件1.创建全局组件2.在main.js中注册全局组件3.使用全局组件 二、局部组件1.创建局部组件2.在另一个组件中注册、使用局部组件 三、Props1.定义一个子组件2.定义一个父组件3.效果 代码仓库&#xff1a;跳转 本博客对应分支&#xff1a;03 一、全局组件 Vue…...

Web前端篇——element-plus组件设置全局中文

背景&#xff1a;在使用el-date-picker组件时&#xff0c;发现组件中的文字默认都是英文。 设置全局中文的方法如下&#xff1a;&#xff08;本文只介绍CDN方式&#xff09; <script src"//unpkg.com/element-plus/dist/locale/zh-cn"></script> <s…...

【iOS】数据存储方式总结(持久化)沙盒结构

在iOS开发中&#xff0c;我们经常性地需要存储一些状态和数据&#xff0c;比如用户对于App的相关设置、需要在本地缓存的数据等等&#xff0c;本篇文章将介绍六个主要的数据存储方式 iOS中数据存储方式&#xff08;数据持久化&#xff09; 根据要存储的数据大小、存储数据以及…...

硬盘重新分区怎么恢复分区之前的文件?

分区是常见的故障&#xff0c;通常由多种原因引起。一方面&#xff0c;硬盘老化或者受到损坏可能会导致分区表出现问题&#xff1b;另一方面&#xff0c;用户误操作&#xff0c;如格式化或分区不当&#xff0c;也可能导致分区丢失。针对此问题&#xff0c;解决方法包括使用专业…...

C++每日一练(15):简单幂计算

题目描述 输入两个数a和b&#xff0c;求a的b次方。 输入 输入两个整数a&#xff0c;b&#xff08;1<a<10&#xff0c;1<b<15&#xff09;。 输出 输出一个正整数&#xff0c;该值<1000000000000。 输入样例 3 3 输出样例 27 参考答案 #include<bits/stdc.h&…...

扫雷游戏【可展开一片,超详细,保姆级别,此一篇足够】

一、C语言代码实现的扫雷游戏的运行 C语言实现扫雷 二、扫雷游戏的分析与设计 1.扫雷游戏的界面设计 在玩家玩扫雷的时候&#xff0c;它会给你一个二维的棋盘&#xff08;下面的讲解都以9x9规格为例子&#xff09;&#xff0c;然后点击你想排查的坐标&#xff0c;若不是雷的&…...

鸿蒙开发-DevEco Studio Profiler工具进行帧率分析

Frame Profiler概述 DevEco Studio内置Profiler分析调优工具&#xff0c;其中Frame分析调优功能&#xff0c;用于录制GPU数据信息&#xff0c;录制完成展开之后的子泳道对应录制过程中各个进程的帧数据&#xff0c;主要用于深度分析应用或服务卡顿丢帧的原因。此外&#xff0c…...

Google推出Telecom Jetpack库,让Android通话应用创建更简单

Google推出Telecom Jetpack库&#xff0c;让Android通话应用创建更简单 Telecom Jetpack库的最新Alpha版本已经推出。该库提供了多个API&#xff0c;以简化Android开发者创建语音和/或视频通话应用程序的过程&#xff0c;支持常见功能&#xff0c;例如接听/拒绝、音频路由等等…...

倒计时1天|解锁「PolarDB开发者大会」正确打开方式

1月17日 9:30-16:30 北京嘉瑞文化中心 PolarDB开发者大会 明天就要和大家就见面啦&#xff5e; 大会参会指南现已出炉 各位开发者们&#xff0c;请查收~ &#x1f447;&#x1f447;&#x1f447; 点击 大会主页 or 扫描上方二维码 一键抵达大会官网&#x1f447; 查看…...

链表-两两交换链表中的节点

给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后的链表。 你不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进行节点交换。 // 递归版本 class Solution {public ListNode swapPairs(ListNode head) {// base case 退出提交if(head nu…...

vue下载文件流效果demo(整理)

在 Vue 项目中&#xff0c;你可以使用 FileSaver.js 库来方便地下载文件流。FileSaver.js 封装了不同浏览器的下载方式&#xff0c;使得下载文件更加简单和兼容。以下是一个完整的示例方法&#xff1a; 首先&#xff0c;安装 FileSaver.js 库&#xff1a; <template>&l…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...