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

【经验分享】STM32 新建工程模板及配置

[复制链接]
STMCU小助手 发布时间:2022-4-26 22:39
前言# T* \- s7 C% Q$ {. }( v* \6 h
在我们新建一个工程项目时,需要做很多的初始化配置,这些配置比较繁杂,记不清楚也容易出错,我在这里记录一下详细的配置过程。
% A$ O, R* m: C4 m* }3 h" n/ q; r( @. i
一、开发环境搭建# j8 J/ q% A4 l6 ^& V
1.创建工程文件夹

: }5 Y- K( C; d7 e3 `. a2 O  B为了方便我们项目工程的管理,我们一般先创建一个工程文件夹,将我们在开发过程中用到的文件和写的函数分类别的放入项目文件夹,方便我们的管理和修改。
+ f2 S3 H' f/ v, M' h# O" I- A  A' E& x3 D  u
工程文件夹的分类方法有很多,我以其中两种为例。; ?4 w  g; w: Q. Q0 s

1 G' b/ Z# Q7 @7 w+ z(1)分类方法一(建议新手使用)6 a8 p1 [/ m2 d+ l$ q6 o( Z
# }  T4 z: ?* r" m
F4[E}897289T8]PX0_S%2HU.png . C. F6 C( y+ d5 y

  D$ Z' r; t5 u/ Z+ z第一种分类方法如图所示,创建五个文件夹分别存放不同类型的文件。
- H; F; ~. b6 a4 R) w) ?7 y
& {. r6 T2 C+ f5 a3 g4 y: u6 hLibraries:库文件,下分两部分文件,第一部分是CMSIS,存放启动文件和core文件;第二部分是inc和src存放外设程序的源码和头文件/ p9 s4 G4 N) w7 v1 Q

6 E: o3 f; y& W 9_C14S%UPT}C)CHU`_{2~BL.png ) [% v9 Y" C: _7 j  `
! e# N: U  K, T( l3 s
下面是各个部分文件均来源于官方固件库:
/ N! w/ i9 u1 Z4 g* @+ ^- W: Z5 Z9 D; W) A- v* l' L
B$HF_4QGYSE9(N{92$$ZNJL.png
% c  }( h& Q7 x, w# q( n1 l& z$ y
99OBNQ]3SI6_N%I3J2QD)_9.png 8 k' e# w1 E/ e
  s& L; y8 l' a& Y% u
H[C%U0]UXY2FDDI]SJG)N7W.png
" O% Q8 `* b" z% @0 F- _0 W& H
* j, o4 d. F% i; j% i L]L@%%3SSKXL$V29C[)C6$D.png
7 d3 n& [/ T! b6 z5 Q; u/ ?# v, w7 f8 E7 a5 [
Output:存放项目的输出文件,主要是.hex文件的输出路径,不需要复制文件到这,在项目中进行相应配置即可。
( ?7 A) j, K! k3 K
% F( f. e. T" }0 p# v& f0 [Project:存放项目,在创建项目时将存放路径选择在这。) B5 l! Z/ k6 [3 y8 g) a. l
" \2 \; {  L; U& h/ A# g
SYS:存放一些我们自己写的经常用的宏定义和常用函数,比如:delay函数、定时器初始化函数、sys位带操作的文件。
. w! ?& [8 ^, o) i
2 W4 }2 z& l$ s3 N3 I# u5 BUser:存放主函数、我们自己写的文件以及库中少部分文件,其中需要在库中复制的文件如下图所示。3 H4 B' R7 @+ g* R! [# A- K3 f
# X+ Y" c3 V- Q- i. m* J$ B! [
56W[E9~6L92S~YVB{V]M.png
' r: n' q2 D, n6 [! ^8 D; p; e9 w) f/ A4 ^7 e5 G# U! k2 h5 m3 G3 u
最下面的system_stm32f10x.c文件在之前我们已经 添加过了,这里不添加也可以。2 ^% S3 u' E1 n2 [$ r# N
# D: U: K7 L9 S' I
(2)分类方法二(更加方便管理)
% v1 K( l+ ^- G: ?" ^) ?8 Y3 W; K4 v9 l$ a4 X9 A
DMV`HP_1~2}%`T6URYQ9U`6.png : n9 T7 ^  @4 O7 J2 B! x9 \

3 e0 X" _9 [/ G7 t. Z$ k. v  v第二种分类方法如图所示,对文件进行了更详细的分类,下面分别介绍。! L5 d  t& @9 E+ Y& b9 y
( E" a. i7 x1 x6 G7 D% _2 J. _
CORE:存放内核相关文件和启动文件
, Z. L8 ~8 {( w: e
* [7 |3 T( o$ @1 N. k/ Y 2A2Q$WCW4[620]DWBJ)O3.png
( K4 F- B8 P$ @# V
6 Q' P  f# v3 v5 h7 I: n HARDWARE:存放我们自己写的一些硬件文件,这些功能一般是STM32直接支持的,比如图中这些功能。/ ?+ S, D0 E1 M' K
: \8 K# v# \# G- b$ Q
$GDB]LQ0A(K]V%(MXYTLCYA.png ) H! Y, ?& M( m4 w1 g8 N

  m) P, k" P4 u MBOT:这个文件夹可以以自己的项目来命名,主要存放我们开发这个项目中自己写的独特的文件,比如我这里的编码器函数、小车方向控制函数等。( l+ G' a/ w/ K2 J- H# v4 N9 e# S1 n
* ^9 m: N- g, l
OBJ:主要存放输出文件和.hex文件,相当于上面的Output文件夹。
, a  \1 ^$ }& L9 D) c+ ~  \- {4 d9 c# F
STM32F10x_FWLib:存放外设相关的头文件和源文件。
# W" M# O+ ~4 d3 b" z6 `3 e+ y8 A5 P7 l1 a6 V. _+ `. |: ^
" q/ J+ L% y! B& Q$ _5 W

* W' ^2 p% Z0 bSYSTEM:功能同上述SYS
# w( O$ }+ y) S& [1 r2 w2 v4 Z9 {2 D( }# F8 ^! j1 ^& c
USER:主要存放主函数、以及库中部分文件,具体见下图。
% q2 E$ m* z2 l6 @4 p) f7 v( ^+ F1 M) [
~JJ]H7}V(YMSAPXT([[}5BJ.png ) e* P6 i4 b" c
  q5 u( D, V- r) t. q( K: p
020S_XI19F26Q}EJFOTT%_U.png % L( s# a/ X8 r3 X/ C# P
2 F1 _6 ~* ]5 `% O4 Q3 x
上位机:这里主要是存放了我在调试工程中使用到的上位机程序。, U# `( H0 Y% y6 b) o: s: W) t7 Q9 V
, u! y1 m  \- x$ B
下面的步骤以分类方法二为例,分类方法一只是在“品字形”中的配置不同,在“魔术棒”设置中的设置相同。& a; q0 ~/ n9 ~$ x; ~

/ B  W% v8 b- L4 U+ `2.新建工程9 n" }' i' ^! x' b+ v
打开keil5,点击菜单栏project,点击New uVision Project创建一个新项目,填写项目名并选择上面所述的项目存放路径,点击确定。& n+ F! I+ {+ }  u, P
/ L% a' x7 N& c. L# F
D$)HU]4)(_DT3[V21KHX_08.png . b0 a8 P/ i! i2 V

+ @; a4 L3 z6 Q 选择自己单片机对应的型号,可以通过搜索栏搜索,也可以展开进行选择,我以STM32F103C8T6为例,下面弹出的对话框直接点取消即可。
  ]( y$ E, m. N; ^& o+ H' V. y( @* b3 H4 Z0 R
_KUJGD]B5]JY4B3O@V98%@2.png
4 q6 c6 p" G4 S% }1 T' u- R) ~# |: I" `( h3 w" z4 X& k
点击“品”字形图标添加我们需要用到的文件,注意这里添加的都是源文件(.c),因为头文件在编译时,我们包含相应的路径后,.h文件会自动添加到相应的源文件分级下。
) T9 b; R- Q1 n- j% s* _8 l/ I3 O* v( V- i* a
E[Z}S)87NZJSUYU)I5INQG2.png " u* V+ W/ v- S$ p& B. I# U; S

% d' v3 j, k$ C2 c EL}K]{J]58IMP$XHNJ@0E{6.png 4 e5 H6 H3 N/ v. A, J
! K$ ^  E) h# J$ L, w1 u% K
3.开发环境配置
0 @: Q1 y+ x( A8 B7 k+ K4 F9 e点击“品”字形旁边的“魔术棒”,打开设置。$ z& o1 h* Z: m6 T+ x# z

  [# N0 Z! ^& D(1)Target配置1 Y; ^. C2 s( P' T5 C

" v9 l& e; M% _1 n9 c8 ~% ]
3NG~N(_Q86POM3(O5X_U1(3.png 6)F}W0U[V[HKF[(~S(53J.png # u8 D2 F3 a: t+ J, a! A  U& P

4 G" Z- w) F+ d! j* [( | (2)Output配置。
( T$ v8 q- ?9 T8 q7 m0 e/ E: b- n6 A- n+ o9 y5 A1 |) Y  m
ELNA_(5`2)DLFXY$I2`%X%W.png
$ I+ h" M# T2 P+ Z6 i% ?
, n  `$ D' j7 E4 f(3) C/C++配置
3 K! B4 N6 ]! c7 Q
在define中需要加这两句话,它们用逗号分隔,第一句是使用标准外设,第二句要选择自己单片机Flash对应的大小,在数据手册中可以查到。) E, c! D" p( w5 \: R1 ?* R

7 C! j3 E" x, }9 E  @1 K5 G4 TUSE_STDPERIPH_DRIVER,STM32F10X_MD
. i7 [/ `+ u* C: f/ E* b5 V. \: {
6 W) H6 g% U( Z5 P 8%@{6@~FCC_4HTI%IC)AN@K.png * r" i% f1 z9 G4 ~. t! j# ^

7 N) R- U# H& j& {. C* g0 W# l 头文件路径要添加全,凡是include包含的头文件路径都要添加进去。. p9 V8 p3 v( ~. Y. o& l  H& f

4 f! d  {0 [1 Z# q9 p 9${)C4L[PT9`UMG7)$HRZ4O.png 5 J% }6 S7 H* M, `! @' p* S
0 A' h7 O: z# h9 _
(4)Debug配置  O; ], K8 e0 U, I7 G& _
1 Y+ C- t1 s* u: w! b1 `2 [2 |
0]]E5O4A2F{5~88LM4HFQ6H.png
7 V) v' J' E. N5 O0 ^1 A0 l) M, U2 n
第二步是配置仿真环境,具体的修改需要根据自己单片机的型号进行具体查找,查找方法如下图所示。
( l. P7 n8 h2 @' m7 P" W
" U  J+ d7 G3 |$ c5 s8 Z先在File中选择Device Database选项。. [8 s5 U5 C! \( }5 Y. t- h, g
5 M! y  q& l1 `0 s
6%1%X5(6~0MF$}QL`426FM9.png
, Y4 V% e% Z$ z; ]6 _& L8 i9 d. |7 s* K* Q
选择自己单片机的型号,记住SIM这句话,其中的第二部分中,将 DARMSTM.DLL 填在左侧的软件仿真的Dialog DLL中,将 -pSTM32F103C8 填在Parameter中。右侧的硬件仿真只需要将DARMSTM.DLL的“D”改为“T”。6 H: F/ U& N( r
* T& E- Q5 h2 m
}DZ0H1VV%1]~]@IO1MDJU39.png
# ?+ F$ d" q$ w" [: X* D2 N. V  o
到此我们的配置完毕,可以编译一下观察变化。0 u- V  Y+ i7 v  k: {4 m; h4 ?

% j. i5 E* [1 S5 j$ h$ a二、程序烧录配置
( V7 E% v' o- ?: U2 H
程序烧录方法传送门- `7 |9 v  t( _

$ Q- F% J- P+ n" l- H/ j  V- x( H 点击“魔术棒”,在Debug中选择自己使用的烧录硬件,比如ST-Link,点击Settings进行设置。3 [( y5 N. V8 X5 n

1 Y1 _1 O. h2 e) q D2WLWJ%`E0N6~PL~LTCCXEN.png
; V3 Y& J8 }2 ~
! _8 w6 z) ^% M; D( d- [4 C' T$ ] F{32(FU@D)H5{SF~{32PH]C.png : g7 v, J( w1 d0 ?" X, ?
* {) b8 b+ q/ e$ G" K
08Q14YW0`0IN54O342E)2LY.png % o* W- J; A8 z
KE7ZHNQ5U~21LTE9WH$FU9S.png 9 x$ r9 }- R8 W$ g

- G: w& P$ S5 E9 n! s
+ r; H% ^9 Z/ m: l 如果没有显示设备信息,绝大多数原因是接线错误!要仔细检查接线,看一下单片机上SW/JSAG端口的引脚名,与ST Link对应,VCC GND SWCLK SWDIO 这四根线要对应正确。- o5 k$ ~! c: {$ m

: P' w( y5 W( L+ D' w
2 K; u& V7 e/ U) O; w7 j3 x; y+ v9 Z% L( m# }
赞 收藏 评论0 发布时间:2022-4-26 22:39

举报

0个回答

所属标签

相似技术帖

官网相关资源

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