一種高效率的定時器管理模塊設計
2.4定時器的刪除
在目標定時器到期之前,由于某種原因用戶可能會要求取消定時器。如重發(fā)定時器,用戶在發(fā)送數(shù)據(jù)幀后啟動該定時器,并等待對方返回響應幀。如果在定時時間結(jié)束時沒有收到響應幀,用戶就需要重發(fā)原數(shù)據(jù)幀;如果在定時時間結(jié)束之前收到響應幀,用戶就需要馬上取消該定時器,然后進行下一次通信過程。
刪除定時器函數(shù)以定時器節(jié)點ID號作為輸入?yún)?shù),將定時器節(jié)點設為空閑狀態(tài),并根據(jù)需要更新輔助定時器,流程如圖3所示。
2.5定時器的驅(qū)動
軟件定時器的驅(qū)動由硬件定時器提供。在硬件定時器中斷中,首先將輔助定時器的值減1。如果輔助定時器值為O,則表示定時值最小的定時器已經(jīng)超時,應將對應的消息發(fā)送給用戶任務,將節(jié)點置為空閑狀態(tài),并重新計算其他節(jié)點的定時值,同時查找定時值最小的節(jié)點,更新輔助定時器。驅(qū)動流程如圖4所示。
關鍵代碼如下:
結(jié)語
本文設計的定時器管理器模塊,具有邏輯簡單、效率高的特點,在實驗室自主研發(fā)的無線傳感器網(wǎng)絡中得到應用。在共包含30個節(jié)點的溫、濕、光信息采集系統(tǒng)中,使用該定時器管理模塊的無線傳感器網(wǎng)絡協(xié)議運行高效、穩(wěn)定。
評論