與信號量類似,事件組是任務共享了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
+關注
關注
12文章
485瀏覽量
63476 -
信號量
+關注
關注
0文章
53瀏覽量
8471
原文標題:FreeRTOS事件組(等待)
文章出處:【微信號:硬件會,微信公眾號:硬件會】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
在TM4C MCU上用FreeRTOS開發通用應用程序應用說明

freertos最多支持多少個任務
freertos和rtos區別是什么
freertos中斷優先級在哪設置
freertos和裸機有什么區別
freertos和rtthread哪一個更好
使用freeRTOS開發工具包時,在哪里可以找到freeRTOS的版本?
HPM SDK 1.6.0 FreeRTOS LTS更改及適配指南

請問如何修改FreeRTOS的configTICK_RATE_HZ?
實時操作系統之RT-Thread及FreeRTOS

評論