当前位置: 首页 > backend >正文

基于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模块)

接线示意:

RCT6USB-TTL模块
5V5V (用3V接3V也行,我这边的usb-ttl是5V引出,3.3并)
GNDGND
PA9TX
PA10RX

方案三:串口2通信(USB-TTL模块)

接线示意:

RCT6USB-TTL模块
5V5V (用3V接3V也行,我这边的usb-ttl是5V引出,3.3并)
GNDGND
PA2TX
PA3RX

二、代码实现

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的正常使用与串口验证方案,主要结论包括:

  1. 硬件串口需通过HardwareSerial库显式初始化
  2. 串口1更适合烧录调试,如使用esp01s模块时,可兼容串口接收发送。
http://www.xdnf.cn/news/2921.html

相关文章:

  • 初识Redis · 缓存
  • 网络原理 - 11(HTTP/HTTPS - 2 - 请求)
  • MES系列-ISO95 IEC/ISO 62264
  • 精益数据分析(30/126):电商商业模式的深度剖析与关键指标解读
  • claude 3.7,极为均衡的“全能型战士”大模型,国内直接使用
  • 【Java学习】Java的CGLIB动态代理:通俗解释与使用指南
  • 自定义指令input中前面不能输入空格
  • java练习4
  • 【记录一下】RagFlow 本地安装详细步骤(Windows + Linux)
  • 一种在使用Kaggle并遇上会话中断时强行保存数据的方法
  • python练习:求两数相加之和
  • 【Git】项目多个分支开发、维护与优化处理 ing
  • 第二节:文件系统
  • Java基础
  • 1.6二重积分
  • 浅谈人工智能发展现状
  • Python-pandas-DataFrame取值--.loc[]、.iloc[] 具体的操作及详细语义和语法说明
  • Linux文件传输:FTP服务器配置全攻略
  • Foupk3systemX5OS系统产品设备
  • 扩散模型与正弦位置编码
  • datasets 数据处理封装后,统一处理流程以避免Dataset Map顺序依赖问题
  • 《算法吞噬幻想乡:GPT-4o引发的艺术平权运动与版权核爆》
  • 数据库Mysql学习——day7(多表查询(JOIN)进阶)
  • 软件测试深度解析:从“用户登录“看测试用例设计的艺术
  • 什么是 Web 标准?为什么它们对 SEO 和开发很重要?
  • TRex 控制台命令解析
  • 【计算机视觉】三种图像质量评价指标详解:PSNR、SSIM与SAM
  • 【MySQL数据库】表的连接
  • OpenGL学习笔记(HDR、泛光)
  • ros2_不同ROS_DOMAIN_ID环境变量之间通信