119浏览
查看: 119|回复: 1

[MP动手做] 【花雕学编程】Arduino动手(234)--WeMos D1R32打印复位原因

[复制链接]
【花雕学编程】Arduino动手(234)--WeMos D1R32打印复位原因图1

Wemos D1 ESP32 开发板是一款紧凑而强大的设备,它集成了天线和射频巴伦、功率放大器、低噪声放大器、滤波器和电源管理模块。整个解决方案占用的印刷电路板面积最少。该板采用台积电 40nm 低功耗技术,搭配 2.4GHz 双模 Wi-Fi 和蓝牙芯片,功率和射频性能最佳,安全可靠,可扩展至各种应用。将 WiFi 和蓝牙连接结合在单个 ESP32 芯片上。Wemos D1 ESP32 开发板是基于乐鑫 ESP32 芯片的开发板。它具有 Wi-Fi 和蓝牙连接,以及一系列用于连接传感器、执行器和其他设备的输入和输出引脚。该板具有高性能处理器和广泛的功能,是物联网和家庭自动化项目的理想选择。此外,该板具有易于使用的界面,采用 Arduino UNO 外形尺寸,并与 Arduino 平台兼容,可以轻松开发项目并与其他设备集成。借助 Wemos D1 ESP32 开发板,您可以轻松地为各种应用创建智能、互联的解决方案。该板的一些规格包括:
- 240 MHz 双核 LX6 芯片
- Wi-Fi 802.11 b/g/n 连接
- 蓝牙 4.2 BLE 连接
- 4 MB 闪存
- 520 KB SRAM
- 30 针输入/输出,包括 GPIO、I2C、SPI、UART 和 ADC
- MicroSD支持
- LiPo电池充电支持
该板与 Arduino 平台兼容,可以使用 Arduino IDE 进行编程。此外,它还支持 MicroPython 平台,该平台允许使用 Python 进行编程。


【花雕学编程】Arduino动手(234)--WeMos D1R32打印复位原因图2

驴友花雕  中级技神
 楼主|

发表于 2024-10-8 20:39:15

【花雕学编程】Arduino动手(234)--WeMos D1R32打印复位原因

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32
    Wifi蓝牙无线开发板CH340 4M内存
  {花雕动手做}项目之七:WeMos D1R32 打印上次复位原因

实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.     实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32
  4.     Wifi蓝牙无线开发板CH340 4M内存
  5.   {花雕动手做}项目之七:WeMos D1R32 打印上次复位原因
  6. */
  7. #include <rom/rtc.h>
  8. #define uS_TO_S_FACTOR 1000000  // 微秒转换为秒的因子
  9. // 打印复位原因的函数
  10. void print_reset_reason(RESET_REASON reason) {
  11.   switch ( reason) {
  12.     case 1 : Serial.println ("电池上电复位"); break;         // 电池上电复位
  13.     case 3 : Serial.println ("软件复位"); break;              // 软件复位
  14.     case 4 : Serial.println ("看门狗复位"); break;            // 看门狗复位
  15.     case 5 : Serial.println ("深度睡眠复位"); break;          // 深度睡眠复位
  16.     case 6 : Serial.println ("SDIO模块复位"); break;          // SDIO模块复位
  17.     case 7 : Serial.println ("计时组0看门狗复位"); break;     // 计时组0看门狗复位
  18.     case 8 : Serial.println ("计时组1看门狗复位"); break;     // 计时组1看门狗复位
  19.     case 9 : Serial.println ("RTC看门狗复位"); break;         // RTC看门狗复位
  20.     case 10 : Serial.println ("入侵复位"); break;             // 入侵复位
  21.     case 11 : Serial.println ("计时组复位CPU"); break;        // 计时组复位CPU
  22.     case 12 : Serial.println ("软件复位CPU"); break;          // 软件复位CPU
  23.     case 13 : Serial.println ("RTC看门狗复位CPU"); break;     // RTC看门狗复位CPU
  24.     case 14 : Serial.println ("外部CPU复位"); break;          // 外部CPU复位
  25.     case 15 : Serial.println ("电压不稳定复位"); break;       // 电压不稳定复位
  26.     case 16 : Serial.println ("RTC看门狗复位数字核心和RTC模块"); break; // RTC看门狗复位数字核心和RTC模块
  27.     default : Serial.println ("无意义复位");
  28.   }
  29. }
  30. // 打印详细复位原因的函数
  31. void verbose_print_reset_reason(RESET_REASON reason) {
  32.   switch ( reason) {
  33.     case 1  : Serial.println ("电池上电复位"); break;
  34.     case 3  : Serial.println ("软件复位数字核心"); break;
  35.     case 4  : Serial.println ("传统看门狗复位数字核心"); break;
  36.     case 5  : Serial.println ("深度睡眠复位数字核心"); break;
  37.     case 6  : Serial.println ("由SLC模块复位,复位数字核心"); break;
  38.     case 7  : Serial.println ("计时组0看门狗复位数字核心"); break;
  39.     case 8  : Serial.println ("计时组1看门狗复位数字核心"); break;
  40.     case 9  : Serial.println ("RTC看门狗复位数字核心"); break;
  41.     case 10 : Serial.println ("入侵测试复位CPU"); break;
  42.     case 11 : Serial.println ("计时组复位CPU"); break;
  43.     case 12 : Serial.println ("软件复位CPU"); break;
  44.     case 13 : Serial.println ("RTC看门狗复位CPU"); break;
  45.     case 14 : Serial.println ("应用CPU由主CPU复位"); break;
  46.     case 15 : Serial.println ("电压不稳定时复位"); break;
  47.     case 16 : Serial.println ("RTC看门狗复位数字核心和RTC模块"); break;
  48.     default : Serial.println ("无意义复位");
  49.   }
  50.   delay(1000);
  51. }
  52. void setup() {
  53.   // 初始化,代码只运行一次
  54.   Serial.begin(115200);
  55.   delay(2000);
  56.   Serial.println("CPU0复位原因:");
  57.   print_reset_reason(rtc_get_reset_reason(0));
  58.   verbose_print_reset_reason(rtc_get_reset_reason(0));
  59.   Serial.println("CPU1复位原因:");
  60.   print_reset_reason(rtc_get_reset_reason(1));
  61.   verbose_print_reset_reason(rtc_get_reset_reason(1));
  62.   // 设置ESP32进入深度睡眠以观察复位原因的变化。设备将休眠5秒钟。
  63.   esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
  64.   Serial.println("进入睡眠模式");
  65.   esp_deep_sleep(5 * uS_TO_S_FACTOR);
  66. }
  67. void loop() {
  68.   // 主代码,在 setup() 执行完毕后重复运行
  69. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail