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\n", br);
}
void loop() {

}

    串口用处  一般来说,串口通信用在两个方面: 1.与外围串口设备传输数据,比如蓝牙模块、Arduino等等; 2.开发过程中用来调试代码,通过串口输出Debug信息了解程序运行信息