1、事件位(事件標志)
事件位用來表明某個事件是否發(fā)生,事件位通常用作事件標志,比如下面的幾個例子:
● 當收到一條消息并且把這條消息處理掉以后就可以將某個位(標志)置 1,當隊列中沒有消息需要處理的時候就可以將這個位(標志)置 0。
● 當把隊列中的消息通過網(wǎng)絡發(fā)送輸出以后就可以將某個位(標志)置 1,當沒有數(shù)據(jù)需要從網(wǎng)絡發(fā)送出去的話就將這個位(標志)置 0。
● 現(xiàn)在需要向網(wǎng)絡中發(fā)送一個心跳信息,將某個位(標志)置 1。現(xiàn)在不需要向網(wǎng)絡中發(fā)送心跳信息,這個位(標志)置 0。
2、事件組
一個事件組就是一組的事件位,事件組中的事件位通過位編號來訪問,同樣,以上面列出的三個例子為例:
● 事件標志組的 bit0 表示隊列中的消息是否處理掉。
● 事件標志組的 bit1 表示是否有消息需要從網(wǎng)絡中發(fā)送出去。
● 事件標志組的 bit2 表示現(xiàn)在是否需要向網(wǎng)絡發(fā)送心跳信息。
3、事件標志組和事件位的數(shù)據(jù)類型
事件標志組的數(shù)據(jù)類型為 EventGroupHandle_t,當 configUSE_16_BIT_TICKS 為 1 的時候 事件標志組可以存儲 8 個事件位,當 configUSE_16_BIT_TICKS 為 0 的時候事件標志組存儲 24個事件位。
事件標志組中的所有事件位都存儲在一個無符號的 EventBits_t 類型的變量中,EventBits_t 在 event_groups.h 中有如下定義:
typedef
TickType_tEventBits_t;
數(shù)據(jù)類型 TickType_t 在文件 portmacro.h 中有如下定義:
#if(configUSE_16_BIT_TICKS==1)
typedef
uint16_t
TickType_t;
#defineportMAX_DELAY(TickType_t)0xffff
#else
typedef
uint32_t
TickType_t;
#defineportMAX_DELAY(TickType_t)0xffffffffUL
#defineportTICK_TYPE_IS_ATOMIC1
#endif
可以看出當 configUSE_16_BIT_TICKS 為 0 的時候 TickType_t 是個 32 位的數(shù)據(jù)類型,因 此 EventBits_t 也是個 32 位的數(shù)據(jù)類型。EventBits_t 類型的變量可以存儲 24 個事件位,另外的那高 8 位有其他用。事件位 0 存放在這個變量的 bit0 上,變量的 bit1 就是事件位 1,以此類推。
-
嵌入式
+關注
關注
5094文章
19178瀏覽量
307732 -
數(shù)據(jù)
+關注
關注
8文章
7145瀏覽量
89591 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62399
發(fā)布評論請先 登錄
相關推薦
使用STM32CubeMX生成的FreeRTOS系統(tǒng)中,似乎沒有新封裝的事件標志組,怎么解決?
使用FreeRTOS系統(tǒng)事件標志組有些收不到是怎么回事?
轉:freeRTOS事件組學習
轉:第18章 FreeRTOS事件標志組
轉:第26章 FreeRTOS任務事件標志組
【NUCLEO-F412ZG試用體驗】FreeRTOS_事件標志組實現(xiàn)任務和中斷的同步
UCOS3的事件標志組
freertos中斷置位事件標志組輸出Error的解決辦法?
【轉載】AT32 FreeRTOS應用筆記
FreeRTOS的事件標志組
FreeRTOS創(chuàng)建事件標志組
![<b class='flag-5'>FreeRTOS</b>創(chuàng)建事件<b class='flag-5'>標志</b><b class='flag-5'>組</b>](https://file1.elecfans.com/web2/M00/8C/26/wKgZomSmh-aAWubuAADIDm4qmVA823.jpg)
評論