VxWorks下的異步通用定時器設計
3.2 接口設計
提供類似于Windows的接口函數,定時器的唯一索引是id號,操作定時器均通過id完成。分為2種類型定時器:周期性定時器和一次性定時器。周期性定時器可以周期性地觸發。一次性定時器則只觸發一次,類似于倒計時定時器,觸發后看門狗自動刪除,相應的任務自動退出。在用戶對定時器模塊進行初始化后,用戶可以在程序的任何地方調用定時器提供的接口。本文引用地址:http://www.104case.com/article/163412.htm
3.3 具體實現
3.3.1 對看門狗的封裝
基于程序設計上的考慮,將定時器的管理控制和看門狗的具體操作分開,對看門狗進行封裝,CClkGenerator類封裝了看門狗的所有操作,包括看門狗的創建、刪除、取消和啟動,保存定時器id、類型、定時周期等。值得注意的是:看門狗的回調函數并不是用戶的回調函數,而是看門狗管理控制中提供的統一回調函數,回調函數中的參數為定時器的索引號。封裝代碼如下:
從類定義可以看出,用戶并不能直接使用CClkGen-erator。也就是說,該類對用戶而言是不可見的,屏蔽了對看門狗的直接操作,只有定時器管理控制模塊才可以對其進行操作。
3.3.2 定時器管理與控制
定時器管理與控制模塊負責模塊初始化、多個定時器相關參數的存儲管理、定時器任務的安全退出,以及用戶接口的實現。
定時器的主要數據結構:定時器控制結構和存儲結構。
評論