Arduino开发STM32环境搭建指南(含小鱼经验分享)

大家好,我是爱吃猪脚饭的小鱼,今天我们开一个新的小坑,就是用Arduino开发STM32并教你如何使用HAL库在Arduino工程中。之所以要开这个坑的原因是小鱼发现,很多初学者往往很迷恋某一个特定的开发平台,最为突出的就是STM32,记得在小鱼大学那会,开发STM32主要分库函数和寄存器两个流派,最奇怪的是用寄存器的会鄙视库函数,毕竟寄存器人很难看得懂,看不懂的就比较高级-)。小鱼认为,大道至简,把产品设计的简单好用更难但也更能赢得客户,再说现在的AI发展如此迅速,甚至出现了给出模块自动绘制原理图PCB的工具,看样子我迟早会被干掉的(苦瓜脸)。

所以相比使用IDF开发ESP32和用寄存器库函数或直接HAL开发STM32,小鱼个人比较推崇Arduino,原因在于,使用原生平台多行代码才能完成的事情,Arduino一行就可以(当然你会说用cubemx直接配置生成,一行代码都不用,但Arduino平台的生态真的很强,太多库拿来即用了)。

Arduino 平台的的STM32其实就是封装的HAL库,所以如果你觉得某个Arduino库不好用,你可以自己写,或者直接把原来的HAL库移植过来,这样也不失灵活性。

所以在这个教程中,你将看到使用Arduino和HAL混血的写法,比如这样:图片

还有这样

图片
以及使用C++创建一个类。最后如果有时间,再开个cubemx+PIO的开发流程。

话不多说,先来创建工程,系统用windows和linux都行,不过小鱼还是喜欢用linux,习惯了主要是。

最好用ubuntu22.04,因为一键安装支持

所以,第一步就是运行一键安装:

https://fishros.org.cn/forum/topic/20

先安装VSCode,接着打开vscode,搜索 platformio 安装

开发 Ardunio 我们可以采用 PlatformIO IDE 进行开发,该 IDE 支持多种类型的单片机,可以在 VSCode 中直接通过插件进行安装。PlatformIO IDE 主要使用 Python 编写,为了能够跨多个版本使用,PlatformIO IDE 在 Python 虚拟环境运行,所以我们需要先安装虚拟环境工具,命令如下:sudo apt install python3-venv 安装完成后打开 VS Code 的扩展商店,如下图所示,搜索安装 PlatformIO IDE

安装完成后在 VS Code 的侧边就可以看到 PlatformIO IDE 的按钮,点击按钮就会执行 PlatformIO IDE 的首次初始化程序。如果初始化过慢可以手动进行初始化安装,命令如下:source ~/.platformio/penv/bin/activate # 激活虚拟环境 pip install platformio # 安装 platformio 核心 pio pkg install –global –tool “platformio/contrib-piohome”

运行完成后,基本就可以装好了,然后在PIO里新建工程

图片
新建工程

图片
接着输入

图片
第二个可以选你的板子,小鱼这里买的是stm32103c6t6的最小系统板子,不到10元。

点Fishish 即可,整个过程会很慢,你可以关闭这个页面,然后用vscode打开文件夹的方式,打开刚刚新建的工程,然后再次点击PIO按钮,这个时候右下角就会出现load相关的进度,直接点取消。

重点来了。

点左下角这里

图片
然后在打开的新的终端里输入

pio run

好,接着等待,这时候就可以看到整个的进度条了,如果网络不好,一键安装里有某个上网工具,咳咳

pio run 结束后应该会报错,因为没有main.cpp,我们来新建一个

在 src/目录下新建 main.cpp ,然后编写如下内容(闪个灯,开发过FishBot的小伙伴会发现这个代码和ESP32上的一模一样,没错!):

#include <Arduino.h>

void setup(void)
{
  pinMode(PC13, OUTPUT);
}

void loop(void)
{
  digitalWrite(PC13, HIGH);
  delay(500);
  digitalWrite(PC13, LOW);
  delay(500);
}

接着在运行pio run 的终端再输入

platformio run –target upload

来下载一些上传工具并上传,比如stlink的驱动~

接着你就可以把你的stlink和单片机连在一起,也可以直接使用串口下,直接用usb下也可以。

我们需要改一下下载模式:

PIO可以使用下面这么多种类:

AVAILABLE: blackmagic, cmsis-dap, dfu, jlink, serial, stlink CURRENT: upload_protocol = serial

默认是串口,需要改一下,修改

platformio.ini 文件如下:

[env:genericSTM32F103C6]
platform = ststm32
board = genericSTM32F103C6
framework = arduino
upload_protocol=stlink

对了,PIO还支持一个工程给很多个板子用,什么意思呢,比如我还有一块STM32F103C8T6

可以添加两个配置

[env:genericSTM32F103C6]
platform = ststm32
board = genericSTM32F103C6
framework = arduino
upload_protocol=stlink

[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
framework = arduino
upload_protocol=stlink

在VSCode右下角可以切换板子,非常的丝滑。

配置好,直接用快捷键:Ctrl+Shift+U 或者点击左下角的 -> 进行上传即可,板子小鱼并没有带回来,今天就没有办法给大家进行演示了,改天补上。

今天是干货满满的一篇文章,记得点赞再看~

作者:鱼香ROS

物联沃分享整理
物联沃-IOTWORD物联网 » Arduino开发STM32环境搭建指南(含小鱼经验分享)

发表回复