作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 ESP-IDF 作为框架。
我知道Brownout detector was trigerred
错误来自检测低电压发生的低电压检测器。通常,当该错误发生时,MCU 会自动重启。
是的,可以设置检测器,但是我可以在软件中处理该错误吗?就像esp-idf
如何使用约定esp_err_t
处理错误一样?因此我可以继续在我的 MCU 中运行,而不会因此类错误而重新启动。
我的意思是句柄就像如何使用try-catch
概念进行高级编程。
最佳答案
发生此错误后,CPU 会复位。可能有一种方法可以在CPU重新启动时找出复位的原因。与 STM32 MCU 一样,可以读取 RCC(复位和时钟 Controller )寄存器。在我的研究过程中,我找到了一个可以与 ESP32 一起使用的解决方案。
#include <rom/rtc.h>
void print_reset_reason(RESET_REASON reason)
{
switch (reason)
{
/**<1, Vbat power on reset*/
case 1 : Serial.println ("POWERON_RESET");break;
/**<3, Software reset digital core*/
case 3 : Serial.println ("SW_RESET");break;
/**<4, Legacy watch dog reset digital core*/
case 4 : Serial.println ("OWDT_RESET");break;
/**<5, Deep Sleep reset digital core*/
case 5 : Serial.println ("DEEPSLEEP_RESET");break;
/**<6, Reset by SLC module, reset digital core*/
case 6 : Serial.println ("SDIO_RESET");break;
/**<7, Timer Group0 Watch dog reset digital core*/
case 7 : Serial.println ("TG0WDT_SYS_RESET");break;
/**<8, Timer Group1 Watch dog reset digital core*/
case 8 : Serial.println ("TG1WDT_SYS_RESET");break;
/**<9, RTC Watch dog Reset digital core*/
case 9 : Serial.println ("RTCWDT_SYS_RESET");break;
/**<10, Instrusion tested to reset CPU*/
case 10 : Serial.println ("INTRUSION_RESET");break;
/**<11, Time Group reset CPU*/
case 11 : Serial.println ("TGWDT_CPU_RESET");break;
/**<12, Software reset CPU*/
case 12 : Serial.println ("SW_CPU_RESET");break;
/**<13, RTC Watch dog Reset CPU*/
case 13 : Serial.println ("RTCWDT_CPU_RESET");break;
/**<14, for APP CPU, reseted by PRO CPU*/
case 14 : Serial.println ("EXT_CPU_RESET");break;
/**<15, Reset when the vdd voltage is not stable*/
case 15 : Serial.println ("RTCWDT_BROWN_OUT_RESET");break;
/**<16, RTC Watch dog reset digital core and rtc module*/
case 16 : Serial.println ("RTCWDT_RTC_RESET");break;
default : Serial.println ("NO_MEAN");
}
}
void setup() {
Serial.begin(115200);
delay(2000);
Serial.println("CPU0 reset reason: ");
print_reset_reason(rtc_get_reset_reason(0));
Serial.println("CPU1 reset reason: ");
print_reset_reason(rtc_get_reset_reason(1));
}
void loop() {}
关于esp32 - `Brownout detector was trigerred`的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73200166/
我使用 ESP-IDF 作为框架。 我知道Brownout detector was trigerred错误来自检测低电压发生的低电压检测器。通常,当该错误发生时,MCU 会自动重启。 是的,可以设置
我让 ESP32cam 工作了几天,然后在启动时开始收到该消息。重新加载程序,仍然没有相机。失望 错误: ets Jun 8 2016 00:22:57 rst:0x1 (POWERON_RESET
我是一名优秀的程序员,十分优秀!