久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

ucos內(nèi)核中的任務(wù)延時函數(shù)是什么

這篇文章給大家介紹ucos內(nèi)核中的任務(wù)延時函數(shù)是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的肅州網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

ysmz4:以下主要解決我為什么設(shè)置OSTimeDly(2),延時2ms的問題。

只要你延時超過1個系統(tǒng)時鐘節(jié)拍(1ms),UCOSII就會執(zhí)行任務(wù)切換,不需要計(jì)算每個任務(wù)延時多久,只要你保證延時大于一個系統(tǒng)時鐘節(jié)拍,就可以了.

   編寫過單片機(jī)程序的都知道,延時函數(shù)是經(jīng)常被用到的。

   在ucos II 里,系統(tǒng)也提供了這樣的延時函數(shù)。一個是大眾版的OSTimeDly(),一個是精致版的OSTimeDlyHMSM()。 蘿卜青菜,各有所愛,隨你怎么選。

   這兩者的區(qū)別是,OSTimeDly()的延時時間是以節(jié)拍數(shù)來衡量的,OSTimeDlyHMSM()的延時時間則是以具體時間大小來衡量的。

   這兩個函數(shù)有著非常重要重要的作用,就是當(dāng)你調(diào)用這兩個函數(shù)的時候,ucos II 會進(jìn)行一次任務(wù)調(diào)度。所以cpu能在各任務(wù)間進(jìn)行切換,很大功勞得益于這兩個函數(shù)。

   調(diào)用這兩個延時函數(shù)都會掛起本任務(wù),cpu就會執(zhí)行就緒表中優(yōu)先級最高的任務(wù)。

   有一點(diǎn)要注意的是任務(wù)調(diào)用OSTimeDly()后,一旦規(guī)定的時間期滿或者有其它的任務(wù)通過調(diào)用OSTimeDlyResume()取消了延時,它就會馬上進(jìn)入就緒狀態(tài),而不是執(zhí)行狀態(tài),也就是說延時結(jié)束后本任務(wù)不一定會被立刻執(zhí)行。

   假設(shè)你在任務(wù)執(zhí)行過程中,調(diào)用延時函數(shù)延時0.001秒,時間的延時時間是有可能大于這個值的。這就得看你任務(wù)的安排了。

   下面看看這兩個函數(shù)的具體實(shí)現(xiàn)。

程序清單 L 5.1     OSTimeDly().

Void OSTimeDly (INT16U ticks)

{

    if (ticks > 0) {                                                         (1)

        OS_ENTER_CRITICAL();

        if ((OSRdyTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) {     (2)

            OSRdyGrp &= ~OSTCBCur->OSTCBBitY;

        }

        OSTCBCur->OSTCBDly = ticks;                                        (3)

        OS_EXIT_CRITICAL();

        OSSched();                                                            (4)

    }

}

其實(shí)程序就做了下面幾件事

1.       把本任務(wù)從任務(wù)就緒表中刪除

2.       把延時值保持到任務(wù)控制塊中,并且通過OSTimeTick()每隔一個時鐘節(jié)拍就減少一個延時節(jié)拍數(shù)

3.       調(diào)用任務(wù)調(diào)度函數(shù),切換任務(wù)。

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

{

    INT32U ticks;

    INT16U loops;

 

 

    if (hours > 0 || minutes > 0 || seconds > 0 || milli > 0) {          (1)

        if (minutes > 59) {

            return (OS_TIME_INVALID_MINUTES);

        }

        if (seconds > 59) {

            return (OS_TIME_INVALID_SECONDS);

        }

        If (milli > 999) {

            return (OS_TIME_INVALID_MILLI);

        }

        ticks = (INT32U)hours    * 3600L * OS_TICKS_PER_SEC                 (2)

              + (INT32U)minutes  *   60L * OS_TICKS_PER_SEC

              + (INT32U)seconds  *         OS_TICKS_PER_SEC

              + OS_TICKS_PER_SEC * ((INT32U)milli

              + 500L/OS_TICKS_PER_SEC) / 1000L;                          (3)

        loops = ticks / 65536L;                                              (4)

        ticks = ticks % 65536L;                                               (5)

        OSTimeDly(ticks);                                                      (6)

        while (loops > 0) {                                                    (7)

            OSTimeDly(32768);                                                  (8)

            OSTimeDly(32768);

            loops--;

        }

        return (OS_NO_ERR);

    } else {

        return (OS_TIME_ZERO_DLY);                                            (9)

    }

}

關(guān)于ucos內(nèi)核中的任務(wù)延時函數(shù)是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

當(dāng)前名稱:ucos內(nèi)核中的任務(wù)延時函數(shù)是什么
文章來源:http://sd-ha.com/article38/jgsjsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈虛擬主機(jī)、企業(yè)建站、電子商務(wù)、品牌網(wǎng)站設(shè)計(jì)、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)