Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

Arduino 基于 STM32 的串口通讯与 LED 灯闪烁

本文内容:安装 Arduino IDE 和相关软件支持库,在 Arduino 完成 STM32 板子的串口通信程序:
1)持续向串口输出 “ Hello world!”,当接收到 “ stop! ” 时,停止输出。
2)LED 灯间断性闪烁。

实验工具:
——硬件:

——软件:

一、Arduino IDE 配置

1、安装 Arduino IDE

  • 双击 arduino-1.8.12-windows.exe 文件安装,一直默认安装即可(可以更改安装路径)。
    在这里插入图片描述

2、配置文件

  • 将文件中的 Arduino_STM32 整个文件夹拷贝到 Arduino IDE 安装目录下的 hareware 下。
    在这里插入图片描述

这些配置文件是一位国外大佬写的,他的最新配置文件在 github 网站:https://github.com/rogerclarkmelbourne/Arduino_STM32

3、安装编译支持文件

  • 打开 Arduino 软件。
    在这里插入图片描述
  • 工具 ——> 开发板 ——> 开发板管理器。
    在这里插入图片描述
  • 搜索框内输入:ARM ,安装 Arduino SAM Boards(32-bits ARM Cortex-M3) ,点击安装按钮。
    在这里插入图片描述
  • 安装完成后,退出开发板管理器。

4、安装STM32固件烧录软件

  • 双击 flash_loader_demo_v2.8.0.exe 文件,进行安装。
    在这里插入图片描述
  • 安装过程中会叫你输入信息,随便输入即可。

二、烧录 .bin 文件

1、连接 STM32

  • 使用 USB 线插入 USB 转串口上。
  • 再用短路帽按下图所示插入。
    • RXD —(接)— A9
    • TXD —(接)— A10
    • 然后用短路帽将 BOOT0 接入 3V3 伏高电平
    • 用短路帽将 BOOT1 接入 GND 低电平
      在这里插入图片描述

2、烧录 .bin 文件

  • 在系统菜单栏中找到 Demonstrator GUI ,双击打开。
    在这里插入图片描述
  • 就会出现 COM4 串口(接不同的串口就不一样,比如:COM5等)。
    在这里插入图片描述
  • 然后一直点 “ Next ” ,直到出现下面的界面。
    在这里插入图片描述
  • 首先在百度网盘下载的 Ardunio IDE 安装包内解压缩 STM32duino-bootloader-master.zip 文件。
    在这里插入图片描述
  • 然后勾选上,点击 “ … ” 。
    在这里插入图片描述
  • 从刚刚解压缩后的 STM32duino-bootloader-master\binaries\ 文件中选择一个 bin 文件(我的是野火 STM32 指南者,LED 灯的 GPIO 有 PB5、PB0、PB1,分别表示红色、绿色、蓝色,所有的 bin 文件中只有 pb0 ,所以我选择的是 generic_boot20_pb0.bin)。
    在这里插入图片描述

说明:如果没有找到或者开发板上没有板载 LED ,就任选一个如 PC13 ,然后在 PC13 外接一个 LED 吧,可以像我一样选 generic_boot20_pb0.bin 就行,有没有 LED 不要紧。

  • 添加完成后,点击 “ Next ”。
    在这里插入图片描述
  • 烧录成功后,点击 “ Close ” 关闭烧录软件。
    在这里插入图片描述

三、程序实现

1、开发环境设置

  • 我的 STM32 指南者的 CPU 是 STM32F103VET6 ,所以开发板我选择的是 Generic STM32F103V series(这个要根据自己的单片机 CPU 型号选择)。
    在这里插入图片描述
  • Variant 选择的是:STM32F103VE (还是根据自己的 CPU 型号选择)。
    在这里插入图片描述
  • Upload method 选择的是:Serial (如果选择 ST-Link 等其它的,就需要自行安装驱动)。
    在这里插入图片描述
  • CPU Speed(MHz) 选择的是:72Mhz (绝大多数单片机的主频都是 72MHz ,一般默认即可,我的 STM32 指南者也是 72MHz)。
    在这里插入图片描述
  • Optimize :Smallest(default) (默认的,不用改变)。
    在这里插入图片描述
  • 端口选择的是:COM4。
    在这里插入图片描述

2、代码编写

  • 复制以下的代码。
String data = "";

void setup() {
  // put your setup code here, to run once:
  pinMode(PB0, OUTPUT);
  Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
  while (Serial.available() > 0)  
  {
    data += char(Serial.read());
    delay(2);
  }
  if (data == "stop!\n")
  {
    digitalWrite(PB0, HIGH);
    Serial.println("STM32 has stopped!\n");
    data = "";
    while(1);
  }
  digitalWrite(PB0, HIGH); //turn the LED on (HIGH is the voltage level)
  delay(1000); // wait for a second
  digitalWrite(PB0, LOW); //turn the LED off by making the voltage LOW
  delay(1000); // wait for a second
  Serial.println("Hello World!");
  delay(1000); // wait for a second
}
  • 粘贴进代码编辑窗口中(注意:管脚要根据自己的 LED 管脚设置)。
    在这里插入图片描述
  • 点击 “√” 按钮,编译代码(点了之后,会弹出文件窗口,保存这个文件即可),编译成功显示如下图。
    在这里插入图片描述
  • 点击 “→” 按钮,烧录到 STM32 中,烧录成功则如下图所示。
    在这里插入图片描述

注意:每一次烧录开始前需要按一下开发板上的复位键才能下载成功,如果需要断电保留程序,下一次上电就运行最后一次下载的程序,就需要把开发板上的 BOOT0 从高电平 1 接回低电平 0 ,再次下载最新的程序就需要再次把 BOOT0 从低电平 0 接回高电平 1 。

  • 点击右上角的放大镜(串口监视器)。
    在这里插入图片描述
  • 串口输出结果如下。
    在这里插入图片描述
  • LED 灯闪烁(当输入 stop! 后,LED 灯不再闪烁)。
    在这里插入图片描述

四、总结

相比于 Keil 来说,Arduino IDE 太过于简单了,对开发人员来说很方便,但是相对于 Keil 来说涉及底层没那么深,Keil 可以控制寄存器的各种操作,而 Arduino IDE 已经将这些操作给封装了,如果要深入的学习单片机的话,还是从 Keil 玩起。

五、参考资料

1、

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 通过Ardunio完成基于stm32f103指南者的串口通信

下一篇: 一、操作系统的历史

精华推荐