八,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}}人
人已打赏
ESP32ESP32-基础

七,ESP32 android蓝牙控制LED

2018-9-6 22:40:19

ESP32ESP32-基础免费项目

九,ESP32 DHT11/22 读取温湿度

2018-9-7 23:43:55

23 条回复 A文章作者 M管理员
  1. 非常感谢楼主,教程很详细

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

  2. guidianren

    楼主写的很好

  3. 谦ツ冲

    谢谢楼主

  4. 风雷

    谢谢楼主分享

  5. 老鐘

    學生想要學,謝謝

    • Luca

      加油

  6. badou

    不知道哪些引脚,板子上只标了两个

    • Luca

      esp32原理图

    • Luca

      正常是GPIO1-GPIO3和GPIO16-GPIO17 其它的可模拟软串口

  7. 云雾•奥

    谢谢楼主分享

  8. Homepea

    谢谢分享

  9. 云云

    楼主写得不错,正在为ESP8266和ESP32中的串口函数不统一而发愁

    • Luca

      如果你要兼容两个 也许你可以这样:
      #ifdef ESP32
      XXXXX
      #elif defined(ESP8266)
      XXXX
      #endif

  10. RUN

    学习下,感谢楼主分享

  11. 中庸至道

    谢谢楼主

  12. hfj32

    这个教程真的太实用了 一下子让我豁然开朗

  13. 学习第一

    谢谢楼主!

  14. RaiiLee

    感谢楼主

  15. wisher

    感谢楼主分享!

  16. 六子

    感谢

  17. 萌芽

    谢谢楼主!

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