在 ESP32 开发中,配置默认的串口打印
在 ESP32 开发中,默认的串口打印(日志输出)通常通过 UART0(GPIO1-TX 和 GPIO3-RX)输出。以下是配置和修改默认打印串口的详细方法:
1. 默认串口打印配置
ESP-IDF 默认使用 UART0 作为日志输出通道,波特率通常为 115200。
连接方式:
-
TX (GPIO1) → USB转串口模块的 RX
-
RX (GPIO3) → USB转串口模块的 TX
查看默认日志
烧录程序后,使用以下命令监视日志:
bash
复制
下载
idf.py -p /dev/ttyUSB0 monitor
或使用 screen
/minicom
:
bash
screen /dev/ttyUSB0 115200
2. 修改默认打印串口
如果需要更改日志输出的 UART 端口(例如改用 UART1 或禁用日志),可以通过 menuconfig
配置:
(1) 进入配置菜单
bash
复制
下载
idf.py menuconfig
(2) 修改串口配置
导航至:
复制
下载
Component config → ESP System Settings → Channel for console output
选项:
-
Default UART(默认 UART0,GPIO1/GPIO3)
-
Custom UART(自定义 TX/RX 引脚)
-
None(禁用日志输出)
示例:改为 UART1(GPIO9-TX, GPIO10-RX)
-
选择 Custom UART。
-
设置:
-
UART TX pin →
9
(或其他 GPIO) -
UART RX pin →
10
(可选,仅用于输入) -
UART baud rate →
115200
(可调整)
-
(3) 保存并编译
按 S
保存,Q
退出,然后重新编译:
bash
复制
下载
idf.py build flash monitor
3. 通过代码动态修改打印串口
也可以在代码中调用 esp_log_set_vprintf()
或修改 UART 配置:
c
#include "driver/uart.h"
#include "esp_log.h"void app_main() {// 更改日志串口为 UART1(GPIO9-TX)uart_config_t uart_config = {.baud_rate = 115200,.data_bits = UART_DATA_8_BITS,.parity = UART_PARITY_DISABLE,.stop_bits = UART_STOP_BITS_1,.flow_ctrl = UART_HW_FLOWCTRL_DISABLE};uart_param_config(UART_NUM_1, &uart_config);uart_set_pin(UART_NUM_1, 9, 10, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);uart_driver_install(UART_NUM_1, 1024, 0, 0, NULL, 0);// 重定向日志到 UART1esp_log_set_vprintf(&my_uart_printf); // 需自定义 my_uart_printf
}
4. 禁用串口日志输出
如果不需要日志,可以在 menuconfig
中选择 None,或直接关闭日志级别:
// 在代码中禁用所有日志 esp_log_level_set("*", ESP_LOG_NONE);
5. 常见问题
(1) 日志乱码
-
检查波特率是否匹配(默认
115200
)。 -
确保 USB 转串口模块稳定(如 CP2102/CH340)。
(2) 修改后无输出
-
确认 GPIO 引脚未被占用(如 UART1 默认用于 Flash,需避免冲突)。
-
检查
menuconfig
配置是否生效(清理并重新编译)。
(3) 多串口同时使用
-
ESP32 有 3 个 UART(UART0/UART1/UART2),但 UART1 的 TX 引脚(GPIO9)可能与 Flash 冲突,需谨慎选择。
总结
需求 | 方法 |
---|---|
默认日志串口 | UART0(GPIO1-TX, GPIO3-RX),波特率 115200 |
修改日志串口 | menuconfig → Component config → ESP System Settings → Channel for console output |
禁用日志 | menuconfig 选择 None 或代码设置 esp_log_level_set("*", ESP_LOG_NONE) |
动态配置串口 | 调用 uart_param_config() + uart_set_pin() |
通过以上方法,可以灵活配置 ESP32 的日志输出串口。