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

STM32经验分享 第7章 创建工程模板

[复制链接]
STMCU小助手 发布时间:2022-8-30 14:17
7.1 Keil创建工程模板: b1 P# s5 Z" W( {
在前面“C语言使用HAL库开发”章节里,体验了如何使用HAL快速开发。不同于使用汇编和寄存器开发,使用HAL库需要为工程准备许多相关文件,也就是创建HAL库的工程模板。工程模块没有统一的格式,通常是根据多年的开发经验和使用习惯总结出来的,以“5_程序源码\1_创建工程模板”为例,介绍如何一个工程模板是如何创建的。
' B- D6 {( `. Y: y- t0 S! a7 @' k* m
; {3 O9 E6 l# U& g9 @# m1 ?  i如图 7.1.1 所示,一个工程包含五个文件夹,一个清理脚本,一个说明文本文件。
( d' |3 S# _9 [: K. F! n4 Y8 ?8 i$ l% M( a7 X1 T
[F0PJ3B(~7@X6Q}WP(GT.png
* u& j6 N% {& y6 v  C

: ^/ J% n1 h2 W" M$ n3 U% |
图 7.1.1 工程模板文件夹

1 C4 r6 N" |3 A2 ~1 v2 |3 R
3 c: f' E  X2 e+ l% {
7 }. L1 i# {- U- j, }       各文件夹、文件说明如下:8 m. F  P( }  ?6 a( e1 f! z7 n
0 }; K9 ^# l0 O0 m9 j/ ^
Core:存放从SDK文件夹抽取的部分可能会修改的核心文件;  w: j, d) k0 l- A$ ^# @1 r

% a! P8 V: j/ N. X3 c5 p: kDriver: 存放用户编写的外设驱动文件;
; g* C1 [; B! i5 y# K: z; @
' {; N% U1 n0 `+ d: q  E! N- O" F: LMain: 存放主函数文件;  k0 I' M% q: |. f3 _5 ^

. A" N- N: q7 e& h5 I( YProject: 存放Keil工程文件,包含目标二进制文件;/ |( ^* R7 B9 ~3 v0 l
" d/ E* d+ \: s/ x% L9 l
SDK:存放CMSIS和HAL库;, ?' ?. M& u( c% {0 k  a

$ R. I/ e$ ~5 E$ ]5 |7 T/ ^( Q2 RClean.bat:Windows脚本,用于清理Project里Keil生成的工程文件;0 D# R# v3 d- q, u! C- u

& ^1 o$ X; E! @$ c2 ^. p4 iReadme.txt:该工程的说明信息;& _" u* s& a% ^( G9 \0 O! q: A

/ M6 J7 B: Y) O/ I) q5 P! O( B) Q$ C“SDK”目录的内容来自配套资料“2_原厂资料\7.0_en.stm32cubef1(原厂固件包示例源码).zip”,即里面“Drivers”目录下的“CMSIS”和“STM32F1xx_HAL_Driver”。
7 v$ @7 C+ o  o$ Y1 B4 b$ s" q3 f
& ^& ]# t/ Y7 X2 M% K# r“Core”目录的内容来自“CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xb.s”; “STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Templates\”下的“Src\system_stm32f1xx.c”、“Src\stm32f1xx_it.c”、“Inc\stm32f1xx_it.h”、“Inc\stm32f1xx_hal_conf.h”;还需要手动创建“stm32f1xx_clk.c”和“stm32f1xx_clk.h”,这两个文件内容是一些时钟初始化,参考“1_工程模板”的工程代码。/ Q8 P; r" b+ R

' C$ |" F# g1 j, _5 D“Driver”目录存放用户编写的外设驱动代码,比如LED灯驱动,这里示例不涉及外设,暂为空。+ [6 l. g2 |. C0 w" f
% O% J8 R- D; @: |% Z5 k
“Main”为存放主函数文件目录,创建“main.c”和“main.h” ,参考“1_工程模板”的工程代码。
2 W6 U7 H% h% z  e9 J1 a- {& Q4 P3 z. H0 B3 f5 M( J
“Project”用于存放工程文件,工程文件由创建Keil工程自动生成,这里打开Keil。
9 t9 h# \9 o0 z: U  @8 j2 }
" _) R' l8 f, l6 S- ?* {) r
/ z% S% V. D, Z* ?6 d2 n4 n/ Z1 C/ n5 H) ]; {2 u4 L; e$ M
打开Keil后,点击“Project”下的“New μVision Project”,如图 7.1.2 所示。  b! y6 J' w1 x( i( }
X3(37WI5AR44`2%~RS2{C.png
3 o# O1 \0 f9 V4 O. f

) P0 R! r3 I% x! J
图 7.1.2 创建Keil工程

! D8 j4 Z6 a( r! D2 X# f6 |0 D9 B) F+ j随后在弹出的路径选择界面,选择“Project”目录,工程名字任意,假设这里为“Template”,如图 7.1.3所示。( R0 [6 @) E& q$ F! {  a0 g
* L$ G3 F8 P- ?+ T+ G% q. O# m. m
$HSI%TJR5[}GNZ]}0Z68WIJ.png
7 V/ a! x: h- |. C- }; t! }

$ h1 j9 E6 X/ ?* y9 ]2 y5 Y
图 7.1.3 选择工程路径和设置工程名称

6 b0 d  d- ~8 e6 R; y接着在设备选择界面的搜索框输入“STM32F103C8”,然后选择“STM32F103C8”,点击“OK”,如图 7.1.14 所示。) H1 F5 j: B. M% r% ]' j
+ [. ~$ S; M2 ~  x8 q
43KFVTXPR8YBAU{GOM$P652.png
( m) o2 D$ o( \( s
1 J9 Z5 S3 W4 M2 O
图 7.1.4 选择设备型号
. S  v" R$ M" s
随后弹出运行时环境(Run-Time Environment,RTE),目前用不到,直接选择“Cancel”,如图 7.1.5所示。) H& Y5 C; g; E7 E5 V

- s! k6 r4 M% V% f1 W$ l: n
KZR6NU7@4U9]EEW4U]%$LXL.png
' T+ V" e: l  y( D# M

6 B0 y6 w( i9 F8 K8 W
图 7.1.5 管理RTE
4 I0 e" K/ N( V/ j- |
接着进入主界面,点击“工程项目管理”按钮   ,为工程添加文件,如图 7.1.6 所示。6 }$ O) z' K# c, J) g

3 R/ _5 A. y, W9 y
D2U{OEUR@R$)F7]X~M`VZ)Y.png

+ C# K( N4 ^( ^5 b0 w, G+ F8 |0 ?5 O2 F& E
图 7.1.6 工程项目管理按钮
- p! V( S  |3 Q; {( @
在工程项目管理界面,有三个窗口,分别是目标工程(Project Targets)、分组(Groups)、文件(Core)。双击“Project Targets”下的“Target 1”,可修改名字,这里改为“Template”,双击“Groups”下的“Source Groups 1”,改为“Core”,如图 7.1.7 所示。
) [& H+ Z8 i* D* W- Z$ L3 p; R" Y' f& m% P
XIT(C42@S7~ON]IU4V3_}QW.png
6 ~6 n! z6 V3 E! c" |5 q. t' K4 ]- N

: J( D5 W  i9 ~3 L1 J& v; K9 b
图 7.1.7 工程项目管理界面
( N8 L5 ?# h8 L! C
接着选中“Core”,点击“Add Files…”,接着在弹出的文件选择界面,进入“Core”目录,然后需要修改“文件类型”下拉选择框为“All files(*.*)”,才能看到所有文件,如图 7.1.8 所示。2 S$ s/ h) |5 v7 N8 H3 [* X

) @+ h5 Y! Y' l( k& Q' c
P`FDF@T2`M)8UHTL9D(H]B1.png
& a0 R* M* a1 K3 |+ V1 l

/ C3 D& I( f# f# W
图 7.1.8 选择所有文件类型
" `8 @4 |) |3 r; @/ n
然后选中“startup_stm32f103xb.s”,点击“Add”,如此循环直至如图 7.1.9所示的五个文件全部加入“Core”。
6 \9 T$ {, a* G/ f3 N- M3 N
8 C# S/ G+ B* o7 U, F: X
X_B%}0_IYB[8%@PWKXGGW.png
' B4 P2 M! a% B7 E1 j

3 L9 \- e: y# a/ x9 ^$ O5 ]6 `3 R
图 7.1.9 选择加入Core的文件
: a3 q; z/ O# {# e' [3 c6 i% P; \
再点击“Groups”的   新建图标,创建一个新的组,名为“Main”,如图 7.1.10 所示。$ V8 E& h( _, L; _1 d

% I) ?! G5 @1 u/ j9 D5 a
X]3P5_9CS@JRVHMW{@CAZ`3.png

; l+ A6 g" B" x. u: X! t
2 @; f  V3 Z3 r; C1 L
图 7.1.10 创建新组Main
/ ~% o2 y5 l3 T  k7 I" K& `3 J
接着选中“Main”组后,点击“Add Files…”,选中“main.c”,再点击“Add”,如图 7.1.11 所示。
6 A9 R( m; c6 U/ t% y) m9 L, Z$ ]4 K  V6 [
SQ31ZKV56(~ASSFZMQ_Y86R.png
4 J3 |: `: g4 q) [( k1 X/ d

6 j( v) G8 a' u( k. N2 Q
图 7.1.11 选择加入Main的文件

4 u% ?- K2 g* h2 \/ W再点击“Groups”的   新建图标,创建一个新的组,名为“Driver”,该组没有文件,无需添加。再新建“SDK”,加入“SDK\STM32F1xx_HAL_Driver\Src”下的几个必须文件,如图 7.1.12 所示。
, [! \8 P1 \3 V# Y! x5 l
8 I( A5 n7 G: h
NCI3Z_VZ{UZ05C4D%6X8ASD.png

  ~/ c7 F/ j1 X5 O" i) J/ a* v2 O9 B, Q/ X; U* Q8 U
图 7.1.12 选择加入Src的文件

2 o& i$ A3 Y! C7 b" R所有文件添加完成后,效果如图 7.1.13 所示。- |" j! w; Q. u' o# {

9 Y- M; ^/ {% B
IIC3WH8%3U`P3GS~[I2}5T6.png

; r8 F5 K7 M1 y7 A% g8 E
1 f. F! F  _/ D9 h1 W/ I, \% H
图 7.1.13 工程添加后各目录效果
* N8 q( i, S" F8 v" K2 [
按上图添加完后,点击“OK”保存,如图 7.1.14 所示。
7 ~* n+ D7 Z$ V- `
, R: {9 [9 x6 ~
L_UMBJOW_83}HULU5_V1`%R.png

) G) A- t: T% \! S% O+ G7 Y1 h8 P  r
图 7.1.14 添加完成
# O% `) ?$ n  B% t9 |7 {4 _
接着进入主界面,点击“工程项目选项”按钮。) Y$ U4 Z$ J+ q9 }+ P7 m- f5 B
+ o9 _' n' j$ @9 e  ^
LNLU0{[EM}KK0NQUA6S1.png

* [) E+ j3 |8 `* X$ U+ m$ O
  E" t$ J0 m6 s' G1 A  e
图 7.1.15 工程项目选项按钮
7 L0 s; J2 f+ Y7 P! o# Y
在弹出的窗口,选择“Target”标签,如图 7.1.16 所示。追求稳定,这里设置ARM交叉编译工具链为“Use default compiler version 5”。“Use MicroLIB”也可以勾选上,编译出来的文件占用资源会更小,也为后面调试串口实验提供printf。再下面是Flash和RAM的起始地址和大小,与前面图 6.1.4 所示的Flash和RAM是吻合的,这里无需修改。
& Z; D; {7 {$ K8 q4 |+ p; T
( M( b- X7 x# E2 x; w  X6 Q3 K4 w  y
{6ALJ73FIUO9G`II(A%@FWW.png
: X$ C: I- P; M& }& p; R  H
2 m$ m$ d' g4 T  M1 R$ |5 H
图 7.1.16 Keil设置Target

8 f1 r+ F: _3 Y切换到“Output”,勾选上“Create HEX File”,生成hex文件供其它烧写工具使用,如图 7.1.17 所示。- Z( G% s* q: S+ g' g

% [$ N9 g# r/ q; i
~E9X2Y{HX80OF8AO`H3TV5S.png

( N! W0 x, Q  L& \+ z
" R# Z5 A) O6 }. I, Z, w
图 7.1.17 Keil设置Output

5 T7 ^1 x* ^9 Y% L: Z4 D2 I再切换到“C/C++”标签,在“Define”栏填入“USE_HAL_DRIVER,STM32F103xB”,分别表示使用HAL库,使用的芯片型号系列。HAL库很多C语言语法采用C99标准,这里需要勾选上“C99 Mode”,不然会编译报错。最后点击“Include Paths”最右边的按钮   添加头文件,如图 7.1.18 所示。
# Q0 l* Y  k0 D' w+ a# p  U
# ~$ X, G" f' l8 V) U& \在弹出的文件夹设置窗口,点击   按钮,依次添加如图 7.1.19 所示路径,最后点击“OK”。, O7 ~. t( O) q/ ]0 H/ s) ^/ r. t

+ I  m1 N% u, L. _
_9RMN7H0P95[J{K2~X8D1N5.png

6 Z/ ~* c: C8 s+ y2 D
% J& ~8 n* C# ~6 i) n
图 7.1.18 Keil设置C/C++

. H4 U5 Q+ h. n0 F& T% n
% ?* f8 Q% ]6 ]/ |+ P( U+ @7 ~/ Q
/ A, X+ i% j; ^# X5 ?9 I0 T" I3 ^* ~
KTBAOG8Q)CXE)KH}T4{_)Y3.png

# W# t. f0 L( n- \. w( O. U
( v; e* r& Z$ s# q. I8 U
图 7.1.19 添加头文件路径

: g8 @8 h; d: o" y2 K! E6 s3 i4 s切换到“Debug”标签,我们使用的ST-Link,因此需要选择“ST-Link Debugger”,最后点击“OK”,如图 7.1.20 所示。# B) f3 G5 y. H3 U+ s# z
. h, l5 j0 H9 h& @
$E{DSU6UAKOF69}E18@V1{W.png

3 D* \+ M8 {- Z/ ]6 j) w7 }5 W- P2 O- K4 e
图 7.1.20 Keil设置Debug

( q! {0 ^9 e" X) A) @9 y以上全部设置完后,点击编译,编译完后,点击下载(这里需连接ST-Link才能点击下载,否则使用100ASK_STM32F103_Tools的自动下载),出现如图 7.1.21 所示的红色下划线提示,即表示编译、烧写都正常(当前工程主函数没有任何内容,开发板无任何现象)。之后便可以,以此工程为模板,编辑main.c,向“Driver”添加外设驱动程序,进行开发。, [. a" k% X; U, x# K; F! n
8 _* R+ F9 T, ~; d
5%3_3M([XE6JUGP$}5~9XXD.png
" }0 x! B0 F: ]2 g* m$ g0 \
. n+ J5 J& @. p. _) M! v  K) K
图 7.1.21 编译、下载测试
# a6 z" Y/ U, O+ X1 Z
/ J: }+ P+ v6 j4 E

( K4 {" e, h6 C' _  ?【总结】9 @. Q( n8 W8 `% J7 [

4 O9 Y2 K/ W8 G* I$ O/ t3 ^- c6 C- p工程模块的创建步骤如下:
, K9 A' L/ ?/ S8 F! C' r. \7 y( m9 p2 g$ [0 c
1. 创建相关文件夹;
/ G# Q4 C$ b2 F- k1 `
' C# X" N4 V( d* i2. 复制CMSIS和HAL库;
, U( G" L. E! Q# P  [; ?  Z, T2 s8 q" m( |6 S. L
3. 创建“main.c/h”和“stm32f1xx_clk.c/h”;! [5 b1 H" }6 n
# U. d6 T8 a$ D7 n/ w: E
4. 创建新Keil工程;$ g! O3 R$ m( H' J

% z- F/ V- J7 g0 x% L5. 添加组文件夹和工程文件;  a8 O+ C1 [/ j0 g" \

# V; z% T6 l- X, B% {. u7 B6. 配置Keil设置) t8 Z3 E( J3 M

' [/ D: w! F% }9 o# l8 d- X2 E, T
9 G$ W0 x- {) e* {6 p
; M: ^! l0 ?0 h% b7.2 Keil常用设置4 a& c# I5 R. E$ R" ?% y
除了上述基本设置外,还有一些设置可以方便日常使用。
" C+ ]! G) v% F& l2 S& p. W
. X# O: |; H' O$ t0 \7 z1.2.1 下载后自动运行程序
! V/ z6 C+ R0 A: Z8 sKeil默认在下载程序后,需要手动按下开发板复位才能启动程序。通过修改修改配置,可以下载后自动复位重启运行程序,方便调试。
" X1 m  _1 X- D! I) J1 p/ S$ ^" H- Z* S  R8 E( J" K# b( Q3 y
点击“Optinos for Target…”按钮,切换到“Utilities”标签,点击“Settings”,如图 7.2.1 所示。" S( I" w2 K* C2 H# {, u: F; S

7 ]! U2 X. [2 Z( b4 Y& P! O
`DXFNKM81O@H@WUMEPNL]BY.png

6 B- \9 a; l: f  ~2 I- b  z$ r, H' P. d: m0 g9 T" W8 l  M
图 7.2.1 Keil设置Utilities

$ E/ j3 ~* Y% y2 P. ?随后弹出设置界面,切换到“Flash Download”标签,勾选上“Reset and Run”,如图 7.2.2 所示。接着再切换到“Pack”标签,去掉勾选“Enable”,如图 7.2.3 所示。) p0 V, E4 S/ Q# n5 k

2 M3 }: y: |# O* S
_L4]V@J3I[1$(OWCXIA(U49.png

+ m1 z* e5 Q( |
( W& c8 ?% b# h, V1 ?+ @
图 7.2.2 设置自动运行1

, p: q8 [) a; S* f8 {( k, C2 X
2 w9 E1 A! e. P6 J: V2 b: U/ P7 F7 w) V3 V: e. U$ y) a
O51(CR8$}NH~9K4WD`7`L{U.png

* O- S2 o. n& p% q! x% P2 U6 h; D7 F9 I7 |9 t
图 7.2.3设置自动运行2
0 N9 N% c# Z* L2 }9 y; R) _
! f3 ^; a1 s3 e; l
# G9 \' G9 O! Y3 ]: Q6 X
1.2.2 生成Bin文件
, C0 o- R8 v2 t; W! ~
实际开发中,可能需要Bin格式的下载文件,而Keil默认不会生成Bin格式文件,需要进行相关配置。点击   按钮,切换到“User”标签,在“After Build/Rebuild”添加“fromelf --bin -o "$[url=mailto@L.bin]L@L.bin[/url]" "#L"”,同时勾选“Run #1”,表示在编译完后,执行fromelf命令生成bin文件,如图 7.2.4 所示。
# X! z0 ~. |- N# l" I# Z0 }1 M. x
6 k8 \4 a! f/ S8 ?( a/ o
~8CZ]8ZQ}1}]N11$C)$KY]6.png

% G, D5 e9 y. a% ?& a) Z: }/ j9 r/ P( Y# `) t0 u3 K
图 7.2.4 设置生成bin文件
# @9 q( x. h- l* x# L/ W2 M, R; C
设置完成后,点击“OK”保存。重新编译整个工程,将在工程的“Project\Objects”目录下生成xx.bin文件(xx为工程名)。
0 H( Z% [& h4 v% L" a* V& u! Z/ Y: z, m6 v) i+ x
4 c3 v; g  {0 S- z! i" Q
1.2.3 字体编码等设置
! Y# y0 t9 ^& V. a点击下图按钮,进入Keil设置界面,如图 7.2.5 所示。
3 ]. e# R0 g+ j! ~1 `+ y( D8 z3 ?" g  ]' N! r( ~0 Z
TE[VJ$B4]CS_B25M}N1R9]4.png

  B7 o* ^# T  W2 ]5 U" ~% n) Y/ a+ f/ B$ m* K* P# C6 D
图 7.2.5 Keil设置界面

8 w5 d' x) N3 c# n# Q0 @! R在“Editor”标签,字符编码选择“Chinese GB2312(Simplified)”,可以解决代码中中文注释乱码问题。在下方的“C/C++ Files:”的“Tab size:”设置为4,可以解决代码中缩进对齐问题,如图 7.2.6 所示。( ]% I7 ?+ U2 r3 n2 y; _

3 E4 \8 N! J+ e1 g
I7[S1IRL0Y7M`B5NEOPL4.png

. ~; r$ p: a* E8 i  u( {5 |
; ?- y4 T% c& V! K% ^. V6 S( p
图 7.2.6 Keil设置Editor
7 V4 \# ^4 _, c- n( y/ f
然后切换到“Colors & Fonts”界面,选择“C/C++ Editor files”,可修改字体、数字、关键词等的字体样式、大小、颜色,如果没特殊需求,默认即可,如图 7.2.7 所示。% C8 r7 E1 D4 G. S2 t7 w
/ f, ?/ Z! P9 U) k
QQ26D]H%VH}][A69Z{)SEW1.png

* \7 L: A; j$ {/ f2 n7 s# {1 X/ G; ~2 Q6 t- Z
图 7.2.7 Keil设置Colors&Fonts

0 n, G( }$ G& G* y6 o8 U3 [
0 C) y$ c/ t- [6 j/ X2 R
0 k$ Y' Q6 x5 q7.3 STM32CubeMX创建工程模板

6 \1 |6 a+ F5 }& ISTM32CubeMX是ST意法半导体推出的STM32系列芯片图形可视化配置工具,用户可以通过图形化向导为Cortex-M系列MCU生成初始化代码工程模板。
! i  `0 k- f  @+ ?. W# P0 }0 j' e5 _) d: P+ U/ C! B0 w: E
相较于Keil创建工程模板,STM32CubeMX步骤少、上手快,但生成的工程模板比较臃肿,因此本小结只简单介绍下相关创建操作,后面的实验仍使用前面自定义创建工程模板。读者也无需纠结使用哪一种方法,以后熟悉后,自然知道修改哪些内容,在两种方式之间任意转换。! c& C" R* v! \! ~$ K* i

+ u# k8 m5 ?. `* ~" \; i. ]! W2 Q4 `从ST官网下载STM32CubeMX,解压、安装、打开。首次运行会自动下载更新文件,待更新完成,点击“ACCESS TO MCU SELECTOR”通过选择芯片创建工程,如图 7.3.1 所示。6 y2 }& E( ^( j4 O2 `7 K7 G& G

* v3 W7 I9 `' ~+ I/ A+ n
D)9BS~9EY$X7(FL{(4M)JNA.png
; K0 M, F7 q3 {7 S

/ A: K& J$ Y9 Z7 j9 f, B
图 7.3.1 通过选择芯片创建工程
) V1 g" P/ C6 |
随后在搜索框输入“STM32F103C8”,右边选择“LQFP48”封装,最后点击“Start Project”,开始创建工程,如图 7.3.2 所示。7 N: A$ ~. H! A: r+ m
7 B* g+ v( E4 t* q4 d6 O
J@57CU9C2B@~Q)A`6_TNOM3.png

0 k* w! ?3 r3 s% p7 b) P2 l/ m7 J0 [. o& I
图 7.3.2 选择芯片型号

& e# ~" R5 Q0 g! a3 K随后进入引脚配置界面,该界面可以图形化选择芯片引脚并配置,如图 7.3.3 所示,这里就不展开叙述,感兴趣的读者可以网上搜索下资料,比较简单。* H2 Y+ |8 w* Y) u# A
/ M7 C' G+ J" L  m9 p& N( H
Z(X49[VJ(2_0_%)XJKTL)8O.png
% l0 v, v+ i% ~- f

! A+ x8 T' o: g( s" z" Z8 h
图 7.3.3 引脚配置

8 y6 r6 t. @. N6 f: H0 G  g点击“Clock Configuration”进入时钟配置界面,如图 7.3.4 所示,在该界面可以图形化的配置时钟来源、倍频、分频等,这里也不展开介绍。
% c: x; g' ]! W5 o0 W' d" Y9 M8 e2 m2 g
ZCD[KUS0SP@)M~9K]S8AY~U.png

- T. p1 w* C5 {* u/ q6 n8 M; N5 C5 A) t' _
图 7.3.4 时钟配置

2 Z# F$ v0 t; Z0 i$ ~- f4 X点击“Project Manager”进入工程管理界面,如图 7.3.5 所示,在该界面先设置工程名字,再设置导出目标IDE为“MDK-ARM”,版本默认V5.27。
4 O0 b. ^/ Q! w; i( Q5 u
% F2 l- C- _; b
{_MLKMI9DV5C}]%]E@_4X2P.png
1 O+ u$ X9 u! h! C3 I
- a$ }* R8 }0 {0 t
图 7.3.5 工程管理界面

3 T4 C* n8 p' y! R再点击“Code Generator”,勾选如图 7.3.6 所示,最后点击“GENERATE CODE”。
4 T1 S/ L# R3 A8 h7 S3 R  |8 Z, j1 n; {
, j9 a/ F; _. U1 d" b
`KLRBP{UA%~ME]6S~1P0(WK.png
: g) c. f1 s* K7 X, e, c
& h! f8 ?; ?" B/ w* l  L) q/ U
图 7.3.6 设置生成代码样式

* z; y0 l  N# h3 y待代码生成完后,出现如图 7.3.7 所示提示,点击“Open Project”打开工程。& S6 w7 R& V  F

) o, e+ ]9 z$ r2 y! n
T%NHX](M]}1ZOBJJJJ6PX`K.png

9 V3 f+ W2 G) A% c$ w
& n8 V' m& J5 E1 j
图 7.3.7 打开工程
) s2 p0 b2 d7 Y, m8 _# W1 a7 s7 U* p
随后,将使用Keil自动打开工程,点击编译测试,编译成功,没有错误,如图 7.3.8 所示。以后用户只需要在“main()”里添加代码内容即可。
7 y3 n  W. F3 i: U
0 H$ S8 ?7 Z, W  j$ n/ u2 a
D54G)HUR`$$LE)U5VP3JT29.png
; G6 r2 k4 @* k2 z7 r
9 i0 U* ]( g/ F: k
图 7.3.8 编译测试

1 H/ A! t8 M+ V7 t. ?- T5 i8 b$ ?* |( K' l/ Q

) z  c2 K8 q: T% E7 ~9 I【总结】
- \% j$ w4 ^. F* K/ k

8 H1 k/ W5 |' k使用STM32CubeMX创建工程,非常的便利。但同时也限制了用户对工程的调整,代码内容、注释也臃肿。如果用户需要快速搭建工程环境,STM32CubeMX是一个非常不错的选择;如果想深入学习,根据自己的习惯优化,可先熟悉如何自定义创建工程模板,以后根据自己习惯调整。
2 n# h( x8 A- y( n! p$ r' W  n3 Q- l* ?
作者:攻城狮子黄 ' a+ k' p1 _  C' x2 m5 h$ I) o; }

- ~0 e" J0 w; w# q2 ^/ {! X; s" }
收藏 评论0 发布时间:2022-8-30 14:17

举报

0个回答

所属标签

相似分享

官网相关资源

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