Ameba Arduino: [RTL8195] [RTL8710] Timer – 使用一次性的GTimer

材料準備

  • Ameba x 1

範例說明

這個範例裡我們使用5個一次性的GTimer,並且帶入使用者的資料。
打開範例 “File” -> “Examples” -> “AmebaGTimer” -> “timer_oneshot” 編譯並上傳至Ameba之後, 按下Reset按鈕。
接著會看到5個timer接連著印出log

程式碼說明

在begin()裡面, 第2個參數是Timer ID, 值為0~4。第2個參數是Timer的時間, 單位為us (microsecond), 這邊設定為1秒。第3個參數是時間到了要呼叫的function。第四個參數是設定是否為週期性,設定true為週期性的Timer,設定 false則為一次性的Timer。第5個參數是使用者的資料,這邊填0代表是timer 0。
GTimer.begin(0, 1 * 1000 * 1000, myhandler, false, 0);

接著我們設定第2個Timer, 與前一個差別在於timer id填1, timer的時間是2秒, 帶入的使用者資料為1代表是Timer 1
GTimer.begin(1, 2 * 1000 * 1000, myhandler, false, 1);

其餘的timer都使用類似的配置。

在myhandler裡面,會將使用者資料印出來。因為我們設定了5個timer依序會在1秒、2秒、3秒、4秒、5秒發生,所以log裡面會到前5秒每秒都有timer印出log。印完之後就不會有動作。