
與信號量類似,事件組是任務(wù)共享了3個字節(jié)(24bit)的內(nèi)容,但不同的是事件組能針對1對多,多對多的任務(wù)。如下圖所示:
左邊的任務(wù)可以對事件組的某一位置1或者清0,變?yōu)?說明某任務(wù)發(fā)生了。右邊的任務(wù)就是阻塞等待,監(jiān)控該位是否變?yōu)?

舉個在淘寶上買東西的例子:

任務(wù)1負(fù)責(zé)監(jiān)督是否有商品添加到購物車;用戶添加到購物車第0位置1,沒添購物車第0位置0 任務(wù)2負(fù)責(zé)監(jiān)督是否付款,當(dāng)監(jiān)督到任務(wù)1置1時,打開支付寶扣款成功了第1位置1 任務(wù)3是負(fù)責(zé)出貨,當(dāng)監(jiān)督到任務(wù)2置1后,將第2位置1 當(dāng)?shù)?、1、2位都為1時,說明交易完成了。
位移操作:
1<<0:1往左邊移0位,表示第0位為1 1<<1:1往左邊移1位,表示第1位為1 1<<2:1往左邊移2位,表示第2位為1 位或運算,實質(zhì)就是相加:0001|0010|0100=0111 if(a&b):a與b位與,對應(yīng)的兩個二進制位均是1的時候結(jié)果位才是1,否則為0
API函數(shù):
EventGroupHandle_t xEventPurchase = NULL;//創(chuàng)建事件句柄
xEventPurchase = xEventGroupCreate();//創(chuàng)建事件組
xEventGroupSetBits(xEventPurchase,1<<0); // 將bit 0 設(shè)置為1

xEventGroupGetBits(xEventPurchase); //讀取
xEventGroupClearBits(xEventPurchase, 0xFFFFFF); //清0
代碼舉例:





審核編輯:劉清
-
FreeRTOS
+關(guān)注
關(guān)注
14文章
497瀏覽量
66285 -
信號量
+關(guān)注
關(guān)注
0文章
53瀏覽量
8736
原文標(biāo)題:FreeRTOS事件組(等待)
文章出處:【微信號:硬件會,微信公眾號:硬件會】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
FreeRTOS和uC/OS-II的功能特性
freertos關(guān)閉任務(wù)調(diào)度的方法
FreeRTOS與uC/OS-II如何選擇?
FreeRtos 能否同時使用兩個 CPU?
FreeRTOS任務(wù)調(diào)度及優(yōu)先級問題
【CPKCOR-RA8D1】關(guān)于AI人臉檢測移植遇到的一些問題
如何使用 CyCloneTCP 和 FreeRTOS 從 SNTP 服務(wù)器獲取時間?
為FreeRTOS增加新的設(shè)備驅(qū)動程序
OPENRTOS為FreeRTOS提供商業(yè)許可證
詳解FreeRTOS與SAFERTOS的區(qū)別

FreeRTOS事件組是什么意思
評論