Arduino STM32制作教程

1. 准备工作

文件: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”。

2.固件下载

用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,是否按过复位,重新执行。

3.软件配置

3.1.驱动安装

以管理员身份运行“\Arduino_STM32\drivers\win\”文件夹下的“install_drivers.bat”和“install_STM_COM_drivers.bat”文件,有提示全部选择允许安装。

在这里插入图片描述

3. 2.IDE支持

打开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下载!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值