Timer - 使用週期性的GTimer
材料準備
- Ameba x 1
範例說明
Ameba本身帶有硬體的Timer供使用者使用, 目前使用者可以使用5個GTimer, 解析度為microseconds, 要注意的是這些Timer可能會與其它週邊重覆使用。舉例來說, Timer ID為0的Timer與PMW_3共用, 所以當我們使用Timer ID 0的時候, D12上面的PWM_3就無法使用。
Time ID | Note |
0 | Share with PWM_3 |
1 | Share with PWM_0 |
2 | Share with PWM_1 |
3 | Share with PWM_2 |
4 | Share with software RTC |
在使用上,可以將Timer設定週期性或一次性。週期性的Timer當時間到了會重新設定,而一次性的Timer則不會。
我們打開範例, “File” -> “Examples” -> “AmebaGTimer” -> “timer_periodical”, 編譯並上傳至Ameba之後, 按下Reset按鈕。
接著會在Serial Monitor看到使用者定義counter定時被呼叫。
程式碼說明
在begin()裡面, 第1個參數是timer id, 目前有5個timer可以使用, 可以填的值為0~4。第二個參數是timer的時間, 單位是 us (microseconds), 範例裡填的是1000000us = 1s。第三個參數是當Timer的時間到了要呼叫的function,這邊的myhandler裡面將counter加1並且印出來。
GTimer預設的行為是週期性的, 所以會看到每秒都會呼叫myhandler,結果就是每秒看到counter數量加1的log
GTimer.begin(0, 1 * 1000 * 1000, myhandler);
GTimer預設的行為是週期性的, 所以會看到每秒都會呼叫myhandler,結果就是每秒看到counter數量加1的log
如果想要將GTimer停下來, 就呼叫Stop, 範例裡我們在10秒後將Timer ID 0的Timer停下來
GTimer.stop(0);
Copyrights ©瑞晟微电子(苏州)有限公司 2021. All rights reserved. Terms of Use