八,ESP32使用多个串行端口

一.介绍

ESP32支持3个串行端口,因此您无需像通常的Arduino那样使用SoftwareSerial。在本教程中,我们只关心使用如何在Arduino ESP32上使用多个串行端口将调试信息打印到终端

二.元器件清单

  • ESP32开发板

三.代码设计

我们使用“ HardwareSerial ”类进行串行通信。它有一些重要的接口:

 HardwareSerial(int uart_nr)

这是HardwareSerial的构造函数,其中uart_nr是0,12所以我们有最多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”。这个演示很简单。要监控“打印”数据,只需转到工具>串行监视器

四.结果

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
2 条回复 A 作者 M 管理员
  1. 非常感谢楼主,教程很详细

    • 你好,这个多串口设置成功了吗?

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论