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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程* n5 W8 d& M8 z
一、准备
% M1 L1 j4 Z$ ^! H; R* KSTM32F10x 官方固件库;6 B/ F, u% p6 H& }/ s6 W

8 i: q/ i2 E5 {3 B6 @! y6 b
20210408094157723.png
$ L  Y9 t9 {& J& R; l
7 Z7 E1 w1 E# [( x3 j# Z
keil5 MDK 软件4 R$ i3 h9 w- G, f# N! Q8 K
9 q/ P" u8 x) g$ _3 ]
20210408094236205.png
/ d+ E# b. u2 H* x

8 ~8 i$ o9 P/ k( A6 _' L8 s二、步骤
5 R9 e5 @8 }# t(一)创建项目文件夹,复制固件库文件
; J* m  B+ I* C新建项目文件夹,名称自定,如 Project
2 v( n0 f# j0 a  m7 }2 a- p' d" D2 A$ X, Q
20210408094308107.png

6 @& L3 S$ y" ~( B) L3 ]# H/ |6 q/ C( _9 u5 b
在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:
! y$ n2 d, z2 C' H文件夹名称        作用$ y& w' T% {1 o/ e) ~6 E" _- l4 O
- ~0 k( I+ v: Z  C6 S4 C* |* I. p
IGEW[WXJD`PW8`LB]%OI}T8.png
1 _/ d6 p8 f2 P6 z5 T, E1 |; @

( W3 U1 W0 W5 y9 I  E6 D+ ?, H
2021040809463570.png
  ^/ k; U/ |: n" O/ W  N) T

- r' D  l$ @6 k' a( E5 D为每个文件夹粘贴指定的官方固件库文件
" a/ @; ]8 v. i4 I: YCMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:; h# d0 l5 F4 v! W; ^' q; M
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c& i- M& r  I/ f
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h
    8 j/ H& Y7 N5 G0 d" ~& n9 b
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h
    8 ]! w" j" l5 ?& E4 j# @
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c* x$ u2 V+ y) Y. t- z4 X' ]
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码

3 B$ {6 P7 ^7 Y  b; D! D; e+ P* R因此,CMSIS 文件夹中的文件如下所示:5 l4 X5 h; w% k9 T# ?7 `3 M

/ n( w" n% h! W) G. p
2021040809470937.png

" B7 `5 L7 y  \* b  O  B
2 D$ H) \. b; F; VLib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
3 G6 s& j" u- A3 k
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc
    ) i0 x/ ]# v5 s8 W! z8 u
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码

) E* H$ F7 I2 [) B" N% D因此,Lib 文件夹中的文件如下所示:
% `4 \: f7 m% B* t
6 c4 R5 a) B( \0 g1 e' N- m
20210408094740591.png
* K. X4 E, A9 y+ i$ c
! _( q# E* \5 s  T6 }/ L; @. u
Startup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:% o3 D! }/ R! J8 v! U1 {

4 H! b2 t+ l1 Y
20210408094859930.png
9 F) Q3 k& [: K# W

5 [3 [  L/ w+ v0 H! KUser 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:' r0 k4 N! D' s" A1 m; Q
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c
    / `7 y, F/ p/ s9 Y3 |- f( r9 A
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h& P/ N  T7 }- t
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c
    & c1 ?" i. S6 t( R9 z8 @
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码

' X7 c4 j1 S4 d因此,User 文件夹中的文件如下所示:
; ]9 P$ Q! |" h, B9 l0 h8 H
/ P* W, c1 w: d* ]
20210408094927828.png

, j4 A# T% X* S/ r( J8 k9 C' M
5 C4 ?, _6 C3 Z  f(二)keil5 创建标准库函数工程3 u* t6 \! e% [  I4 r

8 l$ B1 Z4 r7 P5 ~. l打开 keil5,新建工程
7 d& T% `; f, G5 t/ N( ~: w9 J5 g0 q! G: W* J6 w! v# B
20210408095052466.png

, D/ T. S! K1 h; g3 h( H
# f3 I1 t3 ^9 F. X' B' Y创建新工程,起名为 Project
1 l! b" O# U8 H% N
. n- F& ^4 z4 ~: h( a/ A
20210408095121706.png

- B4 X! f2 N) i' D7 p( U6 {
. L6 |" Z3 J; o% K" y  b在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C8
: u# x' u' I! X% Q& ]+ L! T
2 A( z% a/ @3 e9 U
20210408095144762.png
9 O, H6 B' ~+ D% \
) R' u7 t8 M0 r! s& e5 z" X
在弹出的对话框中,选择取消* O4 f" i! @$ W
6 f" c+ ]+ |$ y
20210408095212494.png

% A0 I# P3 j2 @% K3 R. J! i0 H& t6 [- Y7 E* r! _
得到工程最基础的文件夹, V( }9 L, @4 W( c& L

  {9 f/ n* S* ?- P9 k3 ?2 Z4 O
20210408095238898.png
8 C1 J5 G$ h3 c# G% B8 G6 |
9 n( }! D  ^6 U
将刚才复制好的库文件加载到 keil5 中
8 M7 P4 I8 f( H% w4 P# g点击菜单栏中的三个小方块按钮( o" B- }: I$ W: E
$ {: `- S' C# ~6 U5 s
20210408095257539.png

+ Z! T- V; H% W. n, d6 t. d  [2 _/ C! y% s
在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除7 L' G1 K8 L' f4 B# ?9 s8 Q( J
! o, q2 r$ g; |$ T5 R, `* V9 }
2021040809531784.png
/ l3 ]& ^% A+ Y, `: j" }
2 q' ~% c7 Y; }% P/ |1 D% N: m
输入完成后如图所示:3 Q: y% i9 \5 t. n

. c5 g4 K6 E" b4 F( |
20210408095338843.png

# D4 _$ F" P4 Y: j  o* E! |% y  C- |: @, z9 S
在新建好的文件夹中添加对应的文件
# w. k: r- p: [1 M0 S
' r) A( x, J3 U( \
20210408095401491.png

0 M5 F5 t, r. O% J0 W. H
+ n& \# @- p. y$ N( t2 R+ ?每个文件夹添加文件之后的截图如下:
3 B5 C) ^* F! c2 r
0 i* c- y+ {9 M- m6 d+ N
20210408095429876.png
1 C% g: \) K& r( c; t0 G4 _: g4 G( O; c

. \4 s8 D- n: S) b( ^
. V/ W/ s# i; g8 ~# ^
20210408095445707.png
3 G# S$ B; D* t& _2 x
" g# w& a7 W3 v$ [9 ~: v+ [* L
20210408095458359.png
2 B: i* o/ H& a' u, s' B. d; Q% T

+ m% P! f7 S/ v
20210408095512921.png

3 Y! a, h, H/ F/ i4 P
& x7 E4 f. i& h- l2 j4 y9 P2 c$ u: T' P4 B( \) H
此时完成了文件的添加,点击 OK 退出
+ A" q, j3 m1 K# l+ y! f
1 c, |2 P2 J: N; K$ v3 l# v3 Y此时可以在软件左侧的文件树中看到刚刚添加的文件
5 v7 \! T; G; T
' W" X2 l, g; U; e
2021040809552888.png

6 L4 F' m0 K$ E- P  v. o8 W# K8 U8 v# {- W
进行初始化的配置
1 g6 O8 K% U  b* w  A点击菜单栏中魔术棒的按钮
  Y' ?: I, ]& w+ b4 I: b/ Q4 N6 ~5 Q
: V4 q' e7 {: C% Q* J( x# y
20210408095544713.png
0 e' _& n  D8 {% A0 k  b/ t
6 r" c5 M+ ]6 I/ n9 d! m9 Q
首先设置单片机的晶振为 8.0MHz
/ |6 J; v$ p* ^7 G# Q# E# Y+ I& l, |: [+ S) H, V
20210408095600386.png
! t/ H3 r0 g$ M' _
& G2 M6 w8 |9 s7 L& _% a1 m% j
勾选生成 Hex 文件' r3 \6 g0 C9 I8 k
, @4 F5 b! M  k
20210408095613226.png

! L) I" g' z4 ?( Y) f% z0 d
: B. o) U  v$ F0 Y在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD
5 |2 u1 L$ ?9 C5 Y) W7 o' V) Z) P! `5 U8 D/ y8 Y) |
20210408095628530.png

- U$ R  ~+ e/ S' _
5 Y% Z; ~4 M7 O在 C/C++中输入包含文件的路径,然后点击 OK
) D3 u: F4 R8 `5 q5 D; Q
6 G: N+ Q6 s7 |6 x
20210408095641883.png

( \: |) t, K4 X6 Q8 d* ?
# a  O6 R6 j, O- a: r在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了
) |) P! ~, T, ?' d% o# {
% ~2 U8 ?+ C* s
20210408095716404.png

9 E9 K" D; M5 m& H0 C
- U; A7 A1 ~! s% ]% s
赞 收藏 1 评论1 发布时间:2021-11-28 22:54

举报

1个回答
朱贵和 回答时间:2021-11-29 09:09:58
详细!! W% B5 f1 v( M9 V6 F! M; c

所属标签

相似技术帖

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