首页 > 解决方案 > While 循环使用 ESPNOW 引发异常

问题描述

我一直在做一个项目,我需要在 ESPNOW“dataReceived”函数中有一个 while 循环,这意味着一旦接收到某个 char 数组,它就会激活循环。您只能通过发送另一条不同的消息来跳出循环。但是如果我激活循环(正如您将在代码中看到的,您需要接收“on”然后“customfade”来运行它),它会立即引发异常(见下文)。

Panic core_esp8266_main.cpp:133 __yield

>>>stack>>>

ctx: sys
sp: 3fffed40 end: 3fffffb0 offset: 0000
3fffed40:  40100d3a 00000000 00000001 4010017c  
3fffed50:  000000fe 00000000 00000000 00000000  
3fffed60:  00000000 00000000 00000000 3ffee578  
3fffed70:  3ffee598 3ffee598 3ffee598 447fc000  
3fffed80:  447fc000 000003ff 000003fe 4020359e  
3fffed90:  00000000 0053df1f 40203688 402035fb  
3fffeda0:  402036a1 00000004 447fc000 4020308d  
3fffedb0:  447fc000 000003ff 000003fe 402018a8  
3fffedc0:  74737563 61666d6f 79006564 6f6c6c65  
3fffedd0:  68770077 00657469 74737563 00006d6f  
3fffede0:  00000004 40224ff2 00000000 4010106c  
3fffedf0:  000003ff 000003ff 4010271e 40102799  
3fffee00:  00000001 00000004 40000f83 00000000  
3fffee10:  3ffeac8c 00000000 3ffeac84 40215d6f  
3fffee20:  4021fad5 00000000 0000001f 4010017c  
3fffee30:  32bf713c 0000dc88 3ffeac84 4021f97b  
3fffee40:  000000d0 3ffeed64 3ffeac6c 3ffeacb1  
3fffee50:  00000000 00000030 00000010 ffffffff  
3fffee60:  4021d7a7 00000030 00000011 ffffffff  
3fffee70:  40000f3d 00000023 00000000 4023a3dc  
3fffee80:  00000000 00000000 00000000 00000000  
3fffee90:  00000000 00000000 00000000 00000000  
3fffeea0:  00000000 00000000 00000000 00000000  
3fffeeb0:  00000000 00000000 00000000 00000000  
3fffeec0:  00000000 00000000 00000000 00000000  
3fffeed0:  00000000 00000000 0000003a 00000000  
3fffeee0:  3ffef12c 4021d0d2 3ffec510 3ffeed64  
3fffeef0:  00000000 00000000 3ffec510 3ffeac6c  
3fffef00:  3ffeac6c 00000049 00000000 0000003a  
3fffef10:  00000000 3ffeac76 4022684b 3ffec510  
3fffef20:  3ffeac60 3fffdcc0 3ffe8b30 00003bf0  
3fffef30:  000000d0 00000010 00000000 3ffe84e8  
3fffef40:  4022610b 3fffdab0 00000000 40202fb8  
3fffef50:  3ffe8b30 40000f49 3fffdab0 40000f49  
3fffef60:  40000e19 00000005 00043184 00000000  
3fffef70:  3fffefc0 aa55aa55 000000cb 40104b95  
3fffef80:  40104b9b 00043184 00000000 4c6c6800  
3fffef90:  4010000d 00474645 40201998 402019b4  
3fffefa0:  00000000 3fffef3c 00000000 00000000  
3fffefb0:  3fffffc0 00000000 00000000 feefeffe  
3fffefc0:  feefeffe feefeffe feefeffe feefeffe  
3fffefd0:  feefeffe feefeffe feefeffe feefeffe  
3fffefe0:  feefeffe feefeffe feefeffe feefeffe  
3fffeff0:  feefeffe feefeffe feefeffe feefeffe  
3ffff000:  feefeffe feefeffe feefeffe feefeffe  
3ffff010:  feefeffe feefeffe feefeffe feefeffe  
3ffff020:  feefeffe feefeffe feefeffe feefeffe  
3ffff030:  feefeffe feefeffe feefeffe feefeffe  
3ffff040:  feefeffe feefeffe feefeffe feefeffe  
3ffff050:  feefeffe feefeffe feefeffe feefeffe  
3ffff060:  feefeffe feefeffe feefeffe feefeffe  
3ffff070:  feefeffe feefeffe feefeffe feefeffe  
3ffff080:  feefeffe feefeffe feefeffe feefeffe  
3ffff090:  feefeffe feefeffe feefeffe feefeffe  
3ffff0a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff100:  feefeffe feefeffe feefeffe feefeffe  
3ffff110:  feefeffe feefeffe feefeffe feefeffe  
3ffff120:  feefeffe feefeffe feefeffe feefeffe  
3ffff130:  feefeffe feefeffe feefeffe feefeffe  
3ffff140:  feefeffe feefeffe feefeffe feefeffe  
3ffff150:  feefeffe feefeffe feefeffe feefeffe  
3ffff160:  feefeffe feefeffe feefeffe feefeffe  
3ffff170:  feefeffe feefeffe feefeffe feefeffe  
3ffff180:  feefeffe feefeffe feefeffe feefeffe  
3ffff190:  feefeffe feefeffe feefeffe feefeffe  
3ffff1a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff200:  feefeffe feefeffe feefeffe feefeffe  
3ffff210:  feefeffe feefeffe feefeffe feefeffe  
3ffff220:  feefeffe feefeffe feefeffe feefeffe  
3ffff230:  feefeffe feefeffe feefeffe feefeffe  
3ffff240:  feefeffe feefeffe feefeffe feefeffe  
3ffff250:  feefeffe feefeffe feefeffe feefeffe  
3ffff260:  feefeffe feefeffe feefeffe feefeffe  
3ffff270:  feefeffe feefeffe feefeffe feefeffe  
3ffff280:  feefeffe feefeffe feefeffe feefeffe  
3ffff290:  feefeffe feefeffe feefeffe feefeffe  
3ffff2a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff300:  feefeffe feefeffe feefeffe feefeffe  
3ffff310:  feefeffe feefeffe feefeffe feefeffe  
3ffff320:  feefeffe feefeffe feefeffe feefeffe  
3ffff330:  feefeffe feefeffe feefeffe feefeffe  
3ffff340:  feefeffe feefeffe feefeffe feefeffe  
3ffff350:  feefeffe feefeffe feefeffe feefeffe  
3ffff360:  feefeffe feefeffe feefeffe feefeffe  
3ffff370:  feefeffe feefeffe feefeffe feefeffe  
3ffff380:  feefeffe feefeffe feefeffe feefeffe  
3ffff390:  feefeffe feefeffe feefeffe feefeffe  
3ffff3a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff3b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff3c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff3d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff3e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff3f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff400:  feefeffe feefeffe feefeffe feefeffe  
3ffff410:  feefeffe feefeffe feefeffe feefeffe  
3ffff420:  feefeffe feefeffe feefeffe feefeffe  
3ffff430:  feefeffe feefeffe feefeffe feefeffe  
3ffff440:  feefeffe feefeffe feefeffe feefeffe  
3ffff450:  feefeffe feefeffe feefeffe feefeffe  
3ffff460:  feefeffe feefeffe feefeffe feefeffe  
3ffff470:  feefeffe feefeffe feefeffe feefeffe  
3ffff480:  feefeffe feefeffe feefeffe feefeffe  
3ffff490:  feefeffe feefeffe feefeffe feefeffe  
3ffff4a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff4b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff4c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff4d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff4e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff4f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff500:  feefeffe feefeffe feefeffe feefeffe  
3ffff510:  feefeffe feefeffe feefeffe feefeffe  
3ffff520:  feefeffe feefeffe feefeffe feefeffe  
3ffff530:  feefeffe feefeffe feefeffe feefeffe  
3ffff540:  feefeffe feefeffe feefeffe feefeffe  
3ffff550:  feefeffe feefeffe feefeffe feefeffe  
3ffff560:  feefeffe feefeffe feefeffe feefeffe  
3ffff570:  feefeffe feefeffe feefeffe feefeffe  
3ffff580:  feefeffe feefeffe feefeffe feefeffe  
3ffff590:  feefeffe feefeffe feefeffe feefeffe  
3ffff5a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff5b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff5c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff5d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff5e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff5f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff600:  feefeffe feefeffe feefeffe feefeffe  
3ffff610:  feefeffe feefeffe feefeffe feefeffe  
3ffff620:  feefeffe feefeffe feefeffe feefeffe  
3ffff630:  feefeffe feefeffe feefeffe feefeffe  
3ffff640:  feefeffe feefeffe feefeffe feefeffe  
3ffff650:  feefeffe feefeffe feefeffe feefeffe  
3ffff660:  feefeffe feefeffe feefeffe feefeffe  
3ffff670:  feefeffe feefeffe feefeffe feefeffe  
3ffff680:  feefeffe feefeffe feefeffe feefeffe  
3ffff690:  feefeffe feefeffe feefeffe feefeffe  
3ffff6a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff6b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff6c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff6d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff6e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff6f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff700:  feefeffe feefeffe feefeffe feefeffe  
3ffff710:  feefeffe feefeffe feefeffe feefeffe  
3ffff720:  feefeffe feefeffe feefeffe feefeffe  
3ffff730:  feefeffe feefeffe feefeffe feefeffe  
3ffff740:  feefeffe feefeffe feefeffe feefeffe  
3ffff750:  feefeffe feefeffe feefeffe feefeffe  
3ffff760:  feefeffe feefeffe feefeffe feefeffe  
3ffff770:  feefeffe feefeffe feefeffe feefeffe  
3ffff780:  feefeffe feefeffe feefeffe feefeffe  
3ffff790:  feefeffe feefeffe feefeffe feefeffe  
3ffff7a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff7b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff7c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff7d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff7e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff7f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff800:  feefeffe feefeffe feefeffe feefeffe  
3ffff810:  feefeffe feefeffe feefeffe feefeffe  
3ffff820:  feefeffe feefeffe feefeffe feefeffe  
3ffff830:  feefeffe feefeffe feefeffe feefeffe  
3ffff840:  feefeffe feefeffe feefeffe feefeffe  
3ffff850:  feefeffe feefeffe feefeffe feefeffe  
3ffff860:  feefeffe feefeffe feefeffe feefeffe  
3ffff870:  feefeffe feefeffe feefeffe feefeffe  
3ffff880:  feefeffe feefeffe feefeffe feefeffe  
3ffff890:  feefeffe feefeffe feefeffe feefeffe  
3ffff8a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff8b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff8c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff8d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff8e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff8f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff900:  feefeffe feefeffe feefeffe feefeffe  
3ffff910:  feefeffe feefeffe feefeffe feefeffe  
3ffff920:  feefeffe feefeffe feefeffe feefeffe  
3ffff930:  feefeffe feefeffe feefeffe feefeffe  
3ffff940:  feefeffe feefeffe feefeffe feefeffe  
3ffff950:  feefeffe feefeffe feefeffe feefeffe  
3ffff960:  feefeffe feefeffe feefeffe feefeffe  
3ffff970:  feefeffe feefeffe feefeffe feefeffe  
3ffff980:  feefeffe feefeffe feefeffe feefeffe  
3ffff990:  feefeffe feefeffe feefeffe feefeffe  
3ffff9a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff9b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff9c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff9d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff9e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff9f0:  feefeffe feefeffe feefeffe feefeffe  
3ffffa00:  feefeffe feefeffe feefeffe feefeffe  
3ffffa10:  feefeffe feefeffe feefeffe feefeffe  
3ffffa20:  feefeffe feefeffe feefeffe feefeffe  
3ffffa30:  feefeffe feefeffe feefeffe feefeffe  
3ffffa40:  feefeffe feefeffe feefeffe feefeffe  
3ffffa50:  feefeffe feefeffe feefeffe feefeffe  
3ffffa60:  feefeffe feefeffe feefeffe feefeffe  
3ffffa70:  feefeffe feefeffe feefeffe feefeffe  
3ffffa80:  feefeffe feefeffe feefeffe feefeffe  
3ffffa90:  feefeffe feefeffe feefeffe feefeffe  
3ffffaa0:  feefeffe feefeffe feefeffe feefeffe  
3ffffab0:  feefeffe feefeffe feefeffe feefeffe  
3ffffac0:  feefeffe feefeffe feefeffe feefeffe  
3ffffad0:  feefeffe feefeffe feefeffe feefeffe  
3ffffae0:  feefeffe feefeffe feefeffe feefeffe  
3ffffaf0:  feefeffe feefeffe feefeffe feefeffe  
3ffffb00:  feefeffe feefeffe feefeffe feefeffe  
3ffffb10:  feefeffe feefeffe feefeffe feefeffe  
3ffffb20:  feefeffe feefeffe feefeffe feefeffe  
3ffffb30:  feefeffe feefeffe feefeffe feefeffe  
3ffffb40:  feefeffe feefeffe feefeffe feefeffe  
3ffffb50:  feefeffe feefeffe feefeffe feefeffe  
3ffffb60:  feefeffe feefeffe feefeffe feefeffe  
3ffffb70:  feefeffe feefeffe feefeffe feefeffe  
3ffffb80:  feefeffe feefeffe feefeffe feefeffe  
3ffffb90:  feefeffe feefeffe feefeffe feefeffe  
3ffffba0:  feefeffe feefeffe feefeffe feefeffe  
3ffffbb0:  feefeffe feefeffe feefeffe feefeffe  
3ffffbc0:  feefeffe feefeffe feefeffe feefeffe  
3ffffbd0:  feefeffe feefeffe feefeffe feefeffe  
3ffffbe0:  feefeffe feefeffe feefeffe feefeffe  
3ffffbf0:  feefeffe feefeffe feefeffe feefeffe  
3ffffc00:  feefeffe feefeffe feefeffe feefeffe  
3ffffc10:  feefeffe feefeffe feefeffe feefeffe  
3ffffc20:  feefeffe feefeffe feefeffe feefeffe  
3ffffc30:  feefeffe feefeffe feefeffe feefeffe  
3ffffc40:  feefeffe feefeffe feefeffe feefeffe  
3ffffc50:  feefeffe feefeffe feefeffe feefeffe  
3ffffc60:  feefeffe feefeffe feefeffe feefeffe  
3ffffc70:  feefeffe feefeffe feefeffe feefeffe  
3ffffc80:  feefeffe feefeffe feefeffe feefeffe  
3ffffc90:  feefeffe feefeffe feefeffe feefeffe  
3ffffca0:  feefeffe feefeffe feefeffe feefeffe  
3ffffcb0:  feefeffe feefeffe feefeffe feefeffe  
3ffffcc0:  00000000 00000000 0000001f 4010017c  
3ffffcd0:  feefeffe feefeffe 3fffc228 40105335  
3ffffce0:  4000050c feefeffe feefeffe feefeffe  
3ffffcf0:  400043e1 00000030 00000016 ffffffff  
3ffffd00:  400044ab 3fffc718 3ffffdf0 08000000  
3ffffd10:  60000200 08000000 00000003 00000000  
3ffffd20:  0000ffff 00042035 00002035 003fe000  
3ffffd30:  4023b000 0000049c 003fe000 00000030  
3ffffd40:  3ffffea0 00000000 3ffffea0 4020ab22  
3ffffd50:  00008000 3ffffe43 feefeffe feefeffe  
3ffffd60:  feefeffe feefeffe 40206d81 00000002  
3ffffd70:  3ffffea0 00000002 3ffffea0 4020ab22  
3ffffd80:  3ffffe00 3ffffe41 3ffffdb0 00000000  
3ffffd90:  feefeffe feefeffe feefeffe 4020aa58  
3ffffda0:  3ffffea0 3ffffe41 3ffffe00 40206eac  
3ffffdb0:  00000002 4000444e feefeffe 00000001  
3ffffdc0:  00000005 00000000 00000020 4010017c  
3ffffdd0:  00000005 00000000 00000020 4010017c  
3ffffde0:  00000005 00000000 00000020 4010017c  
3ffffdf0:  3ffe8a85 40104a8f 00000005 401017e4  
3ffffe00:  3ffe8a85 40104a8f 3ffec510 40102558  
3ffffe10:  4010237b 3ffec510 3ffecee0 40102558  
3ffffe20:  00007fff 010bffab 3ffecee0 40102558  
3ffffe30:  3ffe9330 00000000 00000000 4010017c  
3ffffe40:  00007fff 010bffab 40102a1a 00000100  
3ffffe50:  3ffe9330 7fffffff 00000000 00000001  
3ffffe60:  00000001 000000d0 00000010 ffffffff  
3ffffe70:  3ffe9330 c61969cc 00000000 010bffab  
3ffffe80:  3ffe933c 2c9f0300 4000050c 3fffc278  
3ffffe90:  4010273c 3fffc200 00000022 40105335  
3ffffea0:  40100168 00000030 00000010 ffffffff  
3ffffeb0:  4010019d 00000001 00000000 00000000  
3ffffec0:  00000000 00000000 00000000 fffffffe  
3ffffed0:  ffffffff 3fffc6fc 00000001 3ffee4f8  
3ffffee0:  00000000 3fffdad0 3ffee538 00000030  
3ffffef0:  00000000 3fffdad0 3ffee538 00000030  
3fffff00:  00000000 3fffdad0 3ffee538 00000030  
3fffff10:  3ffe8400 3ffef38c 00000020 401009a7  
3fffff20:  00000020 000000cb 000000cb aa55aa55  
3fffff30:  00000300 4022eadb 00000000 40100368  
3fffff40:  3ffe84cc 3ffee3cc 00000020 4022eaf6  
3fffff50:  4022eb26 00000001 00000001 00000001  
3fffff60:  007a1200 c63a2406 3fffff00 40202bd9  
3fffff70:  00000000 3ffee3cc 3ffee40c 40201da8  
3fffff80:  00000000 00000000 00000001 4010017c  
3fffff90:  3fffdad0 00000000 3ffee4f8 4010019d  
3fffffa0:  feefeffe 00000000 3ffee4f8 40203169  
<<<stack<<<

我解码了消息,结果是

0x40100d3a: timer1_isr_init() at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_timer.cpp line 49
0x4010017c: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 177
0x40203688: __delay(unsigned long) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_wiring.cpp line 49
0x402036a1: __delay(unsigned long) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_wiring.cpp line 57
0x4020308d: __yield() at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 135
0x402018a8: dataReceived(unsigned char*, unsigned char*, unsigned char) at H:\Programming\Arduino\LED Strip controller\Versions\Table strip\V 4.0\LED_Strip_controller/LED_Strip_controller.ino line 252
0x4010106c: stopWaveform(uint8_t) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_waveform.cpp line 187
0x4010017c: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 177
0x40202fb8: loop_task(ETSEvent*) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 205
0x40201998: _GLOBAL__sub_I__ZN11EEPROMClassC2Ej() at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\EEPROM\EEPROM.cpp line 156
0x402019b4: _GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print() at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\ESP8266WiFi\src/ESP8266WiFi.h line 57
0x4010017c: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 177
0x4020ab22: __ssputs_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c line 233
0x40206d81: _printf_i at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf_i.c line 194
0x4020ab22: __ssputs_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c line 233
0x4020aa58: __ssputs_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c line 180
0x40206eac: _printf_i at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf_i.c line 246
0x4010017c: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 177
0x4010017c: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 177
0x4010017c: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 177
0x4010017c: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 177
0x40100168: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 173
0x4010019d: esp_schedule() at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 125
0x401009a7: free(void*) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\umm_malloc\umm_malloc.cpp line 398
0x40100368: vPortFree(void*, char const*, int) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\heap.cpp line 308
0x40202bd9: String::invalidate() at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\WString.cpp line 140
0x40201da8: ESP8266WiFiGenericClass::mode(WiFiMode, WiFiState*) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\ESP8266WiFi\src\ESP8266WiFiGeneric.cpp line 468
0x4010017c: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 177
0x4010019d: esp_schedule() at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 125
0x40203169: loop_wrapper() at C:\Users\window\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\cores\esp8266\core_esp8266_main.cpp line 199

在我更深入地进行故障排除之前,我想知道在这种情况下,while 循环是否存在任何主要问题或缺点,即基本上在设置例程内部在 ESPNOW dataReceived 函数中运行。下面是复制异常所需的代码,我在 ESP8266 上运行它。

#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <espnow.h>

#define red D2
#define green D5
#define blue D1

bool on = false;
int redBrightness;
int greenBrightness;
int blueBrightness;
bool fade3 = false;
bool fade7 = false;
bool fade = false;

struct __attribute__((packed)) dataPacket {
  char request[30];
};

void dataReceived(uint8_t *senderMac, uint8_t *data, uint8_t dataLength) {
  dataPacket packet;

  //  char macStr[18];
  //  snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",
  //           senderMac[0], senderMac[1], senderMac[2], senderMac[3], senderMac[4],
  //           senderMac[5]);
  //  Serial.println();
  //  Serial.print("Received data from: ");
  //  Serial.println(macStr);

  memcpy(&packet, data, sizeof(packet));
  Serial.println(packet.request);


  if (strcmp(packet.request, "on") == 0) {    //on
    if (on) {
      on = false;
      analogWrite(red, 0);
      analogWrite(green, 0);
      analogWrite(blue, 0);
    }
    else {
      on = true;
      analogWrite(red, EEPROM.get(0, redBrightness));
      analogWrite(green, EEPROM.get(4, greenBrightness));
      analogWrite(blue, EEPROM.get(8, blueBrightness));
    }
  }

if (strcmp(packet.request, "customfade") == 0) {
  int numSteps;
  int i = 0;
  fade = true;

  redBrightness = EEPROM.get(0, redBrightness);
  greenBrightness = EEPROM.get(4, greenBrightness);
  blueBrightness = EEPROM.get(8, blueBrightness);

  if (redBrightness > greenBrightness) {
    if (redBrightness > blueBrightness) {
      numSteps = redBrightness;
    }
    else {
      numSteps = blueBrightness;
    }
  }
  else {
    if (greenBrightness > blueBrightness) {
      numSteps = greenBrightness;
    }
    else {
      numSteps = blueBrightness;
    }
  }

  //memcpy(request, "customfade", sizeof(request));

  while (on && fade) {
    Serial.println("entered loop");
    for (i; i <= numSteps; i++) {
      if (strcmp(packet.request, "customfade") != 0 && packet.request[0] != '2') {
        fade = false;
        break;
        Serial.println("received data and broken out");
      }
      int redOutput = ((float) redBrightness / numSteps) * i;
      int greenOutput = ((float)  greenBrightness / numSteps) * i;
      int blueOutput = ((float)    blueBrightness / numSteps) * i;

      analogWrite(red, redOutput);
      analogWrite(green, greenOutput);
      analogWrite(blue, blueOutput);

      delay(4);
    }

    i = numSteps;
    for (i; i >= 0; i--) {
      if (strcmp(packet.request, "customfade") != 0 && packet.request[0] != '2') {
        fade = false;
        break;
        Serial.println("received data and broken out");
      }
      int redOutput = ((float) redBrightness / numSteps) * i;
      int greenOutput = ((float)  greenBrightness / numSteps) * i;
      int blueOutput = ((float)    blueBrightness / numSteps) * i;

      analogWrite(red, redOutput);
      analogWrite(green, greenOutput);
      analogWrite(blue, blueOutput);

      delay(4);
      yield();
    }
  }
}
}

void setup() {
  Serial.begin(115200);
  EEPROM.begin(128);
  Serial.println(WiFi.macAddress());
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();

  if (esp_now_init() != 0) {
    Serial.println("ESP-NOW initialization failed");
    return;
  }

  esp_now_register_recv_cb(dataReceived);
}

void loop() {
}

标签: exceptionarduinostackesp8266

解决方案


推荐阅读