
与信号量类似,事件组是任务共享了3个字节(24bit)的内容,但不同的是事件组能针对1对多,多对多的任务。如下图所示:
左边的任务可以对事件组的某一位置1或者清0,变为1说明某任务发生了。右边的任务就是阻塞等待,监控该位是否变为1

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

任务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

xEventGroupGetBits(xEventPurchase); //读取
xEventGroupClearBits(xEventPurchase, 0xFFFFFF); //清0
代码举例:





审核编辑:刘清
-
FreeRTOS
+关注
关注
14文章
497浏览量
66355 -
信号量
+关注
关注
0文章
53浏览量
8739
原文标题:FreeRTOS事件组(等待)
文章出处:【微信号:硬件会,微信公众号:硬件会】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
ucos与freertos哪个好?
FreeRTOS和uC/OS-II的功能特性
FreeRTOS与uC/OS-II如何选择?
FreeRtos 能否同时使用两个 CPU?
FreeRTOS任务调度及优先级问题
【CPKCOR-RA8D1】关于AI人脸检测移植遇到的一些问题
为FreeRTOS增加新的设备驱动程序
OPENRTOS为FreeRTOS提供商业许可证
详解FreeRTOS与SAFERTOS的区别

FreeRTOS事件组是什么意思
评论