esp32 arduino环境的搭建

esp32库下载失败问题:

Arduino-esp32-3.1.1版本离线安装(附安装包)|支持esp32P4、S3、C6等芯片解决下载慢问题_esp32 3.1.1-CSDN博客

esp32串口没有打印问题:

烧录flash可能会占用默认的调试串口,导致 Serial.print() 失效。

复制代码
/**
 * ESP32 N16R8 串口强力验证代码
 * 此代码将测试多个可能的串口并打印详细信息
 */

// 定义不同串口的引脚(根据你的开发板手册调整,以下是常见配置)
#define UART0_TX_PIN 1  // GPIO1, 通常是下载和默认打印引脚
#define UART0_RX_PIN 3  // GPIO3
// 硬件串口1通常被闪存占用,所以我们主要测试串口2
#define UART2_TX_PIN 17 // GPIO17
#define UART2_RX_PIN 16 // GPIO16

// 声明使用硬件串口2
HardwareSerial SerialPort(2); // 使用UART2

void setup() {
  // 1. 首先尝试初始化传统的Serial(通常是UART0,连接USB转串口芯片)
  Serial.begin(115200);
  
  // 给串口一点启动时间
  delay(500); 

  // 2. 检查Serial是否初始化成功
  if(!Serial) { 
    // 如果Serial失败,尝试使用预定义的引脚初始化Serial2作为主调试口
    SerialPort.begin(115200, SERIAL_8N1, UART2_RX_PIN, UART2_TX_PIN);
    
    // 在Serial2上打印错误信息(你需要用杜邦线连接这些引脚到USB转串口工具才能看到)
    SerialPort.println("错误:默认Serial(USB)端口初始化失败!");
    SerialPort.println("正在使用Serial2(UART2)进行通信。");
    SerialPort.println("请将USB转串口工具的RX连接到GPIO17,TX连接到GPIO16");
    
    // 同时尝试用Serial打印(可能仍无效,但尝试一下)
    Serial.println("此消息可能看不到,如果上面提示失败"); 
  } else {
    // 3. 如果Serial成功,打印基础信息
    Serial.println("======= ESP32 N16R8 串口测试 =======");
    Serial.print("芯片型号: ");
    Serial.println(ESP.getChipModel());
    Serial.print("CPU频率: ");
    Serial.print(ESP.getCpuFreqMHz());
    Serial.println(" MHz");
    Serial.print("闪存大小: ");
    Serial.print(ESP.getFlashChipSize() / (1024 * 1024));
    Serial.println(" MB");
    Serial.print("Free Heap: ");
    Serial.print(ESP.getFreeHeap());
    Serial.println(" bytes");
    Serial.println("=====================================");
    Serial.println("如果看到此信息,说明默认串口(Serial)工作正常!");
    Serial.println("");
  }
}

void loop() {
  // 根据哪个串口可用,就在哪个串口上循环打印
  if (Serial) { // 如果Serial可用
    Serial.printf("[%lu] Serial端口运行正常,Free Heap: %d bytes\n", millis(), ESP.getFreeHeap());
    delay(2000); // 每2秒打印一次
  } else { // 如果Serial不可用,使用SerialPort
    SerialPort.printf("[%lu] 正在通过Serial2(UART2)通信\n", millis());
    delay(2000);
  }
}

🧩 SERIAL_8N1 让我们来解码一下:

  1. 数据位 8N1 表示:8 位数据,N 无校验,1位停止位。

  2. 对应到上面的位:

    • 数据位 8 = 0x3 << 18 = 0xc0000

    • 无校验 N = 0x0 << 15 = 0x0

    • 停止位 1 = 0x1 << 12 = 0x1000

  3. 把它们加起来:0xc0000 + 0x0 + 0x1000 = 0xc1000

  4. 最后加上模式标志 0x80000000x8000000 + 0xc1000 = **0x8000c1000*

相关推荐
糯米导航9 小时前
AI 视觉回归实战:截图对比不是“找不同”,如何让智能差异分析真正服务 UI 质量
人工智能·ui·回归
科技圈观察10 小时前
2026年好伴AI医疗专用大模型应用梳理与梯队参考
人工智能
jkyy201410 小时前
深耕AI健康医疗数据智库,赋能企业构建主动健康管理新生态
大数据·人工智能·健康医疗
cd_9492172110 小时前
3D角色自动绑骨怎么做?用V2Fun完成建模、绑定、动作和导出
人工智能·3d
瑞禧生物tech11 小时前
SH-PEG-Biotin巯基-聚乙二醇-生物素 HS-PEG-Bio 深度解析
人工智能
QYR-分析11 小时前
机器人安全控制器行业高速扩容 本土替代迎来全新发展窗口期
人工智能·安全·机器人
冬奇Lab11 小时前
MCP 系列(06):MCP vs Function Calling——用数据说话的选型指南
人工智能
冬奇Lab11 小时前
每日一个开源项目(第159篇):Vibe-Trading - 用自然语言做量化研究,AI 驱动的个人交易 Agent
人工智能·开源·资讯
AI大模型-小雄11 小时前
2026 年 7 月国内怎么开通 ChatGPT Pro?5x / 20x 区别、适合人群与避坑指南
人工智能·gpt·chatgpt·ai编程·开发工具·codex·chatgpt pro
快乐非自愿11 小时前
AI低代码破局:数字化降本增效的核心逻辑与商业落地
人工智能·低代码