3、定时器实验

3.1、实验目标

本节课主要学习K210定时器的功能。

本次实验的参考代码路径为:CanMV\03-Hardware\timer.py

 

3.2、实验过程

模块的出厂固件已经集成定时器Timer模块,如果下载过其他固件,请烧录回出厂固件再进行实验。

  1. 通过machine导入Timer。
  1. 创建Timer对象,并命名为timer。

参数内容为:

注意:回调函数是在中断中调用的,所以在回调函数中请不要占用太长时间以及做动态分配开关中断等动作

  1. 新建定时器的回调函数on_timer,在里面打印调试信息。并设置定时器每100毫秒调用一次on_timer。

注意:回调函数是在中断中调用的,打印调试信息会占用较长CPU时间,这里只是作为演示,实际开发过程中请勿在中断打印调试信息。

  1. 新建一个last_time变量,用来储存当前系统的时间戳,单位是毫秒。
  1. 新建一个while循环,让系统每隔200毫秒打印一次调试信息。并在程序结束或者退出时将定时器关闭掉。

 

3.3、实验效果

将K210模块通过microUSB数据线连接到电脑上,CanMV IDE点击连接按钮,连接完成后点击运行按钮,运行例程代码。也可以将代码作为main.py下载到K210模块上运行。

点开底部的串行终端,就可以看到打印出来的调试信息。由于定时器是每100毫秒打印一次数据,而while循环是每200秒打印一次数据,所以最终看起来的效果是每打印一次loop信息,就会打印两次定时器信息。

image-20230207142729637

 

3.4、实验总结

使用CanMV IDE,搭配出厂固件写好的MicroPython语法,使得控制K210定时器非常轻松,只需要通过简单配置定时器参数,设置定时器的通道、周期和回调函数等,就可以正常调用定时器,避免在定时器回调函数中处理耗时过长的事情,应尽量简单快速处理完事情,最后在结束程序时需要调用deinit函数让定时器恢复默认,否则定时器回调函数不会自动停止。