在 Raspberry Pi Pico v1.19.1 上,当我定义计时器时,第一次执行工作正常。然而随后的周期会失败:
'TypeError:'NoneType'对象不可调用
import machine, time
from machine import Timer
class app():
def __init__(self):
self.pulse = machine.Timer(-1)
self.pulse.init(mode=Timer.PERIODIC, period=1000, callback=self.cb_pulse())
def cb_pulse(self):
print("whai!")
app()
您必须自己指定回调函数,因此无需
()
# Good
self.pulse.init(mode=Timer.PERIODIC, period=200, callback=self.cb_pulse)
# Bad
self.pulse.init(mode=Timer.PERIODIC, period=200, callback=self.cb_pulse())
通过添加
()
,您实际上是将回调方法的结果/输出传递给计时器。
由于它什么也没有返回 == None
,所以计时器尝试调用“None”,这确实不是可调用的。
这是我能找到的唯一可以与 Micropython 一起使用的东西,它们可以为我提供任何计时器功能。但它非常适合我需要它的用途,即制作一秒滴答计数器。这样我就可以测量 WOKWI Online 模拟器内的时间。
jsjtick=1
def tickjsj():
global jsjtick
jsjtick=jsjtick+1
machine.Timer().init(period=1000, callback=lambda t:tickjsj())
#redundantly display the time in the terminal
jsjtick2=0
while 1:
if jsjtick!=jsjtick2
print(" "*33,(13),end="","uptime=",jsjtick,chr,(13),end="")
jsjtick!=jsjtick2