用STM32替换Arduino(在Arduino IDE中开发STM32)
一、引言
Arduino自从面世以来,因为编程简单,并且周边配件也很丰富,迅速在电子爱好者的圈子中流行起来。但是Arduino有一个比较严重的问题,就是性价比不高。性能和资源有限,但是价格却比较高。而性能比较好的片子(例如意法半导体的STM32F103xx),虽然性能比较好(72MHz主频,丰富的外设(SPI、IIC、多个USART、CAN等),并且片上存储也高达512k),但是编程却比较复杂。
在STM32中,为了点一个LED,还要进行各种初始化、时钟配置操作。在这种片子上编程,往往还要求用户对硬件了解比较深刻。所以,如果能够将STM32的高性能(相对)和arduino的用户友好结合起来,就再好不过了。而实际上,Maple早就做过这个工作了,针对STM32单独做了一套库,来兼容arduino的库。本文将详细介绍如何实现在STM32上,搭建开发环境,并使用Arduino的方法来编程。
二、准备工作
硬件:计算机;STM32C8t6 Blue Pill;ST-Link下载器 (或USB转TTL模块);MicroUSB线。
STLink,随便买个就行。
软件:
1、Arduino IDE:下载链接下载很慢…很慢…
2、STM Cube Programmer,下载链接 (STLink 方案用,USB转TTL方案则用串口下载软件,参考此文)
3、重点来了……“Arduino_STM32库”和“Bootloader”(其实就是下载这个文件夹里面和你开发板小LED引脚对应的那个Bin文件就行)。下载地址
“Arduino_STM32库”有40多M,下载很慢,我下载好了,可以到我“上传的资料”中去下载。网址:https://download.****.net/download/qq_35913527/12165815
三、安装
1、安装“Arduino_STM32库”
将库下载后解压到Arduino安装目录,文件件名称可以随便改。
2、安装驱动。
接上步,打开文件夹中的“…\Arduino\hardware\Arduino_STM32\drivers\win”,右键管理员运行两个"*.bat"文件,安装驱动。
3、给单片机刷入“Bootloader”。本文用的是STLink方案,软件用的是STM Cube Programmer。没有STLink的可以用串口下载方案,本文不再赘述,可以参考此文。
注:本步骤本质就是将 "*.bin"二进制文件烧写进单片机,所以各种下载器理论上都是可以的。
STM Cube Programmer使用方法很简单,如下:
正确安装后一般会看到类似这样的虚拟串口,同时电脑会发出USB识别的"登登"声:
但是我安装后是这样的,之后证明也是可以用的(其实只要电脑能正确识别出串口,串口图标上没有黄色叹号就行)。
4、在IDE中安装开发板支持,不安装的话编译会报错,安装方法如下:
在搜索框中输入sam,安装arduino SAMD Boards (32-bits ARM Corter_M0+),我已经安装了,后面有绿色的“Installed”字样。
四、下载验证
准备完成,重启IDE(即Arduino软件),在工具菜单中选择STM单片机(没有的话去Arduino UNO 下面去找),然后选择对应的串口,就是刚才我们说的虚拟串口。
打开一个Blink的例子,电机左上角对号“√“编译,一般没有错误,因为是例子。然后点击右边的箭头下载到板子上,大功告成!!!
LED亮:
LED灭:
五、后记
简单试了一下,这种开发方法有好处也有坏处。
好处是复杂的初始化和配置函数都封装好了,比如说PWM设置的函数,把类似库函数封装好了,简单易用。
坏处是函数的参数类型和范围都得在库中翻,对人家的库不熟悉的话比较麻烦。或许以后STM32Cube MX+HAL库是趋势(有封装同时也能方便地查看寄存器操作)。