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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程
5 }' s4 g' Z/ s# U一、准备
9 v6 W, T. F; R9 O  X5 K3 X- k8 fSTM32F10x 官方固件库;+ M4 s" X9 y6 V4 h$ J2 \1 c8 l

1 Y8 M% q$ h' I3 i) a7 H
20210408094157723.png

2 @+ L" _. M9 n8 x: ]$ k
: e1 [& q- Z6 K* q1 n- ~; gkeil5 MDK 软件/ Y% K- i& }! u: Y, N
6 R, U2 {! {* j) I6 @* B7 y9 N, x
20210408094236205.png
3 v/ h# [( k4 L- S

4 X. `5 j. Z/ r5 `" t6 b) C二、步骤$ c% T0 H! n) [* F9 k  F
(一)创建项目文件夹,复制固件库文件+ w% b! W) U) U
新建项目文件夹,名称自定,如 Project
9 O% |3 f  \8 K/ s# J; M
, `& }* d+ S4 ^: Z
20210408094308107.png

, v1 r" k0 w' c7 k; I- A+ W, ^) k, g6 a7 D! }
在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:+ B. W/ @) L( N% G: U( \4 d
文件夹名称        作用
  [3 ?% k3 g" A; M. p* n, [* `  @) k# ~6 E& z
IGEW[WXJD`PW8`LB]%OI}T8.png
1 W5 J/ `8 m) \7 [4 n

& Q+ n8 K$ A+ l0 e
2021040809463570.png

) C& L# V) V2 r8 Y. `
# x  Q5 X) f# _1 S: R, q1 V为每个文件夹粘贴指定的官方固件库文件. B+ S- U" d2 A4 t) U; J
CMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
# {% X6 w7 z2 u9 O4 x- q  s1 G
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c
    ) z- @0 Z8 [7 M, {: n( x. Q. R
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h
    " Y  E/ K+ g" V
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h# |+ x+ i% X' V8 j1 ]
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c+ B+ Z4 i4 ]) ~( `
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码
" U: \& ]' f% b; p% s% \
因此,CMSIS 文件夹中的文件如下所示:
! ]3 n0 B& o) w9 ]5 w9 F
% g7 X: H5 d: j: M9 o
2021040809470937.png
# h+ k7 |/ U; A
& @6 w' u) E) i2 Q# z2 m
Lib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
7 l" [6 y/ Z2 W) q# P
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc! N/ x  c6 p5 ~
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码
) e3 s4 r" X: V
因此,Lib 文件夹中的文件如下所示:* U2 _! n# }7 o. {! p% r

; l( o( T8 p8 m) R+ s+ n- [  y; y3 z
20210408094740591.png

+ B% D9 E; Q2 @7 l  s, Q
& w$ e5 w& Z: a0 T" nStartup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:
: W& J4 t, Y. S! k+ h* Z8 M8 F% p5 g! G  T* ], e
20210408094859930.png

$ p3 U; O/ g5 o8 V* J, o0 c6 N
/ ~7 P/ |- f, J- c+ l/ p" ZUser 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:# o" _$ }) T1 v$ _: b
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c* u. `2 t( n5 t+ K/ s
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h6 k+ e. ?4 W6 J) ]5 D' i5 l) G5 D
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c
    5 c$ `+ Z9 K# G7 J, W2 o! z
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码
& ~! i3 `3 v0 y) ^& E" C3 i8 V% u2 n3 E* U
因此,User 文件夹中的文件如下所示:
- O$ e3 U* w4 i) u4 y8 P* D
  `" x3 I$ M5 V0 ?- a+ Z
20210408094927828.png

( q8 B1 y( K5 i: U& Q: T; Y
0 }  g" V+ y% u1 n(二)keil5 创建标准库函数工程
6 _1 @2 P+ q( ?8 r8 H, I3 h4 z8 f4 s" ]& E2 d" T' i" I! M3 e
打开 keil5,新建工程: R/ t' m# F8 d3 b! T; y

! L' {& {! i3 _9 z$ d; D
20210408095052466.png
2 m: }" M5 R5 Z, ~+ V

5 M% L' W* ^- V8 |9 E1 ~  d0 j6 Q5 h创建新工程,起名为 Project
. e" L# Y. L; c0 l: ^: K! b0 [4 m! r2 ^7 B
20210408095121706.png

7 m4 W1 t* }. \7 }6 T1 k% q# m- `% {' y5 W! I  d- V% P) D# |2 ]
在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C8# f& R; n) v& [9 f- V& Z, y
2 _9 x7 e0 ?( n* A$ C
20210408095144762.png

8 R: S4 V% m( I' p1 Z3 s* |5 b% v5 [" p
在弹出的对话框中,选择取消, |" c$ G, X' r' `0 V

5 R' P0 G% G1 E+ g
20210408095212494.png

! {- M$ ^$ V# N
$ m. P8 a$ q2 O/ e# B$ _得到工程最基础的文件夹, M  [6 B1 h2 n  r6 F# z/ X6 Z
6 r. B1 a$ D2 W6 A- O8 {1 r
20210408095238898.png

1 l* h2 k: S0 e* M0 g  [0 I1 t3 v: |4 t# B+ l9 v( p' i
将刚才复制好的库文件加载到 keil5 中
3 e. A+ F& ~% E) k5 r9 G点击菜单栏中的三个小方块按钮
: a) ?& U5 b! q
1 v4 S0 R. L% d3 I5 T. C
20210408095257539.png
! D8 _- c) i0 R( t

# l7 L. r! }1 @; b" @! D8 j0 C在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除5 f5 W6 I) |" L* e: I

: s! q* K1 U  [/ J8 k- Y- p7 V
2021040809531784.png
6 s2 R$ k$ n/ y4 Q3 r& ?, t

5 l. O* ^' ]9 ?  p' G( m输入完成后如图所示:# t/ _; H: n1 i$ w$ f

1 K; t. Y& S9 @$ G
20210408095338843.png

3 Y8 O6 g# B- D! l* R' ~# Q: s
9 w' h7 x2 b3 p' X+ T- t# V) Q在新建好的文件夹中添加对应的文件8 R* N6 d7 _3 ^3 a) r9 D
3 X1 a5 d6 t& |+ F7 j! h
20210408095401491.png

. y; V1 U* g4 H9 r* J  _0 E& V8 O9 X9 d4 @
每个文件夹添加文件之后的截图如下:3 M+ x$ O3 Y$ d8 {- e$ B
0 Q+ \8 {8 j. q" r- J
20210408095429876.png
+ U6 v2 S& e) I

3 @* n  P  n. ^( z/ H, F
; l0 v# z( Q5 d- M0 l2 P
20210408095445707.png
0 G/ H- R6 m4 c" c% u5 G: X& c

! r% v& X% Y7 m: H. m* I: ]
20210408095458359.png

- I- S/ Z' R! Q8 g+ ]+ T& S. x( [( |; @
20210408095512921.png

) P/ Z9 b* b3 R& X- T" H) o  W- }1 Y+ t- @
9 s/ D; a8 [& V! Y+ R8 Q) v2 I
此时完成了文件的添加,点击 OK 退出' h, W" \# F, v9 @
- r! a0 Z: U2 W  W$ B5 [$ J
此时可以在软件左侧的文件树中看到刚刚添加的文件6 Z. i9 H* H( Y2 d4 i- Q9 {
0 i  V/ b* B( t( ?2 }/ d# ~7 C
2021040809552888.png
! @/ _; i' w% w5 W* U

' Y7 ~1 [  |' \5 ^, N0 K2 N  N4 ?5 w7 b# f进行初始化的配置
! x" D% k5 }9 j1 p8 O" v点击菜单栏中魔术棒的按钮: `- f4 T1 D1 @* _( b, F
; h4 ^1 t+ H4 R3 g5 _! k
20210408095544713.png
% s& a! U8 e1 ?' c  a' F- i

! l5 a& @5 _1 ]2 E首先设置单片机的晶振为 8.0MHz
$ E! B2 ^! k8 T1 l( E( J3 i" T  o/ |7 Y: t* p* K' O6 G
20210408095600386.png

' N2 C$ ]& o1 L8 n% @! h7 h- G% b" D1 A: N6 o- s& h3 N
勾选生成 Hex 文件
: j$ n3 Q. b. T" ?  r2 w  k  f+ v( r9 T- p$ o5 g, Q2 I
20210408095613226.png

: ?) ?; M3 L4 o  K4 Y2 d/ x8 R. w2 J3 c
在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD
% c* c; b& h+ C0 e  o- ^# t7 N3 J# C# A% X' D$ P5 u
20210408095628530.png

- w+ ~7 c' Y+ N$ G# M" R( g/ T6 _2 p: I5 c( Y$ @, r
在 C/C++中输入包含文件的路径,然后点击 OK
( B$ Q. j. f. j8 ~5 f4 K) K' A* [# h" b, l
20210408095641883.png

9 w% B9 P$ A& b0 `" C
8 U* A7 A% i9 G: u8 ^在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了% H7 Y0 J' @4 a5 ?  C* h5 s

3 c; p  F$ ?8 Y4 ?. h! [$ J
20210408095716404.png
' i- T9 C8 M% ^

2 R; p4 ]5 ?2 R7 h% C7 E$ `
收藏 1 评论1 发布时间:2021-11-28 22:54

举报

1个回答
朱贵和 回答时间:2021-11-29 09:09:58
详细!
6 a' F+ ]4 w+ Q1 W& i$ }
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版