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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

uC/OS-II OS_TASK.C中有关任务管理的函数

發布時間:2023/12/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uC/OS-II OS_TASK.C中有关任务管理的函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數大致用途

OS_TASK.C是uC/OS-II有關任務管理的文件,它定義了一些函數:建立任務、刪除任務、改變任務的優先級、掛起和恢復任務,以及獲取有關任務的信息。

函數用途
OSTaskCreate()建立任務
OSTaskCreateExt()擴展建立任務
OSTaskStkChk()堆棧檢驗
OSTaskDel()刪除任務
OSTaskDelReq()請求刪除任務
OSTaskChangePrio()改變任務的優先級
OSTaskSuspend()掛起任務
OSTaskResume()恢復任務
OSTaskQuery()獲取有關任務的信息

狀態切換圖

OSTaskCreate() and OSTaskCreateExt()

建立任務函數,一旦任務建立就進入就緒態準備運行。
任務可以在多任務開始之前建立,也可以是動態地被一個運行著的任務建立。
如果一個任務是被另一個任務建立的,而這個任務的優先級高于建立它的那個任務,這時,這個剛剛建立的任務將立即得到CPU控制權。

OSTaskDel()

將任務轉入睡眠態。
它可以由本任務執行,也可以由另一個任務調用該函數使本任務進入睡眠態

OSTaskSuspend() and OSTaskResume()

掛起任務和恢復任務:將任務轉入掛起態、將任務從掛起態轉入就緒態。
一些延遲函數和事件函數也可以完成任務到掛起狀態的轉換。

OSTaskChangePrio()

改變任務的優先級。
它本身不改變任務狀態,但是可能會影響任務的狀態。
例:執行任務將就緒任務的優先級改的比自己高,這樣cpu的控制權就會立刻被轉到那個任務手中

OSTaskStkChk()

為了避免為任務分配過多的堆??臻g,從而減少自己的應用程序的代碼所需內存數量。這時就需要獲取任務實際所需的堆棧空間大小。
本函數的操作:順著堆棧的棧底開始計算空閑的堆??臻g大小,具體實現方法是統計存儲值為0的連續堆棧入口的數目,直到發現存儲值不為0的堆棧入口

OSTaskQuery()

該函數通過檢查對應任務的任務控制塊中的內容來得到任務的信息。
可以獲取自身或其他應用任務的信息。

OSTaskIdle()

當所有任務都不在就緒態中,操作系統將執行空閑任務的函數OSTaskIdle()。
這個函數由系統定義,不能刪除、掛起或者改變優先級。

有關中斷

如果中斷沒有被禁止,正在運行的任務是可以被中斷的。任務被中斷后,進入中斷服務態(ISR).響應中斷時,正在執行的任務處于掛起態,中斷服務子程序控制了系統的控制權。
中斷服務程序完成后,不一定返回到被中斷的任務。
因為uC/OS-II總是執行就緒態任務中優先級最高的任務。由于中斷服務程序的執行,可能使被中斷的程序不是就緒態任務中優先級最高的。
例如下面幾個情況:

1、中斷服務程序利用了時間的發生,而使得一個或讀個更高優先級任務進入就緒態
2、中斷服務程序建立或者恢復了一個新的高優先級任務
3、中斷程序掛起了被中斷的任務。
一般來說中斷服務程序不會干涉任務的調度,所以后兩種情況不會經常發生。第一種情況比較常見

總結

以上是生活随笔為你收集整理的uC/OS-II OS_TASK.C中有关任务管理的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。