问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

VSCode + PlatformIO嵌入式芯片开发环境搭建指南

创作时间:
作者:
@小白创作中心

VSCode + PlatformIO嵌入式芯片开发环境搭建指南

引用
CSDN
1.
https://blog.csdn.net/qq_44625137/article/details/140562369

PlatformIO是一个基于VSCode的嵌入式开发解决方案,相比传统的Keil MDK,它提供了更现代化的开发体验。本文将详细介绍如何使用PlatformIO进行嵌入式芯片开发,包括项目创建、代码编译、程序烧写、调试和串口通讯等关键步骤。

背景

谈到嵌入式开发,STM32无疑是最常见的选择之一。虽然Keil MDK作为主流的STM32开发工具,以其稳定性和高使用率著称,但其老旧的界面和编码方式已经难以满足现代开发需求。PlatformIO作为VSCode的一个插件,为嵌入式开发提供了一个更优雅的解决方案。

安装

1. VSCode安装

VSCode以其快速的启动速度和丰富的插件生态,已经成为许多开发者的首选编辑器。在嵌入式开发中,可以安装C/C++插件以实现代码提示和补全等功能。

2. PlatformIO安装

与Keil不同,PlatformIO不需要安装独立的软件,只需在VSCode插件市场中搜索并安装即可。

3. 驱动安装

根据所使用的嵌入式芯片,可能需要安装相应的驱动程序。以STM32为例,通常需要安装CH340作为串口驱动。

实现

1. 新建项目

安装并启用PlatformIO后,在VSCode侧边栏可以看到一个小蚂蚁图标,点击即可进入控制界面。通过Quick Access中的New Project选项可以创建新项目,并在Board中选择对应的芯片型号及开发框架。

新建项目成功后的目录结构如下:

目录名
含义/作用
备注
.pio
项目编译过程文件和编译文件存放位置
编译成功后的二进制文件在build文件夹中
include
头文件存放位置
只有头文件有效,需要在项目配置文件中添加路径
lib
Library文件夹,存放独立的头文件和源文件
每个库可以作为一个单独的文件夹放在lib目录下
src
源文件存放位置
只有源文件有效,main.c就放在src文件夹里
test
测试文件存放位置

2. 迁移项目并编译

以STM32项目为例,需要将项目所需的文件按照PlatformIO的目录格式进行分类:

  • 头文件
  • 源文件
  • 单独的库

将对应文件放置在正确目录后,在platformio.ini文件中配置头文件路径和其他必要设置。如果遇到重复定义的错误,可以删除重复的文件或整个库。

编译成功后,可以在.pio/build/<你的嵌入式芯片型号>/目录下找到firmware文件。

3. 程序烧写

3.1 生成hex文件

在项目根目录下创建export_hex.py脚本,内容如下:

Import("env")
env.AddPostAction(
    "$BUILD_DIR/${PROGNAME}.elf",
    env.VerboseAction(" ".join([
        "$OBJCOPY", "-O", "ihex", "-R", ".eeprom",
        '"$BUILD_DIR/${PROGNAME}.elf"', '"$BUILD_DIR/${PROGNAME}.hex"'
    ]), "Building $BUILD_DIR/${PROGNAME}.hex")
)

然后在platformio.ini中添加extra_scripts = export_hex.py,这样每次编译后都会生成hex文件。

3.2 PlatformIO程序烧写

platformio.ini中配置烧写方式为串口(upload_protocol = serial),然后点击Upload按钮即可自动完成烧写。

4. 程序调试

PlatformIO支持多种仿真器,以STLink为例,需要在platformio.ini中配置debug_tool = stlink。连接好硬件后,可以在VSCode的调试侧边栏中选择PIO Debug进行调试。

5. 串口通讯

platformio.ini中配置串口通讯参数,然后点击Monitor按钮即可启动串口通讯。

6. 其他小技巧

PlatformIO支持创建虚拟环境以支持不同的开发板。例如,可以为不同的开发板创建不同的环境配置,如下所示:

[env]
platform = ststm32
board = genericSTM32F103ZE
framework = cmsis
build_flags = 
    -I include/STM32F10x_StdPeriph_Driver/inc
    -I include
    -D USE_STDPERIPH_DRIVER
    -D STM32F10X_MD
monitor_speed = 115200
monitor_echo = yes
monitor_rts = 0
monitor_dtr = 0
extra_scripts = export_hex.py

[env:car]
upload_protocol = stlink
debug_tool = stlink

[env:board]
upload_protocol = serial

这样可以在一个项目中同时支持多个开发板的开发和调试。

总结

PlatformIO为嵌入式开发提供了一个现代化的解决方案,相比传统的Keil MDK,它更加灵活和便捷。虽然目前在资料丰富性和稳定性方面可能还不及Keil,但作为新一代的开发工具,PlatformIO展现了巨大的潜力和发展空间。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号