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

基于STM32CubeMX联合CLion开发环境搭建经验分享

[复制链接]
攻城狮Melo 发布时间:2023-8-13 14:50
1. STM32CubeMX与CLion简介
2 x0 j3 [4 K# G3 ]3 ~+ l
! K4 I: u" V: y
1.1 STM32CubeMX

, h8 D/ q; F6 e$ o
STM32CubeMX是一种图形化配置工具,用于为STM32微控制器生成启动代码和初始化配置。
) Y9 O' L3 ~- @2 [# k4 F
它可以帮助简化STM32项目的初始化过程,并提供了一种可视化的方式来配置引脚、时钟、外设和中断等。
% u+ S" r1 f# o* @6 {# n8 D$ h$ I
HAL(Hardware Abstraction Layer)库是STMicroelectronics提供的一种高级API层,用于编写STM32微控制器的应用程序。

' Z+ |( n6 X+ {8 H: P! Z' @7 y
微信图片_20230813144753.png

. a) G0 r' f0 A  Z

& ~: T. f0 W8 [" C4 e  h$ W

/ B* X; q& l6 b( S7 j
相较于传统ST系列开发,STM32Cube具有以下优势:/ K; m3 e, U+ W3 e+ w( j

# z: Y' Q2 [1 @0 w) q5 e* q
综合工具链:

: T% B  f; C# r% Z
STM32Cube是STMicroelectronics提供的一套综合性工具链,包括了STM32CubeMX、HAL库、LL库、中间件和示例代码等。
+ n. ?- s9 ~( b; e. y7 o
它们可以协同工作,使得开发过程更加简化和高效。
' ]# f. u: f8 @0 ~- `
图形化配置工具:
2 |0 [1 G* L; r1 y  {5 I
STM32CubeMX是STM32Cube的核心组成部分,提供了图形化的配置工具。
5 I$ r* l! ^7 C+ ~7 \
它可以帮助开发人员通过简单的拖拽和配置来初始化和配置STM32微控制器的引脚、时钟、外设等,减少了手动编写和调试配置代码的工作量。
- n/ j' t3 e! P
HAL和LL库:

' S) i/ B* M; Z
STM32Cube提供了两种不同级别的软件抽象层,即HAL(Hardware Abstraction Layer)库和LL(Low-Level)库。

6 s  \4 ^; f- U1 Q
HAL库提供了更高级别的API函数,可以快速上手和开发,而LL库提供了更底层的接口,可以实现更高的灵活性和性能优化。

( ]5 ?; J5 ~! O- ]
高度可移植性:

$ U# ^0 h3 ]3 c* \* {) ?
STM32Cube支持多个STM32微控制器系列,包括F0、F1、F2、F3、F4、F7、G0、G4、H7和L0等。
/ z4 P& i: Z) J) A8 C
这意味着您可以在不同型号的STM32微控制器之间共享和重用代码,减少了开发和维护的工作量,并实现了更好的项目可移植性。

- V4 n; l  t5 m, z' u' t3 x; g
内置中间件和示例代码:

0 [! t8 {( k: i- `+ O
STM32Cube提供了一系列中间件(如USB、TCP/IP、文件系统等)和示例代码,可以帮助开发人员更快速地实现常见的功能和应用。

5 A7 D1 M; F5 b, s& o: p2 n8 H
这些中间件和示例代码经过测试和优化,可以加速开发过程,并提供参考和指导。
1 Z( u. s0 T, h) m
持续更新和支持:
8 X4 y7 M& U8 b" y% d  P9 o; p7 H7 f
STM32Cube由STMicroelectronics进行持续更新和维护,确保与最新的STM32产品和技术保持同步。
; u9 a8 F( I/ z' m& d% d( r, n
这意味着您可以获得最新的功能和修复,同时享受STMicroelectronics的技术支持和社区资源。-
: C3 C! c' o% \
1.2 HAL库

' W! n, i+ c4 d/ ]! j
HAL库相对于标准库在STM32开发中具有以下优势:

) J: x$ o* f0 V# U: t0 H! u# }
抽象层:HAL库提供了一个硬件抽象层,将底层硬件与应用程序分离。
$ h! m% E  P4 U3 e9 X
这种抽象层使得开发人员可以更专注于应用程序的开发,而不必过多关注底层硬件的细节。它简化了硬件编程的复杂性,减少了代码量和开发时间。

) ~* K; ?" f( t+ L
一致性和可移植性:HAL库为不同型号的STM32微控制器提供了一致的API接口。
1 _3 F! |8 l5 V# m0 k
这意味着您可以在不同的STM32微控制器之间共享和重用代码,而无需进行大量的修改。这种一致性和可移植性简化了跨平台开发和产品迁移的过程。
. Y' s7 v, x; ~$ _) K( f7 x
简化配置:HAL库与STM32CubeMX集成,提供了图形化的配置工具。这使得配置引脚、时钟和外设变得更加直观和简单。
1 V- F$ I3 R( @# X& Z- R* t( o
您可以使用图形界面轻松选择和配置所需的外设和功能,并生成相应的初始化代码。

# `  a- T& `3 j
内置驱动程序:HAL库提供了内置的驱动程序,用于操作和管理STM32微控制器的各种外设。这些驱动程序封装了硬件寄存器的访问和配置,提供了易于使用的API函数。
& A8 k' y- e6 V0 {+ I& {# d6 O. J2 P
这简化了对外设的初始化和配置,并提供了一致的接口,使得外设之间的切换更加方便。

, e8 Z- o! H: @- Q
丰富的功能支持:HAL库提供了广泛的功能支持,包括串口通信、SPI、I2C、定时器、中断、DMA等。
+ R$ i7 i. I4 R
这些功能模块的封装使得开发人员能够更轻松地实现复杂的应用需求,而无需从头开始编写底层代码。
  m8 j" Z7 M) v
HAL库的最大优势是官方推荐,而标准库函数版本已经不维护更新了
% y' n8 \; u( m
1.3 CLion

4 \" `& l7 R( [) V) \+ T& d
CLion是JetBrains公司开发的一款集成开发环境(IDE),专门用于C和C++语言开发。它提供了许多功能和工具,旨在提高C和C++开发的效率和质量。
2 W. v6 ~0 J7 H
微信图片_20230813144753_1.png

& }/ f$ z9 z( E  @
. D/ ]% b# H+ C% S3 H( J# _

1 G+ c& ]% D/ A1 A: S3 E
2. 部署过程
" |# i" f) a& t1 d

- m# V+ |# ]: S8 Z8 X  G, }
2.1 软件部署环境

! Q# K# i  o4 K# F1 ~
软件环境:

! ?* ?+ \# ^$ o
  • Windows11

    - w; ~% O! c0 K6 _. y  ~
  • STM32CubeMX

    3 A: t" X: ?/ ~0 h
  • Clion-2021
    % x2 V9 Y. Y9 p8 I6 z+ S
  • Mingw
    ; {( F; t( @" v" z
  • OpenOCD

    * S+ k# j1 ^/ J6 w: t+ ?0 E
  • arm-none-eabi-gcc

    3 Z2 c$ w/ o# [. P$ \

    ( t" G$ m+ u: i8 z: Q
硬件环境STM32F103
! G9 t! Q( f7 j: T) p" s+ j
J-Link

4 ^3 l& Z- A4 h& @4 V
2.2 STM32CubeMX下载及安装
+ e1 L# q6 W4 j: o7 I
选择版本为6.4.0,高版本没有SW4STM32工程生成链

' {1 E2 n$ q: K) k8 X) F: F* H
微信图片_20230813144754.png
/ I; d! Q1 K$ s+ H

! g2 U" D6 k$ o3 }3 j" G
微信图片_20230813144754_1.png
. D2 [( j* b0 Q& R: O  W

4 J! K$ e8 P, k/ D$ S$ ~3 e
微信图片_20230813144754_2.png
6 L9 K# A& C8 d; \
: S5 U9 R/ g* @& c0 g( M' x* t

+ T( N% `3 c1 `, z; P
下载后解压

1 Q/ [6 v+ S5 M9 y
4 o! O7 R7 V: N
微信图片_20230813144754_3.png
8 i* B, m) j0 X; y7 s1 E' d+ O1 k" X

( m  I2 x, p( e8 x' |2 j
微信图片_20230813144754_4.png

, B$ k1 k( i3 z, H& _' w( `3 c+ p# H1 _# m' ]
微信图片_20230813144754_5.png
  t6 f" ~. U- k$ G
; m( x: P* p5 r, t4 W# b9 L
微信图片_20230813144754_6.png

# _, X# l0 w9 |+ E) o/ f; |% q0 Q% i* e/ N6 M
微信图片_20230813144755.png

6 C6 n% x' @) x4 o7 S+ P
" P7 [+ i- Z$ a7 B" D( N9 y
微信图片_20230813144755_1.png

" t9 u8 Z! S# U+ ]" U7 B- q5 `! G4 a5 p3 Y) Y- P" I/ b4 S. e
微信图片_20230813144755_2.png

5 ]0 U* Q" J# w. L- u" |: T: K- p4 k4 b: A: A% H" e1 y
微信图片_20230813144755_3.png
2 T3 [& R& z7 K& u+ M$ X( W

( N9 |- h6 _: R. J; v. p; t: u
微信图片_20230813144755_4.png
1 R$ U" g2 M0 u; _: c
0 |  P8 v$ X: e5 ?3 `3 {

* A  S0 o( G6 O* K" {' e  j
2.2 OpenOCD下载与安装
, Y" U3 Z& w- [- Q) _
OpenOCD
& \- f0 H7 o& i6 G
Windows上使用 OpenOCD 给 STM32 下载程序 - 腾讯云开发者社区-腾讯云 (tencent.com)
( M4 {2 H& g( \" ?7 W& f8 v* w
Releases · xpack-dev-tools/openocd-xpack (github.com)

+ e) g5 Q" C- S
微信图片_20230813144756.png
8 {+ v+ b, y6 `$ ?' V) Z" B" d

# }) E2 Q0 K% N
解压到自己可以找的到的地方,将bin目录添加到环境变量中

8 ~4 _, F5 J! [' |
微信图片_20230813144756_1.png

# j1 Q  U7 G7 z8 S
/ N" @% U% S: \0 }1 M+ v

% q1 H4 V/ L# E) `5 i1 E' S
选择zip形式
" k( `  q1 ?, h, E- u+ s# \
微信图片_20230813144756_2.png
9 t- g8 W& z* e/ H& q

- U2 ^5 A% H$ x6 P
将解压后的bin目录加入环境变量

0 g1 x: ^8 K2 o1 ]- m% `. ?
微信图片_20230813144756_3.png

% {1 |0 c' P) ?

/ R( ^% {( t* z$ m& `8 Y2 \  h
命令提示符有输出证明配置正确
2 M: ]! \$ J3 P+ ]
微信图片_20230813144756_4.png
) `/ j0 ^( U. F6 O/ \/ d0 W+ k4 i

( s  D  |, p6 K
2.3 CLion设置
+ |6 _! |1 E- `; V% `
设置clion

( |6 S, O+ o( d$ J. e/ e& e
File-Setting-Buid,Execution,Deployment

: e  }) I/ T" L" |
添加一个mingw环境
- Q( U% m( g9 Q$ ?. O* L; o
CLion下载和mingw下载以及安装可以参考其他博主网上教程
" N# E7 E( R- G( t# e
微信图片_20230813144756_5.png
. U. O! T: }0 M. E9 v, z9 k& u
检查一下CMake
- [; O% h8 o% R7 p* {
微信图片_20230813144756_6.png
: ~$ e3 m' `; Q# m; q) T
+ i' O  }/ D5 O+ E' T4 R
配置完毕。
* I  a) Y$ y  L, g" O$ r; J9 Q
' C3 G% `$ K" g* S* A& J$ l
3. 第一个STM32项目$ Y1 ~' S1 ~1 `. c  W6 `
( s3 O: X8 y, Y$ a+ D* r8 S5 |
开始第一个STM32项目

3 O5 k, \- Y& R) y
微信图片_20230813144757.png

! d0 ~: e0 A" R, T+ ~

/ M) {4 e5 ~& ?
点击create之后会生成一个.ioc文件,此文件与使用STM32CubeMX是等效的
6 o& N8 O+ |  B# g& p
1.png
( w2 }0 |: |% y) r
5 l; M4 f+ _  U2 `& m( Y6 m( T% y
点击此处能够使用STM32CubeMX打开.ioc

8 J/ E' s% }6 v6 S% J+ U
微信图片_20230813144757_1.png
  y- n8 q4 ^1 [1 b. L* I" \
* X  R% X( \4 M( v
尝试点击一下

$ x9 N9 O7 L8 @) z& T, X0 s- H  D
微信图片_20230813144757_2.png
$ B2 f$ m8 Y9 Y; }* K; h

8 j7 Q9 p9 s/ P, W: {" ]
微信图片_20230813144757_3.png

0 B* X+ {4 q+ Z/ j
: g5 `  |% d1 I( B& k/ Z
默认选中的芯片型号是STM32F030F4Px,我们可以在CubeMX中重新选择自己需要的芯片,一切操作都和使用Keil开发没有区别。

" N+ w# H& ?: Y1 A3 l
  • Project Name要与Clion中一致
    $ X) J' I9 `$ S6 F( R! }: ~
  • 生成IDE类型选择SW4STM32
    ! w6 n8 ?0 a0 m
$ `* B+ z" S2 D# H4 t9 p
微信图片_20230813144757_4.png
) Q2 N7 e, X! g! i* s- `

4 _$ s" J1 X! E. L% \. m
此处提示表达的是SW4STM32工程在之后的版本中被废弃了。

1 V0 C" b% m+ {1 O* l% w
微信图片_20230813144757_5.png

# Z$ w' q" b! T6 E# c
/ C& J: g7 `' k9 @3 J
微信图片_20230813144758.png
+ n, h6 o: S  a; F! s
+ T3 @' _8 Y3 [. [' f! a# x9 P
生成之后切换回CLion

  T, @; k' [: |! _& G: x* v9 U
微信图片_20230813144758_1.png

+ U8 p8 X& m4 R* \9 r
7 @* x* \+ A- J1 T1 i
打开File-Setting-Buid,Execution,Deployment
- n+ j" q, K) @& X
微信图片_20230813144758_2.png
( z+ p6 M1 `( \. H# B+ g# {) |4 o! @

" C5 h, N/ E% g
配置完成
  M4 o0 \; G; N+ s: i+ C& U8 Y
微信图片_20230813144758_3.png

% u  Y7 ?, ?4 X  d# Q1 `
4 Y- W6 s+ K# S- W9 B
转载自: 古月居

1 I$ R: ^6 W/ M7 S7 v
如有侵权请联系删除
" R) @' B  A, Y* o! [/ E( m8 ]& D$ X0 n5 p. c3 f  {  A2 b. ^
$ ?4 N  X! S1 K5 }1 ]% i- O; \( S
赞 收藏 评论0 发布时间:2023-8-13 14:50

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版