一.介绍
ESP32支持3个串行端口,因此您无需像通常的Arduino那样使用SoftwareSerial。在本教程中,我们只关心使用如何在Arduino ESP32上使用多个串行端口将调试信息打印到终端。
二.元器件清单
- ESP32开发板
三.代码设计
我们使用“ HardwareSerial ”类进行串行通信。它有一些重要的接口:
HardwareSerial(int uart_nr)
这是HardwareSerial的构造函数,其中uart_nr是0,1或2所以我们有最多3个串口。
void begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1, bool invert=false);
使用波特率,串行模式(默认为SERIAL_8N1),rxPin和txPin 初始化串行端口(如果将这些参数留空库将使用默认引脚)。以下是此函数的代码:
void HardwareSerial::begin(unsigned long baud, uint32_t config, int8_t rxPin, int8_t txPin, bool invert)
{
if(0 > _uart_nr || _uart_nr > 2) {
log_e("Serial number is invalid, please use 0, 1 or 2");
return;
}
if(_uart) {
end();
}
if(_uart_nr == 0 && rxPin < 0 && txPin < 0) {
rxPin = 3;
txPin = 1;
}
if(_uart_nr == 1 && rxPin < 0 && txPin < 0) {
rxPin = 9;
txPin = 10;
}
if(_uart_nr == 2 && rxPin < 0 && txPin < 0) {
rxPin = 16;
txPin = 17;
}
_uart = uartBegin(_uart_nr, baud, config, rxPin, txPin, 256, invert);
}
以下是一些常用的函数:
– available():获取可从串行端口读取的字节数(字符数)。
– print():将数据作为ASCII文本打印到串行端口。
– println():将数据作为ASCII文本打印到串行端口,后跟回车符(ASCII 13或’ r’)和换行符(ASCII 10或’ n’)。
– read():读取Rx引脚上的输入串行数据。
– readStringUntil():将串行缓冲区中的字符读入字符串,直到面向终结符字符。
由于Arduino库创建了一个默认实例HardwareSerial Serial(0),因此您可以直接使用创建的Serial对象(在下面的示例中)而无需自己创建实例。
– 为了使用更多串行端口,您只需创建另一个HardwareSerial实例,例如:HardwareSerial Serial1(1)或HardwareSerial Serial2(2),然后照常使用它们。
我们将制作一个简单的演示,在终端上每1秒打印一个字符串“hello ESP32”。这个演示很简单。要监控“打印”数据,只需转到工具>串行监视器
四.结果