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

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

[复制链接]
STMCU小助手 发布时间:2022-5-3 13:07
新建STM32工程+ U9 j0 e; Q9 i2 F5 r
步骤一:创建工程模板文件
3 b4 ~. z- V. O. O$ M) L! I5 K
1.新建一个文件夹 template  N8 T' Y  U) S' G. B6 {
+ ~9 O# X; s% |- a' Z
2.在文件夹template里面新建六个文件" }6 p# O) B( \, E  F
(1)CMSIS: 存放内核驱动程序和启动引导文件9 Q1 r$ a4 I) i: W7 T  M9 ?
(2)FWLIB:存放库函数文件" q+ Q. }. ^# w0 v: b
(3)Project:存放工程文件
7 X8 u* }  L& j9 w8 X5 G5 A(4)User: 存放用户程序(主函数). I% C0 I& p& G  f4 {
+ D6 H/ D1 B; i
4 ]: d7 D# T1 Z) j3 T1 n
效果图:& t5 A9 a4 ]. j  F4 c: `

. n7 P: Z5 p' m3 J' k$ b) Q . g$ l' f, B% a/ q) M: f

0 M' z* K% B! \$ ^) t
# {  b; b, K4 z' p1 S7 q/ g步骤二:导入stm32固件库! D; ?& q2 g# O5 {! s
STM32固件库的下载方式,在文章开头有链接。
" F& [( }, ?  l4 W7 X& x# l, }( K# I- q: ?
1. 打开STM32F10x固件库文件
4 u# P+ p' j. {2 E1 C7 m

9 E0 y1 {# c, e- Y. V# [ 57K_[K%SV)KYUCKZC@__LVA.png 1 m! d; D3 @* I6 n0 F9 S
/ a' q# h3 B$ W" h# s1 z0 u0 v
其中需要用到的两个文件:Libraries和Project。0 t+ H% W' b( h7 D
  P. @! O/ {% L0 w4 i
2. 导入文件到 CMSIS 文件$ n# ^3 f* h6 k- a) ~' S9 o
(1)导入内核驱动程序: a6 N6 ]! x, r; P0 p& W0 N

! ^/ n8 K0 I& u+ }0 s GW6UFL@GM6$M_ENBITC[G.png
" Y5 [0 E9 N) S2 B( \$ i( I1 [, i* D1 n7 ]4 a
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport 中的两个文件复制到CMSIS文件中。
+ X! ^, c0 b+ w7 T8 s  `4 d; k0 B- l5 O- V; Z) ^1 m

* e$ Q5 D  q) D6 i6 I( X2 \(2)导入启动引导文件
# ~" A3 _# z, H' P; s
) a4 w+ l" M! @9 m* wSTM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 中的所有文件复制到CMSIS文件中。3 Z" S: y7 \' m) p
) T+ B0 q- M% A* F# w/ Y! h. |
6 k' q' s) W% B

3 c: b% X. R2 m" a, E启动引导文件名的英文缩写的意义:* u- V- [% ?0 k) E- Q9 t3 E( X
cl:互联型产品,stm32f105/107系列。
# W7 f& C) q1 O2 xvl:超值型产品,stm32f100系列。3 j  N/ R1 ~" k4 W+ q1 X
xl:超高密度(容量)产品,stm32f101/103系列。
% b3 W9 O5 M6 O) W' gld:低密度产品,Flash小于64KB。5 Y. r4 s. U- W6 y+ g- z( f
md:中等密度产品,Flash等于64KB或128KB。2 q4 ^& z! u4 ~; y
hd:高密度产品,Flash大于128KB。
4 h4 I9 s3 y8 P7 M) R) S
: P( q% N" K$ Z" I(3)最后CMSIS 文件效果图
1 d: C) b3 z# u- G6 }/ \  D! i& t: V
V@G}WU@PCI0(}FYNZE98W01.png
/ F0 z& V3 X/ C- {! \: d5 m
! f  Y# {# H3 {& k( I) ^3. 导入文件到 FWLIB 文件8 d3 v- h) D( Y& j  h. ?
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver中的inc和src文件复制到FWLIB文件中。+ N! y3 R3 R* s! p* ?) K: E7 N! [

7 n/ \3 F" B7 f5 V0 r8 A$ n6 Q2 }0 ]- z

, d$ s6 p( ?2 n/ [最后 FWLIB 文件效果图9 P: B) g5 Q; t! q' F" Z4 @9 N0 h

1 w0 j! n/ z0 C7 U) M+ ] []YNIWEJ)F6V]EGB5}G2%H1.png
! w7 v6 \# l+ `% O& H8 t! W7 e
% C4 H8 j6 t- t/ e4. 导入文件到 User 文件, O" Y* \3 p' e/ `$ R  m5 p
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的以下三个文件复制到 User 文件中。& M3 ~" S" ?5 a
: ?& O+ M7 A% q' o" N
P%HZ`X9}H`C9_4OPX_YC.png & ]3 _% R7 g1 W( r
+ R* z8 G8 `# R
STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template中的以下四个文件复制到 User 文件中。- a: ?: ~! G8 o$ r" b6 X

. u+ b5 P7 K4 X4 o& p 4VWRV)RP_TJEV5%~{EZ6B3B.png
& p6 e- }8 y, }0 v/ v) N: N/ X: A* H4 N* e, _1 N
最后 User 文件效果图6 F3 u8 ^/ |3 [. B

) w  m& \8 Y) P, e4 q O6`B@TG~ZGMX%)M)ET`OSH7.png 9 r0 n. A$ _  {$ U& Z% V

  H# O+ ~% I, A, J4 Q2 T* v步骤三:新建STM32工程
* c6 T% p* W; D% r6 `  m1. 新建工程

3 u" s# a4 }2 b& `. F8 W- I' s# n( g( t  n+ Y7 l/ ^2 [+ _( s* X
ZDDQF8F7$`@])6I64IT6ETU.png
7 [; q* @9 U$ S! f* O, g' g  o6 l% U( o  [( W; u9 V! K. ^
将工程文件建在 Project 文件中  {) z$ G" A* T4 ~5 w3 C- s* l1 a9 R3 l
3 I  v: e  A' q+ c$ [
PW6_A@3JE@TRU4@6PBI`I(M.png
- M) c$ e- ?: c, s5 ^1 X; C$ l$ q6 f; J1 `) A, G1 t& ]' a6 s
2. 选择 STM32F103C8 芯片- K" r6 n* N; ^. K

1 v9 Z/ u5 p- P! C; k . Q& ?0 F0 f/ e& l
) p% w" @, D- x, S/ p6 n
确定之后跳出一个窗口,直接关掉' ]# }% T$ @! J

* T0 j3 `6 V! v  l J77@$}JJ[1VZW`(HHKG7W9J.png
9 k/ F  E1 b+ }" }$ R( Z
7 ]7 M4 O7 a- V8 g* f8 C0 u3. 添加工程文件到Keil_5工程中
9 K; r+ C7 a) i) x# f4 R2 d9 E2 a& a, J6 B- |- z& o
JRD_G2WP]KBWC1{1LL`N]XN.png 5 K: C( p1 |, z
/ _4 `" y1 e& T4 D8 b
新建CMSIS,FWLIB,User 三个文件,然后把刚刚复制在对应文件夹下的文件添加。
  [. x  g0 [# f( B* j1 M* ]4 `& I7 v# N) ]" O2 M
B_CKAXCB8YM7PMU8]L$_5VS.png
5 k( K9 C+ p) \( r. D3 o7 J  X( f) |, n! D7 E
因为选择的芯片是STM32F103C8——64k内存,所以选择 md 启动引导文件
' Z" u% e) t) c
/ D( k4 r5 y% ?: h: C+ f. f ~@L$T(7BI`56IT67Z2({R]O.png 2 s' s: _' k5 U" v2 l4 I1 w) v
4 M  l5 L: W$ U& `/ f) Z& t( {
_ROYK$O)JS38MEJ([`PIM.png
% \- \# D$ N. z$ M* R  C2 J3 v! ?; U& U) Z5 x0 C& s, p
最后添加成功# @( `/ t  v, @# F

% u5 C3 ]; F  b* h$ x* b: W5 d# A 5OLOYT6K%B%1XABSXA~11WO.png % U% ~) m  u. r$ S# i1 X, N" X& b

0 Y) k/ ?# ?! ?+ E4. 添加路径和宏定义
. }) G7 l) c) l( x点击魔法棒,选择 C/C++
2 }# t, u. i1 v) j* f添加宏定义:USE_STDPERIPH_DRIVER, STM32F10X_MD" h5 h; [5 @, w! {8 b
注意:这里选择的是 md 启动引导文件,所以宏定义是 STM32F10X_MD
2 S% W( u6 s' f" k8 ^3 w1 n+ I
; g/ U: Q5 \  d7 K' t- Y N)P1{1%RID[~L~1`()A}KGK.png 5 z" |" J8 x1 L6 W& W
1 L! w! g# n( W, c- n1 J: Z
添加文件路径
  L0 @  J0 o/ R" e: e% f% O' `
. P+ Y1 ~( q; o0 [( i( { GERUSG9YND)HXKMZ6DLDVAH.png 8 s5 k3 s/ D& r$ m

2 o. g4 h2 ~2 Y: k, }3 l5 i9 O5. 选择默认ARM编译器版本
& o# @" E9 }) j: \2 j
  i6 n  d2 B6 l' [" f7 _2 t & `8 p8 q9 M4 Y% ~# u1 h
3 }/ K& \7 \' c+ b. F  j7 v
6. 编译运行成功6 p2 a0 Y5 O6 N9 x, ]

/ a6 i: [+ `- ?. B7 R GGU%U[EZ7B0RB33DDH{BX04.png 2 i; l/ V; j" a
7 `5 b; [, M$ x6 y: B
问题解答

9 m  v, Q( b; s9 J7 e- ~5 I7 G在评论区看到有人遇到以下问题:
' z" ]2 v2 \9 j/ U- p# U; y0 z5 w# R
问题1:( a' j9 B* A% J& w  u7 V- t; ^
出现750个以下错误
6 e" G. L7 ~" e4 L…\CMSIS\core_cm3.h(173): error: #20: identifier “uint32_t” is undefined# d3 r/ u; R& U

1 O* `: p. W0 m/ ^/ ~* u 0[OVBLQ)Q9`ZBP2PM}KW~}0.png
: e1 @3 G2 T  Z- i5 }* K
: J5 T8 i+ ^! R& f; B& B3 i是因为 uint32_t、uint16_t、uint8_t 这三个没有定义。
% j/ z% W9 ]  m; [正常这三个是定义在 stdint.h 文件中。
" t: F; P8 T2 m( P) @6 E  _% \. m, X& l
]YAWKHCN{UX)J4IYQ5%AQSF.png ; y, d6 g. {- D
2 j1 M: T0 X! k$ X& h5 M# I
没有定义这三个uint32_t、uint16_t、uint8_t,说明没有#include <stdint.h>
  i# ]- Q) n- r
! z! f  v+ j1 a问题1解决方法:
! P- W3 N, i( z+ ]& P/ K正常在 core_com3.h 文件中第 90 行应该有#include <stdint.h> 这行代码。
( Q- ?2 ?9 o3 D( o8 J; e' y没有的,自行加上#include <stdint.h> ,便可以解决问题!% P: R! J; s- e  E
+ @7 Z: V( p5 ?" B: L5 B7 z5 n
. J- H, f# R* E+ R2 ~

; g( |4 j& \$ C; ^  ]) E PA[Q82EE@H{AL%GPPV~1TGT.png 5 |. y9 b, Y! @  X
T}77H`E0J1SFRKFAZ(LF6T0.png
赞 收藏 评论0 发布时间:2022-5-3 13:07

举报

0个回答

所属标签

相似技术帖

官网相关资源

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