Ameba Arduino: [RTL8195] 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。印完之后就不会有动作。