新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > VxWorks下基于看門狗的通用定時器設(shè)計

        VxWorks下基于看門狗的通用定時器設(shè)計

        作者: 時間:2013-05-31 來源:網(wǎng)絡(luò) 收藏

        2.3 定時器實現(xiàn)
        2.3.1 定時器軟件結(jié)構(gòu)
        共享定時器軟件結(jié)構(gòu)如圖2所示:

        本文引用地址:http://www.104case.com/article/148020.htm

        b.jpg


        CWatchDogTimer類完成了對的封裝,它由一些通用的函數(shù)來維護(hù)一個。其中Create()函數(shù)用來創(chuàng)建一個;Delete()用來刪除該定時器;Start()用來啟動定時任務(wù);Cancel()用來暫停定時器工作,此時再使用Start()函數(shù)可以恢復(fù)定時器的運行。
        TimerInfo數(shù)據(jù)結(jié)構(gòu)由tExe與tInterval兩個屬性構(gòu)成,tExe記錄定時器的執(zhí)行時間,tInterval表示定時器的時間間隔。
        TimerList用來維護(hù)多個TimerInfo結(jié)構(gòu)的變量,每個 TiraerInfo變量記錄一個定時器參數(shù)信息。
        CEffieientTimer類完成對多個定時任務(wù)的管理,包括RegistTimer()函數(shù)實現(xiàn)注冊一個定時器;UnRegistTimer()用來注銷一個定時器;ClearTimerList()用來清空定時器列表中所有定時器任務(wù);IsEmpty()用來判斷定時器列表是否為空。
        2.3.2 看門狗定時模塊實現(xiàn)
        看門狗定時模塊處理流程如圖3所示。

        c.jpg


        看門狗定時器模塊是共享定時器的基礎(chǔ),它實現(xiàn)了單一定時器的建立、啟動、刪除、取消等功能。首先通過Create()函數(shù)建立一個看門狗定時器,同時設(shè)定定時器時延、定時次數(shù)等參數(shù);然后通過Start()函數(shù)啟動定時器;看門狗程序判斷是否到達(dá)時間間隔,如果到達(dá)則開始執(zhí)行ISR程序,如果沒有到達(dá)則繼續(xù)等待;當(dāng)執(zhí)行完ISR程序后,定時器將判斷當(dāng)前執(zhí)行次數(shù)是否到達(dá)執(zhí)行總次數(shù),如果是則結(jié)束該次定時任務(wù),若不是程序?qū)⑻D(zhuǎn)到重新啟動定時器后依次執(zhí)行。



        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 新平| 新邵县| 新竹市| 图木舒克市| 麻栗坡县| 景宁| 雅江县| 新巴尔虎右旗| 九龙坡区| 朝阳区| 谷城县| 马山县| 青海省| 哈巴河县| 五台县| 临城县| 鞍山市| 梨树县| 安吉县| 长泰县| 五华县| 赤壁市| 连城县| 出国| 栾城县| 丘北县| 定安县| 侯马市| 乐亭县| 汉寿县| 清水河县| 曲靖市| 长沙县| 五寨县| 汝阳县| 蒲城县| 容城县| 同江市| 长岛县| 遂宁市| 江达县|