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. 使用条款