【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运行。

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 实例
创建

设置、等待

相关文章:
【RTOS】快速体验FreeRTOS所有常用API(6)事件组
目录 六、事件组6.1 基本概念6.2 创建6.3 设置事件6.4 等待事件6.5 实例 六、事件组 该部分在上份代码基础上修改得来,代码下载链接: https://wwzr.lanzout.com/iihn01la39je 密码:dtr0 该代码尽量做到最简,不添加多余的、不规范的代码。 内容…...
Springboot开发的大学生寝室考勤系统刷脸进出宿舍系统论文
摘要 近年来随着社会科学技术的全面进步及高等教育的普及,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期,学生作为预备的高新技术人才数量也在急剧上升,随之而来的就是高校管理上的一系列问题,首当其冲的便是高校应对…...
2024年美赛数学建模思路 - 复盘:校园消费行为分析
文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…...
测试覆盖率 之 Cobertura的使用
什么是代码覆盖率? 代码覆盖率是对整个测试过程中被执行的代码的衡量,它能测量源代码中的哪些语句在测试中被执行,哪些语句尚未被执行。 为什么要测量代码覆盖率? 众所周知,测试可以提高软件版本的质量和可预测性。…...
vue表格插件vxe-table导出 excel
vxe-table 默认支持导出 CSV、HTML、XML、TXT格式的文件,不支持 xlsx 文件 要想导出 xlsx 文件,需要使用 vxe-table-plugin-export-xlsx 依赖 参考:https://cnpmjs.org/package/vxe-table-plugin-export-xlsx/v/2.1.0-beta 1.安装 npm inst…...
stable diffusion使用相关
IP Adapter,我愿称之它为SD垫图 IP Adapter是腾讯lab发布的一个新的Stable Diffusion适配器,它的作用是将你输入的图像作为图像提示词,本质上就像MJ的垫图。 IP Adapter比reference的效果要好,而且会快很多,适配于各种…...
Center项目创建——数据初始化(Linux/Windows版本)
本博客主要讲述Center的模块安装配置和数据初始化 1、定义安装Install函数,IP地址由makefile自动传入,也就是用户自动传入 bool Install(std::string ip); 2、编写Install函数 #define CENTER_CONF "ip bool XCenter::Install(std::string ip)…...
保送阿里云的云原生学习路线
近期好多人都有咨询学习云原生有什么资料。与其说提供资料不如先说一说应该如何学习云原生。 Linux基础知识:云原生技术通常在Linux环境中运行,因此建议首先掌握Linux的基础知识,包括命令行操作、文件系统、权限管理等。 容器化技术&#x…...
【昕宝爸爸小模块】深入浅出之JDK21 中的虚拟线程到底是怎么回事(二)
➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你👍点赞、🗂️收藏、加❤️关注哦。 本文章CSDN首发,欢迎转载,要注明出处哦! 先感谢优秀的你能认真的看完本文&…...
两周掌握Vue3(三):全局组件、局部组件、Props
文章目录 一、全局组件1.创建全局组件2.在main.js中注册全局组件3.使用全局组件 二、局部组件1.创建局部组件2.在另一个组件中注册、使用局部组件 三、Props1.定义一个子组件2.定义一个父组件3.效果 代码仓库:跳转 本博客对应分支:03 一、全局组件 Vue…...
Web前端篇——element-plus组件设置全局中文
背景:在使用el-date-picker组件时,发现组件中的文字默认都是英文。 设置全局中文的方法如下:(本文只介绍CDN方式) <script src"//unpkg.com/element-plus/dist/locale/zh-cn"></script> <s…...
【iOS】数据存储方式总结(持久化)沙盒结构
在iOS开发中,我们经常性地需要存储一些状态和数据,比如用户对于App的相关设置、需要在本地缓存的数据等等,本篇文章将介绍六个主要的数据存储方式 iOS中数据存储方式(数据持久化) 根据要存储的数据大小、存储数据以及…...
硬盘重新分区怎么恢复分区之前的文件?
分区是常见的故障,通常由多种原因引起。一方面,硬盘老化或者受到损坏可能会导致分区表出现问题;另一方面,用户误操作,如格式化或分区不当,也可能导致分区丢失。针对此问题,解决方法包括使用专业…...
C++每日一练(15):简单幂计算
题目描述 输入两个数a和b,求a的b次方。 输入 输入两个整数a,b(1<a<10,1<b<15)。 输出 输出一个正整数,该值<1000000000000。 输入样例 3 3 输出样例 27 参考答案 #include<bits/stdc.h&…...
扫雷游戏【可展开一片,超详细,保姆级别,此一篇足够】
一、C语言代码实现的扫雷游戏的运行 C语言实现扫雷 二、扫雷游戏的分析与设计 1.扫雷游戏的界面设计 在玩家玩扫雷的时候,它会给你一个二维的棋盘(下面的讲解都以9x9规格为例子),然后点击你想排查的坐标,若不是雷的&…...
鸿蒙开发-DevEco Studio Profiler工具进行帧率分析
Frame Profiler概述 DevEco Studio内置Profiler分析调优工具,其中Frame分析调优功能,用于录制GPU数据信息,录制完成展开之后的子泳道对应录制过程中各个进程的帧数据,主要用于深度分析应用或服务卡顿丢帧的原因。此外,…...
Google推出Telecom Jetpack库,让Android通话应用创建更简单
Google推出Telecom Jetpack库,让Android通话应用创建更简单 Telecom Jetpack库的最新Alpha版本已经推出。该库提供了多个API,以简化Android开发者创建语音和/或视频通话应用程序的过程,支持常见功能,例如接听/拒绝、音频路由等等…...
倒计时1天|解锁「PolarDB开发者大会」正确打开方式
1月17日 9:30-16:30 北京嘉瑞文化中心 PolarDB开发者大会 明天就要和大家就见面啦~ 大会参会指南现已出炉 各位开发者们,请查收~ 👇👇👇 点击 大会主页 or 扫描上方二维码 一键抵达大会官网👇 查看…...
链表-两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 // 递归版本 class Solution {public ListNode swapPairs(ListNode head) {// base case 退出提交if(head nu…...
vue下载文件流效果demo(整理)
在 Vue 项目中,你可以使用 FileSaver.js 库来方便地下载文件流。FileSaver.js 封装了不同浏览器的下载方式,使得下载文件更加简单和兼容。以下是一个完整的示例方法: 首先,安装 FileSaver.js 库: <template>&l…...
JMeter生产级接口测试实战:从环境配置到链路稳定性保障
1. 这不是又一篇“点点点”的JMeter入门指南,而是你真正能跑通、调得稳、查得清的接口测试实战手册很多人点开“JMeter教程”四个字,心里想的是:“不就是录个脚本、加个线程组、看个聚合报告吗?”——结果一上手,HTTP请…...
ZygiskFrida:安卓逆向的Zygote层动态插桩新范式
1. 这不是“又一个 Frida 模块”,而是安卓逆向工作流的物理层重构你有没有过这样的经历:在一台已 root 的测试机上,想用 Frida hook 一个刚启动的系统服务,结果发现frida-server启动失败,报错Permission denied&#x…...
[智能体-36]:借系统之势,成个人之才——从AI协同逻辑悟职业选择之道
大模型智能体可调用专业工具所展现出来的强大能力表明:大模型个人的能力再强,没有好的管理调度系统和外部执行层的支持,理论水平再博大精深,也只是缸中之脑,空中楼阁,停留在嘴上吹牛,无法有效执…...
量子态估计新突破:超越置乱时间,QELM稳健实现高效信息提取
1. 项目概述 量子态估计,简单来说,就是“看清”一个未知量子系统内部状态的过程。这好比在完全黑暗的房间里,你需要通过有限的光线(测量)来推断房间内物体的精确形状和位置。在量子计算、量子通信和量子传感等领域&…...
dos系统时代
1、蒂姆帕特森 是 “洁净室”方法吗 还是IBM 一、帕特森开发86-DOS:不是“洁净室”,而是“直接参考” 帕特森在1980年开发86-DOS(最初叫QDOS)时,并没有采用“洁净室”这种规避侵权的合法逆向工程方法。 实际上&…...
事件相机预处理芯片:基于混合内存计算的图像恢复与区域提取
1. 项目概述:为事件相机打造一颗“聪明”的本地大脑如果你接触过机器人、自动驾驶或者智能监控,大概率听说过“事件相机”(Event-based Camera),或者更学术一点的名字——神经形态视觉传感器。和咱们手机里每秒拍几十张…...
从收音机到手机充电器:聊聊二极管等效电路在经典电路里的那些‘隐身’角色
从矿石收音机到快充芯片:二极管的七十二变与现代电子革命 清晨的阳光透过老式木窗洒在桌面上,一位无线电爱好者正小心翼翼地调整着矿石收音机的触须。这个看似简单的装置,却藏着电子世界最精妙的秘密——检波二极管。而在城市的另一端&#x…...
面试官问我SQL怎么调优,我直接甩出这套Explain对比法
面试官问我SQL怎么调优,我直接甩出这套Explain对比法 线上系统突然变慢,用户投诉纷至沓来,运维群里消息炸了锅。排查半天,发现罪魁祸首竟然是一条不起眼的SQL语句。这条SQL在测试环境跑得飞快,一到生产环境就像老牛拉破车。相信很多开发者都遇到过这种场景——SQL写的时候…...
taotoken的按token计费模式如何帮助个人开发者控制实验成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken的按Token计费模式如何帮助个人开发者控制实验成本 对于个人开发者、学生或独立研究者而言,在探索AI应用或进行…...
如何在Windows任务栏实时监控硬件性能?TrafficMonitor硬件监控插件完整指南
如何在Windows任务栏实时监控硬件性能?TrafficMonitor硬件监控插件完整指南 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 还在为复杂的系统监控软件烦恼吗…...
