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

【经验分享】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)

[复制链接]
STMCU小助手 发布时间:2022-3-24 23:00
前言% k' x: _$ b" E& U- X* l: c
在配置好CubeMX之后,就是新建工程的开始了,那么首先我们需要一些准备,本片博客我们会很详细的介绍STM32CubeMx的基本使用和如何创建一个新的工程并且点亮LED灯  面向初学者   如果您想着快速实现工程的创建,可以直接跳过功能介绍,观看工程创建一栏
0 i. u! m& Z* w+ K1 g2 G5 @% M0 h' A+ G
并且,在新建工程时,我们分为了具体流程1~7 如果您不想看每部分的讲解,直接按照流程操作即可,5分钟即可成功点亮LED灯, c' }0 H4 I4 z
6 ^. o+ D  g" I$ }( I9 }( q
安装STM32CubeMx请参看《STM32 CubeMx使用教程一--安装教程》
' c2 F6 l% _8 q/ X$ e7 f+ q7 B& {* v9 K* G: h
前期准备:' s: m! _7 L8 V" {, b6 H' g
5 f' E$ @. e  s
1、STM32硬件(我的是STM32F407ZE和STM32F103ZE)* r0 k, g& M9 m
2 I! A* c" a" E! }& W& m) A4 \! M
2、STM32CubeMx软件、 IDE   Keil(MDK-ARM)软件7 E! {6 }0 B1 ]. o+ k7 p4 g( _$ y

5 K/ i& L- N. |! c3、STM32F4xxHAL库   
7 _" b! D& ^' Q; H* @4 u, m2 a+ a6 o& `
新建工程& x5 l+ x* o1 d$ B" ^% m$ V
1在主界面选择File-->New Project   或者直接点击ACCEE TO MCU SELECTOR   
/ _) k4 F6 w0 W1 j- K3 K$ s$ m( T& H& ~
K2@6O`G4V_PS%3NE6TV_@(R.png ) k( K+ Z, {+ D
$ O1 N" P, W( \' O3 o" S; O
出现芯片型号选择  一般我们直接搜索自己芯片的型号即可   : D; I$ y: T0 b' F  o2 B# ?( G" m& O4 \

3 `2 _/ E: N& b0 i* W 如果你是设计产品想要选择一款芯片  在搜索栏的下面,提供的各种查找方式,可以选择芯片内核,型号,等等,帮助你找到适合的芯片, }' P2 C6 A/ \0 _

9 q4 }7 T# _9 T5 c* V具体流程1:* \  G4 w9 g( }8 E  n
1 搜索芯片型号$ B# w( D1 ~5 @. Z* C0 p
2选择芯片
% I- j8 @9 N; h/ |$ C: L- n2 {3创建工程- _: V! S4 ?; x5 a5 ~$ X
那么接下来就是我们整个流程的重头戏了
- h* r, \' _& E6 l7 T# F0 ~, A
% p- A/ h; s2 q7 i 6WZPDNH9(6V_W_Z_8E`6RJ2.png
$ H. g( ~5 {, j1 J* I4 h7 }8 V' t! [9 e) |! c
这里我们分成三大块来讲解) J" h) h6 I+ T7 L
9 M" L# U/ S6 q
1MCU外设资源选择
& M) T1 J, e& b6 V: d, x. l3 B0 J" o2 {/ x  |, r5 S
在这里可以选择MCU的各种资源和外设* z6 K  ^+ c# e' y

4 K/ z8 k1 O* p" M提供两种方式 WA98]`1OQN(3W2F4%9$H8VJ.png
$ I1 C% D, t! Z
1 i  H* X8 X2 d1 ^- \3 W9 k: hCategories  种类选择5 V% R4 B' y, _5 f4 O; d
将MCU的各种外设和资源分类,供用户选择使用$ h0 c1 Q8 t& q  R, E+ \% ^
% s8 o# ~# S6 a1 B4 x& V& X
A-Z  顺序选择0 Y9 O7 c& L/ {1 m3 D
MCU的外设资源按A-Z 排序,供用户选择使用1 s) n( m) f) [
, l2 m- s6 z4 d5 v, }* J+ D
2外设配置
8 `! D: c: r6 L6 z+ o: @& T7 F1 P2 v5 O/ X& r3 e
这里可以设置你所选择外设的各种功能9 `( f8 f0 \  O  N3 B+ ^3 i6 V, [

4 g+ M. V9 V  C这里以串口1为例   我们可以选择串口的模式(异步,同步,半双工)   串口接收中断,和串口DMA传输等等
6 I6 y0 a# W. U1 V$ F. v, Q8 l0 {3 U0 G8 F7 Z
ZZ2PLNI_@EXJ9TWJAS1.png . A) z2 d) u% h& A! K7 B

  A3 r& c! n9 N0 z8 h. Z* Y, E和我们配置库函数的时候基本一样,但是  STM32CubeMx将这些转换为了图形和选项  ,我们配置的时候不用再去配置各种东西,只需要傻瓜式操作便可以配置我们需要的外设   这便是CubeMx的核心所在
- E. w+ d1 W5 C+ M$ T& w, R8 S8 f. f4 g; x2 D
3预览界面5 Y( L" y% r9 v" p. E
6 ]6 N9 G! X; K! v
[attachimg]48**[/attachimg]9 j, L. `3 C0 N! `0 s

; P0 e* k( b% q这里分为引脚预览 和系统预览/ S7 Z' r) g  T: ?$ a" [' @9 A4 j
$ X8 I) c+ ^: k0 J9 a+ z* ?* j
引脚预览就是可以查看那个引脚配置了什么功能,和各个引脚位置  
- i- `- W* j1 x" e0 e2 z
9 v" H" I" y5 B9 I随便点击一个引脚,即可设置该引脚的各种功能0 ~/ t4 ^; J  z. d2 `
) |7 w% W6 }1 I5 e. s
O5V(6S3_}[{OB}%)J54C$(I.png 3 Q9 {: c% d: H% C

, N* m9 u% L, S! w; w
3 ^5 D+ K& M2 t; k( ~. _6 T" t5 _: t' h: s# i
WL3[X]ZP634V`OR~(3I9~97.png 这种颜色表示不可配置引脚  电源专用引脚以黄色突出显示。其配置不能更改& |: @" {' m* f# G9 \/ M; u$ n

& x' d/ e2 v+ D3 V( A( r 2W4NX%KM6S(68ZY6@ZL8Y.png 这种颜色表示你配置了一个I/O口的功能,但是没有初始化相对应的外设功能  引脚处于no mode 状态  
+ Z( ?' z. [  C% W2 b/ K& d3 x7 x$ ]. K

& h2 K8 b* J. z9 x  J
. X5 `7 q0 r+ j4 J S}N45$J[){GQZTS6QC0YK(M.png 绿色表示配置成功  E! }. k/ \. [$ @- W7 [& w* w2 Q
# f- W4 R5 j0 g

; _) _0 e5 M/ J& x: I5 K系统预览/ S6 C2 s4 u* z  Q2 D) R

; E+ S: l2 \7 f) B2 I9 O; @系统预览就是查看配置的各种外设和GPIO的状态
0 P9 y# r+ e' I/ v
. |6 e/ Z0 ]( T9 Q# k+ u! g+ b WOBP_G)8@6]C8W{J$U%]N6O.png 表示没有问题0 ^( p! k4 P/ ]7 z& M

& M4 N) ~& ~9 I& ?  ^) l5 ^7 ], r! } CXWWM~RRJ)Q3620XW1U2XTU.png 表示警告,对应配置出现问题  点击该选项即可外设配置界面查看# x# P9 f) a( ~; D& j! H" X1 c7 k2 m

  S% `" K1 o6 m* z. P7 V7 J1 _! {0 G; `# w9 B
IG7B]7GV3CT$I`G`IF]VO.png / z' M* V+ r, A

% h7 n3 n* M- r7 s9 U
) T6 b3 k) J6 F; H) Q! T2 I8 T% e0 O具体各个功能的配置(UATR/DMA/ADC/TIM...)我们再接下来的文章会一一讲解,这里就不再过多介绍了
" J( u$ h% N( R6 E
$ ^1 K+ f& d" U" {7 J$ E9 |具体流程2:
. W6 M8 a& u7 F/ s- ]
: K0 W0 a( d' m3 [! i8 K这里只需要把我们的LED对应引脚设置为GPIO_Output即可3 G: h( F' E/ q+ y. C
5 b* Z7 u+ i2 n5 S
ZA]T2_EUG~FQ_(60W4TO~]G.png 8 N3 D2 I4 R3 ~- D+ V3 ^4 f
7 e% B1 ]) L; L
2时钟源设置6 |! i% N! s* Y7 y: T% O
& h6 y, ^- M; b9 _! F
SI7}]T1OBEA0`_0W4)59.png ' G$ k5 W- @# `) K  ~/ o/ H3 I* E% c

6 C  v9 B* R7 ]6 u其实也就是32的时钟树框图让你配置  默认时钟是使用内部RC振荡器(HSI)
0 Y( {9 e' C1 D+ ]/ K5 r' t/ X1 ]
如果不懂的话请看《【STM32】系统时钟RCC详解(超详细,超全面)》
7 u4 m" {& F& |0 f9 z0 a' l% k+ i/ \1 n' u( J
具体流程3:  D. Y( l/ _+ K5 P: b( U

2 a! q0 w% S  i2 X( X或者先按照图中方式配置为72MHz即可
9 b* _* ^; @2 c; l. I! l6 w$ E 需要配置RCC才能够使用外部时钟源" I  Y. z8 s0 {, {# \6 V
( j8 H: E: Q; x. D( r
J3OQ70U_3ORMFNLH0BLQY.png
* [+ q9 _  h# b: K8 K0 L, F2 M" c: |( {+ Z5 M7 h! W9 w8 n, k
3.工程管理: G# G2 W8 n  G6 @3 E4 j  C9 M! F
设置完MCU的各个配置之后,第三个就是工程文件的设置了9 `# Q+ x. \) {! E$ V. J9 O

* o2 o$ n) j+ J5 l& T6 S E%HCI3{``T2OO79EXTA~ZJC.png # ~8 \+ }7 [7 N. J6 E5 I
( Q& c% G4 J6 t1 J) a: S' i- W- h

! X2 G+ _' K/ l* v! H. m. r具体流程4:) J4 [* u" R6 k4 V% V

- O5 _7 H0 W8 G, q" m# |+ V8 i这里就是工程的各种配置 我们只用到有限几个,其他的默认即可  IDE我们使用的是 MDK5
' U; b5 b) W; s# p- k8 z
! g; m8 m. u* E+ Z存储目录不可以有中文0 y% ?# u8 [" V: w6 S
然后点击Code Generator,进行进一步配置   (重点)
# ^& ]7 X' u& a/ P" m: Y) r& b+ X3 g5 b. D1 c! h
RPAT~O`9ZKVVK9J0J8@W2.png , T7 K% J$ `2 t# L6 p
)WH~N}EC6]D{H@C6SYG__LW.png # [) p) b6 \- R( ^5 B+ G
' E0 b6 i1 \) i  I% |# J* \) }
将HAL库的所有.C和.H都复制到所建工程中 8 F" o# B' V  m

5 q! t7 [& x- u# y0 f. i优点:这样如果后续需要新增其他外设又可能不再用STM32CubeMX的时候便会很方便2 A% w; {) W- `1 q' x7 S8 C

6 d  q) }. H) Y4 h& ?/ [% s5 T缺点: 体积大,编译时间长(很长)8 L- W( A. ]3 J6 @1 U" W  ]

: l/ f, D! i, e H]M10`U1XJT2E44$QT1D)WK.png
( r* y) W! o2 q* o% H5 w5 g) k( d8 j2 n) L3 O/ l
只复制所需要的.C和.H   (推荐)7 ]5 \" `1 T' j" V% O

7 ?" o% p; I. h0 s% c8 @+ U优点:体积相对小,编译时间短,并且工程可复制拷贝3 ?, m7 s9 I, Q& X' T$ `
2 g$ N' d, ]7 [, c. E
缺点: 新增外设时需要重新用STM32CubeMX导入   
/ h* d- b4 ^% e: x9 `( `* D
. D+ W7 l9 V) f2 v& f. c, g+ \ ZX~B7t(PS}XQE}VB2OL@4.png
/ C2 ?% P* m% n; B. `/ ^' D4 Z! Y& C1 w4 ?* I7 z" \
不复制文件,直接从软件包存放位置导入.C和.H 5 o1 h1 [2 X8 a: o

4 D+ ?# ?: r% Q优点:体积小,比较节约硬盘空间9 N0 \  s5 ?3 J

/ N& `$ ?) \" [缺点: 复制到其他电脑上或者软件包位置改变,就需要修改相对应的路径   
1 W6 [" J$ T' n. }( Z  E
2 I+ |2 Z& U4 n( i- l* W自行选择方式即可
) ]3 T5 i$ v* J. l8 u( e
0 [) |; ?  G  f4 ?6 [具体流程5:! [9 `9 Z3 v6 [) L
- b1 A9 }" f; u; `: K* ~- o
然后点击GENERATE CODE  创建工程
. f# @7 v5 w6 e: H& T. b+ C
% s* T; Y9 [% Q( Q! J$ K3 }2 O @)9O5F2MFFY)9Y5{G4S{ATW.png ; e6 z) _0 ]7 v
6 K5 s: g( i* C, G# w5 B, P
创建成功,打开工程  L1 i# h+ s9 N$ @7 n2 k3 t0 ?0 `
$ s+ Q7 @7 ?( b. M, i4 ~
H$VPO@{[@J9K}XR3G]%~DOU.png
5 Y1 I$ ~$ P9 \( j* ]" ^1 ?; o; ]: U7 Y  T( x: _! j, |
具体流程6:while循环添加下面两行代码即可6 n9 k0 [: p/ B4 s) X1 K( d$ i) Y

' c' }' C9 h' A; l JS706($GC4$)XWRW267FD.png
7 A+ y7 f7 ^' Q8 K  k5 I9 W- Z: {
  1. <p>    HAL_Delay(500);</p><p>    HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_15);</p>
复制代码

; G/ d8 o3 e# U3 j2 q/ E7 ?9 h, E8 h+ X+ H: {0 y
配置下载工具
, e6 _2 B, T2 q具体流程7:% h2 |8 z( y; o( J

" o0 w4 P5 {2 `  T新建的工程所有配置都是默认的  我们需要自行选择下载模式,勾选上下载后复位运行
: Z  v* `: g1 K! _2 _" f$ d1 J% b$ ^
- g4 u* S4 o/ L9 t+ L, c% p 1~)44@N]14MN_LX(X@B710W.png
, ?6 p$ z% W/ T- h
3 I$ b8 c- D8 K( w* l% j所有自己编写的代码请放在/* USER CODE BEGIN XXX */   /* USER CODE END XXX */之间 9 H" q- v3 V" P# t

& X+ ^/ v: [  h& a- S. ~, \ 这样我们修改工程的时候你自己写的代码就不会被删除
+ B( ^! b& x/ h! B, H" S/ x, R' \: j+ M
2[RZ8`$YG[DI5{TU{ZT(4DD.png ! \2 _& a* \" [' u2 F
5 [- {2 {! p" ?
到此,STM32CubeMX的基本使用介绍完了 ,接下来会更新CubeMX和HAL库配置STM32的UART ADC DMA 定时器 PWM 等等
7 c6 Y6 @* g/ `2 ]3 l" R& V& x8 M0 P& h5 B& u
  l& v, C1 _# Q
)~C@_}}8(ATSKOQVOTF85.png
赞 收藏 评论0 发布时间:2022-3-24 23:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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