ESP32 UART 引脚与串口指南 · UART0/1/2 默认脚位与下载冲突
ESP32 三个串口各自默认接哪两个脚、为什么 UART1 用不了、下载失败时该检查什么。
三个串口
| 串口 | 默认 TX | 默认 RX | 典型用途 |
|---|---|---|---|
| UART0 | GPIO1 | GPIO3 | 烧录 + 默认日志输出,尽量不要占用 |
| UART1 | GPIO10 | GPIO9 | 默认脚被 Flash 占用,实际必须重映射 |
| UART2 | GPIO17 | GPIO16 | 接 GPS、串口屏、RS485 等外部模块 |
为什么 UART1「用不了」
UART1 的默认脚是 GPIO9 和 GPIO10——而这两个脚在绝大多数 ESP32 模组上被用来连接内部 SPI Flash。所以你一初始化 UART1,Flash 读写就出问题,芯片直接崩。
解决办法:用
uart_set_pin() 把 UART1 重映射到任意空闲脚,例如 TX=GPIO18、RX=GPIO19。这是唯一靠谱的做法。下载失败时先查这几个脚
- GPIO0:拉低再复位进入下载模式。开发板上的 BOOT 键接的就是它。
- GPIO1 / GPIO3:别在上电时挂会影响电平的外设(比如某些 GPS 模块一上电就往外发数据,会把日志冲掉)。
- GPIO2 / GPIO12 / GPIO15:strapping 脚,外部上下拉会让启动模式错乱。
实用建议
- 波特率常用 115200;更高波特率的稳定性受时钟分频精度影响,长距离或有干扰时用 9600 / 19200 更稳。
- RS485 需要一个 GPIO 控制收发方向,发送前后各留一点时间切换。
- 所有 UART 都能通过 GPIO 矩阵重映射,不用局限于默认脚。
- 需要很大吞吐量时优先考虑 UART2 + DMA,而不是硬拉波特率。
本文默认是 ESP32 经典款。其余型号的 UART 数量与默认脚位不同(例如 C3 只有 2 个 UART),请以对应型号的官方文档为准。
数据核验:2026-10-20 · 以 Espressif 官方文档交叉核对。随型号或 ESP-IDF 版本变化的字段一律标注「以官方文档为准」,不编造具体数值。
官方外设文档 →
相关页面
I²CESP32 上 I²C 该接哪两个脚、上拉电阻用多大、为什么设备扫描不到——把踩过的坑一次讲清楚,附各型号默认脚位参考。SPIESP32 的 HSPI 与 VSPI 默认接哪几个脚、能跑多快、为什么屏幕就是点不亮——含可直接抄的引脚对照。RMT 红外与 WS2812RMT 是 ESP32 上最被低估的外设:红外遥控、WS2812 灯带、单总线传感器都靠它。这里讲清通道数、分辨率和 Wi-Fi 干扰问题。LEDC PWMESP32 的 LEDC 有 16 路 PWM。频率和分辨率是此消彼长的关系,这里给出换算表和常用场景的推荐值。深度睡眠深度睡眠能到多少 µA、哪些脚能唤醒、醒来后数据还在吗——配合续航计算器一起用,把电池项目的账算清楚。