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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

函數(shù)大致用途

OS_TASK.C是uC/OS-II有關(guān)任務(wù)管理的文件,它定義了一些函數(shù):建立任務(wù)、刪除任務(wù)、改變?nèi)蝿?wù)的優(yōu)先級、掛起和恢復(fù)任務(wù),以及獲取有關(guān)任務(wù)的信息。

函數(shù)用途
OSTaskCreate()建立任務(wù)
OSTaskCreateExt()擴(kuò)展建立任務(wù)
OSTaskStkChk()堆棧檢驗(yàn)
OSTaskDel()刪除任務(wù)
OSTaskDelReq()請求刪除任務(wù)
OSTaskChangePrio()改變?nèi)蝿?wù)的優(yōu)先級
OSTaskSuspend()掛起任務(wù)
OSTaskResume()恢復(fù)任務(wù)
OSTaskQuery()獲取有關(guān)任務(wù)的信息

狀態(tài)切換圖

OSTaskCreate() and OSTaskCreateExt()

建立任務(wù)函數(shù),一旦任務(wù)建立就進(jìn)入就緒態(tài)準(zhǔn)備運(yùn)行。
任務(wù)可以在多任務(wù)開始之前建立,也可以是動(dòng)態(tài)地被一個(gè)運(yùn)行著的任務(wù)建立。
如果一個(gè)任務(wù)是被另一個(gè)任務(wù)建立的,而這個(gè)任務(wù)的優(yōu)先級高于建立它的那個(gè)任務(wù),這時(shí),這個(gè)剛剛建立的任務(wù)將立即得到CPU控制權(quán)。

OSTaskDel()

將任務(wù)轉(zhuǎn)入睡眠態(tài)。
它可以由本任務(wù)執(zhí)行,也可以由另一個(gè)任務(wù)調(diào)用該函數(shù)使本任務(wù)進(jìn)入睡眠態(tài)

OSTaskSuspend() and OSTaskResume()

掛起任務(wù)和恢復(fù)任務(wù):將任務(wù)轉(zhuǎn)入掛起態(tài)、將任務(wù)從掛起態(tài)轉(zhuǎn)入就緒態(tài)。
一些延遲函數(shù)和事件函數(shù)也可以完成任務(wù)到掛起狀態(tài)的轉(zhuǎn)換。

OSTaskChangePrio()

改變?nèi)蝿?wù)的優(yōu)先級。
它本身不改變?nèi)蝿?wù)狀態(tài),但是可能會(huì)影響任務(wù)的狀態(tài)。
例:執(zhí)行任務(wù)將就緒任務(wù)的優(yōu)先級改的比自己高,這樣cpu的控制權(quán)就會(huì)立刻被轉(zhuǎn)到那個(gè)任務(wù)手中

OSTaskStkChk()

為了避免為任務(wù)分配過多的堆棧空間,從而減少自己的應(yīng)用程序的代碼所需內(nèi)存數(shù)量。這時(shí)就需要獲取任務(wù)實(shí)際所需的堆棧空間大小。
本函數(shù)的操作:順著堆棧的棧底開始計(jì)算空閑的堆棧空間大小,具體實(shí)現(xiàn)方法是統(tǒng)計(jì)存儲(chǔ)值為0的連續(xù)堆棧入口的數(shù)目,直到發(fā)現(xiàn)存儲(chǔ)值不為0的堆棧入口

OSTaskQuery()

該函數(shù)通過檢查對應(yīng)任務(wù)的任務(wù)控制塊中的內(nèi)容來得到任務(wù)的信息。
可以獲取自身或其他應(yīng)用任務(wù)的信息。

OSTaskIdle()

當(dāng)所有任務(wù)都不在就緒態(tài)中,操作系統(tǒng)將執(zhí)行空閑任務(wù)的函數(shù)OSTaskIdle()。
這個(gè)函數(shù)由系統(tǒng)定義,不能刪除、掛起或者改變優(yōu)先級。

有關(guān)中斷

如果中斷沒有被禁止,正在運(yùn)行的任務(wù)是可以被中斷的。任務(wù)被中斷后,進(jìn)入中斷服務(wù)態(tài)(ISR).響應(yīng)中斷時(shí),正在執(zhí)行的任務(wù)處于掛起態(tài),中斷服務(wù)子程序控制了系統(tǒng)的控制權(quán)。
中斷服務(wù)程序完成后,不一定返回到被中斷的任務(wù)。
因?yàn)閡C/OS-II總是執(zhí)行就緒態(tài)任務(wù)中優(yōu)先級最高的任務(wù)。由于中斷服務(wù)程序的執(zhí)行,可能使被中斷的程序不是就緒態(tài)任務(wù)中優(yōu)先級最高的。
例如下面幾個(gè)情況:

1、中斷服務(wù)程序利用了時(shí)間的發(fā)生,而使得一個(gè)或讀個(gè)更高優(yōu)先級任務(wù)進(jìn)入就緒態(tài)
2、中斷服務(wù)程序建立或者恢復(fù)了一個(gè)新的高優(yōu)先級任務(wù)
3、中斷程序掛起了被中斷的任務(wù)。
一般來說中斷服務(wù)程序不會(huì)干涉任務(wù)的調(diào)度,所以后兩種情況不會(huì)經(jīng)常發(fā)生。第一種情況比較常見

總結(jié)

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

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