ESP32-Ardunio框架, PlatformIO-vscode,

如果程序编译没有报错, 并且烧录成功后,
    不止一次,多次弹出/打印出 下面文本
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ets Jun  8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13132
load:0x40080400,len:3036
entry 0x400805e4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

这个其实就是 ESP32 Reset/复位时 会打印的信息
多次复位, 多为代码逻辑问题,引起了ESP32自动复位,

就跟 C语言 编译通过了,可是跑代码的时候突然崩溃一个样子


如果是自带usb串口 的开发板,(烧录超级简单的示例程序  可以正常运行,说明板子一般是没问题的)
    那么可以肯定,
    (绝大多数情况下)是:  代码的逻辑问题
  包括但不限于  变量生命周期错判,赋值时内存溢出,野指针,形参实参 , 数据类型错用,.........,
    看个人习惯了,这种错误一不留神就找出来了
----------------------------------------------------------
检错步骤(建议):
    1.代码最好 功能化,模块化
    2.在 setup 函数第一句/最开始就 delay(5000);//延时5s
    3.在每一段代码块中,多设置例如
      Serial.println("标签 1.1 ##"); 的语句, 设置
    4.烧录完成后即刻打开串口,观察串口输出数据
         观察 自己设置的标签, 清楚知道程序运行到哪里了
    5.这时,突然打印出-上述文本-, 观察相隔最近的标签, 就是这附近出毛病了,
    6.修改完成成后,再次烧录运行,观察是否能正常运行到下一个标签处
-------------------------------------------------------------------------
    分享下自己找了一天的bug,
    正常的
    String json =  http.getString() ;
    deserializeJson( doc ,   json ) ;

    错误的
    deserializeJson(  doc,  http.getString()  ) ;
    原因:
    http.getString() 返回类型为 string算是个数组, c++/c 函数 返回 |函数内定义的| 数组类型数据,存不住,生命周期太短了, 参考 https://blog.csdn.net/qq_41989885/article/details/104932634

        从最开始以 ESP32 硬件引脚问题,之后重新烧录官方固件,再到百度一下,.......直到看到 不再反复reset的esp32 ,内心十分开心, 原来不是单片机错了,是我错了,纯属的代码问题,

                                                                  Debug 是真理

-------------------------------------------------------------------------

最后的最后,几乎不会出现的罕见问题: ESP32自身的固件有问题。

(可能你找不出代码bug,自暴自弃了会看到这里)

下载这个,擦除,重新烧录下固件(压缩包内含 固件bin文件)ESP32-固件烧录软件,含稳定版bin固件从乐鑫官网下载后转载,free-其它文档类资源-CSDN下载

乐鑫科技烧录工具下载 官方地址

https://www.espressif.com/zh-hans/support/download/other-tools?keys=&field_type_tid%5B%5D=14

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐