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

基于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模块时,可兼容串口接收发送。

相关文章:

  • 深度学习中的优化算法:基础全面解析
  • 聊聊Spring AI Alibaba的PlantUMLGenerator
  • 安装deepspeed时出现了以下的错误,如何解决CUDA_HOME does not exist
  • 【Java面试笔记:进阶】28.谈谈你的GC调优思路?
  • 解决STM32H743单片机USB_HOST+FATF操作usb文件
  • 从 Pretrain 到 Fine-tuning:大模型迁移学习的核心原理剖析
  • 实验六 文件操作实验
  • CISC与RISC详解:定义、区别及典型处理器
  • 使用 ECharts 在 Vue3 中柱状图的完整配置解析
  • 【安全扫描器原理】端口扫描
  • 4.2.3 MYSQL事务原理分析
  • ESM模块加载机制全景解析
  • docker部署的Nextcloud,处于维护模式,如何解决
  • 程序员如何用AI工具实现“快速验证原型”
  • Linux环境变量以及进程虚拟地址原理
  • 共享货源系统,多商户独立站助力行业资源整合
  • [逆向工程]什么是CPU寄存器(三)
  • JavaScript原型,原型链 ? 有什么特点?
  • 第33周JavaSpringCloud微服务 多人协作下的调试
  • Docker与Vmware网络模式的对别
  • 最高法强化涉新就业形态民事案件审判指导:推动出台司法解释
  • 辽宁省委书记郝鹏、省长王新伟赶到辽阳火灾事故现场指导善后处置工作
  • 探索演艺产业新路径,2万观众走进音乐科技融创节
  • 西班牙葡萄牙电力基本恢复
  • 江西省国资委原副主任李键主动向组织交代问题,接受审查调查
  • 央行副行长:增强外汇市场韧性,坚决对市场顺周期行为进行纠偏