前言
为什么配置这样的一个环境呢?鄙人受够了Keil5那个简陋的工作环境了,实在是用不下去,调试上很容易跟CubeMX的代码产生不协调导致调试——发布代码不一致造成的一系列问题。CubeIDE虽说不错,但是它的代码辅助功能和构建系统实在不敢恭维,经常出现Makefile未同步导致符号定义冲突,亦或者是埋下了潜在的程序bug。
也有人尝试使用Keil Assistance + VSCode + Keil分工写代码与烧录,这听起来不错,但是调试并不方便,常常要来回奔波,实在是有些麻烦。这里我们尝试新兴的PlatformIO来辅助我们进行嵌入式的开发。
一、PlatformIO介绍:
PlatformIO 是一个跨平台的开源 IDE(集成开发环境)和构建系统,专门为嵌入式开发设计。它支持多种嵌入式平台和框架,尤其适合用于开发基于 Arduino、ESP32、STM32、Raspberry Pi 等硬件的应用程序。PlatformIO 提供了一整套工具,用于嵌入式软件开发的各个方面,包括编译、调试、测试、库管理、代码补全、版本控制等。
1、主要特点
多平台支持: PlatformIO 支持多种主流的嵌入式开发平台和微控制器架构,包括但不限于:
- Arduino(各种 Arduino 板)
- ESP32/ESP8266
- STM32
- Raspberry Pi
- Atmel AVR、ARM Cortex-M、TI MSP430 等多种芯片架构。
跨平台开发: PlatformIO 可以在多种操作系统上运行,包括:
- Windows
- macOS
- Linux
集成开发环境(IDE):
- PlatformIO 可以与多种 IDE 配合使用,最常见的是 VS Code。它为开发者提供了功能强大的代码编辑、自动补全、智能感知、版本控制等功能。
构建系统和库管理:
- 构建系统:PlatformIO 提供了一种简化的构建系统,可以跨平台编译代码并进行优化。
- 库管理:PlatformIO 内置了一个库管理器,可以轻松地下载、更新、管理和集成各种开源库。
- 版本控制:它支持 Git,方便代码的版本控制和团队协作。
多种嵌入式框架支持: PlatformIO 支持多种常用的嵌入式开发框架,例如:
- Arduino
- FreeRTOS
- ESP-IDF(用于开发 ESP32)
- Zephyr
- mbed
- CMSIS
- ChibiOS 等。
自动化测试与CI/CD支持: PlatformIO 支持自动化测试,能够通过集成测试框架(如 Unity 和 Catch)进行单元测试,帮助开发者提高代码质量。此外,PlatformIO 还可以与持续集成(CI)工具如 Jenkins、Travis CI 等结合使用。
调试支持: PlatformIO 提供了对多种硬件平台的调试支持,能够进行单步调试、变量观察、堆栈跟踪等操作。支持多种硬件调试器,如 J-Link、ST-Link、CMSIS-DAP 等。
高级功能:
- Remote Development:支持远程开发,可以通过 SSH 等方式连接到远程设备进行开发和调试。
- 固件上传:支持多种方式上传固件到目标设备,包括 USB、串口、OTA(无线上传)等。
- 本地和云编译:除了本地编译外,PlatformIO 还支持使用云服务进行编译,方便不同开发环境间的协作。
2、PlatformIO 的安装与使用
参考VSCode 下 PlatformIO 的安装教程-CSDN博客
这篇文章包括了修改python的环境变量,使用自定义版本的python。
二、使用STM32CubeMX生成带FreeRTOS的工程
参考STM32CubeMX配置生成FreeRTOS项目_stm32cubemx freertos-CSDN博客
我这里已经生成好了,最后一步IDE选择生成Makefile
文件目录如图:
其他文件是添加到platformio工程生成的文件
三、使用VScode中的platformIO插件导入项目
1、新建工程
2、选择项目名称和文件路径以及添加使用的芯片
3、点击下面的finish,等待导入完成,目录如下
4、修改platformio.ini文件配置,目的是添加RTOS库和项目源文件、头文件
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:genericSTM32F103VE]
platform = ststm32
board = genericSTM32F103VE
framework = stm32cube
lib_extra_dirs = Middlewares\Third_Party\FreeRTOS\Source
build_flags = -IHardWare
[platformio]
src_dir = Core/Src
include_dir = Core/Inc
lib_extra_dirs = Middlewares\Third_Party\FreeRTOS\Source 添加RTOS库文件路径
四、编译、下载
编译通过!!!