当前位置:   article > 正文

Arduino开发STM32系列001_arduino stm32驱动

arduino stm32驱动

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
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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口仅仅用来方便下载就好了,别想着它能发挥多大用途
串口对比

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/717179
推荐阅读
相关标签
  

闽ICP备14008679号