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

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

[复制链接]
STMCU小助手 发布时间:2021-12-7 11:00
一、总述
* L: j% H& q, @# ?4 }" f6 ]" v    之前买了一块STM32F407ZG的核心板,以及和它配套的TFT显示屏,学了很久了吧。最近同学让我教他STM32开发,于是就想写点东西总结一下。
. y: V9 K" j! b! {# w9 W. R! `4 ]" L. V" G: w1 K7 b
    我习惯用的开发环境是Keil,软件及开发环境的安装网上有很多例子,在这里就不再细说了。那么接下来,就是学习如何新建一个STM32工程。(为了减小开发负担,在这里使用了STM32F4的StdPeriph固件库)* W7 }$ V! C6 P: a( ~

8 g+ A1 Z/ ^2 E) ]二、第一步——建目录! a, e. }& f# D9 c6 N; ~
    首先,新建一个文件夹,名字就是工程的名字,这里工程名为STM32F407ZG,如下图:(另一个文件stm32f4_dsp_stdperiph_lib.zip就是STM32F4的StdPeriph固件库)! Q; W6 r+ T) c
1 i/ V% H, g; K0 A( O  Q- u
20190504190020151.png

( B- Q1 m& T5 M# i
8 |0 @* B4 x) X; A  l! v( j/ L, _    然后,进入工程文件夹内部,新建Driver、Hardware、Libraries、Project四个目录,如下图所示:
% _6 S! \: e6 Z' \( K$ m! R7 `4 V) V! X$ a) A; Z$ t9 s& R. n/ |
20190504190614549.png
5 W; L8 v4 H1 B4 e! d& R

+ ^% e+ M( @# ~( |
  1. Driver:存放主程序文件、中断处理函数的文件、外设库的配置文件
    0 q' c- n9 N; e; {- J* H, @
  2. Hardware:存放一些外设、模块的驱动程序* ^5 ~# X7 y+ V( e5 ^
  3. Libraries:存放STM32官方提供的固件库
    ) G$ f) S/ `, C7 T
  4. Project:MDK工程相关的目录,存放编译生成的中间文件,KEIL工程相关的文件
复制代码

: A4 U6 ~; w5 ]: l2 M三、第二步——拷贝文件+ a5 V$ c9 r# r2 I0 X
    首先,将固件库压缩文件/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/下的全部文件解压到刚刚新建的STM32F407ZG/Libraries目录下,如下图:, n6 s( f) j9 `) z
: E* B3 l) x: f: U# N' T6 E2 K/ K8 d
20190504192108979.png

' k( g! f; C( F$ t, D5 y* c" I& n# m! @% V' \
    然后,将固件库压缩文件/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目录下,如下图:6 ~; J) l, z, O6 O0 z
: W' ~$ Y* L# z( g5 k/ N7 s
20190504192700845.png

0 ^9 [+ v% u, t: k- a
& c+ O0 [1 _! d
20190504192802275.png

1 v# Y- J; Y( r, B$ s  M5 I2 e
% G& ?' V8 H% P" J    如果有keilkilll.bat文件,拷贝至工程文件夹下,也可以右键->新建文本文件,双击打开,加入以下内容,然后再更改文件名为keilkilll.bat。这个文件用于删除编译中间文件,减小磁盘使用空间,一般上传源代码前都要运行一遍使上传文件变少。这一步可以省略。
) O2 M6 Q# k3 K( X
% A7 W+ L) P/ a% l- E
  1. del *.bak /s" o: ^, b4 q) z1 U  P: [
  2. del *.ddk /s
    8 ~+ l- ]& y' |* p+ M& M) |6 K3 P
  3. del *.edk /s
      Q8 W9 X0 v9 t( l) l& D
  4. del *.lst /s* W; `  F* R8 k, _& X( K
  5. del *.lnp /s9 [: R+ U6 J& W1 w3 v
  6. del *.mpf /s
    ' m; D7 k! H% y% c$ Q3 x4 `  q
  7. del *.mpj /s
    # Z6 a9 E; F& e/ j+ {+ B$ O/ G% t0 \
  8. del *.obj /s& ~7 B, Q9 {* _" j
  9. del *.omf /s5 F( {7 s, }: r
  10. ::del *.opt /s  ::不允许删除JLINK的设置0 u, e; b4 H+ e. v6 ], ?' a
  11. del *.plg /s/ A+ F# j% X/ }( n1 `% ^9 M
  12. del *.rpt /s
    , z% c  s2 H! x4 j# E1 v+ Y
  13. del *.tmp /s
    / q. J! M1 i4 A* B0 D- F
  14. del *.__i /s
    4 [% {4 T8 f* T! L
  15. del *.crf /s, C% m: d7 f4 D: ]0 g
  16. del *.o /s& @9 ]+ o; c$ t$ Z
  17. del *.d /s2 X; q* S1 p+ w4 c, X
  18. del *.axf /s
    * ^7 y: K3 H2 @2 q6 W2 b: W
  19. del *.tra /s
    7 f6 N7 v: d$ `4 e& N& R3 L
  20. del *.dep /s           3 i$ {1 P9 S8 j! G4 ?( E3 B
  21. del JLinkLog.txt /s! o" `$ R+ r" C% P# z

  22. 2 ?9 q* i1 x( P- y9 |2 e
  23. del *.iex /s0 F7 @# o" M6 ]$ o2 B7 s
  24. del *.htm /s
    - G9 _% k" @" n+ r! j
  25. del *.sct /s* b  w  K; D: @1 o$ L
  26. del *.map /s* q6 V  m4 l+ R* E
  27. exit
    ( g' K2 _; ^* \3 j# @4 y  Z7 _
复制代码

- E& K! ^. M7 L$ [" y4 n0 a6 X  t
20190504204015493.png

6 k: ~& @5 p: x* J0 @& B2 R
: [3 u1 q; `1 u& {四、第三步——MDK建工程* u) A9 l8 l4 t- ^- p# s& I
    打开Keil uVision5软件,点击菜单->Project->New uVision Project...,目录选择到我们的新建的STM32F407ZG/Project/目录下,输入工程名,点击保存,如下图:
6 ~5 s5 @! B; |7 A' F' {( y4 j! T; \5 P& Q) p$ D( A% A) B
20190504193122668.png

  g  [) L. B$ S6 Y1 f3 Q: Q$ D5 u4 P5 x( A. |* H' z* K
20190504193503859.png
* T3 r" h: n/ H9 C9 S

4 m0 v! I  s# P9 Q5 ?6 @    接下来进入选择芯片对话框,选择Software Packs,然后芯片树中选择STMicroelectronics->STM32F4 Series->STM32F407->STM32F4407ZG,然后,点击OK,把后来弹出来的窗口关了,没有弹出来的就算了。+ d/ O/ f( ^/ P& J$ l
' H( s( N9 ?, o
20190504193752602.png

% {9 V7 U+ O+ v
* Y# k& y$ `, s; H) ^3 T: u  C五、第四步——MDK项目配置: M8 U- q+ l. c' n8 k2 Q/ P
    点击下图框出来的魔术棒图标,切换到C/C++选项卡,填入define内容 USE_STDPERIPH_DRIVER STM32F40xx,然后,点include paths后面的按钮,进入include设置窗口。
+ S, T6 e+ D" u& b2 E9 }2 A% G9 u* ^, c
20190504194651573.png
8 s9 n4 Q3 J0 O$ S# ~" d; {
7 E1 l+ m/ I: B( c
20190504195332953.png
* o$ E+ u: n- c* a- v) K1 K

4 W, w- y1 {! J% X' m. [双击列表,点击后面的按钮进入目录选择,或者手动添加,加入下面的目录信息:点击OK,回到主页面。
8 o8 \& H% p' L' S
. }$ P6 I: ^$ ?
  1. ..\Libraries\CMSIS\Device\ST\STM32F4xx\Include( Y8 d3 K$ |) O$ [5 H
  2. ..\Libraries\CMSIS\Include
    % u$ ^3 b4 {, u1 q* _2 b' f
  3. ..\Libraries\STM32F4xx_StdPeriph_Driver\inc# N& Y* [, J7 L# u/ s0 g) }1 a
  4. ..\Hardware
    $ A7 W2 f# [, C  ^3 K
  5. ..\Driver
复制代码
, `% }# d. l' {! m$ z2 P) a
20190504195824939.png

' N7 M3 w' D& S% i$ B1 g3 e+ B& ^- q
再点击下图框出来的三个正方形的图标,在Groups下添加CMSIS、Driver、Hardware、Library目录:9 @' Q, t, P1 N( J9 A& Q
# I* y' u9 R' Z+ T4 |# l$ v
20190504200317628.png

7 O$ N4 P5 O! T2 a( G1 t: s8 I, |2 r7 y) t
201905042009262.png
! ]2 K) _1 \6 J" K) Q/ [8 C

& ^$ f8 I( n8 k$ }  a, f9 v    在CMSIS目录下,添加..\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\文件夹下的文件system_stm32f4xx.c、arm\startup_stm32f40xx.s9 ?3 ~, D/ t+ t% r4 k
! @1 q, D" R- t# q) D/ }; C) ]
    在Driver目录下,添加..\Driver\文件夹下的文件main.c、stm32f4xx_it.c+ v% \7 t7 a2 P

) D9 Y+ V3 \/ ^    在Library目录下,添加..\Libraries\STM32F4xx_StdPeriph_Driver\src\文件夹下的全部文件+ p8 u: o$ L. h' O3 l9 w4 O! S

+ u  X$ N5 \0 g! b    由于新学板子,还没有用到其他模块,所以Hardware为空。
$ W3 R! x( {/ E- W: }: A- k8 _3 z( w- p& ~+ e; b
    最后,点击OK,返回主页面。
/ a8 C5 e  x, V& I* n% v
, q7 E; Z1 r* n6 r& D六、第五步——编译程序

+ \  x, \4 K1 x$ D    点击下图中的编译按钮,进行编译。2 X& @# n( ]3 v) q4 M
% D0 @; z' k, Y5 z. [- ~2 \: z
20190504202215849.png
) L) r  J% r- V) K# x1 [& P
; w" ^8 q2 b0 f1 L/ T( S1 ?
    发现在编译stm32f4xx_fmc.c文件时出错,回到上一步中,把Library目录中的stm32f4xx_fmc.c删掉,再编译一下,错误没有了。
. n) L0 V& P/ m( F3 P$ l, Y0 j% e" f* C  r
20190504202911381.png
( v- z$ N6 ^& h0 z! g8 b- [; M

9 V) C, a7 |$ K0 x& s    至此,新建工程圆满完成。
$ f7 D: R3 |* B9 Q$ c. X, x
# A+ E. |  N' R! y" `. w: T% \4 |/ M  w& a: x1 @/ R) }, u
赞 收藏 评论0 发布时间:2021-12-7 11:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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