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

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.xdnf.cn/news/8393.html

相关文章:

  • 遥感解译项目Land-Cover-Semantic-Segmentation-PyTorch之一推理模型
  • uni-app(4):js语法、css语法
  • hugging-face数据集快速下载
  • 深度学习笔记24-LSTM火灾预测(Ptorch)
  • nginx 的反向代理 负载均衡 动静分离 重写
  • PyQt学习系列11-综合项目:多语言文件管理器
  • Selenium元素定位的8种核心方法详解
  • 湖北理元理律师事务所债务优化方案:让还款与生活平衡成为可能
  • 暗黑科技感风格智慧工地监管系统
  • 线性回归原理推导与应用(八):逻辑回归二分类乳腺癌数据分类
  • 机器人收硬币算法c++,完整代码可运行
  • 在TIA 博途中下载程序时找不到对应的网卡怎么办?
  • Leetcode刷题 | Day65_图论10_BellmanFord算法01
  • 【JVM 01-引言入门篇】
  • 《数据结构初阶》【八大排序——巅峰决战】
  • Jenkins
  • 数字FPGA开发方向,该如何做好职业规划?
  • 无人机开启未来配送新篇章
  • AWS関連職種向け:日本語面接QA集
  • PyQt学习系列08-插件系统与模块化开发
  • 数据结构(5)线性表-栈
  • CAS详解
  • 文章记单词 | 第115篇(六级)
  • upload-labs通关笔记-第19关文件上传之条件竞争
  • EtherNet IP到modbus TCP网关完成AGV系统的安全解决方案及应用
  • 认知偏差:你的思维如何在工作中给你设置障碍以及如何克服它们
  • 基于微信小程序的高校校园微活动管理系统设计与实现(源码+定制+开发)高校微信小程序校园活动发布与互动平台开发 面向大学生群体的校园活动移动平台设计与实现
  • Servlet的继承关系和生命周期
  • 黑马点评-实现分布式锁
  • dify多实例部署,一台机器部署多个dify实例