Arduino开发STM32系列001

Arduino开发STM32系列001——通过 USB下载程序

文章目录

  • Arduino开发STM32系列001——通过 USB下载程序
    • 具体方法如下:
      • 一、烧写arduino_stm32bootloader
        • 1、准备阶段
        • 2、烧录BootLoader
        • 3、安装驱动
      • 二、配置Arduino
      • 三、下载程序并测试

STM32需要将BOOT0接3.3V即BOOT0置1才能进行串口下载,并且还需要使
用USB-TTL模块,手头上的核心板上有一个板载的MicroUSB接口,想着能用MicroUSB接口下载程序是最好的,于是就开始了长达两天的尝试。

具体方法如下:

当然,首先你得确保你自己的电脑上有arduino,如果没有,请下载一个:Arduino

一、烧写arduino_stm32bootloader

1、准备阶段

国外有个大神Roger Clark开源了一套基于arduino的STM32的库及相关的BootLoader,链接:GitHub,需要下载的是其中的Arduino_STM32和STM32duino-bootloader以及stm32烧写工具stm32flash.exe
Arduino开发STM32系列001_第1张图片
蓝奏云直通车:
stm32flash.exe;
Arduino_STM32-master.rar;
STM32duino-bootloader-master.zip

2、烧录BootLoader

将上面下载的STM32duino-bootloader-master.zip解压,进入bootloader_only_binaries,找到相应的bootloader,以核心板板载LED所在引脚为准。我的是PB12,所以我选了generic_boot20_pb12.bin。
Arduino开发STM32系列001_第2张图片

  1. 将板子上的BOOT0跳线切换到3.3V即BOOT0置1
  2. 用USB-TTL连接核心板,3.3V->3.3V GND->GND RX->A9 TX->A10(如果还是看不明白请自行百度)
  3. 将上面选的bootloader和下载的stm32flash.exe放在同一目录下(因为方便,不用输入一长串的相对路径)
  4. 进入上面的目录,在路径的位置输入cmd就能进入相应的路径(小技巧哦)
    Arduino开发STM32系列001_第3张图片
  5. 到设备管理器看看自己板子所在的串口号,这一步很重要,如果多个串口的话,拔掉和插上时多出来的那个就是。
    Arduino开发STM32系列001_第4张图片
  6. stm32flash.exe -w generic_boot20_pb12.bin -v -g 0x0 COM14后面的COM14记得换成自己的串口号,出现以下内容即下载成功。

Arduino开发STM32系列001_第5张图片
7. 将BOOT0置0,然后按一下板子上的reset按钮,会看见板载LED快速闪烁,这就是烧写完成了。

3、安装驱动

  1. 解压上面下载的Arduino_STM32-master.rar,进入drivers\win
  2. 用USB线连接电脑和核心板,记住必须要数据线,很多的线都只能充电
  3. 按住板子上的Reset按钮,然后以管理员身份运行drivers\win中的install_drivers.bat和install_STM_COM_drivers.bat,松开按钮,必须等上一个运行完才能运行下一个。等待安装完成
    Arduino开发STM32系列001_第6张图片
    Arduino开发STM32系列001_第7张图片

二、配置Arduino

  1. 将上面解压的Arduino_STM32-master复制到Arduino的安装目录下的hardware里,可以改名也可以不改名
  2. 打开Arduino,在工具->开发板下就能看到相应的开发板选项,选择开发板管理器,这里需要下载一个支持包,否则编译会出错。
    Arduino开发STM32系列001_第8张图片
  3. 试试能否正常使用:打开文件->示例->Basic->Blink,然后加几行代码
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(PB12, OUTPUT);
  Serial.begin(115200);
  Serial1.begin(115200);
  Serial.print("This is begin......\r\n");
  Serial1.print("This is begin......\r\n");
}

// the loop function runs over and over again forever
void loop() {
  Serial.print("The Soft is running......\r\n");
  Serial1.print("The Soft is running......\r\n");
  digitalWrite(PB12, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(PB12, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Arduino开发STM32系列001_第9张图片
我的板子LED在PB12上,所以程序就是LED闪烁,并且串口输出

三、下载程序并测试

  1. USB连接核心板,upload method选择STMduino_bootloader(这是USB下载),也可以使用其他选项,比如串口,STLink什么的。
  2. 工具->端口选择后缀带着Maple mini的端口,这就是USB的虚拟串口。
  3. 然后你就可以点上传了
    Arduino开发STM32系列001_第10张图片
    但是这里出现了一个问题,报了一个错误,提示无法重启,这应该是因为USB串口没有Reset的功能。

然后点右上角的放大镜就能打开Arduino内置的串口监视器了。
Arduino开发STM32系列001_第11张图片
但是有一个问题,可能是USB是虚拟串口的原因,通过和串口1进行对比,发现重启的时候向串口打印数据有几秒钟丢失,无论我怎么尝试都存在,程序里setup中的Serial.print("This is begin......\r\n");始终无法看到结果,所以USB口仅仅用来方便下载就好了,别想着它能发挥多大用途
Arduino开发STM32系列001_第12张图片

你可能感兴趣的:(Arduino)