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 让我们来解码一下:
-
数据位
8N1表示:8 位数据,N 无校验,1位停止位。 -
对应到上面的位:
-
数据位
8=0x3<< 18 =0xc0000 -
无校验
N=0x0<< 15 =0x0 -
停止位
1=0x1<< 12 =0x1000
-
-
把它们加起来:
0xc0000 + 0x0 + 0x1000 = 0xc1000。 -
最后加上模式标志
0x8000000:0x8000000 + 0xc1000 = **0x8000c1000*