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
    +关注

    关注

    14

    文章

    497

    浏览量

    66355
  • 信号量
    +关注

    关注

    0

    文章

    53

    浏览量

    8739

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ucos与freertos哪个好?

    选择uCOS或FreeRTOS取决于项目的具体需求和资源限制。 FreeRTOS的优点包括: 更小的内核ROM和RAM占用,特别是在RAM方面,适合资源受限的嵌入式系统。 支持协程
    发表于 12-05 07:13

    FreeRTOS和uC/OS-II的功能特性

    FreeRTOS: 核心功能: 任务调度(固定优先级抢占式 + 时间片轮询)、队列、信号量(二进制、计数)、互斥锁(带优先级继承)、软件定时器、事件(事件标志)、任务通知(高效轻量级的信号量
    发表于 11-17 08:17

    freertos关闭任务调度的方法

    #include \"FreeRTOS.h\" #include \"task.h\" /* 关闭任务调度 */ void
    发表于 11-17 06:47

    FreeRTOS与uC/OS-II如何选择?

    选择 FreeRTOS : 成本是首要考虑因素(MIT 许可证非常友好)。 你需要最庞大的社区支持和最丰富的学习资源(尤其是新手)。 你的项目涉及物联网连接、云服务(AWS FreeRTOS 集成
    发表于 11-13 07:15

    FreeRtos 能否同时使用两个 CPU?

    CM4 内核和 FreeRtos 上运行。 我的问题与 CM0 内核有关,因此在我们的案例中没有使用 CM0 内核(只有 cm0_code.c项目中包含十六进制值的文件,我不知道它的作用)。 在我们
    发表于 11-11 08:28

    FreeRTOS任务调度及优先级问题

    大家好,最近本人在学习FreeRTOS ,之前有过一些裸机开发的经验,目前知道了FreeRTOS的任务是基于时间片轮转来调度,也就是知道了任务会基于各个时间片来运行。 于是联想了如果有一些外设芯片
    发表于 11-06 02:18

    【CPKCOR-RA8D1】关于AI人脸检测移植遇到的一些问题

    会出现 “static follows non-static declaration”)。 4) FreeRTOS 事件与多线程依赖(g_ai_app_event) 问题: 原 face_detect
    发表于 10-31 13:39

    如何使用 CyCloneTCP 和 FreeRTOS 从 SNTP 服务器获取时间?

    使用 CyCloneTCP 和 FreeRTOS 从 SNTP 服务器获取时间
    发表于 09-04 08:17

    FreeRTOS增加新的设备驱动程序

    如果你正在使用FreeRTOS构建嵌入式系统,并且考虑添加新的设备驱动程序,那么这篇文章很适合你。高效的设备集成不仅仅是让设备功能正常运行——更关乎模块化、可靠性和安全性。
    的头像 发表于 08-06 15:44 746次阅读
    为<b class='flag-5'>FreeRTOS</b>增加新的设备驱动程序

    OPENRTOS为FreeRTOS提供商业许可证

    嵌入式操作系统是嵌入式系统的基石,是工业软件的基础。在市场占有率上,Eclipse基金会2024年物联网开发者调查表明,资源受限设备上的开发人员使用的嵌入式操作系统系统中FreeRTOS占29% ,长期是开源RTOS的首选。
    的头像 发表于 06-06 09:43 590次阅读

    详解FreeRTOS与SAFERTOS的区别

    开源免费的FreeRTOS由Richard Barry在WHIS工作时创建,WHIS基于FreeRTOS的功能模型,通过完整的HAZOP分析,确定了功能模型和API中的所有的弱点,减轻所有薄弱环节,并采用IEC 61508 SIL 3的开发生命周期,重新设计实现了SAFE
    的头像 发表于 06-04 16:58 685次阅读
    详解<b class='flag-5'>FreeRTOS</b>与SAFERTOS的区别

    CubeMX创建STM32F1 FreeRTOS选择新版库1.8.6后工程出错是怎么回事?

    创建出来的工程首先提示缺少文件 freertos_mpool.h , 然后将次文件从CubeMX的库中 手动拷贝过来后接着又提示报错 *** Using Compiler '
    发表于 03-14 06:31

    cubemx生成的freertos代码在keil ac6下不能编译,怎么解决?

    ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM3portmacro.h(167): error: unknown
    发表于 03-12 08:19

    移植LWIP+FREERTOS时遇到的问题怎么解决?

    各位大佬,小弟在尝试移植LWIP+FREERTOS的时候出现了如下问题,请各位大佬帮忙看看是哪里的问题,我用了FreeRTOS+LWIP做ModbusTCP时出现了链接出现通信12次然后通信
    发表于 03-11 06:48

    STM32CubeMX生成的FreeRTOS源码格式如何优化?

    如图,STM32CubeMX生成的FreeRTOS源码格式有待优化,空格都是以箭头的方式呈现,观感很差。FreeRTOS官方下载的源码则不存在这个问题,说明是STM32CubeMX生成源码的过程出现的格式问题,希望ST官方能对此做下优化!
    发表于 03-10 08:04