如何恢复nodemcu无限循环

时间:2015-07-08 21:25:01

标签: lua esp8266 nodemcu

我错误地在我的nodemcu / ESP8266主板上加载无限循环的init.lua。

然后电路板继续重启而不执行任何其他指令。

i = 10
timerId = 0
timerDelay = 30000 -- Milisec
pin = 5
gpio.mode(pin,gpio.INPUT) 
repeat(    
    print(gpio.read(pin))
    i = i + 1
    end)
until i < 5

6 个答案:

答案 0 :(得分:2)

我试过刷电路板

python esptool.py -p /dev/tty.wchusbserial1450 run

python esptool.py -p /dev/tty.wchusbserial1450 write_flash 0x0000 ../nodemcu_latest.bin

然后修复我的代码并重新加载它,现在工作正常

答案 1 :(得分:1)

我所做的是使用ESPlorer(Java app)http://esp8266.ru/esplorer/#download

当我在瞎逛时,我只有init.lua文件名为init1.lua,如果ESP重新启动没问题,您只需点击右侧显示的init1.lua按钮(使用&#34; Reload&#34;按钮显示文件系统内容后)

简单易用,完成后您可以右键单击该文件将其重命名为init.lua

答案 2 :(得分:1)

--This file is init.lua
local IDLE_AT_STARTUP_MS = 10000;

tmr.alarm(1,IDLE_AT_STARTUP_MS,0,function()
    dofile("program.lua")--Write your program name in dofile
end)

我确实使用此策略以防止在发生错误时启动时出现无限循环。将此文件另存为init.lua并将程序写入program.lua

答案 3 :(得分:0)

这不是一种优雅的恢复方式。

最好的办法是建立一种方法来防止代码在紧急情况下发出声明。例如,正如TerryE建议的那样,使用timer.alarm中的init.lua设置一次性定时器,以便用足够长的延迟调用您的主代码,以便您可以调用timer.stop #39;想要启动你的主要代码。

答案 4 :(得分:0)

我遇到了同样的问题并被困在while循环中。

闪烁不同的固件对我有用。

答案 5 :(得分:0)

此答案与 researcher01's answer 基本相同,但使用了 OO API timers,因为上面使用的答案已于 2019 年删除。

--This file is init.lua
local IDLE_AT_STARTUP_MS = 10000;

tmr.create():alarm(IDLE_AT_STARTUP_MS, tmr.ALARM_SINGLE,function()
    dofile("program.lua")--Write your program name in dofile
end)