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

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

[复制链接]
STMCU小助手 发布时间:2022-8-30 13:50
7.1 Keil创建工程模板
' F3 Y, _- F5 b  Y+ i- J, e在前面“C语言使用HAL库开发”章节里,体验了如何使用HAL快速开发。不同于使用汇编和寄存器开发,使用HAL库需要为工程准备许多相关文件,也就是创建HAL库的工程模板。工程模块没有统一的格式,通常是根据多年的开发经验和使用习惯总结出来的,以“5_程序源码\1_创建工程模板”为例,介绍如何一个工程模板是如何创建的。
5 Y+ v& I% ^% n% a! i- o. C
5 ^# F% m+ f. o3 v' ?如图 7.1.1 所示,一个工程包含五个文件夹,一个清理脚本,一个说明文本文件。
' }$ b) K0 r9 G/ U5 ~) _6 w7 n' o! q3 X2 j, |  V
~4A3%YE7E7S({90_3_K[A{N.png
0 V9 c( N* T7 c4 x
5 ^. W3 Y5 H8 G' N+ O3 j# h& Z0 u
图 7.1.1 工程模板文件夹

2 W' I* }' b- h2 h# V) G. _$ r" ]
4 ~; B) y, M" [$ t3 e5 w8 S
7 z7 V: m1 C3 t       各文件夹、文件说明如下:
; m! V8 ]1 W2 }
. F9 R  G1 A5 xCore:存放从SDK文件夹抽取的部分可能会修改的核心文件;2 u" q( n6 j- z8 |1 e, ^) h
( \' G: n* V$ w7 k. [' e0 B
Driver: 存放用户编写的外设驱动文件;2 J4 q) Y: J1 c: B8 _9 p- ]: {6 ?4 _
4 s% L* |5 f# G' j/ G
Main: 存放主函数文件;* F% g/ B; D$ i
7 N3 e  m. k; r, d
Project: 存放Keil工程文件,包含目标二进制文件;- {" s, N+ q& H7 ~6 S
) y+ G. y- z. f7 R
SDK:存放CMSIS和HAL库;3 D! M0 {8 W% V$ ^& @* D

5 y( J& w9 [2 Z( ]& w; F* @Clean.bat:Windows脚本,用于清理Project里Keil生成的工程文件;$ _0 u3 @7 y& {: d* o/ D! h
* m& c" n  W2 }6 b8 s5 j. ^" c
Readme.txt:该工程的说明信息;
6 M* G# [$ W1 N) L7 h
) ]& ~& S5 \6 u, y“SDK”目录的内容来自配套资料“2_原厂资料\7.0_en.stm32cubef1(原厂固件包示例源码).zip”,即里面“Drivers”目录下的“CMSIS”和“STM32F1xx_HAL_Driver”。4 {& H+ w) m) i+ g
' L/ a  s$ i$ X2 F( D1 M, B  l# T
“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_工程模板”的工程代码。
6 t: a7 N! n, b; x7 m) D9 c* L$ n1 X" j9 ]8 v2 f8 `' U$ K
“Driver”目录存放用户编写的外设驱动代码,比如LED灯驱动,这里示例不涉及外设,暂为空。
! d) `- i; d5 C9 Z4 U3 t& ~* q- r5 p
“Main”为存放主函数文件目录,创建“main.c”和“main.h” ,参考“1_工程模板”的工程代码。
2 X' y$ x: W4 g* ~2 R) v, Y7 H) d$ j6 O7 y5 w
“Project”用于存放工程文件,工程文件由创建Keil工程自动生成,这里打开Keil。
1 Z" V; ]' Q0 y, D
: p9 ]- S( y5 O4 P: p/ U/ G8 A& M! e' j4 V8 r  W+ w6 P

! [3 d& h& n& t! z1 z2 z- k9 y9 g* d; R打开Keil后,点击“Project”下的“New μVision Project”,如图 7.1.2 所示。2 X, j/ g8 K. f7 O/ w1 t
I6_F_}C`$OK546}{B}[Y`@H.png
/ y5 J: ?1 a/ P' \! T0 E# X
! W% l0 Q1 M2 P0 N2 d! s- k
图 7.1.2 创建Keil工程
; G2 K7 w9 S1 _; h, A

; I# E5 a5 r4 I9 ^$ F8 ?, H0 F/ E. Z. {: l* }; q& `$ s' _  u' f
随后在弹出的路径选择界面,选择“Project”目录,工程名字任意,假设这里为“Template”,如图 7.1.3所示。
  @5 X3 m- P9 n6 J# z
% X- F) G! A+ ~, ]1 `4 \
4~7W4KE2ZQASK0XTQQ_AK.png
" v) E) N/ C* e% B, J
# n* m' J3 E2 K  W* H1 q+ b! W
图 7.1.3 选择工程路径和设置工程名称

' _- R7 r, o' W+ D; y
5 T9 Q# Q8 }* `8 e$ q接着在设备选择界面的搜索框输入“STM32F103C8”,然后选择“STM32F103C8”,点击“OK”,如图 7.1.14 所示。
; W( s8 |# n0 a3 ?+ Q0 d# {6 w% h& j" U  M/ ]$ |9 r
13(SGZEYBA]ENT3ZQKD}M[7.png

5 N$ H- B, l. O- N8 ?# x) J+ E7 ]! e- ]+ y
图 7.1.4 选择设备型号

2 E, l- `; F* d5 b3 n. t随后弹出运行时环境(Run-Time Environment,RTE),目前用不到,直接选择“Cancel”,如图 7.1.5所示。
. X- [' C( p1 X0 j1 }& r# {  G/ G  @, g2 z+ G+ j1 L: c
66}$GH3JU`93$L)$WO7I.png

5 p" }: O4 p# ?! `
& a% e: L9 ]2 W- C$ M
图 7.1.5 管理RTE
9 K. _& h( B* t4 l0 g% e
接着进入主界面,点击“工程项目管理”按钮   ,为工程添加文件,如图 7.1.6 所示。
, R! a, l! t* p4 _) O( e6 F
& f* E# Q4 f* k# o
31M]GAQLTGEO8}SX7GSP}77.png
8 ?6 h; [! W! x4 ~9 _# R

2 ~: F6 t: E( c) O
图 7.1.6 工程项目管理按钮

9 g1 L2 H; Y( t8 e在工程项目管理界面,有三个窗口,分别是目标工程(Project Targets)、分组(Groups)、文件(Core)。双击“Project Targets”下的“Target 1”,可修改名字,这里改为“Template”,双击“Groups”下的“Source Groups 1”,改为“Core”,如图 7.1.7 所示。
# d7 D3 T& I/ k4 \# L- W# L2 b6 ]$ ]% ^, N: i! z- ]
_~NJNAEA6QV}[9WN6Y)A`}R.png

  x# F/ t# h9 f& d/ ~5 q: Z! }+ |  Z
图 7.1.7 工程项目管理界面
% X. r4 T. t/ P6 h2 C
接着选中“Core”,点击“Add Files…”,接着在弹出的文件选择界面,进入“Core”目录,然后需要修改“文件类型”下拉选择框为“All files(*.*)”,才能看到所有文件,如图 7.1.8 所示。" _( P, I* q, G+ b2 T1 W* Z: e

/ K4 k0 R6 t: }5 k3 r" t
8{~`34ACUNL5O8`WS$TA5Y5.png

0 e; \2 g5 K$ h+ @) Q3 b# K0 z, l# b
% z- G4 y' u$ l* v* O. w: \5 s) A+ q
图 7.1.8 选择所有文件类型
5 l5 e' N8 t' B4 r/ u+ P2 y6 X  X
0 b4 O- d/ j# H, D4 B& [
然后选中“startup_stm32f103xb.s”,点击“Add”,如此循环直至如图 7.1.9所示的五个文件全部加入“Core”。5 G9 }2 [( u7 M: B$ G) u

' o$ Z4 `7 \2 p7 f& T
CZWQE~$RSO(5O0~A44%ANOG.png
. m1 Y3 L. r0 {+ C( }. X; Y
6 ]5 c: p$ Z0 f) G8 b! M
图 7.1.9 选择加入Core的文件
- o) ^$ V) O4 ~6 H& M

& O: c( c) b1 L* ?" t再点击“Groups”的   新建图标,创建一个新的组,名为“Main”,如图 7.1.10 所示。
! w7 Z: i  ^4 H* X6 [
4 W- L, f* q& R
SP{H8O8N2]Q[I~)C2_G95.png

5 k9 T" l; }% U
. H, c! V, O% j1 q8 P
图 7.1.10 创建新组Main

( D. S% u! z# L/ W- j接着选中“Main”组后,点击“Add Files…”,选中“main.c”,再点击“Add”,如图 7.1.11 所示。: c* O. w, G* c+ V$ G

5 O8 F2 f( f) T1 f, [
2C8$Y())8NAPG{6S~4}TG~M.png
0 {* t: \4 h  ~1 t2 |
2 I3 W; x1 F2 l- C  L
图 7.1.11 选择加入Main的文件
3 m  d7 U9 S1 E6 X! d8 a/ w3 Y% x' G
再点击“Groups”的   新建图标,创建一个新的组,名为“Driver”,该组没有文件,无需添加。再新建“SDK”,加入“SDK\STM32F1xx_HAL_Driver\Src”下的几个必须文件,如图 7.1.12 所示。) J- `6 _5 ?, r- e# p+ g7 K
+ S' s! g* M% N5 U3 J2 ?/ D
}3M~]HMC4KG[HN4S2TH0]]Y.png

' ~; w7 C" f0 R% a  C1 l8 v* {# E9 R; }; K; l- I  e; z" o
图 7.1.12 选择加入Src的文件
/ }0 m6 Q; e! l0 [$ L7 L
所有文件添加完成后,效果如图 7.1.13 所示。
$ G0 d3 v! D) L% B/ J0 s4 Q
% F* N& a; i8 B% G
F]G4S{9`8G2GK4K0(M[LC16.png
! _0 }7 }; E" D

! V- F6 z1 l' X4 C4 y1 r' m
图 7.1.13 工程添加后各目录效果
& P7 S' M' S% n( g
按上图添加完后,点击“OK”保存,如图 7.1.14 所示。. y, u7 C1 f, J4 Q

2 _4 w4 o* S: Q5 T/ _8 M! H% I
[[V@E69Y8@TGL9KZ}CA)ELQ.png

; t1 S1 Y: K* ]% g+ L
: r5 ?6 W. k2 w: X
图 7.1.14 添加完成

2 Z- F: z+ d2 n+ O7 |接着进入主界面,点击“工程项目选项”按钮。
. a) U/ m7 v( ^) z
- s$ B  h" z* `  Z3 _1 R$ y
(VJ69O5~OM`38P3BH()@B[5.png
6 E: Z% x) s6 `* C2 W

" K6 H0 ]% |, L4 |" A  i$ \
图 7.1.15 工程项目选项按钮
# q* q$ r2 Y1 o( h: N# c
在弹出的窗口,选择“Target”标签,如图 7.1.16 所示。追求稳定,这里设置ARM交叉编译工具链为“Use default compiler version 5”。“Use MicroLIB”也可以勾选上,编译出来的文件占用资源会更小,也为后面调试串口实验提供printf。再下面是Flash和RAM的起始地址和大小,与前面图 6.1.4 所示的Flash和RAM是吻合的,这里无需修改。' |% ?; ^& @" @

2 e$ _9 v. w+ X* m1 _5 s
8$BJ11TQGHJ`3E2}4MGD7RF.png

! ?5 g7 |2 j% V' R" r: H' I5 P$ i1 V4 E) d4 K  l
图 7.1.16 Keil设置Target
9 d: O- X5 O+ |* N( Q$ `7 Y  P
切换到“Output”,勾选上“Create HEX File”,生成hex文件供其它烧写工具使用,如图 7.1.17 所示。
- o6 Q% L, A2 k6 q; R5 Y
- o0 z0 i4 Q9 O2 g( D9 k( Y% V7 K3 b
8[O2GHIWHA5T~I$R`34(][S.png
0 w, V$ l2 }: y, u

9 h- @% U3 _# a
图 7.1.17 Keil设置Output
) N( I  \- A3 q5 U  p, E: q1 a' w% _

) V0 {$ b% u. @; O3 y* I9 c  q; K5 o1 @' p/ m3 u
再切换到“C/C++”标签,在“Define”栏填入“USE_HAL_DRIVER,STM32F103xB”,分别表示使用HAL库,使用的芯片型号系列。HAL库很多C语言语法采用C99标准,这里需要勾选上“C99 Mode”,不然会编译报错。最后点击“Include Paths”最右边的按钮   添加头文件,如图 7.1.18 所示。4 `# c# ?- a3 X) t  M+ B$ `4 _

0 {0 P. Y8 a9 _0 H$ Q1 w在弹出的文件夹设置窗口,点击   按钮,依次添加如图 7.1.19 所示路径,最后点击“OK”。! {, S* x# _, L+ Z2 b
; \' c- B$ S2 F9 f
[6D)C[LN5R{FG~B4O)0[TZE.png

5 u* \7 Q5 V4 A' |6 P7 V2 u* G7 {
" _4 r: N$ v% I; ?0 n
图 7.1.18 Keil设置C/C++
/ j$ f+ d: p1 p7 a
- r3 A3 ?% T3 w- ?
5 M6 D& p# G9 U" B
$R$Y8456G8])GWYIX1F2`JS.png

3 c& b; c4 J5 r" b* H2 Z' j$ \. i: n5 X2 Z- h+ S- @' q
图 7.1.19 添加头文件路径

2 i$ r9 `- Y( `0 ~" W7 F切换到“Debug”标签,我们使用的ST-Link,因此需要选择“ST-Link Debugger”,最后点击“OK”,如图 7.1.20 所示。' U& {& \( d4 N. B* i
5 S! p/ Y: a" a9 T. v
61{8$[`3J0]X1Q)5GBMCV83.png
$ Y9 K1 I6 S$ L/ {# F

* d  @' V1 ^( K
图 7.1.20 Keil设置Debug

: z7 o& ]6 G2 ~
$ Y) U: C, `* [) D以上全部设置完后,点击编译,编译完后,点击下载(这里需连接ST-Link才能点击下载,否则使用100ASK_STM32F103_Tools的自动下载),出现如图 7.1.21 所示的红色下划线提示,即表示编译、烧写都正常(当前工程主函数没有任何内容,开发板无任何现象)。之后便可以,以此工程为模板,编辑main.c,向“Driver”添加外设驱动程序,进行开发。
8 W) |% h% f+ J  v9 ]1 I. d
9 k( f: ]% v5 V: a
}T4D~YZ6%~Z]1[8YEMYKT~M.png

1 _7 E6 x" L* @9 X% r7 K8 s8 d6 `) y9 q% u2 Y3 E. P
图 7.1.21 编译、下载测试

+ ~; N  T/ J* _) N5 @
. c. ]& R' g( f* T1 ~. T  a+ r8 I/ h! ^- n- w
【总结】3 Z, @* s* I) j8 m% r3 m1 A2 a* _
- e5 A3 ]3 k; _2 Y
工程模块的创建步骤如下:
% d) ]( G0 F+ v+ L
- @- m1 p( j, h( T" U* ~1. 创建相关文件夹;
, X! s6 T" r! ~  f1 |  P8 ?/ y; s% R( N. h3 m1 |
2. 复制CMSIS和HAL库;
0 `% A7 E* v. V0 ?
5 d1 Z* e/ T8 Z3 e, f3. 创建“main.c/h”和“stm32f1xx_clk.c/h”;
; T) Q7 e5 T" m6 F! O9 _) J0 P" T( \  s! U
4. 创建新Keil工程;( r( \- L/ D$ A) R: \* r+ E2 A

6 V% G" L: z" n; T+ d; U- w4 j5. 添加组文件夹和工程文件;
0 s! u# A8 i) r: Y$ i1 N
7 R! m+ u: S/ o2 p6. 配置Keil设置) v# C# A0 ^3 f! P
4 A8 C( D2 `. x% Y% Q, L

$ a" D- h9 n8 ^) L- F1 i! Z) \7 Z, z8 k
7.2 Keil常用设置3 a, v, I8 `: P9 A' l
除了上述基本设置外,还有一些设置可以方便日常使用。; e  H0 l2 ]* Z' B
# `0 Y2 R5 C- h6 G0 J2 h  g

- x* Z5 A6 _6 s1 `1.2.1 下载后自动运行程序
6 W2 i- ]- z) m$ LKeil默认在下载程序后,需要手动按下开发板复位才能启动程序。通过修改修改配置,可以下载后自动复位重启运行程序,方便调试。
0 q6 I% L, u% Q+ l+ w! p
* f. c  I7 u+ h% H& |) ^! q' J5 t" U点击“Optinos for Target…”按钮,切换到“Utilities”标签,点击“Settings”,如图 7.2.1 所示。- I) @( h" K# f2 _' ?- ~

& w# H1 z7 p! e2 f
67I4ANZW]P43$KU4){FY~RP.png
4 p5 \* D0 j- a" y4 ^
0 w+ ]9 v7 A- u# X
图 7.2.1 Keil设置Utilities

" I! d( v: J5 t& l( z* j, ^' _3 |# ~3 e# T  @' H7 K
随后弹出设置界面,切换到“Flash Download”标签,勾选上“Reset and Run”,如图 7.2.2 所示。接着再切换到“Pack”标签,去掉勾选“Enable”,如图 7.2.3 所示。
3 S' |) L, L! j3 c! O4 b$ H: r: E# t* a+ v
W)SNF]G05FX%{Z_}}QD]$]Q.png

% B% K# Y* v# R6 o3 k) H$ X( A1 `
, F" ?) `& M* j( L, b+ U6 ^5 y
图 7.2.2 设置自动运行1
4 l$ H+ w1 M  A  ^

" W# b& B! ~# @! @, L0 f5 o- O9 G& s; F1 U
ZDD}2DK]J(~GK9Y]T8)9.png
+ w4 |, F" x6 ~5 t; b6 F: ]
" Y( t' n; E4 T6 b
图 7.2.3设置自动运行2

6 G* G1 M/ B/ Y  Y3 @+ Q( M( D$ Z" v6 N, R8 T& X

- n  D  y" F0 I" w1 G5 C3 j1.2.2 生成Bin文件

. O7 t9 u  |( {2 }3 N0 c* Y1 {实际开发中,可能需要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 所示。
  v; t7 [4 T4 x" A9 @
8 z3 ^0 x2 ^6 F& \7 Z
J_`50U110ZZAO$UQ5Q0{EDB.png
8 O5 L' T6 X# y& o/ ?& U9 ]6 T' l

2 B9 @+ T/ }1 ]7 {0 @' P
图 7.2.4 设置生成bin文件

1 E. c6 |( Q* \3 S# ~1 u设置完成后,点击“OK”保存。重新编译整个工程,将在工程的“Project\Objects”目录下生成xx.bin文件(xx为工程名)。4 ?( r9 s( v8 N, Z

: G+ {% R6 I) w0 k3 @. Y3 U
& V6 J+ T: w7 f$ [( K1.2.3 字体编码等设置6 L$ I" Y$ R, Z( X
点击下图按钮,进入Keil设置界面,如图 7.2.5 所示。
: J5 @! q: N3 d* d* ]' D, N
: d9 a. q4 u' F
QYY%]6YURY`%TZ0%@2NB4@7.png

$ F; i3 E; Y; P: |4 C) ^6 r1 f; V4 {5 a2 u
图 7.2.5 Keil设置界面

! u4 H  z) C* L& ], j在“Editor”标签,字符编码选择“Chinese GB2312(Simplified)”,可以解决代码中中文注释乱码问题。在下方的“C/C++ Files:”的“Tab size:”设置为4,可以解决代码中缩进对齐问题,如图 7.2.6 所示。
, F  }6 g' W9 f4 j8 O
; L: Q) U3 E0 Q5 q1 I5 V6 `
LQ2T{G2QTN{WF8LT]7H%`~3.png
/ Q8 B; O0 u) F* z0 U& @" E
! q' q2 y% B# |5 m0 t: R' h
图 7.2.6 Keil设置Editor
# \3 B0 A$ F' N: r- `. T5 K5 X" d
然后切换到“Colors & Fonts”界面,选择“C/C++ Editor files”,可修改字体、数字、关键词等的字体样式、大小、颜色,如果没特殊需求,默认即可,如图 7.2.7 所示。& B/ y7 c: ^, K; L# m$ w. z

- @* H- e' v2 J7 p/ p5 r, r. ^
M5%``8P4JW5_VBJ1SU`LS.png
& t/ P- d& m$ E. W4 E) f% [

8 \2 _& v# Q" D2 ~" }: v
图 7.2.7 Keil设置Colors&Fonts
) V! t# u  e) o+ V2 B

: L4 W. `7 V  W
! B+ d% y) S7 N  S  Y, n: ~7.3 STM32CubeMX创建工程模板
, N) S* {6 Q9 b, t1 u, Y$ I7 A- l# rSTM32CubeMX是ST意法半导体推出的STM32系列芯片图形可视化配置工具,用户可以通过图形化向导为Cortex-M系列MCU生成初始化代码工程模板。8 j3 W: C0 z- r& N0 D" q2 c
0 \- U; F* T; L3 f" z
相较于Keil创建工程模板,STM32CubeMX步骤少、上手快,但生成的工程模板比较臃肿,因此本小结只简单介绍下相关创建操作,后面的实验仍使用前面自定义创建工程模板。读者也无需纠结使用哪一种方法,以后熟悉后,自然知道修改哪些内容,在两种方式之间任意转换。
7 A& t- J& u1 ^( e* Z9 j9 w1 e8 w/ V$ D) q" h
从ST官网下载STM32CubeMX,解压、安装、打开。首次运行会自动下载更新文件,待更新完成,点击“ACCESS TO MCU SELECTOR”通过选择芯片创建工程,如图 7.3.1 所示。
1 B6 Z8 h0 d6 F: i8 _( J4 m+ H# c; y4 ?! ~8 U
}MB3S@CIYVKV$)BDYMXMIY2.png

) r* e8 Q' C/ y+ B! s  u* P) }2 ?( n' R7 \9 `" f- E
图 7.3.1 通过选择芯片创建工程
' L$ E) M& s" S' i* P

9 ]% ?! I& A: x/ v随后在搜索框输入“STM32F103C8”,右边选择“LQFP48”封装,最后点击“Start Project”,开始创建工程,如图 7.3.2 所示。3 V$ A& ^1 m" q1 x! L

8 z' R% Q+ ?! X  Z4 T4 O
THA09BNS~N%_I8{UA[Y25.png
& {- \  i. ^% M
  D! ^& H/ v  H( {' O
图 7.3.2 选择芯片型号
7 f- d4 W1 B$ L& c
随后进入引脚配置界面,该界面可以图形化选择芯片引脚并配置,如图 7.3.3 所示,这里就不展开叙述,感兴趣的读者可以网上搜索下资料,比较简单。, M, d" z  a5 j( H! w
0 B# {  v! q% o3 R, T
VJJ)%]Z%Z4X9PKSL$J5N_{3.png

  g9 j. K+ e  u" u0 `, C" Y. |% X' ]! u2 F/ T# z
图 7.3.3 引脚配置

7 T$ b5 G$ K, E5 r. `! Z  i! d点击“Clock Configuration”进入时钟配置界面,如图 7.3.4 所示,在该界面可以图形化的配置时钟来源、倍频、分频等,这里也不展开介绍。5 z: n' |8 ]4 T+ r! x
( P; t* V" B$ R  B1 n. e
TWO1}ZWX`VR}$P]RX96T~[C.png
. D7 x' o$ S8 m
2 y8 C% n5 ~! @4 K/ K- Y% ^$ }9 s
图 7.3.4 时钟配置

" t. S' u7 c' x8 P* V6 }点击“Project Manager”进入工程管理界面,如图 7.3.5 所示,在该界面先设置工程名字,再设置导出目标IDE为“MDK-ARM”,版本默认V5.27。2 E' e) X1 _& m4 I( g& `# f

3 R* P# v3 [, t5 x  e) G& a: |8 y
0L~WCJF]AW[7EV)1~{Z`33U.png
2 t! N1 A7 c) p% Q/ m  j( G
+ y. r0 ]5 I) O# j' B
图 7.3.5 工程管理界面

+ M) [2 `9 R6 k- ~- z: o* O' U再点击“Code Generator”,勾选如图 7.3.6 所示,最后点击“GENERATE CODE”。( w+ `& a) P5 x. I: N: x% ~  k
" p! j$ E' _9 U: X3 y8 |
@36AKES]]%}O$`@)B7UL(N6.png
4 `* E9 o$ T1 V1 C, Q0 I
6 d3 m) p9 e  r% d
图 7.3.6 设置生成代码样式

& d& f* f) l% Y待代码生成完后,出现如图 7.3.7 所示提示,点击“Open Project”打开工程。" K# w4 E! Z) ?2 d0 X1 n% j
  e4 u( {& d" V
6$D{L2LL1LVME@HH`9ZG.png

4 q6 [% ]. u/ C  z! O
3 X+ ~4 v& F1 P6 ~1 s
图 7.3.7 打开工程
' J- x6 {$ X! I+ W
/ A" v6 Q6 j& t9 Q. Z5 s$ }' Z7 }- i7 f3 d
9 P: a/ f/ D+ d! U
随后,将使用Keil自动打开工程,点击编译测试,编译成功,没有错误,如图 7.3.8 所示。以后用户只需要在“main()”里添加代码内容即可。/ L7 C8 Q2 O- N5 L, E9 J$ ?
9 f8 x* |$ T5 e# Z' c
I$VG2QEOH1U5(J[2[GO$F1F.png
$ s) V) @% j9 Z5 f- f
) q5 O& U( t1 j0 m0 g" }/ k2 B4 Z: d
图 7.3.8 编译测试
& m5 O0 P4 c6 Z3 J% ?$ n! k
$ Y* ]" {4 ^  T0 |/ t) M
" J/ p5 u/ S* z- @. G
【总结】
! R+ ?8 u' E" o% f1 q. I' i
% f  H" q7 }) y. d0 `% H: g使用STM32CubeMX创建工程,非常的便利。但同时也限制了用户对工程的调整,代码内容、注释也臃肿。如果用户需要快速搭建工程环境,STM32CubeMX是一个非常不错的选择;如果想深入学习,根据自己的习惯优化,可先熟悉如何自定义创建工程模板,以后根据自己习惯调整。 4 P9 D' n, `3 ~) ?  z
; D  \  I! M9 R+ w0 f& K5 i
作者:攻城狮子黄 % N/ ]/ b$ ~2 X: i

/ P2 D) p4 x* r4 |4 y* L2 G7 k7 Y, o
赞 收藏 评论0 发布时间:2022-8-30 13:50

举报

0个回答

所属标签

相似技术帖

官网相关资源

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