【freeRTOS】操作系统之四-事件标志组

news2025/8/13 14:38:00

事件标志组是实现多任务同步的有效机制之一。

​ 搞个全局变量不是更简单?其实不然,在裸机编程时,使用全局变量的确比较方便,但是在加上 RTOS 后就是另一种情况了。 使用全局变量相比事件标志组主要有如下三个问题:
 使用事件标志组可以让 RTOS 内核有效地管理任务,而全局变量是无法做到的,任务的超时等机制需要用户自己去实现。
 使用了全局变量就要防止多任务的访问冲突,而使用事件标志组则处理好了这个问题,用户无需担心。
 使用事件标志组可以有效地解决中断服务程序和任务之间的同步问题。

​ 任务间事件标志组的实现是指各个任务之间使用事件标志组实现任务的通信或者同步机制。
下面我们来说说 FreeRTOS 中事件标志的实现,根据用户在 FreeRTOSConfig.h 文件中的配置:
 #define configUSE_16_BIT_TICKS 1

配置宏定义 configUSE_16_BIT_TICKS 为 1 时,每创建一个事件标志组,用户可以使用的事件标志是8 个。
 #define configUSE_16_BIT_TICKS 0

配置宏定义 configUSE_16_BIT_TICKS 为 0 时,每创建一个事件标志组,用户可以使用的事件标志是24 个。
上面说的 8 个和 24 个事件标志应该怎么理解呢?其实就是定义了一个 16 位变量,仅使用了低 8bit
或者定义了一个 32 位变量,仅使用了低 24bit。每一个 bit 用 0 和 1 两种状态来代表事件标志。 反映到
FreeRTOS 上就是将事件标志存储到了 EventBits_t 类型的变量中。

img

  #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

事件标志组 API 函数
使用如下 11 个函数可以实现 FreeRTOS 的事件标志组:
 xEventGroupCreate()
 xEventGroupCreateStatic()
 vEventGroupDelete()
 xEventGroupWaitBits()
 xEventGroupSetBits()
 xEventGroupSetBitsFromISR()
 xEventGroupClearBits()
 xEventGroupClearBitsFromISR()
 xEventGroupGetBits()
 xEventGroupGetBitsFromISR()
重点4 个函数:
 xEventGroupCreate()
 xEventGroupWaitBits()
 xEventGroupSetBits()
 xEventGroupSetBitsFromISR()

传送门:
【freeRTOS】操作系统之一-任务调度
【freeRTOS】操作系统之二-队列
【freeRTOS】操作系统之三-信号量
【freeRTOS】操作系统之四-事件标志组
【freeRTOS】操作系统之五.-内存管理
【freeRTOS】操作系统之六-低功耗模式
【freeRTOS】操作系统之七-freeRtos移植

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

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

相关文章

人工智能 AI 绘画 AI绘制的图片 ? 简介的版权,以及如何使用图像生成AI 绘画 ?

人工智能 AI 绘画 AI绘制的图片 ? 简介的版权,以及如何使用图像生成AI 绘画 ? 我认为,许多人认为工作的绘画是人类独有的。 然而,在最新的,大赦国际还可以在工作的绘画和绘画创作大赦国际已经生一个接一个。和有些人感到惊奇的…

Docker从入门到精通,一文详解

一、Docker简介 1、背景 物理机时代 一个物理机上安装操作系统,然后直接运行我们的软件。也就是说你电脑上直接跑了一个软件,并没有开虚拟机什么的,资源极其浪费。 缺点 部署慢成本高 虚拟机都不开,直接上物理机部署应用&#x…

libusb系列-006-Qt下使用libusb1.0.9源码

libusb系列-006-Qt下使用libusb1.0.9源码 文章目录libusb系列-006-Qt下使用libusb1.0.9源码摘要添加宏添加源文件编译文件测试libusb工程源码关键字: Debian、 Linux、 Qt、 libusb、 源码内容背景: 最近项目终于切到Linux下开发了,所以最近的…

生产者消费者问题实践(头歌实验)第1关:生产者消费者问题实践,第2关:进程互斥和同步。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 题目: 第1关:生产者消费者问题实践 任务: 相关知识 代码: 效果截图: 第2关:进程互斥和同步…

Linux的命令行

命令行的格式 command [-options] [parameter] options和parameter并不是每一个的命令都需要的 ls命令 直接的ls 查看当前文件目录下的所有文件以及文件夹 ls -a 查看所有的同时,查看隐藏的文件,在Linux中以.开头的文件都会被隐藏起来 ls -l 以…

【Java学习笔记】第四章 面向对象编程三部曲(上)

【Java学习笔记】第四章 面向对象编程三部曲(上) 【Java学习笔记】第四章 面向对象编程三部曲(中) 【Java学习笔记】第四章 面向对象编程三部曲(下) 文章目录4.面向对象编程(上)4.…

Kafka 插件并创建 Kafka Producer 发送

相关说明 启动测试前清空所有数据。每次测试先把所有数据写入 Kafka,再加载 Kafka 插件同步数据到 DolphinDB 中。目的是将同步数据的压力全部集中到 Kafka 插件。以 Kafka 插件从收到第一批数据到收到最后一批数据的时间差作为同步数据的总耗时。 测试流程 加载 …

公网远程连接内网Everything实现快速搜索私有云文件

企业外派出差,已经是稀松平常的事,通常出差的同事都会带一个优盘或移动硬盘。但优盘和硬盘是离线设备,所存储的文件数据无法及时更新,因此能够连接公司主机获得最新文件才是出差的首选。可是公司主机位于内网,且面对浩…

【搭建NextCloud私有云盘服务】采用docker在linux上进行部署,内含nextCloud移植(迁移服务器)方法

1、前言 完成的效果: 在linux上搭建NextCloud云盘服务,可以通过域名访问到云盘服务,并且安装有SSL证书,可进行https访问。 例如: 服务器公网ip为47.110.66.88 域名为:test.huahua.com 可直接通过访问https…

Java#10(String 类的构造方法和练习)

目录 一.String类的构造方法 1.public String()空参构造 2.public String(char[ ] ch2);(对堆区已有的值没有办法复用,数据多会浪费内存空间,而直接赋值如果已有相同数据可以复用,不会在浪费太多内存) 3.public String(byte[ ] bytes) 二.字符串的比较 1.前提基础: 比较…

解决使用svg绘制后下载图片以及下载svg内部嵌套image图片失败的问题。

在使用svg进行图形绘制之后&#xff0c;可能需要下载已经绘制的svg图片&#xff0c;我们可能会遇到以下两种情况&#xff1a; 情况1&#xff1a; <svg width"640" height"400" xmlns"http://www.w3.org/2000/svg" id"svgColumn">…

解决问题 - 错误:不支持发行版本 5

文章目录一、提出问题二、解决问题&#xff08;一&#xff09;设置项目SDK与语言等级&#xff08;二&#xff09;设置模块语言等级&#xff08;三&#xff09;设置Java编译器等级&#xff08;四&#xff09;运行程序&#xff0c;测试问题是否已解决一、提出问题 基于JDK11创建…

阿里Redis最全面试全攻略,读完这个就可以和阿里面试官好好聊聊

简述Redis常用的数据结构及其如何实现的&#xff1f; Redis支持的常用5种数据类型指的是value类型&#xff0c;分别为&#xff1a;字符串String、列表List、哈希Hash、集合Set、有序集合Zset&#xff0c;但是Redis后续又丰富了几种数据类型分别是Bitmaps、HyperLogLogs、GEO。…

年搜索量超 7 亿次背后:这款 APP 用火山引擎 DataTester 完成“数据驱动”

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 双十一刚过&#xff0c;双十二在即&#xff0c;随着线上营销玩法的层出不穷&#xff0c;各平台之间的价格逐渐“内卷”。消费者对跨平台比价的需求越来越强烈&#…

【实时语音转文本】PC端实时语音转文本(麦克风外音系统内部音源)

语音转文字这个功能可以应用在视频动态字幕&#xff0c;语音快速输入&#xff0c;实时记录通话内容&#xff0c;高级应用可以在人工智能&#xff0c;语音识别&#xff0c;智能助手方面&#xff0c;还需要一点机器学习可以做出一些好玩的东西&#xff0c;比如PC端AI助理&#xf…

给开源项目做一个漂亮简洁的版本迭代更新图,生成固定链接复制到介绍中、公众号菜单链接中、博客中和网页中等

背景 开源项目的版本迭代与更新经常需要更新迭代文档&#xff0c;但是readme.md没有比较美观一点的效果&#xff0c;所以文本分享一种第三方的方式&#xff1a;用TexSpire的免费在线文档分享功能&#xff0c;手机、PC、Pad都可以适配。 效果预览 使用 视频教程 第一步&…

重磅 | 思特威获得ISO 26262:2018汽车功能安全ASIL D流程认证证书

确保安全是汽车制造商和系统供应商的责任。为了从芯片IP级开始解决功能安全问题&#xff0c;国际标准化组织&#xff08;ISO&#xff09;在2018年追加了汽车半导体的功能安全评估指南。 彼时&#xff0c;新车搭载的芯片数量、种类以及软件代码行数开始呈现倍数增长。按照ISO 2…

重磅!华秋电子再次入选“中国产业数字化百强榜”

11月16日&#xff0c;由江苏省商务厅、南京市人民政府指导&#xff0c;南京市商务局主办的江苏电子商务大会暨第九届中国产业数字化年会在南京开幕。 据了解&#xff0c;会议上公开发布了“2022中国产业数字化百强榜”&#xff0c;这也是托比网自2015年以来发布的第13个榜单。榜…

ES6解构赋值及ES6的一些简写介绍

1、ES6解构赋值&#xff1a; ● 解构赋值&#xff0c;就是快速地从对象或者数组中取出成员的一个语法方式 (1) 解构数组&#xff1a; ● 快速从数组中获取成员 <script>//ES5的方式从数组中获取成员var arr [Jack,Rose,Tom]var a arr[0] //Jackvar b arr[1] //Ro…

实验六 数组(山东建筑大学)

第1关:实验6.1 任务描述 输入3个整数,按由大到小的顺序输出。 输入样例 1 1 2 3 输出样例 1 3 2 1 开始你的任务吧,祝你成功! 第2关:实验6.2 任务描述 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 输入样例 1 2 1 3 4 5 6 7 8 10 9 输…