zoukankan      html  css  js  c++  java
  • ESP-8266 串口通信(Serial)

    ESP8266的串口通信与传统的Arduino设备完全一样。除了硬件FIFO(128字节用于TX和RX)之外,硬件串口还有额外的
    256字节的TX和RX缓存。发送和接收全都由中断驱动。当FIFO/缓存满时,write函数会阻塞工程代码的执行,等待空闲空间。
    当FIFO/缓存空时,read函数也会阻塞工程代码的执行,等待串口数据进来。
    NodeMcu上有两组串口,Serial和Serial1。 
    Serial使用UART0,默认对应引脚是GPIO1(TX--D10)和GPIO3(RX--D9)
     
     
    在Serial.begin执行之后,调用Serial.swap()可以将Serial重新映射到GPIO15(TX---D8)和GPIO13(RX---D7)。再次调用Serial.swap()将Serial重新映射回GPIO1--D10和GPIO3--D9。不过,一般
    情况下,默认就好
     
     
    例子一:映射
     
    void setup() { 
    Serial.begin(115200);
    Serial.println("GPIO1(TX),GPIO3(RX)");
    Serial.swap();//调用映射方法
    Serial.println("GPIO15(TX1),GPIO13(RX1)");
    Serial.swap();
    Serial.println("GPIO1(TX),GPIO3(RX)");
     }
     void loop() { 
    
     }
     
    Serial1使用UART1,默认对应引脚是GPIO2(TX----D4)。Serial1不能用于接收数据,因为它的RX引脚被用于flash芯片连接---D3。
    要使用Serial1,请调用Serial.begin(baudrate)  
    如果不使用Serial1并且不映射串口,可以将UART0的TX映射到GPIO2,具体操作是:在Serial.begin()之后调用
    Serial.set_tx(2)或者直接调用Serial.begin(baud,config,mode,2)。
    默认情况下,当调用Serial.begin后,将禁用WiFi库的诊断输出。要想再次启动调试输出,请调用
    Serial.setDebugOutput(true)。要将调试输出映射到Serial1时,需要调用Serial1.setDebugOutput(true)
    调用Serial.setRxBufferSize(size_t size)允许定义接收缓冲区的大小,默认值是256(缓冲区也是使用内存,意味着不能一
    味地去增大这个值)。 Serial和Serial1对象都支持5,6,7,8个数据位,奇数(O)、偶数(E)和无(N)奇偶校验,以
    及1或者2个停止位。要设置所需的模式,请调用Serial.begin(baudrate, SERIAL_8N1), Serial.begin(baudrate, SERIAL_6E2)
    Serial和Serial1都实现了一种新方法用来获取当前的波特率设置。要获取当前的波特率,请调用Serial.baudRate(),
    Serial1.baudRate()
     
    例子:---获取波特率
    void setup() { 
    Serial.begin(57600);
    int br = Serial.baudRate();  //获取当前波特率
    Serial.printf("当前波特率是 %d bps
    ", br);
     }
    void loop() { 
    
     }
     
     
    串口用处 
    一般来说,串口通信用在两个方面:
    1.与外围串口设备传输数据,比如蓝牙模块、Arduino等等;
    2.开发过程中用来调试代码,通过串口输出Debug信息了解程序运行信息
     
     
     
     
     
     
     
     
     
     
    天子骄龙
  • 相关阅读:
    MySQL left join 查询很慢(1)
    Windows 搭建 hbase 单机版
    Spark SQL 编程(七)
    Spark RDD 操作(三)
    并发编程(一)
    并发编程之 multiprocessing 和 concurrent.futures(二)
    Spark 系列之环境搭建(一)
    Python3之并发(七)---线程同步队列(queue)
    Python3之并发(六)---线程池
    Python3之并发(五)---线程条件(Condition)和事件(Event)
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11174749.html
Copyright © 2011-2022 走看看