Ameba Arduino: [RTL8722CSM] [RTL8722DM] 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” -> “TimerPeriodical”, 編譯並上傳至Ameba之後, 按下Reset按鈕。 接著會在Serial Monitor看到使用者定義counter定時被呼叫。
程式碼說明
在begin()裡面, 第1個參數是timer id, 目前有5個timer可以使用, 可以填的值為0~4。第二個參數是timer的時間, 單位是 us (microseconds), 範例裡填的是1000000us = 1s。第三個參數是當Timer的時間到了要呼叫的function,這邊的myhandler裡面將counter加1並且印出來。
GTimer.begin(0, 1 * 1000 * 1000, myhandler);
GTimer預設的行為是周期性的, 所以會看到每秒都會呼叫myhandler,結果就是每秒看到counter數量加1的log 如果想要將GTimer停下來, 就呼叫Stop, 範例裡我們在10秒後將Timer ID 0的Timer停下來
GTimer.stop(0);
請先確認已安裝QQ通訊軟體