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

【经验分享】STM32F4开发-新建工程

[复制链接]
STMCU小助手 发布时间:2021-12-7 11:00
一、总述% g- G3 \$ {/ _. i: A$ n. y& k- J
    之前买了一块STM32F407ZG的核心板,以及和它配套的TFT显示屏,学了很久了吧。最近同学让我教他STM32开发,于是就想写点东西总结一下。6 ]0 ^; ~! P) g! Z) H# y

& F5 d% L1 q& x. u2 c    我习惯用的开发环境是Keil,软件及开发环境的安装网上有很多例子,在这里就不再细说了。那么接下来,就是学习如何新建一个STM32工程。(为了减小开发负担,在这里使用了STM32F4的StdPeriph固件库)0 B6 @, ]/ c0 [6 c9 R1 H' n6 w
, ?  X7 k; |* _1 g  k/ j! j- [3 ~
二、第一步——建目录* _3 C; w; j5 x, Q
    首先,新建一个文件夹,名字就是工程的名字,这里工程名为STM32F407ZG,如下图:(另一个文件stm32f4_dsp_stdperiph_lib.zip就是STM32F4的StdPeriph固件库)
% ]1 k% [* ^, l5 Y# X8 b4 q/ v; R" C. `
20190504190020151.png

$ P. L. ^4 M7 L1 a2 P$ ]6 @
, P0 r; b6 P, F% p5 _- a. d4 ?    然后,进入工程文件夹内部,新建Driver、Hardware、Libraries、Project四个目录,如下图所示:
  n6 u: t- x0 T% \" r# l6 B6 f$ j, z3 Z& S! G! T6 \
20190504190614549.png
' J: n  f1 U! t+ v. l

8 f: u- k9 L# E; d- A  ^
  1. Driver:存放主程序文件、中断处理函数的文件、外设库的配置文件1 w3 n; y' x: u; s, X/ y$ a
  2. Hardware:存放一些外设、模块的驱动程序/ c. Q3 m/ e& J7 p
  3. Libraries:存放STM32官方提供的固件库9 p$ Q" x5 e: ^; l" _$ \
  4. Project:MDK工程相关的目录,存放编译生成的中间文件,KEIL工程相关的文件
复制代码
2 ^* R/ S8 Q$ y" P: k$ |
三、第二步——拷贝文件
* {/ o$ L5 e& Z2 }+ o; M    首先,将固件库压缩文件/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/下的全部文件解压到刚刚新建的STM32F407ZG/Libraries目录下,如下图:
* {  U. K/ C1 \/ R- U$ T2 H8 Q. S; W' K' m
20190504192108979.png
8 I; o% ?; X7 v: E

& @) @& q9 K9 m6 m    然后,将固件库压缩文件/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Project/STM32F4xx_StdPeriph_Templates/目录下的main.c、main.h、stm32f4xx_conf.h、stm32f4xx_it.c和stm32f4xx_it.h解压到刚刚新建的STM32F407ZG/Driver目录下,如下图:0 x. q; `5 \, H, l2 J

8 f$ D3 y# e; z* B9 i# z2 |, ^
20190504192700845.png

$ L$ z; R+ n' h; l* y; L
8 M% j6 E- I, W2 G3 D
20190504192802275.png

7 Q6 X0 W' H8 {# X! E* L
" ]3 m+ b2 W8 Q) e  z    如果有keilkilll.bat文件,拷贝至工程文件夹下,也可以右键->新建文本文件,双击打开,加入以下内容,然后再更改文件名为keilkilll.bat。这个文件用于删除编译中间文件,减小磁盘使用空间,一般上传源代码前都要运行一遍使上传文件变少。这一步可以省略。7 M( r6 Y7 F1 O& i1 ^; o! L" H

8 K; k4 P0 V" X9 E# u7 Z) O% l
  1. del *.bak /s, {2 ]) D' y6 o( A# T
  2. del *.ddk /s" ^8 F9 G# U! ?3 m( R
  3. del *.edk /s8 R; p5 Z. F# L+ o8 t
  4. del *.lst /s
    8 \9 v& A0 C) Z1 ^' D# h
  5. del *.lnp /s. x/ B% c! Z1 Z# l
  6. del *.mpf /s
    $ d2 n; v' T/ Z: p' z$ ?
  7. del *.mpj /s
    0 K8 Y" [  I( F) U
  8. del *.obj /s
    1 s9 I; [3 v2 T
  9. del *.omf /s, D1 M* h2 g& y  A
  10. ::del *.opt /s  ::不允许删除JLINK的设置
    0 n4 i9 [' a+ S, \$ z: q
  11. del *.plg /s
    1 j5 R! {9 O& }0 ~; t+ h# u
  12. del *.rpt /s
    ; B1 F4 v0 m: j( S8 J. y
  13. del *.tmp /s
    6 w5 [. {8 c4 G! o; q
  14. del *.__i /s
    ( e  T- E# C1 f+ M1 ~/ d* ]
  15. del *.crf /s1 b5 P5 n) d6 ?/ M5 a
  16. del *.o /s4 d' [: f2 ?- J
  17. del *.d /s
    8 E& u2 h6 z& p5 T
  18. del *.axf /s
    $ K3 S" |- S* u. V+ R  u
  19. del *.tra /s7 O  e$ z: v' a
  20. del *.dep /s           
    , y6 ?! k! @+ O1 b! m
  21. del JLinkLog.txt /s. P) Z( k2 o4 O

  22. , M& w; o" J) H# A
  23. del *.iex /s, S0 m% C6 v5 f) O# f2 T0 r3 R+ }2 k
  24. del *.htm /s  D6 y& w$ G# u0 s9 k$ [
  25. del *.sct /s
    # f/ A& L9 }9 t# i2 H6 n+ W: j
  26. del *.map /s1 S7 d) ?4 a& Q* k6 A( y+ B$ p
  27. exit2 ~$ [9 {5 Y. Q3 r' t& d8 t
复制代码

9 u; z4 S, v& P+ O( \' G% I
20190504204015493.png

& N" z6 b( B# J& [! A) T- J' f% T: |; M+ q9 W% r
四、第三步——MDK建工程
- l: ?& ^  i% i9 W' x& @: {& y) g    打开Keil uVision5软件,点击菜单->Project->New uVision Project...,目录选择到我们的新建的STM32F407ZG/Project/目录下,输入工程名,点击保存,如下图:
# P0 r: }, E; P9 v( t/ r
: k/ z$ m% }+ l. p6 e$ a4 f$ d( H
20190504193122668.png

1 Y0 {) x1 H1 f0 Z: D8 V' w* p( ?' V1 I9 X
20190504193503859.png
5 M% @$ L& T- _/ c# _5 F  c) o' c
& D3 O1 J  m; S. H) Z, {3 t5 p
    接下来进入选择芯片对话框,选择Software Packs,然后芯片树中选择STMicroelectronics->STM32F4 Series->STM32F407->STM32F4407ZG,然后,点击OK,把后来弹出来的窗口关了,没有弹出来的就算了。
5 O( j7 y9 q; |2 D( l  }" j- X2 _" I( P; e/ N7 w
20190504193752602.png
, N6 l+ Q" F. D4 k+ e+ V; H. L

1 S( N) V5 Q# a- q' s五、第四步——MDK项目配置
. }3 h8 D( C" A) O( `" F/ w0 c% I    点击下图框出来的魔术棒图标,切换到C/C++选项卡,填入define内容 USE_STDPERIPH_DRIVER STM32F40xx,然后,点include paths后面的按钮,进入include设置窗口。( l' b) m1 j9 J

2 A4 @4 d* e9 B% x5 e' X8 x5 g: p
20190504194651573.png
3 A( B0 Q4 C' m' o: t+ |; f$ i

9 u7 V) i' C$ a4 N4 s. G2 N1 `
20190504195332953.png
5 I/ v5 A8 S8 x$ }$ x" q8 _5 p
* R9 K( }9 W9 [, Z" U
双击列表,点击后面的按钮进入目录选择,或者手动添加,加入下面的目录信息:点击OK,回到主页面。
- j0 i7 \- p; M. d& N8 r0 Q" v" g9 S8 |% Z! j: |3 |0 g. `
  1. ..\Libraries\CMSIS\Device\ST\STM32F4xx\Include
    8 M- u8 i9 p7 o$ N, Q5 g
  2. ..\Libraries\CMSIS\Include
    ' ~% ^. W3 e! b& y) E) x
  3. ..\Libraries\STM32F4xx_StdPeriph_Driver\inc& p2 ^+ b/ H6 [, s2 M( c
  4. ..\Hardware
    * {( R9 H* l% L5 q) a" r. ^6 K6 r
  5. ..\Driver
复制代码

  z: r, d' V2 R6 \* y' D. w
20190504195824939.png

/ z" Q& B  ~; w8 ~. g' Z" c( r* I5 Q
6 X8 `8 a) G5 P) W. T再点击下图框出来的三个正方形的图标,在Groups下添加CMSIS、Driver、Hardware、Library目录:3 M" f. U7 w. B! n4 Y: Q) ^  }
7 S3 G, f+ w4 I7 w' M
20190504200317628.png

: k( @5 P: o% ?+ O$ w" ^+ ^9 w" B  w
& p1 p; p5 Q1 q& t* o
201905042009262.png
( t: {1 e; a1 w$ E* w

8 k5 R) D9 F% E' Q" l7 Z    在CMSIS目录下,添加..\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\文件夹下的文件system_stm32f4xx.c、arm\startup_stm32f40xx.s) C+ z# Y2 k4 }2 G1 Z

, c3 B- R. i& l7 _- G- P9 h" f6 m    在Driver目录下,添加..\Driver\文件夹下的文件main.c、stm32f4xx_it.c
2 x+ G4 g8 [- \" V
2 D- U; P% D: g! V# e3 C  y0 u  M    在Library目录下,添加..\Libraries\STM32F4xx_StdPeriph_Driver\src\文件夹下的全部文件. l" @* J" D' z6 J8 G# U9 L! T

( N% `; ?, c  }1 I    由于新学板子,还没有用到其他模块,所以Hardware为空。, f* h+ `4 V% l0 K
) y! ^& W  `% z9 M% a9 Q
    最后,点击OK,返回主页面。( r* v: `0 E" Y( i$ L% x1 Y

- N! J5 I7 u" x" p+ c' u9 W! @六、第五步——编译程序
, j* G" b: w3 w& J! Y+ l
    点击下图中的编译按钮,进行编译。& R# a( Z, U. C- w6 {" U! r: v  b2 Q

  v+ P9 _& H7 P; U" p/ u8 y2 J
20190504202215849.png

2 j# w' n$ o; A. }- i
7 U# F0 R+ e  p6 v" Z  z3 I    发现在编译stm32f4xx_fmc.c文件时出错,回到上一步中,把Library目录中的stm32f4xx_fmc.c删掉,再编译一下,错误没有了。7 ~  W2 F% e! }2 z: P* g

5 n) R& O( Y4 U4 c; r1 ]! K
20190504202911381.png
8 Y4 b/ Y. @. D0 x

0 w- D9 f; o0 O! C    至此,新建工程圆满完成。: U7 ?% A$ ]% n! ?' W) u

/ _& p, p; O: y9 U+ x  O# S9 q
3 B. f0 ?' m4 t+ {
赞 收藏 评论0 发布时间:2021-12-7 11:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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