Arduino IDE进行STM32串口通信的开发

本文介绍了在ArduinoIDE环境下进行STM32F103C8T6串口通信的全过程,包括开发环境搭建、实验代码实现及结果分析。通过实验,验证了ArduinoIDE作为STM32开发平台的有效性和便利性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文目的是在Arduino平台上进行STM32F103C8T6的串口通信实验,学习在Keil MDK平台以外的Arduino平台进行STM32的开发。

(一)安装和配置Arduino IDE开发环境

工欲善其事,必先利其器。

1.Arduino简介

Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

2.安装Arduino IDE

  • 方式一:官网下载
    链接:https://www.arduino.cc/en/software
  • 方式二:微软商店下载
    可以直接去微软商店下载Arduino IDE,也可以在官网点击下图中的标号2跳转到微软商店中下载。
    1
注意:如果是之前安装过Arduino IDE但是升级后出现双击程序不能打开的情况,
可以尝试删除C:\Users\Administrator\AppData\Local\Arduino15的library_index.json文件,
重新启动该IDE后会使之重新生成该文件;原因是因为升级Arduino IDE时造成了该文件的损坏。

3.配置STM32F10X的开发环境

  • 在线安装:
    参考文章:在Arduino下开发STM32F103
  • 离线安装
    参考文章:Arduino支持STM32套件的开发板管理器安装
  • 注意事项
    如果在Arduino IDE里安装STM32开发板时在“附加开发板管理器地址”中输入https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json,这可能会导致在开发板管理器中无法找到STM32开发板,同时还会提示下载https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json 时出错的信息。
    • 原因分析:
      可能是因为从GitHub下载文件时太慢导致出错。
    • 解决方法:
      • 方法一:将https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json更换为http://dan.drown.org/stm32duino/package_STM32duino_index.json
      • 方法二:进行离线安装

(二)Arduino IDE平台进行串口通信实验

1.实验说明

  • 实验硬件
    • 主控芯片:STM32F103C8T6
    • 实验软件:Arduino IDE 1.8.13
    • 实验器材:USB转串口、stm32核心板、面包板、若干杜邦线
  • 实验要求
    • 持续向串口输出Hello world!!!
    • 当接收到stop!时,停止输出;
    • 当接收到begin!时,继续输出。
  • 实验配置
    • 开发板选择:根据自己的STM32芯片型号选择
      2
    • 参数配置:根据芯片来配置
      3
  • 注意:
    • 我这里使用串口下载,因此我这里的Upload method选择的是Serial,不然程序上传的时候会报错。
      4
    • 上传程序时,需要保证芯片复位且未处于运行状态,否则可能会产生如下错误:
    Failed to init device.
    stm32flash 0.4
    
    http://stm32flash.googlecode.com/
    
    Using Parser : Raw BINARY
    Interface serial_w32: 115200 8E1
    

2.实验代码


int flag = 1; //串口发送标志位,1表示正在发送,0表示停止发送

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);   //打开串口,波特率为115200
  pinMode(PC13, OUTPUT);	//PC13模式设置为输出,默认为高电压
}

void loop() {
  // put your main code here, to run repeatedly:
  if (flag == 1)
  {
    Serial.println("Hello World!!!");
    digitalWrite(PC13, HIGH);   //LED灭
    delay(500);   // 延时
    digitalWrite(PC13, LOW);   //LED亮
    delay(500);   //延时
  }
  usart();
}

void usart()
{
  String Stop_flag = "stop!\n"; //停止发送信号
  String Begin_flag = "begin!\n"; //重新发送信号
  String data = "";  //储存接受到的数据

  while (Serial.available() > 0) //判断串口是否接收到数据
  {
    data = Serial.readString(); //读取字符到字符串data中
    //Serial.print(data);
  }
  if (data == Stop_flag)
    flag = 0; //表明停止发送
  if (data == Begin_flag)
    flag = 1; //表明恢复发送
}

3.实验结果及分析

  • 串口监视器
    当没有发送给STM32任何数据或者发送的数据不是停止发送信合和恢复发送信号时,每隔1s发送一次Hello World!!!,当接收到停止发送信号时停止串口数据发送;当接收到恢复发送信号时就恢复串口数据发送。
    test
  • 硬件状态
    使用LED灯的亮灭状态指示串口数据的发送状态,每发送一次数据,LED灯就亮灭一次。
    结果

(三)总结

通过这次Arduino IDE的STM32串口实验,拓宽了我的视野。原本以为STM32的标准开发平台就是Keil MDK,没想到使用Arduino IDE也能用于STM32的开发,而且感觉比在Keil MDK上更加容易和方便。这让我对于Arduino IDE的了解又有了更加深入地认识。

参考文章:
1.【Arduino】IDE闪退,无法启动问题脱坑
2.在Arduino下开发STM32F103
3.Arduino支持STM32套件的开发板管理器安装
4.Arduino学习笔记(2)-- Arduino基本函数
5.Arduino 串口通讯参考笔记 - Serial 类库及相关函数介绍
6.Arduino–百度百科
7.【Arduino】(三)Arduino IDE的安装与使用(电脑:Windows操作系统)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值