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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程! |" M4 F0 S- h
一、准备
9 |( N5 ?5 N' L( F4 uSTM32F10x 官方固件库;
6 `2 H$ A$ |9 J  k( F0 U
6 v7 ]- W$ W2 K. l: k# c
20210408094157723.png

- d/ M, ]. A1 z+ o. a
0 ]8 d* B. q( \& \! {- gkeil5 MDK 软件
7 n, |# ~# |, n# o$ _! v/ B5 V7 N# |
! d) E( c" i" j  s7 f2 [- A
20210408094236205.png

# @6 R7 J% k; f: M8 g! o
" h* I; |) S6 m$ T5 {0 Z1 q9 C二、步骤
( |+ Z9 t! R+ U/ E! w& u* Z0 J(一)创建项目文件夹,复制固件库文件
2 H' }. o" k2 P& F+ @8 A1 I/ K新建项目文件夹,名称自定,如 Project8 v+ K9 X1 e7 e& `
9 I4 g7 t1 H8 }9 z, O
20210408094308107.png

7 f2 B8 H, R0 c4 b! d$ `8 N5 p+ Y# r3 h. S! g" j% c
在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:& j4 Y: K( g# d- ~* k
文件夹名称        作用
, H5 _/ ]; J0 w6 K3 ]$ ^- C: {/ @" i. ^  Q1 u/ R
IGEW[WXJD`PW8`LB]%OI}T8.png
2 l) W. U3 R! u2 o/ v% l$ o7 l# G+ ?

" z! ]" X  K. U2 f' K$ ^
2021040809463570.png
( u5 q) S' {3 f# U1 R& N6 Y
& R! H! W, I& G. J8 v  F2 |# A
为每个文件夹粘贴指定的官方固件库文件
* Z1 ^: o  M& s7 s& U4 R* E% iCMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
& [# J: ^8 w7 H6 p. _0 K
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c
    6 g* Q0 d) h; b# z2 }9 ~$ ~% L
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h
    + p2 A+ l! Q) ^# ?$ v0 S% x  A( F
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h% V$ \6 N! ^5 |5 n
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
    # n& C& s3 [1 Q* z+ j  Q9 V
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码

3 t$ r8 D2 v- e" `: J+ Z% s  ^! b因此,CMSIS 文件夹中的文件如下所示:
9 X# Z  b! N2 K  z" s
# r( g; {% Q6 [& D
2021040809470937.png

, M& {! R( Q8 A+ M
3 F7 ~2 K  J6 }- r$ D# s8 o) U! w' ULib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:$ z3 G1 u: Y/ b& ^7 ?, n/ b& g
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc
    6 [. }9 A7 B- q' s$ J- \/ q
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码

  ^. Q  B- Z% N) g; \6 |$ G因此,Lib 文件夹中的文件如下所示:5 F5 S- L  S7 O4 b, J$ [5 o, H" j8 P
+ t) c4 t7 M& q
20210408094740591.png
) `7 y3 X; K$ N4 D% U9 m8 ^
5 V$ R. \. j! x4 @3 H& \
Startup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:
& `& B- n7 ]( K* C7 t/ K' [4 z
- q3 i2 D0 m/ \0 V
20210408094859930.png
3 I3 ?3 K0 `3 Y" a% E
7 @4 E, F5 T# Z
User 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
% }9 m6 j" r5 A; k! ?. C
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c) a6 e) ^$ m; V9 V( _4 T4 W, t. V, |2 x1 A8 g
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h4 {" U* T# l, Z
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c" c) O; ~) y9 E9 C8 C( Y( H1 e
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码

: c8 j0 T$ S% f, I! M0 T7 U: j因此,User 文件夹中的文件如下所示:& M8 N( U8 i3 Q( [7 D
% @4 I( I1 c5 e( G6 x
20210408094927828.png

- W8 H) W7 E$ T. }' I- b+ c, P6 t3 {- g. o" I
(二)keil5 创建标准库函数工程
& @) _. T0 \" }0 w7 C) q3 o- I" z& E- p4 [5 K5 o
打开 keil5,新建工程" `8 K4 i' }7 h; f  o8 R

/ M' |6 s# i4 L/ a* B5 B
20210408095052466.png

6 `4 F) o7 z0 f# {6 ^4 I. Z& \; T4 p' k/ b4 E2 M
创建新工程,起名为 Project% A, F. ]1 E$ k4 I; v0 U. ]- M3 Q

6 P6 ], ~" d8 Q0 @- O
20210408095121706.png

6 t* Y. l+ Z0 y0 t! c/ M
- g1 P  K* B2 G2 w) D' z# a在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C83 c" R( e# \* X( }/ O5 U1 U

8 W% i; `. \* T2 X+ g" l2 n' t
20210408095144762.png
4 n) ^* g5 M4 V$ s. M6 O6 s

7 N2 d  R& Y# f' w  |4 E6 n在弹出的对话框中,选择取消
/ f) |+ g6 n2 z. m' u% e, V- }. M1 w4 F2 D6 X6 t; _) _
20210408095212494.png
8 J6 m1 Q% V$ N3 @# z

/ T3 n' M6 {% d$ V5 F得到工程最基础的文件夹3 D/ y: r# M6 D, Q5 W- w

7 W* y( p- ?5 O' y! I
20210408095238898.png

- q6 j! [* y3 b0 W1 G. B& [( }$ V  U$ J$ A7 Y0 O
将刚才复制好的库文件加载到 keil5 中
. G5 K4 Q% N  s" j6 a; h# o点击菜单栏中的三个小方块按钮' ]& {, z/ e: h! |: U7 \1 s" O7 L, b0 Z
8 X; P( K. s3 Q, _% i" T- b# s
20210408095257539.png

' Z* ~; U6 R9 S, p
# \8 [& K; t( f6 q, Z1 ~5 L1 p在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除
3 ?( L9 K! D: i. i2 k+ V8 D4 Y
6 U. \( A: D% F; C3 Z: I: Z7 O
2021040809531784.png

* ~) j9 ~) [( k- g+ b5 U
. `* T, a* \7 X/ W% J+ h输入完成后如图所示:
- [, B7 i8 \$ V4 N7 g: M
3 D3 N1 u% r6 _1 x& o3 z
20210408095338843.png

% }; i! e' R' O- Y8 f; W# b; a& _* _6 T+ t
在新建好的文件夹中添加对应的文件. P3 W6 q# \1 m. X. b6 J% u+ a
6 i/ u# y- H4 ]" \/ b5 F5 K9 A3 [. X" I
20210408095401491.png

5 X  P4 N( W1 h9 E/ K% P( A  k3 ?( X3 {8 n
每个文件夹添加文件之后的截图如下:# L; ]/ Y/ S) P" B. E5 C
/ `3 Y& B+ g9 J; W7 Y5 s6 Q
20210408095429876.png
& j' W- k- _* i
0 t- f, K7 D7 b5 I# @& C: o

: e( y% G4 Y4 f) o* J
20210408095445707.png

8 x" V7 r5 P9 S9 ?! Z. g& D6 z0 i
: I, }7 W$ v/ }1 j/ c! G
20210408095458359.png
3 {3 U* ?, f* C5 p# H8 [

$ Z, r4 x7 W- J9 P7 N" U- a
20210408095512921.png
7 k# ~1 w; V  t. v1 {5 C( W, f' v0 b

. J: }0 t" c# A  B) M" V1 w/ A: z+ \! P( n  p. h
此时完成了文件的添加,点击 OK 退出
9 T4 B3 i& N5 U2 _! A
* k* c# w) u% p2 P: h  T/ `2 H此时可以在软件左侧的文件树中看到刚刚添加的文件
3 f* @: k- D, H8 o/ B# T5 E# g- ?0 Z/ j9 p5 W* v2 E; K, k) O
2021040809552888.png
& B/ Z& j) o( @# t

2 Q0 \+ P6 ?( k4 j8 K" h进行初始化的配置4 y7 w/ y$ O7 P
点击菜单栏中魔术棒的按钮( y% {4 n& r0 F3 L5 m/ ]; a

' O0 Z- P$ |6 I& k! S8 g4 e, }
20210408095544713.png
2 W) J( V: ?# Z: q$ }! F8 }/ n' ~
, P" r: C/ X$ {4 w: b
首先设置单片机的晶振为 8.0MHz8 c8 q0 @1 k3 V

! x$ L4 ]2 K* g, k
20210408095600386.png

3 \. J8 k9 k& F  A. I: y- E4 g& u, ]9 x! P
勾选生成 Hex 文件
, R- `0 J9 ]8 {# M+ I% D( u* T3 d( U4 R& o3 _2 u/ W0 e
20210408095613226.png

  F( Z1 ]: m$ C  K& ^( T( b* ]0 W! i" K9 |5 v1 c
在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD
) Y; L% f( ~: t8 V5 o) y+ |! \# P1 S
, x( [  N+ Z" P3 _
20210408095628530.png

1 V: B! a  f/ i6 J2 P! X, T: U/ e/ O# k; |9 N7 a; }
在 C/C++中输入包含文件的路径,然后点击 OK# S; x5 z( \8 t7 t! b

2 O* t  K& a; B' A0 D$ E
20210408095641883.png
; H) C9 J/ @: j& a" R4 x1 h7 b
- ~/ m' F( m& E* b( t
在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了. U) U. d$ @, b( M2 a- d1 q
0 _9 C3 x' L+ q5 b2 A( K3 r2 \9 z
20210408095716404.png
$ g( w6 `- y( W2 a% h

9 S& G- l( Z  I5 q) H6 B
收藏 1 评论1 发布时间:2021-11-28 22:54

举报

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