Skip to main content

PlatformIO 搭配 CubeMX 食用

背景

上一篇文章 中,我们可以看到,PlatformIO 用起来比 Keil 优雅多了。
众所周知,STM32 打开方式中,HAL 库比标准库更方便易用(配合神器 CubeMX),但 PlatformIO 官方对 CubeMX 的兼容不是特别完美(需通过 Python 中间件来进行代码转换)

在这篇文章中,我将介绍一种独特的方法,让 PlatformIO 配合 CubeMX 食用起来更加美味。

初始化项目

太长不看:我把以下步骤创建的项目文件夹放在 这个仓库,直接克隆即可。

CubeMX 的初始化操作

  1. 新建项目
  2. 选择 MCU 型号
  3. 配置 Pinout & Configuration
    1. 配置 RCC(选外部 / 内部时钟,视情况可略)
    2. 配置 SYS(将 DEBUG 选项由 No Debug 修改为 Serial Wire
  4. 配置 Clock Configuration
  5. 配置 Project Manager
    1. Project 页面
      1. 填写项目名称 (Project Name) e.g. Template_of_PlatformIO_with_CubeMX
      2. 修改项目路径 (Project Location) e.g. D:/Desktop
      3. 将工具链(Toolchain / IDE)修改为 Other Toolchains
    2. Code Generator 页面
      1. 将软件包选项(STM32Cube Firmware Library Package)选择为 Copy only the necessary library files
      2. 在文件生成选项(Generated files)勾选 Generate peripheral initialization as a pair of '.c/.h' files per peripheral

终于配置完成了,我们点击右上角 Generate Code 生成代码吧。

PlatformIO 的初始化操作

  1. 打开 PlatformIO 的主页

  2. 点击 New Project 新建工程

    1. 填写工程的名字。注意:一定要与 CubeMX 中配置的相同!(e.g. Template_of_PlatformIO_with_CubeMX
    2. 选择板子 / MCU 型号。这儿可以直接选择 MCU 的型号(e.g. STM32F103C8),也可以直接选择版型(e.g. BluePill F103C8)。注意:一定要与 CubeMX 中配置的相同!
    3. 代码框架 Framework 选择 STM32Cube
    4. 将路径 LocationUse default location 取消掉,我们自定义路径。注意:一定要与 CubeMX 中配置的相同!(e.g. D:/Desktop
  3. 打开项目中 platformio.ini 文件,添加如下几行:

    [platformio]
    include_dir=Inc
    src_dir=Src

    这里是因为 PlatformIO 与 CubeMX 默认生成的框架文件夹不一样,为了兼容性,我们顺从 CubeMX.

  4. 可以将项目中的 include 文件夹删了。而因为 Windows 文件命名不区分大小写,所以 src 文件夹顺理成章变为 Src.

尽情享用吧!

项目中, .c 存放于 Src 文件夹中,.hInc 中。
只要在 /* USER CODE BEGIN *//* USER CODE END */ 之间的代码,后续从 CubeMX 生成的过程中,都将得以保留,不会被覆盖掉。

PlatformIO 可以用快捷键 Ctrl + Alt + B 编译,用 Ctrl + Alt + U 编译并上传,按 F5 开启调试。

接下来的探索,就是 HAL 库的学习了。未完待续 ~

参考与致谢

本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。