1、事件位(事件標(biāo)志)
事件位用來表明某個(gè)事件是否發(fā)生,事件位通常用作事件標(biāo)志,比如下面的幾個(gè)例子:
● 當(dāng)收到一條消息并且把這條消息處理掉以后就可以將某個(gè)位(標(biāo)志)置 1,當(dāng)隊(duì)列中沒有消息需要處理的時(shí)候就可以將這個(gè)位(標(biāo)志)置 0。
● 當(dāng)把隊(duì)列中的消息通過網(wǎng)絡(luò)發(fā)送輸出以后就可以將某個(gè)位(標(biāo)志)置 1,當(dāng)沒有數(shù)據(jù)需要從網(wǎng)絡(luò)發(fā)送出去的話就將這個(gè)位(標(biāo)志)置 0。
● 現(xiàn)在需要向網(wǎng)絡(luò)中發(fā)送一個(gè)心跳信息,將某個(gè)位(標(biāo)志)置 1。現(xiàn)在不需要向網(wǎng)絡(luò)中發(fā)送心跳信息,這個(gè)位(標(biāo)志)置 0。
2、事件組
一個(gè)事件組就是一組的事件位,事件組中的事件位通過位編號(hào)來訪問,同樣,以上面列出的三個(gè)例子為例:
● 事件標(biāo)志組的 bit0 表示隊(duì)列中的消息是否處理掉。
● 事件標(biāo)志組的 bit1 表示是否有消息需要從網(wǎng)絡(luò)中發(fā)送出去。
● 事件標(biāo)志組的 bit2 表示現(xiàn)在是否需要向網(wǎng)絡(luò)發(fā)送心跳信息。
3、事件標(biāo)志組和事件位的數(shù)據(jù)類型
事件標(biāo)志組的數(shù)據(jù)類型為 EventGroupHandle_t,當(dāng) configUSE_16_BIT_TICKS 為 1 的時(shí)候 事件標(biāo)志組可以存儲(chǔ) 8 個(gè)事件位,當(dāng) configUSE_16_BIT_TICKS 為 0 的時(shí)候事件標(biāo)志組存儲(chǔ) 24個(gè)事件位。
事件標(biāo)志組中的所有事件位都存儲(chǔ)在一個(gè)無符號(hào)的 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
可以看出當(dāng) configUSE_16_BIT_TICKS 為 0 的時(shí)候 TickType_t 是個(gè) 32 位的數(shù)據(jù)類型,因 此 EventBits_t 也是個(gè) 32 位的數(shù)據(jù)類型。EventBits_t 類型的變量可以存儲(chǔ) 24 個(gè)事件位,另外的那高 8 位有其他用。事件位 0 存放在這個(gè)變量的 bit0 上,變量的 bit1 就是事件位 1,以此類推。
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19104瀏覽量
304829 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7002瀏覽量
88943 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62144
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論