注意 使用通知相比較 訊號量 佇列 不用建立省下了很多任務夫,省下空間
每乙個任務都有乙個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...