串口log信息:
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Soft WDT reset
>>>stack>>>
ctx: cont
sp: 3ffffd40 end: 3fffffc0 offset: 01a0
3ffffee0: 3ffee6f0 3ffee6e0 00000002 4010032c
3ffffef0: 0000000e 3ffee6e0 3ffee6f0 40201db8
3fffff00: 0000000e 00000012 3ffee6e0 40201ffe
3fffff10: 3fffff50 0000000c 3fffff50 3fffff5c
3fffff20: 00000011 00000656 3ffee6e0 4020207b
3fffff30: 3fffff70 00000009 3fffff70 00000004
3fffff40: 3fffdad0 3ffee6e0 3ffee6e0 402021b2
3fffff50: ffff0460 ffffffff 00000000 3ffee784
3fffff60: 3fffdad0 3ffee6e0 00000004 402012c1
3fffff70: 00007000 9c000000 3ffee6d9 3ffee784
3fffff80: 3fffdad0 00000000 3ffee6e0 402017cf
3fffff90: 3fffdad0 00000000 3ffee628 3ffee784
3fffffa0: 3fffdad0 00000000 3ffee770 40202ee8
3fffffb0: feefeffe feefeffe 3ffe86dc 40100c5d
<<<stack<<<
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
?⸮T!9⸮@H⸮⸮⸮⸮⸮
解决办法:
non-OS SDK 不支持抢占任务或进程切换。因此开发者需要自行保证程序的正确执行,用户代码不能长期占用 CPU。否则会导致看门狗复位,ESP8266 重启。
如果某些特殊情况下,用户线程必须执行较长时间(比如大于 500 ms),建议经常调用 system_soft_wdt_feed() API 来喂软件看门狗,而不建议禁用软件看门狗。
执行一个死循环,一直复位。
启用喂狗函数
而我的解决办法
目前测试未发现问题。