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

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

[复制链接]
STMCU小助手 发布时间:2022-4-27 21:15
7.1 Keil创建工程模板
$ c' {6 N( Q4 G5 Y) P2 `在前面“C语言使用HAL库开发”章节里,体验了如何使用HAL快速开发。不同于使用汇编和寄存器开发,使用HAL库需要为工程准备许多相关文件,也就是创建HAL库的工程模板。工程模块没有统一的格式,通常是根据多年的开发经验和使用习惯总结出来的,以“5_程序源码\1_创建工程模板”为例,介绍如何一个工程模板是如何创建的。
6 H7 H: a. C9 o9 ^+ J
. r' F, E- Y. M) y" }如图 7.1.1 所示,一个工程包含五个文件夹,一个清理脚本,一个说明文本文件。
# @0 |$ r! `4 Q6 H3 C$ U* c$ S- q' m$ ^5 c: A. m! F
}`8%YV_()6DF[QFE~J3O)%M.png " p- }7 G4 q5 F4 ?# S, T) W

8 A4 W2 C5 p4 c: @. W图 7.1.1 工程模板文件夹/ E9 F/ X  B" R* d; z
- e8 s: i+ x- N- ?  I5 d8 H
" R7 D9 l& J/ e
       各文件夹、文件说明如下:
2 K) s* _" X9 D. L
+ W5 j$ e( S/ v+ q( MCore:存放从SDK文件夹抽取的部分可能会修改的核心文件;4 \7 [6 M0 \7 z4 b

  a5 \" {' K2 A/ Y/ H9 JDriver: 存放用户编写的外设驱动文件;3 A, c! r4 ]3 ~$ x, Q9 |  O' H

; E0 k( z7 a; D3 X$ A: gMain: 存放主函数文件;
* A( T- x" L! t
5 t2 S) l! r! p1 RProject: 存放Keil工程文件,包含目标二进制文件;$ N' _& }% K# F% T( g6 T% N

( o+ i% s- R2 x0 [3 [SDK:存放CMSIS和HAL库;
# i, p9 {" _0 _, {7 U3 P5 g9 L
6 Q% ?: e2 ?# ^( W) y- k  SClean.bat:Windows脚本,用于清理Project里Keil生成的工程文件;
7 I- o, u1 {8 S+ y% v( W
/ b  M! F9 g9 JReadme.txt:该工程的说明信息;
7 G6 M0 Y* N: I. q0 D: u
6 H( k, ^1 o  g' D7 A& S1 @“SDK”目录的内容来自配套资料“2_原厂资料\7.0_en.stm32cubef1(原厂固件包示例源码).zip”,即里面“Drivers”目录下的“CMSIS”和“STM32F1xx_HAL_Driver”。
+ h7 ~+ S$ X3 s# B: l$ {8 A" {/ N7 r3 L# T, M
“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_工程模板”的工程代码。( X* n+ B- s8 @
" d1 g9 M& }* d; C( j
“Driver”目录存放用户编写的外设驱动代码,比如LED灯驱动,这里示例不涉及外设,暂为空。
0 T2 a/ J0 b# {  Q4 g8 F
+ z9 A. E  H: X( P( n“Main”为存放主函数文件目录,创建“main.c”和“main.h” ,参考“1_工程模板”的工程代码。8 r2 o+ h/ |; U& d- W

& S2 m2 l, T8 R3 q: ^0 s“Project”用于存放工程文件,工程文件由创建Keil工程自动生成,这里打开Keil。0 X- c5 @# S$ o+ p/ M( i# }

, P* F3 N% Z  v9 m  \打开Keil后,点击“Project”下的“New μVision Project”,如图 7.1.2 所示。
+ F" l9 d8 E# C3 z7 G5 C# p' w# ?. U( ^& f# J
UT(9F(GHA@WSFLA83WX(2EM.png
4 b1 ?" y1 {+ i" ^; F: e$ m2 x+ `3 ^7 b! r* Q# e
图 7.1.2 创建Keil工程
$ J/ Z! E( M0 A7 r随后在弹出的路径选择界面,选择“Project”目录,工程名字任意,假设这里为“Template”,如图 7.1.3所示。- q3 e" I/ Z% e

' ?- h7 F  Z0 U6 _( r. D `}`4(JJO]6A2RAQ3}$M6T~N.png * V8 E" B) b' \  l" x+ i; _
8 J5 ]0 s0 j0 K) m  g  o# @  |+ ~
图 7.1.3 选择工程路径和设置工程名称
6 A% ]/ B/ ~- u接着在设备选择界面的搜索框输入“STM32F103C8”,然后选择“STM32F103C8”,点击“OK”,如图 7.1.14 所示。' H- K- N- m) u( ]4 i9 j7 B4 h7 a9 U

2 d3 |/ y3 F% f 26V@X`IX[@R1{2YN~GXUW%3.png + m3 _6 @) n9 A& j

7 X4 \! u1 b+ N8 `5 B6 \0 I图 7.1.4 选择设备型号
# R& ~3 l  ^$ ]3 @1 |& O; V随后弹出运行时环境(Run-Time Environment,RTE),目前用不到,直接选择“Cancel”,如图 7.1.5所示。- q. w* z* Y2 K7 q
7 u4 W( j6 w' T' \5 n
}0W]@`{RS[%@[K4SC6(_569.png ) @9 Z6 P3 D6 ]. Q: J  \7 u7 C5 |

7 o+ [7 `( V3 v% a+ m图 7.1.5 管理RTE
: Y$ o3 U# C9 G: M4 ?接着进入主界面,点击“工程项目管理”按钮   ,为工程添加文件,如图 7.1.6 所示。
: _3 `% Z, o* a/ J, I% h; t
; @8 n6 I2 ?& O" P 9RA1X0ZW]LMEVD]WJCGZ7]P.png / ?, O9 T% Z8 ^7 t
" T3 P! s% z3 F# x/ T1 L% f
图 7.1.6 工程项目管理按钮* @; t/ k! q+ M1 u0 g( `
在工程项目管理界面,有三个窗口,分别是目标工程(Project Targets)、分组(Groups)、文件(Core)。双击“Project Targets”下的“Target 1”,可修改名字,这里改为“Template”,双击“Groups”下的“Source Groups 1”,改为“Core”,如图 7.1.7 所示。
" T8 f. j; t+ Q
4 J) k. C0 L9 g. C 3(XH%1K4{OW2)NVBTXF(0.png " _/ y* a4 r" y! Q6 R
4 l+ c$ \6 Q9 g3 F8 U
图 7.1.7 工程项目管理界面. B  r2 K$ \3 T. {( H' _9 L
接着选中“Core”,点击“Add Files…”,接着在弹出的文件选择界面,进入“Core”目录,然后需要修改“文件类型”下拉选择框为“All files(*.*)”,才能看到所有文件,如图 7.1.8 所示。
0 m0 N) H7 }; X; H4 }* d& {: r$ G8 u2 j8 A1 R* I8 V1 g
7%]J44O[$B~0CC9LXCC`XQ5.png 2 p' A4 c* X+ t

+ H/ V! Q( J/ A, g! _图 7.1.8 选择所有文件类型
! M# [3 }4 K8 Z然后选中“startup_stm32f103xb.s”,点击“Add”,如此循环直至如图 7.1.9所示的五个文件全部加入“Core”。$ j4 T! l+ k" v. |- P* |1 y$ d. C3 x
; L9 J+ i3 Q1 N' d. p8 L  F, n
%1I{ZV}LF82X2I78}T(][D7.png
  b* t3 S. O0 P/ l- V" Q7 F6 |9 g! C
图 7.1.9 选择加入Core的文件
/ c7 W! w# r; @再点击“Groups”的   新建图标,创建一个新的组,名为“Main”,如图 7.1.10 所示。
9 B' [5 _  t2 V  k
! i, Z, h5 k, y- Q# | 9PQTK]BMZ48PYS~0VB(MUW0.png
7 }$ w: b, `1 t5 o. o
3 `* F. S6 |9 m* T, W图 7.1.10 创建新组Main: l" Y' ^3 G6 ^* {
接着选中“Main”组后,点击“Add Files…”,选中“main.c”,再点击“Add”,如图 7.1.11 所示。
) j% s7 ]& X( s7 l8 S0 W# m. y6 k
O4({4FYCDR`NQ`394$D~G43.png
$ j1 k, i- r1 h5 U% i$ Y. K3 ~8 p/ W0 Z3 d8 G/ J
图 7.1.11 选择加入Main的文件) [6 D% w4 x* m8 m
再点击“Groups”的   新建图标,创建一个新的组,名为“Driver”,该组没有文件,无需添加。再新建“SDK”,加入“SDK\STM32F1xx_HAL_Driver\Src”下的几个必须文件,如图 7.1.12 所示。$ _% q5 P, D* K- [* X

5 j0 P. G4 W1 z B71HWE5MYACBSQ6{(J2F}7E.png
# z8 k* e$ _0 ~' D. \! ~- c/ Y: G) K8 ~$ M3 ^; N: T+ t
图 7.1.12 选择加入Src的文件3 _: v/ ?0 r' r+ V' V2 }4 R
所有文件添加完成后,效果如图 7.1.13 所示。
1 o% d% ?: a5 L
9 t% R2 n+ j- }5 g/ o IXYXEB]QK]I@6B]Z9%B~D~B.png * b4 L( S9 D  |: h) l3 u9 k5 v
, O$ L2 ?" b' }, @7 S" p9 G1 p
图 7.1.13 工程添加后各目录效果8 n# j  ~* ?1 w: E3 `* @5 i
3 }, B7 i+ E# `4 p/ H
按上图添加完后,点击“OK”保存,如图 7.1.14 所示。
/ S/ S+ y' U" O* z4 O7 s! K( s: J) {$ S6 l
B~EPHHE{M@C2DXWOT)SJPLI.png 1 k  U- b% U; ?7 ^" H% U/ S+ a

) x5 j8 \; l* B图 7.1.14 添加完成
+ b  E7 L8 M4 {1 d8 q7 g2 ^% w
: O$ v! P4 I6 n; v( |接着进入主界面,点击“工程项目选项”按钮。
7 k) A, a# P* \+ I+ o* \; k. V7 ?
BXFK}2AYYXQ$XJ(){Y0}RM9.png
. k+ W' G/ J5 f# c$ P" S
( |. a9 v* e8 @7 C. d% t3 U图 7.1.15 工程项目选项按钮
  I( {9 \/ \5 ]# I# Y- K3 D3 u4 S" f9 U1 r( M
在弹出的窗口,选择“Target”标签,如图 7.1.16 所示。追求稳定,这里设置ARM交叉编译工具链为“Use default compiler version 5”。“Use MicroLIB”也可以勾选上,编译出来的文件占用资源会更小,也为后面调试串口实验提供printf。再下面是Flash和RAM的起始地址和大小,与前面图 6.1.4 所示的Flash和RAM是吻合的,这里无需修改。
2 p: F4 h, m" o+ w  o% t  k, P# p6 `. _( _3 T
Y_1{KRRBOLR{E]@`8K8BJ1Q.png
2 j+ \& F- Z; V$ |7 S& }- _  h1 P; @2 _; O; ?; k
图 7.1.16 Keil设置Target+ n: E3 ?6 }; p0 a. M5 k; z; O  m
- V1 W- n. I8 q$ u& n! x8 L, E
切换到“Output”,勾选上“Create HEX File”,生成hex文件供其它烧写工具使用,如图 7.1.17 所示。
8 l. Y2 V/ R; f' m5 ]4 P# e+ B' @9 K3 L
02HUO5_K)0ZT4RPU6T)LCU1.png
8 r, V/ f0 a8 _0 A( K# M7 X* C5 g  l3 n) m- Q1 y
图 7.1.17 Keil设置Output, {7 f; \% q. p4 i7 y- s

! H3 A: H# J9 y+ @再切换到“C/C++”标签,在“Define”栏填入“USE_HAL_DRIVER,STM32F103xB”,分别表示使用HAL库,使用的芯片型号系列。HAL库很多C语言语法采用C99标准,这里需要勾选上“C99 Mode”,不然会编译报错。最后点击“Include Paths”最右边的按钮   添加头文件,如图 7.1.18 所示。! s9 h$ K; C% O1 @/ h

$ Y. |  t6 F+ w( L" {7 Y在弹出的文件夹设置窗口,点击   按钮,依次添加如图 7.1.19 所示路径,最后点击“OK”。- q) u/ {9 O5 O# c
" h, B/ ~- G7 {
P$XQANRM3X{WX(34CJ3PQ{L.png
3 \/ ?. c- x5 J  N' q' s* k
- A) _0 o9 m2 e  N! u+ s) ^图 7.1.18 Keil设置C/C++! z1 A1 R0 m; O# p
/ X5 Z! ~$ k5 n% ]% E" |
W@6`RA%}QSM$U_7XXT_}`9P.png
4 Z. R6 ]& F) q3 r# |! W- k' V. B% D3 Q
图 7.1.19 添加头文件路径
: T9 o% D/ x# |" e1 ?
( I2 D( _9 q* C( l2 A; Y切换到“Debug”标签,我们使用的ST-Link,因此需要选择“ST-Link Debugger”,最后点击“OK”,如图 7.1.20 所示。
) {- X0 s; o% B1 P4 d/ G& |6 e* R1 G- N9 o9 Z2 N, U
5]RCUR`95TL~~K[9~)DI49R.png $ h2 K6 f$ E% u

4 D  V* J  E0 ^- V, u: B. z图 7.1.20 Keil设置Debug
$ \3 {7 r; {& }+ N$ h3 g$ n% T' J5 |" \3 q/ J1 w
以上全部设置完后,点击编译,编译完后,点击下载(这里需连接ST-Link才能点击下载,否则使用100ASK_STM32F103_Tools的自动下载),出现如图 7.1.21 所示的红色下划线提示,即表示编译、烧写都正常(当前工程主函数没有任何内容,开发板无任何现象)。之后便可以,以此工程为模板,编辑main.c,向“Driver”添加外设驱动程序,进行开发。) t; e0 j6 d$ @% p) a& {6 f

. n) {1 J: j; S4 w U6GI5[QL(]OB[J92A(%(DM0.png 4 l9 i7 P% Q# X8 c

/ m1 |& t* T1 ?" S! H0 |% ?) v图 7.1.21 编译、下载测试
( W' l1 i, ^" H6 \7 t7 Y
! F" Z# _+ f' y  b( p: p
4 @+ I9 ~2 T; |【总结】, z% T. p) g# g% a5 F: \1 o; u, t
, N, a5 L, X- }
工程模块的创建步骤如下:' I$ ^* Z9 y, Y" k, F2 p& E
/ n! N' |: R, E: V2 b
1. 创建相关文件夹;
0 c! s+ a9 G0 n4 t$ T3 ^) y4 I
& W; d: r+ p) U$ C$ Z& X+ |# V2. 复制CMSIS和HAL库;
$ P/ H2 v' K+ n/ m
# W; K4 `9 E3 o9 a) O9 a0 X3. 创建“main.c/h”和“stm32f1xx_clk.c/h”;
2 w& O2 F% X1 D5 r6 B- A; F7 y5 S) C8 L* z4 A# u- n$ [: D" e
4. 创建新Keil工程;
7 o7 o; e# ?  v, w9 C8 P9 c, @
4 z3 c( U! r* c  Q* [3 [/ G5. 添加组文件夹和工程文件;+ A2 ]6 x* V) A3 r3 Y4 G5 Z; N% |

( J$ {8 [" b' k( h3 W6. 配置Keil设置0 W4 O) _$ l" n2 S% i$ [" b

& t" m9 L% G, j4 o# Y0 ^- {! g1 P" q: g8 e( R2 ]! c
7.2 Keil常用设置
9 y% u1 E5 x" r# u) G7 @5 |除了上述基本设置外,还有一些设置可以方便日常使用。  q$ ]2 f  I* C, L4 ^* V; c
. r. d. f  {3 v) X4 }. `# A2 S

% F1 W. |" W0 e6 L' Y$ b1.2.1 下载后自动运行程序

2 _1 b; ]! F# w* n' L6 qKeil默认在下载程序后,需要手动按下开发板复位才能启动程序。通过修改修改配置,可以下载后自动复位重启运行程序,方便调试。# y& I% v' S1 E4 K. g( h% v1 v
  y+ L7 S7 k2 b5 U& D! h  S0 N
点击“Optinos for Target…”按钮,切换到“Utilities”标签,点击“Settings”,如图 7.2.1 所示。& z& e$ [3 g$ ^3 |" z+ m' u

  p& w) b" n# ~ @]MEL9@RLNSW]RX}EM9KBXW.png * p- T& D; M+ V+ `/ ?; O

3 l) k3 t- @$ R+ ^% l: j图 7.2.1 Keil设置Utilities2 o2 F- O' @/ O, h7 c
' M& e2 L! x3 g8 c3 r, w
随后弹出设置界面,切换到“Flash Download”标签,勾选上“Reset and Run”,如图 7.2.2 所示。接着再切换到“Pack”标签,去掉勾选“Enable”,如图 7.2.3 所示。
4 X9 w+ c' H7 ~$ M& A2 X+ \
1 ]* c1 Y  n, {; N JRN$ZNF84_RWDXW_V{@Y{VR.png , L7 F" M4 H- l; I5 T
" Y3 i2 C' i' i; V
图 7.2.2 设置自动运行1
2 {! G. N0 y3 \  ?
8 x) f4 B7 X5 u  |: m4 [0 p7 \) c 0ZE[`XQC{@%4MS964$VZT.png
1 V6 b* Y' E7 Q3 M) p& P: `. K- ~" E
  c( i- ?; R$ E" P6 R$ m5 @; R图 7.2.3设置自动运行2
$ A. _# O* i4 J# Q
' {3 V& n. o) W5 D# |' M2 u6 F  y4 t) Y& J! n* F7 [
1.2.2 生成Bin文件
' i% Y+ \- f/ @- j9 {% Y实际开发中,可能需要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 所示。- ^% U; |4 S  u" A1 _

7 o+ U8 Y, E: o# h9 I. V E_R3AFUIFA%@[0}OD~3Y5AW.png : d/ a2 p* r, X/ w# T' u# i
1 K& W3 h: f- m$ G
图 7.2.4 设置生成bin文件
+ ~3 r. b$ J2 [设置完成后,点击“OK”保存。重新编译整个工程,将在工程的“Project\Objects”目录下生成xx.bin文件(xx为工程名)。
( B9 @. l- _1 h3 g9 {! N6 d+ }, U4 u) B# n6 q" q7 s
1.2.3 字体编码等设置* U$ X% b8 z" q3 c
点击下图按钮,进入Keil设置界面,如图 7.2.5 所示。
: e+ P$ @2 ^" I& b. g2 Y& r
, N6 v1 S0 O4 [" V NE{$H%UTY63}FR669(A)L24.png 0 M; t' |6 t9 E' q' r( Z

: J' G8 O+ Y/ c  S8 C0 P7 ]* q图 7.2.5 Keil设置界面
0 M  o5 A% l+ [- ~/ i: ?7 s
; {6 P7 B, o5 r' y  G0 @# B. c在“Editor”标签,字符编码选择“Chinese GB2312(Simplified)”,可以解决代码中中文注释乱码问题。在下方的“C/C++ Files:”的“Tab size:”设置为4,可以解决代码中缩进对齐问题,如图 7.2.6 所示。0 @, j; Q) ^1 r* k
+ c, N$ Y% r4 l* m
{~0R}~%GG_5_NE0KD96J0R5.png ) O1 C$ l7 A, z; H1 Y

4 u6 _& e6 I. `. `' `( Q) e7 P图 7.2.6 Keil设置Editor
! Y, ?6 z. k. `- L6 j8 H
( J# E! k$ P; d4 H' m/ b然后切换到“Colors & Fonts”界面,选择“C/C++ Editor files”,可修改字体、数字、关键词等的字体样式、大小、颜色,如果没特殊需求,默认即可,如图 7.2.7 所示。
* F" V' g$ M' _3 M9 |
  A% w8 g) F4 P% L# w AMI31(_}%2}A2IBGZ(MAS25.png : }; e% V2 `! j  B6 r0 B
( ]8 J4 C2 f3 P( }# n& v+ v
图 7.2.7 Keil设置Colors&Fonts( U" Q# S+ L* a6 D

6 N/ K: X% S4 p$ f- u( K. x
2 R4 a3 M. v; m, d/ K/ f, V5 l0 W7.3 STM32CubeMX创建工程模板5 G' C5 x9 J0 a, S. F- N" g5 \. U
STM32CubeMX是ST意法半导体推出的STM32系列芯片图形可视化配置工具,用户可以通过图形化向导为Cortex-M系列MCU生成初始化代码工程模板。7 N* n9 [) Y% ]

7 ^9 P8 }- y* r$ T% u3 `# f相较于Keil创建工程模板,STM32CubeMX步骤少、上手快,但生成的工程模板比较臃肿,因此本小结只简单介绍下相关创建操作,后面的实验仍使用前面自定义创建工程模板。读者也无需纠结使用哪一种方法,以后熟悉后,自然知道修改哪些内容,在两种方式之间任意转换。
% K+ E/ I& j" i1 Q- }
. V" Q! P+ p" u% \: R+ @! v2 O2 m从ST官网下载STM32CubeMX,解压、安装、打开。首次运行会自动下载更新文件,待更新完成,点击“ACCESS TO MCU SELECTOR”通过选择芯片创建工程,如图 7.3.1 所示。
9 b6 p8 _% Y! G+ }, O* Q% F1 r. N1 T
`I6E6BI0V[CO7%U)I(KX{NB.png
* K& w" r! A% T- d( v: v) i! m
2 V5 z- G5 b8 d  U1 Q2 x! j' p图 7.3.1 通过选择芯片创建工程/ f" l6 \. R: _# m" {5 i0 Z

4 H: }1 {$ @! j随后在搜索框输入“STM32F103C8”,右边选择“LQFP48”封装,最后点击“Start Project”,开始创建工程,如图 7.3.2 所示。: Y: H, ]5 e5 I' d8 s5 J

. S/ N$ i0 P; \/ H XC$}@J1(MK2Z14A]MF_M{5Y.png * U8 K$ S7 d8 f  A5 c
$ E! P' x* N! k" n% J
图 7.3.2 选择芯片型号
/ p! `1 m9 N' b# u0 m; ]+ D2 V( j8 s( F4 E8 o, A" X" Z
随后进入引脚配置界面,该界面可以图形化选择芯片引脚并配置,如图 7.3.3 所示,这里就不展开叙述,感兴趣的读者可以网上搜索下资料,比较简单。
  v& ^, Z& K$ {# P' h7 Z. ~1 K! g) o: W
_T5(5LE99A5]$K0FMHA0A~E.png 0 s+ u- E8 F4 I/ u- t2 }
  I8 ?* {  L+ r2 I: {5 Z4 y& ]
图 7.3.3 引脚配置
; [: Y3 ^: e2 l: o- p/ a/ S+ O/ y( M, i
点击“Clock Configuration”进入时钟配置界面,如图 7.3.4 所示,在该界面可以图形化的配置时钟来源、倍频、分频等,这里也不展开介绍。
; }$ b2 l" R" r2 @+ O
, W5 R* u; @0 B APO@DP`EFLA6S{3H24OE13K.png + K$ _: q# V8 w( j  N

  m  F! z$ j* ~: G3 d8 I图 7.3.4 时钟配置
( d; ]( w* o, w. Z( g6 h8 G
+ ^/ j$ ]: \$ g2 g+ v6 N点击“Project Manager”进入工程管理界面,如图 7.3.5 所示,在该界面先设置工程名字,再设置导出目标IDE为“MDK-ARM”,版本默认V5.27。
$ }9 f" c1 t( V8 C% @$ N7 x
1 L) z8 d- u3 I/ ^" ^& `: R ]_6D67V4YA10}HD(LEF1COK.png $ D. {  Y5 @1 {: u  N

5 T5 Y6 u5 r( S6 S" W( D" A图 7.3.5 工程管理界面
3 Y1 O2 q. m1 t1 Z+ b
4 {" P0 n+ p8 j
0 z, b/ s" _3 @再点击“Code Generator”,勾选如图 7.3.6 所示,最后点击“GENERATE CODE”。
3 Y/ Q9 V2 F/ @0 x/ c
$ Q$ o# U6 Q6 m/ v9 u# p/ c `ILHXIS$B0Z3I]YK}N~){J4.png & d  O9 g" R- m0 r' P6 M3 g

+ a! `2 ~) \/ Y8 x- U" z图 7.3.6 设置生成代码样式/ X5 @( l% U+ r" U4 F
# G' _; N  }: i, ]

8 k9 _6 L# A' c. w* L$ z( b待代码生成完后,出现如图 7.3.7 所示提示,点击“Open Project”打开工程。
8 Z: m! E* E, x' Z$ r% M* x9 ?& \! m
; U" g& q, W1 x- e# I: y% G 4BQ}D)$R$KC$D_P%M{XG$A4.png
. |$ A4 V* r2 G/ T% B3 e* J$ x! H6 R9 \7 h7 S2 Y% L
图 7.3.7 打开工程
8 `0 E. Q* X. n0 s* n; Y" l' U( }: n4 R$ P6 M/ x" T/ T* @0 i1 y; Z
随后,将使用Keil自动打开工程,点击编译测试,编译成功,没有错误,如图 7.3.8 所示。以后用户只需要在“main()”里添加代码内容即可。
6 Y' Q# u8 L& |! J- ?9 H. w: [4 o8 o3 W5 l& Z- R9 ]5 W; r7 |8 h  Y: k
R9Z_L3U81S@QV{PTHC_I2%Y.png
9 m- c/ O* A0 z! H1 t; ]4 c5 Q% S% [1 l# J$ Z5 O
图 7.3.8 编译测试) b5 L. A+ e# }0 G
, J3 e/ i* F5 v( f# F# `

5 t2 C5 w# a# ~" s; K【总结】
' a8 c: X0 a6 x  Y/ j% M; |
1 A3 q8 w; o0 q使用STM32CubeMX创建工程,非常的便利。但同时也限制了用户对工程的调整,代码内容、注释也臃肿。如果用户需要快速搭建工程环境,STM32CubeMX是一个非常不错的选择;如果想深入学习,根据自己的习惯优化,可先熟悉如何自定义创建工程模板,以后根据自己习惯调整。
# `- H0 ]/ d% y* a4 _9 M% b; U
7 F; m/ E. }" I5 J; y3 T( |* [8 y6 `
$ U9 n' i; `$ L0 \* D  a1 P. v& |8 R$ c2 j! [3 A2 h

& J, ^/ p; x0 f8 h6 i, M* u3 Y; y' ~

5 `8 H* w3 O' N4 p( w, j" Q* N6 F( \6 I5 {
9 @3 j; ^9 N9 a

* f( v6 l9 ~: V& D4 L( r3 D! t7 u* l5 e0 W* |* Z: d

' d. _2 F' _6 \+ F7 o0 ?. \- S. s+ |7 v: k8 b; w7 z
收藏 评论0 发布时间:2022-4-27 21:15

举报

0个回答

所属标签

相似分享

官网相关资源

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