exception - 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() {
}
解决方案
推荐阅读
- python - Python PrettyPrinter 显示对象地址但不显示内容
- python - 创建数据框的最有效(最快)方法是什么?
- java - 为什么我的数组列表的 Java Set 方法不起作用?
- c - 根据提示更新用户输入 C
- css - 如何在 CSS 模块文件中覆盖全局 CSS?
- python - 从嵌套字典中获取公共键值对
- angular - detectChanges() 未在 Angular 的对象数组中触发
- mysql - mysql外键没有反映到它的引用
- javascript - 可以存储信息的 Discord bot(Python 或 Javascript)
- vim - 使用 vim 删除段落中的所有内容