三刷操作系统之一文带你搞懂FreeRTOS——事件标志组

news2025/2/22 21:07:23

1 事件标志组简介

任务间的同步除了信号量还有事件标志组,信号量的同步通常是一对一的同步,有的时候系统需要多对一的同步,信号量就满足不了了,比如同时满足5个按键按下时,任务启动,如果使用信号会很占据资源,所以 RTOS 引入了事件标志组来满足。

1、事件位(事件标志)
事件位用来表明某个事件是否发生,事件位通常用作事件标志,比如下面的几个例子:
● 当收到一条消息并且把这条消息处理掉以后就可以将某个位(标志)置 1,当队列中没有消息需要处理的时候就可以将这个位(标志)置 0。
● 当把队列中的消息通过网络发送输出以后就可以将某个位(标志)置 1,当没有数据需要从网络发送出去的话就将这个位(标志)置 0。
● 现在需要向网络中发送一个心跳信息,将某个位(标志)置 1。现在不需要向网络中发送心跳信息,这个位(标志)置 0。
2、事件组
一个事件组就是一组的事件位,事件组中的事件位通过位编号来访问,同样,以上面列出的三个例子为例:
● 事件标志组的 bit0 表示队列中的消息是否处理掉。
● 事件标志组的 bit1 表示是否有消息需要从网络中发送出去。
● 事件标志组的 bit2 表示现在是否需要向网络发送心跳信息。

3、事件标志组和事件位的数据类型
事件标志组的数据类型为 EventGroupHandle_t,当 configUSE_16_BIT_TICKS 为 1 的时候事件标志组可以存储 8 个事件位,当 configUSE_16_BIT_TICKS 为 0 的时候事件标志组存储 24个事件位。事件标志组中的所有事件位都存储在一个无符号的 EventBits_t 类型的变量中,EventBits_t在 event_groups.h 中有如下定义:

typedef TickType_t EventBits_t;

数据类型 TickType_t 在文件 portmacro.h 中有如下定义:

#if( configUSE_16_BIT_TICKS == 1 )
typedef uint16_t TickType_t;
#define portMAX_DELAY ( TickType_t ) 0xffff
#else
typedef uint32_t TickType_t;
#define portMAX_DELAY ( TickType_t ) 0xffffffffUL
#define portTICK_TYPE_IS_ATOMIC 1
#endif

可以看出当 configUSE_16_BIT_TICKS 为 0 的时候 TickType_t 是个 32 位的数据类型,因此 EventBits_t 也是个 32 位的数据类型。EventBits_t 类型的变量可以存储 24 个事件位,另外的那高 8 位有其他用。事件位 0 存放在这个变量的 bit0 上,变量的 bit1 就是事件位 1,以此类推。对于 STM32 来说一个事件标志组最多可以存储 24 个事件位,如图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.事件的应用场景

FreeRTOS 的事件用于事件类型

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python深度学习实战-基于tensorflow.keras六步法搭建神经网络(附源码和实现效果)

实现功能 第一步:import tensorflow as tf:导入模块 第二步:制定输入网络的训练集和测试集 第三步:tf.keras.models.Sequential():搭建网络结构 第四步:model.compile():配置训练方法 第五…

浅谈关于数据仓库的理解,聊聊数据仓库到底是什么?

不知不觉间,我们的生活中已经充满了数据,各种岗位例如运营、市场、营销上也都喜欢在职位要求加上一条利用数据、亦或是懂得数据分析。事实上,数据已经成为了构建现代社会的基本生产要素,并且因为不受自然环境的限制,已…

小白也会的校园网宽带拨号自动重连设置

开始菜单搜索“任务计划程序”:我这个开始菜单和你们的不太一样,用了StartAllBack设置的,总之能找到这个程序就行了 提示:可以按下“Win R”,打开“运行”,输入taskschd.msc来打开任务计划程序 点击“任务…

1024程序员狂欢节有好礼 | 前沿技术、人工智能、集成电路科学与芯片技术、新一代信息与通信技术、网络空间安全技术

🌹欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 1024程序员狂欢节有好礼 🚩🚩🚩点击直达福利前言一、IT技术 IT Technology《速学Linux:系统应用从入门到精通》《Pytho…

Spring Event

前言 ApplicationEvent 与 ApplicationListener 应用 实现 基于注解 事件过滤 异步事件监听 好处及应用场景 源码阅读 总结 1前言 ApplicationContext 中的事件处理是通过 ApplicationEvent 类和 ApplicationListener 接口提供的。如果将实现了 ApplicationListener …

重磅|博睿数据 Bonree ONE 2023秋季版焕新发布!

2023年10月20日,以「数智融,ONE向新」为主题的 Bonree ONE 秋季产品发布会在深圳圆满落幕。此次发布会上,博睿数据隆重发布新一代一体化智能可观测平台——Bonree ONE秋季正式版,重点升级数据采集、全局拓扑、数据分析、会话回放等…

vue 使用$router.push(参数)跳转同一路由页面,参数不同,跳转页面数据均为最后一次传值数据

问题描述:项目中,使用$router.push(参数)跳转同一路由页面,打开多个tab,数据均为最后一次打开的数据; 1、列表页面 2、从1进入的编辑详情: 3、从2进入的编辑详情: 4、此时1的编辑详情内容也变…

第二届、第三届<火焰杯>软件测试开发选拔赛河北赛区颁奖典礼落幕

河北新闻网讯&#xff08;燕赵都市报纵览新闻记者 张超&#xff09;3月25日下午&#xff0c;第二届、第三届<火焰杯>软件测试开发选拔赛河北赛区颁奖典礼在河北工程技术学院图书馆报告厅隆重举行。 出席典礼的领导及嘉宾有&#xff1a;河北工程技术学院副校长田光、教学…

常用Web安全扫描工具汇整

漏洞扫描是一种安全检测行为&#xff0c;更是一类重要的网络安全技术&#xff0c;它能够有效提高网络的安全性&#xff0c;而且漏洞扫描属于主动的防范措施&#xff0c;可以很好地避免黑客攻击行为&#xff0c;做到防患于未然。 1、AWVS Acunetix Web Vulnerability Scanner&a…

中国大模型开源创新与合作的新篇章 | 2023 CCF中国开源大会

2023年10月21日至22日&#xff0c;由中国计算机学会&#xff08;CCF&#xff09;和开放原子开源基金会联合主办的CCF中国开源大会&#xff08;CCF ChinaOSC&#xff09;在湖南省长沙市北辰国际会议中心成功召开。此次大会以“开源联合&#xff0c;聚力共赢”为主题&#xff0c;…

硬件信息查看工具 EtreCheckpro mac中文版功能介绍

etrecheckpro mac中文版是一款专业的硬件信息查看工具&#xff0c;它能够快速的检测Mac电脑的软硬件信息&#xff0c;加强用户对自己计算机的了解&#xff0c;EtreCheckPro for Mac下载首先会对电脑的软硬件信息进行扫描收集&#xff0c;之后才会显示出来。EtreCheck Mac版报告…

数据结构 哈希表

数据结构 哈希表 文章目录 数据结构 哈希表1. 概念2. 冲突-概念3. 冲突-避免3.1 哈希函数设计3.2 负载因子调节 4.冲突-解决4.1 闭散列4.2 开散列(哈希桶)4.3 哈希桶实现 5. 性能分析6. 和java类集的关系 1. 概念 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间…

k8s----11、service

services 1、概述2、存在的意义2.1 服务发现2.2 负载均衡 3、pod与service的关系4、service 三种类型4.1 、 ClusterIP4.2 、NodePort4.3 、LoadBalancer 1、概述 Service 是 Kubernetes 最核心概念&#xff0c;通过创建 Service,可以为一组具有相同功能的容器应 用提供一个统…

说说腾讯云新用户那些事以及产品首单说明

腾讯云新用户是什么意思&#xff1f;新用户是指从未在腾讯云购买过云产品的用户&#xff0c;新用户可以购买特价服务器你不会不知道吧&#xff1f;一定要珍惜你的新用户资格&#xff0c;因为腾讯云很多优惠价格都是新用户专享的。腾讯云百科txybk.com来详细说下什么是腾讯云新用…

Windows安装cygwin + swoole,并配置crontab定时任务

一、Windows安装cygwin 安装包下载 自行搜索安装包进行下载&#xff0c;目前官网无法打开。官网地址&#xff1a;http://www.cygwin.com/ cygwin安装详细教程 1. 打开安装包&#xff1a;setup-x86_64.exe 2. 点击“下一页”&#xff0c;选择第一种方式后再点击“下一页” 3…

NFTScan | 10.16~10.22 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2023.10.16~ 2023.10.22 NFT Hot News 01/y00ts&#xff1a;迁移回以太坊的跨链桥已上线&#xff0c;将承担第一天所有 Gas 费 10 月 16 日&#xff0c;y00ts 发推称&#xff0c;将 y00…

Etsy店铺防防关联,自养号防关联环境搭建要点

Etsy是美国一个在线销售手工工艺品的网站&#xff0c;主要为客户提供定制化的手工制品和古董收藏品等。同时&#xff0c;该平台还为设计师、工匠和买家提供了一个可靠的交易平台。 在Etsy平台上&#xff0c;用户可以开设店铺&#xff0c;销售各类产品&#xff0c;包括摄影、艺…

halcon 多车牌识别

文章目录 车牌定位字符分割字符识别多张图片 车牌定位 dev_close_window() dev_open_window(0,0,512,400,black,WindowHandle) list_image_files(C:/Users/Augustine/Desktop/车牌照图片,jpg,[],ImageFiles) for i:0 to |ImageFiles|-1 by 1read_image(Image, ImageFiles[i])*…

GoLong的学习之路(一)语法之变量与常量

目录 GoLang变量批量声明变量的初始化类型推导短变量声明匿名变量 常量iota&#xff08;特殊&#xff09;&#xff08;需要重点记忆&#xff09; GoLang go的诞生为了解决在21世纪多核和网络化环境越来越复杂的变成问题而发明的Go语言。 go语言是从Ken Thomepson发明的B语言和…

RPA对财务报表的影响

在企业的财务管理中&#xff0c;财务报表分析能够帮助管理人员及时掌握企业的生产经营状况与财务状况&#xff0c;并为管理人员的科学决策提供财务数据支撑&#xff0c;规避企业经营风险。然而&#xff0c;传统的财务报表准备过程通常是繁琐、耗时和容易出错的&#xff0c;RPA技…