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

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

[复制链接]
STMCU小助手 发布时间:2022-5-3 13:07
新建STM32工程
+ J$ L; ~& ?( a" ^9 F步骤一:创建工程模板文件

; d( g/ R6 Q2 C+ y7 d1.新建一个文件夹 template
2 s( o/ _" V& ]9 E9 U# _3 N: j! k: X1 ]5 \: Q( u  W; b
2.在文件夹template里面新建六个文件  M  J" b6 G$ b" u
(1)CMSIS: 存放内核驱动程序和启动引导文件* C$ o6 i( Q, X' K8 w5 K1 P1 k
(2)FWLIB:存放库函数文件
# d' a; L5 F! q5 m% W8 [3 t(3)Project:存放工程文件! B7 I5 h/ S" X. }( D7 s
(4)User: 存放用户程序(主函数)8 j* ~  J; a( v4 B- E& X" k& G8 Q8 a  ~

. G9 s. T/ L" j4 b3 }1 J. d9 F- q3 E2 k+ @: l" `) r8 d7 g
效果图:
% Q5 R! y9 ]' M' z& j: f6 ^; ?9 c7 U  J0 |4 N' e

# ]1 o) ^+ p# n$ D. I- p: v, t! v8 `3 z3 K' r( s9 ]- U

" P6 G/ s+ b& F# K8 ~  x步骤二:导入stm32固件库
; U7 G3 P+ m7 ?6 p+ E4 ESTM32固件库的下载方式,在文章开头有链接。
3 K& H  ~+ f4 c' F. O5 x6 x9 Q# x# O
1. 打开STM32F10x固件库文件
+ U8 S) f/ `; b" z) x

; k4 w  ?# P+ S4 V9 Q' w( s 57K_[K%SV)KYUCKZC@__LVA.png , `2 T/ E% K( h3 b( P6 }; a

" z9 n) a8 t2 i) t: S0 O其中需要用到的两个文件:Libraries和Project。
, A/ z) T# \+ U: d, E
+ ~+ a' Y. l5 g2. 导入文件到 CMSIS 文件
) E4 K2 B0 t% C$ T* Z  b6 X6 q(1)导入内核驱动程序0 W  d; z5 I9 ~
8 C, b& c8 k9 D
GW6UFL@GM6$M_ENBITC[G.png
* r9 }- L: P9 c2 Y
; P2 n) J3 F8 w4 ~( c* J8 qSTM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport 中的两个文件复制到CMSIS文件中。
9 e6 P; Q1 T: K' D4 m
3 |2 g7 {9 o$ D& q; I7 u) k+ I/ z2 O0 Q
(2)导入启动引导文件
8 j7 d; o2 e2 ^$ d0 i: s* e
3 E. A  Z$ v  g& j: P6 t3 aSTM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 中的所有文件复制到CMSIS文件中。# A7 @8 p! B0 B$ ?3 Z
1 A0 b' h6 H5 i

% ~1 `9 t0 r3 K2 R: X* Q$ e, N0 I
启动引导文件名的英文缩写的意义:+ r1 ~% o5 E2 S
cl:互联型产品,stm32f105/107系列。; |: v% T5 W7 S) T; H" e1 x
vl:超值型产品,stm32f100系列。
% k+ z6 v' `1 B& vxl:超高密度(容量)产品,stm32f101/103系列。
' g& y- _9 i0 z8 ]6 |ld:低密度产品,Flash小于64KB。
6 j2 P% \, |3 _md:中等密度产品,Flash等于64KB或128KB。
+ O. K: k+ v) B4 u3 e/ y* P+ y. Xhd:高密度产品,Flash大于128KB。
! c, J3 |+ V4 m4 E/ a6 X5 i# P( H# Q1 ^( `3 L8 x
(3)最后CMSIS 文件效果图' D; n) p: Y1 ?+ U
% K9 S6 B) F0 b+ c9 k) p4 A! y5 r  b
V@G}WU@PCI0(}FYNZE98W01.png
+ q: J9 ?- X8 Q
/ V2 ?) S! j. c3. 导入文件到 FWLIB 文件
; h8 a7 a1 X8 {; g8 k" \STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver中的inc和src文件复制到FWLIB文件中。& R( o1 B6 Q' r

. n0 e+ B6 I$ ^
0 R; H8 z8 G+ g; _! m
2 x) y6 \6 l, J8 U. e& X1 Q最后 FWLIB 文件效果图
) a$ q4 C6 X+ i: ]& f  F0 J9 }/ i$ a  |% Q
[]YNIWEJ)F6V]EGB5}G2%H1.png ; [3 J9 w% N6 z' r. o
( ?" J" W+ N' w! K0 Z1 J: G+ z8 e1 x
4. 导入文件到 User 文件" |5 O8 C$ |6 V- d( L. }  Q
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的以下三个文件复制到 User 文件中。9 j5 i5 m) V* a9 V( P, P( c

+ k( q2 {  B* g P%HZ`X9}H`C9_4OPX_YC.png
5 _3 ]  l, g! ^5 H: z* A/ Z8 \8 A& |+ r7 `2 B" e6 X+ ^0 U
STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template中的以下四个文件复制到 User 文件中。
! j+ ]6 J0 `( r
6 g0 [3 A1 B4 H/ W  L$ X; ?- E 4VWRV)RP_TJEV5%~{EZ6B3B.png
" y: B4 a/ \0 Z5 D
+ N' K0 u" z( n7 E4 R6 c& E最后 User 文件效果图
: m, a$ j: T6 S* a! [: k. h
' ^9 B0 A8 I' H& y8 l O6`B@TG~ZGMX%)M)ET`OSH7.png
0 k7 s" n6 H* ^% |8 h
( T, A' K, {6 O( O0 I2 w( D: C步骤三:新建STM32工程7 T1 o! y' n7 Q; d) v. y
1. 新建工程

4 ]$ |. A# J7 U# x1 F/ K$ V  g" U6 W4 e
ZDDQF8F7$`@])6I64IT6ETU.png
" h5 Q, i  Z+ t8 c0 q; J6 K1 n" T& |* z8 P! A3 k$ R( t+ ^
将工程文件建在 Project 文件中- w9 [7 C) {6 [( I' @: X  E
& E2 b& x+ l2 [- h- q
PW6_A@3JE@TRU4@6PBI`I(M.png
3 W: k# ]& G2 G/ t2 U# }4 Y7 U/ M4 \
. u$ L: Q- @3 O' [2. 选择 STM32F103C8 芯片
9 t$ w% r6 @7 w) @% {! |
! {0 @4 R( S8 b/ p
( _2 Y+ @2 }: y  D0 c
# l+ k/ }: B3 w( `) R+ ^确定之后跳出一个窗口,直接关掉
+ @) y/ w3 ?) m; f" `" u3 o5 {& E! m
J77@$}JJ[1VZW`(HHKG7W9J.png
5 N/ E% ]& s1 l" A( a2 D1 O% g  Y
3. 添加工程文件到Keil_5工程中) m- B$ Z9 l9 N: x5 H7 J

" `9 W4 |* m0 s* O4 w/ t JRD_G2WP]KBWC1{1LL`N]XN.png , L6 g7 i0 v! n( T# p

! Q7 i( b) s- F+ p" Z4 ~新建CMSIS,FWLIB,User 三个文件,然后把刚刚复制在对应文件夹下的文件添加。7 A* o- A- F0 s( P
" w  k; @4 H2 X' n: j* Y* Q! _
B_CKAXCB8YM7PMU8]L$_5VS.png
* p/ q& p2 n: m% e  b3 _4 K. m) ^/ m% L4 e
因为选择的芯片是STM32F103C8——64k内存,所以选择 md 启动引导文件7 P7 j2 u9 L6 p" t% W2 z
+ a# m& S' u( j" ^. X
~@L$T(7BI`56IT67Z2({R]O.png 3 `8 {% E9 z$ J

5 l: m; N, s1 O& n$ ?0 W7 |" Y _ROYK$O)JS38MEJ([`PIM.png : p2 z# b# w7 m) }4 Y
) F! N  {  m' z: J. L/ K
最后添加成功
1 {: M7 x+ H6 d+ ]; N* z' c
- `# j5 K$ B0 s- D! z' l 5OLOYT6K%B%1XABSXA~11WO.png - V) k' F- |3 q1 O+ }
% k" A" t( s! E0 {
4. 添加路径和宏定义
7 v6 ^3 }+ W# F+ I9 |/ E% Y点击魔法棒,选择 C/C++2 R& C4 S1 |: P. z
添加宏定义:USE_STDPERIPH_DRIVER, STM32F10X_MD
; l& W; G% k$ ~/ t: j. e注意:这里选择的是 md 启动引导文件,所以宏定义是 STM32F10X_MD3 s' N2 h# Y, u3 }! \# A/ n8 B
* M1 ^- c, {: Z  g; J- r
N)P1{1%RID[~L~1`()A}KGK.png + _+ [4 \& V: m; W( I+ n

" m6 U  `6 O& @$ R$ H# i, r添加文件路径5 R. ^0 A, h2 J& f# r
- C3 m. _0 Z  |2 X$ K( u6 C2 J
GERUSG9YND)HXKMZ6DLDVAH.png
4 p% ^# F/ J4 b& x, s+ i# n( c% b9 i% c7 |( Y* w( \
5. 选择默认ARM编译器版本' U2 r3 V+ f* {# Y! N' i

! Z1 a0 m1 h+ V5 g % b! A$ j( @8 {& P( X) K

# F8 E6 r9 f0 }( R# d. d. Q+ V6. 编译运行成功
; L( b: H% p; H. ]( \# N6 R$ V
9 e5 _- t; D1 U5 R8 i GGU%U[EZ7B0RB33DDH{BX04.png . F; I9 `3 R# N! W7 @2 V
; W5 G5 A5 y& b9 u4 X! v
问题解答
7 l) Z2 J. ]# U
在评论区看到有人遇到以下问题:* F! F0 Q" V* O. C' x
  e: M7 P* |7 H+ }7 q9 B% \
问题1:
+ H3 r+ _# W3 H, ]% A* K出现750个以下错误
, C6 A; x4 }. Q3 R3 z…\CMSIS\core_cm3.h(173): error: #20: identifier “uint32_t” is undefined
( u1 k) R, L& T4 x. L# U/ a; d6 N3 J( q) R' ?/ Z1 ~/ o
0[OVBLQ)Q9`ZBP2PM}KW~}0.png
4 l  f4 }7 {5 T- ]$ X
7 N: E6 x' w+ ?  ^; n/ W( P4 i0 s8 N/ ^. a是因为 uint32_t、uint16_t、uint8_t 这三个没有定义。0 x1 U+ a' l, t8 p- g: r2 G
正常这三个是定义在 stdint.h 文件中。
1 `  Q+ H- L$ f. {4 U6 n1 o/ }: u* {: E. U9 @# A
]YAWKHCN{UX)J4IYQ5%AQSF.png
9 Z1 n- n" `; ?7 e* {# {$ R% T* ]0 i. A3 F/ D5 f0 ~$ t& m
没有定义这三个uint32_t、uint16_t、uint8_t,说明没有#include <stdint.h>+ a' H! A. R/ V" L/ a! _

. @3 w; @# O) R: W3 k$ [问题1解决方法:4 c: ?! p+ u: `; y, Q: S4 Q; Y
正常在 core_com3.h 文件中第 90 行应该有#include <stdint.h> 这行代码。
7 k( \% j$ D. }! H. C没有的,自行加上#include <stdint.h> ,便可以解决问题!: n$ }& F! G1 s! ]* `; ]
5 y: U# E6 m' T/ m. ?5 ~
- c) h) u5 g4 n- K! j: l+ T) a
# Y3 s! i/ q% D: E% J9 a
PA[Q82EE@H{AL%GPPV~1TGT.png 3 G' v7 T( W, o( A
T}77H`E0J1SFRKFAZ(LF6T0.png
赞 收藏 评论0 发布时间:2022-5-3 13:07

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版