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

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

[复制链接]
STMCU小助手 发布时间:2022-5-3 13:07
新建STM32工程  o" D5 W! T. S% r  y0 N1 z/ X. J
步骤一:创建工程模板文件
! [- _! T" n) h6 o
1.新建一个文件夹 template
3 k3 K9 ?/ k' f/ ]- D) [* L7 @; m4 o% y+ C
2.在文件夹template里面新建六个文件
# z6 Z9 w6 u/ T4 ^(1)CMSIS: 存放内核驱动程序和启动引导文件
  B6 v5 J* {! b! L: e(2)FWLIB:存放库函数文件
  b5 l& G( [! W" a8 k% _, g% o(3)Project:存放工程文件# g8 }/ Z8 U% d' n
(4)User: 存放用户程序(主函数)
; m0 v" w8 S. P9 N/ L; I0 i8 o/ U
8 Q, B: u" ^! R% S5 b! K& Q* A) b; n2 ?
效果图:
* [$ U/ e& {7 N3 G# T( u! `0 [+ T& P/ F0 Z) S+ Z& L) _

. r: b6 ]4 s8 K; U# D0 r! g: _8 O

! @$ X, E$ g2 Y步骤二:导入stm32固件库# N* Z, S. {; S! b4 L
STM32固件库的下载方式,在文章开头有链接。
0 ]# s' n- `: u& g) C9 Y9 ~, a7 O3 N+ v1 @
1. 打开STM32F10x固件库文件

; w: L) y2 J- ^2 `
* P5 n+ M! d  N- T' m0 a8 D* s; `! ?+ f 57K_[K%SV)KYUCKZC@__LVA.png , N/ \9 y( o, Q, L3 ]

8 C) g$ R( ~  b7 o其中需要用到的两个文件:Libraries和Project。) F: j& i- ~! p9 K  d% I* H& n
  Y  o6 g' C9 G  ]
2. 导入文件到 CMSIS 文件! _3 o( t" j" ^2 e% v$ X
(1)导入内核驱动程序
4 g) V) T7 n: K: W) J" R4 K1 V; a0 l" j
GW6UFL@GM6$M_ENBITC[G.png
( a! k! Z7 V4 L$ C1 v
7 h7 L- ~( J8 B0 fSTM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport 中的两个文件复制到CMSIS文件中。
3 I  ?) Q1 C+ T  f+ ]
6 j" e0 h( v+ `. L2 U5 S; ?6 ~. O5 C" R5 }7 n( T( c2 I) Q
(2)导入启动引导文件* ~& `0 j) b( g

  z9 A, e# @) d8 l* sSTM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 中的所有文件复制到CMSIS文件中。
/ b6 t- ]) T/ B/ d1 x/ L8 N/ j; v8 f1 B
  S( a. T9 n; w5 K
( n" O; s$ q" ?* e
启动引导文件名的英文缩写的意义:
$ A+ z" c1 N! w% G4 _6 q# |) ~cl:互联型产品,stm32f105/107系列。
9 I' _/ J7 Z/ y+ J, x4 Dvl:超值型产品,stm32f100系列。
9 p2 k! @# ]; T6 K  U6 Uxl:超高密度(容量)产品,stm32f101/103系列。) S* B: A0 ]$ p) F7 C8 a
ld:低密度产品,Flash小于64KB。
  H  s$ J; z3 G# |7 G' B) g$ F4 Xmd:中等密度产品,Flash等于64KB或128KB。6 a$ h, X5 M" G( ~4 Q
hd:高密度产品,Flash大于128KB。3 [9 s' g0 s. q0 B; {$ @2 j

0 z3 I5 B$ x& D(3)最后CMSIS 文件效果图; d& H4 q& L! X% S
, j# N- V* h! t* s' ^/ e* W( z
V@G}WU@PCI0(}FYNZE98W01.png 6 `, b8 ~6 q4 n% `) P

( P( @# d' D3 c9 }3. 导入文件到 FWLIB 文件, p( h- [6 f2 \8 N
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver中的inc和src文件复制到FWLIB文件中。0 L9 N' t' _' H4 \4 e  T
8 Q5 s1 J+ g1 l6 a# U- \
2 D2 v: @* N' G0 s+ a: p+ C

' b& i* N$ v; i最后 FWLIB 文件效果图! f6 _. i# f5 x! g$ j: |- h/ `
3 A  `) w$ d! v/ n. |( K0 U
[]YNIWEJ)F6V]EGB5}G2%H1.png
; f8 X/ |# g7 `1 b) {
0 ~; b# G8 S, H0 B4. 导入文件到 User 文件% a: f6 t5 O5 j( \
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的以下三个文件复制到 User 文件中。
# x4 z+ g9 c* T9 u6 {5 ?# S- k" \9 L+ `
P%HZ`X9}H`C9_4OPX_YC.png
: M! @: v9 u- d0 P
! g% k# C1 o% A. b. \; |STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template中的以下四个文件复制到 User 文件中。
7 M$ Z2 I: n2 B( }, {
7 e# c: c' g' p6 u 4VWRV)RP_TJEV5%~{EZ6B3B.png
. Z' ]4 g7 Z; l. O" y8 }/ E$ d% w. m0 B. a4 b
最后 User 文件效果图
8 W1 S2 o3 X- H
: Q  [" e# Y+ m- _ O6`B@TG~ZGMX%)M)ET`OSH7.png
0 k* F3 n- I/ y* y1 L  L+ l' b2 e! C' z- _2 `' N
步骤三:新建STM32工程
/ h! Y( c4 C4 t  V1. 新建工程

( v- |0 R) S" O4 \
) S7 J' F" u6 \ ZDDQF8F7$`@])6I64IT6ETU.png - y! v& x; _& D: J( J+ S' B

& e6 \) _" L. s% m将工程文件建在 Project 文件中, {+ c3 h4 B  U0 ^
1 Y) A, Y# V" V+ {* P4 i/ A% s9 t/ c
PW6_A@3JE@TRU4@6PBI`I(M.png + z2 A) t* {& a5 O7 _
0 M8 F% A$ ]; B& H, u, g( |
2. 选择 STM32F103C8 芯片
" m: ?$ q, V, Q2 F1 t3 E
3 p% w/ I0 E9 e2 q2 j% [# G  t 7 C4 |+ I& J. L; b( X$ b4 C

7 _3 Q2 ?$ Q$ q: \5 t- e! [确定之后跳出一个窗口,直接关掉
% Q( x0 G" L6 C2 W$ `8 L
" z" s; F8 D) W, _) M J77@$}JJ[1VZW`(HHKG7W9J.png * W0 [  O" V9 C2 a

7 a. V+ {. \; S. E, I/ T3. 添加工程文件到Keil_5工程中) b0 {# i$ O8 W2 `

. t3 A$ m2 l6 r- U% P JRD_G2WP]KBWC1{1LL`N]XN.png
( o. E0 V! ^' h9 k* }! p1 }" l1 t0 ?" H5 U
新建CMSIS,FWLIB,User 三个文件,然后把刚刚复制在对应文件夹下的文件添加。3 F% _9 j" O; l
/ Q$ C" l0 T2 w7 `& H
B_CKAXCB8YM7PMU8]L$_5VS.png , `/ W0 ]  K6 F# W# j

" Y6 j! z* [  r! G# I! r4 \6 A因为选择的芯片是STM32F103C8——64k内存,所以选择 md 启动引导文件
' Q0 A% f$ W+ I7 Z0 C* X" o
0 [& L* J! y3 c+ x( h  Y0 j7 d ~@L$T(7BI`56IT67Z2({R]O.png
5 V. B% {0 |5 G% b& h6 A0 n2 [) y/ r
_ROYK$O)JS38MEJ([`PIM.png $ W, i3 m% X: A* G9 |4 ~$ c0 P9 J

3 C5 z8 [  d  M: k) l最后添加成功( w2 Q# L1 A; \7 k2 i! u, P
6 u7 v8 l: C+ {& A8 }
5OLOYT6K%B%1XABSXA~11WO.png
$ |. i! y( r$ j' N0 D6 P: Z& }8 Z  t3 D( Z3 m/ f4 K
4. 添加路径和宏定义
( l6 X5 X* H/ B( l: Q" s点击魔法棒,选择 C/C++7 g: P- E2 b' n' q
添加宏定义:USE_STDPERIPH_DRIVER, STM32F10X_MD7 G4 |' H3 [& S) w5 l
注意:这里选择的是 md 启动引导文件,所以宏定义是 STM32F10X_MD
, N4 h3 U  O  j
  J1 a4 l7 L9 h7 S N)P1{1%RID[~L~1`()A}KGK.png 7 {) H2 x" m  E. |  m# s
. P  s% W( D( A5 ^9 k; R: ?8 F
添加文件路径
2 D, H& F( N1 W* l" o0 f
2 [2 b% U, S' Z" v) l GERUSG9YND)HXKMZ6DLDVAH.png
& L! \5 a+ l. S8 ?0 A3 ~0 D% }
: ^' k4 }. \4 M* A  R5. 选择默认ARM编译器版本  h1 |  Z9 B# A8 {! b0 M: h
+ W, Y. Y$ y4 P* I2 w& N8 F+ A

) P* S2 \. W8 {7 v+ S: _) P3 C5 H5 P' b+ l
6. 编译运行成功& n* X' [! e- ]3 U# ?- _
2 S, ]1 }/ @+ V3 W; b9 ~& h
GGU%U[EZ7B0RB33DDH{BX04.png 2 I7 b* V$ S  y0 X* ^* E! H0 O1 o9 E

  x& ?. X" K& c问题解答

" y* q' h" k+ I8 r8 l. G' }! Z在评论区看到有人遇到以下问题:' a! i6 u( F( C1 G' {# K  N

$ \5 l- b" ^& R. `问题1:/ J4 ?2 I. o- ^. T3 L8 Z5 v- C3 p
出现750个以下错误6 p& _; I: N: D/ b1 I0 b  C
…\CMSIS\core_cm3.h(173): error: #20: identifier “uint32_t” is undefined* i# ?) |- {. r, s2 L  h+ V
5 A0 Q, C* q. q" [
0[OVBLQ)Q9`ZBP2PM}KW~}0.png ( m* ?! j2 a- @1 K) n

, J( P, j6 Q6 _& n8 O! F: w& h是因为 uint32_t、uint16_t、uint8_t 这三个没有定义。  J* E: I: e1 N/ }3 @" g9 F
正常这三个是定义在 stdint.h 文件中。! ^: z% z% j' }# x, S+ O/ l9 t
# k6 X" G2 k8 @1 p+ ?( m
]YAWKHCN{UX)J4IYQ5%AQSF.png : V0 _) r5 Y/ ~' }3 o( N

& N5 x1 x8 z& U4 V9 T; S  |没有定义这三个uint32_t、uint16_t、uint8_t,说明没有#include <stdint.h>
$ C& W" K9 O; e. ]  d- e- E/ a' F: Z9 \6 Y' K7 n% {9 W. r/ e
问题1解决方法:4 }, W: Q' }" t5 f. M. y1 w
正常在 core_com3.h 文件中第 90 行应该有#include <stdint.h> 这行代码。
& o1 w* K5 g& h; k, m1 K" a没有的,自行加上#include <stdint.h> ,便可以解决问题!9 v4 j7 _. l1 Y1 O+ v
7 N! m; A* c# k4 ~0 W
. h" B3 I6 _5 O  a; S5 D. W

7 r2 m. E; l& ?+ T; V6 `0 U% m0 j PA[Q82EE@H{AL%GPPV~1TGT.png 3 A# i3 ~4 g. n7 ~$ |
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 手机版