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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程
: s7 k: {! S9 E2 x8 P一、准备* H! @5 S, Q! m7 v
STM32F10x 官方固件库;3 t5 t/ N' ?. C) u0 C

% A( N5 c5 ?! x( d
20210408094157723.png

& N! _- D1 |, k, d% X& o
" i' b9 \2 y' K3 n$ U  Jkeil5 MDK 软件
" n  M: b' Z+ S+ z
. i  T! e( V  n7 Z+ h- a3 [1 W
20210408094236205.png

( M2 \/ v0 x) m7 _6 _# D: H0 C" q; J: E" Y
二、步骤$ }& }' g/ a: q
(一)创建项目文件夹,复制固件库文件
  _1 U: y3 c- P& c$ R. z新建项目文件夹,名称自定,如 Project
/ E: _  Z! R/ I% f) P0 U2 w
" B7 z: |% `/ s# N: ~! x. M, e) z
20210408094308107.png

& ^0 s" B7 o. F1 N# t* [% A& ]8 B& Z2 ]6 w
在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:
( {5 q. c" i4 ]2 e# e  R( R% u$ f文件夹名称        作用* m3 i3 G7 k0 [3 Z0 T/ K1 u5 V. T! N
3 x' [! E) M- Z6 x
IGEW[WXJD`PW8`LB]%OI}T8.png
4 l1 Q' O0 B; y/ R  j) M
3 f: s0 z3 k9 e9 `
2021040809463570.png

) _8 M6 c/ J; p; Y9 H
7 F8 ~, r) |" ]2 h# u6 V4 L. [为每个文件夹粘贴指定的官方固件库文件# J/ e# u+ g% t# ]% ?! K
CMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:; g6 h6 @5 z% S6 G! y" e
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c* X( U! i) ]6 V/ l6 x! a# p
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h. u2 |" f' j( G- n
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h9 p' f4 p% V8 G, A
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c! d+ Y$ X" _. t
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码

8 P3 Q3 Z% I* q$ l4 b因此,CMSIS 文件夹中的文件如下所示:
  z3 ?$ i1 `* a8 b* a5 ^) o; |
; V! R+ O  e' e2 q
2021040809470937.png
3 u) |! H" ~/ ~' e, l  S" f
0 l! p5 c  S9 v/ ~) P
Lib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:& ^! v9 {* p8 Z
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc
    7 A: z9 e  Z2 J* q' B" t- [
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码
& M2 P4 V* a( X4 z7 U5 ^4 X
因此,Lib 文件夹中的文件如下所示:) q. q5 Z+ E+ [: ^% V& {8 `
2 ~; ~6 E; e/ ^! n8 p
20210408094740591.png

) u  C; l" N- Y. f- E( Y$ X. e1 A/ d3 o  w
Startup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:
  T0 y' E4 E7 p/ j0 `$ M! Q. u, @3 r6 \: v1 m# v0 n# g9 u
20210408094859930.png
* A$ k9 d8 L5 J* i0 `
  U! O0 ]* k) \$ i# s! T1 \( S
User 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
3 u7 ^+ k# b; p3 S
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c! v# B$ d7 t# k6 i3 V3 G
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h
    ) C: l' O8 t" j! u5 B, Q8 Y
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c
      c7 B8 T  q; l7 E
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码
9 j- z2 L/ i' v4 _
因此,User 文件夹中的文件如下所示:) G( B- i- R% M; K6 U

5 `' q5 l$ w0 }. N  S' C
20210408094927828.png
/ M& R9 ^6 |& k
3 h( _( ~! w( O7 M: N8 {( \
(二)keil5 创建标准库函数工程5 l. Z9 E& ?' O6 B
" X9 a8 F0 k+ A& @' W
打开 keil5,新建工程) ]) O# m$ F0 ]9 h* I
2 `' x3 s% i8 f7 {5 i( I
20210408095052466.png

8 |& R' S( F( O6 _" M) H
5 j$ D% b: ?- s  U创建新工程,起名为 Project
3 X7 M) l( Q! k; t  ~4 {( k0 v
' o1 ^+ U, X' D: u* P" T
20210408095121706.png

0 F9 s/ n- e* }0 q* P. a+ r: D  @: p/ G* w; ?9 t4 ]
在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C8
: Y- \& i% u1 m
6 ^' b& `# R  e* ~
20210408095144762.png

8 l3 }6 a  p6 ~+ j  Z% A
) C/ j7 K+ U0 [% A$ W8 x3 v在弹出的对话框中,选择取消0 o# m; c) E4 {8 N$ O. {' i4 G4 \' ?3 l

; J( d6 Y4 _( ?0 y( S" l
20210408095212494.png

$ c4 j1 [. y3 M9 d/ X6 f
0 T3 z8 l% h0 j! ~/ n得到工程最基础的文件夹. q0 o+ a6 c, J$ @) s7 n

( {* e  e/ Y! c) N
20210408095238898.png
! h% O1 {8 {3 W; e0 c3 a
4 q8 l  ~+ G# E* A6 H9 Q
将刚才复制好的库文件加载到 keil5 中0 H2 h" i( g8 T& H% l! ?5 S
点击菜单栏中的三个小方块按钮
, A' I$ f+ w; l& j4 {1 A9 t- D) \( F4 \8 H4 d
20210408095257539.png

4 I. @- C! E( B  H' x: D2 M" H  p8 q1 M7 l
在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除, @0 w! O# w( i- h! m

. ~  s- b$ T( E8 J) C. P
2021040809531784.png

6 h& w" y" k! t% I5 m! ?+ N3 \5 a  v7 w' F
输入完成后如图所示:% h9 Q; Y& K7 K  s& [! P

4 ?$ X% d6 [; C
20210408095338843.png

. T9 ?% J2 [! _- g
5 h" [, t& b* k! l" m' |' Y- |0 O在新建好的文件夹中添加对应的文件, O$ |+ Y1 s* v8 b# S/ V8 X
0 R9 P/ G4 a: A2 n4 J" _. i6 t
20210408095401491.png

- v4 r# O: t# O4 I( `0 j$ v+ e. {- B6 i
每个文件夹添加文件之后的截图如下:
% A9 N$ p7 @4 Y5 Q/ ?" x: L9 n3 |- C8 h) R; H2 [' l/ z
20210408095429876.png
  }6 Y6 Q) B: u$ s1 i% Y/ r/ e' G& z

$ ~7 i  g% I* R+ O& H: H8 w. K+ y/ T! E
20210408095445707.png
, p2 W- \, @) F. d

+ ?. P6 a( {+ d
20210408095458359.png

- m. v8 }9 R- j* ^" a6 e# A0 {, s+ u5 |5 e) n" \
20210408095512921.png

  ^+ F& {. X( t3 q6 G0 ?3 T2 V# M4 I" ~$ t) a
$ ~; d! r5 R2 ?* q: @
此时完成了文件的添加,点击 OK 退出  L9 \  M. X. {! P

6 {" ?! B! \3 z& D/ M/ E此时可以在软件左侧的文件树中看到刚刚添加的文件0 X1 g. t* o5 G" Y' K

' M( @( K1 H! j1 `5 ^
2021040809552888.png

+ S! j& B& Q. K' |% _: ], A% Z% y0 B* n+ s4 L# c; I
进行初始化的配置
% f( q8 U" k" D* d  I" }' s点击菜单栏中魔术棒的按钮
9 [7 _2 y( u3 F# `; m+ `
) L$ i" h3 c* Z
20210408095544713.png
# ]' l" @) g3 O% J" z

& k. W$ C7 Y5 M& a' J/ b首先设置单片机的晶振为 8.0MHz; m- `" K; L4 K- h7 ~
  T5 p$ \9 B  O6 ?5 d; E: @
20210408095600386.png

. T- u! B- a' ]* F, q4 e1 P% z! X: w: u6 a0 c7 g* d/ K3 a& N
勾选生成 Hex 文件& O8 E" ]# E9 n

7 `0 b- R/ Y* n
20210408095613226.png

6 v6 J' c+ G: _3 \" d  F, |: w
在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD
$ ~2 {! T2 T1 L, o  p0 [; R2 L. _/ B0 R* n, B- w
20210408095628530.png

" ]9 }2 U. V/ G# ~$ `6 `
) N+ p$ b' W- n% z+ f  M在 C/C++中输入包含文件的路径,然后点击 OK
8 {; L2 R4 V+ _. _8 V
9 P+ e# `0 j3 F/ Z
20210408095641883.png
* a. o* V$ I$ e8 z8 ~" H

% {0 N, B7 X/ B在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了5 ]1 @- z. Q! v7 @4 B

0 R8 C9 O" m) u2 l8 e5 b" d
20210408095716404.png
: p5 b6 V6 \1 r: E9 J& R
; R& \2 F3 c) w. \5 u" C
赞 收藏 1 评论1 发布时间:2021-11-28 22:54

举报

1个回答
朱贵和 回答时间:2021-11-29 09:09:58
详细!
' ?" l; z! h( @! R6 {3 v6 Z

所属标签

相似技术帖

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