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

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

[复制链接]
STMCU小助手 发布时间:2022-8-30 13:50
7.1 Keil创建工程模板
- @% G& b3 W9 R1 \2 @4 H在前面“C语言使用HAL库开发”章节里,体验了如何使用HAL快速开发。不同于使用汇编和寄存器开发,使用HAL库需要为工程准备许多相关文件,也就是创建HAL库的工程模板。工程模块没有统一的格式,通常是根据多年的开发经验和使用习惯总结出来的,以“5_程序源码\1_创建工程模板”为例,介绍如何一个工程模板是如何创建的。
9 k; |$ k% F/ c" ~9 x$ q% ~$ |8 O# g
8 K6 O( J. j! N: K$ W如图 7.1.1 所示,一个工程包含五个文件夹,一个清理脚本,一个说明文本文件。. \' b5 q9 t( H/ D' [. n' H9 L& `

/ H& q4 t. I! ?4 h% F% k9 N
~4A3%YE7E7S({90_3_K[A{N.png
0 i( g3 R! Z& r9 f0 @1 X

& R* I" O# S0 l- k
图 7.1.1 工程模板文件夹
; j& P" F. E* a4 W3 _. I5 ~5 U4 J3 W
8 d1 ~  K7 i2 f4 v, T9 t7 Q4 n" o

+ I, x. w, q; C! c0 h, x$ Z       各文件夹、文件说明如下:
4 S. x( u6 I, W2 s* k/ }6 t7 H! N) p
Core:存放从SDK文件夹抽取的部分可能会修改的核心文件;
, F$ M6 w. A9 e/ ^+ A* K+ Z- [5 b% P0 e$ S
$ E: J% k; ]% a' |( C9 @1 d  UDriver: 存放用户编写的外设驱动文件;  L$ i: _( P1 X6 E; f

% s/ I8 x2 U" r7 JMain: 存放主函数文件;& }6 ^; f9 C3 [- X; N
8 q2 M  C4 D( {- X5 Z
Project: 存放Keil工程文件,包含目标二进制文件;
2 e* @" P1 m4 ^0 i3 p3 V' J: B/ L! J
SDK:存放CMSIS和HAL库;  H" w, H( R4 s+ f1 o. E' v
5 h! e8 Y/ q  a8 L
Clean.bat:Windows脚本,用于清理Project里Keil生成的工程文件;
4 W" y* N% ^! q- R$ F: T& U: v6 f8 b8 m1 L. j* a8 c  M$ k) k& p, K
Readme.txt:该工程的说明信息;2 g/ `9 U5 i$ v
; z( o/ Y8 N  O3 v% l0 n
“SDK”目录的内容来自配套资料“2_原厂资料\7.0_en.stm32cubef1(原厂固件包示例源码).zip”,即里面“Drivers”目录下的“CMSIS”和“STM32F1xx_HAL_Driver”。
9 N1 H: f; M( `
/ U( F8 ?1 K9 j/ P7 ?1 T3 p3 |“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_工程模板”的工程代码。! b  k1 h4 d) Y, L3 X3 k) f) [
+ Q1 A4 L4 V" a) L+ Y/ d0 n
“Driver”目录存放用户编写的外设驱动代码,比如LED灯驱动,这里示例不涉及外设,暂为空。
$ T+ U# I+ ?9 a3 k: G7 _4 a
' K5 {1 e( {' X“Main”为存放主函数文件目录,创建“main.c”和“main.h” ,参考“1_工程模板”的工程代码。5 `' o' Z" q& s& D9 P0 W
( b  N8 q# {* S) T' X
“Project”用于存放工程文件,工程文件由创建Keil工程自动生成,这里打开Keil。9 |) R1 f. ~5 V9 p( h
* o7 N8 V6 N3 P) |
" C7 V4 a( c7 D) P) d& ?4 [

: C( A  h7 B: P  ]打开Keil后,点击“Project”下的“New μVision Project”,如图 7.1.2 所示。: x- L) B4 j0 r# q8 ]% ^
I6_F_}C`$OK546}{B}[Y`@H.png
3 [1 B6 }3 t5 |5 _
2 W, m4 m; I! p; O
图 7.1.2 创建Keil工程
/ S$ h  p0 S5 X" w8 S  Q
/ _; c5 o- O- a7 ]! Y  Z3 x& F

9 T) U0 u, ^: l* M  ^" L' a' T) R随后在弹出的路径选择界面,选择“Project”目录,工程名字任意,假设这里为“Template”,如图 7.1.3所示。
' L" K+ [! t' v6 _; R
# `8 \6 C1 ~/ A$ y" s
4~7W4KE2ZQASK0XTQQ_AK.png

# b( a& d" f8 H. r1 ^0 i
( a5 p7 l% d% ?' ?$ f. b
图 7.1.3 选择工程路径和设置工程名称
; R& A  b  @9 y1 P: @' W+ g# C0 }
" ~- }8 l' Z8 w$ T; e
接着在设备选择界面的搜索框输入“STM32F103C8”,然后选择“STM32F103C8”,点击“OK”,如图 7.1.14 所示。
: S; r1 _$ l# Y7 n2 G$ o2 d! F. U7 x
13(SGZEYBA]ENT3ZQKD}M[7.png

; m4 l- y0 ?0 j# B5 e
" c5 N! X8 d0 O% U% `; I5 H: ]
图 7.1.4 选择设备型号
; }3 v2 a5 o8 |& i
随后弹出运行时环境(Run-Time Environment,RTE),目前用不到,直接选择“Cancel”,如图 7.1.5所示。0 \) c* i% j0 l$ Z, `9 s. _7 c, I

7 d0 t* |4 K1 o. [9 e4 X
66}$GH3JU`93$L)$WO7I.png

2 T* v- o6 k% x8 E: ?& V
8 u' A) G- \+ D$ f6 r* X
图 7.1.5 管理RTE

+ U; J& W" d" s. F" X1 P& X接着进入主界面,点击“工程项目管理”按钮   ,为工程添加文件,如图 7.1.6 所示。
3 [) j+ b/ c9 \$ c% W
5 [, h. Q+ c% p* [' I( }6 N
31M]GAQLTGEO8}SX7GSP}77.png
9 B# r' S" k, h0 q( h+ T) U# n& c2 O

  ~$ m. Z- o7 G- f2 a2 A
图 7.1.6 工程项目管理按钮
9 f; H/ \3 ^5 n
在工程项目管理界面,有三个窗口,分别是目标工程(Project Targets)、分组(Groups)、文件(Core)。双击“Project Targets”下的“Target 1”,可修改名字,这里改为“Template”,双击“Groups”下的“Source Groups 1”,改为“Core”,如图 7.1.7 所示。  H8 B3 k- A' ?
6 X% C+ b" ^/ i! ^# |: W/ l2 p
_~NJNAEA6QV}[9WN6Y)A`}R.png

" ^. _7 B- M5 e+ `  T9 `" J, q) S  T; I5 j# ~3 U) u
图 7.1.7 工程项目管理界面
$ C. O( H) F) b5 H. |0 W) c
接着选中“Core”,点击“Add Files…”,接着在弹出的文件选择界面,进入“Core”目录,然后需要修改“文件类型”下拉选择框为“All files(*.*)”,才能看到所有文件,如图 7.1.8 所示。! M1 D/ I/ A6 P' H: v; A: \

2 N' G  z4 U7 ~5 ^9 J
8{~`34ACUNL5O8`WS$TA5Y5.png

6 w' F1 ^$ f% u1 k+ \' n
* _/ e& W: @" E1 q' r
图 7.1.8 选择所有文件类型

  ]6 ^( H9 C7 C/ l
, X$ g( R1 Y; `  D4 J% Y9 o然后选中“startup_stm32f103xb.s”,点击“Add”,如此循环直至如图 7.1.9所示的五个文件全部加入“Core”。
7 v9 q  B! _/ @) d7 g' M
  U0 O6 W7 W7 ~3 G) D5 h
CZWQE~$RSO(5O0~A44%ANOG.png

+ M* c8 p  r0 f! Q: F
5 ~1 j: x+ H8 a* Z
图 7.1.9 选择加入Core的文件

4 v. H  S$ o9 q' Q8 [( B- ?4 Q9 d  t! ~0 G6 w
再点击“Groups”的   新建图标,创建一个新的组,名为“Main”,如图 7.1.10 所示。; E. c6 e' t- [+ y
4 @7 @2 {! R$ b' p% J" m
SP{H8O8N2]Q[I~)C2_G95.png
2 i# i! {2 {. Q0 n$ p
2 v; ^# F! ^; `7 |1 X
图 7.1.10 创建新组Main
3 Y/ w* E3 k& I5 P1 a
接着选中“Main”组后,点击“Add Files…”,选中“main.c”,再点击“Add”,如图 7.1.11 所示。
+ J& N' ?: l% z+ C* J+ r& P6 c7 W
; K$ ], A, B5 I6 A& m* u$ H
2C8$Y())8NAPG{6S~4}TG~M.png
1 q$ Q. N& Z6 q+ \+ Z, K

6 C& o: s7 ]3 n# A* K2 ~6 b
图 7.1.11 选择加入Main的文件
$ U/ F& }# J2 R# T1 R. x5 C
再点击“Groups”的   新建图标,创建一个新的组,名为“Driver”,该组没有文件,无需添加。再新建“SDK”,加入“SDK\STM32F1xx_HAL_Driver\Src”下的几个必须文件,如图 7.1.12 所示。
( p5 k; r2 W% u2 u0 N) J; ^+ w: |% T. _# D
}3M~]HMC4KG[HN4S2TH0]]Y.png
! l9 g" F% h' C- J* ~# Q

$ Y* N# P  J. y" }; u" Q  C
图 7.1.12 选择加入Src的文件

/ i5 E$ n; S9 w" Q9 [0 ^$ n* N' L所有文件添加完成后,效果如图 7.1.13 所示。
8 J, G: ^* B8 l3 R6 Q4 r; h# q7 Y, w6 E) ^6 r5 v) B+ ]7 [
F]G4S{9`8G2GK4K0(M[LC16.png

9 f( S, V7 ~0 R1 Z5 ^" ]$ j; N1 O& E% P$ U
图 7.1.13 工程添加后各目录效果
& \$ b  o9 @; x9 |
按上图添加完后,点击“OK”保存,如图 7.1.14 所示。, P, v; _8 q; @, `
& c  b) ?' K$ E
[[V@E69Y8@TGL9KZ}CA)ELQ.png

; d2 e" v+ `  @# m2 N* S; w; ~& b1 }* s
图 7.1.14 添加完成
5 ?0 }9 g/ s, V2 Z4 e5 L+ Q
接着进入主界面,点击“工程项目选项”按钮。: i7 O; R2 y* I/ B
$ b# `& e! Q1 U: [$ ^; \
(VJ69O5~OM`38P3BH()@B[5.png

. u5 Z' w- Y0 m. u* }0 l: @+ B2 A# x1 N: t; @# k
图 7.1.15 工程项目选项按钮
8 C! \5 Y5 b6 J3 W) ~) ]
在弹出的窗口,选择“Target”标签,如图 7.1.16 所示。追求稳定,这里设置ARM交叉编译工具链为“Use default compiler version 5”。“Use MicroLIB”也可以勾选上,编译出来的文件占用资源会更小,也为后面调试串口实验提供printf。再下面是Flash和RAM的起始地址和大小,与前面图 6.1.4 所示的Flash和RAM是吻合的,这里无需修改。# e7 j8 ~( i: i; ^

; }$ [$ C( G* x; n4 \, a
8$BJ11TQGHJ`3E2}4MGD7RF.png
2 h' }$ X: ~$ f, Z
$ \  a  l" M. K  o; |$ B8 ?7 N
图 7.1.16 Keil设置Target
! n; ^7 R! S, M+ U) Y6 }
切换到“Output”,勾选上“Create HEX File”,生成hex文件供其它烧写工具使用,如图 7.1.17 所示。1 h$ B- i9 f! A$ N& x$ A6 I

$ [) X8 P7 M, R. F# J# H* F
8[O2GHIWHA5T~I$R`34(][S.png
# |2 u- b; g1 l( e7 Q( \

( y$ g5 q1 v+ V# z5 w
图 7.1.17 Keil设置Output
6 X( V6 a0 A% g$ B5 _

+ u5 a5 {( d& B3 @1 L1 p! L% j' W5 ^: B! E
再切换到“C/C++”标签,在“Define”栏填入“USE_HAL_DRIVER,STM32F103xB”,分别表示使用HAL库,使用的芯片型号系列。HAL库很多C语言语法采用C99标准,这里需要勾选上“C99 Mode”,不然会编译报错。最后点击“Include Paths”最右边的按钮   添加头文件,如图 7.1.18 所示。3 `; H' s' w/ C3 @0 w! m* h
# v% J( K( Z; d7 W$ X
在弹出的文件夹设置窗口,点击   按钮,依次添加如图 7.1.19 所示路径,最后点击“OK”。
" m' `% `  h) |* W* x0 [3 ]/ T7 O) \, f1 n5 P1 ]1 l$ ~) @
[6D)C[LN5R{FG~B4O)0[TZE.png
8 T" R, |1 r' I" y
! y' g& N6 h) r. N/ E+ `) b1 ]
图 7.1.18 Keil设置C/C++

) o8 v. e# D* [. {, ~
% G% y! H& x% h8 W! N% s. w! Y1 q/ d% M3 S. U
$R$Y8456G8])GWYIX1F2`JS.png

9 [6 q* F" {/ O# X" u( T( A4 _' @6 T2 Z
图 7.1.19 添加头文件路径
) W; l' Q  G. q+ H2 M: {
切换到“Debug”标签,我们使用的ST-Link,因此需要选择“ST-Link Debugger”,最后点击“OK”,如图 7.1.20 所示。0 e- Q! l/ d* _8 Y/ n& T
" {# a! u0 P/ K: x% ~- p
61{8$[`3J0]X1Q)5GBMCV83.png
0 l' X+ G3 _. }  i1 x
2 }6 C3 D4 |! s$ v2 R3 G# w
图 7.1.20 Keil设置Debug
! H, M; _2 j+ ]$ `+ l
  \, U- A$ M1 O% \" \% W+ X' M; }% y7 g
以上全部设置完后,点击编译,编译完后,点击下载(这里需连接ST-Link才能点击下载,否则使用100ASK_STM32F103_Tools的自动下载),出现如图 7.1.21 所示的红色下划线提示,即表示编译、烧写都正常(当前工程主函数没有任何内容,开发板无任何现象)。之后便可以,以此工程为模板,编辑main.c,向“Driver”添加外设驱动程序,进行开发。7 y# a0 ^! y* k4 F  m, @& N
* v8 E+ d$ |# u( b7 c* T4 m: [
}T4D~YZ6%~Z]1[8YEMYKT~M.png

! @# l& b, ]+ m6 }# r2 z( q( |& `9 K
图 7.1.21 编译、下载测试
; f: K6 t  W) e5 l
5 `5 @3 P: z0 A; f: B

# g; w7 P. X0 a6 n2 ?【总结】
' k+ ~6 c0 A- z1 d$ M

" z) V; J- d0 z3 a工程模块的创建步骤如下:
! a+ i4 W1 i4 t! t9 C0 U6 \& a7 Y% [4 l1 ^
1. 创建相关文件夹;( V) M; ]8 L3 a* i, n( t/ X2 S; b% R
7 N. C1 J+ d! r3 ?4 s
2. 复制CMSIS和HAL库;" e6 [# z: C4 e5 j# Y

0 r6 a) F# n5 f, t3. 创建“main.c/h”和“stm32f1xx_clk.c/h”;
+ l" ?: }# B2 z1 `4 t% P* Y* k$ S- P: z2 Q6 k( G2 A6 A
4. 创建新Keil工程;0 r5 h+ U+ @( H8 _
' V3 C4 x1 n  d/ o
5. 添加组文件夹和工程文件;
- S' R  K$ g+ N4 Q, M3 }4 F/ n0 Q' {/ c- ?& R7 ?/ m
6. 配置Keil设置
! E: c: H( ]! K1 |* V! K5 z) a/ w* H& u3 N- E, ]8 ^( A& b, p

5 U( I: ^  d( Z. C3 Z) g2 j- Q
/ P$ s! a1 g9 j, B7.2 Keil常用设置
6 S+ j# F4 \! p' E( E除了上述基本设置外,还有一些设置可以方便日常使用。6 `0 {* ~. ]/ w* E+ t

" L1 [( F0 D# @" v* J  X/ _  F1 A8 H3 n6 Z8 |$ u$ V
1.2.1 下载后自动运行程序
  h6 L! ]; B( ]Keil默认在下载程序后,需要手动按下开发板复位才能启动程序。通过修改修改配置,可以下载后自动复位重启运行程序,方便调试。' ?3 }: B# ]; e) Y$ Y4 F

0 a5 g4 d' D0 o6 o# J点击“Optinos for Target…”按钮,切换到“Utilities”标签,点击“Settings”,如图 7.2.1 所示。! O. W; Z* x: |! I
# G- O5 X1 O  R' l  e- l0 a2 Z
67I4ANZW]P43$KU4){FY~RP.png
) }7 R2 }: _6 x/ Z2 q
2 U/ f, q6 t) D$ Q. G6 O" [1 I
图 7.2.1 Keil设置Utilities
% R+ }7 ]' C1 s/ }- K1 i/ d+ K9 q
* m+ h. _" b7 o. s* |
随后弹出设置界面,切换到“Flash Download”标签,勾选上“Reset and Run”,如图 7.2.2 所示。接着再切换到“Pack”标签,去掉勾选“Enable”,如图 7.2.3 所示。
8 x+ z9 l6 m; c. Y* s0 b* s  j! a$ f" g4 L: R" \& T
W)SNF]G05FX%{Z_}}QD]$]Q.png

2 A( R  a! N7 Y9 f0 C$ x' ^' P  m; z- ^( J8 w2 P! W/ q, c
图 7.2.2 设置自动运行1
4 c0 T7 P/ j$ }0 V2 m( U

/ v/ u+ g1 K! d! o# a6 `
3 U* H( Q7 D" Z; w. f. {
ZDD}2DK]J(~GK9Y]T8)9.png
8 ?+ s( T& N  a( A
! f' |/ g( s6 N0 K) W
图 7.2.3设置自动运行2
% k! a4 _. a2 a/ n* t8 ?

# O3 I( l+ |- Z0 V0 D: o2 I+ d5 \4 q$ F" a, f
1.2.2 生成Bin文件

) i. z9 [$ p7 h$ n实际开发中,可能需要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 所示。
# d. X0 B0 s. A3 ~5 P( K% V. d2 L1 R( n
J_`50U110ZZAO$UQ5Q0{EDB.png

0 p' J, U% ?  J% M! y: J+ u/ e4 E2 D, n4 q
图 7.2.4 设置生成bin文件

$ h8 N1 L$ T# Q6 y# w' u  G( I设置完成后,点击“OK”保存。重新编译整个工程,将在工程的“Project\Objects”目录下生成xx.bin文件(xx为工程名)。
) F, i5 M9 s" K$ k! [; b5 R, X0 O# t- l5 K6 d6 M6 b
  S9 \/ _: [. x( w
1.2.3 字体编码等设置
; r. u6 b. n0 e' N+ k1 O点击下图按钮,进入Keil设置界面,如图 7.2.5 所示。0 t( n8 W) f4 i% c1 _3 ^2 v  k
5 ^( E% X( r' F% A' N
QYY%]6YURY`%TZ0%@2NB4@7.png

/ ]' R# X. s! F2 P/ K8 v7 \
7 e6 K; Z# Q$ ~1 C$ |+ @4 g! N
图 7.2.5 Keil设置界面

, w* z( o  K8 p7 l在“Editor”标签,字符编码选择“Chinese GB2312(Simplified)”,可以解决代码中中文注释乱码问题。在下方的“C/C++ Files:”的“Tab size:”设置为4,可以解决代码中缩进对齐问题,如图 7.2.6 所示。
8 T8 e, E& \& H) Q9 t( Y) p2 m% E7 h/ c$ R
LQ2T{G2QTN{WF8LT]7H%`~3.png

# J- r6 E; c& @
) M% Q- @2 \, w: g% B# D! y
图 7.2.6 Keil设置Editor

3 A; V7 Z/ F; g1 {' j" @然后切换到“Colors & Fonts”界面,选择“C/C++ Editor files”,可修改字体、数字、关键词等的字体样式、大小、颜色,如果没特殊需求,默认即可,如图 7.2.7 所示。2 P, o/ t  @7 v2 b; F9 d
) }7 x. @0 A+ s% A# V
M5%``8P4JW5_VBJ1SU`LS.png
' P* K- B0 V; D( a! I* n$ d5 ]
( l) C: ]6 u0 Y
图 7.2.7 Keil设置Colors&Fonts
( ]3 r9 W1 K6 E+ ]" P5 c
9 ?; N# C$ r% f9 B/ W! w$ I

) t6 f: j  U2 W& v1 p/ e7.3 STM32CubeMX创建工程模板
6 q# U4 F  ?' j4 HSTM32CubeMX是ST意法半导体推出的STM32系列芯片图形可视化配置工具,用户可以通过图形化向导为Cortex-M系列MCU生成初始化代码工程模板。
1 I1 X, ~8 b& x: z+ @; J+ E8 F7 q% z
相较于Keil创建工程模板,STM32CubeMX步骤少、上手快,但生成的工程模板比较臃肿,因此本小结只简单介绍下相关创建操作,后面的实验仍使用前面自定义创建工程模板。读者也无需纠结使用哪一种方法,以后熟悉后,自然知道修改哪些内容,在两种方式之间任意转换。4 ]6 ~1 z5 t( z8 n& K

! r5 r' _/ p3 {# C* B  `" t* `$ o: T从ST官网下载STM32CubeMX,解压、安装、打开。首次运行会自动下载更新文件,待更新完成,点击“ACCESS TO MCU SELECTOR”通过选择芯片创建工程,如图 7.3.1 所示。
$ \$ J0 g& P! f# f5 J7 D' [! x6 r5 T0 ?
}MB3S@CIYVKV$)BDYMXMIY2.png
$ r# P% V; K/ ~

! f2 T, w2 k/ Z- U1 r, G: H
图 7.3.1 通过选择芯片创建工程
7 s! g% L6 U& y, b* r

6 J: k! |# H0 y3 L! m4 z随后在搜索框输入“STM32F103C8”,右边选择“LQFP48”封装,最后点击“Start Project”,开始创建工程,如图 7.3.2 所示。0 l& {% ^% N" [4 `, a

: h3 n4 M( T  `( i7 r
THA09BNS~N%_I8{UA[Y25.png
1 d; W' h4 T/ r4 [+ K& X
+ x$ m5 ]  s' f. m8 d+ b1 b% O
图 7.3.2 选择芯片型号

0 \0 W2 ^& ~, \, O  b" U3 x  Y5 ]随后进入引脚配置界面,该界面可以图形化选择芯片引脚并配置,如图 7.3.3 所示,这里就不展开叙述,感兴趣的读者可以网上搜索下资料,比较简单。
+ _* m1 `& N. {# O5 t6 N
8 `/ t0 a% @7 V, R
VJJ)%]Z%Z4X9PKSL$J5N_{3.png

3 L3 v/ _5 s& i$ U% \# d7 J, h  W. _
图 7.3.3 引脚配置
  y8 ~$ @; B2 L" N
点击“Clock Configuration”进入时钟配置界面,如图 7.3.4 所示,在该界面可以图形化的配置时钟来源、倍频、分频等,这里也不展开介绍。
2 s7 W3 s) J/ S4 U6 \
4 n0 w* W3 Z1 b7 r0 ?2 W
TWO1}ZWX`VR}$P]RX96T~[C.png
- n$ r- h9 ]. L" l0 n

% ~+ p$ x9 U9 \; e* ?4 f
图 7.3.4 时钟配置

5 n1 s8 z" g) a4 m9 U点击“Project Manager”进入工程管理界面,如图 7.3.5 所示,在该界面先设置工程名字,再设置导出目标IDE为“MDK-ARM”,版本默认V5.27。' K$ W' s1 S* ^6 X7 S* N

! ^6 A; P; g: }  M3 H
0L~WCJF]AW[7EV)1~{Z`33U.png
# w# ^' k/ f' i' e  F
* I8 X, t$ {: @5 Y7 \5 z1 ^/ y
图 7.3.5 工程管理界面

" |: R4 W. q. ]8 k9 h1 {再点击“Code Generator”,勾选如图 7.3.6 所示,最后点击“GENERATE CODE”。
9 i4 A% f. g/ r3 }3 q" p, h% _; `9 ]' G" u; `  V
@36AKES]]%}O$`@)B7UL(N6.png
1 {& P" |  a. }  Y* ?8 j

' v. H0 }- y+ \- G$ s
图 7.3.6 设置生成代码样式

- o. e5 V% T, \2 K) Y, [% p待代码生成完后,出现如图 7.3.7 所示提示,点击“Open Project”打开工程。
1 |+ v9 ~9 ?6 |* A( N- O% d0 m! M' _7 k! I& {& J
6$D{L2LL1LVME@HH`9ZG.png

: h% N- Z, j1 F; f( j$ t$ E# J. g3 Y
' A' z% Q4 O: I0 p; Z9 J
图 7.3.7 打开工程

9 I" I9 }2 }0 k: D" x- K& T7 M5 G  P" |# _: c! n" q' J
. H7 v- R- L7 X' o
随后,将使用Keil自动打开工程,点击编译测试,编译成功,没有错误,如图 7.3.8 所示。以后用户只需要在“main()”里添加代码内容即可。
" h1 \" z+ M6 i9 `; Q' Q/ ^* w4 N$ D. }) e2 n
I$VG2QEOH1U5(J[2[GO$F1F.png

6 c- y' N9 q8 `, b- i. I! b8 y) W0 Z% @, ~2 d) t; h
图 7.3.8 编译测试
4 ?$ X7 h1 E! u$ g5 g: l( [% S

  [) J- P6 F' C2 J& K8 S6 L4 }9 n) R9 Q! P- M
【总结】
2 D+ v* G6 ]/ v( Q
, j# W$ \. |7 A) C: A使用STM32CubeMX创建工程,非常的便利。但同时也限制了用户对工程的调整,代码内容、注释也臃肿。如果用户需要快速搭建工程环境,STM32CubeMX是一个非常不错的选择;如果想深入学习,根据自己的习惯优化,可先熟悉如何自定义创建工程模板,以后根据自己习惯调整。
/ h% u) P$ m! d& d: l
' x; |$ k( C' o! \作者:攻城狮子黄 1 p- k/ [! U; g
2 i. U; W# u0 W

! k- n. e5 S/ J+ T4 X! ^4 p
收藏 评论0 发布时间:2022-8-30 13:50

举报

0个回答

所属标签

相似分享

官网相关资源

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