FreeRTOS_事件組_學習筆記

事件組

原文鏈接
在這里插入圖片描述
事件組是一個整數,其中的高8位留給內核,只能用其他位來表示時間
每一位代表一個事件,且每個時間的含義由程序員決定
1為發生,0為未發生
一個/多個任務或ISR都能讀寫這些位
可以等待某一位,也可以等待多個位

事件組有廣播作用,會喚醒所有復合條件的任務;而隊列和信號量只會喚醒一個任務。
事件組喚醒任務后,可以讓事件不動,也可以清除事件。

事件組函數

創建

成功返回句柄,失敗返回NULL

EventGroupHandle_t xEventGroupCreate( void );// 動態創建
EventGroupHandle_t xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer );
//靜態創建

示例:

g_xEventCar = xEventGroupCreate();

刪除

void vEventGroupDelete( EventGroupHandle_t xEventGroup )

設置事件

xEventGroup: 哪個事件組
uxBitsToSet: 設置哪些位?

  • 如果uxBitsToSet的bitX, bitY為1, 那么事件組中的bitX, bitY被設置為1
  • 可以用來設置多個位,比如 0x15 就表示設置bit4, bit2, bit0

返回值EventBits_t: 返回原來的事件值(沒什么意義, 因為很可能已經被其他任務修改了)
pxHigherPriorityTaskWoken: 有沒有導致更高優先級的任務進入就緒態? pdTRUE-有, pdFALSE-沒有
返回值BaseType_t: pdPASS-成功, pdFALSE-失敗

/*在任務中使用*/
EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet );
/*在ISR中使用*/
BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet,BaseType_t * pxHigherPriorityTaskWoken );

示例:

xEventGroupSetBits(g_xEventCar, (1<<0));

(1<<0)是二進制掩碼,表示將1左移0位(00000001),指等待第0位

等待事件

xEventGroup	等待哪個事件組?
uxBitsToWaitFor	等待哪些位?哪些位要被測試?
xClearOnExit	函數提出前是否要清除事件? pdTRUE: 清除uxBitsToWaitFor指定的位 pdFALSE: 不清除
xWaitForAllBits	怎么測試?是"AND"還是"OR"? pdTRUE: 等待的位,全部為1; pdFALSE: 等待的位,某一個為1即可
xTicksToWait	如果期待的事件未發生,阻塞多久。 可以設置為0:判斷后即刻返回; 可設置為portMAX_DELAY:一定等到成功才返回; 可以設置為期望的Tick Count,一般用*pdMS_TO_TICKS()*把ms轉換為Tick Count
返回值	返回的是事件值, 如果期待的事件發生了,返回的是"非阻塞條件成立"時的事件值; 如果是超時退出,返回的是超時時刻的事件值。
EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToWaitFor,const BaseType_t xClearOnExit,const BaseType_t xWaitForAllBits,TickType_t xTicksToWait );

示例:

xEventGroupWaitBits(g_xEventCar, (1<<0)|(1<<1), pdTRUE, pdFALSE, portMAX_DELAY);

(1<<0)|(1<<1)表示關心第0和第1位,且他們有一個為1時觸發。

同步點

如果有ABC多個任務需要全部做完才能進行下一步,可以使用xEventGroupSync()

xEventGroup	哪個事件組?
uxBitsToSet	要設置哪些事件?我完成了哪些事件? 比如0x05(二進制為0101)會導致事件組的bit0,bit2被設置為1
uxBitsToWaitFor	等待那個位、哪些位? 比如0x15(二級制10101),表示要等待bit0,bit2,bit4都為1
xTicksToWait	如果期待的事件未發生,阻塞多久。 可以設置為0:判斷后即刻返回; 可設置為portMAX_DELAY:一定等到成功才返回; 可以設置為期望的Tick Count,一般用*pdMS_TO_TICKS()*把ms轉換為Tick Count
返回值	返回的是事件值, 如果期待的事件發生了,返回的是"非阻塞條件成立"時的事件值; 如果是超時退出,返回的是超時時刻的事件值。
EventBits_t xEventGroupSync(    EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet,const EventBits_t uxBitsToWaitFor,TickType_t xTicksToWait );

示例:

xEventGroupSync(g_xEventCar, (1<<0),(1<<1)|(1<<2), portMAX_DELAY); 

會設置第0位,等待第1,2位

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13771.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13771.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13771.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何理解合約中的引用類型(3)——Mapping

映射&#xff08;mapping&#xff09; 聲明形式&#xff1a;mapping(key type > value type)keytype可以是除枚舉外的幾乎任何基本類型&#xff0c;包括bytes和string&#xff0c;不包括用戶自定義的復雜類型-合約&#xff0c;枚舉&#xff0c;結構&#xff0c;映射value t…

簡單美觀易上手的 Docker Compose 可視化管理器 Dockge

本文首發于只抄博客&#xff0c;歡迎點擊原文鏈接了解更多內容。 前言 Dockge 是 Uptime Kuma 作者的新作品&#xff0c;因此 UI 風格與 Uptime Kuma 基本一致&#xff0c;如果你正在使用 Uptime Kuma 的話&#xff0c;那么 Dockge 的 UI 設計應該也不會讓你失望。Dockge 主打…

智慧校園為高校帶來哪些價值

在21世紀的教育圖景中&#xff0c;"智慧"不再僅僅是一個科技名詞&#xff0c;它已成為衡量教育現代化水平的重要標志。智慧校園&#xff0c;這一融合了物聯網、大數據、云計算等先進技術的教育新形態&#xff0c;正逐步成為高校轉型升級的關鍵驅動力。本文將從多個維…

note-網絡是怎樣連接的2 協議棧和網卡

助記提要 協議棧的結構協議棧創建連接的實際過程協議棧發送數據包的2個判斷依據TCP確認數據收到的原理斷開連接的過程路由表和ARPMAC地址的分配MAC模塊的工作通過電信號讀取數據的原理網卡和協議棧接收包的過程ICMPUDP協議的適用場景 2章 用電信號傳輸TCP/IP數據 探索協議棧和…

BUUCTF靶場 [reverse]easyre、reverse1、reverse2

工具&#xff1a; DIE&#xff1a;下載&#xff1a;https://download.csdn.net/download/m0_73981089/89334360 IDA&#xff1a;下載&#xff1a;https://hex-rays.com/ida-free/ 新手小白勇闖逆向區&#xff01;&#xff01;&#xff01; [reverse]easyre 首先查殼&#xf…

如何理解HTML語義化

如何理解HTML語義化 HTML語義化&#xff0c;簡單來說&#xff0c;就是使用HTML標簽來清晰地表達頁面內容的結構和意義&#xff0c;而不僅僅是作為布局的容器。它強調使用具有明確含義的HTML標簽來描述頁面元素&#xff0c;而不是僅僅依賴CSS來實現頁面的外觀和布局。 理解HTM…

android 權限相關定義解釋

1 PID &#xff1a;程序一運行系統就會自動分配給進程一個獨一無二的PID&#xff0c;內部線程可以共享 該pid的分配的內存數據 2 UID&#xff1a;User Identifier,UID在linux中就是用戶的ID&#xff0c;表明時哪個用戶運行了這個程序&#xff0c;主要用于權限的管理。內部共享各…

【oracle003】圖片轉為字節、base64編碼等形式批量插入oracle數據庫并查詢

1.熟悉、梳理、總結下Oracle相關知識體系 2.歡迎批評指正&#xff0c;跪謝一鍵三連&#xff01; 資源下載&#xff1a; oci.dll、oraocci11.dll、oraociei11.dll3個資源文件資源下載&#xff1a; Instant Client Setup.exe資源下載&#xff1a; oci.dll、oraocci11.dll、oraoc…

Vue ref訪問這些元素或組件的實例

可以在任意DOM元素上使用ref屬性&#xff0c;然后在Vue實例中通過this.$refs訪問這個DOM元素 1.訪問子組件實例&#xff0c;可以調用方法或者獲取值 <template><div><input type"text" ref"myInput" /><button click"focusInp…

ubuntu手動替換源后,更新源時提示“倉庫.... jammy Release“ 沒有Release文件

問題如圖所示&#xff0c;由于問題不好定位&#xff0c;我就從替換源&#xff0c;以及解決錯誤提示這兩個步驟&#xff0c;來解決其中可能存在的問題。 1、替換源 這一步驟&#xff0c;網上的資料可以搜到很多&#xff0c;我跟著做了之后&#xff0c;總會冒出來各種各樣的小問…

皮影戲藝術品3D沉浸式展館提供非同一般的趣味體驗

引領藝術展示的未來&#xff0c;深圳華銳視點融合多年的web3d項目制作經驗&#xff0c;傾力打造3D虛擬藝術品展館在線編輯平臺&#xff0c;為您提供一個超越時空限制的線上藝術展示平臺。 一、極致視覺盛宴 我們擁有領先的美術團隊&#xff0c;運用先進的web3D開發技術&#xf…

可能是最適合PS的AI插件,設計師大救星!StartAI初體驗!不是恰飯

這款軟件雖然有一些功能需要完善&#xff0c;比如&#xff1a; 1&#xff1a;生成圖片產品海報&#xff0c;會出現圖隨意出現&#xff0c;跟設計圖起沖突&#xff0c;需要PS才可以正常使用它。 2&#xff1a;即使開會員也需要排隊生成。 3: 還有&#xff0c;會員沒有更加好用的…

vue3結合element-plus之如何優雅的使用表單組件

背景 在日常開發中,我們會經常使用 element-ui 或者是 antdesign 或者是 element-plus 等組件庫實現搜索功能 這里就需要用到相關表單組件 下面就以 element-plus 為例,我們實現一個搜索功能的組件,并且隨著屏幕尺寸的變化,其布局也會跟隨變化 最終大致效果如下: 這里…

詳解VLSM技術

在現代網絡設計中&#xff0c;如何高效地分配和管理IP地址是一個關鍵問題。傳統的子網劃分方法雖然簡單&#xff0c;但在實際應用中常常導致IP地址的浪費。為了應對這一問題&#xff0c;VLSM&#xff08;Variable Length Subnet Mask&#xff0c;可變長子網掩碼&#xff09;技術…

C++:set和map的底層封裝模擬實現

目錄 底層對比&#xff1a; 底層紅黑樹結構和set、map&#xff1a; 底層模擬&#xff1a; 傳值調用&#xff1a; 迭代器&#xff1a; operator &#xff08;&#xff09; find函數 operator&#xff08;&#xff09; 、仿函數 set和map的仿函數 &#xff1a; 圖解&a…

地平線-旭日X3派(RDK X3)上手基本操作

0. 環境 - win10筆記本 - RDK X3 1.0&#xff08;地平線旭日X3派&#xff0c;后來改名為代號RDK X3&#xff09; 1. 下載資料 https://developer.horizon.ai/resource 主要下載鏡像 http://sunrise.horizon.cc/downloads/os_images/2.1.0/release/ 下載得到了 ubuntu-prei…

vs無法打開或包括文件”QTxxx“

vs創建項目時默認引入core、gui、和widgets等模塊&#xff0c;在需要網絡通訊或者圖表等開發時需要添加相應模塊。 點擊擴展 -> QT VS Tools -> QT Project Setting->Qt Modules&#xff0c;添加相應模塊即可

linux自動部署項目的腳本(從git中拉取并執行)

名字&#xff1a;bootStart.sh ?#!/bin/sh #記事本打開&#xff0c;修改編碼格式為utf8&#xff0c;可解決上傳centos后中文亂碼問題 echo echo 自動化部署腳本啟動 echo echo 停止原來運行中的工程 APP_NAME項目名 # 查詢系統中正在運行的項目進程&#xff0c;并停止進程 …

Ubuntu系統版本查看辦法

Ubuntu系統版本查看辦法 1. 使用 lsb_release 命令2. 查看 /etc/issue 文件3. 使用 hostnamectl 命令4. 查看 /etc/os-release 文件5. 查看內核版本6. 使用 neofetch 命令&#xff08;如果已安裝&#xff09;總結 在 Ubuntu 操作系統中&#xff0c;查看當前系統版本的詳細信息可…

頭歌05-排列樹實驗-旅行商問題

""" 題目&#xff1a;設有n個城市組成的交通圖&#xff0c;一個售貨員從住地城市q出發&#xff0c;到其它城市各一次去推銷貨物&#xff0c;最后回到住地城市。 要求&#xff1a;假定兩個城市a&#xff0c;b 從a到b的路程花費w_ab是已知的&#xff0c;問應該怎樣…