ucosIII 系統任務

2021-07-09 01:26:44 字數 1982 閱讀 2145

系統任務

空閒任務

空閒任務特點:

1. 空閒任務是ucosiii建立的第乙個任務。

2. 空閒任務是ucosiii必須建立的。

3. 空閒任務優先順序總是為os_cfg_prio_mak-1。

4. 空閒任務中不能呼叫任何可使空閒任務進入等待態的函式!

//在osinit()中呼叫:

os_idletaskinit(p_err);

//在裡面通過ostaskcreate()建立空閒任務

//空閒任務函式

os_idletask()

時鐘節拍任務

時鐘節拍任務用來跟蹤任務延時和任務等待超時,任務函式為os_ticktask(),是ucosiii必須建立的乙個任務,任務優先順序用巨集os_cfg_tick_task_prio來定義 ,一般時鐘節拍任務的任務應該設定乙個相對較高的優先順序。

統計任務

在ucosiii中統計任務可用來統計cpu的使用率、各個任務的cpu使用率和各任務的堆疊使用情況,預設情況下統計任務是不會建立的。如果要開啟統計任務的話需要做如下步驟:

1、將巨集os_cfg_stat_task_en置1

2、必須在main函式建立的以乙個任務也是唯一的乙個應用任務裡面呼叫函式osstattaskcpuusageinit()

3、統計任務的優先順序通過巨集os_cfg_stat_task_prio來設定,一般設定os_cfg_prio_max-2,也就是倒數第二個優先順序。

*通過呼叫ostaskstkchk()得到每個任務堆疊的使用情況

*在tcb中的stkused和stkfree 檢視當前堆疊的使用情況

定時任務

ucosiii提供軟體定時器功能,定時任務是可選的,將巨集os_cfg_tmr_en設定為1就會使能定時任務,在osinit()中將會呼叫函式os_tmrinit()來建立定時任務。定時任務的優先順序通過巨集os_cfg_tmr_task_prio定義,alientek預設將定時器任務優先順序設定為2。

中斷服務管理任務

當把os_cfg.h檔案中的巨集os_cfg_isr_post_deferred_en置1就會使能中斷服務管理任務,當isr(中斷服務函式)呼叫ucosiii提供的「post」函式時,要傳送的資料和傳送的目的地都會存入乙個特別的緩衝佇列中,當所有巢狀的isr都執行完成以後ucosiii會做任務切換,執行中斷服務管理任務,該任務會把快取佇列中存放的資訊重發給相應的任務。這樣做的好處就是可以減少中斷關閉的時間,否則,在isr中還需要把任務從等待列表中刪除,並把任務放入就緒表,以及做一些其他的耗時操作。

中斷服務管理任務的優先順序永遠為0,不可更改!

*在中斷開啟和關閉期間,會遮蔽掉幾乎所有的中斷。如果時間太長,會影響ucos的執行

鉤子函式

鉤子函式一般主要是用來擴充套件其他函式(任務)功能的,鉤子函式有如下幾個:鉤子

解釋1、osidletaskhook()

空閒任務呼叫這個函式,可以用來讓cpu進入低功耗模式

2、osinithook()

系統初始化函式osinit()呼叫此函式。

3、osstattaskhook(),統計任務每秒中都會呼叫這個函式

此函式允許你向統計任務中新增自己的應用函式。

4、ostaskcreatehook()

任務建立的鉤子函式。

5、ostaskdelhook()

任務刪除的鉤子函式。

6、ostaskreturnhook()

任務意外返回時呼叫的鉤子函式,比如刪除某個任務

7、ostaskswhook()

任務切換時候呼叫的鉤子函式。

8、ostimetickhook()

滴答定時器呼叫的鉤子函式。

UCOS iii 任務排程

任務排程的時機 1 當前任務給其他任務發訊號,結束時呼叫。任務呼叫提交服務函式 os?post 傳送訊號量或訊息給其它任務時排程發生 2 任務呼叫ostimedly 或ostimedlyhmsm 如果延時引數不是0,排程發生。排程會在該任務被放入掛起佇列後馬上執行。3 任務所等待的事件發生或超時。4...

uc OS III任務的理解

在實際應用中一般是將工作拆分為多個任務的,並且每個任務都是可靠的。在使用uc os就可以很好的解決這個問題,任務又叫執行緒,在對於單個cpu來說,在任何時刻,都是只能有有乙個任務被執行。uc os iii 支援多工且對任務數量沒有限制,任務數僅取決於處理器記憶體的大小 ram 多任務排程是任務間占用...

UCOSIII的任務狀態

1 休眠態 任務已經在cpu的flash中了,但是還沒有交給ucosiii管理。2 就緒態 系統為任務分配了任務控制塊,並且任務已經在就緒表中登記,這時這個任務就具有了執行的條件,此時任務的狀態就是就緒態。3 執行態 任務獲得cpu的使用權,正在執行。任何時刻只能有乙個任務處於執行態。4 等待態 正...