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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程" w; B) i2 s. x# S
一、准备4 M- a' X" z+ k5 Z
STM32F10x 官方固件库;6 Y9 I8 I- o, x0 l. R) k

* p5 q( N6 {% s2 j
20210408094157723.png

! o3 J# C7 z' Q) Q3 H
* [0 u( I! z1 `, f( f) o* n, akeil5 MDK 软件6 y# m5 {. Z. L: B' Q
( B: T2 l' B9 B0 w7 b* Q
20210408094236205.png
5 b; P+ X( a  e3 Q  Y7 l0 K# Q
( U9 ^' y$ Z8 i2 Q. E- Z; ~, O) ^
二、步骤
' v0 \. T1 A0 P% Z(一)创建项目文件夹,复制固件库文件/ X$ l2 \1 o9 ~% t+ P! P+ r! _- x
新建项目文件夹,名称自定,如 Project
4 ^8 C5 q8 o2 c9 Y' D; {1 B6 w& g4 A& C% c9 w' d- K/ E
20210408094308107.png

3 n: g% s2 `/ ]7 e
+ k+ m- Y" [$ M# X! j% o在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:
; p/ t0 M  Y) i0 W; A) p文件夹名称        作用
2 y; A5 v8 ~* o" I8 `" d3 _" S+ [+ b+ v* c/ v' K
IGEW[WXJD`PW8`LB]%OI}T8.png

3 X/ Z% u4 Z( E* }  b6 }5 s
5 v, l2 u  L5 \7 n
2021040809463570.png
/ e1 q3 p% O+ E! p: w
$ C# M5 R5 c" {8 `! P) `
为每个文件夹粘贴指定的官方固件库文件* S2 i' I% B8 Q3 H. V7 b5 r
CMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
3 I# |- f+ g/ l
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c
    - V# g. C& a3 ]) C. f: N/ `3 q
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h  V8 m  y7 Z3 y( b( F; n0 A) d) e0 W
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h
    , J% J/ t$ }  j8 p' z  L
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
    1 k3 J. p6 l$ l; W' S, t9 V; Y
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码
! L) Z( b& i$ t9 U6 w. G2 e
因此,CMSIS 文件夹中的文件如下所示:
4 I( t: x- S- e0 a$ \" ]! {0 q, K
2021040809470937.png
9 Z0 C4 m0 @) n. I" x

$ M3 x1 {0 ]- r  B( d8 V/ J" i+ kLib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:, H# [7 h$ q+ f# i
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc' T- L0 _6 n' _0 c, {
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码

1 y6 o4 u5 Y" Q3 g; w2 K" m因此,Lib 文件夹中的文件如下所示:
" @1 M. f8 H# Z0 r% q6 M4 o6 [. R  f9 C
20210408094740591.png
0 j% z, n4 E. l9 Q; D! p
6 I1 g9 ~" f; W7 m
Startup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:, _" ?; f# g; k7 L  l* j& N

& ?7 c$ v7 @% |( K7 e
20210408094859930.png

1 G* }7 x) O. b
9 j, S( Y# c1 C; A. K9 d$ YUser 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
$ s, `, |  o: E" b  r/ D
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c& D$ S# l; ?7 m# G  }' o$ w" O
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h3 a0 ^0 u' g- e9 P
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c
    5 T1 u* E& a3 E6 Q- @/ y/ U+ V
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码
/ w8 v8 [; S# K
因此,User 文件夹中的文件如下所示:
: T" j. W3 r1 Q4 r. X2 f: O2 E+ c: n
20210408094927828.png

& W8 b( K% \$ k+ v" w( c  _5 d) a( g8 c$ L
(二)keil5 创建标准库函数工程
; ~  r/ ^$ j  |0 M( Q. ^& u1 S
  {+ t* X4 P" L" _; X3 n打开 keil5,新建工程
7 Q+ y5 f2 H; I3 E* |0 E" M- ^' E. E
3 ~" j& a- v: H5 V# {4 {
20210408095052466.png

" z: R  s; D9 e% b8 z7 n1 g( Q
$ U2 N, \6 B5 C# t创建新工程,起名为 Project
+ C" Z) n  X& n. K: i
5 J& N; M5 ?- b5 I
20210408095121706.png

/ P$ _6 N- ?/ y4 O& C: G0 l! W; B3 ~2 J: K3 T' q: Q) E
在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C8
: @& H2 p. t6 T" E2 _1 }7 C7 t- d5 }% N% C5 [9 s' C- n+ e8 Z
20210408095144762.png
! {8 O: r; `% w8 @+ l
2 J/ {" Y: m' _
在弹出的对话框中,选择取消
$ k1 N4 W# Y. k( q! `5 D' ~& s8 y$ y; f( ~! U. s+ S
20210408095212494.png

4 L! c% C1 ?7 V1 T9 e3 P& Q5 G4 j4 B: p9 m
得到工程最基础的文件夹
. Q' k0 W. i3 M
6 s5 F# m# y; s6 R6 w6 U
20210408095238898.png
: g7 e4 ~4 d1 s3 K+ g5 C

/ ]6 [0 H6 ^; E( D将刚才复制好的库文件加载到 keil5 中) o8 ?9 m- T3 m7 t8 K1 g8 j8 c3 A
点击菜单栏中的三个小方块按钮" q2 ]2 i: q+ L& o, {

/ w6 @& d7 k( m$ w: I, I
20210408095257539.png

% j: l' \$ j/ S* ~( |- F  Z0 G# v4 O. D4 A7 m' O# k9 p
在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除
1 Q# I8 c% c/ |4 G9 _
7 N  C. \. e; {: x$ y
2021040809531784.png
( g- x) Z1 g* Y) @7 K' p( ]
! F" R/ Z5 g/ A3 ?* h! a/ _' b
输入完成后如图所示:
; j0 q6 j; y4 m! r8 B5 v  ]0 m  W% N) k" D1 X# q1 `) x4 g; R/ Q* v
20210408095338843.png

; _1 B* s' h; z' D; U, b
& |9 g0 N# X- N0 q- D! d/ a' l在新建好的文件夹中添加对应的文件
" I0 P% a2 B7 y% \8 I5 L
/ q1 U7 J8 X, w$ T
20210408095401491.png

& Q- K! N( b8 q( f! @' V0 H# V  g; n: v, J  `1 @$ Y% N# v
每个文件夹添加文件之后的截图如下:
. J* F2 ]. m9 @0 i& \; f6 [' h0 \4 L4 v3 o
20210408095429876.png
& V- Z: n  p9 A+ _3 Y8 E' Q' B' g% B
% `. ^( p! C; ?# S( W
: \2 u; X) V( c- n4 N6 y
20210408095445707.png
3 r* ^' l1 u% C8 x/ m

8 P$ D/ j3 a- M/ D% G& W5 [9 n8 |
20210408095458359.png
; f0 p9 S+ _" o0 u, x

/ b" L1 N' }9 K
20210408095512921.png

2 A% S* E' |* _, S
' R# t. ^- c- J/ p2 h0 {% o' D( s. x- P
此时完成了文件的添加,点击 OK 退出
" m+ _3 b! y, B. Q1 C% H8 q
. c$ `" z; Y6 R2 o4 u% g此时可以在软件左侧的文件树中看到刚刚添加的文件
( m0 Z3 d$ H3 R0 w1 J: a: J% g1 U0 U0 R4 o" ^
2021040809552888.png
& n6 i' N% a9 }2 l9 w' }4 k

$ R- M( {' D2 b& W3 Z进行初始化的配置
, N/ `5 l6 A2 {; l) V点击菜单栏中魔术棒的按钮# c2 ~' W8 L" P) E& o" }4 `

  z0 v* q) G1 |: L6 ~* _% t* v
20210408095544713.png
2 q9 Q# N5 i. j

3 C# W6 L( S$ u4 e8 `) y+ L首先设置单片机的晶振为 8.0MHz
2 }1 r0 S( X! F: t/ H8 P/ \, o5 E# R, e) i% y) ^( p
20210408095600386.png
) x" _0 X" Z" H7 z% Q
, C  x- z5 o" b- E- f
勾选生成 Hex 文件
. q9 G' V6 r" B
5 H- L( ^3 E5 ]/ a' d( b3 q: z. p
20210408095613226.png

% R2 o' H0 D: C1 f' b6 w4 a4 r, h2 c4 k/ z
在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD
3 s! p  Y+ P2 c7 F) R7 w6 q4 K; \0 u
20210408095628530.png

+ w- s* N% I& Z. L+ W; z8 E& v' v8 g4 n. i5 k, Y
在 C/C++中输入包含文件的路径,然后点击 OK
+ Q2 V8 u, ~/ ]. O( V2 T; l2 R% q5 R7 f; g2 \
20210408095641883.png
' O+ C5 o: J% y6 J' z

0 i1 z  Y0 Q) U: g; [在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了6 I& J! ?: `4 B9 a! j3 `5 J" U. M

$ o  L5 V- S1 }- J; J# C4 Y
20210408095716404.png

9 e# {/ Z+ g7 B- {- P5 S& Q2 j
7 P8 @  e; S- n# L
收藏 1 评论1 发布时间:2021-11-28 22:54

举报

1个回答
朱贵和 回答时间:2021-11-29 09:09:58
详细!& ]; e1 Q/ {, a: m" ~

所属标签

相似技术帖

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