0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FreeRTOS事件標(biāo)志組介紹

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-06 17:22 ? 次閱讀

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,以此類推。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5046

    文章

    18817

    瀏覽量

    298568
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6715

    瀏覽量

    88311
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61726
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FreeRTOS介紹與基礎(chǔ)任務(wù)創(chuàng)建

    本篇介紹FreeRTOS與基礎(chǔ)任務(wù)創(chuàng)建
    的頭像 發(fā)表于 09-26 09:00 ?2198次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>介紹</b>與基礎(chǔ)任務(wù)創(chuàng)建

    使用STM32CubeMX生成的FreeRTOS系統(tǒng)中,似乎沒有新封裝的事件標(biāo)志,怎么解決?

    使用STM32CubeMX生成的FreeRTOS系統(tǒng)中,似乎沒有新封裝的事件標(biāo)志,如果按照原生的FreeRTOS使用事件標(biāo)志
    發(fā)表于 03-22 08:34

    使用FreeRTOS系統(tǒng)事件標(biāo)志有些收不到是怎么回事?

    教下,使用FreeRTOS的的件標(biāo)志, 任務(wù)貌似有些標(biāo)志位收不到,是怎么回事啊 ? 比如事件標(biāo)志
    發(fā)表于 04-26 06:53

    轉(zhuǎn):freeRTOS事件學(xué)習(xí)

    像其他RTOS一樣,freeRTOS同樣有對(duì)事件標(biāo)志位的創(chuàng)建和處理,在中斷中可以通過事件傳遞信息給其他的任務(wù),那么如何創(chuàng)建事件呢?要使用創(chuàng)建Event的API,首先必須配置,且包含
    發(fā)表于 08-12 18:29

    轉(zhuǎn):第18章 FreeRTOS事件標(biāo)志

    第18章FreeRTOS事件標(biāo)志 前面的章節(jié)我們已經(jīng)講解了任務(wù)管理和時(shí)間管理,從本章節(jié)開始講解任務(wù)間的通信和同步機(jī)制。首先講解任務(wù)間的通信和同步機(jī)制之一,事件標(biāo)志
    發(fā)表于 09-02 12:40

    轉(zhuǎn):第26章 FreeRTOS任務(wù)事件標(biāo)志

    本章節(jié)為大家講解FreeRTOS事件標(biāo)志的另一種實(shí)現(xiàn)方式----基于任務(wù)通知(Task Notifications)的事件標(biāo)志,這里我們
    發(fā)表于 09-08 06:48

    【NUCLEO-F412ZG試用體驗(yàn)】FreeRTOS_事件標(biāo)志實(shí)現(xiàn)任務(wù)和中斷的同步

    使用事件標(biāo)志可以實(shí)現(xiàn)任務(wù)和任務(wù)之間以及任務(wù)和中斷之間的通信或者同步。首先說明,本例程參考了《安富萊_STM32-V5開發(fā)板_FreeRTOS教程(V1.0)》,是在上上期報(bào)告的基礎(chǔ)上,把按鍵中斷由
    發(fā)表于 12-28 21:19

    UCOS3的事件標(biāo)志

    我理解的事件標(biāo)志主要功能就是根據(jù)同步標(biāo)志組里面的信號(hào)的標(biāo)志位來執(zhí)行語句。比如有A,B,C三個(gè)信號(hào),當(dāng)我們有一個(gè)任務(wù)D需要ABC三個(gè)信號(hào)都到了之后再去執(zhí)行任務(wù)D.這時(shí)候就可以用到任務(wù)
    發(fā)表于 05-11 14:27

    freertos中斷置位事件標(biāo)志輸出Error的解決辦法?

    新人求教,在原子里的程序加了置位標(biāo)志,串口輸出Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,680,但是不影響程序的運(yùn)行,這個(gè)是什么原因
    發(fā)表于 06-18 09:00

    【轉(zhuǎn)載】AT32 FreeRTOS應(yīng)用筆記

    ........................................83例程介紹 ...................................................... 85FreeRTOS 事件標(biāo)志
    發(fā)表于 08-16 11:56

    怎樣去設(shè)置FreeRTOS事件標(biāo)志的事件位呢

    事件標(biāo)志是什么意思呢?怎樣去設(shè)置FreeRTOS事件標(biāo)志的事件位呢?
    發(fā)表于 02-28 06:44

    freeRTOS中的消息郵箱

    freeRTOS中的消息郵箱使用是比較靈活的,它可以實(shí)現(xiàn)二值信號(hào)量、計(jì)數(shù)信號(hào)量、事件標(biāo)志、消息隊(duì)列等通知方式。
    的頭像 發(fā)表于 02-10 11:05 ?1424次閱讀
    <b class='flag-5'>freeRTOS</b>中的消息郵箱

    freeRTOS用于任務(wù)之間同步的手段事件標(biāo)志

    freeRTOS中還有一種可以用于任務(wù)之間同步的手段 — 事件標(biāo)志。
    的頭像 發(fā)表于 02-10 11:10 ?1420次閱讀

    FreeRTOS的事件標(biāo)志

    之前介紹了使用信號(hào)量來完成同步,但是使用信號(hào)量來同步的話,任務(wù)只能與單個(gè)的事件或任務(wù)進(jìn)行同步。有時(shí)候某個(gè)任務(wù)可能會(huì)需要與多個(gè)事件或任務(wù)進(jìn)行同步,此時(shí)信號(hào)量就無能為力了。FreeRTOS 提供了一個(gè)可選的解決方法,那就是事件標(biāo)志
    的頭像 發(fā)表于 02-10 15:58 ?1012次閱讀

    FreeRTOS創(chuàng)建事件標(biāo)志

    創(chuàng)建事件標(biāo)志 3、設(shè)置事件位 4、獲取事件標(biāo)志值 5、等待指定的事件位 某個(gè)任務(wù)可能需要與多個(gè)事件進(jìn)行同步,那么這個(gè)任務(wù)就需要等待并判斷多個(gè)事件位(標(biāo) 志),使用函數(shù)
    的頭像 發(fā)表于 07-06 17:23 ?461次閱讀
    <b class='flag-5'>FreeRTOS</b>創(chuàng)建事件<b class='flag-5'>標(biāo)志</b><b class='flag-5'>組</b>