Arduino开发STM32系列001

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


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
在这里插入图片描述
蓝奏云直通车:
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。
BootLoader示例

  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就能进入相应的路径(小技巧哦)
    提示路径
  5. 到设备管理器看看自己板子所在的串口号,这一步很重要,如果多个串口的话,拔掉和插上时多出来的那个就是。
    在这里插入图片描述
  6. stm32flash.exe -w generic_boot20_pb12.bin -v -g 0x0 COM14后面的COM14记得换成自己的串口号,出现以下内容即下载成功。

串口下载
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,松开按钮,必须等上一个运行完才能运行下一个。等待安装完成
    drivers文件目录
    驱动安装完成

二、配置Arduino

  1. 将上面解压的Arduino_STM32-master复制到Arduino的安装目录下的hardware里,可以改名也可以不改名
  2. 打开Arduino,在工具->开发板下就能看到相应的开发板选项,选择开发板管理器,这里需要下载一个支持包,否则编译会出错。
    开发板管理器
  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
}

STM32_Arduino引脚对应
我的板子LED在PB12上,所以程序就是LED闪烁,并且串口输出

三、下载程序并测试

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

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

  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦杨37

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值