You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32在Arduino IDE中使用Serial2与HardwareSerial的区别及选型场景

ESP32 UART2两种使用方法的区别与场景选择

两种方法的核心区别

1. 引脚配置灵活性

  • 第一种方法:Serial2是Arduino ESP32核心预先定义好的硬件串口对象,默认绑定固定引脚(通常Rx2为16、Tx2为17,不同开发板可能略有差异)。初始化时只需指定波特率,无需手动设置引脚,适合直接用默认引脚的场景。
  • 第二种方法:通过HardwareSerial SerialPort(2)手动实例化UART2对象,初始化时可在begin()方法里自定义Rx和Tx引脚(只要该GPIO支持UART功能),比如你代码里指定的16和17,也能换成其他可用引脚,灵活性更高。

2. 对象命名与可读性

  • 第一种方法:只能用固定的Serial2作为对象名,项目串口少的时候没问题,但如果同时用多个串口(比如UART0、UART1、UART2),外设多了容易混淆。
  • 第二种方法:可以自定义对象名,比如改成GPSSerial,当同时连接GPS、蓝牙等多个串口外设时,代码可读性会好很多,一眼就能区分对应设备。不过需要手动引入<HardwareSerial.h>头文件(新版ESP32核心可能自动包含,写上更稳妥)。

3. 初始化参数的直观性

  • 第一种方法:Serial2.begin(115200)只传波特率时,默认使用SERIAL_8N1(8位数据位、无校验、1位停止位)模式。如果要修改模式,得用带参数的重载,比如Serial2.begin(115200, SERIAL_7E1)。
  • 第二种方法:begin()方法里可以一次性指定波特率、串口模式、Rx/Tx引脚,参数更完整,初始化步骤更直观,不用后续再调整。

场景选择建议

优先选第一种方法的情况

  • 使用ESP32默认的UART2引脚,不需要修改引脚
  • 项目简单,只用到1-2个串口,无需复杂区分
  • 作为新手想快速上手,代码更简洁,不用额外处理头文件和对象实例化

优先选第二种方法的情况

  • 默认UART2引脚被其他外设占用,需要更换引脚
  • 项目里有多个串口外设,自定义对象名能让代码逻辑更清晰
  • 需要一次性配置所有串口参数,减少后续修改的麻烦

两种方法的代码示例

第一种方法代码

void setup()  
{
  Serial.begin(115200);
  Serial2.begin(115200); 
} 
void loop()  
{ 
  Serial.print(Serial2.read());
}

第二种方法代码

#include <HardwareSerial.h>

HardwareSerial SerialPort(2); // 绑定UART2
void setup()  
{
  Serial.begin(115200);
  SerialPort.begin(115200, SERIAL_8N1, 16, 17); 
} 
void loop()  
{ 
  Serial.print(SerialPort.read());
}

内容的提问来源于stack exchange,提问作者abdul_muneeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:13:42