文件:Arduino_STM32-master、STM32duino-bootloader-master,下载地址 https://github.com/rogerclarkmelbourne。
将“Arduino_STM32-master”文件解压改为“Arduino_STM32”,放到“D:\Program Files (x86)\Arduino\hardware\”路径下。该文件是STM32的支持库,需要将其导入到Arduino的IDE之后,才可以编译生成STM32可以使用的hex程序文件。
解压“STM32duino-bootloader-master”文件,其中“binaries”文件夹下即为固件,可根据自己需要选择,本例选择“generic_boot20_pb0.bin”。
硬件:STM32F1板子(B00T0能设为0/1)(STM32F103ZET6)、USB转TTL(安装驱动)。
安装Arduino软件,安装目录为“D:\Program Files (x86)\Arduino”。
用USB转TTL连接PC和STM32F1板子。
按“WIN+R”,输入“cmd”进入DOS界面。cd 到Arduino_STM32 \tools\win下面,将“generic_boot20_pb0.bin”(根据自己需求)文件拷贝到该文件夹下。
>>cd D:\Program Files (x86)\Arduino\hardware\Arduino_STM32\tools\win
从设备管理器上查看串口号(本例为“COM3”),将STM32F1芯片的BOOT0设置为1, 按1下“复位键”。
解除写保护
>> stm32flash.exe -k COM3
成功解除如下
stm32flash 0.4
http://stm32flash.googlecode.com/
Interface serial_posix: 57600 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (Medium-density)
- RAM : 20KiB (512b reserved by bootloader)
- Flash : 128KiB (sector size: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Read-UnProtecting flash
Done.
失败提示如下,检查串口号、BOOT0,是否按过复位,重新执行。
http://stm32flash.googlecode.com/
Using Parser : Raw BINARY
Interface serial_w32: 57600 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (Medium-density)
- RAM : 20KiB (512b reserved by bootloader)
- Flash : 128KiB (sector size: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Got NACK from device on command 0x43
Can't initiate chip erase!
Failed to erase memory
下载固件
>>stm32flash.exe -w generic_boot20_pb0.bin -v -g 0x0 COM3
固件下载成功后对应的PB0连接的LED先快闪,之后一直慢闪。不成功时检查串口号、BOOT0,是否按过复位,重新执行。
以管理员身份运行“\Arduino_STM32\drivers\win\”文件夹下的“install_drivers.bat”和“install_STM_COM_drivers.bat”文件,有提示全部选择允许安装。
打开Arduino软件,单击菜单栏中的“工具->开发板->开发板管理器”,安装“Arduino SAM Boards”,如下图。
安装完成后重新打开IDE,设置如下
4.程序下载
在IDE中编写如下代码
#define pinLED PB0
void setup() {
Serial.begin(9600);
pinMode(pinLED, OUTPUT);
}
void loop() {
digitalWrite(pinLED, HIGH);
delay(1000);
digitalWrite(pinLED, LOW);
delay(1000);
Serial.println("Hello World!");
}
将B00T0设为1,按复位,点击上传。
如果出现了下面提示,则检查B00T0是否设成1,按复位键重新上传。
stm32flash 0.4
Failed to init device.
http://stm32flash.googlecode.com/
Using Parser : Raw BINARY
Interface serial_w32: 230400 8E1
上传成功后,将B00T0设为0,按复位,打开串口监视器,可以看到运行结果。
吐槽:每次下载都要将B00T0设为1,虽然下载完能正常运行,但重启前还要设为0才能正常运行,太麻烦了,下篇介绍如何使用JLink OB下载!