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

【经验分享】STM32 创建工程模板

[复制链接]
STMCU小助手 发布时间:2022-4-27 21:15
7.1 Keil创建工程模板5 h3 Z4 j: O, t$ H5 c
在前面“C语言使用HAL库开发”章节里,体验了如何使用HAL快速开发。不同于使用汇编和寄存器开发,使用HAL库需要为工程准备许多相关文件,也就是创建HAL库的工程模板。工程模块没有统一的格式,通常是根据多年的开发经验和使用习惯总结出来的,以“5_程序源码\1_创建工程模板”为例,介绍如何一个工程模板是如何创建的。, c4 Z) j; k5 d, o& D% i" D9 w* U
+ L3 j  [8 ^1 J' P4 ~, i$ B
如图 7.1.1 所示,一个工程包含五个文件夹,一个清理脚本,一个说明文本文件。
% e" Z: V( g& M4 f- P2 e; c+ N# n1 e4 R' Q$ B
}`8%YV_()6DF[QFE~J3O)%M.png
; k/ I0 \& U9 g- z0 ^8 }
/ }5 a1 T. S- }9 d( i* x0 e/ P图 7.1.1 工程模板文件夹
6 E7 s1 V  m# J$ _, E5 W  h& ^* W8 Z# u6 |4 T

7 ~+ J0 j; l7 B6 `: D" c8 o       各文件夹、文件说明如下:$ V- f; H# \; n1 p7 S* r+ w7 h

: ?! g6 g% p2 LCore:存放从SDK文件夹抽取的部分可能会修改的核心文件;9 a5 V$ J* w* g

+ o6 g5 o- S4 iDriver: 存放用户编写的外设驱动文件;
) G) s) R- i# p9 A4 B0 k7 j( J% g
6 R1 Y8 F1 M, V$ ]# Q6 o4 QMain: 存放主函数文件;: `; k! }- G8 w% I' h+ t1 G

3 p% r. x# v2 e7 Q3 o  }3 e3 ^# g/ ?Project: 存放Keil工程文件,包含目标二进制文件;6 t. ~( s2 p$ q% ~  {

, f! }$ x0 W: v$ X. N/ w$ SSDK:存放CMSIS和HAL库;
* n. n3 H" g: u. h/ \& W9 l) ?+ ?4 M% [
Clean.bat:Windows脚本,用于清理Project里Keil生成的工程文件;
, g, n3 q& D5 j4 F* ^
6 b$ L( I1 A5 Y% x$ d  Z9 ^& T+ ^Readme.txt:该工程的说明信息;4 E5 ?+ X3 n6 v6 Y. h! [$ c- f  _

* Z/ s& M0 Z5 j3 ^/ o% F+ n“SDK”目录的内容来自配套资料“2_原厂资料\7.0_en.stm32cubef1(原厂固件包示例源码).zip”,即里面“Drivers”目录下的“CMSIS”和“STM32F1xx_HAL_Driver”。
, b* b8 W; E7 ~: U' W' T1 }& `/ N* c; ~, @' }% w
“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_工程模板”的工程代码。# e0 j' ?# d- d% h# A

5 v& f# x! ^6 A4 y“Driver”目录存放用户编写的外设驱动代码,比如LED灯驱动,这里示例不涉及外设,暂为空。
) q! M% A" A7 t8 o
% p( y3 h9 B8 d+ Q( Y$ n“Main”为存放主函数文件目录,创建“main.c”和“main.h” ,参考“1_工程模板”的工程代码。
& m$ p. K+ C$ o  \
6 u$ X: M/ [" @* L; O6 t“Project”用于存放工程文件,工程文件由创建Keil工程自动生成,这里打开Keil。
# Y6 W  E% E$ M. o; k$ w/ e: Q
) h: {& d# d/ w& p& J打开Keil后,点击“Project”下的“New μVision Project”,如图 7.1.2 所示。1 ]6 R  I) q1 Y

) ?3 ]. a$ |6 w/ B3 C2 k0 l UT(9F(GHA@WSFLA83WX(2EM.png
# Z2 g. [3 ~# z4 m+ T' |2 i" d) r  Y9 O2 O9 P  ?5 R1 a
图 7.1.2 创建Keil工程
2 |6 C4 A; Q6 c' T! S随后在弹出的路径选择界面,选择“Project”目录,工程名字任意,假设这里为“Template”,如图 7.1.3所示。- w# k3 ?2 P' M* i
& L( F9 t! G% }) g! g
`}`4(JJO]6A2RAQ3}$M6T~N.png 7 u1 u' R3 d( w, a( V0 P
0 |, d& }$ b5 x8 n
图 7.1.3 选择工程路径和设置工程名称
% M- D/ ^! Z" k) j* q7 K: L6 S8 I2 h接着在设备选择界面的搜索框输入“STM32F103C8”,然后选择“STM32F103C8”,点击“OK”,如图 7.1.14 所示。  X# i9 d1 j7 Z. H

8 ~2 e: I3 S, r6 r" t  q7 { 26V@X`IX[@R1{2YN~GXUW%3.png ; C$ }3 b7 e# `2 \' J; l! T/ X
1 O$ t! b" c+ V- k  Q8 p
图 7.1.4 选择设备型号0 M5 w8 H. t& v" W
随后弹出运行时环境(Run-Time Environment,RTE),目前用不到,直接选择“Cancel”,如图 7.1.5所示。
" ~: M8 r8 `  J3 I+ U$ H. n6 r$ B1 o7 f! J
}0W]@`{RS[%@[K4SC6(_569.png
  w1 q. Y9 b4 e" Y# G: v* Y. Q
图 7.1.5 管理RTE
4 T* s# Y1 M7 |接着进入主界面,点击“工程项目管理”按钮   ,为工程添加文件,如图 7.1.6 所示。
6 x# f- _7 L( s; ?6 ?2 x3 k: V6 s4 _0 K# V- y' ~  a
9RA1X0ZW]LMEVD]WJCGZ7]P.png 2 c, b/ I% [+ g. f8 l

, y7 [: b3 p' |; j$ t图 7.1.6 工程项目管理按钮2 N, r2 [9 @& o2 ~& }
在工程项目管理界面,有三个窗口,分别是目标工程(Project Targets)、分组(Groups)、文件(Core)。双击“Project Targets”下的“Target 1”,可修改名字,这里改为“Template”,双击“Groups”下的“Source Groups 1”,改为“Core”,如图 7.1.7 所示。1 N& I  W& R& J! }) Y; Y5 _% O5 }

# E3 k. ~0 H& ] 3(XH%1K4{OW2)NVBTXF(0.png 2 {4 U+ [9 r/ T

! C7 Q7 b5 P  U图 7.1.7 工程项目管理界面" ]: B( s% Q& U2 C) Q
接着选中“Core”,点击“Add Files…”,接着在弹出的文件选择界面,进入“Core”目录,然后需要修改“文件类型”下拉选择框为“All files(*.*)”,才能看到所有文件,如图 7.1.8 所示。
) T' ?% F3 l$ |9 V6 e
5 `' `2 @: K/ N) x- c  l 7%]J44O[$B~0CC9LXCC`XQ5.png ) x- K( b! h+ ~/ Y  @4 \; n; M5 A* g4 V

4 H5 q0 W# F2 c7 I: r( R图 7.1.8 选择所有文件类型7 A# O, {5 i) K- F
然后选中“startup_stm32f103xb.s”,点击“Add”,如此循环直至如图 7.1.9所示的五个文件全部加入“Core”。
9 K5 H- v7 w6 _1 Q
! Y+ y0 o7 m, f: y( |4 l& C5 ?9 P' | %1I{ZV}LF82X2I78}T(][D7.png
$ ~' x8 k0 ?5 w) d3 L1 n" U. p  }$ [+ B4 @2 l# L& K
图 7.1.9 选择加入Core的文件
4 J! |6 \( q  K/ R& ^再点击“Groups”的   新建图标,创建一个新的组,名为“Main”,如图 7.1.10 所示。5 p7 X1 f/ T! p% T. t. B
0 _7 a% D$ i8 R
9PQTK]BMZ48PYS~0VB(MUW0.png - p  n7 N- g, P- j# ~
$ m' f$ Z3 @& n( Y6 g
图 7.1.10 创建新组Main6 K2 ^" M% K) L3 G2 r1 O& s: {
接着选中“Main”组后,点击“Add Files…”,选中“main.c”,再点击“Add”,如图 7.1.11 所示。, G7 r. }: V, N; `: X. x; B& m
0 A7 E5 @- L1 m6 X  F# o( T
O4({4FYCDR`NQ`394$D~G43.png 1 K+ ]* k. V4 y0 l
+ k4 T. B! }+ `5 s  @5 ]
图 7.1.11 选择加入Main的文件
. N5 @2 J* C& r! d7 q再点击“Groups”的   新建图标,创建一个新的组,名为“Driver”,该组没有文件,无需添加。再新建“SDK”,加入“SDK\STM32F1xx_HAL_Driver\Src”下的几个必须文件,如图 7.1.12 所示。5 m5 @1 t. ]) X

8 A; ?3 s1 j( A. O# o" g- x/ w9 K7 Q B71HWE5MYACBSQ6{(J2F}7E.png
, y  P! [  N3 j! h* K" J$ c& J% n) x) h9 D! [
图 7.1.12 选择加入Src的文件+ G  L9 k1 |+ m  t' x0 h
所有文件添加完成后,效果如图 7.1.13 所示。
0 Q  ]$ X4 H. F; K3 |+ Z! }% F" r& f5 L0 ?) g# s4 N, k
IXYXEB]QK]I@6B]Z9%B~D~B.png
% ?  N4 K0 A6 C2 b
" @5 h; `! \* u/ h$ N' S2 ?* N图 7.1.13 工程添加后各目录效果# f% R3 j4 ?/ P* `# D" B3 g: [

5 T6 Z' ]4 N: x# y; S按上图添加完后,点击“OK”保存,如图 7.1.14 所示。
5 u+ Q2 I( h; o
% g2 b6 O' U# r, |8 m3 l B~EPHHE{M@C2DXWOT)SJPLI.png 4 s3 M6 y# m  z' H" z
& o& c$ y: Q8 n" T
图 7.1.14 添加完成
' g' T6 @5 c" T/ N$ v- D, }
& [( Q/ \; \& d: {- v接着进入主界面,点击“工程项目选项”按钮。+ h0 \2 ~- {# K+ P; Z+ L; d% c% S

; |  Y0 i9 Z0 ^ BXFK}2AYYXQ$XJ(){Y0}RM9.png
, ]0 m2 A, c( {; U+ h' l7 d3 a6 ]* G( W" U: A  h4 k! J% q
图 7.1.15 工程项目选项按钮
! C. R4 Y0 N/ T- P. i0 c( ?% N1 Y7 N1 g) w1 S
在弹出的窗口,选择“Target”标签,如图 7.1.16 所示。追求稳定,这里设置ARM交叉编译工具链为“Use default compiler version 5”。“Use MicroLIB”也可以勾选上,编译出来的文件占用资源会更小,也为后面调试串口实验提供printf。再下面是Flash和RAM的起始地址和大小,与前面图 6.1.4 所示的Flash和RAM是吻合的,这里无需修改。
7 H1 v& t+ U/ p5 ?
2 r  N8 W& {1 Y% f Y_1{KRRBOLR{E]@`8K8BJ1Q.png
$ d9 g+ {- |/ J) L4 i- E# m
" X" D7 o) [, n/ b. ~0 J4 y图 7.1.16 Keil设置Target
. h7 ^, D8 e) X+ _
% }' _9 E+ t5 F切换到“Output”,勾选上“Create HEX File”,生成hex文件供其它烧写工具使用,如图 7.1.17 所示。
8 A) @. s- z8 E+ Q! ~3 O. l& X& q& J( e& ^
02HUO5_K)0ZT4RPU6T)LCU1.png ' K- Y5 l- E7 |& e- t3 t- M

- m$ X- M6 j# b6 K6 m图 7.1.17 Keil设置Output
  E& b& Z8 ]" v, y% y" n" Y0 ^) k) H& }6 z- }2 ]" a7 e% D$ ?
再切换到“C/C++”标签,在“Define”栏填入“USE_HAL_DRIVER,STM32F103xB”,分别表示使用HAL库,使用的芯片型号系列。HAL库很多C语言语法采用C99标准,这里需要勾选上“C99 Mode”,不然会编译报错。最后点击“Include Paths”最右边的按钮   添加头文件,如图 7.1.18 所示。
4 K! Z  x+ w! f/ n9 }- J2 s8 B8 r/ b) Y, s$ \
在弹出的文件夹设置窗口,点击   按钮,依次添加如图 7.1.19 所示路径,最后点击“OK”。9 R2 s- ~4 u. l' z# \& q! u
* C5 j1 N3 F. ]' I& f% x5 z9 F1 ^
P$XQANRM3X{WX(34CJ3PQ{L.png
! M, y9 q3 [0 u. i3 C; g; x4 }* H
2 F' F6 u% x" }图 7.1.18 Keil设置C/C++7 a5 S: q8 J. }! I% D$ d' }6 G

  w, ?$ e% i& E; k W@6`RA%}QSM$U_7XXT_}`9P.png
) B1 Z7 U% O# H: O- F2 T* k2 Y2 L4 C. a. a- d3 B
图 7.1.19 添加头文件路径
5 R+ o1 L$ m* U& F6 i
+ G! L: O4 u' j3 e切换到“Debug”标签,我们使用的ST-Link,因此需要选择“ST-Link Debugger”,最后点击“OK”,如图 7.1.20 所示。! T  E2 g$ ~. K2 q

! ~4 W: m. F- L! o. c  c& y 5]RCUR`95TL~~K[9~)DI49R.png
) e- x+ b' Z0 a" \% h
$ G* X+ w- B  u3 o4 X图 7.1.20 Keil设置Debug# |* X- X( m$ `  s' n2 M

. T5 T1 M2 E% r7 D  h: x以上全部设置完后,点击编译,编译完后,点击下载(这里需连接ST-Link才能点击下载,否则使用100ASK_STM32F103_Tools的自动下载),出现如图 7.1.21 所示的红色下划线提示,即表示编译、烧写都正常(当前工程主函数没有任何内容,开发板无任何现象)。之后便可以,以此工程为模板,编辑main.c,向“Driver”添加外设驱动程序,进行开发。
, O  y8 x$ T1 k1 F9 m! }; o9 f" y
U6GI5[QL(]OB[J92A(%(DM0.png
2 L( a. [5 D& d* A
+ U6 ?4 T/ b6 S% C: z) Y) o图 7.1.21 编译、下载测试
4 F1 {- L7 J: L" H# k7 ]) s! b
5 i& v+ L% t: ^& e
' N- d# Y- ?/ q# t: B- n【总结】* {2 j" O4 i9 k* E

; g" _; [1 q4 H6 i; p* ^工程模块的创建步骤如下:
0 g" G- M6 @  g; W, s
& w3 ~( h3 a, U& u4 A1. 创建相关文件夹;
( R2 \6 U8 K7 E- H( y/ \& G. k% E: Z# M; M2 \$ V3 ?
2. 复制CMSIS和HAL库;
+ z4 R# ^+ b  p+ j7 Q3 B) ~  @- `) E6 w1 o
3. 创建“main.c/h”和“stm32f1xx_clk.c/h”;
8 s: k1 m7 |9 J, j6 ]- Y5 C: z) w; R# B# Y
4. 创建新Keil工程;
% L2 P/ L0 @  y
( D. l' N: {) g/ L7 p" F5. 添加组文件夹和工程文件;
5 p% A& {  Q4 S4 N
- b6 s. B3 H3 @8 O6. 配置Keil设置' G7 \- q( n. c6 E" v. P/ i' D

3 H' \, H7 p; T' s% Z/ Y. w8 ]8 @5 i5 R# _- J/ A" t( t, L3 J
7.2 Keil常用设置
  W* B1 H- Z( T8 L除了上述基本设置外,还有一些设置可以方便日常使用。
# R, H  E+ B" i1 E' P
3 Y& G/ y, ]% w3 P# T+ r) ^  g) z8 n; T- _- p9 z8 M
1.2.1 下载后自动运行程序

. [/ }% Q% C* T6 t6 g. @Keil默认在下载程序后,需要手动按下开发板复位才能启动程序。通过修改修改配置,可以下载后自动复位重启运行程序,方便调试。
. k+ `2 i7 M7 Q2 V9 D
( W: n6 `/ [. F5 f1 O" g点击“Optinos for Target…”按钮,切换到“Utilities”标签,点击“Settings”,如图 7.2.1 所示。
, i, h2 A2 i7 ?1 y9 y( [0 j
0 B( s% F! }& n2 n @]MEL9@RLNSW]RX}EM9KBXW.png
5 w/ v. p3 ~! Q; v& R
3 z5 |( Q! x- [8 e+ ?图 7.2.1 Keil设置Utilities, @/ g7 _  E  d: u/ Q% s
1 o& T% Q6 E0 r" y/ H$ O+ W
随后弹出设置界面,切换到“Flash Download”标签,勾选上“Reset and Run”,如图 7.2.2 所示。接着再切换到“Pack”标签,去掉勾选“Enable”,如图 7.2.3 所示。
" n( q  E, g4 v  T8 ~
$ [6 P( F) N7 c. Q/ ? JRN$ZNF84_RWDXW_V{@Y{VR.png 7 g1 E$ L( W+ a) V+ Q% U
% J% s8 E  n% D* Y; d$ }' L
图 7.2.2 设置自动运行1
5 N5 K' i' \% V, h, \. c+ ?4 ~4 T: e* ^" Z8 n: p( z" S( m' _
0ZE[`XQC{@%4MS964$VZT.png 5 }: A9 Z: h0 M- h7 J! e; y
7 l' H2 ^% U% ?- n
图 7.2.3设置自动运行2) y4 V: ?1 z% c- T
; b% l' P' F! K! D) L

3 r+ @# x. W1 R# O3 f. T8 w1.2.2 生成Bin文件
# g) e  B) k. m1 K7 G+ y/ v; A0 ?" e实际开发中,可能需要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 所示。9 g! u2 w  m5 x4 g
* }- t  c) k. \( `9 H" m  m
E_R3AFUIFA%@[0}OD~3Y5AW.png
4 K8 N! k% B1 l* D
( Q7 C3 v" |0 x1 r* l! D图 7.2.4 设置生成bin文件& ~: u3 z" p2 _# p5 ]
设置完成后,点击“OK”保存。重新编译整个工程,将在工程的“Project\Objects”目录下生成xx.bin文件(xx为工程名)。
5 ~9 l7 v. m7 J% b4 a- E! L  F1 a! v! P
1.2.3 字体编码等设置5 n" X, o4 m" D& s$ q2 `$ x0 m3 Z. a
点击下图按钮,进入Keil设置界面,如图 7.2.5 所示。
: `& F$ Q( B  Z9 L, y
$ x* S. k# R+ T1 g+ v NE{$H%UTY63}FR669(A)L24.png . n7 ^. G% l" R! l9 J. ~3 w
4 u# y4 y+ W: A4 P# C. N
图 7.2.5 Keil设置界面' z+ k' c# c% D2 i) o. S
. P. o% i& l- U8 o, O' _
在“Editor”标签,字符编码选择“Chinese GB2312(Simplified)”,可以解决代码中中文注释乱码问题。在下方的“C/C++ Files:”的“Tab size:”设置为4,可以解决代码中缩进对齐问题,如图 7.2.6 所示。
9 v$ [! E' E% M( }4 G( p) y( S5 c! g3 U8 j
{~0R}~%GG_5_NE0KD96J0R5.png 9 w# q" H) V5 w) Z2 s& V$ P

2 ^2 ~. ?6 U3 ]& n, T& b  Q* ^9 Z图 7.2.6 Keil设置Editor7 f3 \) O* s8 R. H5 s
2 S* m3 W+ ^; W- }$ W* i
然后切换到“Colors & Fonts”界面,选择“C/C++ Editor files”,可修改字体、数字、关键词等的字体样式、大小、颜色,如果没特殊需求,默认即可,如图 7.2.7 所示。
9 d' i1 m" J8 ~1 \8 m% K1 l( \# J; L
, |/ T- B" l; S# p+ }8 H AMI31(_}%2}A2IBGZ(MAS25.png
- n+ i" M' f  p8 b
- H* J* V9 k* ^+ |6 [& L+ L图 7.2.7 Keil设置Colors&Fonts
& W4 L# K# {! H' V0 i% R- J
$ ]& d+ R' n1 j! _) s: Y4 e: e3 s& O) y; E1 _9 X5 l: a
7.3 STM32CubeMX创建工程模板1 i3 a# H+ s3 @* U* x
STM32CubeMX是ST意法半导体推出的STM32系列芯片图形可视化配置工具,用户可以通过图形化向导为Cortex-M系列MCU生成初始化代码工程模板。
- V' \# M# ~+ I+ V# u
- G2 [5 D) f/ K' [& X2 s& [相较于Keil创建工程模板,STM32CubeMX步骤少、上手快,但生成的工程模板比较臃肿,因此本小结只简单介绍下相关创建操作,后面的实验仍使用前面自定义创建工程模板。读者也无需纠结使用哪一种方法,以后熟悉后,自然知道修改哪些内容,在两种方式之间任意转换。7 K. L7 ~$ P1 X! G0 l

7 G/ F  ]  B6 a, I从ST官网下载STM32CubeMX,解压、安装、打开。首次运行会自动下载更新文件,待更新完成,点击“ACCESS TO MCU SELECTOR”通过选择芯片创建工程,如图 7.3.1 所示。6 ]. i1 o2 P/ b+ k
' U; Y' o0 k* c* E& R2 f
`I6E6BI0V[CO7%U)I(KX{NB.png
, e+ M0 R+ g8 L. W, z3 y
7 n, c* L" f5 Y2 ^  Z4 e图 7.3.1 通过选择芯片创建工程- F" B+ O* S# j* M

( b+ S9 d1 H/ K( p; m6 K/ e) C随后在搜索框输入“STM32F103C8”,右边选择“LQFP48”封装,最后点击“Start Project”,开始创建工程,如图 7.3.2 所示。1 ]7 U' |1 S6 }. V

2 @" f2 e1 `& i& p% S XC$}@J1(MK2Z14A]MF_M{5Y.png
& j' L5 w, o7 G
6 p$ W1 b0 E% K; H2 m图 7.3.2 选择芯片型号
) A% N8 X# J+ p$ r9 e2 P2 m" q' q/ S) Z/ u" o
随后进入引脚配置界面,该界面可以图形化选择芯片引脚并配置,如图 7.3.3 所示,这里就不展开叙述,感兴趣的读者可以网上搜索下资料,比较简单。8 {7 P- q+ ^) |5 V, C+ E, B
9 s& ?! L. T& G8 p
_T5(5LE99A5]$K0FMHA0A~E.png + x: q- c7 |- w% W+ q0 R! h0 o
. E8 \8 |, s  I; m# O+ a& V% |( r
图 7.3.3 引脚配置" \- M: s$ P$ O  ~; H0 I. @- |. q2 t
& v- n: r+ p  i# V) d  \9 b
点击“Clock Configuration”进入时钟配置界面,如图 7.3.4 所示,在该界面可以图形化的配置时钟来源、倍频、分频等,这里也不展开介绍。% T; s9 m9 f3 X2 z9 u8 N

! `& H5 c; E+ {, [! F# y APO@DP`EFLA6S{3H24OE13K.png
6 W! c" S" f7 v. m! f; q0 [0 D+ X. {# S0 b- l( O0 a, _1 n1 u7 s0 S
图 7.3.4 时钟配置. I# i4 }0 s, U4 a8 ^# g* ^7 k

1 p) A! w7 @) [& b& j点击“Project Manager”进入工程管理界面,如图 7.3.5 所示,在该界面先设置工程名字,再设置导出目标IDE为“MDK-ARM”,版本默认V5.27。
7 W1 s( }7 W+ |$ ~' f0 A
  H  ~/ F! ]8 G2 K+ K ]_6D67V4YA10}HD(LEF1COK.png
, V( j% q# P0 U% X5 j0 c  Z
7 N" g9 \6 a0 p图 7.3.5 工程管理界面  @) j0 a7 E+ G( a0 z- w7 g2 m" R

$ W5 l; @7 H1 t5 D% h" [& L8 {
再点击“Code Generator”,勾选如图 7.3.6 所示,最后点击“GENERATE CODE”。8 T8 M3 N% I7 k: o
6 ^+ L1 B1 q: G
`ILHXIS$B0Z3I]YK}N~){J4.png
$ {% }) A) \5 i- j
0 @9 w' Z& R( k/ w, @; {- v! n8 p图 7.3.6 设置生成代码样式! T8 _- r9 V) Y* S1 V
' X. M# ~4 z  Q; s: q7 r. R4 M

( c. @; e$ h* @: K' I6 l$ S9 G待代码生成完后,出现如图 7.3.7 所示提示,点击“Open Project”打开工程。2 E' B' @' G0 _4 J5 g" T7 U
( L2 k$ ]0 {; B" }# ?, n; b2 y
4BQ}D)$R$KC$D_P%M{XG$A4.png 0 Z+ C" S2 p& M8 p: n9 {; P: }
$ }9 t& J3 y4 z4 L* J7 \) V+ {$ h1 ^
图 7.3.7 打开工程
2 l7 b: ^/ D2 d" J+ K1 ?2 i3 H9 W7 S: }6 r1 d+ ^* G
随后,将使用Keil自动打开工程,点击编译测试,编译成功,没有错误,如图 7.3.8 所示。以后用户只需要在“main()”里添加代码内容即可。
0 _* ~- K0 O% u, ~
$ D  S1 A( m# [# H) \  u" w# l# I R9Z_L3U81S@QV{PTHC_I2%Y.png 7 p. @4 D7 T& Z% @( }7 q  I- I
+ h9 c! h. @- G8 S- d" M
图 7.3.8 编译测试
* B. s5 V3 [1 G5 F! r1 g* d( [9 `
. }+ }  l. M5 \1 Z1 k5 g' W" z/ m1 `
【总结】2 J  e' n8 R9 A" n) u. r

% g" D# G0 B" T1 l使用STM32CubeMX创建工程,非常的便利。但同时也限制了用户对工程的调整,代码内容、注释也臃肿。如果用户需要快速搭建工程环境,STM32CubeMX是一个非常不错的选择;如果想深入学习,根据自己的习惯优化,可先熟悉如何自定义创建工程模板,以后根据自己习惯调整。
- S, ?, [4 M+ {' j$ C: Z
* W1 ^4 H/ @+ z( c5 B0 c
* n5 y! i% y% S. Y. j9 y
5 G4 q$ [  F6 M3 A( V9 z1 j1 u( T/ v

5 }. r4 r2 j! ~6 x. V- H( b
7 w7 u( j+ `% i1 b; n1 a& y/ I+ g4 r8 }

* l) P9 X3 Y6 |/ z/ x$ g- }9 Z$ I  |8 _( q# C

: o* [* t( y# G2 r5 [
' i6 |( N1 _  V" p; G$ ]- G5 |$ _0 s
赞 收藏 评论0 发布时间:2022-4-27 21:15

举报

0个回答

所属标签

相似技术帖

官网相关资源

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