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