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

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

[复制链接]
STMCU小助手 发布时间:2022-8-30 14:17
7.1 Keil创建工程模板* R0 w: K8 Q- p/ L
在前面“C语言使用HAL库开发”章节里,体验了如何使用HAL快速开发。不同于使用汇编和寄存器开发,使用HAL库需要为工程准备许多相关文件,也就是创建HAL库的工程模板。工程模块没有统一的格式,通常是根据多年的开发经验和使用习惯总结出来的,以“5_程序源码\1_创建工程模板”为例,介绍如何一个工程模板是如何创建的。# X; d+ }/ S2 \# u& E  w  k& K
  [, N- C* c+ b( J
如图 7.1.1 所示,一个工程包含五个文件夹,一个清理脚本,一个说明文本文件。
$ n- u  u4 m1 S' Y6 }" z( r6 l1 @$ q- C$ u
[F0PJ3B(~7@X6Q}WP(GT.png

' n$ [" s$ J! [$ K/ A% R& A# \
8 O! g0 [. r% l" A9 Z2 k- l
图 7.1.1 工程模板文件夹
! D; c: c+ i% G' F

: L9 S/ c* h& O
& \- n5 R* @. Z" v! i       各文件夹、文件说明如下:7 S0 W" h+ e: O9 a

) E$ ~8 s3 W+ V2 e3 ]' ^; |Core:存放从SDK文件夹抽取的部分可能会修改的核心文件;( q: x& v" X# [! n

( @) [" N: H1 Y: R  u* kDriver: 存放用户编写的外设驱动文件;
" K6 A4 T2 n5 {- w# r2 Z. u6 v% q  L9 A8 o
Main: 存放主函数文件;
  u3 l+ m' j# I0 g/ I2 K& L& Z+ y$ T
- c, m' U+ b( _* }Project: 存放Keil工程文件,包含目标二进制文件;0 X$ A4 E  q. O: L

$ b$ B! ]" @+ T5 `1 N' x5 _SDK:存放CMSIS和HAL库;
0 y5 t$ R6 a. Z7 o4 Y% \/ n
0 V+ l' K  ^+ D6 u; XClean.bat:Windows脚本,用于清理Project里Keil生成的工程文件;7 m  R5 t9 s# J3 [0 F

0 `: `& S: ?/ U- y+ CReadme.txt:该工程的说明信息;
* e, N6 N; M# K) A5 K' b) h! J1 |
0 q/ v# m  |6 E$ K“SDK”目录的内容来自配套资料“2_原厂资料\7.0_en.stm32cubef1(原厂固件包示例源码).zip”,即里面“Drivers”目录下的“CMSIS”和“STM32F1xx_HAL_Driver”。
, {0 Y- k/ O/ o% F( h- Z! T! u; f6 N+ ^6 g
“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_工程模板”的工程代码。5 i# g1 z+ E; }+ K' p4 T

+ K$ c' ^6 ^  j$ s7 F“Driver”目录存放用户编写的外设驱动代码,比如LED灯驱动,这里示例不涉及外设,暂为空。
; J% c6 {! x3 v. M  P8 u# j1 U6 e- U; D2 h$ t3 \9 I: ^! k+ s* {
“Main”为存放主函数文件目录,创建“main.c”和“main.h” ,参考“1_工程模板”的工程代码。. I# S/ i6 I8 A! f' V

" Y/ _0 L9 S! L& O4 T“Project”用于存放工程文件,工程文件由创建Keil工程自动生成,这里打开Keil。
. D" l9 h6 A$ m' |$ c% }7 |/ A& ~/ U8 t' M

; x9 M! K" m6 g1 m* Q" Y3 `4 ?1 Y
8 i6 E0 \8 t) [- U" L+ o2 Y打开Keil后,点击“Project”下的“New μVision Project”,如图 7.1.2 所示。
1 R; H: `$ J/ J
X3(37WI5AR44`2%~RS2{C.png
+ W5 V; d+ H& T6 L
# m# f& A3 @6 c
图 7.1.2 创建Keil工程
* H! I. d6 p. a$ q7 E
随后在弹出的路径选择界面,选择“Project”目录,工程名字任意,假设这里为“Template”,如图 7.1.3所示。; m9 j6 [# U/ U  t3 q9 S# D
7 g' [6 U) F  p3 N9 _* o
$HSI%TJR5[}GNZ]}0Z68WIJ.png
- z. k  }$ X1 k, k1 \# Q
5 x) [' F$ f- A% K
图 7.1.3 选择工程路径和设置工程名称
3 J$ h8 O: ^& Z1 Z
接着在设备选择界面的搜索框输入“STM32F103C8”,然后选择“STM32F103C8”,点击“OK”,如图 7.1.14 所示。; y2 E  L5 |& J2 t3 H

. j6 h- x. y: w
43KFVTXPR8YBAU{GOM$P652.png

% |9 [1 \( Y" `" c/ c
6 W5 S" w$ I: w$ X7 {1 |) Z- j/ b$ m
图 7.1.4 选择设备型号

- e. ~) t9 f7 A3 m/ ?随后弹出运行时环境(Run-Time Environment,RTE),目前用不到,直接选择“Cancel”,如图 7.1.5所示。: v* m2 i/ M; {- N; N9 e% z
! w1 i7 X/ C& u1 ~5 u" \
KZR6NU7@4U9]EEW4U]%$LXL.png
" u! _! O. I! s, @, E
+ @, h0 C' q# x7 L0 V. k
图 7.1.5 管理RTE
, B. i" q; b7 j( A1 L! N% ?
接着进入主界面,点击“工程项目管理”按钮   ,为工程添加文件,如图 7.1.6 所示。0 F7 r; A: s5 T! x8 B" _( m  f

; {; L. y3 N/ e5 j" }- C' |
D2U{OEUR@R$)F7]X~M`VZ)Y.png
# l$ K$ g- |1 l- C3 `% J- N, e  r
4 L, a9 z9 P# P
图 7.1.6 工程项目管理按钮

3 X, J; C( s  C4 c: x! i在工程项目管理界面,有三个窗口,分别是目标工程(Project Targets)、分组(Groups)、文件(Core)。双击“Project Targets”下的“Target 1”,可修改名字,这里改为“Template”,双击“Groups”下的“Source Groups 1”,改为“Core”,如图 7.1.7 所示。- l: i/ P5 b! l$ G; S* m: B& H
1 }& @. E% i7 |* s: c! z1 ?
XIT(C42@S7~ON]IU4V3_}QW.png

' o: B9 h" K. C/ ^
1 i  i5 _- C  z& Z3 @
图 7.1.7 工程项目管理界面
( Q, e8 C0 H6 s6 ^, V1 a, v
接着选中“Core”,点击“Add Files…”,接着在弹出的文件选择界面,进入“Core”目录,然后需要修改“文件类型”下拉选择框为“All files(*.*)”,才能看到所有文件,如图 7.1.8 所示。8 B) q% }. ]3 A. |: h+ Y
, I* I8 A' G% ^8 m+ n0 _
P`FDF@T2`M)8UHTL9D(H]B1.png

/ v- e0 i- B1 F; n: h6 p3 p% ], `. b! p
图 7.1.8 选择所有文件类型
) M8 s, p% t; g5 K
然后选中“startup_stm32f103xb.s”,点击“Add”,如此循环直至如图 7.1.9所示的五个文件全部加入“Core”。
; [  J3 g1 q8 Y; @6 R$ _
( Q3 K& m! r  q3 z8 R' _1 ~
X_B%}0_IYB[8%@PWKXGGW.png

# h, \5 ?$ @4 p1 Q1 A; M' ]- M. J& B4 |4 E
图 7.1.9 选择加入Core的文件
2 q8 ~! y: Q/ u6 V
再点击“Groups”的   新建图标,创建一个新的组,名为“Main”,如图 7.1.10 所示。
* t9 s! A! g( [7 z( T) q) C1 z# A! ^) P) v
X]3P5_9CS@JRVHMW{@CAZ`3.png

, z5 T7 H' k* E& r# u- M& M) `. _8 {) ]1 ?" b) d4 B
图 7.1.10 创建新组Main
& o) O9 }% K  Z+ W: V; }
接着选中“Main”组后,点击“Add Files…”,选中“main.c”,再点击“Add”,如图 7.1.11 所示。
8 X% N( H" v7 Q' k; z
+ ?+ w3 o9 c, b( F( O# {
SQ31ZKV56(~ASSFZMQ_Y86R.png

  ]3 [1 j6 A* D7 x( h" i& W* h3 A2 b2 ^4 k& b+ l' Z/ x
图 7.1.11 选择加入Main的文件

$ r+ o8 n! `, n- ?( Y% y再点击“Groups”的   新建图标,创建一个新的组,名为“Driver”,该组没有文件,无需添加。再新建“SDK”,加入“SDK\STM32F1xx_HAL_Driver\Src”下的几个必须文件,如图 7.1.12 所示。3 r. T7 S- B4 m8 O0 ^5 K

, o4 @7 Q1 K/ [3 \
NCI3Z_VZ{UZ05C4D%6X8ASD.png

4 Q; n8 z! |9 W& f: ^
% W0 e9 y7 R9 U' h' ^) V9 g3 v
图 7.1.12 选择加入Src的文件
/ j3 d; H1 v7 w, |! g/ n) E
所有文件添加完成后,效果如图 7.1.13 所示。" k2 A0 z. ^% ]
9 g  e+ n3 R7 c  l5 F
IIC3WH8%3U`P3GS~[I2}5T6.png
* P' u, m; y! W+ f

1 X- h2 K3 A3 g3 @
图 7.1.13 工程添加后各目录效果
/ t0 l  F  \2 t! X4 g4 y
按上图添加完后,点击“OK”保存,如图 7.1.14 所示。
: _. K/ r; ?* N! }- i' t6 l5 N. Y9 P) D$ Z. I- j9 ~* \
L_UMBJOW_83}HULU5_V1`%R.png

2 V3 b; {2 \6 H2 R4 \( F3 T  w' T' b8 o- I: j$ }; Y; T5 h  e" k8 D
图 7.1.14 添加完成
" h/ \1 c1 c; c& u
接着进入主界面,点击“工程项目选项”按钮。8 f' f$ F& ^+ x4 w* m4 s' _; l
( ]% q9 x$ X7 N$ Z4 y
LNLU0{[EM}KK0NQUA6S1.png

( T: b! P. Y! k$ A- r: i- _: O) Q4 \( s
图 7.1.15 工程项目选项按钮

) ^7 L2 P! G' ^4 u4 p$ P1 K) G1 w在弹出的窗口,选择“Target”标签,如图 7.1.16 所示。追求稳定,这里设置ARM交叉编译工具链为“Use default compiler version 5”。“Use MicroLIB”也可以勾选上,编译出来的文件占用资源会更小,也为后面调试串口实验提供printf。再下面是Flash和RAM的起始地址和大小,与前面图 6.1.4 所示的Flash和RAM是吻合的,这里无需修改。  R4 d" D  e1 M1 @& ^! Q2 `* r9 i
+ U: ?8 [+ V  r! ?/ t
{6ALJ73FIUO9G`II(A%@FWW.png
- J9 R# s4 k& ]/ e+ e
/ D' c! |. h# J
图 7.1.16 Keil设置Target

. Z8 A; @- o5 t3 y) Z切换到“Output”,勾选上“Create HEX File”,生成hex文件供其它烧写工具使用,如图 7.1.17 所示。
/ n' O; ^& [9 f) R- w* W" S: e/ T0 ?! H7 U  ?0 _5 _) m/ r  Y6 U
~E9X2Y{HX80OF8AO`H3TV5S.png

/ d1 {8 t" H- k- w# A6 ]
& y  C. W3 I6 y
图 7.1.17 Keil设置Output

9 P6 ?/ l4 ]2 A& o! _' S" w9 C3 Z' A再切换到“C/C++”标签,在“Define”栏填入“USE_HAL_DRIVER,STM32F103xB”,分别表示使用HAL库,使用的芯片型号系列。HAL库很多C语言语法采用C99标准,这里需要勾选上“C99 Mode”,不然会编译报错。最后点击“Include Paths”最右边的按钮   添加头文件,如图 7.1.18 所示。' p' u% ?6 o8 J0 H9 x, q  c. l
, d) w: V4 W: I- E0 p+ ^
在弹出的文件夹设置窗口,点击   按钮,依次添加如图 7.1.19 所示路径,最后点击“OK”。
: R: K2 t4 D/ l. K, N, X+ B) w$ N. i5 a  ]1 c; J
_9RMN7H0P95[J{K2~X8D1N5.png
1 A" P9 T2 \1 ?& A( C5 U" {' @3 M

6 A3 g2 S2 x# \2 v8 z3 I; T) W
图 7.1.18 Keil设置C/C++
4 R) D0 A, ?3 U! D6 Y7 j
( l7 ]: [9 \4 \& a( j
$ p! u$ i6 Y& q- t4 U$ ]
KTBAOG8Q)CXE)KH}T4{_)Y3.png

& G% ^0 q- Q( F' m9 {) b- S! K
3 y  t2 `1 Q8 e, u
图 7.1.19 添加头文件路径
0 ^$ y6 F; l! T& K' {5 I
切换到“Debug”标签,我们使用的ST-Link,因此需要选择“ST-Link Debugger”,最后点击“OK”,如图 7.1.20 所示。
. R1 c- z* }' o* R
! P9 y3 E7 B  O* U+ O
$E{DSU6UAKOF69}E18@V1{W.png

7 j. U- Z; x( C6 i+ V! t: D. e' [7 E7 j  R
图 7.1.20 Keil设置Debug
8 Y5 ?, H# s, ?6 }  t- J9 e5 Q
以上全部设置完后,点击编译,编译完后,点击下载(这里需连接ST-Link才能点击下载,否则使用100ASK_STM32F103_Tools的自动下载),出现如图 7.1.21 所示的红色下划线提示,即表示编译、烧写都正常(当前工程主函数没有任何内容,开发板无任何现象)。之后便可以,以此工程为模板,编辑main.c,向“Driver”添加外设驱动程序,进行开发。
3 [3 ]( p$ O5 ?/ B& O6 b6 ]
- j3 ~7 S" G$ M* T* e' ]
5%3_3M([XE6JUGP$}5~9XXD.png

, T  T4 k8 Z5 \# P9 p% y9 U
. ^) c& A; s( @
图 7.1.21 编译、下载测试
: p& Z; S: r/ O

0 G+ n' N5 I5 O' ]$ X+ S* J( X  M2 W5 z. ~* J
【总结】- s: e( |. g4 T( F3 W( t
) S( ^4 @9 D9 q; o/ Y
工程模块的创建步骤如下:) r& q4 T" i" _2 i: U6 Q2 w3 Q
4 n0 I# z, M6 p
1. 创建相关文件夹;
  r5 K/ q2 m- Q1 L' ]0 e4 s: a. F: h) n5 j& p( l& J) Z
2. 复制CMSIS和HAL库;
# G/ A* m/ Q- z  b0 m6 n  k
' E; ~# ~. c" h1 Z3. 创建“main.c/h”和“stm32f1xx_clk.c/h”;4 G9 E3 W: N% P8 p
! q# |5 t  R& x4 H4 G& g/ a$ K
4. 创建新Keil工程;
  Y! ~* ?3 ^+ d
- B7 {) F, h3 b5. 添加组文件夹和工程文件;
5 B1 m3 f2 y$ i# k6 Q2 Z5 y: y3 ^# O0 `. o: s) d# g0 k
6. 配置Keil设置
+ r& d( Y. I$ B! _2 M9 Z# x0 a3 H7 j
! M5 Q/ n4 j, K! Y; s
. @6 a4 L6 J) G# ^5 Z: n3 b4 f% M$ ~
7.2 Keil常用设置! Z$ U' d  o; s5 M* K( J1 o% t1 V
除了上述基本设置外,还有一些设置可以方便日常使用。
, X5 D" _2 U/ q0 q+ h* d4 w3 |* T- J9 R
1.2.1 下载后自动运行程序! B" R' F7 B7 I) n0 L
Keil默认在下载程序后,需要手动按下开发板复位才能启动程序。通过修改修改配置,可以下载后自动复位重启运行程序,方便调试。
* v8 l* E' t9 r' E1 @" C  y3 P. \( r' p5 K4 N! H; N8 U+ T6 x
点击“Optinos for Target…”按钮,切换到“Utilities”标签,点击“Settings”,如图 7.2.1 所示。
0 O5 Q* s2 R- M8 H
3 L6 \" [# D" a8 q* F& V
`DXFNKM81O@H@WUMEPNL]BY.png

& U, x3 J7 r/ V% Y
' x. L1 M' `. ^4 R2 |+ G# d  y
图 7.2.1 Keil设置Utilities

6 Y7 g# b- _( ~# Q随后弹出设置界面,切换到“Flash Download”标签,勾选上“Reset and Run”,如图 7.2.2 所示。接着再切换到“Pack”标签,去掉勾选“Enable”,如图 7.2.3 所示。9 |" j4 ^) Z- I
* D) r, b8 i: m9 I; J& _8 g
_L4]V@J3I[1$(OWCXIA(U49.png

/ E* r6 S2 E" m% ]
& E' d- y$ d2 u* D+ {5 d/ @
图 7.2.2 设置自动运行1
  y0 v$ K9 u$ O6 Z- z
: P! A: f- d4 n& b$ `

7 G- x4 n3 S1 ~3 R
O51(CR8$}NH~9K4WD`7`L{U.png

: i1 m" z5 {8 S$ k5 u* \& e# y/ T* _
图 7.2.3设置自动运行2
5 Z) ~4 w* C0 ~5 r" Y

, P( O8 l7 F! a+ V2 q  [( T- v+ u9 \/ J4 P0 E
1.2.2 生成Bin文件
7 p# v4 C$ x" _% F( Z. M5 K1 Z" k
实际开发中,可能需要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 所示。7 l6 l( S% [; y- W6 {. B

: s# x7 N# P* o
~8CZ]8ZQ}1}]N11$C)$KY]6.png

( e6 W5 p; B% N
8 A( D' G( n" {, N% I2 I1 S
图 7.2.4 设置生成bin文件

; a/ {  y7 `1 y+ d& Y! f# ~( @设置完成后,点击“OK”保存。重新编译整个工程,将在工程的“Project\Objects”目录下生成xx.bin文件(xx为工程名)。) H( ?0 z7 B. h( t8 O: C
. a. ?' ^0 `: L, L

* B4 _% r% o% [# U* g" X0 V% U9 s1.2.3 字体编码等设置; D* C2 N% _) z/ ^% n. ?7 i
点击下图按钮,进入Keil设置界面,如图 7.2.5 所示。- I8 l# y+ a/ b
, Y( f4 A; J3 f# i
TE[VJ$B4]CS_B25M}N1R9]4.png
3 l$ ]/ u5 |9 R+ I+ q$ i2 q5 J) ?2 M
5 p8 N# I1 O* ~2 n
图 7.2.5 Keil设置界面
3 s" T! `5 R4 ?
在“Editor”标签,字符编码选择“Chinese GB2312(Simplified)”,可以解决代码中中文注释乱码问题。在下方的“C/C++ Files:”的“Tab size:”设置为4,可以解决代码中缩进对齐问题,如图 7.2.6 所示。  m* ]" S3 j+ S; w

1 P, S; V$ q# q+ m
I7[S1IRL0Y7M`B5NEOPL4.png

- ?! d. S4 G5 O: q" T" A; a- Z) M+ r3 b9 L! n" y
图 7.2.6 Keil设置Editor

8 C4 Y2 {# w, K8 x, H' V; L& v% Q7 B然后切换到“Colors & Fonts”界面,选择“C/C++ Editor files”,可修改字体、数字、关键词等的字体样式、大小、颜色,如果没特殊需求,默认即可,如图 7.2.7 所示。0 e2 z" _& y" P+ k
" J- l+ {- b; e8 m2 k1 ~9 m: o+ i9 x
QQ26D]H%VH}][A69Z{)SEW1.png

: D; W+ ?* M$ r' V# n' c# t3 F2 q8 m$ @* Z7 ?# P$ M3 n
图 7.2.7 Keil设置Colors&Fonts

& v; ^% T. v3 b) h* k$ L- E5 Y, Y0 `+ i0 E

- s% f5 N' V9 X$ `) y+ }0 p) O$ Q7.3 STM32CubeMX创建工程模板
" F% Z+ {( V$ T! d
STM32CubeMX是ST意法半导体推出的STM32系列芯片图形可视化配置工具,用户可以通过图形化向导为Cortex-M系列MCU生成初始化代码工程模板。
( Z4 A, K" ^& h  q" O% h' O, R6 @: X5 p# C1 W; t! ~
相较于Keil创建工程模板,STM32CubeMX步骤少、上手快,但生成的工程模板比较臃肿,因此本小结只简单介绍下相关创建操作,后面的实验仍使用前面自定义创建工程模板。读者也无需纠结使用哪一种方法,以后熟悉后,自然知道修改哪些内容,在两种方式之间任意转换。0 k$ _* ~# H8 \( O/ G
% F  w. b4 e7 D( m& ?- O; b( o
从ST官网下载STM32CubeMX,解压、安装、打开。首次运行会自动下载更新文件,待更新完成,点击“ACCESS TO MCU SELECTOR”通过选择芯片创建工程,如图 7.3.1 所示。
0 z6 R/ b# P8 V+ f0 c4 r& E; T4 o8 `3 a+ y4 S' {1 i/ |
D)9BS~9EY$X7(FL{(4M)JNA.png
8 s. R: ?5 u' w' E8 ]
9 _( ^. C4 q5 i8 O
图 7.3.1 通过选择芯片创建工程

+ D% X# U1 F9 U' t* s, G" Z随后在搜索框输入“STM32F103C8”,右边选择“LQFP48”封装,最后点击“Start Project”,开始创建工程,如图 7.3.2 所示。
" Q. _; }- Q3 f& o+ Y4 q9 h: E3 B! f8 E4 W7 ^3 o# [
J@57CU9C2B@~Q)A`6_TNOM3.png
4 H' [+ x# r9 q& `" B" a

7 `/ q1 \- J1 ^. ^9 M, U
图 7.3.2 选择芯片型号
/ j9 J% C/ s7 |, k& \5 a; t. i
随后进入引脚配置界面,该界面可以图形化选择芯片引脚并配置,如图 7.3.3 所示,这里就不展开叙述,感兴趣的读者可以网上搜索下资料,比较简单。; U+ B* q6 Y# y

; N- O$ Q% ~% {7 r) }9 S5 C- f
Z(X49[VJ(2_0_%)XJKTL)8O.png

: P, @7 X( i+ u  u. ^" s
, k4 Z5 p5 D7 I/ R
图 7.3.3 引脚配置

! v, p* a7 M! s# i  Z  R点击“Clock Configuration”进入时钟配置界面,如图 7.3.4 所示,在该界面可以图形化的配置时钟来源、倍频、分频等,这里也不展开介绍。
# I) z5 ?4 o+ L3 I# t1 n' D( p* S, j; B" a, d
ZCD[KUS0SP@)M~9K]S8AY~U.png

2 t3 c$ C# W8 |4 [- N! v- j' ^* V% t: W; l' m
图 7.3.4 时钟配置

& g- n( K; j8 n4 f点击“Project Manager”进入工程管理界面,如图 7.3.5 所示,在该界面先设置工程名字,再设置导出目标IDE为“MDK-ARM”,版本默认V5.27。1 H6 i( p) ^, y5 b( o0 E9 Y

4 U# M# m' ?; ^& h$ D  R( f2 D6 P
{_MLKMI9DV5C}]%]E@_4X2P.png

( b6 L+ q. c0 {0 m: T
1 y; z1 A1 S4 r: e: R
图 7.3.5 工程管理界面

/ A3 H/ n$ `; m# O再点击“Code Generator”,勾选如图 7.3.6 所示,最后点击“GENERATE CODE”。! c# D; r8 ^% @/ O, r3 F
% M8 P9 d4 X0 r: O
`KLRBP{UA%~ME]6S~1P0(WK.png

4 o5 d# Q1 v! ?4 F$ N9 v& N: a% G+ R8 t7 S
图 7.3.6 设置生成代码样式

. n- Z( E9 ~( Q. s! F& M1 \5 c$ L) ^待代码生成完后,出现如图 7.3.7 所示提示,点击“Open Project”打开工程。; i$ ~; }" P$ N$ O
7 D: {8 ~. C# G
T%NHX](M]}1ZOBJJJJ6PX`K.png

1 M0 _+ }* H# I5 \) ]4 w6 t1 |; b, f6 C: g' J& f
图 7.3.7 打开工程
( {( n# W% l* G7 J$ Z- `, Z& p
随后,将使用Keil自动打开工程,点击编译测试,编译成功,没有错误,如图 7.3.8 所示。以后用户只需要在“main()”里添加代码内容即可。
1 l5 O# s& F* B+ ~* G
8 x2 L+ \! I/ i+ K: i
D54G)HUR`$$LE)U5VP3JT29.png

' Q! _8 b7 b% R  |4 ^" |& B0 M3 i' a, E1 b$ I) y
图 7.3.8 编译测试

" s& O6 q9 U, f. @* H( ~& T- G
% h0 t" @$ g7 s5 }' Q: W& P" n! L' I4 K3 w$ |) b
【总结】
# y2 |: {& ?, M3 B8 W
% c" s/ ~/ O3 P- k
使用STM32CubeMX创建工程,非常的便利。但同时也限制了用户对工程的调整,代码内容、注释也臃肿。如果用户需要快速搭建工程环境,STM32CubeMX是一个非常不错的选择;如果想深入学习,根据自己的习惯优化,可先熟悉如何自定义创建工程模板,以后根据自己习惯调整。
: f" Y9 O3 s+ ]% r5 g; y
. T$ R- j$ G7 y作者:攻城狮子黄
) @# Y/ L- K0 z) l
' j2 @6 P3 k# }; z
; S7 f  q) p; \2 Q/ P$ k4 a3 @
赞 收藏 评论0 发布时间:2022-8-30 14:17

举报

0个回答

所属标签

相似技术帖

官网相关资源

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