当前位置: 首页 > article >正文

STM32开发环境配置——VSCode+PlatformIO + CubeMX + FreeRTOS的集成环境配置

前言
为什么配置这样的一个环境呢?鄙人受够了Keil5那个简陋的工作环境了,实在是用不下去,调试上很容易跟CubeMX的代码产生不协调导致调试——发布代码不一致造成的一系列问题。CubeIDE虽说不错,但是它的代码辅助功能和构建系统实在不敢恭维,经常出现Makefile未同步导致符号定义冲突,亦或者是埋下了潜在的程序bug。

也有人尝试使用Keil Assistance + VSCode + Keil分工写代码与烧录,这听起来不错,但是调试并不方便,常常要来回奔波,实在是有些麻烦。这里我们尝试新兴的PlatformIO来辅助我们进行嵌入式的开发。

一、PlatformIO介绍:

PlatformIO 是一个跨平台的开源 IDE(集成开发环境)和构建系统,专门为嵌入式开发设计。它支持多种嵌入式平台和框架,尤其适合用于开发基于 ArduinoESP32STM32Raspberry Pi 等硬件的应用程序。PlatformIO 提供了一整套工具,用于嵌入式软件开发的各个方面,包括编译、调试、测试、库管理、代码补全、版本控制等。

1、主要特点

  1. 多平台支持: PlatformIO 支持多种主流的嵌入式开发平台和微控制器架构,包括但不限于:

    • Arduino(各种 Arduino 板)
    • ESP32/ESP8266
    • STM32
    • Raspberry Pi
    • Atmel AVRARM Cortex-MTI MSP430 等多种芯片架构。
  2. 跨平台开发: PlatformIO 可以在多种操作系统上运行,包括:

    • Windows
    • macOS
    • Linux
  3. 集成开发环境(IDE)

    • PlatformIO 可以与多种 IDE 配合使用,最常见的是 VS Code。它为开发者提供了功能强大的代码编辑、自动补全、智能感知、版本控制等功能。
  4. 构建系统和库管理

    • 构建系统:PlatformIO 提供了一种简化的构建系统,可以跨平台编译代码并进行优化。
    • 库管理:PlatformIO 内置了一个库管理器,可以轻松地下载、更新、管理和集成各种开源库。
    • 版本控制:它支持 Git,方便代码的版本控制和团队协作。
  5. 多种嵌入式框架支持: PlatformIO 支持多种常用的嵌入式开发框架,例如:

    • Arduino
    • FreeRTOS
    • ESP-IDF(用于开发 ESP32)
    • Zephyr
    • mbed
    • CMSIS
    • ChibiOS 等。
  6. 自动化测试与CI/CD支持: PlatformIO 支持自动化测试,能够通过集成测试框架(如 Unity 和 Catch)进行单元测试,帮助开发者提高代码质量。此外,PlatformIO 还可以与持续集成(CI)工具如 Jenkins、Travis CI 等结合使用。

  7. 调试支持: PlatformIO 提供了对多种硬件平台的调试支持,能够进行单步调试、变量观察、堆栈跟踪等操作。支持多种硬件调试器,如 J-LinkST-LinkCMSIS-DAP 等。

  8. 高级功能

    • 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 = stm32cubelib_extra_dirs = Middlewares\Third_Party\FreeRTOS\Sourcebuild_flags = -IHardWare[platformio]
src_dir = Core/Src
include_dir = Core/Inc

lib_extra_dirs = Middlewares\Third_Party\FreeRTOS\Source  添加RTOS库文件路径

四、编译、下载

编译通过!!!

http://www.lryc.cn/news/2384905.html

相关文章:

  • Profibus转Profinet网关赋能鼓式硫化机:智能化生产升级的关键突破
  • redis 缓存穿透,缓存雪崩,缓存击穿
  • JAVA8怎么使用9的List.of
  • 告别手动测试:AUTOSAR网络管理自动化测试实战
  • BUCK电路利用状态空间平均法和开关周期平均法推导
  • MongoDB 用户与权限管理完全指南
  • C++滑动门问题(附两种方法)
  • 基于ITcpServer/IHttpServer框架的HTTP服务器
  • 初识main函数
  • FPGA高效验证工具Solidify 8.0:全面重构图形用户界面
  • SIL2/PLd 认证 Inxpect毫米波安全雷达:3D 扫描 + 微小运动检测守护工业安全
  • java中string类型的list集合放到redis的5种数据类型的那种比较合适呢,可以用StringRedisTemplate实现
  • PyQt学习系列09-应用程序打包与部署
  • 实现图片自动压缩算法,canvas压缩图片方法
  • 《数据结构笔记三》:单链表(创建、插入、遍历、删除、释放内存等核心操作)
  • 光伏行业如何利用SD-WAN优化分布式网络:替代MPLS、VPN、4G/5G的网络架构升级与云安全方案全解析
  • 2025电工杯数学建模A题思路数模AI提示词工程
  • LLM | 论文精读 | NAACL 2025 | Clarify When Necessary:教语言模型何时该“问一句”再答!
  • 嵌入式鸿蒙openharmony应用开发环境搭建与工程创建实现
  • MDK的编译过程及文件类型全解
  • socc 19 echash论文部分解读
  • Linux Shell编程(八)
  • AI筑基,新质跃升|英码科技亮相华为广东新质生产力创新峰会,发布大模型一体机新品,助力产业智能化转型
  • 手机打电话时由对方DTMF响应切换多级IVR语音菜单(话术脚本与实战)
  • 面试题——JDBC|Maven|Spring的IOC思想|DI思想|SpringMVC
  • DETR3D- 3D Object Detection from Multi-view Images via 3D-to-2D Queries
  • SpringBoot3整合WebSocket
  • 鸿蒙进阶——驱动框架UHDF 机制核心源码解读(一)
  • 电子电路:能认为电抗也是在做功吗?
  • DEEPSEEK + 其他工具的玩法