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、作用:我們開下原子的解釋:

