UCOSIII的系統任務


UCOSIII的系統任務

 一、空閑任務

  空閑任務的特點:

  1、空閑任務是UCOSIII創建的第一個任務;

  2、空閑任務是UCOSIII必須要創建的;

  3、空閑任務優先級是最低的,為:“OS_CFG_PRIO_MAK - 1”,也就是倒數第一個優先級;

  4、空閑任務中不能調用任何可使空閑任務進入等待態的函數!

  小知識點:空閑任務在程序開始部分的“OSInit(&err);”函數中創建;

  空閑任務的任務函數原型在:UCOSIII源碼的“os_core.c”中的大概第781行,沒事可以找出來多看看上面注釋都什么意思;

  二、時鍾節拍任務

  時鍾節拍任務的特點:

  1、時鍾節拍任務用來跟蹤任務延時和任務等待超時;

  2、是UCOSIII必須要創建的任務;

  3、任務優先級一般要設的高一點,任務優先級用宏“OS_CFG_TICK_TASK_PRIO”來定義;

  

  圖 1

  如上圖所示,列出了幾個系統任務的優先級設置,時鍾節拍任務的優先級僅次於中斷;

  下圖是這個宏定義在源碼中的定義:

  

  可以看到,是在源碼中“os_cfg_app.h”中定義的,不過我們用戶也可以自己修改,但是原則上,這個優先級要高一點,因為時鍾節拍對於整個系統來說是比較重要的,它應該要優先處理;

  三、統計任務

  特點:

  1、在UCOSIII中,統計任務可用來統計CPU的使用率、各個任務的CPU使用率和各任務的堆棧使用情況;

  2、默認情況下,系統不會自動創建該任務,也就是說,它不是必須的,如果需要用戶可開啟這個任務;

  3、統計任務的優先級通過宏“OS_CFG_STAT_TASK_PRIO”來設置,一般設置為“OS_CFG_PRIO_MAX - 2”,也就是倒數第二個優先級,在圖一中也有說明;

  統計任務開啟步驟:

  1、將宏“OS_CFG_STAT_TASK_EN”置 1;

  2、必須在main函數創建的以一個任務也是唯一的一個應用任務里面調用函數“OSStatTaskCPUUsageInit()”;

  怎么理解上面一句話呢,先看看程序里面的使用方法:

  

  按照我的理解就是,統計任務要由用戶自己拿出來調用開啟,也就是說需要在自己的 main 函數中寫上關於統計任務開啟的設置,而且你只能調用一次,(因為只需打開一次...)不能說是打開一次了又打開一次...我上面就是把他寫到了任務創建函數中,這個任務函數只會執行一次,他的作用就是去專門創建用戶想要的任務,事情辦完之后就把自己刪除了;

  四、定時任務

  特點:

  1、可選,不是必須開啟的;

  2、不是用戶去創建該任務,而是將宏定義打開后,由“OSInit()”來創建;

  開啟方法:

  1、將宏“OS_CFG_TMR_EN”設置為 1,以使能定時任務;

  2、優先級由宏“OS_CFG_TMR_TASK_PRIO”定義;

  五、中斷服務管理任務

  特點/綜合:

  1、中斷服務管理任務的優先級永遠為 0,也就是永遠最高,不可更改!

  2、可選,不是必須創建;

  3、通過宏“OS_CFG_ISR_POST_DEFERRED_EN”置 1,來開啟;

  4、作用:我們開下原子的解釋:

 

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM