0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FreeRTOS事件组是什么意思

工程师邓生 来源:硬件会 作者:硬件会 2022-09-15 11:47 次阅读

d6075dd0-342b-11ed-ba43-dac502259ad0.png

信号量类似,事件组是任务共享了3个字节(24bit)的内容,但不同的是事件组能针对1对多,多对多的任务。如下图所示:

左边的任务可以对事件组的某一位置1或者清0,变为1说明某任务发生了。右边的任务就是阻塞等待,监控该位是否变为1

d62010f0-342b-11ed-ba43-dac502259ad0.png

举个在淘宝上买东西的例子:

d6428be4-342b-11ed-ba43-dac502259ad0.png

任务1负责监督是否有商品添加到购物车;用户添加到购物车第0位置1,没添购物车第0位置0 任务2负责监督是否付款,当监督到任务1置1时,打开支付宝扣款成功了第1位置1 任务3是负责出货,当监督到任务2置1后,将第2位置1 当第0、1、2位都为1时,说明交易完成了。

位移操作:

1<<0:1往左边移0位,表示第0位为1 1<<1:1往左边移1位,表示第1位为1 1<<2:1往左边移2位,表示第2位为1 位或运算,实质就是相加:0001|0010|0100=0111 if(a&b):a与b位与,对应的两个二进制位均是1的时候结果位才是1,否则为0

API函数:

EventGroupHandle_t xEventPurchase = NULL;//创建事件句柄

xEventPurchase = xEventGroupCreate();//创建事件组

xEventGroupSetBits(xEventPurchase,1<<0); // 将bit 0 设置为1

d66da8ba-342b-11ed-ba43-dac502259ad0.png

xEventGroupGetBits(xEventPurchase); //读取

xEventGroupClearBits(xEventPurchase, 0xFFFFFF); //清0

代码举例:

d68e919c-342b-11ed-ba43-dac502259ad0.png

d6ad0262-342b-11ed-ba43-dac502259ad0.png

d6e0a4a0-342b-11ed-ba43-dac502259ad0.png

d704f648-342b-11ed-ba43-dac502259ad0.png

d7222a88-342b-11ed-ba43-dac502259ad0.png



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FreeRTOS
    +关注

    关注

    12

    文章

    484

    浏览量

    62209
  • 信号量
    +关注

    关注

    0

    文章

    53

    浏览量

    8351

原文标题:FreeRTOS事件组(等待)

文章出处:【微信号:硬件会,微信公众号:硬件会】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在TM4C MCU上使用FreeRTOS开发高级应用

    电子发烧友网站提供《在TM4C MCU上使用FreeRTOS开发高级应用.pdf》资料免费下载
    发表于 09-06 10:17 0次下载
    在TM4C MCU上使用<b class='flag-5'>FreeRTOS</b>开发高级应用

    freertos最多支持多少个任务

    FreeRTOS是一个轻量级的实时操作系统(RTOS),其设计初衷就是为了提供简单、可靠且高效的实时任务管理。关于FreeRTOS最多支持多少个任务的问题,实际上并没有一个固定的上限,这主要取决于
    的头像 发表于 09-02 14:21 947次阅读

    freertos和rtos区别是什么

    FreeRTOS 和 RTOS(实时操作系统)是两个不同的概念,但它们之间有紧密的联系。FreeRTOS 是一个特定的开源实时操作系统,而 RTOS 是实时操作系统的一般概念。 概念定义 RTOS
    的头像 发表于 09-02 14:18 1294次阅读

    freertos和裸机有什么区别

    FreeRTOS 和裸机编程是两种不同的嵌入式系统开发方法,它们在设计理念、资源使用、功能实现等方面有着显著的差异。 1. 基本概念 1.1 FreeRTOS FreeRTOS 是一个小型的、可裁剪
    的头像 发表于 09-02 14:13 1500次阅读

    freertos和rtthread哪一个更好

    在嵌入式系统开发中,选择合适的实时操作系统(RTOS)对于项目的成功至关重要。FreeRTOS和RT-Thread是两个非常流行的开源RTOS,它们各自具有独特的特点和优势。 1. 简介
    的头像 发表于 09-02 14:06 3385次阅读

    使用freeRTOS开发工具包时,在哪里可以找到freeRTOS的版本?

    作为主题,当我使用 freeRTOS 开发工具包时,在哪里可以找到 freeRTOS 的版本?
    发表于 07-09 07:17

    HPM SDK 1.6.0 FreeRTOS LTS更改及适配指南

    1、HPM_SDKFreeRTOSLTS特性总览HPMSDKV1.6.0中FreeRTOS升级前后特性支持对比:特性V10.4.4LTS202210.01中断抢占√√RISCV浮点扩展支持
    的头像 发表于 07-06 08:17 3704次阅读
    HPM SDK 1.6.0 <b class='flag-5'>FreeRTOS</b> LTS更改及适配指南

    请问如何修改FreeRTOS的configTICK_RATE_HZ?

    如题,小弟想用vTaskDelayUnity()让一个任务每5ms运行一次,但是滴答默认是“CONFIG_FREERTOS_HZ”(100),所以直接修改为“200”显示报错。 环境是ESP-IDF
    发表于 06-12 06:34

    实时操作系统之RT-Thread及FreeRTOS

    RT-Thread与其他很多RTOS如FreeRTOS的主要区别之一是,它不仅仅是一个实时内核,还具备丰富的中间层组件,如下图所示。FreeRTOS和RT-Thread是两种常见的嵌入式实时操作系统
    的头像 发表于 05-29 08:10 3934次阅读
    实时操作系统之RT-Thread及<b class='flag-5'>FreeRTOS</b>

    AG32 下使用 freeRTOS 的参考

    在 SDK 下已经有移植好的 FreeRTOS Kernel V10.4.6 版本,可供用户使用。 源码位于:\\\\AgRV_pio\\\\packages
    发表于 05-28 13:34

    TRAVEO T2G支持freeRTOS吗?

    支持 freeRTOS 吗? 因为在运行来自\"tviic2d4m\" 的 freertos 示例时 . 我收到了类似 FreeRTOS.h 的错误信息 未找到。 然后我发现
    发表于 05-21 07:36

    浅析FreeRTOS任务调度器的三种调度算法和应用

    FreeRTOS在MCU领域应用非常广泛,今天就给大家讲解一下FreeRTOS调度器中的三种调度算法,以及在瑞萨RZ/T2L MPU中的应用。
    的头像 发表于 05-10 14:02 7522次阅读
    浅析<b class='flag-5'>FreeRTOS</b>任务调度器的三种调度算法和应用

    使用FreeRTOS系统事件标志有些收不到是怎么回事?

    教下,使用FreeRTOS的的件标志, 任务貌似有些标志位收不到,是怎么回事啊 ? 比如事件标志的 bit5, bit8, bit7 可以收到 但是 则 bit6, bit3 收不到 上述标志
    发表于 04-26 06:53

    如何将CubeMX生成的FreeRTOS V9工程升级成FreeRTOS V10?

    发现CubeMX 自带的 FreeRTOS 版本太旧了, 是V9 而最新的FreeRTOS 是V10 而且调试起来 V9 配合MDK的V5 编译器 总会出现奇怪问题, 所以希望换到FreeRTOS最新版 , 这样可以好些,
    发表于 04-25 07:08

    使用STM32CubeMX生成的FreeRTOS系统中,似乎没有新封装的事件标志,怎么解决?

    使用STM32CubeMX生成的FreeRTOS系统中,似乎没有新封装的事件标志,如果按照原生的FreeRTOS使用事件标志,则任务中的xEventGroupSetBits函数没有
    发表于 03-22 08:34