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

【经验分享】STM32F1在MDK下新建标准库函数工程

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程
. h' z1 W1 Y1 q5 ]' C一、准备
( l' B) i! e9 v" l# KSTM32F10x 官方固件库;# B  B$ w" R# T0 \. o; y8 }( H2 b
* E( e; t' @$ T6 b
20210408094157723.png
5 ?& `% S( ^+ V, j

9 L$ S; g/ N7 v! wkeil5 MDK 软件
' j8 G& u, J& P" n2 v4 W1 n' o  ]5 u0 \  K3 W2 z( ~" c
20210408094236205.png

! m  c% A1 q3 m5 u) c0 y# t- j; j2 }1 A8 Y
二、步骤
) ]7 v. d5 N& A/ p* @(一)创建项目文件夹,复制固件库文件4 [* i4 T1 [9 t
新建项目文件夹,名称自定,如 Project* @( f' R. q, a2 q

$ n+ O) b' J% j5 F! `4 ^  M, Q& e
20210408094308107.png

. M& t- f/ `# g8 {& H. P- h
7 ~. P! J2 _9 R4 E$ u2 f) n' C在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:
  ^9 x/ b4 E# l* A/ {文件夹名称        作用
7 ]- Q, F3 a1 y- o. g( h; X
% g2 w9 ?7 t7 a$ I: P5 u
IGEW[WXJD`PW8`LB]%OI}T8.png
, R4 d% \1 H. P
6 Y# Z0 }0 x. \; }1 i. Y- G& u4 h9 C
2021040809463570.png

) x; U+ {! |" T; x8 D
) Q/ R/ `. W* Q  z. x* ?为每个文件夹粘贴指定的官方固件库文件+ R" b; H7 p& d  T
CMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:) M1 I. B4 O7 C& T' U$ Q3 K; \
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c9 `$ p, q, O3 t+ d1 U) [0 H4 x/ H
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h; \8 {- e, l* ^  d- O5 q8 @
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h
    8 \9 {5 r# J7 l) n/ x' n
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c- Z% M& ]$ D! J" u6 @
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码

  ~4 S1 Q7 m% ~9 M; C% v因此,CMSIS 文件夹中的文件如下所示:
+ W5 f; ]% Z; r& d8 l
0 @# q9 {( N  j. Y7 [: `
2021040809470937.png
# y% X- s* @( w) |. |" \2 T- u; m5 u
) Y# p/ t% k0 L7 D+ E
Lib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
, x2 h- s; z5 [; M5 ^% k
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc
    ' u) X6 V* a) ]$ D+ T6 v; A1 Y, ^
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码
6 U+ }) V" ?% A- X' ]4 D6 b. }
因此,Lib 文件夹中的文件如下所示:
) u0 u. l- M* ~# k7 g1 J2 ?$ D/ j# Q0 @
20210408094740591.png

8 u; m9 @% m  a. z/ ~, k! G- T
/ x& G  u. h/ }' O' |Startup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:+ G3 {  a" g6 R
9 V. D" T3 D% {; p! b' w) Z
20210408094859930.png

5 Y" m. [0 C) h4 [* o+ E% H7 b" B$ I. i8 x* c; }3 \) i
User 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
5 j1 L# a! E* U  D" _) E) P
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c$ e& Y, J/ A2 o4 a3 ]3 v" h
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h
    * u: D1 P" }( D2 z6 |7 _
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c
    3 X% ~! j: L/ W9 v
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码
9 o- y! X/ r5 c' j. k. L
因此,User 文件夹中的文件如下所示:& B5 J) S6 A: ]- _) N
) a6 g8 R3 I  h7 \6 a2 [
20210408094927828.png
6 q  V+ |9 r* _

& H6 t# ]$ c6 L) B(二)keil5 创建标准库函数工程
1 H* @9 P8 ]+ X! L; y/ q, @5 g- p# G
8 A' P# e+ Q) [" b打开 keil5,新建工程
) w6 }; D0 Y  Z4 t8 P1 S
$ {* Z& |2 O* o0 F5 _! Y
20210408095052466.png

+ ]3 Y' W+ k) P  W3 U$ _, \1 H* P9 m2 K3 w/ Z4 K
创建新工程,起名为 Project
9 i& o, ~4 T/ f* }0 [- \8 X1 z" h8 R; f3 `7 n
20210408095121706.png
: I% r- w2 a, h

$ |4 U, j' k6 K, @在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C8* A/ v) B+ Y9 P% ^9 [$ u4 F' c' i

( S0 ]- \  G% V+ y8 J0 D
20210408095144762.png
9 x5 f+ K: ]$ |( O, a) m' f

" @* v- v& a* A7 ^' d' B) q/ G在弹出的对话框中,选择取消
" D1 C: _* o/ h# W
; H8 {  ]. d8 m, h: d$ r3 w& ^
20210408095212494.png
  |/ F& k" h9 \: H

) @% c: j5 L2 Z) i2 [! e& `6 J/ o, I得到工程最基础的文件夹
. O$ {" D0 @7 s% L7 |* r8 u
) Q" T: U5 d" i9 A; {9 W9 v
20210408095238898.png

9 I0 T; E1 S8 y4 w5 f4 Y
) l1 A- x5 Z* f( r& U) u. S: X将刚才复制好的库文件加载到 keil5 中
* n5 ]: E7 t  r点击菜单栏中的三个小方块按钮: B3 h& U) I! R! a1 e* V. R9 M
9 \( c; L8 g& k( q3 }
20210408095257539.png

  e: _8 F. K+ U8 m. a- A: i- f7 E; i! w
# t5 n* g; ~4 @& D) \在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除2 C9 o0 s8 b7 X: w* M1 P+ |
4 R: C$ G, e. N; A" E0 t7 `) R
2021040809531784.png
5 z  d2 ], o( P& o4 O

) n$ }4 j' x. ~. a5 T输入完成后如图所示:
' I6 K8 x4 L" \: A+ U# D
9 l5 v6 i- j0 J1 I
20210408095338843.png

" N( G6 B6 F3 O4 E
8 Q$ W; d/ ^/ p在新建好的文件夹中添加对应的文件5 [5 O9 i/ e; [0 R) i
1 a: A+ s$ u: d0 n% ]+ s' J& ~
20210408095401491.png

; |, x  L- L. ], [  U+ a" D
# a0 ?. [4 `, [5 M/ b  E6 Q每个文件夹添加文件之后的截图如下:
' G8 `* D5 ]1 k- u: w8 n( W0 W( h9 E* V: n/ }. \% T" s
20210408095429876.png
' q2 [! s7 c3 Q: J* f

9 s5 ^; H+ {- @$ l$ J0 h) {# o  ]
20210408095445707.png

5 h0 F& p5 w3 ?- h8 Y6 U: x
* S1 h* _6 A% o" ~
20210408095458359.png

4 B) Z1 S  j1 t* v) B0 i4 C/ d& z( a$ {# P8 B
20210408095512921.png

+ r) t! W$ _3 P6 K* {* j- J, I" u$ i2 e

/ K( T  g4 D$ J. g此时完成了文件的添加,点击 OK 退出" Y! u9 S* E8 H: B8 d% x

4 E, a" N' n6 |: S5 v此时可以在软件左侧的文件树中看到刚刚添加的文件
: g4 K7 t8 P4 A# D& D7 |  T) ^; g$ [2 A' [
2021040809552888.png
! b7 f' D1 M7 H: R: p; _

: U3 I$ ?* n$ I* a/ R# D进行初始化的配置/ ~) |4 {+ e5 c) @* v! y
点击菜单栏中魔术棒的按钮6 t! A+ G$ D' e! L5 g" E' R
* o. `6 O" v( l: C+ {
20210408095544713.png
& v2 `% e/ P. @9 W
1 e4 L7 @4 \7 [) c! I
首先设置单片机的晶振为 8.0MHz) a0 L; m; u* a2 V2 ~  U

- T# `2 G  s6 ?2 I" _% k1 f' ~  k
20210408095600386.png

5 Q+ T% z3 _1 A8 J+ w: M) P5 n. g/ p
勾选生成 Hex 文件
% Y$ X: G$ ]1 G  s0 k: F  I0 o* w! @
20210408095613226.png
7 o. _( m; ^1 P. p4 j" [
" y) x7 h" D" _) e. D* o. y
在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD1 B6 B4 O' f5 ]7 w5 ?5 O  T
% i+ s- d2 v2 T4 [1 W! M( q* L
20210408095628530.png

1 T. b: l* A; ]5 P+ n  r2 Z- h6 X1 C6 ]
在 C/C++中输入包含文件的路径,然后点击 OK) o5 v! [7 J/ Y' S3 Y
3 Q" t: j5 U+ a3 F+ _
20210408095641883.png
; S0 e. _) |6 z0 P, G8 E

, R; n/ p4 f0 g5 V& l) T在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了
/ {. N8 L0 ^( j. p* C3 U7 t0 r# n
, L  n8 Z2 K2 f  ~+ S# s. _
20210408095716404.png
7 d  [) `# J4 z# r- o+ E5 J$ m

# a  d8 C: S6 n: P( F
收藏 1 评论1 发布时间:2021-11-28 22:54

举报

1个回答
朱贵和 回答时间:2021-11-29 09:09:58
详细!
4 P: P0 ]1 ?" m5 d0 {- v
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版