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

【经验分享】STM32F103标准库开发:Keil5新建STM32工程

[复制链接]
STMCU小助手 发布时间:2022-5-3 13:07
新建STM32工程$ l. E% g2 @# X+ Z! D, n
步骤一:创建工程模板文件
  c! w$ p1 O) w: B  u8 z
1.新建一个文件夹 template
/ g. \( K- Y2 U$ C3 \  c. E& \; K
# |0 S$ f( @, }2 y2.在文件夹template里面新建六个文件& s( m7 E4 T# B' f7 H
(1)CMSIS: 存放内核驱动程序和启动引导文件
) w4 R9 B1 l4 _2 G0 [/ ?" y; N) Q(2)FWLIB:存放库函数文件
* p5 z( D0 H# \2 m9 f(3)Project:存放工程文件' y2 G3 Z" i2 K# a' b& p
(4)User: 存放用户程序(主函数)
# i5 [1 ]# C" [& e. f* b
+ O; G$ V, R+ [) Y* a) i. v$ o3 `& J
效果图:" I1 a: {  y, ~$ j' }
! P0 u. s4 v1 u' k5 r, b

1 M" [2 A# w; v7 d7 Q( e
- p: M: v, `! O( c! c& s; H! y& Y
% ^# B9 T8 ~  h步骤二:导入stm32固件库
; Y' X) z' {4 W: VSTM32固件库的下载方式,在文章开头有链接。. r! a9 ]; h2 n/ j5 Z. V  \
& `- v% u4 A4 G0 t3 C& z/ `$ n
1. 打开STM32F10x固件库文件

/ o/ P5 L/ f" d+ u1 z3 y, ~
' e% c5 }- W3 J" @ 57K_[K%SV)KYUCKZC@__LVA.png
3 r/ ?2 I. w( B
2 @7 x9 W8 f. W# C其中需要用到的两个文件:Libraries和Project。
) R  ^8 m5 ~& h- B, O6 S8 V, F
2. 导入文件到 CMSIS 文件( _& e) D  X1 I5 T
(1)导入内核驱动程序
) {9 w* k9 `, q2 t) l& r* b6 r! R6 q8 e2 Q) z
GW6UFL@GM6$M_ENBITC[G.png $ B. u# ]: }; C  ?1 }5 [

- A# U, D  b) o+ w; h% XSTM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport 中的两个文件复制到CMSIS文件中。
6 P) ~" k. ^- C/ o$ ]& A9 [+ [2 i) e; F, F

) S, i+ F- w5 y- o6 t' C' L' f(2)导入启动引导文件) c) e$ E' _( j/ f0 J

1 u2 E6 j. U4 Q( w  b, ]$ m- |  ^STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 中的所有文件复制到CMSIS文件中。2 O! H! d$ o9 E

" o1 j! b5 K1 ]1 r * ^1 W. G6 V, i* G& x8 U& v
0 ^) H" e# q( ]+ o/ m; K
启动引导文件名的英文缩写的意义:
' x& ]0 F2 M5 V% K/ Acl:互联型产品,stm32f105/107系列。
5 B4 a3 r7 Y$ C; q2 mvl:超值型产品,stm32f100系列。
/ R$ _7 D4 o" Vxl:超高密度(容量)产品,stm32f101/103系列。
! p( y( O" D8 yld:低密度产品,Flash小于64KB。
6 |5 V' g# [8 d, qmd:中等密度产品,Flash等于64KB或128KB。- L! X0 }1 n: V
hd:高密度产品,Flash大于128KB。& S5 Y/ b4 a& C! F* |% T2 |; h

8 V+ ~* ~; s4 h( J$ O$ Q9 p(3)最后CMSIS 文件效果图
. B% l4 i- h$ q# k: E  u$ e
: |+ R1 Q7 H/ `1 y& U V@G}WU@PCI0(}FYNZE98W01.png
, M( ^% m+ a8 I. Z" ]* X& G! P6 s4 q, @9 G8 z6 ^+ V5 W% K7 S
3. 导入文件到 FWLIB 文件
* j0 Q- \6 }2 J$ X, |& {STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver中的inc和src文件复制到FWLIB文件中。
2 B8 ~1 ~0 g& k" p9 N% e& I  w' h/ p6 g5 Q
2 W8 f6 P; e% x6 k0 Y4 v; d5 W" N
, U. h2 E& Y" _0 T
最后 FWLIB 文件效果图, g) e; i5 _  Q

! ]& |# j& s$ W$ ^ []YNIWEJ)F6V]EGB5}G2%H1.png ! h! p: M! O: S
: S/ D' O3 ^9 F/ J
4. 导入文件到 User 文件4 l$ X: d9 K3 S+ y3 K3 x: o, S
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的以下三个文件复制到 User 文件中。
" @7 }/ I7 P3 N' ?9 ]2 J1 X# i+ u) p! O# @* S
P%HZ`X9}H`C9_4OPX_YC.png
) E9 n9 C/ T; K  H% B" t. B; C) _  y( g- {" {
STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template中的以下四个文件复制到 User 文件中。9 K6 F: Q& \% s4 ~9 ^2 Y* |
- O2 H4 |/ G6 |
4VWRV)RP_TJEV5%~{EZ6B3B.png 6 S8 I- ~% E' x: S

9 l1 [" u8 J+ G  N1 {最后 User 文件效果图
% H8 l( C9 b0 [2 i" v% z) V# H( j6 A: [* q7 _  z$ [
O6`B@TG~ZGMX%)M)ET`OSH7.png 0 i" w+ |8 s! ^$ v& p+ x
3 ?. S& |/ Z, S, D9 f
步骤三:新建STM32工程
1 f1 b6 g) R1 s( c4 x& z8 S" W1. 新建工程

# j! F# R# V8 y2 {# K' v& O! v& I8 f7 _6 a! G/ _$ D
ZDDQF8F7$`@])6I64IT6ETU.png 5 n. @1 h/ v# W+ ~- c: o! F

% H: ]/ m8 o( J8 ?( j) I6 r* _2 T将工程文件建在 Project 文件中! {% k0 f) G7 o

3 M. D" _  M4 O7 Q. V PW6_A@3JE@TRU4@6PBI`I(M.png ) a; {' P1 W9 V  t/ Q6 X/ d
6 [6 W4 W2 t! h5 R; Y+ }
2. 选择 STM32F103C8 芯片
0 P  G' \8 @* w- Q/ I  `% ^1 h( |" @6 p* i# L
8 q( W6 ?$ p1 ]1 j: @8 T2 x" a

- i; S1 d0 \, s8 s4 W# T" f$ S' s' S确定之后跳出一个窗口,直接关掉# W) F5 C0 }4 N0 x$ [8 g

5 B  c& q0 n4 I1 Q# H7 g8 ^ J77@$}JJ[1VZW`(HHKG7W9J.png * D" C- P; {" S# y  |2 t

- T  d2 ^8 `8 ^4 J3. 添加工程文件到Keil_5工程中
# R, I+ J8 s2 p6 j3 H
/ T; ~& ]2 i/ L- w JRD_G2WP]KBWC1{1LL`N]XN.png
: ~2 p/ N* v/ K- P+ R3 x
5 t& X# o2 _& A% Y4 x! U7 R. |9 [. @新建CMSIS,FWLIB,User 三个文件,然后把刚刚复制在对应文件夹下的文件添加。1 n3 r1 x% i7 V9 Z5 W3 S

* R  N! k' a( R1 M" S B_CKAXCB8YM7PMU8]L$_5VS.png 5 c9 o! t( k2 Y6 {: Q' w# _
9 r; v# b$ z; ~* |! F
因为选择的芯片是STM32F103C8——64k内存,所以选择 md 启动引导文件
; K/ N& L* C. ]# l; ?
5 c9 S8 ^+ I9 N" t- r2 C( W ~@L$T(7BI`56IT67Z2({R]O.png
( Y* J- B8 Y; Y6 [! X% v
- [( x) T# F4 }( {  P$ P _ROYK$O)JS38MEJ([`PIM.png
" i3 m8 N0 f% Q+ S7 T9 C9 b/ }+ f( K. H
9 {" {! P2 H1 I% I3 P! q  ?最后添加成功$ _9 P' x1 _) e% f( C7 [  \

4 M( f" n1 S: M/ Y$ d' M! U; V 5OLOYT6K%B%1XABSXA~11WO.png ( L7 l$ R8 V1 z/ ~3 q
6 m8 K8 t: e0 G' J; V
4. 添加路径和宏定义
5 f/ m* P6 b- c) C' r点击魔法棒,选择 C/C++* c5 F: h1 `- m2 z6 x2 ^
添加宏定义:USE_STDPERIPH_DRIVER, STM32F10X_MD- b: ^7 h& V  x0 u! X+ w" A; J
注意:这里选择的是 md 启动引导文件,所以宏定义是 STM32F10X_MD
3 T9 u! a% F( i- V' a4 k0 r; M  m" }: W1 y
N)P1{1%RID[~L~1`()A}KGK.png 9 k5 C8 W3 M# M+ Z2 w

8 C! t' T/ @* Z; n* F添加文件路径
5 x: R+ _' I& @( {  L
7 k  O  s" A  } GERUSG9YND)HXKMZ6DLDVAH.png 0 T* y$ l: F$ W4 f3 T$ I" X

3 R3 \  F) |" c/ N5 c  Y% I1 |5 t5. 选择默认ARM编译器版本
' v2 g: r8 _) J. `% }/ T
) o/ h6 ^. w  X + O: r/ u) s: i. s$ d/ v

" P$ e* g. q+ x9 a! P6. 编译运行成功
6 Z9 j+ A$ e# P/ L6 g+ R* x- L$ h+ }( z; V% L8 z& }2 c+ G
GGU%U[EZ7B0RB33DDH{BX04.png % o$ x& Q$ Q+ l* M& W/ l' L+ S  G

& I, b0 W& P2 w问题解答
. a2 L- T$ ?) `. g0 C! i
在评论区看到有人遇到以下问题:& N6 }6 _0 N* e; O, \; \+ [$ k$ F

  p0 ?# O  x% q! _3 k& t  t问题1:" o- @/ R) g) v" k0 L9 b, |! ^
出现750个以下错误! c3 y9 j% P" u4 w0 z! y9 u
…\CMSIS\core_cm3.h(173): error: #20: identifier “uint32_t” is undefined
( V! ?7 W' E- N/ z4 O
. ]; j+ {3 d; I% S! _' J 0[OVBLQ)Q9`ZBP2PM}KW~}0.png
+ ^1 t5 ]# m1 p8 `6 B& |) c: L3 e8 L( L! D1 {. [
是因为 uint32_t、uint16_t、uint8_t 这三个没有定义。
6 J8 s# R6 e3 u正常这三个是定义在 stdint.h 文件中。9 I2 o4 v/ k' ^, T) B- p+ p4 `

3 ~3 _" \$ i! H4 l6 ~ ]YAWKHCN{UX)J4IYQ5%AQSF.png   w7 c1 a  w7 |. \" K% T
: C! |% }- d" T/ L. i
没有定义这三个uint32_t、uint16_t、uint8_t,说明没有#include <stdint.h>
% x" b8 f5 z# A: B* I9 m+ Q
4 c+ o1 X% |/ [$ W6 w( F3 L问题1解决方法:  K+ T* \. S" O" x* ?- L8 E
正常在 core_com3.h 文件中第 90 行应该有#include <stdint.h> 这行代码。
3 y1 I. I) z: O9 B9 F: A  N; s. s# [没有的,自行加上#include <stdint.h> ,便可以解决问题!- T  a  F# |6 S  \  K1 r

6 x0 m. X7 s7 z' q2 A
' D0 s- H4 Z$ K' T% f) q, _  n- |; g9 b8 M% j$ @
PA[Q82EE@H{AL%GPPV~1TGT.png
" |; e, _7 E) L& p- D
T}77H`E0J1SFRKFAZ(LF6T0.png
收藏 评论0 发布时间:2022-5-3 13:07

举报

0个回答

所属标签

相似分享

官网相关资源

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