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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程) t9 H' I' a; m) t
一、准备9 W1 x  _& \7 W
STM32F10x 官方固件库;
# J8 C! b) E% L7 k/ e0 [1 r9 H
" S+ S, Z: C8 \1 M; U! j
20210408094157723.png
3 w7 u; t7 }2 n

& G6 |1 E$ z1 h5 Tkeil5 MDK 软件
) g7 R9 F! ]9 _/ A4 q" {
% U7 m9 y1 c3 |
20210408094236205.png

7 a& C! I, e0 d' W% X6 |" r& W
; `( Z9 p' f/ N/ I$ c" T1 `二、步骤
" d1 v/ q& v6 P: {1 y(一)创建项目文件夹,复制固件库文件; B! ~4 h& {  R, j/ p- y# S1 O4 }* [
新建项目文件夹,名称自定,如 Project" a9 n2 o0 B: l( h, U1 B) M

& q* J, u" E( }% O& C6 R
20210408094308107.png

+ W5 Q; _) `7 D6 ]  p8 N5 {  b/ m; f" k6 t4 M, u
在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:  q, U8 l) k( l, v
文件夹名称        作用% h6 U7 b, A7 |3 e9 b5 S. H
6 k  k$ Q3 W0 W* A2 q, ^
IGEW[WXJD`PW8`LB]%OI}T8.png
7 U. E3 K; x0 S5 y
. E/ S) f2 ~) _, c
2021040809463570.png
% b6 D$ E% k- M% G
6 A7 R/ n3 G; P. ^9 \7 ^( P
为每个文件夹粘贴指定的官方固件库文件
/ |5 l, L1 o. h6 d2 W2 C5 jCMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
& {7 k7 s; i  D5 O* G  E' p
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c
    - S2 ]- r9 O/ T4 V
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h
    0 x4 p5 u* ^! h* b
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h2 y* V. q5 I2 E6 R
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c1 _: C4 O. K5 {+ |1 [/ t
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码

& f2 b7 d5 b6 @% J6 F6 w因此,CMSIS 文件夹中的文件如下所示:/ q9 V6 Q" l& I! n$ u( ?

1 |- M- n5 t  m- w: R8 q/ ^
2021040809470937.png

' R, Q5 h, m7 ~: e) o7 Z& s9 ?( _0 \4 F4 d0 X, W, W
Lib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
8 w! ]9 q" m. T7 ^; T. L$ c6 e
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc/ S8 S* K7 E5 T* h
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码
$ o$ L2 T" y" k
因此,Lib 文件夹中的文件如下所示:: e  X8 N3 M. V

4 L; m1 a, P" C( e1 }0 o$ w
20210408094740591.png
4 \, G( m! s8 F, j

) j6 d5 g; a/ a/ WStartup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:
% L+ h- N/ A7 \' {" d6 g' v( T, W
20210408094859930.png
' N' s0 ]& ]) ~
( b  z5 T+ ^- M/ z  E; @" O0 g
User 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:* q4 d; e! Q) j
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c) J1 ]3 h; h6 q2 S
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h, ?5 X6 x. m4 d+ }: q9 i
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c- J7 c7 R: ]# w# x/ a. k
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码
! ^: L. j* q$ A; j  |6 e
因此,User 文件夹中的文件如下所示:4 ^) V$ ?. ~/ z0 q8 ^

# a8 W5 Z# ^+ q7 K6 g
20210408094927828.png
+ `8 c1 ^' k, ?* k( }+ d. a

0 x1 K2 s' o* p( @) r% d% F(二)keil5 创建标准库函数工程
( L5 [' {( U) l! W- v' x" F
, l( ~; n9 n* K" `打开 keil5,新建工程0 L& w$ b# M8 l" ^) x3 b
( |! Z) C, R' Z! d' Y; {
20210408095052466.png
% n0 q0 K* {- K' G: i

+ C/ O" p9 [  L2 R- c5 j" A创建新工程,起名为 Project( i+ {* @. v* H( s2 T8 ]
7 p8 F# c/ c1 T: e! _
20210408095121706.png

2 B4 _6 i  J4 W' b$ {
3 U& o) T6 f- o4 T在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C8( ?$ R, u" O3 r$ U0 \2 V
. k7 ~) S: U3 }. \* i
20210408095144762.png

' F5 a6 Q+ N5 a3 A6 }; z1 G# R7 H6 y: e
在弹出的对话框中,选择取消
0 A6 o2 o* L) P% Z8 x: w4 R
; E0 F& g( F( w- |  E" ~& T
20210408095212494.png

* X# F5 I/ g( ]7 e2 U& h2 K" z. M5 e6 C+ m) S/ F
得到工程最基础的文件夹' F0 V3 ^& ]7 S6 k
' X, H) l. Q! E* G6 U; j
20210408095238898.png
6 \0 s! X! S* k5 V
$ z' L5 f6 D+ M9 N
将刚才复制好的库文件加载到 keil5 中$ g6 t2 a. @, [7 Q( Q6 j  v
点击菜单栏中的三个小方块按钮
4 I5 q( ^! }! `3 R4 {7 @" E( y
5 G* b( q/ V2 i# y9 f
20210408095257539.png
; U/ a, b( h  B- e5 C  r' D! j' ^
1 Q5 v4 Y" ?  v- f# k, a
在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除
' ], T! r# J6 {% {) m
( y- Q( P. y' Y- b. B
2021040809531784.png
! ]( D9 n  R3 p% D7 [
+ o+ X" f* t& S
输入完成后如图所示:
' f: b: D& V% F' X5 r. |; _2 l0 x% F" F5 l! }$ p
20210408095338843.png

- w$ e0 Z# n+ Q/ V9 ^/ H
4 B: s* W( {0 l3 y. b3 G在新建好的文件夹中添加对应的文件
+ Q; ~5 M& \2 V2 n
2 A+ G' O* S; e. `" Z5 J
20210408095401491.png
* K& }* s* @! k! b

- E6 n/ ?' x5 O每个文件夹添加文件之后的截图如下:
2 W' C% s' f3 B7 b: M
6 D4 |% |. c* ]/ W. J2 D0 {% W
20210408095429876.png
1 }3 I' `$ i$ k$ g" s: ?0 U1 Y+ H$ H
- V) t3 k1 V3 \

) ?8 N; E" i0 ?$ r8 n' `. s, n$ `6 j- K
20210408095445707.png

. Z6 H+ @8 A, k8 s% z# R; v/ s; N  p/ z+ Q7 f
20210408095458359.png
) V) i4 m+ ]% k  }; X1 e8 ?4 f
5 `& x  t+ v+ T9 |4 g7 w
20210408095512921.png

  J! W& Q' D2 G& I5 J. S' s
9 \+ R- v5 F% Z9 h0 ~  [% V" I8 C2 ?! }0 L' i6 Z
此时完成了文件的添加,点击 OK 退出& U6 j* H6 Q3 v1 y9 }

; S: h9 U2 d3 h. [; ?4 g; B( I此时可以在软件左侧的文件树中看到刚刚添加的文件. i6 b, g9 T+ b+ P

# w3 f+ b# m8 R5 i7 _" K4 N
2021040809552888.png

8 @$ ^& n$ v7 G2 W( o2 K& k
) H( O! V9 Y8 f. s/ P# d: S. ~; Y进行初始化的配置! b9 a8 Z, h  q) I$ y7 i
点击菜单栏中魔术棒的按钮  V! Q' K4 b' A
, @, o( X% t8 C# s5 S5 r6 {
20210408095544713.png

! U, u7 G% s% f  p* W/ \' Q+ h5 B5 N8 i! Q5 |
首先设置单片机的晶振为 8.0MHz
, r' H8 d2 U1 W" }+ @
* T9 l+ p! n& h# h* E
20210408095600386.png

2 s, u1 Z+ V  F1 \$ _2 h1 E5 ?+ a( l+ x3 p
勾选生成 Hex 文件, p" @, Q2 ~. a3 O+ u- L
% `8 u8 D1 Q0 l* I% T. _
20210408095613226.png

) o: r. a: R; y; V
, }( U1 _- t' q( v$ {: z0 n+ e. l在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD) o' m* _9 S' r# O8 ~; z7 q

& z; \- {! L7 H- e( h
20210408095628530.png
  b7 T5 M- ^  C
& U9 X' O; @9 i, T! ?  V' M. M
在 C/C++中输入包含文件的路径,然后点击 OK
* k6 S" d, {8 p% c8 ], R. g
* L. A0 k% i! k
20210408095641883.png
# t. P: ~5 d* l8 Z8 K4 M; `2 i
$ W5 F% m- r! q/ _9 C
在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了+ u' A3 Q1 S: \8 W' Y

( M- C0 S" w+ D
20210408095716404.png

# V; v+ m9 s9 p8 G% Q! {
- j% Y; Q/ @) t% ]' C3 |
收藏 1 评论1 发布时间:2021-11-28 22:54

举报

1个回答
朱贵和 回答时间:2021-11-29 09:09:58
详细!
& t/ Q- f# G/ F

所属标签

相似技术帖

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