日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FreeRTOS 任务优先级分配方案

發(fā)布時間:2025/4/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FreeRTOS 任务优先级分配方案 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

任務優(yōu)先級說明
下面對 FreeRTOS 優(yōu)先級相關的幾個重要知識點進行下說明,這些知識點在以后的使用中務必要掌握牢固。

? FreeRTOS 中任務的最高優(yōu)先級是通過 FreeRTOSConfig.h 文件中的 configMAX_PRIORITIES 進行
配置的,用戶實際可以使用的優(yōu)先級范圍是 0 到 configMAX_PRIORITIES – 1。比如我們配置此宏定
義為 5,那么用戶可以使用的優(yōu)先級號是 0,1,2,3,4,不包含 5,對于這一點,初學者要特別的注意。
? 用戶配置任務的優(yōu)先級數(shù)值越小,那么此任務的優(yōu)先級越低,空閑任務的優(yōu)先級是 0。
? 建議用戶配置宏定義 configMAX_PRIORITIES 的最大值不要超過 32,即用戶任務可以使用的優(yōu)先級
范圍是0到31。因為對于CM內(nèi)核的移植文件,用戶任務的優(yōu)先級不是大于等于32的話, portmacro.h
文件中的宏定義configUSE_PORT_OPTIMISED_TASK_SELECTION會優(yōu)化優(yōu)先級列表中要執(zhí)行的最
高優(yōu)先級任務的獲取算法(對于 CM 內(nèi)核的移植文件,此宏定義默認是使能的,當然,用戶也可以在
FreeRTOSConfig.h 文件中進行配置)。 相比通用的最高優(yōu)先級任務獲取算法,這兩種方式的對比如
下:
  ? 通用方式,沒有優(yōu)化---配置宏定義 configUSE_PORT_OPTIMISED_TASK_SELECTION 為 0:
  ? 所有平臺的移植文件都可以配置為 0,因為這是通用方式。
  ? 純 C 編寫,比專用方式效率低。
  ? 可用的優(yōu)先級數(shù)量不限制。
  ? 專用方式,進行優(yōu)化---配置宏定義 configUSE_PORT_OPTIMISED_TASK_SELECTION 為為 1:
  ? 部分平臺支持。
  ? 這些平臺架構有專用的匯編指令,比如 CLZ(Count Leading Zeros)指令,通過這些指令可以加速算法執(zhí)行速度。
  ? 比通用方式高效。
  ? 有最大優(yōu)先級數(shù)限制,通常限制為 32 個。

? 如果用戶在 FreeRTOSConfig.h 文件中配置宏定義 configUSE_TIME_SLICING 為 1,或者沒有配置

此宏定義,時間片調度都是使能的。 另外,只要芯片資源允許,可以配置任意多個同優(yōu)先級任務。
(備注:沒有定義 configUSE_TIME_SLICING,也能使用時間片調度是因為此宏定義默認已經(jīng)在
FreeRTOS.h 文件中使能)
? FreeRTOS 中處于運行狀態(tài)的任務永遠是當前能夠運行的最高優(yōu)先級任務。 下一章節(jié)講解調度器,大
家會對這個知識點有一個全面的認識。


任務優(yōu)先級分配方案
對于初學者,有時候會糾結任務優(yōu)先級設置為多少合適,因為任務優(yōu)先級設置多少是沒有標準的。對
于這個問題,我們這里為大家推薦一個標準,任務優(yōu)先級設置推薦方式如下圖 13.1 所示:

?

? IRQ 任務:IRQ 任務是指通過中斷服務程序進行觸發(fā)的任務,此類任務應該設置為所有任務里面優(yōu)先級最高的。

? 高優(yōu)先級后臺任務:比如按鍵檢測,觸摸檢測,USB 消息處理,串口消息處理等,都可以歸為這一類任務。

? 低優(yōu)先級的時間片調度任務:比如 emWin 的界面顯示,LED 數(shù)碼管的顯示等不需要實時執(zhí)行的都可以歸為這一類任務。 實際應用中用戶不必拘泥于將這些任務都設置為優(yōu)先級 1 的同優(yōu)先級任務,可以設置多個優(yōu)先級,只需注意這類任務不需要高實時性。
? 空閑任務:空閑任務是系統(tǒng)任務。
? 特別注意:IRQ 任務和高優(yōu)先級任務必須設置為阻塞式(調用消息等待或者延遲等函數(shù)即可),只有
這樣,高優(yōu)先級任務才會釋放 CPU 的使用權,,從而低優(yōu)先級任務才有機會得到執(zhí)行。
這里的優(yōu)先級分配方案是我們推薦的一種方式,實際項目也可以不采用這種方法。 調試出適合項目需求的才是最好的。?

中斷優(yōu)先級和任務優(yōu)先級區(qū)別
部分初學者也容易在這兩個概念上面出現(xiàn)問題。 簡單的說,這兩個之間沒有任何關系,不管中斷的優(yōu)
先級是多少,中斷的優(yōu)先級永遠高于任何任務的優(yōu)先級,即任務在執(zhí)行的過程中,中斷來了就開始執(zhí)行中
斷服務程序。
另外對于 STM32F103,F407 和 F429 來說,中斷優(yōu)先級的數(shù)值越小,優(yōu)先級越高。 而 FreeRTOS
的任務優(yōu)先級是,任務優(yōu)先級數(shù)值越小,任務優(yōu)先級越低。




?

總結

以上是生活随笔為你收集整理的FreeRTOS 任务优先级分配方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。