你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

VS Code + PlatformIO + STM32CubeMX 开发环境搭建

[复制链接]
STMCU小助手 发布时间:2022-11-16 19:16
前言
! j8 z: t! @- T; _3 AWindows系统下,目前STM32主流的开发环境还是MDK(Keil),但MDK有着不可忽视的缺点:
: e& T* h$ K; k$ [/ m界面古老,配置界面效果繁琐,很难真正实现一个低亮度视觉友好的界面。
( M6 l4 Y  v! }: [+ _4 L自动补全,Keil的自动补全功能只能说是比没有强。' ?) V+ \1 j! x
功能臃肿,有很多普通开发者或DIY用户用不到的功能。, j# O, k* A# V' s
版权风险,虽然现在推出了社区版可以省去破解的步骤,但如果不小心用作商业用途还是会存在侵权的风险。5 s' F+ ^4 i+ j3 o: R
因此,企业与一般开发者可以选择 VS Code + PlatformIO + STM32CubeMX 来搭建开发环境,优点如下:( Q5 U9 M0 q4 P, x0 ~) l% a0 z
界面优秀,作为“宇宙最强IDE”的VS Code在用户体验上是一流的。
3 p* F: V6 G6 B7 @! V: d! G+ @: T' f自动补全,功能较为完善。0 U+ J6 T& P5 G! f: z% ^
完全免费,无需担心版权问题。
9 H2 d6 C) B6 I# _( v; d, ]+ S0 @' U- }3 t& r* r% j

8 W/ E5 w& y6 a, C! I前期准备

$ T) [- a1 K8 I! K0 gVS Code:主要用于编辑代码
8 q' D; _6 E9 rC/C++ 插件:对C/C++开发的支持(关键字高亮等)
6 a8 \. L6 L, UCortex-Debug 插件:用于后期进行调试, _' |5 S, T; X1 H, G# T9 k
PlatformIO IDE 插件:用于管理工程& M8 o4 E; _# K" M  }. V- D
STM32CubeMX 6.5.0:生成STM32代码  B- s; m9 L0 u1 I& Y2 g; Y+ L
: A' L' T# B2 n9 w

+ I+ ^# o1 E1 v软件安装

  I' K- o6 V4 p这里重点讲一下 PlatformIO IDE 这个插件的安装方法7 O( c9 q7 h5 g  i  z
因为一些众所周知的原因,安装时会很缓慢,需要耐心等待( [  S5 \. E# [6 w2 i
在应用商店搜索到插件后,点击安装。
) x) A. |3 m, [PlatformIO 安装需要依赖 Python,如果电脑已存在 Python 但报错的话,则需要移除并安装最新版本的 Python 并加入到环境变量中。
8 z- v& i( z& O' X& w过程会相当漫长,且没有进度提示,本人测试时安装用了1小时左右。8 L- G+ O" E4 R1 p0 k! }
! s! C( \: |0 \) ?1 \8 Y! d' x
47abe4aa9dbe4c469c87b261e726911d.png 8 K) ]0 e& o! D3 a" |- G+ R
, v8 y) M% L' W% O9 I
安装好后就是上图所示状态,点击左下角“小房子”图标就会进入主界面。" |- W0 `/ ?0 v( L6 l

. {$ R+ s* s* f8 L: J6 k0 Y
; Y1 U- v( y% k建立工程$ ~9 R' E; G- d( `4 \$ e
PlatformIO 建立工程
/ e. n; m8 R) b  E+ U方法一 (不推荐)

2 `2 N+ ]- u1 v! D0 J主界面点击"New Project" 新建工程
0 d9 l/ u3 S* |( E' \4 W7 W  P
# F$ Z! t' x( I. H1 T 4934e441d4124d56b8371ad91e65f375.png 2 t) I/ m' Y+ A( _' d" _/ J8 z
% \3 Y% ]  M/ {  \8 ]
输入工程名(Project name)、 板子信息(Board)和 软件框架(Framework),并选择工程位置。
0 o3 n+ ^( P! L板子信息根据芯片选择即可,除了芯片信息其他后续使用不到。
4 y2 A! N4 n; o3 j4 @7 J软件框架Framework任意选择即可,因为要使用STM32CubeMX生成代码,所以不使用内置的软件框架。
: g/ f7 k9 x* O5 |3 g0 c创建工程时会在选择的位置创建一个以工程名命名的文件夹存放工程文件。选择位置时要注意。
. Y0 J6 T4 Q# ~1 k. M# m- `, T' ]) K4 W
6bf2407b430c4729a767647f5e65eb33.png
2 J' v7 W2 P3 {" C. H. S/ E' R& \% D' s
2 a6 O2 c, z% g6 ?配置好项目信息后,点击Finish生成工程,第一次创建工程的过程极其漫长,因为要下载很多源文件。之后再使用这个方法会快很多。+ I. J* p3 z- [$ `4 W1 O

  W2 L& l, B, c% p* p f6f9bcb3cdf84528be68f84a7e802d90.png 2 v1 U; ^4 G( ?0 L+ W, A

: ^' t& H1 v! t* H这种方法虽然为官方推荐的方法,但过程较为繁琐,实际应用中一般推荐方法二。7 }6 V& {9 d. \! s* z4 z( P

; h8 D6 R2 S9 Q+ t( v方法二 (推荐)

6 o  I( F2 k/ t& k因为 PlatformIO IDE是按照配置文件 platformio.ini 来管理工程的,因此可以直接创建一个 platformio.ini 填入内容(或复制已有工程的配置文件),; 表示注释。
% V+ k2 R3 Q9 [* Y) Z
! r, C* [  W5 Y9 c3 n
  1. src_dir = ./               ; 项目源文件为根目录下所有源文件1 Z; n7 b$ [0 n9 ~

  2. % u8 f2 E+ W. K8 z; p
  3. [env:genericSTM32G031K8]   ; 项目的环境名,自定义即可
    ! h9 R. p7 R7 c  U# G, K8 r, c+ s4 A* Y
  4. platform = ststm32         ; 硬件平台为stm32) Z3 x8 x' J5 ~1 l8 C
  5. board = nucleo_g031k8      ; 选择一款对应芯片的开发板即可
      J2 ]+ Z( g, r! T+ r  @7 r
  6. upload_port = stlink       ; 下载工具为stlink
复制代码
# ^' h- ]- \$ A& q: c
使用 VS Code 打开文件夹即可被 PlatformIO IDE 识别,并自动生成配置文件。
3 N& ^- }. y3 ~& `1 y, e: ]
8 s2 _# P, M4 t" X+ J8 K2 ^. X f40a04437fb148c19d6651c21ca9b02b.png
7 d& R" \! q4 s' o$ ^# m* g
7 ]8 Y# ^( B' @9 G* o
STM32CubeMX 生成代码
# b* P2 U. o+ N4 T+ q4 q根据需要配置外设及时钟

9 `8 o/ x' z$ c% y, B$ j7 U1 y使用板载 LED 与 LPUART1 测试。
, s9 n+ s' G% n6 c% E# |3 v% H/ U5 J* |/ ~
b1e9f4af66d84e368793e4425d3d6e93.png ( E4 G: N9 N, S, k1 ^
' \# n+ y: |; o$ n9 W
配置时钟为最高的64MHz。
- I0 T! B! |9 d0 u# B* ~/ R* O& I, g9 g) A2 b8 I7 `- M& u
6ead5f2bc4264ac0885f458945d4c49b.png   M$ k' R2 H3 ^- ~; B
6 s0 u9 V# O( Y! I/ B
配置工程目录
  a2 o, t! @5 |) t) `" S填入工程名,注意这里的工程名就是刚刚创建 PlatformIO 的文件夹名,位置要对应,IDE要选择Makefile。
9 _- [/ L/ g$ M% @. Q
' b6 F( |! L- f+ A  T# z 88c68813a6814d68a33019668ec80454.png   d. z! N& x9 L5 E! h8 X
/ U2 Q) W! m7 c$ s1 }5 c4 Y
在Code Generator中选择Copy only the necessary library files这个选项,对新手来说很重要。
) j1 E6 b& A3 i2 @+ N7 g  h7 G, D
% d6 ?2 X$ F9 z+ [' _# L bb1f47c2c6b94d04991eec2d64840beb.png 1 `% l1 y- I" K& K5 ?$ D3 P: W- L" O
& a2 b6 v4 |& l, M4 _
注意: z( G6 D1 U7 L5 P/ \
新手建议勾选仅复制工程需要的源文件,因为 PlatformIO IDE 工程源文件是以文件夹过滤的形式来确定的,如果勾选"所有源文件",那么STM32CubeMX 会将包括某些应用模板在内的全部源文件都加入到工程中,在编译的时候会报错,除非生成代码后再手动一一删除。& _; V& q* ~7 B

5 `! N9 K% Y* @生成代码
0 j0 C! X9 y4 ?& n5 B
生成代码后工程文件夹文件如下图所示。: u% ]! L" f) R8 T  M8 p: ~& D

$ b1 w5 L' b; P 8e07c29c8c454a44bd34b16ffeafa9b0.png
* }  Q* h  x, }! b0 l* ]. H: K+ T* Y" S6 t. {1 L
修改 PlatformIO 配置文件
" A5 k+ y* z& {: j3 p5 [4 Q% ^这一步就是根据 STM32CubeMX 生成的代码为 PlatformIO 配置编译所需要的文件。
; {! |$ i' i8 [  s+ {4 c使用build_flags将生成的驱动文件包含到编译条件中,-D表示宏定义,-I表示头文件路径。
+ P6 Z1 m( o) Q6 |6 s2 Q使用src_filter过滤需要的源文件,+<path>表示增加某个路径,-<path>表示排除某个路径。
( D+ m/ Z8 g% U7 A/ \: A使用board_build.ldscript指定编译时的链接文件。
! x8 a; b- `* A) e" Z% t$ F. v& b& [
  1. [platformio]
    1 Y0 t( M7 I/ q% @- ~6 _
  2. src_dir = ./+ {$ a8 b0 k" N4 n
  3. 4 u8 n- C& [/ {7 E' T; X
  4. [env:genericSTM32G031K8]. A& t3 r% X8 E$ w  G& L
  5. platform = ststm325 g. O" Y0 }7 y6 |, ]
  6. board = nucleo_g031k8
    , k) V( b6 e! t7 N% z( Z2 K7 E
  7. upload_port = stlink$ F9 f3 n3 L+ Z0 I+ s3 t) j" m
  8. build_flags =
    5 m6 y# P+ \% T+ x& P% z
  9.         -DSTM32G031xx" o* p, Q" z% ^: t3 w: b" b* |: G
  10.         -DUSE_HAL_DRIVER
    1 q+ R7 V1 C/ L0 M' U: H' m/ w
  11.         -ICore/Inc
    + T1 |% T  Q7 @1 j/ U& c
  12.         -IDrivers/CMSIS/Include
    ) u- b- [( x7 \, D0 x" q& X( ~
  13.         -IDrivers/CMSIS/Device/ST/STM32G0xx/Include9 P: {* I, t1 e
  14.         -IDrivers/STM32G0xx_HAL_Driver/Inc
    $ S! k2 K& d' q$ c8 ?8 B
  15.         -IDrivers/STM32G0xx_HAL_Driver/Inc/Legacy8 x( u" V6 A1 ]: T4 V* {  o
  16. src_filter = +<Core/Src/> +<./startup_stm32g031xx.s> +<Drivers/STM32G0xx_HAL_Driver/>8 o7 a( O8 k# v5 t
  17. board_build.ldscript = ./STM32G031K8Tx_FLASH.ld
    6 i- V9 a' f: K3 @
复制代码
% N8 o, C- J# `8 o, N) q+ _
软件开发5 C: A. Q+ x. v+ b
编译&下载程序( \# T- N. F' v* ?2 M' m! p
在main.c的编写测试代码,点击左下角的 Build 按键即可编译,第一次编译软件会自动下载所需的工具(openocd等)。$ D3 t- }8 e7 i0 m4 X
+ r4 `; B$ `! Q' z
d1bfd062c2ca46c5bce8549874207adc.png " s8 g5 a  q. @3 R
. G; N8 e; Z' O9 H6 s
编译完成后点击 Upload 即可下载程序,会自动复位。这时即可看到LED在闪烁。$ ^0 l/ Q6 b8 b/ F5 {
& k3 ^, C# j) g+ v& Q
a60f1153a2624f2ea0295517682c12c8.png , M$ h" `! e' Q
; K! ?$ G! o3 v8 f; N
调试
" ?& F/ ~8 y) Z
点击左侧的调试按钮即可进入调试界面,点击 PIO Debug 开始调试。9 S+ B. Y# d0 g4 V8 p' M
3 i2 x- ]; Y; `
234f8241d57a4cb5896096a011332ae1.png
! @+ A' m+ i" \$ j) O9 T9 l
% ?4 E) d  t3 f调试开始后PlatformIO会先编译,后进入调试界面,使用上方出现的小框框可以实现开始、停止、单步等操作。左侧可以查看寄存器状态。3 ^! V; y$ ~7 \$ x( w9 G
8bfe0742f35549628e5ae1601a21c6eb.png 9 J, Z) k9 `0 a# U
2 g. M3 C: O  ?, o5 Q' l8 u
选中变量可以右键添加到监视窗口
! F; h/ r$ b) N8 L" a. M% a& D" x
c867918e7995411b8f931fd6998556b2.png 5 O# u- @- H7 V' R4 m

3 A  b* D1 t% ~; y要点总结
1 @' g2 t5 L) z8 C1 F6 M
创建工程时可以直接复制已有工程的 platformio.ini和STM32CubeMX_ProjName.ioc到新工程文件夹。注意:STM32CubeMX_ProjName.ioc文件名称必须改为与所在文件夹名称一致的名称。这样才会在当前目录下生成代码。
0 _2 h. e% O8 n0 B; \0 f: S————————————————0 p2 z4 |5 m6 }$ y  W: e
版权声明:PeidzzZ
# b$ a: d/ q' {. F9 L% z5 R5 N- x: Z# |  ^
/ V" m1 C& S) A5 J

, u8 @4 C: X& a8 [
收藏 评论0 发布时间:2022-11-16 19:16

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版