Ardunio_ESP32烧录后不断重启,不断复位问题出在了哪里?已解决.rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)

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.修改完成成后,再次烧录运行,观察是否能正常运行到下一个标签处。
-------------------------------------------------------------------------
    

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

                                                                  Debug 是真理

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

ESP32-固件烧录软件,含稳定版bin固件从乐鑫官网下载后转载ESP32-固件烧录,含稳定版bin固件ESP32-固件烧录,含稳定版bin固件ESP3更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/m0_62964247/86272272

乐鑫科技烧录工具下载 官方地址icon-default.png?t=N7T8https://www.espressif.com/zh-hans/support/download/other-tools

ESP32的看门狗定时器在超时后,会触发看门狗复位。在ESP32中,看门狗复位可以通过中断进行处理。 当看门狗复位触发时,ESP32会进入中断处理函数,可以在该函数中进行一些处理,如记录日志、恢复程序状态等。中断处理函数需要在程序中进行注册,可以使用ESP-IDF提供的API进行注册。 以下是一个简单的ESP32看门狗复位中断处理的示例代码: ```c #include "esp_system.h" #include "esp_log.h" static const char* TAG = "watchdog"; void IRAM_ATTR watchdog_isr(void *arg) { esp_logI(TAG, "watchdog reset occurred"); // 进行一些处理,如记录日志、恢复程序状态等 } void app_main() { // 注册看门狗中断处理函数 esp_err_t err = esp_register_shutdown_handler(&watchdog_isr, NULL); if (err != ESP_OK) { ESP_LOGE(TAG, "failed to register watchdog ISR"); return; } // 配置看门狗定时器 esp_err_t err = esp_wdt_init(1, true); if (err != ESP_OK) { ESP_LOGE(TAG, "failed to initialize watchdog timer"); return; } esp_wdt_enable(); // 正常的程序逻辑 while (1) { // do something } } ``` 在上面的示例代码中,我们首先注册了一个中断处理函数`watchdog_isr`,在函数中记录了看门狗复位的发生。然后配置了看门狗定时器,并启用了看门狗。在主循环中,我们可以执行一些正常的程序逻辑。 当看门狗定时器超时后,ESP32会触发看门狗复位,进入中断处理函数`watchdog_isr`。在函数中,我们可以进行一些处理,如记录日志、恢复程序状态等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值