是否可以用 gpio.pulse() 设置连续循环?

Is it possible to set a continuous loop with gpio.pulse()?

有谁知道在连续循环中将 ESP8266 NodeMCU gpio.pulse 模块转换为 运行 的方法吗?

我的需求是从ESP8266的GPIO4和GPIO5管脚连续输出两个相位差180°的稳定频率方波。乍一看,gpio.pulse() [gpio.pulse.build()] 模块文档示例(https://nodemcu.readthedocs.io/en/master/en/modules/gpio/#gpiopulsebuild)似乎符合我的要求。不幸的是,我找不到在连续循环中制作 运行 的方法。

gpio.mode(1, gpio.OUTPUT)
gpio.mode(2, gpio.OUTPUT)

pulser = gpio.pulse.build( {
  { [1] = gpio.HIGH, [2] = gpio.LOW, delay=250000 },
  { [1] = gpio.LOW, [2] = gpio.HIGH, delay=250000, loop=1, count=20, min=240000, max=260000 }
})

pulser:start(function() print ('done') end)

我尝试使用 gpio.pulse:update (https://nodemcu.readthedocs.io/en/master/en/modules/gpio/#gpiopulseupdate) 在示例的第 2 步 "count=20" 参数达到零之前重置它,但这没有用。

在这种情况下,您可以使用 count=-1(最大可能的 32 位无符号整数),这将使它 运行 大约 68 年。

对于更高的频率,2^32 次重复不能令人满意,那么您可以嵌套循环:

pulser = gpio.pulse.build( {
  { [1] = gpio.HIGH, [2] = gpio.LOW, delay=250000 },
  { [1] = gpio.LOW, [2] = gpio.HIGH, delay=250000, loop=1, count=20, min=240000, max=260000 },
  { loop=1, count=20 }
})

这将在终止前 运行 20 * 20 个脉冲。