空閑任務鉤子函數(shù)詳解
1、鉤子函數(shù)
FreeRTOS中有多個鉤子函數(shù),鉤子函數(shù)類似回調函數(shù),當某個功能(函數(shù))執(zhí)行的時候就會調用鉤子函數(shù),至于鉤子函數(shù)的具體內(nèi)容那就由用戶來編寫。如果不需要使用鉤子函數(shù)的話就什么也不用管,鉤子函數(shù)是一個可選功能,可以通過宏定義來選擇使用哪個鉤子函數(shù),可選的鉤子函數(shù)如表所示:
鉤子函數(shù)的使用方法基本相同,用戶使能相應的鉤子函數(shù),然后自行根據(jù)實際需求編寫鉤子函數(shù)的內(nèi)容,下一節(jié)我們會以空閑任務鉤子函數(shù)為例講解如何使用鉤子函數(shù)。
2、空閑任務鉤子函數(shù)
在每個空閑任務運行周期都會調用空閑任務鉤子函數(shù),如果想在空閑任務優(yōu)先級下處理某個任務有兩種選擇:
● 在空閑任務鉤子函數(shù)中處理任務。
不管什么時候都要保證系統(tǒng)中至少有一個任務可以運行,因此絕對不能在空閑任務鉤子函數(shù)中調用任何可以阻塞空閑任務的 API 函數(shù),比如vTaskDelay(),或者其他帶有阻塞時間的信號量或隊列操作函數(shù)。
● 創(chuàng)建一個與空閑任務優(yōu)先級相同的任務。
創(chuàng)建一個任務是最好的解決方法,但是這種方法會消耗更多的 RAM。
要使用空閑任務鉤子函數(shù)首先要在 FreeRTOSConfig.h 中將宏 configUSE_IDLE_HOOK 改為1,然后編寫空閑任務鉤子函數(shù)vApplicationIdleHook()。通常在空閑任務鉤子函數(shù)中將處理器設置為低功耗模式來節(jié)省電能,為了與 FreeRTOS 自帶的 Tickless模式做區(qū)分,這里我暫且將這種低功耗的實現(xiàn)方法稱之為通用低功耗模式(因為幾乎所有的 RTOS 系統(tǒng)都可以使用這種方法實現(xiàn)低功耗)。這種通用低功耗模式和
FreeRTOS 自帶的 Tickless 模式的區(qū)別我們通過下圖來對比分析一下。
圖中有三個任務,它們分別為一個空閑任務(Idle),兩個用戶任務(Task1 和Task2),其中空閑任務一共有運行了三次,分別為(1)、(2)、(3),其中 T1 到 T12 是 12 個時刻
-
嵌入式
+關注
關注
5092文章
19177瀏覽量
307682 -
函數(shù)
+關注
關注
3文章
4346瀏覽量
62973 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62396
發(fā)布評論請先 登錄
相關推薦
ucosii空閑任務鉤子函數(shù)App_TaskIdleHook睡眠之后是不是只有喚醒才能執(zhí)行?
菜鳥求助 u/Cos III 空閑任務鉤子函數(shù) 數(shù)據(jù)不會溢出的問題
u/Cos III空閑任務鉤子函數(shù)static int num定義的變量竟然可以超過65535.
FreeRTOS檢測堆棧溢出,鉤子函數(shù)是回調到哪里?
關于鉤子函數(shù),在CCS的編譯器里有哪幾個規(guī)則?
為什么在鉤子函數(shù)中不能使用串口打印函數(shù)
【每日一練】第六節(jié):空閑線程及兩個常用的鉤子函數(shù)
鉤子函數(shù)是什么?RT-Thread系統(tǒng)引入鉤子函數(shù)有何用處
NANO3.15無法進入空閑線程鉤子函數(shù)該怎么辦
Zynq中使用FreeRTOS的空閑鉤子函數(shù)時在SDK中的設置
![Zynq中使用FreeRTOS的<b class='flag-5'>空閑</b><b class='flag-5'>鉤子函數(shù)</b>時在SDK中的設置](https://file1.elecfans.com//web2/M00/A6/B1/wKgZomUMP7aATofuAAAdLaqIvLU908.png)
FreeRTOS_005_FreeRTOSConfig.h配置文件(二) HOOK鉤子函數(shù)
![FreeRTOS_005_FreeRTOSConfig.h配置文件(二) HOOK<b class='flag-5'>鉤子函數(shù)</b>](https://file.elecfans.com/web1/M00/B7/72/o4YBAF5sc1qARu4FAABYKOPpnqc495.png)
實操RT-Thread系統(tǒng)CPU利用率功能添加
![實操RT-Thread系統(tǒng)CPU利用率功能添加](https://file.elecfans.com/web1/M00/BE/0E/pIYBAF7XGC6AOgPTAAAq8F7icsE879.png)
評論