Ejemplo n.º 1
0
from mpython import *
from machine import Timer
import music


def playMusic(_):  #定义定时器回调函数,播放警报声
    music.play(music.BA_DING)


tim1 = Timer(1)  #创建定时器1

tim1.init(period=5000, mode=Timer.PERIODIC,
          callback=playMusic)  #配置定时器,模式为循环执行,循环周期为5秒

while True:
    timerNum = tim1.value()
    oled.DispChar("定时器:%d ms" % timerNum, 20, 25)
    oled.show()
    oled.fill(0)
    print(timer)


'''
定时器 模式:
Timer.ONE_SHOT --- 0                             --         # 执行一次
Timer.PERIODIC --- 1                             --         # 循环执行
'''
# timer.init(period=3000, mode=Timer.PERIODIC , callback=timer_print) #这里直接在回调函数中打印tim状态信息
timer.init(period=1000,
           mode=Timer.PERIODIC,
           callback=lambda t: print("Counter: %d" % (t.value())))

try:
    while True:
        print("do something..., counter = %d" % (timer.value()))
        utime.sleep_ms(100)
except:
    # 必须要有这个try except ,要不然 键盘中段不能让定时器停止
    # 禁用此定时器
    timer.deinit()
'''
样例打印: 
Timer(3ffe67a0; alarm_en=1, auto_reload=1, counter_en=1)
Timer(3ffe67a0; alarm_en=1, auto_reload=1, counter_en=1)
。。。

3ffe67a0:创建定时器分配的内存空间首地址
alarm_en : alarm_en:ONE_SHOT模式下,回调函数调用完成之后alarm_en=0,否则alarm_en=1;PERIODIC模式下,alarm_en=1。
auto_reload: alarm_en:ONE_SHOT模式下,回调函数调用完成之后alarm_en=0,否则alarm_en=1;PERIODIC模式下,alarm_en=1。
counter_en:参数为0时表示计数器没在计数(没有初始化之前或者调用deinit()之后),参数为1时表示计数器正在计数