【教程】小安派BW21-CBV-Kit——GTimer

[复制链接]
查看9 | 回复0 | 前天 11:04 | 显示全部楼层 |阅读模式

单次计时

用料

示例

在本例中,我们将使用 4 个一次性 GTimer,并将用户数据传递给每个定时器。

打开示例 "文件" -> "示例" -> "AmebaGTimer" -> "TimerOneshot"。 编译并上传到 BW21-CBV-Kit,然后按重置。 然后你就可以看到 4 个计时器的日志串联打印到串行监视器上。

代码参考

begin() 的第一个参数是定时器 ID(0~3)。 第二个参数是定时器的值(以微秒为单位)。 在示例中,我们填入 1000000us = 1s。 第三个参数指定时间到时调用的函数。 第四个参数用于设置该定时器是否为周期性定时器,我们在此使用 "false "来启动一个一次性定时器。 第五个参数是用户数据,这里我们用 0 表示定时器 0。

GTimer.begin(0, 1 * 1000 * 1000, myhandler, false, 0);

接下来,我们设置第二个计时器,其计时器值为 2 秒,用户数据为 1。 其他计时器的设置与此类似。

GTimer.begin(1, 2 * 1000 * 1000, myhandler, false, 1);

在 myhandler 函数中,我们将用户数据打印到串行监视器上。 由于 4 个定时器分别设置为 1、2、3、4 秒,从 1 秒到 4 秒,因此每个定时器的用户数据都会依次打印到串行监视器上。 4 秒后,将不再打印日志。

循环计时

示例

BW21-CBV-Kit 提供 4 个硬件 GTimer 供用户使用。 定时器的分辨率为微秒级。 定时器可设置为周期性或一次性使用。 周期性定时器定期复位,一次性定时器则不复位。

打开示例,"文件" -> "示例" -> "AmebaGTimer" -> "TimerPeriodical"。 编译并上传到 BW21-CBV-Kit,然后按重置。 在串行监视器中,你可以看到计数器的值周期性增加。

代码参考

begin() 的第一个参数是定时器 ID(0~3)。 第二个参数是定时器的值(以微秒为单位)。 在示例中,我们填入 1000000us = 1s。 第三个参数指定时间到时调用的函数。 在示例中,我们调用 "myhandler "函数将计数器值增加 1,并将计数器值打印到串行监视器上。

GTimer.begin(0, 1 * 1000 * 1000, myhandler);

GTimer 默认是周期性的,因此 "myhandler "函数每秒被调用一次。 当我们想停止 GTimer 时,请使用 "stop()":

GTimer.stop(0);
用心做好保姆工作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则