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

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

[复制链接]
STMCU小助手 发布时间:2022-8-30 14:17
7.1 Keil创建工程模板
( j% ?) g7 D4 ?3 i" q在前面“C语言使用HAL库开发”章节里,体验了如何使用HAL快速开发。不同于使用汇编和寄存器开发,使用HAL库需要为工程准备许多相关文件,也就是创建HAL库的工程模板。工程模块没有统一的格式,通常是根据多年的开发经验和使用习惯总结出来的,以“5_程序源码\1_创建工程模板”为例,介绍如何一个工程模板是如何创建的。
* w+ |9 H9 M: S# e  g6 x% ?) b7 [3 b
如图 7.1.1 所示,一个工程包含五个文件夹,一个清理脚本,一个说明文本文件。
* c& u1 p9 P) K8 S( ~
3 N: m/ A  x8 T2 A
[F0PJ3B(~7@X6Q}WP(GT.png
* G; W2 ]2 V' U" D

. z( C9 c# r- J% k  l4 `9 P
图 7.1.1 工程模板文件夹
, u* ~& A+ Y, D% e: p

( B3 x( K% j9 ~5 ]1 j
* e9 l- A) i; g: E7 b! A7 P& Z6 c8 [       各文件夹、文件说明如下:3 @" I6 D1 s$ O$ r- Z
  q5 B  u8 X% T
Core:存放从SDK文件夹抽取的部分可能会修改的核心文件;: O" y1 b* t7 Y, w6 x+ @

$ p; F& L5 B* v* q- a( ?Driver: 存放用户编写的外设驱动文件;* k+ l! N7 Q! i/ ?2 i
3 a- A: b0 ]( x- j
Main: 存放主函数文件;
/ }/ V% C) z# r( w; E/ I! e; L, _+ m* k
Project: 存放Keil工程文件,包含目标二进制文件;
2 t2 I$ y& h* E, ~& f7 c$ Z  ?( z  N0 i9 M1 _2 I
SDK:存放CMSIS和HAL库;0 @  f* `3 C+ k

. g  a! U9 K# {; Q) cClean.bat:Windows脚本,用于清理Project里Keil生成的工程文件;0 _/ ?) k3 b0 ]1 u8 L

1 {' h8 L' R" w4 }/ SReadme.txt:该工程的说明信息;
3 H8 f* G1 C6 V5 S4 G! a
7 ^* r# P) B0 g4 N- D' i) x“SDK”目录的内容来自配套资料“2_原厂资料\7.0_en.stm32cubef1(原厂固件包示例源码).zip”,即里面“Drivers”目录下的“CMSIS”和“STM32F1xx_HAL_Driver”。& |7 C" M' k: @+ X% E; H0 `  ?2 h

+ q' U- i- \$ e& Z& g+ t2 S“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_工程模板”的工程代码。! u' P' B0 d( U% k+ q. |* V
- J' [5 e. A! s( c4 ]* ?" V5 s
“Driver”目录存放用户编写的外设驱动代码,比如LED灯驱动,这里示例不涉及外设,暂为空。
. F5 H5 G7 F1 y$ w4 ~" k% J
9 J' y# v$ s7 g) S! K6 K; P$ p“Main”为存放主函数文件目录,创建“main.c”和“main.h” ,参考“1_工程模板”的工程代码。; ^0 i0 U( y* y# g

3 V/ n+ P) m4 w$ s' k0 v1 k“Project”用于存放工程文件,工程文件由创建Keil工程自动生成,这里打开Keil。! t' O8 f* k! ?' v1 Z
3 ?4 @; }0 S: l' h+ p

% X3 S( i% L& I5 k! L/ o, r  O7 j& O! B
打开Keil后,点击“Project”下的“New μVision Project”,如图 7.1.2 所示。5 i" G0 [) ^: P$ F  E2 H
X3(37WI5AR44`2%~RS2{C.png

+ w9 G7 d3 [4 r6 v! i3 ]" g" P) G1 ^& f( a) P8 w1 z
图 7.1.2 创建Keil工程

: |# Q, ^; w; R9 T- p随后在弹出的路径选择界面,选择“Project”目录,工程名字任意,假设这里为“Template”,如图 7.1.3所示。
. X" _2 z  y& _. c2 Y7 D( n' h. n0 K+ u7 d6 i3 O  n! t) P) \
$HSI%TJR5[}GNZ]}0Z68WIJ.png

- t% N( ?& v8 w% t# C, s; J. E
& g4 m- X# D5 F/ F* @7 |% K
图 7.1.3 选择工程路径和设置工程名称
6 z! Z# O4 e4 R# i2 k' z# |
接着在设备选择界面的搜索框输入“STM32F103C8”,然后选择“STM32F103C8”,点击“OK”,如图 7.1.14 所示。
0 ]$ ]; E0 n7 C7 I  x* D% F
( u; p. C: I' m5 C8 Z2 ^
43KFVTXPR8YBAU{GOM$P652.png

+ |4 n5 L. j4 y8 t% L; q2 B# u, u, R- Q5 l) n: P/ Q7 v+ |
图 7.1.4 选择设备型号

; _8 \- d  p2 `2 K' X随后弹出运行时环境(Run-Time Environment,RTE),目前用不到,直接选择“Cancel”,如图 7.1.5所示。& X0 _5 W! I- X2 {' |7 E- @, O
  w4 s) C/ j% g- A  r
KZR6NU7@4U9]EEW4U]%$LXL.png
2 l- ^  j$ e% Z
2 U  B9 D! Y; w1 [! o- R: `
图 7.1.5 管理RTE

- a4 H, d) p) x9 e8 K$ h2 h接着进入主界面,点击“工程项目管理”按钮   ,为工程添加文件,如图 7.1.6 所示。
# J3 |6 F+ X/ s
2 Y- c! g! g1 ]9 m
D2U{OEUR@R$)F7]X~M`VZ)Y.png

$ L& q# X( [6 k4 S
! Y2 ~, A, L8 l  {) @) c0 b$ `: Y
图 7.1.6 工程项目管理按钮

$ l1 u1 |- E0 s% Z3 }4 l. [在工程项目管理界面,有三个窗口,分别是目标工程(Project Targets)、分组(Groups)、文件(Core)。双击“Project Targets”下的“Target 1”,可修改名字,这里改为“Template”,双击“Groups”下的“Source Groups 1”,改为“Core”,如图 7.1.7 所示。
5 ?* C, B5 q! S1 n
, v3 [% q" I! s- Q' x$ N0 Z2 f% }
XIT(C42@S7~ON]IU4V3_}QW.png

3 w6 ]7 N, \0 ?/ j# u
, P* [( i( u6 ~  r( w
图 7.1.7 工程项目管理界面

/ ?0 `, n/ c8 G接着选中“Core”,点击“Add Files…”,接着在弹出的文件选择界面,进入“Core”目录,然后需要修改“文件类型”下拉选择框为“All files(*.*)”,才能看到所有文件,如图 7.1.8 所示。8 Y8 Y- H  a3 ^
1 c+ T  V  R+ G  t
P`FDF@T2`M)8UHTL9D(H]B1.png
5 x9 y. J% N, i5 s1 V* [! w. h

9 A1 U! ^$ @. w. o, z
图 7.1.8 选择所有文件类型

5 e! c  ?% i2 _  A4 ~然后选中“startup_stm32f103xb.s”,点击“Add”,如此循环直至如图 7.1.9所示的五个文件全部加入“Core”。
+ J" R! \4 g9 M( q2 w9 d! w0 J/ `1 p) f; R$ F6 x4 h& }* V% N9 ^: B
X_B%}0_IYB[8%@PWKXGGW.png
: u; c3 K2 q) H

1 _$ X, e4 S- E- o5 ~
图 7.1.9 选择加入Core的文件

. F/ E, |. M6 ~- W; j2 a- r% z再点击“Groups”的   新建图标,创建一个新的组,名为“Main”,如图 7.1.10 所示。
! G% R( T; E% {6 ]8 h. b1 f
6 `* m/ ]7 W  Q; C
X]3P5_9CS@JRVHMW{@CAZ`3.png

5 L! i  T3 P/ m5 }- J1 I
" K- S0 ^6 I  H% [9 ^
图 7.1.10 创建新组Main
  F5 ~1 }' O" X
接着选中“Main”组后,点击“Add Files…”,选中“main.c”,再点击“Add”,如图 7.1.11 所示。/ U& ]( ~# F2 S6 y/ K8 v
5 F" m! ^8 m0 L! ~
SQ31ZKV56(~ASSFZMQ_Y86R.png

" y: {$ ?8 T" ?6 t' r; F, k2 y, ^0 U5 f: G7 H& _0 B
图 7.1.11 选择加入Main的文件

! `( N3 A8 O: \, K再点击“Groups”的   新建图标,创建一个新的组,名为“Driver”,该组没有文件,无需添加。再新建“SDK”,加入“SDK\STM32F1xx_HAL_Driver\Src”下的几个必须文件,如图 7.1.12 所示。
  C4 u9 U3 @1 g8 o8 ^% j& }) E& m3 K$ ]4 |, T  z( B& b
NCI3Z_VZ{UZ05C4D%6X8ASD.png

' O* G8 ?' Z! j2 D0 A& `
# ?; E# u* l; N7 W
图 7.1.12 选择加入Src的文件
( X! ~( G: {7 s/ n* U* G& @# N, v
所有文件添加完成后,效果如图 7.1.13 所示。5 {  C; [/ n& n; i

( l6 c) ]0 \# t& T) _1 Y( ]
IIC3WH8%3U`P3GS~[I2}5T6.png
& [" p5 L  J. Y( [
7 j% n0 a# _, X/ T. n
图 7.1.13 工程添加后各目录效果
+ ~" V1 E9 y1 E+ x) a
按上图添加完后,点击“OK”保存,如图 7.1.14 所示。( w$ F2 v& u0 V  `

- L$ \% w: w8 a7 q$ Y. b
L_UMBJOW_83}HULU5_V1`%R.png
3 f( u* t( u  b5 ?8 P7 t" U

9 P, h  L6 I" K9 X* r9 A( f& a
图 7.1.14 添加完成
  H  K4 d# I) C
接着进入主界面,点击“工程项目选项”按钮。
3 l8 H7 a4 p- C! L) Z" {
# k2 I' S2 j% V! M, A. {7 e* G
LNLU0{[EM}KK0NQUA6S1.png
2 r+ \3 i8 U* I# Z1 q

. u2 q3 w0 {$ {2 r
图 7.1.15 工程项目选项按钮

6 I& |, ?* y( i0 _4 y在弹出的窗口,选择“Target”标签,如图 7.1.16 所示。追求稳定,这里设置ARM交叉编译工具链为“Use default compiler version 5”。“Use MicroLIB”也可以勾选上,编译出来的文件占用资源会更小,也为后面调试串口实验提供printf。再下面是Flash和RAM的起始地址和大小,与前面图 6.1.4 所示的Flash和RAM是吻合的,这里无需修改。" |3 T% a. p3 J/ B, j, E* m
, a8 o4 x9 l1 P$ f7 s1 j
{6ALJ73FIUO9G`II(A%@FWW.png
! I/ l2 c$ Q/ v7 r2 z6 L

+ v6 L3 Z3 D/ S. z, p- d. Q
图 7.1.16 Keil设置Target
" e9 _0 a+ S+ w! ~" A" b& B& G
切换到“Output”,勾选上“Create HEX File”,生成hex文件供其它烧写工具使用,如图 7.1.17 所示。
4 m# ]8 J" ?8 Y, s
: U% u4 W% d! W5 F' Y1 `1 q
~E9X2Y{HX80OF8AO`H3TV5S.png

6 ^1 H+ I6 E; E6 U- X
$ {0 x; S* U, i1 X. v: S
图 7.1.17 Keil设置Output

% x1 q  J+ s  j再切换到“C/C++”标签,在“Define”栏填入“USE_HAL_DRIVER,STM32F103xB”,分别表示使用HAL库,使用的芯片型号系列。HAL库很多C语言语法采用C99标准,这里需要勾选上“C99 Mode”,不然会编译报错。最后点击“Include Paths”最右边的按钮   添加头文件,如图 7.1.18 所示。8 Y$ }/ K6 o7 n4 ?6 k& o: h$ T2 {9 M
5 y) |" ^( K7 |4 P7 y
在弹出的文件夹设置窗口,点击   按钮,依次添加如图 7.1.19 所示路径,最后点击“OK”。
+ ]! t+ \/ }& ?: @! h1 `% ^6 O" L& h6 o9 Z1 H. D
_9RMN7H0P95[J{K2~X8D1N5.png
" P$ A3 O" J, F

! ?* E! [% }: c7 D0 f# i& M$ t
图 7.1.18 Keil设置C/C++
0 S: f7 v# u) O9 B1 g' z, O9 ]
3 Z6 Z/ u" o2 M. I' f

9 `& Y' A& B6 ~* }2 C. h0 o
KTBAOG8Q)CXE)KH}T4{_)Y3.png

5 H% i0 U; M" [9 e3 j" n3 I* d' Y' _- ^, S* G  @' W) I% O
图 7.1.19 添加头文件路径
# S% J+ g* e7 G4 F* u2 Q
切换到“Debug”标签,我们使用的ST-Link,因此需要选择“ST-Link Debugger”,最后点击“OK”,如图 7.1.20 所示。. |$ Z# l6 m6 n9 a4 n1 H" O
( n4 O6 X; Q; z' _/ X, o
$E{DSU6UAKOF69}E18@V1{W.png

% c# M- A1 l8 l. E. n5 f7 \, I: S$ v
! ~5 M0 m4 O8 n/ k3 ?' n
图 7.1.20 Keil设置Debug
8 d3 [* K  k$ U2 u1 w
以上全部设置完后,点击编译,编译完后,点击下载(这里需连接ST-Link才能点击下载,否则使用100ASK_STM32F103_Tools的自动下载),出现如图 7.1.21 所示的红色下划线提示,即表示编译、烧写都正常(当前工程主函数没有任何内容,开发板无任何现象)。之后便可以,以此工程为模板,编辑main.c,向“Driver”添加外设驱动程序,进行开发。
- g/ _6 i3 O9 i# b4 |; l% d+ w( w& L3 E; q& i7 S, c0 n
5%3_3M([XE6JUGP$}5~9XXD.png

# m8 |7 O. ^9 `* A8 G5 a- a0 F, E/ W  ~( I" A8 p+ E5 O$ v
图 7.1.21 编译、下载测试

$ B+ O9 j9 r# r  b$ j1 Q& `
, }1 L, Y0 R6 K" _) ~
$ E& i% a' Z& L! K; @【总结】- Y" Q) Q* y" q0 J3 B' t: g

+ E; S3 D6 H, S! p; D6 L工程模块的创建步骤如下:- \3 D0 \- f1 y& n" k
2 k* j  Q+ d' @3 c, e
1. 创建相关文件夹;
+ }# e4 V: i/ @1 U& }/ b, f: ~0 D: i9 q5 B' i3 C$ T9 a3 g
2. 复制CMSIS和HAL库;* w+ D$ \) X6 m0 s
) p& g" p! x2 P- ?  t7 |
3. 创建“main.c/h”和“stm32f1xx_clk.c/h”;( E0 X7 K; X: L1 L3 K( h

/ I: _) l7 f! \1 g2 x4. 创建新Keil工程;. L( z9 U& Z- i. z

/ a) s( @" i+ ~: s' q1 [5. 添加组文件夹和工程文件;
$ n) s% v* b. K8 a( R4 `5 \2 \0 m/ n
6. 配置Keil设置
/ \0 u3 s5 g5 t( _- O8 R( c+ u
; r5 l' I8 T* G* s+ n. s4 x! F+ t3 h; \
- e+ Q: r" |8 l" |4 h3 R/ a! H" B
7.2 Keil常用设置
% x6 _( \4 L3 Y1 h& J' D4 B( C* P除了上述基本设置外,还有一些设置可以方便日常使用。3 e0 q$ }4 S: K6 x

) W* A$ `: l  h) ^- r* o, e3 n1.2.1 下载后自动运行程序
& v- ]2 D* U- _% x% D1 e2 ?' `Keil默认在下载程序后,需要手动按下开发板复位才能启动程序。通过修改修改配置,可以下载后自动复位重启运行程序,方便调试。0 `" f' i: f4 M* K6 J; R
5 ]1 q$ h9 B" H/ l/ u7 _' I* U
点击“Optinos for Target…”按钮,切换到“Utilities”标签,点击“Settings”,如图 7.2.1 所示。& p6 k& p. ]  ?5 w9 a/ |
0 W* }) o6 L, p1 M$ Y
`DXFNKM81O@H@WUMEPNL]BY.png
  N6 E: F7 D+ O% Q5 w

# s. ^$ N; Y9 e: Z- ]6 B
图 7.2.1 Keil设置Utilities

! K' x- @5 g2 p; X8 d2 e' O3 ^3 ^随后弹出设置界面,切换到“Flash Download”标签,勾选上“Reset and Run”,如图 7.2.2 所示。接着再切换到“Pack”标签,去掉勾选“Enable”,如图 7.2.3 所示。, X8 ]. W1 |/ t, J/ B* O

; J6 |8 w1 B; G  B& P4 K  @: H: L
_L4]V@J3I[1$(OWCXIA(U49.png

0 O% ]$ F9 c8 l- e$ m
3 s) C! }# F, p" ?& H
图 7.2.2 设置自动运行1

/ h! q2 c# d; ~
" D3 E: E' t& a& F( d2 C/ k1 S  E0 u; [' h# \  w
O51(CR8$}NH~9K4WD`7`L{U.png

- l' X3 _6 G- \2 D3 v6 i( `7 J9 R" G
1 P5 @4 M0 r" l; D! \/ X
图 7.2.3设置自动运行2
0 X7 c& b- ^' y. ^5 ^

; C  l$ {1 p2 C# g  `6 f% k  r0 ?0 w) o2 \
1.2.2 生成Bin文件
  C1 C; Q1 F& g  C0 M  D0 {) R5 }
实际开发中,可能需要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 所示。4 J2 j  I; s$ v: _$ u! q! n
. Y' k) u3 Y+ a6 V: v$ i
~8CZ]8ZQ}1}]N11$C)$KY]6.png
" G6 y/ T% M  ?( J/ p
, b* P# Y8 q2 ?- \3 M7 S. X
图 7.2.4 设置生成bin文件
0 F2 v' a8 u" A% m5 x& L0 y  z9 T
设置完成后,点击“OK”保存。重新编译整个工程,将在工程的“Project\Objects”目录下生成xx.bin文件(xx为工程名)。
! k. i" f6 t2 \1 D3 O9 j( O: o+ d: s1 M! `) S6 \- `! @
/ Y4 i) E( I+ z5 e/ C
1.2.3 字体编码等设置: _) ~! g7 N' f2 ~3 H
点击下图按钮,进入Keil设置界面,如图 7.2.5 所示。8 ?* T3 M. G  ~, m: l' e. d

: F  D. x' p5 Z' M; X+ V1 n
TE[VJ$B4]CS_B25M}N1R9]4.png
/ ]3 O" S4 g- a

/ \5 G6 H, C4 `9 Y# Y9 t
图 7.2.5 Keil设置界面
0 z, v  y1 ]; k& L! `
在“Editor”标签,字符编码选择“Chinese GB2312(Simplified)”,可以解决代码中中文注释乱码问题。在下方的“C/C++ Files:”的“Tab size:”设置为4,可以解决代码中缩进对齐问题,如图 7.2.6 所示。
. [5 ?: T& B& r: |' c) ?+ h, Y
I7[S1IRL0Y7M`B5NEOPL4.png
$ h- V; Y+ @+ [) M- S5 V
2 h( Q. q# f  }% o6 n9 I3 g2 K- O8 W
图 7.2.6 Keil设置Editor
; N  A  t1 a; W1 {- y
然后切换到“Colors & Fonts”界面,选择“C/C++ Editor files”,可修改字体、数字、关键词等的字体样式、大小、颜色,如果没特殊需求,默认即可,如图 7.2.7 所示。% Q3 L, E( l1 Y6 O" ~1 p

( G% J" ^$ p0 I! m, N9 h8 g
QQ26D]H%VH}][A69Z{)SEW1.png

& A$ ]' v, N7 F3 k" Z5 V/ i/ b0 ]/ n3 F, l
图 7.2.7 Keil设置Colors&Fonts

- u! X7 Q8 O! ]/ @" T" U6 \( q& N9 z) F6 L: k) o2 _: _

! o- z4 z( i' B) k3 x6 x7.3 STM32CubeMX创建工程模板
6 n: \: I5 K0 r5 Y% _. S8 }- v4 ^
STM32CubeMX是ST意法半导体推出的STM32系列芯片图形可视化配置工具,用户可以通过图形化向导为Cortex-M系列MCU生成初始化代码工程模板。. t( E2 B/ M' M8 e; T

7 ?( A- z/ m0 U0 f相较于Keil创建工程模板,STM32CubeMX步骤少、上手快,但生成的工程模板比较臃肿,因此本小结只简单介绍下相关创建操作,后面的实验仍使用前面自定义创建工程模板。读者也无需纠结使用哪一种方法,以后熟悉后,自然知道修改哪些内容,在两种方式之间任意转换。+ a! S: B, M. F9 M- p8 M% d

7 E% ^  \) u, V3 l; A7 v9 D" [% f从ST官网下载STM32CubeMX,解压、安装、打开。首次运行会自动下载更新文件,待更新完成,点击“ACCESS TO MCU SELECTOR”通过选择芯片创建工程,如图 7.3.1 所示。9 f3 T5 w0 k2 C% [" z( ~2 i

$ @$ M1 F. L4 m- o. ^
D)9BS~9EY$X7(FL{(4M)JNA.png
+ \9 o0 n  ~: x9 {1 T" {

# O' _0 P2 \5 I" F2 G% J2 z
图 7.3.1 通过选择芯片创建工程

! @8 @, L' I7 m( K- m$ X8 h( c随后在搜索框输入“STM32F103C8”,右边选择“LQFP48”封装,最后点击“Start Project”,开始创建工程,如图 7.3.2 所示。3 g3 w& b  }( O- f/ M

( `9 H/ s+ W8 _7 s; u% S
J@57CU9C2B@~Q)A`6_TNOM3.png

! w6 G* Y) Q' O1 y8 a0 p9 @1 r' y( \9 H2 x) H
图 7.3.2 选择芯片型号
# @' p2 }1 O# q2 G9 h! c
随后进入引脚配置界面,该界面可以图形化选择芯片引脚并配置,如图 7.3.3 所示,这里就不展开叙述,感兴趣的读者可以网上搜索下资料,比较简单。# j  l$ L: `+ G: s/ T* u
5 r# z, s, t# [! z( G
Z(X49[VJ(2_0_%)XJKTL)8O.png

5 Y/ _6 Y8 g# ~6 f- D" w. w9 B' j1 Y
图 7.3.3 引脚配置

. }9 @% U9 r. P2 P- E3 p4 ]& t点击“Clock Configuration”进入时钟配置界面,如图 7.3.4 所示,在该界面可以图形化的配置时钟来源、倍频、分频等,这里也不展开介绍。
# ?, L' d! x' i' J5 n( D: q
7 c# C3 {! g  J; a/ @* l$ ?
ZCD[KUS0SP@)M~9K]S8AY~U.png
# C( Z, R* z6 X: g6 _& x

& o- P: r5 K% I, N2 u
图 7.3.4 时钟配置
( [  c! q" s& ^; w: ~8 A
点击“Project Manager”进入工程管理界面,如图 7.3.5 所示,在该界面先设置工程名字,再设置导出目标IDE为“MDK-ARM”,版本默认V5.27。* S" f( {- M& v9 B7 @$ q

5 f4 g) r+ t& O
{_MLKMI9DV5C}]%]E@_4X2P.png

( O$ R0 r3 g/ V! a1 A$ S0 e: _0 h3 b/ R: v0 H7 [
图 7.3.5 工程管理界面

" Z; m$ M+ K$ g. U4 r* ^, ]再点击“Code Generator”,勾选如图 7.3.6 所示,最后点击“GENERATE CODE”。- o$ r4 B! R! u" C8 |2 [
& m% E# F/ i* K- o2 r7 r" i; |' v
`KLRBP{UA%~ME]6S~1P0(WK.png

( v4 j$ ~0 M6 B1 w/ R4 q. n, L  Q7 Z
图 7.3.6 设置生成代码样式
5 t- p0 ^- p9 T+ \
待代码生成完后,出现如图 7.3.7 所示提示,点击“Open Project”打开工程。6 B0 c' c$ Y" p4 E; x$ h
' k, e! y4 H( J
T%NHX](M]}1ZOBJJJJ6PX`K.png

3 P. e0 o' H& P! U5 |" t  f  Q9 ]0 t. S1 }" u: f% x
图 7.3.7 打开工程

3 c; s4 Z8 u$ u$ L4 H) l随后,将使用Keil自动打开工程,点击编译测试,编译成功,没有错误,如图 7.3.8 所示。以后用户只需要在“main()”里添加代码内容即可。8 [" y/ M9 b! k& F

" O; x' L# S' V- Q. f0 Q
D54G)HUR`$$LE)U5VP3JT29.png
$ E1 m& K6 h4 l* u( }1 s+ N4 o

8 C5 Y2 p* t. @% }& [/ Z
图 7.3.8 编译测试
9 N& V2 ?/ m# c7 y9 C' h; B8 z
0 T: U, H% A7 ^: Z" t
6 n' v6 o9 E+ ]8 g, R+ u% e5 l
【总结】

8 w. C0 {3 B& y: B8 {& z, i, _, G( |( ]
使用STM32CubeMX创建工程,非常的便利。但同时也限制了用户对工程的调整,代码内容、注释也臃肿。如果用户需要快速搭建工程环境,STM32CubeMX是一个非常不错的选择;如果想深入学习,根据自己的习惯优化,可先熟悉如何自定义创建工程模板,以后根据自己习惯调整。
1 f: S0 L$ z$ B1 `. e2 d0 j" D3 e+ a  m! B7 N1 ^. X+ A9 f
作者:攻城狮子黄 & U1 T4 `7 n8 I  K
& d, G8 ]" _* n4 L4 n
6 v. ~5 s6 A9 j9 i/ c" y
收藏 评论0 发布时间:2022-8-30 14:17

举报

0个回答

所属标签

相似分享

官网相关资源

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