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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程
3 J) H/ g0 f- G7 h一、准备7 k, M. Z$ F  Z
STM32F10x 官方固件库;
8 W: H2 u2 _6 K/ ^1 d" \, L
. U0 ?* `  J# T' g. w, {( K0 p) {
20210408094157723.png
! L* [; M+ u; l3 _" Z% T# j
$ I8 ~  G% M. O% n8 W# H
keil5 MDK 软件
9 ^# G' n6 U( d2 t+ d# J1 E) O5 N6 c* \! ]& d; q( U
20210408094236205.png

0 B3 Y+ c, S" s& _  b+ O) d1 b3 [  k  `3 ]! f/ X
二、步骤
0 o+ [! N4 G! U1 N5 X! D; l# S(一)创建项目文件夹,复制固件库文件1 g7 F- M4 |) _" \$ E5 H. S
新建项目文件夹,名称自定,如 Project
- ^: k2 d0 [8 J# g( l7 O) p5 c! @. {' k6 k
20210408094308107.png

8 X/ S; U- o' {0 k0 ^, O# o
, u  f# @7 w6 ~# T+ e0 a在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:  v1 x9 x; L* C: {) S9 i
文件夹名称        作用
. z! }0 X: [3 {3 N5 c8 k' @  K4 U# E2 i; P4 ~, W
IGEW[WXJD`PW8`LB]%OI}T8.png

5 G, m* I" N. S. u9 Q& E' w. c: z3 V$ P+ Y! K4 D
2021040809463570.png
# e6 z" ?) _4 ?; i7 i, E: v% l
7 f2 o0 F+ z) @. K3 Y( r* G
为每个文件夹粘贴指定的官方固件库文件
& t" f7 \+ X; X7 V" T! eCMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
- b; s. ^: K1 `" h5 I- q5 {
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c
    & W! q* b, b0 ?0 N9 x6 G- i: l
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h
    9 J" X* Z# W3 T' `7 F/ c
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h+ `) E! D% q( {  y
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c* d' V6 S7 A! B* j
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码

4 a  U2 Z# k6 B0 t+ {( {- f  O因此,CMSIS 文件夹中的文件如下所示:
+ Y  ?2 n# _+ P% ]
* g* J- t. z# }
2021040809470937.png

$ f0 o, s. Y8 y' j4 ?6 }: ]
0 z4 E( |! u, D  b1 x. nLib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:+ D: F- r7 C+ J7 f( F  w
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc2 U, M& U+ H$ w/ ~2 L
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码
9 k- z6 E5 b2 _% V
因此,Lib 文件夹中的文件如下所示:
* K, b" k5 R$ {1 H; W$ ^
- C2 s& J7 B* J
20210408094740591.png

0 j  S8 r# }- T2 A6 d6 w$ E; T1 X2 B/ r& {5 f
Startup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:% Z6 g( H5 B0 q/ z4 n4 o$ W
1 {( I. Y- c% D* `" [2 w7 n9 w
20210408094859930.png
! f2 q) e# n% O' v7 H
: f: o4 h! w, d2 e
User 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:: L9 P  m& N* M* k( W
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c4 S/ C5 M6 y, y6 y" D
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h% S' p" ^7 J7 f0 A4 b$ Y* F
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c6 x7 u% g, h4 }2 U! r  C
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码
  y1 T% Y) F- T7 d8 j& d. t
因此,User 文件夹中的文件如下所示:
7 u6 R7 c) V7 @; @' X+ ?5 t2 R; ?1 }: D: ]7 {
20210408094927828.png
5 W# o; T+ g, e7 Y
! q. z* ~5 E5 _3 s. S: E; e# d5 G
(二)keil5 创建标准库函数工程: l# G7 y- }( u/ o: n; P  J
* i+ d. D; c4 `
打开 keil5,新建工程" c; ^8 m4 b- B" Q2 Q
4 _! z0 _5 |- w5 e/ u7 U0 G0 q( N
20210408095052466.png
9 m1 p5 k% A4 Z, ~) v: m

6 x. z4 e) h" W. b7 d) m0 E! O. R创建新工程,起名为 Project
& c! c; f' k* M; \" b3 z# ?: k4 E
8 \3 ^. m& ^0 O% Y9 A
20210408095121706.png
. M. w1 W: q, M  g  x; |+ I+ U
4 I4 h& B( L. }5 P8 s+ y, n7 X: x
在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C8/ ]  `) I2 N; z) X. Z( q

$ H) a/ ^' P, v- |7 _8 P) ?
20210408095144762.png
9 V, L5 `" [" V- B" k- R* G8 ^

/ f3 c3 e5 W( _& l在弹出的对话框中,选择取消6 w9 O# D3 A+ P9 v% P8 W

( e, D0 f. h) W; ^- G8 B
20210408095212494.png
5 q3 g& ]6 N$ c. j& o% @# b

+ n$ B7 g  i' T5 H/ e5 Y! l* K得到工程最基础的文件夹
# j; Z; }2 t2 j8 N: @9 m2 ~* U5 W0 ?% Y+ I6 l5 p3 J
20210408095238898.png

) p7 J, `* f( G2 r" r; P" ^  {. {* ^* t
将刚才复制好的库文件加载到 keil5 中
' b( V. B; [# B3 f点击菜单栏中的三个小方块按钮+ N3 J1 `( J3 d2 H9 @
/ C/ N1 h9 L- {( G9 Q1 x, r3 C
20210408095257539.png
5 t- r7 e3 J7 W; g/ X* t
4 T1 C# h3 r3 O: A* Y" ?/ r
在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除
7 S! s1 E: o) s9 K* H9 w! {# `% H: B& W: m, O8 u. k
2021040809531784.png
# w0 B4 G  e5 B/ d

7 [" e. Q* ^7 H5 X# ~' B输入完成后如图所示:
5 g6 t4 U3 h  U/ F  }7 Z' f% Z! o' _+ v" I' `9 u! E
20210408095338843.png

2 ]( \5 i5 S- x! A* W  j7 j5 y8 v9 ?0 ^7 S" \
在新建好的文件夹中添加对应的文件
- e( q5 z- o( s9 V  K8 U8 p& D3 X$ l, @: E5 c( Z
20210408095401491.png
; ?* K9 E4 f5 U3 H5 r: ^" o( U# t

6 a# d* d1 Q& H# c每个文件夹添加文件之后的截图如下:
% F4 b6 v; }7 S9 v* K7 W0 ]) |7 F/ ~  c/ z0 ]
20210408095429876.png
7 U  x( I7 F" ^

* C* j, R% m6 Z3 A0 {
1 B9 N4 p, g  f: O* K
20210408095445707.png

" {3 {3 j; W! |* e" z* k( i: L# Z( a. n9 ~
20210408095458359.png
* D6 R( _; @. {2 c' u
" i2 U6 t" o5 @; M0 r$ F% T
20210408095512921.png
: e9 _( N( d4 _
4 ~2 R& x2 r8 @% O/ m" D" m

# F7 n) {# ~3 ^5 K6 n此时完成了文件的添加,点击 OK 退出$ |& N% f6 W! W% O0 j' }2 X: k

9 X! X" f$ t. |$ p此时可以在软件左侧的文件树中看到刚刚添加的文件7 T& @. g0 s! M" F

& R: C1 q9 {8 P: h! s1 _
2021040809552888.png
0 M8 A( R) d* U4 k( E% ^* A
( o! ^7 N8 ]1 Q
进行初始化的配置
9 B# D) C3 Z( _$ i4 E点击菜单栏中魔术棒的按钮7 ]) a. c1 _5 ?: j) i

& d$ q/ e! w# J1 j' g
20210408095544713.png

3 {( E$ v9 I, l7 p$ _$ v
; _& g  w4 k8 V4 W4 F' T* B3 [首先设置单片机的晶振为 8.0MHz
  U* y6 J1 t0 F6 H  l4 S; w$ y, G/ E9 A* S1 A3 H! d
20210408095600386.png
1 y; H& ?% N; P0 f
( z- r2 N, [1 T; ^. M, Q
勾选生成 Hex 文件* D, c  L/ B% e2 A. J9 H  J

, ~. o1 u; j+ L2 O& b0 {) z% l8 y
20210408095613226.png
9 F" x# v* _* e* u! |) v6 U" T& c
4 W; d3 O: H2 v+ _) u: g& n" v
在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD. C% ]/ u. ]$ U  r3 c/ z

3 v0 N* ]& J# y( p1 w+ k. \0 k
20210408095628530.png
+ c7 q( U, O! ^$ i

0 ]- c( a, n6 j+ c1 r3 ?, z6 H在 C/C++中输入包含文件的路径,然后点击 OK" F0 m+ ?6 R* H6 r& v+ D/ \( K
' _& l. U) D4 V2 }0 y
20210408095641883.png
2 A7 D, [, Z# b' I# M

  p/ L5 V  o9 p8 {1 [  i( c在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了* a9 g& J/ \5 {4 A- K. c* D
1 |( |: \# _1 `4 o, v# a
20210408095716404.png
$ o* ]" P8 J3 g6 z6 T& _% O: [
4 b8 f) H; D" B* D0 z* r
收藏 1 评论1 发布时间:2021-11-28 22:54

举报

1个回答
朱贵和 回答时间:2021-11-29 09:09:58
详细!
( A# O" ^2 d+ c; [
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版