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

【经验分享】STM32怎么创建工程:如何创建第一个工程模板(基于固件库)

[复制链接]
STMCU小助手 发布时间:2022-5-18 22:45
一、 首先在电脑的某个目录下创建一个空文件夹用来存放工程文件。创建好后在该文件目录下分别创建CORE 、FWLIB、OBJ、SYSTEM、USER等五个子文件夹。至于这些文件夹名字,实际上是可以任取的,我们这样取名只是为了行业规范。
- o- O" ?9 j8 }3 c- A
6 x, r8 I4 x8 p& K. y% J 3MH(K~9HPJWL4%{0@JC$$JS.png
, R" V  S, G& c% `0 E2 C: t1 c6 u, M7 R2 h. m& W0 F, [* [) G9 o. ^
二、打开keil软件,点击 Keil 的菜单: Project –>New Uvision Project,保存时将目录定位到自己创建的文件下的USER子目录下:
. e) W, Q- Q; c/ d
) R/ e" B% k" {4 X N0$C[E39D}CPTX%R~8(2ARA.png 1 l7 O9 [; k5 l! B) E

! ^4 g8 ^8 O4 E+ B- L, [ R8W1LIV52ZFC3(CPV7]X3DE.png
. L% O$ k# D4 `( ?
6 ]' b+ C2 [* l三、接下来会出现一个选择 Device 的界面,就是选择我们的芯片型号,我们选择STM232F407ZE(如果使用的是其他系列的芯片,选择相应的型号就可以了)特别注意: 一定要安装对应的器件支持包才会显示这些内容)。
! V7 n. I) j3 G  Z7 a1 L9 j
% N6 |2 D1 G1 r; Y0 G+ K ZQY5%(4%D]O)E(~W3%RK@%L.png . P. b1 q+ N1 z  s: O/ f( X

7 _/ }7 ^3 b, Q7 t 6DXTIBIZG{AKG1RQ)R@6}_D.png
8 X7 h  M# n; U5 a/ R
% u/ W& x$ R& W" V. ~这里是一些组件,直接点击OK即可,这样工程文件就算初步建立完成
1 d, n$ \$ K: C/ U: M- _9 ^: N/ U6 l# d
" ]) f+ q9 s: z- k8 @四、打开TEST文件下的USER子目录下可见包含 2 个文件,Listings 和 Objects 文件夹是 MDK 自动生成的文件夹,用于存放编译过程产生的中间文件,这里可以自由设置,到时候会定位到OBJ里面去,这两个文件可不用理他
8 O  X8 J/ A( }4 U+ r) ~) l( q9 k2 }! K, v9 |" n. s
DFVR1%PU]%RBFO_{1@XVF(R.png
. m8 F& I" w# n  [$ |+ G# \7 z1 e1 Z' n! t. K  g

& u1 V& h4 z1 C2 ~1 I五、现在打开官方固件库,定位到\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver下面,. ]0 O# C9 t! h4 \( Z
将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 FWLib 文件夹下面。* n2 {5 a4 g4 u% o% S! {& @

- u4 h7 w- `* l5 |: ? X(ZKF%~_AQE6}D`KET9KGM1.png
- a( B( p: D" a+ q4 S  W0 V6 z3 e
* v! g3 Z7 @3 M% z0 X5 ~- W2 X& z, A; n3 @) i6 p% Q4 I; X2 a( ^% N- `, n
六、同样定位到 \STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm下面,将文件 startup_stm32f40_41xxx.s复制到 CORE 目录下面。' x# w" _+ Y8 X# O4 G0 x

0 E, {# B: [" _* c8 C4 Z Q0$$KN~LHA_(R2{)BNXO2[F.png
/ \, ]! t. H0 j- z2 I$ a- k$ B, G9 `. b3 K* H; h: Z; I

7 S& r, L# }8 o1 o. k  q; N然后定位到目录\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ, 将 里 面 的 四 个 头 文 件 :core_cm4.h、core_cm4_simd.h、core_cmFunc.h 以及core_cmInstr.h 同样复制到 CORE 目录下面。
: C( m# V' j9 ^% h. {0 o0 D1 {5 y; _& c, H0 p
}IHSVMHDMA0G2Y3~V_)}S]2.png
! ^0 S& z) D0 q: I
+ s+ ]& b% u/ q; r: ]( k" B  j# I
# f2 C# Y- U& a七、继续定位到目录:
% D1 h4 O& ?! ~% _& x/ k2 ~STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include将里面的 2 个头文件 stm32f4xx.h 和 system_stm32f4xx.h 复制到 USER 目录之下。 这两个头文件是STM32F4 工程非常关键的两个头文件。/ J" Q  ]8 p& v1 `( V/ i
3 H! t3 L; n  ]' f6 D! j6 y
8)SYM~3VG(L91$YULFP[V3Y.png 5 l8 Z1 n" i7 c$ z0 F
, A5 R5 ?2 E. \0 f: X
2 U1 P2 o; A5 A
然后进入目录 \STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates,
6 x0 z' t% U5 }+ |- H8 U. b( t  P
9 v* V# T/ p- D: A$ |# O将 目 录 下 面 的 5 个 文 件 main.c , stm32f4xx_conf.h , stm32f4xx_it.c , stm32f4xx_it.h ,system_stm32f4xx.c 复制到 USER 目录下面。
: R1 A: |4 X0 }/ \8 U5 k! l
7 W# l' M* X* s/ q/ `5 I8 H4 G GQXE`)~BA)R]9%W7}M(N]$G.png
# s4 x( t. Q2 D6 i* ]# \9 u# j8 M: c3 c$ t* P8 U7 h3 i
2 E/ \9 R- B- l/ b& q" v: Y
最后USER文件如下图所示:* `5 a3 S0 Z$ V. Z' Z" m

3 ?2 p2 y2 I- e: p  x M~O%0NH%LAH5`)(LRE[16S5.png
; z$ u7 N( L9 ]" z+ Q$ J( B
# j9 _# B$ f6 m八、完成以上步骤后,下面我们需要把这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Project Items,如下图:
( ^$ G' L5 G2 L) V. Q4 t* A5 s" K9 d2 r0 ?# g4 ?3 \
4{6NINND4}D}2%{WNF1Q}OG.png
: [! q: c* C! Q# X9 R5 Z9 P8 B4 {6 G2 w
7 p/ `, c/ Q+ U+ `1 h
九、建立三个Groups: USER,CORE,FWLIB。然后点击 OK即可
7 d2 R$ p+ ^* Z" U8 C1 d( f  ~9 N& K% I( g' q+ A
7DDJCV}T}6L~4J9M0U4%WYJ.png / [# J# \* C2 ~3 I

' S# ?; t. {( m. p十、接上一步,添加需要的文件选择 FWLIB,然后点击右边的 AddFiles,定位到我们刚才建立的目录\GECLIB\src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件。
0 H6 |: i# n8 J% ]
4 d5 n" A; m( A. s' ^1 l @$W[BF31T9AI[OY0[B~XSH5.png
. M* F7 H. p0 m% c* C% g
8 s$ T( W# y( L7 w8 Z! ]% n/ S+ {3 Y; T3 I8 ]4 |& T, l2 G
注意:
$ i( a. J  o' r4 J, s4 c. R, C1 f6 u% u
1、例若只用到GPIO的配置,可以只选择stm32f4xx_gpio.c这样可以减少工程的代码量,提高编译的速度。. n) l1 [: j% a9 ]$ h5 r5 T* e

' C+ N/ \( v7 X2、有个文件stm32f4xx_fmc.c 比较特殊。这个文件STM32F42 和 STM32F43 系列才用到,所以我们这里要把它删掉(注意是 stm32f4xx_fmc.c  要删掉,不要删掉stm32f4xx_fsmc.c)。+ H8 ~% ~' K# o$ ~' `. ?: L

0 F  f' q: y1 f2 p( J, N十一、用同样的方法,我们CORE下面需要添加的文件为 startup_stm32f40_41xxx.s(注意:你需要选择文件类型为All files才能看得到这个文件),USER 目录下面需要添加的文件为 main.c, stm32f4xx_it.c,system_stm32f4xx.c。最后点击 OK。
/ g1 p% `1 r) m% s& {/ v( |1 y0 V0 l( f' j! O, T0 t# t8 z3 u
W0GLXS4($~~9Q{M1_EX_3`8.png 4 q4 u: G; `+ S4 ?$ ~
/ n' ~; S" F! e$ @7 j
& C; P; R' L0 Q/ q
十二、进入设置界面设置头文件存放路径,如果没有设置头文件路径,那么工程会出现报错,头文件路径找不到
8 q6 R! P& b' ~+ X
, q$ }* K% r1 E/ v# c. Y0 j 52{XNE(LTUMOBVBCU%TMIEU.png 9 {! J( f5 `: C; X0 ^1 L$ G8 [3 p

. e$ n1 P/ U3 I7 M: o* C/ q
# y% U3 ?, N, y6 A% r TZ`HWX)W_KELG5C@70X53MH.png
. |2 B* S& c9 \) [0 {0 @
; P; _5 k+ `- u$ Q( y* B0 w我们需要添加的头文件路径包括:\CORE, \USER\以及\GECLIB\inc。若需要添加到自己建立的头文件,也需要做路径的添加0 _2 `- w4 u8 `; c7 D9 M

5 U6 h$ X5 N4 |4 h$ p }Z20ILV1UM88CW@_IERBO)C.png
  ?% d% `8 d( l  m: ~- r/ _/ k6 p
2 B/ ]5 w7 o0 U) V& {/ C* j2 `
  m0 t' }% j  P/ N十三、STM32F40 系列的工程,还需要添加一个全局宏定义标识符。添加方法是点击魔术棒之后,进入 C/C++选项卡,然后在 Define 输入框连输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER。注意这里是两个标识符 STM32F40_41xxx和 USE_STDPERIPH_DRIVER,他们之间是用英文的逗号隔开的,请大家注意。8 F# y5 Q+ ]' C& ^( z0 L3 t

+ i& U8 k) A1 f+ _1 s {}EI8GLVWOES_(]B[UB7G7C.png # X! J  Z6 c/ g% ~' X6 v7 S

" n9 G1 u+ ?, r9 P) L4 x. \# p4 M! }- ^" T, G
十四、在做编译工程之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder forobjects…”,然后选择目录为我们上面的新建的 OBJ  目录。然后再OBJ目录下就可看到我们需要的程序.hex文件了。(上面第四步所说过). r9 J; @: R) U/ ]/ S
$ R0 ~8 G* L# G3 A
MMK$}XA)`ERFW8FUEY1W}CP.png 4 M2 S! {0 r; l7 r$ [5 s

$ L  Z& E5 t8 j, q1 `& [9 w; m; ]十五、在编译之前,我们先把 main.c 文件里面的内容清空,编写自己的代码与此同时,我们要将 USER 分组下面的 stm32f4xx_it.c 文件内容清空。 或者删掉其中的 32 行对main.h 头文件的引入以及 144 行 SysTick_Handler 函数内容% p, a1 O# i$ {" e- O
1 P/ ^& Q' |5 M
67XWZ2MU_D8MMD9(NIZ@~F8.png
* w, u  ~' h5 y- w* k. P. N; \4 R7 M8 `) z; T$ v6 @" k4 A
[1WU3DWO97(6}V0BVKQT(Q2.png 4 J8 W# `9 r! {" [3 B( M) c" F

) V6 p4 u7 l" y: ^6 M! q6 I下面我们点击编译按钮 编译工程,没有任何错误和警告,那工程文件就算完整的建立完成了。8 D, L- n6 ?* ]. n

& {( c, g% P5 E5 h; j, ?6 k, N' F十五、最后,打开工程文件会看到以下文件信息,这里不做一一介绍
5 i+ D  k4 H6 P. e9 }) y8 |/ t  j( c4 I0 l" Z4 `/ C
注意:LIB里面的文件可根据自己需要进行增加或删除
) f6 s- E  r" @( X% [8 `
) `/ {, o0 Z7 H4 R: l1 Q9 S! X# V5 N {~XE`D1WC{DK9F[ZV$~FRKF.png / j" r0 J; \9 d3 a0 {. L; ^

0 E: v) Z& ~6 l. R6 c, W$ H( p: ]" m如果是控制简单的GPIO输入或者输出,可以使用以上的这些文件就足够了。! p' \2 r/ K  M$ U

1 M4 T5 D+ V7 S5 \
, {% P+ |% B+ `2 Y$ x5 P
收藏 评论0 发布时间:2022-5-18 22:45

举报

0个回答

所属标签

相似分享

官网相关资源

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