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。
- 将板子上的BOOT0跳线切换到3.3V即BOOT0置1
- 用USB-TTL连接核心板,3.3V->3.3V GND->GND RX->A9 TX->A10(如果还是看不明白请自行百度)
- 将上面选的bootloader和下载的stm32flash.exe放在同一目录下(因为方便,不用输入一长串的相对路径)
- 进入上面的目录,在路径的位置输入cmd就能进入相应的路径(小技巧哦)
- 到设备管理器看看自己板子所在的串口号,这一步很重要,如果多个串口的话,拔掉和插上时多出来的那个就是。
stm32flash.exe -w generic_boot20_pb12.bin -v -g 0x0 COM14
后面的COM14记得换成自己的串口号,出现以下内容即下载成功。
7. 将BOOT0置0,然后按一下板子上的reset按钮,会看见板载LED快速闪烁,这就是烧写完成了。
3、安装驱动
- 解压上面下载的Arduino_STM32-master.rar,进入drivers\win
- 用USB线连接电脑和核心板,记住必须要数据线,很多的线都只能充电
- 按住板子上的Reset按钮,然后以管理员身份运行drivers\win中的install_drivers.bat和install_STM_COM_drivers.bat,松开按钮,必须等上一个运行完才能运行下一个。等待安装完成
二、配置Arduino
- 将上面解压的Arduino_STM32-master复制到Arduino的安装目录下的hardware里,可以改名也可以不改名
- 打开Arduino,在工具->开发板下就能看到相应的开发板选项,选择开发板管理器,这里需要下载一个支持包,否则编译会出错。
- 试试能否正常使用:打开文件->示例->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
}
我的板子LED在PB12上,所以程序就是LED闪烁,并且串口输出
三、下载程序并测试
- USB连接核心板,upload method选择STMduino_bootloader(这是USB下载),也可以使用其他选项,比如串口,STLink什么的。
- 工具->端口选择后缀带着Maple mini的端口,这就是USB的虚拟串口。
- 然后你就可以点上传了
但是这里出现了一个问题,报了一个错误,提示无法重启,这应该是因为USB串口没有Reset的功能。
然后点右上角的放大镜就能打开Arduino内置的串口监视器了。
但是有一个问题,可能是USB是虚拟串口的原因,通过和串口1进行对比,发现重启的时候向串口打印数据有几秒钟丢失,无论我怎么尝试都存在,程序里setup中的Serial.print("This is begin......\r\n");
始终无法看到结果,所以USB口仅仅用来方便下载就好了,别想着它能发挥多大用途