一、主机环境
主机:Ubuntu 14.04.5 64bit
集成开发工具:Arduino IDE 1.8.8
MCU 型号:STM32F103C8T6
二、概述
最近因为项目上有一些bug需要复现和测试,想用个自动测试的工具,看到公司有几个STM32的最小系统板,想着就用这个来进行测试,无奈自己的电脑是ubuntu系统,不能用keil(其实是可以用wine来安装的,个人不太喜欢这种的方式来使用windows软件,而且wine安装的软件并不是所有软件都能正常使用;主要是电脑配置不高,有点卡,嘿嘿)。想着用最简单快捷的方式去做完这个,并且代码改动最容易,于是乎就想到了Arduino,之前听说可以在STM32上面跑,一直没试过,看了看网上的教程很多都是windows上的,其实Arduino IDE是有linux版本的,于是乎就有了这篇文章的诞生,下面进入正题。
个人觉得在项目中可以做的一些不错应用,用于辅助调试,当然不仅限于以下:
三、环境搭建步骤和方法
(1)去官方下载linux版本的Arduino IDE,下载地址:https://www.arduino.cc/en/Main/Software?setlang=cn , 如下图所示,选择对应的版本即可。
(2)下载完成后解压arduino-1.8.8-linux64.tar.xz, 直接运行目录中的install.sh,命令如下:
$ sudo ./install.sh
(3)安装完成之后打开Arduino IDE,IDE 是不带 32bit ARM编译器的,需要安装,安装方式: 点击菜单 Tools -> Board -> Board Manager ,然后在打开的界面搜索框输入 SAMD ,选择Arduino SAMD Boards(32 Bit ARM Cortex-M0) 这个板子, 点击 “install” ,等待安装完成即可。
(4)然后下载 Arduino_STM32的库,国外大牛写的库,github地址: https://github.com/rogerclarkmelbourne/Arduino_STM32 , 点击下载zip即可,如下图所示:
(5)下载完成后解压,我这里将解压出来的文件夹Arduino_STM32_master重命名为Arduino_STM32了,也可以不用重命名,直接放到home目录的Arduino/hardware文件夹下,若Arduino文件夹下没有hardware文件夹,就新建一个hardware文件夹。如下图所示:
(6)然后去安装STM32相关的tools(USB驱动),用于下载程序。
(7)Arduino IDE的开发环境准备好了,接下来就是准备板子了,如下图这种STM32的板子,淘宝到处都是。
(8)拿到板子,首先去下载STM32的Arduino固件,下载地址:https://github.com/rogerclarkmelbourne/STM32duino-bootloader , 下载解压后,在binaries文件夹中选择对应LED灯对应的管脚的 bootloader bin文件下载,我这里是LED的驱动管脚是PC13,所以选择generic_boot20_pc13.bin
(9)我这里串口使用下载程序,也可以使用ST-Link或者J-Link等工具下载,将BOOT0和BOOT1拨到对应的模式。使用ST官方的Flash_Loader_Demonstrator软件去烧录。
(10)bottloader下载完成后,通过USB连接到电脑时,在Arduino IDE的菜单栏 Tools ->Port 会出现 /dev/ttyACM0相关的项说明已经连接上。在Tools -> Board 选择STM32对应的型号和系列。
(11)在Arduino IDE 的菜单栏打开例程,操作步骤 File -> Example -> 01.Basics -> Blink ;然后去点击Upload按钮。
提示下载完成即可,程序自动运行之后,板载LED以1S的频率闪烁。
四、错误和问题总结
1.安装好后,编译STM32板子的程序,出现如下错误:
dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
dfu-util: Cannot open DFU device 1eaf:0003
dfu-util: No DFU capable USB device available
错误原因:没有安装Arduino_STM32的dfu-util tools,导致缺少相关的规则文件。
解决办法: 安装dfu-util tools及相关的规则文件