【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 
    实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32 
    Wifi蓝牙无线开发板CH340 4M内存 
  {花雕动手做}项目之七:WeMos D1R32 打印上次复位原因 
 
实验开源代码 
 
			
			
			- /*
 -   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 -     实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32
 -     Wifi蓝牙无线开发板CH340 4M内存
 -   {花雕动手做}项目之七:WeMos D1R32 打印上次复位原因
 - */
 - 
 - #include <rom/rtc.h>
 - 
 - #define uS_TO_S_FACTOR 1000000  // 微秒转换为秒的因子
 - 
 - // 打印复位原因的函数
 - void print_reset_reason(RESET_REASON reason) {
 -   switch ( reason) {
 -     case 1 : Serial.println ("电池上电复位"); break;         // 电池上电复位
 -     case 3 : Serial.println ("软件复位"); break;              // 软件复位
 -     case 4 : Serial.println ("看门狗复位"); break;            // 看门狗复位
 -     case 5 : Serial.println ("深度睡眠复位"); break;          // 深度睡眠复位
 -     case 6 : Serial.println ("SDIO模块复位"); break;          // SDIO模块复位
 -     case 7 : Serial.println ("计时组0看门狗复位"); break;     // 计时组0看门狗复位
 -     case 8 : Serial.println ("计时组1看门狗复位"); break;     // 计时组1看门狗复位
 -     case 9 : Serial.println ("RTC看门狗复位"); break;         // RTC看门狗复位
 -     case 10 : Serial.println ("入侵复位"); break;             // 入侵复位
 -     case 11 : Serial.println ("计时组复位CPU"); break;        // 计时组复位CPU
 -     case 12 : Serial.println ("软件复位CPU"); break;          // 软件复位CPU
 -     case 13 : Serial.println ("RTC看门狗复位CPU"); break;     // RTC看门狗复位CPU
 -     case 14 : Serial.println ("外部CPU复位"); break;          // 外部CPU复位
 -     case 15 : Serial.println ("电压不稳定复位"); break;       // 电压不稳定复位
 -     case 16 : Serial.println ("RTC看门狗复位数字核心和RTC模块"); break; // RTC看门狗复位数字核心和RTC模块
 -     default : Serial.println ("无意义复位");
 -   }
 - }
 - 
 - // 打印详细复位原因的函数
 - void verbose_print_reset_reason(RESET_REASON reason) {
 -   switch ( reason) {
 -     case 1  : Serial.println ("电池上电复位"); break;
 -     case 3  : Serial.println ("软件复位数字核心"); break;
 -     case 4  : Serial.println ("传统看门狗复位数字核心"); break;
 -     case 5  : Serial.println ("深度睡眠复位数字核心"); break;
 -     case 6  : Serial.println ("由SLC模块复位,复位数字核心"); break;
 -     case 7  : Serial.println ("计时组0看门狗复位数字核心"); break;
 -     case 8  : Serial.println ("计时组1看门狗复位数字核心"); break;
 -     case 9  : Serial.println ("RTC看门狗复位数字核心"); break;
 -     case 10 : Serial.println ("入侵测试复位CPU"); break;
 -     case 11 : Serial.println ("计时组复位CPU"); break;
 -     case 12 : Serial.println ("软件复位CPU"); break;
 -     case 13 : Serial.println ("RTC看门狗复位CPU"); break;
 -     case 14 : Serial.println ("应用CPU由主CPU复位"); break;
 -     case 15 : Serial.println ("电压不稳定时复位"); break;
 -     case 16 : Serial.println ("RTC看门狗复位数字核心和RTC模块"); break;
 -     default : Serial.println ("无意义复位");
 -   }
 -   delay(1000);
 - }
 - 
 - void setup() {
 -   // 初始化,代码只运行一次
 -   Serial.begin(115200);
 -   delay(2000);
 - 
 -   Serial.println("CPU0复位原因:");
 -   print_reset_reason(rtc_get_reset_reason(0));
 -   verbose_print_reset_reason(rtc_get_reset_reason(0));
 - 
 -   Serial.println("CPU1复位原因:");
 -   print_reset_reason(rtc_get_reset_reason(1));
 -   verbose_print_reset_reason(rtc_get_reset_reason(1));
 - 
 -   // 设置ESP32进入深度睡眠以观察复位原因的变化。设备将休眠5秒钟。
 -   esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
 -   Serial.println("进入睡眠模式");
 -   esp_deep_sleep(5 * uS_TO_S_FACTOR);
 - }
 - 
 - void loop() {
 -   // 主代码,在 setup() 执行完毕后重复运行
 - }
 
  复制代码
  
 
 |