用户工具

站点工具


reference:library:softwareserial

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
reference:library:softwareserial [2019/08/08 07:20] – [SoftwareSerial Library] 弘毅reference:library:softwareserial [2023/06/07 04:24] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +====== SoftwareSerial Library ======
  
 +串行总线通过一个称为UART的硬件(芯片内置)进行。这个硬件允许单片机接收串行通信,即使芯片在进行其他工作,只要有64个字节的串行缓冲器的储存空间即可。
 +
 +使用软件的复制功能(因此称为“SoftwareSerial”),现有的SoftwareSerial 库,以允许其他的控制器的数字引脚的串行通信,这可能有多个软件串口速度高达115200bps。一个参数使反转信号要求该协议的设备。
 +
 +
 +===== 限制 =====
 +
 +库具有以下已知的限制:
 +  * 如果使用多个串口软件,一次只有一个软件可以接收数据。
 +  * 在Mega 2560 上,不是所有的引脚都支持中断,允许用于RX的引脚包括:10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
 +  * 实际环境软串口速度太快可能工作会不稳定,推荐不要超过4800波特率
 +===== 例子 =====
 +<code cpp>
 +/*
 +  Software serial multiple serial test
 + 
 + 从硬件串口接收,发送到软件的序列。
 + 软件串行接收,发送到硬件序列。
 + 
 + * RX是数字引脚2(连接到其他设备的TX)
 + * TX是数字引脚3(连接到其他设备的RX)
 +
 + */
 +#include <SoftwareSerial.h>
 +
 +SoftwareSerial mySerial(2, 3); // RX, TX
 +
 +void setup()  
 +{
 +  //打开串行通信,等待端口打开:
 +  Serial.begin(57600);
 +  while (!Serial) {
 +    ; // 等待串口连接
 +  }
 +
 +
 +  Serial.println("Goodnight moon!");
 +
 +  // 设置串口通讯的速率
 +  mySerial.begin(4800);
 +  mySerial.println("Hello, world?");
 +}
 +
 +void loop() // 循环
 +{
 +  if (mySerial.available())
 +    Serial.write(mySerial.read());
 +  if (Serial.available())
 +    mySerial.write(Serial.read());
 +}
 +</code>
 +
 +===== 函数 =====
 +
 +  * [[reference:library:SoftwareSerialConstructor|SoftwareSerial()]]
 +  * [[reference:library:SoftwareSerialAvailable|available()]]
 +  * [[reference:library:SoftwareSerialBegin|begin()]]
 +  * [[reference:library:SoftwareSerialIsListening|isListening()]]
 +  * [[reference:library:SoftwareSerialOverflow|overflow()]]
 +  * [[reference:library:SoftwareSerialPeek|peek()]]
 +  * [[reference:library:SoftwareSerialRead|read()]]
 +  * [[reference:library:SoftwareSerialPrint|print()]]
 +  * [[reference:library:SoftwareSerialPrintln|println()]]
 +  * [[reference:library:SoftwareSerialListen|listen()]]
 +  * [[reference:library:SoftwareSerialWrite|write()]]
 +
 +
 +