八,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”。这个演示很简单。要监控“打印”数据,只需转到工具>串行监视器

四.结果

八,ESP32使用多个串行端口

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
ESP-32

七,ESP32 android蓝牙控制LED

2025-4-15 17:11:23

ESP-32

九,ESP32 DHT11/22 读取温湿度

2025-4-15 17:17:53

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索