在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            關(guān) 閉

            新聞中心

            EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > μC/OSII中軟件定時器的優(yōu)缺點與改進(jìn)

            μC/OSII中軟件定時器的優(yōu)缺點與改進(jìn)

            作者: 時間:2011-04-18 來源:網(wǎng)絡(luò) 收藏

              2.2.4 回調(diào)函數(shù)任務(wù)OSTmr_TaskCallback()

              在源文件tmr.c中加入回調(diào)函數(shù)任務(wù)OSTmr_TaskCallback(),根據(jù)就緒表中的優(yōu)先級執(zhí)行相應(yīng)回調(diào)函數(shù),回調(diào)函數(shù)任務(wù)的結(jié)構(gòu)如下所示:

              static voidOSTmr_TaskCallback(void *p_arg) {……/*變量定義*/

              for (;;){//請求信號量OSTmrSemCallback

              OSSemPend(OSTmrSemCallback, 0, err);

              OSTmr_Lock();/*上鎖*/

              while (OSTmrRdyGrp) {

              ……/*從就緒表中得到最高優(yōu)先級的定時器回調(diào)函數(shù)*/

              ……/*刪除就緒表中的占有位*/

              OSTmr_Unlock(); /*定時器上鎖*/

              pfnct = OSTmrCall[prio].OSTmrCallback;

             ?。?pfnct)((void *)(OSTmrCall[prio].OSTmr),OSTmrCall[prio].OSTmrCallbackArg); /*執(zhí)行回調(diào)函數(shù)*/

              OSTmr_Lock(); /*定時器上鎖*/

              }

              OSTmr_Unlock();/*定時器解鎖*/

              }

              }

              由以上代碼可知,訪問就緒表時定時器上鎖,而執(zhí)行回調(diào)函數(shù)時處于定時器解鎖狀態(tài)。如果回調(diào)函數(shù)執(zhí)行時間較長,在下一個定時器節(jié)拍到來時,定時器掃描任務(wù)可以得到及時的執(zhí)行,當(dāng)前回調(diào)函數(shù)執(zhí)行完成后,可以及時得執(zhí)行就緒表中最高優(yōu)先級定時器的回調(diào)函數(shù)。由此可以看出,高優(yōu)先級定時器的回調(diào)函數(shù)得到及時執(zhí)行,系統(tǒng)的實時性提高。

              實驗測試發(fā)現(xiàn),在回調(diào)函數(shù)任務(wù)OSTmr_TaskCallback中,使用任務(wù)調(diào)度上鎖與解鎖比使用定時器上鎖與解鎖(即信號量的請求)執(zhí)行速度快一些。畢竟回調(diào)函數(shù)任務(wù)的優(yōu)先級很高(一般僅次于定時器掃描任務(wù)OSTmr_Task的優(yōu)先級),所以使用任務(wù)調(diào)度鎖定比定時器鎖定要好一些。當(dāng)然,還可以使用開關(guān)中斷的方式對就緒表進(jìn)行訪問,可以根據(jù)實際情況選擇使用哪種方式。

              3 實驗測試

              本次實驗使用開發(fā)環(huán)境IAR 5.30,以基于CortexM3內(nèi)核的路虎LPC1768開發(fā)板作為硬件實驗平臺[6],對實時操作系統(tǒng)μ 2.86進(jìn)行。

              對后的操作系統(tǒng)進(jìn)行測試,在主函數(shù)中創(chuàng)建一個啟動任務(wù),在啟動任務(wù)中創(chuàng)建4個周期定時器(系統(tǒng)中“時間輪”數(shù)設(shè)為4),賦予不同優(yōu)先級與定時值,每個定時器控制一個LED的閃爍,啟動這4個定時器。在啟動函數(shù)中創(chuàng)建4個任務(wù),每個任務(wù)也是控制一個LED燈的閃爍(利用任務(wù)延時),之后啟動任務(wù)掛起。利用μ CSPY插件觀察各定時器的運(yùn)行情況,如圖2所示。

            軟件定時器運(yùn)行界面


            圖2 定時器運(yùn)行界面

              經(jīng)實驗測試,系統(tǒng)運(yùn)行正常,定時器回調(diào)函數(shù)得到及時的執(zhí)行,系統(tǒng)實時性得到很大的提高。

              4 結(jié)語

              軟件定時器后,定時器任務(wù)的執(zhí)行時間確定,僅與同時完成定時的定時器數(shù)目有關(guān),對處于就緒表中的定時器回調(diào)函數(shù)按優(yōu)先級執(zhí)行,使高優(yōu)先級定時器的回調(diào)函數(shù)得到及時的執(zhí)行,提高了系統(tǒng)的實時性。


            上一頁 1 2 3 下一頁

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉