基于Arduino的STM32F103RCT6最小系统板的测试及串口通讯
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、硬件准备
- 1.1 核心器件清单
- 1.2 串口接线方案
- 方案一:串口1通信(烧录线)
- 方案二:串口1通信(USB-TTL模块)
- 方案三:串口2通信(USB-TTL模块)
- 二、代码实现
- 2.1 Aruino IDE的开发环境配置
- 2.2核心代码解析
- 三、功能验证
- 3.1 串口1通信(烧录线)测试
- 3.2 串口1通信(USB-TTL模块)测试
- 3.3 串口2通信(USB-TTL模块)测试
- 四、常见问题排查
- 总结
前言
STM32F103RCT6作为高性能ARM Cortex-M3微控制器,凭借其丰富的外设资源在嵌入式领域广泛应用。本文针对基于Arduino框架的STM32最小系统板,详解串口通信的硬件配置与软件实现方案。实验表明,通过合理配置硬件串口,可实现115200bps波特率下的通信。
本文仅做arduino的基础配置说明,与 RCT6的测试及串口通讯
一、硬件准备
1.1 核心器件清单
- STM32F103RCT6最小系统板(支持Arduino Core)
- rct6烧录线
- USB转TTL模块(CH340/PL2303)其他版本未验证
- 杜邦线若干
1.2 串口接线方案
方案一:串口1通信(烧录线)
接线示意:
RCT6 | 电脑 |
---|---|
ISP下载口 | usb口 |
方案二:串口1通信(USB-TTL模块)
接线示意:
RCT6 | USB-TTL模块 |
---|---|
5V | 5V (用3V接3V也行,我这边的usb-ttl是5V引出,3.3并) |
GND | GND |
PA9 | TX |
PA10 | RX |
方案三:串口2通信(USB-TTL模块)
接线示意:
RCT6 | USB-TTL模块 |
---|---|
5V | 5V (用3V接3V也行,我这边的usb-ttl是5V引出,3.3并) |
GND | GND |
PA2 | TX |
PA3 | RX |
二、代码实现
2.1 Aruino IDE的开发环境配置
2.2核心代码解析
代码如下(示例):
#include <HardwareSerial.h>// 硬件串口初始化(USART1/2)
HardwareSerial MySerial(USART1);
HardwareSerial eSerial(USART2); void setup() {pinMode(PA8, OUTPUT); // 初始化状态指示灯MySerial.begin(115200); // 串口1波特率eSerial.begin(115200); // 串口2波特率
}void loop() {// LED状态指示digitalWrite(PA8, LOW); // 点亮delay(1000);digitalWrite(PA8, HIGH); // 熄灭delay(1000);// 双串口数据发送MySerial.println("hello"); // 通过PA9发送eSerial.println("world"); // 通过PA2发送
}
三、功能验证
3.1 串口1通信(烧录线)测试
烧录线直连方案
- 通过ISP下载口直接通信,串口监视器仅显示"hello"字符串。
- 板载LED灯闪烁
3.2 串口1通信(USB-TTL模块)测试
USB-TTL转接方案
- PA9接模块RX端时,串口监视器仅显示"hello"字符串。
- 板载LED灯闪烁
3.3 串口2通信(USB-TTL模块)测试
USB-TTL转接方案
- PA2接模块RX端时,串口监视器仅显示"world"字符串。
- 板载LED灯闪烁
四、常见问题排查
故障现象 | 可能原因 | 解决方案 |
---|---|---|
上传失败 | boot0 | 未置高 |
上传失败 | Arduino IDE配置错误 | 看上面2.1 |
运行失败 | boot0 | 未置底 |
无法识别串口 | 驱动程序未安装 | 安装CH340驱动 |
数据接收乱码 | 波特率不匹配 | 检查双方波特率设置 |
总结
本文成功验证了基于Arduino框架的STM32F103RCT6的正常使用与串口验证方案,主要结论包括:
- 硬件串口需通过HardwareSerial库显式初始化
- 串口1更适合烧录调试,如使用esp01s模块时,可兼容串口接收发送。