1 簡介
2 軟件定時器的工作模式
定時器有兩種工作模式:OS_OPT_TMR_ONE_SHOT單次定時器模式和OS_OPT_TMR_PERIODIC周期定時器模式。
2.1 單次定時器模式(OS_OPT_TMR_ONE_SHOT)
使用OSTmrCreate()函數創建定時器時把參數opt設置為OS_OPT_TMR_ONE_SHOT,就是創建的單次定時器。創建一個單次定時器以后,我們一旦調用OSTmrStart()函數定時器就會從創建時定義的dly開始倒計數,直到減為0調用回調函數並停止。單次定時器的定時器只執行一次。
由圖可知:單次定時器在調用OSTmrStart()函數后開始倒計數,將dly減為0后調用回調函數的過程,到這里定時器就停止運行,不再做任何事情了,我們可以調用OSTmrDel()函數來刪除這個運行完成的定時器。其實我們也可以重新調用OSTmrStart()函數來開啟一個已經運行完成的定時器,通過調用OSTmrStart()函數來重新觸發單次定時器,如下圖所示;
2.2 周期定時器模式
2.2.1 無初始化延時
使用OSTmrCreate()函數創建定時器時把參數opt設置為OS_OPT_TMR_PERIODIC,就是創建的周期定時器。當定時器倒計數完成后,定時器就會調用回調函數,並且重置計數器開始下一輪的定時,就這樣一直循環下去.如果使用OSTmrCreate()函數創建定時器的時候,參數dly為0的話,那么定時器在每個周期開始時計數器的初值就為period。
2.2.2 有初始化延時
在創建定時器的時候也可以創建帶有初始化延時的,初始化延時就是OSTmrCreate()函數中的參數dly就是初始化延遲,定時器的第一個周期就是dly。當第一個周期完成后就是用參數period作為周期值,調用OSTmrStart()函數開啟有初始化延時的定時器