请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程) @+ i8 \; m4 V: K
一、准备  `: ^8 g! t' R% j3 `
STM32F10x 官方固件库;% i* k% ?) ~7 V/ r4 d, x8 i- K: p$ B
1 R* @5 j/ ?' B% @8 @
20210408094157723.png
! M% M. }( R3 M# N$ [7 ~

- L+ R, D, r  T' ^) c6 _keil5 MDK 软件( j4 W2 |5 R* K1 u

1 q' Q1 r4 q. S1 E
20210408094236205.png
+ l0 x5 c1 H. r2 d& n8 f

6 N7 M2 \* O6 v二、步骤
: o; f! s: ~! o" @2 ~3 W9 X(一)创建项目文件夹,复制固件库文件
) }3 T- A9 {2 F" X! B& j新建项目文件夹,名称自定,如 Project
9 m. u4 g% f6 O/ g# n% C) \6 m' T
9 V7 Y( ]# x( I5 [& D: c7 H6 x
20210408094308107.png

: t5 ^1 S* |, @1 H* v# ]
& U3 M9 [8 F3 }7 O& I( w在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:
3 {5 E: L! k) {- f) O' z9 u) u文件夹名称        作用
+ b& N; e$ o' p- q% `6 w$ B2 O+ s: _' s' [4 w
IGEW[WXJD`PW8`LB]%OI}T8.png

( R/ A+ l. W' x6 j2 j
" X( b" O. |/ Q1 M% Y7 r& g+ q3 `
2021040809463570.png
$ ~& W0 p( W. v( S* `

: w8 b2 n% }" k# _* Q2 d, L, p为每个文件夹粘贴指定的官方固件库文件. e0 D" d1 L5 B) m
CMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:" Q2 g9 w5 J, Q- m- B1 i
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c
    * \) z3 J! Z0 ?& v1 \
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h
    ( x9 _7 s; z( }5 X# o
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h8 C( s+ L$ c2 o- e& I0 c% Y0 p$ r2 l. Z
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c! E: O$ G5 c+ q7 c
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码

0 W) K; K) I% G' h+ f( P" b因此,CMSIS 文件夹中的文件如下所示:  `  b( D9 z( X( T
% Q/ X+ H! N# Z; Z0 P/ j
2021040809470937.png
/ U7 h9 Y) k" c

8 M1 i3 W, e; i  c0 pLib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:) r! O- M+ H# ?
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc
    1 Y3 E0 m/ f# k  T
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码

8 I  Q& r8 I* }6 w5 F因此,Lib 文件夹中的文件如下所示:
; [; Q/ q2 y0 X4 c" \( r4 [/ T
. `) s3 y( M8 s: \. `2 F, W" i1 V* q
20210408094740591.png
, R0 [9 Z! b7 q! t) \! t0 m

4 m6 E) I: z7 ?0 g* ?$ J% OStartup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:0 e7 L& c+ O7 l4 B5 V

6 i7 H3 s' n( K, S) q  z* L$ {3 c
20210408094859930.png
# ^* T; _: E" M& f
0 R7 n5 L/ C6 A. @. S8 v# l! ?
User 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:! X4 K" D: l& b1 N
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c
    $ a4 k9 F! G6 l9 V" J, V. T
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h
    % ^1 F' y5 H( B: O9 A+ N/ b  [( ?
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c
    ( [4 t" X0 k5 A% K( g# _6 y% w
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码

! l  H1 O2 m4 ?$ k- C因此,User 文件夹中的文件如下所示:+ r3 q; t0 m* e; Y. y% C
! U: @- f7 R5 r+ a
20210408094927828.png

3 _% }% Z. G5 t# c: b% g1 m4 H! B1 U3 R" F; H& v
(二)keil5 创建标准库函数工程
# R$ a# M+ `" W. O7 f) x  {* O: l8 X5 `1 f' u. p7 z; P) B3 ?1 V
打开 keil5,新建工程
( u5 q: t$ t- Q- ~$ q3 `% D6 N4 u4 q% I* y
20210408095052466.png

8 B6 K7 X2 G1 A  e' Z$ p( r( X) `( v- z, k; s$ m
创建新工程,起名为 Project3 |" I' S4 C5 s4 W

/ O. X2 {+ ^& z' r% ~, D: H, s* \
20210408095121706.png

2 d5 Q% `& q$ K1 T+ u2 V) k, k. _8 L, Q2 x, L
在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C80 O; G: l! n$ |# U. C7 y$ m6 ^
5 q9 y; [; ]. L1 M+ T" v  y
20210408095144762.png

9 r5 J2 b- T0 s5 E- Q) F( G& L7 Z! L4 M2 Z: o1 B- g2 ~' ?
在弹出的对话框中,选择取消
! L- ~( _1 i# |( p; ]2 g& R. W
  T* D8 L4 J+ _3 \
20210408095212494.png
9 i) x) S% ~+ X, M6 d$ n# u

& v8 X4 r0 E4 B. ?/ E7 i得到工程最基础的文件夹
, @8 J" p* K, c
/ k* E2 I* E6 J; G+ b" O
20210408095238898.png

& u1 r/ K; O- `( A. q- K. C% }, D  ~# H7 R4 @1 i; b
将刚才复制好的库文件加载到 keil5 中
1 {" {/ @% [& h% i8 C$ N1 t点击菜单栏中的三个小方块按钮
( U# N; y' }+ T1 i0 k) L5 Z4 C. x
. u' V- U% t5 q1 }7 N* O' A6 V
20210408095257539.png
( w. z* A! x. O) v: s" C; N: G2 ^
0 g3 X' I9 H$ c6 A) R9 u2 h% V
在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除
) k% L# b/ r; R, n" W& }6 l' |* q6 W. P
2021040809531784.png

) u6 m2 ?5 }6 a8 z: ^' o3 R7 ^7 z/ `. u" z  }8 k
输入完成后如图所示:
: Z/ i* `/ y1 t, _* F' q( B* z, r1 p
20210408095338843.png
# _( S+ S+ c& i, I9 ]' S

+ u) I' _! a  {  x1 R在新建好的文件夹中添加对应的文件
( k: v. B! f5 i9 V7 `) m. W, \6 j! o# O; z5 T
20210408095401491.png
9 B# X: ?: e% }1 l2 k- Q9 g' m* X+ T

5 p0 g5 M# ^: K9 ~; \$ P3 J每个文件夹添加文件之后的截图如下:
5 \6 N$ {" g; [6 \, ?; y! [' I% T: g" E0 [
20210408095429876.png
7 S0 |% {( F$ o* M8 P4 r7 P4 N

3 x' I5 m, c* [! L, R  }! |" |( j
4 `# Z. x8 P+ Y8 i
20210408095445707.png

" C$ D7 r+ L- q: _, ^. u: a* Y- }+ d8 g* q
20210408095458359.png
9 E7 v2 ?" ^) Y$ Z
: u0 F! W& t) G8 Q* g! o, k
20210408095512921.png
2 a/ [" {& O$ V  b4 \4 c' j- m" Z

# [. A3 w* z0 {6 z
6 n3 |3 W) A- [  K此时完成了文件的添加,点击 OK 退出
; }( @& @! O$ @" B4 a+ w( v6 r/ r9 ?! ^- b  u  L8 ?
此时可以在软件左侧的文件树中看到刚刚添加的文件
8 b1 r$ t$ l7 ]# i: R6 R
# d4 ]% H0 S$ i4 ?/ \! F
2021040809552888.png
1 K2 m* n8 y1 p

# U& w; m6 S* s% z" d* ]进行初始化的配置
; Q" D0 v. k( M5 m+ }/ G& Y点击菜单栏中魔术棒的按钮
/ m5 I2 T# `; h4 u1 ?5 s0 O5 _5 h' ], k' D
20210408095544713.png

/ U" P; E) ]( {) ~% K
$ M3 ~0 d# [# b4 x4 f& Y首先设置单片机的晶振为 8.0MHz$ X: s, e' P' m; _. X4 w

8 w; X* V; m# ~4 S- s4 y% E
20210408095600386.png
0 ^' e' p- x  F- a: L& W2 T+ w1 `

7 Z1 u, k; j5 j1 H勾选生成 Hex 文件6 W1 V. g" e0 N" L. O

( F- p" ^& w, a3 x" b6 c7 p, K* C
20210408095613226.png
  W; @6 S9 w8 d( K) ?, `9 R# t; G

/ k" }  o! X- u0 j9 O在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD
, e- `* _/ B7 j8 d
+ M! R+ F, H8 E4 T0 p, z
20210408095628530.png
6 _4 e- z" x# A- U8 I2 w& n$ y
& k, }% a8 A$ Q: \; w3 s
在 C/C++中输入包含文件的路径,然后点击 OK0 N, j! w! e1 {# c

) _# Y' U  X" m# j
20210408095641883.png

) y& D& A- x% M6 R7 y; z$ u  q. Y. Z+ X) o- Z! V: @2 _) S2 E, R
在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了) i: Z) O2 M1 l+ E0 V4 u9 A
6 S) [, @2 _, @, |% j
20210408095716404.png

/ V' }5 z1 c1 k
0 T5 J4 `  q* p+ R  ~
收藏 1 评论1 发布时间:2021-11-28 22:54

举报

1个回答
朱贵和 回答时间:2021-11-29 09:09:58
详细!' q: c* t( e( W* Q* }- ^# k
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版