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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程& d9 A  b- h! l% ^/ ]# L
一、准备+ I4 U7 s5 R% v# B8 I; o
STM32F10x 官方固件库;
  f* O, b$ @' C1 r" J
2 Z3 _' Z# ^4 Z6 F" g! W8 n+ C% r
20210408094157723.png

' O6 }! i5 ]& J# f& W7 J2 ?0 m2 q  X' Y0 B" M5 r
keil5 MDK 软件% y/ G. ~: }! {3 n) e, V
, p1 X0 j% h* m: f% M
20210408094236205.png
: E7 n( g  X& k. F, V
; ^9 M7 ?  O1 p" l' Z
二、步骤* ^& \; V6 d8 i- t" Z7 {1 Y5 }
(一)创建项目文件夹,复制固件库文件& g- ^6 D0 C1 I% \' r9 `7 S" p
新建项目文件夹,名称自定,如 Project
3 e# X* t( `" P8 ?0 r/ E) L& Q
, ^1 ~6 }# L1 F. b9 ^
20210408094308107.png

. _, t7 g- l7 ?3 m$ P; Q
: U! p" B- A! d& m8 T6 X  F  r" @* p在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:
) b* c' x1 g! h- n文件夹名称        作用
; N' G: |) Z" `* m/ `
! v: Y6 T  x* E7 y, k5 F& m1 j+ K' m
IGEW[WXJD`PW8`LB]%OI}T8.png

* ]6 [8 p. M/ J' g5 u
0 z) H) m) |& f( E4 H2 u/ R/ G
2021040809463570.png
1 U/ P4 E5 Q7 [9 V  W
+ X1 ]. h& l0 g6 }' S
为每个文件夹粘贴指定的官方固件库文件3 z5 X) W4 u! q7 b$ D6 n' B9 j# D
CMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:4 [2 f) V3 a( o  w. a) @% c- _
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c9 D! a8 u+ @  i6 Z/ j8 a9 a
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h9 I) [7 }  A, }- G' i- x8 X. B8 A
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h
    9 e# Y! d, Q$ \
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c5 p! g' @  M) n
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码
" K! @4 b" s' C, v( F; ^4 N
因此,CMSIS 文件夹中的文件如下所示:- Z/ o2 |5 A4 B1 y* u' b' N7 I

  r1 p7 P8 {# _4 @
2021040809470937.png

3 i. A0 f2 i' x3 Z% {
: O) \: L  x9 [; y( ~( L0 M* S' fLib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
/ j1 a9 u) _" G6 P  H9 ?
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc+ E; P7 g9 J# ~
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码
# N, i, u* K% J% L6 X, }( @
因此,Lib 文件夹中的文件如下所示:
& x9 @) z: L% {$ U+ z8 \$ T( n0 _: v
20210408094740591.png

. d# n. C4 B% {$ ]" {7 U7 M
  a8 ]9 b+ A" d, E( X6 t) [Startup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:5 C! ]0 y6 F9 }! l& {1 ]

: ^. v' P" }1 B5 B4 T+ J5 g1 |
20210408094859930.png

" b  q8 R. o8 O' e1 H0 W" R+ e- b
/ t/ D/ K4 s% o1 T' ^8 SUser 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
1 O) e4 G) p, F$ I
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c
    6 y4 [  M+ t) ~/ K% f9 a
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h5 c9 k3 s2 Z" H3 u7 n2 A7 y! k
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c
    / \) l. N1 L7 _2 _+ O
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码

& ~; t; t, W7 D因此,User 文件夹中的文件如下所示:
) r' d) u* l2 |$ v9 W* w8 T5 p& Z! `" F  z$ G7 z
20210408094927828.png

3 |3 r: J6 u. E( `. F3 a  H: W7 j1 n: T1 W2 L8 t
(二)keil5 创建标准库函数工程3 y% D, D4 ^! N4 c6 J

- g& I6 G7 `& q打开 keil5,新建工程
$ ]3 i7 ?: x* \( j% K
3 W. M7 y  e* E. R
20210408095052466.png

8 o1 |( M) @5 Y* E8 t7 H9 z+ H0 t9 |7 l: _1 K) K( n, D
创建新工程,起名为 Project4 s& e- w, B2 ^4 o

- }, i$ \6 C  T, N/ T
20210408095121706.png

1 B. X# I* ?  S: A
3 l$ S7 K8 Z% U, n0 G在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C8/ L, f2 u0 n6 D

: |! {: t5 `  h* V
20210408095144762.png
2 @  [8 q8 |2 I" M' v8 ]

* n) u% Z% X, J9 Q# x* h在弹出的对话框中,选择取消
7 ^9 W0 A: j" N9 a9 [- c+ _4 Z1 D+ _' H7 A9 N2 f, T2 J' B1 }0 f1 X3 r
20210408095212494.png
! U0 g/ s% f3 w$ V$ @6 ?

2 R' N2 y; a. z9 ?/ s: k+ w* D得到工程最基础的文件夹0 c  |4 C. F2 y

' F: g' L9 F3 Q! I& h% w
20210408095238898.png

! U$ o4 ^/ ^( {0 U
3 _& e% g( n* k% g1 D" j. g8 P将刚才复制好的库文件加载到 keil5 中
  |$ P0 J) S# \  e. M点击菜单栏中的三个小方块按钮/ g6 C5 ~1 W3 P6 @  h" g

6 h3 U6 h2 z1 u; P( O
20210408095257539.png
1 E* b3 ~, u! m: }  E8 f( Y, O7 k

1 M, @# T4 o3 o: C) s  S* C在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除. M/ J+ c' l) }) d1 \
; u: t/ K# x' P2 B% m# o
2021040809531784.png

, g. V8 d7 [6 n- ^9 c' D# p, O) I* g3 J1 K3 q, p
输入完成后如图所示:
$ a- ]7 G4 z8 b
9 R& c& h5 U' k; Q  m
20210408095338843.png

, ~* k2 e& B, P+ l, r( \
, d6 ~, b1 P- E  Q+ [# D在新建好的文件夹中添加对应的文件+ x  E; j" K: O* ?+ }! t
0 D6 _6 O' h( I" x0 G4 u1 _, l: Q
20210408095401491.png
6 R) B+ |8 g. g9 z* G
# ?* ~; ]8 ^3 U9 z) ^" B, \2 r
每个文件夹添加文件之后的截图如下:* g0 D% ^; L8 E
0 e: z5 F, j. t
20210408095429876.png

! v$ m# B+ U; X  f! r! i" g' s: r" b8 s& ]: T8 O
0 G& P: s* z: n( `% |5 |
20210408095445707.png

. t1 V. c, A3 c& u2 x4 @2 z! E6 f- Z  [
20210408095458359.png

  X  a# V' b, S3 W7 f6 ?
& Y1 l! ~9 G& S% |
20210408095512921.png
0 j+ z) g% _# l8 T1 E; L; q
2 g* l: _7 i) C* H  J$ a( J6 A

( r& |0 K# y2 k' W. T# k  g; `此时完成了文件的添加,点击 OK 退出  P* e" m8 ^9 o1 w  V% u" @8 V5 ^

  \4 U- }* K5 G" z  B此时可以在软件左侧的文件树中看到刚刚添加的文件
7 p6 D$ D& X: b, T
$ c' H9 R7 S$ h& O0 d( r& q* h& G! @
2021040809552888.png
6 q) J& B0 }  V, {
9 [  W( V% b" s  V& P
进行初始化的配置
  w6 w4 M2 [# e) x6 e' {点击菜单栏中魔术棒的按钮
* E: x5 W- z8 S
6 |4 u! e3 a$ B6 _7 `$ _
20210408095544713.png
) t0 c3 g. C0 F$ L
, }2 X" w2 N# a. C" g: T) I$ R
首先设置单片机的晶振为 8.0MHz
' s( K  ^  H7 r! q& y* G; k! X' E: ?; A5 @' \
20210408095600386.png
1 f( ?, \7 X& E9 U: P( y6 A+ u
1 z1 t. f2 g8 ~$ r; V! t
勾选生成 Hex 文件. f6 B8 i4 r" `" B
9 ]* @2 U7 }0 R( l. O2 i5 c  E
20210408095613226.png

- \# J5 z5 @  m/ l0 m; o4 J* V3 Z. a. m' I8 s0 @; a3 \
在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD
; x2 z2 g2 e: O9 }7 P) I& i4 x. a; R* z% ]/ w
20210408095628530.png
: V5 T  M  L# {
+ w3 b$ a0 t. `( ~1 q! A" n
在 C/C++中输入包含文件的路径,然后点击 OK7 b+ F6 K! I' b# b- i# g

4 o0 c4 T' w0 Y4 K
20210408095641883.png
( {8 l3 X. S4 n

# M" Q$ R' h9 {) t, a5 [1 k* X在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了6 L$ G7 t" I0 z: U" {7 L; c  |% O& B! f

$ t- s3 \: N" ]; b' B
20210408095716404.png

4 U  {3 Q4 A0 `; w6 Y: t. i) T0 C) p' P4 I$ D2 Q
收藏 1 评论1 发布时间:2021-11-28 22:54

举报

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