FreeRTOS任務通知API函式

2021-08-14 07:25:48 字數 1993 閱讀 8427

要使用任務通知,就要將巨集configuse_task_notifications置1 在freertos.h檔案768行

傳送任務通知xtasknotify,此函式傳送任務通知的時候帶有通知值

basetypep_t xtasknotify(taskhandle_t xtasktonotify, //任務控制代碼,指定任務通知是傳送給哪個任務的

uint32_t ulvalue,   //任務通知值

enotifyaction eaction)  //任務通知更新的方法,這是乙個列舉型別

返回值:

pdfail:當引數eaction設定為esetvaluewithoutoverwrite的時候,如果任務通知值沒有更新成功就返回pdfail

pdpass:eaction設定為其他選項的時候統一返回pdpass

typedef enumenotifyaction

vtasknotifygivefromisr()傳送通知中斷版本,傳送通知,不帶通知值並且不保留接收任務的通知值,此函式會將接收任務的通知值加1.

void vtasknotifygivefromisr( taskhandle_t xtasktonotify,             //任務控制代碼,指定任務通知是傳送給哪個任務的

basetype_t *pxhigherprioritytaskwoken ) //退出函式以後是否進行任務切換,此值被函式自動設定

xtasknotifygive 傳送通知,不帶通知值並且不保留任務的通知值,此函式會將接收任務的通知值加1,用於在任務中

basetype_t tasknotifygive(taskhandle_t xtasktonotify);//任務控制代碼,指定任務通知是傳送給哪個任務的

返回值:pdpass:此函式只會返回pdpass

獲取任務通知 ultasknotifytake,當任務通知用作二值訊號量或者計數型訊號量的時候可以使用此函式來獲取訊號量

uint32_t ultasknotifytake( basetype_t xclearcountonexit,// 引數為pdfalser:退出函式的時候任務通知值減1,引數為pdtrue:退出函式時,任務通知清零.類似二值訊號量

ticktype_t xtickstowait )//阻塞時間

返回值:任務通知值減少或者清零之前的值

獲取任務通知 xtasknotifywait,不管任務通知用作二值訊號量,計數型訊號量,佇列和事件標誌組中的哪一種,都可以使用此函式來獲取任務通知。但是當任務通知用作位置訊號量和計數型訊號量的時候推薦使用ultasknotifytake()

basetype_t xtasknotifywait(uint32_t ulbitstoclearonentry,//當沒有接收到任務通知的時候將任務通知值

//與此引數的取反值進行位與運算,當此引數為0xffffffff //與此引數的取反值進行位與運算,當此引數為0xffffffff

//或者ulong_max的時候就會將任務通知值清零 //或者ulong_max的時候就會將任務通知值清零

uint32_t ulbitstoclearonexit,//如果接收了任務通知,

//在做完相應的處理退出函式之前將任務通知值與此引數 //在做完相應的處理退出函式之前將任務通知值與此引數

//的取反值進行位與運算,此引數為0xffffffff //的取反值進行位與運算,此引數為0xffffffff

//或者ulong_max的時候就會將任務通知清零 //或者ulong_max的時候就會將任務通知清零

uint32_t pulnotificationvalue,//此引數用來儲存任務通知值

ticktype_t xtickstowait);//阻塞時間

返回值:

pdtrue:獲取到了任務通知

pdfalse:任務通知獲取失敗

FreeRTOS任務相關API函式一

basetype t xtaskcreate taskfunction t pxtaskcode,任務實現函式指標 函式名 const char const pcname,任務名稱,用於追蹤除錯,名字長度不超過configmax name len const uint16 t usstackdept...

freertos 通知總結

注意 使用通知相比較 訊號量 佇列 不用建立省下了很多任務夫,省下空間 每乙個任務都有乙個32的訊號值,當建立的時候,這個值被初始化為0 1 configuse task notifications 設定為1 2 在控制塊上有這個成員變數 3 接受任務因為任務通知而進入阻塞狀態,但是傳送任務不會因為...

FreeRTOS之其它任務API函式測試

一,基礎 1,使用這些api函式時前,需要開啟對應的巨集定義。2,任務控制代碼就是任務控制塊。3,api函式的名字字尾 fromisr 說明這類函式只能在中斷服務函式中使用。4,當前系統中存在的任務數量,此值 掛起態的任務 阻塞態的任務 就緒態的任務 空閒任務 執行態的任務。5,idle空閒任務執行...