午夜欧美_国产视频一区二区_91精品国产综合久久久久久丝袜_亚洲精品久久久久久动漫_成人午夜精品一区二区三区_亚洲伦理影院

ucos的時(shí)間管理機(jī)制

來源:網(wǎng)絡(luò)

點(diǎn)擊:2449

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞: ucos,時(shí)間管理

      一。時(shí)間管理機(jī)制

      Ucos提供的延時(shí)基于系統(tǒng)時(shí)鐘。在系統(tǒng)初始化時(shí),會(huì)進(jìn)行系統(tǒng)時(shí)鐘的初始化。系統(tǒng)時(shí)鐘一般由硬件的某個(gè)時(shí)鐘提供,該時(shí)鐘會(huì)定時(shí)中斷,稱為一個(gè)tick。在每個(gè)tick發(fā)生時(shí),系統(tǒng)進(jìn)入時(shí)鐘中斷ISR。ISR 調(diào)用OSTimeTick()。 OSTimeTick()對(duì)OSTCBList鏈表中的每個(gè)任務(wù)的進(jìn)行延時(shí)處理,即將任務(wù)的TCB中的.OSTimeDly--。若OSTimeDly=0, 如果任務(wù)不被掛起,則將任務(wù)就緒,等待調(diào)度。OSTCBList包含了系統(tǒng)中所有創(chuàng)建的任務(wù)。

      任務(wù)延時(shí),即將任務(wù)從就緒表中刪除,將OSTimeDly置為合適的值。等待OSTimeDly=0時(shí),再置為就緒,等待調(diào)度。

      因此任務(wù)的延時(shí),并不是要以延時(shí)任務(wù)時(shí)長,理想上總是tick中斷間隔的N倍。

      Ucos還允許對(duì)系統(tǒng)時(shí)鐘tick進(jìn)行計(jì)數(shù),以計(jì)算自系統(tǒng)系統(tǒng)以來進(jìn)行了多少個(gè)tick.

      二、ucos提供的接口函數(shù)

      void OSTimeDly (INT16U ticks)。

      功能:延時(shí)ticks個(gè)系統(tǒng)tick時(shí)長。當(dāng)成功延時(shí)后,進(jìn)行任務(wù)調(diào)度。

      INT8U OSTimeDlyHMSM (INT8U hours, INT8U minutes, INT8U seconds, INT16U milli)

      功能:提供基于毫秒,秒等容易的用戶接口。

      INT8U OSTimeDlyResume (INT8U prio);

      功能:恢復(fù)延時(shí)任務(wù)

      INT32U OSTimeGet (void);

      void OSTimeSet (INT32U ticks);

      功能:返回,設(shè)置系統(tǒng)時(shí)鐘tick計(jì)數(shù)。

      三、關(guān)于延時(shí)功能的使用

      雖然ucos提供了延時(shí)函數(shù),但因?yàn)槭腔谙到y(tǒng)時(shí)鐘中斷的,所有對(duì)于小于時(shí)鐘中斷時(shí)間間隔的延時(shí),并不能提供;只能通過軟件延時(shí)。

      在很多情況下,可以通過信號(hào)量、郵箱等方式取代延時(shí)功能。

      特別要注意的是,在多任務(wù)的運(yùn)行環(huán)境中,即使任務(wù)延時(shí)已經(jīng)完畢,但由于此時(shí)有高優(yōu)先級(jí)的任務(wù)運(yùn)行,此時(shí)任務(wù)仍不能運(yùn)行。至任務(wù)可以運(yùn)行時(shí),實(shí)際的延時(shí)已經(jīng)超過了預(yù)期的延時(shí)。

      附:給出了OSTimeTick () 函數(shù)的具體程序

      void OSTimeTick (void) //這個(gè)節(jié)拍服務(wù)函數(shù)是在OSTickISR函數(shù)中調(diào)用的,目的是在時(shí)鐘節(jié)拍到來時(shí),檢查每個(gè)任務(wù)的任務(wù)控制塊中的.OSTCBDly-1后是否為0,如果是,那么表明這個(gè)任務(wù)剛才是掛起的狀態(tài),此時(shí)應(yīng)改變?yōu)榫途w態(tài)

      {

      OS_TCB *ptcb;

      OSTimeTickHook(); //

      ptcb = OSTCBList; //時(shí)鐘節(jié)拍到來時(shí),將控制塊雙向鏈表的第一個(gè)控制塊取出(并不是節(jié)拍之前運(yùn)行的任務(wù))

      while (ptcb-》OSTCBPrio != OS_IDLE_PRIO) { //空閑任務(wù)處于控制塊雙向鏈表的最后一個(gè),如果取出的控制塊為空閑任務(wù)的控制塊,那么已經(jīng)取到最后一個(gè)了,就結(jié)束

      // OS_ENTER_CRITICAL();

      if (ptcb-》OSTCBDly != 0) { //

      if (--ptcb-》OSTCBDly == 0) { //

      if (!(ptcb-》OSTCBStat & OS_STAT_SUSPEND)) { //檢查任務(wù)是否處于強(qiáng)制掛起狀態(tài),如果是,那再掛起一個(gè)時(shí)鐘節(jié)拍,否則就將它就緒

      OSRdyGrp |= ptcb-》OSTCBBitY;

      OSRdyTbl[ptcb-》OSTCBY] |= ptcb-》OSTCBBitX;

      } else { //

      ptcb-》OSTCBDly = 1; //

      } //

      }

      }

      ptcb = ptcb-》OSTCBNext; //下一個(gè)任務(wù)控制塊

      // OS_EXIT_CRITICAL();

      }

      // OS_ENTER_CRITICAL(); //

      OSTime++; //節(jié)拍計(jì)數(shù)器+1

      // OS_EXIT_CRITICAL();

      }

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請(qǐng)聯(lián)系我們刪除。

    主站蜘蛛池模板: 欧美在线一区二区三区 | 阿v精品一区二区三区 | 国产一区在线播放 | 日韩免费视频观看 | 中文字幕日韩一区二区三区不卡 | 国产亚洲欧美一区二区三区 | 欧美亚洲综合另类在线观看 | 91香蕉国产亚洲一区二区三区 | 日韩中文欧美 | 成人免费一区二区三区 | 91香蕉国产亚洲一区二区三区 | 日韩高清在线高清免费 | 欧美日韩亚洲色图 | 欧美一区精品二区三区 | 国产高清视频免费在线观看 | 丝袜制服中文字幕 | 亚洲免费久久 | 久久91精品国产91久久跳舞 | 欧美亚洲另类视频 | 免费国产最新进精品视频 | 国产免费不卡 | 欧美激情综合亚洲一二区 | 国产高清在线观看 | 国产欧美在线观看一区二区 | 怡红院一区二区三区 | 欧美日韩国产另类一区二区三区 | 国产成人亚洲精品影院 | 亚洲天堂一区二区三区 | 久国产精品视频 | 欧美精品第一页 | 亚洲国产精品一区二区久久 | www.亚洲欧美 | 精品一区二区三区四区 | 国产成人免费视频精品一区二区 | 欧美激情在线精品一区二区 | 国产成人综合久久精品尤物 | 欧美高清视频在线观看 | 国产盗摄精品一区二区三区 | 中文字幕亚洲天堂 | 亚洲热在线 | www欧美在线观看 |