性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

程序小白
認證:優(yōu)質創(chuàng)作者
所在專題目錄 查看專題
關于軟件的作用域和生命周期的一些理解
淺析RTOS中的鉤子函數(HOOK)
RTOS的時間片調度不同處——FreeRTOS與RTT
FreeRTOS中任務間的同步——事件組與全局變量
FreeRTOS的優(yōu)先級翻轉與繼承
作者動態(tài) 更多
基于stm32采用PWM驅動伺服控制器學習筆記
5天前
基于STM32驅動TM1638學習筆記——軟件篇
04-19 12:42
基于TM1638驅動8位數碼管設計分享
02-24 11:26
RT-Thread驅動之路: Studio創(chuàng)建FAL分區(qū)⑤
01-02 08:30
RT-Thread驅動之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

FreeRTOS中任務間的同步——事件組與全局變量


任務間的同步為什么要用事件組,而不用全局變量呢?


      在裸機開發(fā)當中,一般都是將任務用函數的形式進行分配,用全局變量進行同步再爽不過,其實主要存在兩個原因,第一就是沒有系統(tǒng)的調度,一切都在后臺的超級循環(huán)中,通過全局變量進行選擇查詢的方式,進行函數執(zhí)行順序的同步。


      冒天下之大不韙:其實在有RTOS的系統(tǒng)中,你也可以通過全局變量進行任務間的同步,這么干的人可不止我一個。其實有好多人用RTOS并不是特別熟悉,任務創(chuàng)建那一套一上,基本上就是靠全局變量進行同步,他用的最多的關于RTOS的API,可能也就是delay了,這么干行不行,當然行,但是說實話有點大材小用,你都上了RTOS了,何不用系統(tǒng)自帶的任務同步機制?——唯一的理由可能是這玩意兒學起來真有點費勁。

      當然你這么用的壞處也顯而易見:RTOS最核心的任務調度機制已經被你廢了一大半了。


      事件組本質上來講:就是全局變量?。。。樯稕]人說這句實話)

      雖然他是一個全局變量,但是他需要使用FreeRTOS提供的相關API進行訪問,為啥子要這樣干, 就是為了讓RTOS的調度器知道,每個任務與事件組之間的依賴關系,通過事件組的設定的不同進行任務狀態(tài)的劃分定義,他才能真正起到調度的作用。

      說白了,調度器不光要負責根據任務的狀態(tài)以及優(yōu)先級完成調度工作,他還要給每個任務去定義任務當前的狀態(tài)是什么。

      事件組則更好理解了,事件組 = 全局變量 + RTOS的API操作。目的有兩個:

      1.讓調度器清楚地知道事件組的狀態(tài)。

      2.完成事件組的訪問及設定功能。


      希望扯到這里,你能對FreeRTOS為啥要用事件組這種方式,而不是用全局變量進行任務同步有個清醒的認識,同時希望你明白,事件組的本質就是全局變量。


創(chuàng)建一個事件組:

設置一個事件組標志:

獲取事件組的標志信息:


      備注:以上皆為任務間同步的事件組應用,中斷服務例程與任務間通過事件組同步的API以及應用方式稍有不同。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 4
收藏 2
關注 150
成為作者 賺取收益
全部留言
0/200
  • chaochao1545 2021-10-12 13:30
    正好在學習freertos
    回復