最近更新于 2023-08-27 19:45

测试环境

STM32F103C8T6,STM32F103C6T6
Arduino IDE 2.1.1
Arduino_Core_STM32 2.6.0(https://blog.iyatt.com/?p=11184


这里程序下载我使用的 ST-Link 连接,然后用了一个 USB 转串口模块来测试 STM32 的串口。注意 STM32 的 RX 和 TX 要分别连接 USB 转串口模块的 TX 和 RX,你读我写,你写我读。
file

硬件串口

STM32F103C8T6 有 3 个硬件串口,STM32F103C6T6 只有 2 个硬件串口,没有 USART3

\begin{array}{|c|c|c|c|c|c|}
\hline
串口 & TX(发送) & RX(接收) & SCLK(时钟) & CTS(清除发送) & RTS(请求发送)\\
\hline
USART1 & PA9 & PA10 & PA8 & PA11 & PA12 \\
\hline
USART2 & PA2 & PA3 & PA4 & PA0 & PA1 \\
\hline
USART3 & PB10 & PB11 & PB12 & PB13 & PB14 \\
\hline
\end{array}
HardwareSerial serial1(PA10, PA9); // 串口1
HardwareSerial serial2(PA3, PA2); // 串口2
HardwareSerial serial3(PB11, PB10); // 串口3

void setup()
{
  serial1.begin(115200);
  serial2.begin(115200);
  serial3.begin(115200);
}

void loop()
{
  serial1.println("1 Hello World!");
  serial2.println("2 Hello World!");
  serial3.println("3 Hello World!");
  delay(1000);
}

file

读写示例

HardwareSerial serial1(PA10, PA9);

void setup()
{
    serial1.begin(115200);
}

void loop()
{
    while (serial1.available()) // 缓冲区待读取的字节数
    {
        serial1.print((char)serial1.read()); // 将读到的内容返回给发送者
    }
    delay(200);
}

file

作者 IYATT-yx