freertos 通知總結

2021-10-04 01:52:27 字數 1160 閱讀 1966

注意 使用通知相比較 訊號量 佇列 不用建立省下了很多任務夫,省下空間

每乙個任務都有乙個32的訊號值,當建立的時候,這個值被初始化為0

1 configuse_task_notifications 設定為1

2 在控制塊上有這個成員變數

3 接受任務因為任務通知而進入阻塞狀態,但是傳送任務不會因為任務通知傳送 失敗 而阻塞

4 xtasknotify() 或者 xtasknotifygive() 傳送通知裡面沒有阻塞

5 xtasknotifywait() 或者 xtasknotifytask()裡面有阻塞

6 xtasknotifygive() 乙個引數 給哪乙個任務傳送通知 對通知值簡單的加一 (也就是傳送乙個通知值為0的通知)

7 xtasknotify() 三個引數 第乙個引數(哪個任務) 第二個引數 通知值 第三個引數 動作型別 : xtasknotifygive() 也有型別,型別就是預設加一

8 xtasknotifyandquery 四個引數 對比 xtasknotify()多了乙個引數 指向 上一次的通知值

9 xtasknotifytask() 引數1 pdfalse 執行完這個函式後通知值減一 pdtrue退出函式的時候任務值清零

引數2 阻塞時間

返回值 函式完成前,那個通知值

10 模仿二值訊號量完成 模擬通知 的功能

一般使用 xtasknotifygive() 給乙個任務控制代碼傳送乙個通知 任務控制代碼就是 xtaskcreate 的最後乙個引數

ultasknotifytake用來接收

notifyvalue=

ultasknotifytake

(pdtrue,portmax_delay)

;//獲取任務通知

if(notifyvalue==1)

//清零之前的任務通知值為1,說明任務通知有效

portmax_delay 阻塞時間 死等 死等 死等 死等

11 模仿計數型訊號量

xtasknotifygive(控制代碼)

notifyvalue=ultasknotifytake(pdfalse,portmax_delay)

它每次清除一次,可以清除次數跟新增次數是相等的

那麼對比 模仿二值訊號量 它的確很講理性,所以是計數型吧

FreeRTOS任務通知API函式

要使用任務通知,就要將巨集configuse task notifications置1 在freertos.h檔案768行 傳送任務通知xtasknotify,此函式傳送任務通知的時候帶有通知值 basetypep t xtasknotify taskhandle t xtasktonotify,任...

FreeRTOS自學總結

freertos自學總結 1.任務函式一般不允許跳出迴圈,如果一定要跳出迴圈的話在跳出迴圈以後一定要呼叫函式vtaskdelete null 刪除此任務 也就是每乙個任務都要在乙個死迴圈中,如果退出死迴圈,就要刪掉這個任務 2.二值訊號量建立完之後需要釋放之後才會生效 建立之後,預設flag為0,只...

FreeRtos學習總結

最近專案需要,花了幾天時間學習了freertos,因為之前有作業系統和底層的基礎,所以上手非常快。學習方法 建議先閱讀本人整理的文章 再結合freertos文件官方的全英文檔 mastering the freertos real time kernel a hands on tutorial gu...