【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建

前言

Windows系统下,目前STM32主流的开发环境还是MDK(Keil),但MDK有着不可忽视的缺点:

  • 界面古老,配置界面效果繁琐,很难真正实现一个低亮度视觉友好的界面。
  • 自动补全,Keil的自动补全功能只能说是比没有强。
  • 功能臃肿,有很多普通开发者或DIY用户用不到的功能。
  • 版权风险,虽然现在推出了社区版可以省去破解的步骤,但如果不小心用作商业用途还是会存在侵权的风险。

因此,企业与一般开发者可以选择 VS Code + PlatformIO + STM32CubeMX 来搭建开发环境,优点如下:

  • 界面优秀,作为“宇宙最强IDE”的VS Code在用户体验上是一流的。
  • 自动补全,功能较为完善。
  • 完全免费,无需担心版权问题。

前期准备

  • VS Code:主要用于编辑代码
    • C/C++ 插件:对C/C++开发的支持(关键字高亮等)
    • Cortex-Debug 插件:用于后期进行调试
    • PlatformIO IDE 插件:用于管理工程
  • STM32CubeMX 6.5.0:生成STM32代码

软件安装

这里重点讲一下 PlatformIO IDE 这个插件的安装方法

  • 因为一些众所周知的原因,安装时会很缓慢,需要耐心等待
  • 在应用商店搜索到插件后,点击安装。
  • PlatformIO 安装需要依赖 Python,如果电脑已存在 Python 但报错的话,则需要移除并安装最新版本的 Python 并加入到环境变量中。
  • 过程会相当漫长,且没有进度提示,本人测试时安装用了1小时左右。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第1张图片
  • 安装好后就是上图所示状态,点击左下角“小房子”图标就会进入主界面。

建立工程

PlatformIO 建立工程

方法一 (不推荐)

  • 主界面点击"New Project" 新建工程
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第2张图片
  • 输入工程名(Project name)、 板子信息(Board)和 软件框架(Framework),并选择工程位置。
    • 板子信息根据芯片选择即可,除了芯片信息其他后续使用不到。
    • 软件框架Framework任意选择即可,因为要使用STM32CubeMX生成代码,所以不使用内置的软件框架。
    • 创建工程时会在选择的位置创建一个以工程名命名的文件夹存放工程文件。选择位置时要注意。
      【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第3张图片
  • 配置好项目信息后,点击Finish生成工程,第一次创建工程的过程极其漫长,因为要下载很多源文件。之后再使用这个方法会快很多。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第4张图片
  • 这种方法虽然为官方推荐的方法,但过程较为繁琐,实际应用中一般推荐方法二。

方法二 (推荐)

  • 因为 PlatformIO IDE是按照配置文件 platformio.ini 来管理工程的,因此可以直接创建一个 platformio.ini 填入内容(或复制已有工程的配置文件),; 表示注释。
[platformio]
src_dir = ./               ; 项目源文件为根目录下所有源文件

[env:genericSTM32G031K8]   ; 项目的环境名,自定义即可
platform = ststm32         ; 硬件平台为stm32
board = nucleo_g031k8      ; 选择一款对应芯片的开发板即可
upload_port = stlink       ; 下载工具为stlink
  • 使用 VS Code 打开文件夹即可被 PlatformIO IDE 识别,并自动生成配置文件。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第5张图片

STM32CubeMX 生成代码

根据需要配置外设及时钟

  • 使用板载 LED 与 LPUART1 测试。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第6张图片
  • 配置时钟为最高的64MHz。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第7张图片

配置工程目录

  • 填入工程名,注意这里的工程名就是刚刚创建 PlatformIO 的文件夹名,位置要对应,IDE要选择Makefile
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第8张图片
  • Code Generator中选择Copy only the necessary library files这个选项,对新手来说很重要
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第9张图片

注意

新手建议勾选仅复制工程需要的源文件,因为 PlatformIO IDE 工程源文件是以文件夹过滤的形式来确定的,如果勾选"所有源文件",那么STM32CubeMX 会将包括某些应用模板在内的全部源文件都加入到工程中,在编译的时候会报错,除非生成代码后再手动一一删除。

生成代码

  • 生成代码后工程文件夹文件如下图所示。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第10张图片

修改 PlatformIO 配置文件

  • 这一步就是根据 STM32CubeMX 生成的代码为 PlatformIO 配置编译所需要的文件。
    • 使用build_flags将生成的驱动文件包含到编译条件中,-D表示宏定义,-I表示头文件路径。
    • 使用src_filter过滤需要的源文件,+表示增加某个路径,-表示排除某个路径。
    • 使用board_build.ldscript指定编译时的链接文件。
[platformio]
src_dir = ./

[env:genericSTM32G031K8]
platform = ststm32
board = nucleo_g031k8
upload_port = stlink
build_flags = 
	-DSTM32G031xx
	-DUSE_HAL_DRIVER
	-ICore/Inc
	-IDrivers/CMSIS/Include
	-IDrivers/CMSIS/Device/ST/STM32G0xx/Include
	-IDrivers/STM32G0xx_HAL_Driver/Inc
	-IDrivers/STM32G0xx_HAL_Driver/Inc/Legacy
src_filter = + +<./startup_stm32g031xx.s> +
board_build.ldscript = ./STM32G031K8Tx_FLASH.ld

软件开发

编译&下载程序

  • main.c的编写测试代码,点击左下角的 Build 按键即可编译,第一次编译软件会自动下载所需的工具(openocd等)。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第11张图片
  • 编译完成后点击 Upload 即可下载程序,会自动复位。这时即可看到LED在闪烁。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第12张图片

调试

  • 点击左侧的调试按钮即可进入调试界面,点击 PIO Debug 开始调试。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第13张图片
  • 调试开始后PlatformIO会先编译,后进入调试界面,使用上方出现的小框框可以实现开始、停止、单步等操作。左侧可以查看寄存器状态。
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第14张图片
  • 选中变量可以右键添加到监视窗口
    【STM32】VS Code + PlatformIO + STM32CubeMX 开发环境搭建_第15张图片

要点总结

  • 创建工程时可以直接复制已有工程的 platformio.iniSTM32CubeMX_ProjName.ioc到新工程文件夹。注意:STM32CubeMX_ProjName.ioc文件名称必须改为与所在文件夹名称一致的名称。这样才会在当前目录下生成代码。

你可能感兴趣的:(STM32,Cortex-M0+,开发日志,STM32,通用知识,stm32,单片机,开发语言,visual,studio,嵌入式硬件)