首页 > 其他分享 >RTOS中的“大事记”:事件组带你走进并发的奇妙世界!

RTOS中的“大事记”:事件组带你走进并发的奇妙世界!

时间:2023-11-13 14:33:18浏览次数:37  
标签:组带 大事记 RTOS 日记本 myEventGroup 任务 事件 日记

引言: 嘿,RTOS的小伙伴们!你是不是有时候觉得任务之间的沟通有点麻烦,像是在用古老的通信方式?今天我们要介绍的主角是“事件组”——就像是任务之间的私密通信手段,让你的RTOS应用更加轻松愉快!在这次的“大事记”中,我们将探索事件组的神奇之处,揭开它与任务之间的联系!

背景: 在RTOS的大舞台上,任务们需要进行协作,而事件组就像是一场独特的盛宴,让任务们可以通过事件的“秘密握手”来交流。

1. 什么是事件组: 先不要把事件组想得太高大上,它就像是一本共享的“日记本”,任务们可以在上面写写画画,通过对日记本的操作来进行通信。

2. 创建事件组: 要开始使用事件组,得先创建一个,就像是给任务们发一本日记本一样。

// 创建事件组
EventGroupHandle_t myEventGroup = xEventGroupCreate();

3. 任务间“通信”: 任务A想告诉任务B它完成了某个任务,就可以写个“日记”:

// 任务A写日记,表示完成任务
xEventGroupSetBits(myEventGroup, BIT_0);

4. 任务等待事件: 任务B在干其他事情的时候,突然想知道任务A的进度,就可以等待“日记”:

// 任务B等待任务A完成任务
EventBits_t result = xEventGroupWaitBits(myEventGroup, BIT_0, pdTRUE, pdFALSE, portMAX_DELAY);
if ((result & BIT_0) != 0) {
  // 任务A完成任务了!
}

5. 清空“日记”: 任务A完成了任务,不想让任务B再关心,就可以把“日记”清空:

// 任务A清空“日记”
xEventGroupClearBits(myEventGroup, BIT_0);

6. 任务离开,销毁“日记本”: 任务A和任务B离开了,不再需要“日记本”了,就可以销毁它:

// 销毁事件组
vEventGroupDelete(myEventGroup);

7. 多个任务、多个“日记”: 不仅仅可以有一个“日记”,你可以创建多个,每个任务都有自己的“日记本”:

// 创建多个事件组
EventGroupHandle_t eventGroupA = xEventGroupCreate();
EventGroupHandle_t eventGroupB = xEventGroupCreate();

结论: 事件组就像是任务们的私密通道,让它们可以轻松愉快地交流。任务A完成了某个任务?写个“日记”。任务B想知道?等待“日记”。这就是事件组的神奇之处!

RTOS中的事件组,就像是任务们之间的“微信群”,随时可以聊天、分享消息,让整个RTOS的舞台更加热闹有趣。开发者们,让我们一起在并发的世界中畅游,用事件组写下一段段奇妙的“大事记”吧!

标签:组带,大事记,RTOS,日记本,myEventGroup,任务,事件,日记
From: https://blog.51cto.com/u_16192077/8343864

相关文章

  • 市面上主流嵌入式操作系统(RTOS)有哪些?看这11种操作系统
    市面上主流嵌入式操作系统(RTOS)有哪些?看这11种操作系统嵌入式操作系统RTOS2023-03-1316:26广东满足实时控制要求的嵌入式操作系统(RTOS)操作系统,以下介绍11种主流的RTOS,分别为RTX、Vxworks、QNX、NuttX、μClinux、FreeRTOS,而国产的嵌入式操作系统包括都江堰操作系统(d......
  • 1. 手动移植FreeRTOS V9.00到 Stm32F103C8T6
    记录移植过程,以便以后查看:1.使用cubeMAX配置一个工程a.选择单片机型号: b。设置SWD调试,选TIM4作为系统时钟,systick要用来跑freeRTOS c.NVIC默认使用Group4 配置GPIO,我这里配置了两个引脚,作为LED输出 d,RCC都选外部晶振 e。配置时钟树,HCLK72Mhz  f。project......
  • freeRTOS 学习
    一、任务状态任务状态可以分成Running和NotRunning:  但实际的NotRunning状态还有许多的其他状态作为细分。  包括挂起,阻塞和就绪态挂起状态表示该任务虽然已经创建但是在没有进入其他状态时,永远不会运行。阻塞态表示该任务在等待一个事件,在事件到来之前都是阻塞......
  • FreeRTOS(2):队列、信号量、互斥量
    1、队列 1.1数据传输方法任务之间如何传输数据 数据个数互斥措施阻塞-唤醒全局变量1无无环形缓冲区多个无无队列多个有有队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息。为什么不使用全局变......
  • FreeRTOS任务调度
    FreeRTOS任务调度器有哪些功能?FreeRTOS任务调度器具有以下功能:实现并发性和时间确定性:FreeRTOS的任务调度器是实现并发性和时间确定性的核心组件,它使用抢占式调度算法,通过分配优先级来确保高优先级的任务能够在低优先级任务之前执行。动态优先级调整:任务的优先级可以动态地......
  • FreeRTOS 解析
    FreeRTOS解析xidianjunnan 分类专栏:操作系统文章标签:mcu物联网iot————————————————版权声明:本文为CSDN博主「xidianjunnan」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/xidianjunnan/article......
  • 选择实时操作系统(RTOS)的要点详解
    选择实时操作系统(RTOS)的要点详解dy9h127cequf•来源:CSDN-refine19• 2023-05-3009:45 • 561次阅读 • 0个评论对许多嵌入式项目来说,系统设计师都倾向于选择实时操作系统(RTOS)。但RTOS总是必要的吗?答案是取决于具体的应用,因此了解我们要达到什么目标是决定RTOS是必......
  • FreeRTOS深入教程(任务创建的深入和任务调度机制分析)
    (文章目录)前言本篇文章将带大家深入学习任务的创建和分析任务调度的机制。一、深入理解任务的创建创建任务函数原型:BaseType_txTaskCreate(TaskFunction_tpxTaskCode,constchar*constpcName,/*lint!e971Unqualifiedchartypes......
  • FreeRTOS深入教程(队列内部机制和源码分析)
    (文章目录)前言本篇文章主要来为大家分析队列的内部机制和源码实现。一、队列结构体分析在FreeRTOS中队列会使用一个结构体来表示:1.int8_t*pcHead和int8_t*pcWriteTo:这些指针指向队列存储区的头部和下一个可写入的位置。队列存储区是一个用于存储队列中数据项的缓冲......
  • 《安富莱嵌入式周报》第320期:键盘敲击声解码, 军工级boot设计,开源CNC运动控制器,C语言
     视频版:https://www.bilibili.com/video/BV1Cr4y1d7Mp/1、键盘敲击声解码https://arxiv.org/abs/2308.01074键盘敲击声被解码的话,我们使用键盘输入密码将被方便的解码出来。这篇文章介绍了一种使用最先进的深度学习模型,以便使用手机麦克风对笔记本电脑敲击键盘分析。实际测试训练......