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

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

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:54
STM32F1 在 MDK 下新建标准库函数工程
4 j: S2 S8 C! p8 \一、准备2 D% w  X2 I* p0 j3 V' F. ?  H+ @
STM32F10x 官方固件库;
- y& _& F3 z0 m4 U% c8 I3 n. P) H4 S
20210408094157723.png
: Q$ s+ g0 n- G# v/ i; u
' z9 D) D4 t  X4 i8 j
keil5 MDK 软件& o" ^" V3 _0 |& @* a9 @

1 e3 \; _; O7 \; N2 j' k! i& v
20210408094236205.png

- |+ `+ A0 k& c' s# t" V  x; M# j; `# _( Z& [
二、步骤1 K" G5 M0 n6 Z3 [' Y# z* v
(一)创建项目文件夹,复制固件库文件
) K* h$ g- m# s# A0 d新建项目文件夹,名称自定,如 Project
9 {* J& \. r9 b( C+ Z8 |
, C" D7 a2 z9 `* P
20210408094308107.png
6 O9 k+ s9 C" J8 v/ [7 i
2 r* h% G, z( ~5 W/ L' W
在文件夹中再新建 4 个文件夹,分别取名为 CMSIS、Lib、Startup、User、Basic、Hardware,每个文件夹的作用如下表所示,此处参考来源于洋桃电子工作室:
* @; w! y/ E; B  B5 m+ P4 r& B文件夹名称        作用
% Y6 ~9 ?# r! f0 R* D
3 F3 Y$ w4 L1 n9 z
IGEW[WXJD`PW8`LB]%OI}T8.png
/ S. k: Z/ E# V; N' O. w9 W! C5 j

* }: t4 i% y5 B* @& r
2021040809463570.png
2 }: y$ b% `$ T/ K! E3 n

* \4 E7 p" Z4 y2 @$ i为每个文件夹粘贴指定的官方固件库文件
* L) D  u# a2 @+ NCMSIS 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:1 O# M7 \6 D6 W0 d
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c
    $ n. C$ H' G2 r2 B' F: U
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h
    1 X  n( i5 _- M% N! `
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h& _+ h) j4 m! v. C( W0 H& T
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
    2 H$ Y+ ]$ E3 ]& W, G( c
  5. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h
复制代码
/ |/ K9 n) ~* ?6 Q
因此,CMSIS 文件夹中的文件如下所示:
* R! h1 Q7 T9 m7 V( C# G7 e4 k, s! ~- T) l: V. \* J  J3 H, s
2021040809470937.png

( d3 B% }5 b3 d  M* w
1 ]( c# y0 Y' [% ~4 _: {! |Lib 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:" b/ r/ O- t3 ?/ O
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc4 P5 X% K; m3 x' }
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制代码
- u/ f. p& x' ]6 H5 T* n! J" B
因此,Lib 文件夹中的文件如下所示:
: w9 [# S4 N! W. [9 A. [& M- v6 \' K; ~+ A4 g
20210408094740591.png

1 P' E4 v. j( ~0 u- W5 S: V* s) ^' c- B: M$ C" b0 V8 W6 l7 @( W" H
Startup 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(里面所有的文件复制)
复制代码
因此,Startup 文件夹中的文件如下所示:. x/ k. T6 e6 o. B. b
! x9 ~- T3 ~: `( G" F3 u9 o. G
20210408094859930.png
4 _: ]; I$ r# q. M3 S
# D6 C. S9 r  {. E' n
User 文件夹中需要粘贴的文件在官方固件库中的路径如下所示:! F- p. [; z0 S, N# H
  1. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c  V* C- x' _% R% v5 s# [
  2. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h; O: T0 a4 Z7 V2 J$ N! j5 Y
  3. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c
    * C/ l& s! D' \. m6 Q
  4. STM32F10x_StdPeriph_Lib_V3.5.0固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
复制代码

% A  S' X9 L  N$ o因此,User 文件夹中的文件如下所示:
- \: B( N- _. U7 i# k5 ^0 Z5 n  h0 q, o( \4 A
20210408094927828.png
+ s6 J; T/ a0 }/ q8 Q4 ?" ?( s
5 z; T# g! {1 s! K5 p
(二)keil5 创建标准库函数工程# }- f' [& s( A

9 ^8 W' ?; I; F$ r. u8 c0 d# F打开 keil5,新建工程
- Q# v7 |- M7 {5 p2 K! U
8 b8 @+ r, y6 i! Z0 G6 q1 @$ ~! {/ ~
20210408095052466.png
5 b0 Y3 V' a1 Z, m/ A# o& a9 Y
" ]9 }8 W* A3 N
创建新工程,起名为 Project
+ H! n& l6 l! o! E/ `: I& y
& q5 j$ X$ G& E1 C  R4 c% [
20210408095121706.png
+ m& c  P/ f+ o1 W* U/ {

: I9 [+ M5 \" D在弹出来的对话框中选择相应的 MCU,作者的开发板使用的芯片是 STM32F103C8T6,因此选择 STM32F103C86 l6 f' d. O! k" m
, B( ~/ I- d* M4 u, Z
20210408095144762.png
3 A% H9 s) ]3 K

" w  m# ?! [# ^/ |! a在弹出的对话框中,选择取消
) E* b$ j* N! o" f, o+ e# W6 t) z6 Q# J1 A. Z; c. ~% f1 J
20210408095212494.png
2 g8 G! Y! h  H& X3 ]$ r+ g! `% O

  U5 J. ~. v1 w得到工程最基础的文件夹
+ h* t& Y: n4 B* A5 M( W' [. b4 B# F& J) ?  m4 F
20210408095238898.png
. I+ X+ w  I! I
$ t( L3 G; D# V' q
将刚才复制好的库文件加载到 keil5 中
5 B7 y$ p$ X7 H点击菜单栏中的三个小方块按钮8 c4 x! c: ?) {! N9 t5 m0 j" t1 Y

3 N4 ^- D3 l8 L- j6 _5 e  z$ s
20210408095257539.png
) i- k! d: T/ Z( B

' _4 Q7 B" P" T1 f8 D) j2 k" e& c7 e在弹出的对话框中,在 Groups: 这一列里面点击方框按钮,手工输入刚才的几个文件夹名称,注意要名称一致,新建好了之后将原先自带的文件名 “Source Group 1” 点击红叉按钮删除
/ s" U* b) r3 m4 |
: D4 S% j$ A0 E  J- W
2021040809531784.png

# v4 [( Z. j5 v
, g- I5 {3 N$ H6 Z. \# \+ A输入完成后如图所示:* @( s1 n0 |" ~! C

! H$ b6 i4 P1 l9 c8 r- B
20210408095338843.png
. F& Y6 O2 D8 c
+ t4 m  j! G) x. h+ @, B3 I7 X' z, d
在新建好的文件夹中添加对应的文件
7 W& r0 M& {# k( S  H5 S/ [
! f) U" v; L2 W' _& \& |1 _7 d
20210408095401491.png

0 b% ?6 a# G5 D3 j( `4 e/ K* @' \* z
每个文件夹添加文件之后的截图如下:8 s* a8 w) P2 V. R# G6 r; C
( m7 \1 E( Y- k2 v4 Q
20210408095429876.png

7 H& [/ h2 m& G8 n) {: y
8 g! w2 l/ H% n: C* J( W1 ~0 L& X' d7 O4 Q! d& a
20210408095445707.png
+ ?3 Z$ y7 R& l, v3 t' _0 U
! M1 D8 C' u, v0 A7 u/ l
20210408095458359.png

) {1 E; N: U+ ]
8 m( V( x% p" z9 k7 |' k. [. D
20210408095512921.png

- j% j2 ~; v: ^& A4 c) U1 W+ G  N% M9 p+ n+ b! }  H8 j7 o& M, p  n
, a" k8 u8 @4 P6 v' D3 {+ P, V/ J
此时完成了文件的添加,点击 OK 退出
) g! i% w8 e" K) M. o' h% i) u
此时可以在软件左侧的文件树中看到刚刚添加的文件
  Z. Q3 _. @$ ^, _- S$ O# N, f/ r9 [8 v  Y
2021040809552888.png

3 m' U% O/ w* k% R& i  A) l0 A: ^* K9 G2 _
6 ?2 M( ?; s3 e+ s( m# S进行初始化的配置, y. L) ^& V4 e0 j; Q. K4 f
点击菜单栏中魔术棒的按钮' c( G9 Y/ i2 L6 D. L) m( s- C

% I' |& `: M0 U8 Y8 a
20210408095544713.png

1 W+ ?2 k  p! c, a' Z; u
; H% ]! y3 O, }7 `. q5 S$ y首先设置单片机的晶振为 8.0MHz( p, ^' {6 G1 D. w& O

& o( a4 S3 c; T9 m  N7 U0 Y: B
20210408095600386.png
/ M  L1 ]) k6 _* v8 }- h

0 \% `1 n' {: K% _% a0 N. b勾选生成 Hex 文件
; @. N$ h) `, _* N) W2 D8 n0 k  N& s
20210408095613226.png
/ r7 \8 K& A/ f

6 ^$ j4 j4 Q! S9 k4 H! |" _在 C/C++中输入处理器类型,USE_STDPERIPH_DRIVER,STM32F10X_MD
2 k1 x/ o) l% A: k% m" f1 j
" k6 \4 V7 F& b# n
20210408095628530.png
2 S3 N2 X! U3 m$ D4 Q0 p
2 o# C( }5 `) }# U. H" H
在 C/C++中输入包含文件的路径,然后点击 OK  o% \2 v5 P. \" h& i& k
' p7 }7 A- R( x  c: g
20210408095641883.png

) p- L$ [& |  f1 G* T
7 F( }# ~6 U- A+ V4 s在文件树中选择 main.c 文件,删除原有的内容,就可以按照自己的项目需求来填写代码了
! c8 F# j) q/ o1 E4 D4 V/ C; S; u: v0 Q
20210408095716404.png

6 q4 o) j& ^7 p4 q( g3 }
/ H/ c3 _& ?6 ^8 m% y+ b5 z- r6 @
收藏 1 评论1 发布时间:2021-11-28 22:54

举报

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