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

基于STM32F103C8的keil环境配置和STlink烧录经验分享

[复制链接]
攻城狮Melo 发布时间:2023-3-21 21:25
下载st官方固件库8 ^8 m8 p  v% b( R4 z( T/ j
搜索并下载固件库9 @  {2 ?: y: P  c- Y

+ G6 L' N7 {! d  v3 g& D. U# r1 T
2b947363f5c741cd89ffb5caad3b3f16.png 4 E) p2 \% Q! q. m) Q

2 d9 v# B) G* W) U, \, _5 h* k使用固件库创建工程模版(以后不用每次配置了)
" {; x/ F/ a$ X4 Y9 j: `( |新建一个“工程模版”文件夹,里边新建三个文件夹8 W- U+ b6 ~: y# ]4 I' \1 w+ w

% |0 t* u! h% ?3 v工程模板2 m: N1 t7 _" l0 c
|----Project        自己编写的代码把下载的库中的\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下的
, J4 ^2 v! I) U9 i# i- p* m
- F+ b- I* u2 u. i  S3 r2 i' bmain.c' p7 [/ j: H/ T. Y+ v0 g
stm32f10x_conf.h8 M, ^$ @9 A$ @  N2 ^( g0 V. B" _
stm32f10x_it.c9 F, b  I" B( z' N
stm32f10x_it.h
. z# W- }4 h1 k& }1 R复制进来
# C! o0 `1 j) K2 w' M|----Libraries      下载的库文件中的同名文件拷贝过来的$ O9 B! ]/ d+ ~
|----Output        存放编译完成后的机器码之类的
# l# ~& Q( G. y: x" O5 o' Y( N& P$ W, m+ y0 h- j5 y
" ?; I$ F, H) ~4 @, W) p0 |
新建工程6 e" X+ D7 I2 m5 a8 \
然后打开keil5程序,Project -> New uvision Project...9 ]8 E" P( Q* V

: Z- C1 ?1 ~0 ^0 L. P目录选择为刚才新建的project目录,点保存会出现一个选择芯片的页面,选择所要用的芯片。
; V; z8 ?, a/ y+ ]9 f我所需芯片在STMicroelectronics -> STM32F1 Series -> STM32F103 -> STM32F103C 下# J) t$ g* O  B9 q  H
找到点击,然后OK。" K6 Y8 H5 g; ~# K

7 j1 p1 [% _1 w! B' L没有的话,先不新建工程,先在keil主面板上点击打开pack installer
% x2 w6 |) G! G+ J0 i7 J: S: K" N" m, o
b2b43ed37ce242e798787d00c84ebac4.png % `5 n* i' E3 }" C+ {" d, e

6 D6 d' a  u: A! z( M; O左侧 Device选项卡下搜索STM32F103,在出现的列表中选中STM32F103C8(根据自己的板子选)
( o$ U9 [& v" r& x7 Z& A2 X$ F( ~2 f- S+ A$ I3 n5 P9 h3 F
右侧packs选项卡中,列出了Device Specific中有两个Keil::....点击安装这两个包。装好后退出来重新新建工程就可以看到STMicroelectronics下自己的板子的包了。5 l) R) z' j" y
0 b7 B9 D. ~3 a/ c: a# O

6 X/ X7 Q3 j# T- i1 S$ T" [$ p工程配置
3 }/ C6 K4 K9 Q8 H* Q' x5 X添加工程组和组文件) h6 W% x) N4 Z# k/ I8 V
9 }) t" V- c3 o
cc0299c0f54b44338857628da4608405.png 5 m6 }6 C6 N8 e0 M) Y
; ~0 E: S# B2 L( T+ L0 j# g# k: {: ^
在Groups中创建分组:: W; c! _* e/ Y- {* F
User            自己开发的程序代码
! J& ]: C3 x% E& L5 I7 FDeiver         管理STM32外设的驱动
" Z4 X9 o+ |- y  }7 h" C4 pCM3            管理CMSIS内核驱动
3 X! [' `5 f3 `) a/ F) @Startup       管理MDK开发环境下与芯片相对应的启动代码' z- \3 A# b, s# _- H& f. v
5 \- J  \" @& q9 }; n* {/ f" O+ S
在Files中加入文件
) L( R, X7 H3 T+ U1 `6 l& P. o) aUSER:project中的main.c\stm32f10x_it.c7 W# q+ U, r# Q# I
Driver:Libraries\STM32F10x_StdPeriph_Driver\src下的所有.c文件( B9 c: h( c$ C. F  E$ g9 k
CM3ibraries\CMSIS\CM3\CoreSupport 下的core_cm3.c
0 U2 S# s9 x1 S; O2 vStartup:Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s
$ ]8 k* v$ j0 `, u: o* }(这个目录下的一堆.s文件对应的是不同容量的芯片,stm32f103c8对应的是md后缀的)
* A5 e; [' Z$ O& F3 H6 ?: y* L1 v8 e/ ?$ j

: V% W& F  N' ^* |4 V! ^target选项配置
* g0 I. ?( W- M3 G+ A; _  c8 S7 @* x2 F
478cf894d9d74d0e943dcd4d954855b4.png
! T. D8 W& t' c2 w
; Q  ?, g3 y/ s1.Target选项卡中ARM Compiler选择版本5的编译器, O; b/ D& S" }# C: b5 b+ o6 P7 j
( |* ^5 w% n. b4 u) L
2.Output选项卡将Create HEX File选上,output路径选择为刚才创建的output文件夹d0 W: G* i( e  Q* p

+ u0 `6 L- R5 y0 O4 Q3 J; [, N4 Z3.C/C++(4C6)选项卡,在preprocessor Symbols的define中写两个宏定义:
; F5 y, i; T0 T% u  @

# m  N* N% @: x3 ~: N) p: X, l% TUSE_STDPERIPH_DRIVER,STM32F10X_MD(中间是逗号),第一个宏定义是说使用固件库进行开发,第二个说的是芯片容量,分为LD,MD,HD,对于stm32f103c8来说是MD。" h9 Q; ^4 u4 J+ g/ R
" R; F; ~! M  E( C& d
然后在include Path处,点击后面的三个点,把Libraries文件夹中的路径配上,分别为
6 Z" ?+ ?) c2 u3 h6 t+ O8 X
0 O7 u" ~6 e9 ~% H" d  ELibraries\CMSIS\CM3\CoreSupport
/ \& C+ @# S+ P) ]% ^  b
6 g2 ?) Y9 E9 d$ B7 NLibraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
( d* ?% _. l% V6 q. E
  o* s  q8 d& [9 }; x
Libraries\STM32F10x_StdPeriph_Driver\inc  S2 W  \, O0 |, F( q5 E
1 O$ e( t% Z( D* Z7 U- v
Libraries\STM32F10x_StdPeriph_Driver\src9 M) x5 d7 c6 ?
5 ?1 ^/ n6 f  z
Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
; v& r: G7 T  J! ?7 J* z) |7 e0 y* i0 h
05596f1ec42b489eb82573a903b465ce.png
7 f6 Z  V* E& R/ v
7 c0 K3 \/ Y3 t2 P4 q. {" N5 Z
2 t, g0 E8 L: d% ^* ~2 T8 P
4. debug选项卡右上角的debugger选择为ST-Link Debugger
) j& x! _  p* R# S# i2 t# t0 Z  K
+ x: H, D* |# ], c
接线正确的话,插上stlink后点settings会在SW Device中出现stlink设备
( E# C! o2 U1 F, j/ a5 H0 m# I! V1 e7 K
20210108212908398.png / M( c) l6 J" _. O& [& F0 X
" k- E) D, K1 v3 _$ T% `
20210108213152680.png 5 W# k- R/ P: h# o( Y7 ^1 B

: {1 z6 h, ^; z, t8 b2 H测试1 y8 Z2 m; N+ c# r% i2 ~
打开main.c文件只留空循环
% J3 w: e! M: g) M" m: S' q8 t0 e. o; a! k! i* m/ d) B( `3 [
d2da0988a3324454954b267323127602.png . T, ~7 c5 u" w  K% E
0 G! l$ r1 W6 g' {8 v6 j+ A' W/ V
运行程序
5 G% n) g4 W; D2 R# V) S& `" I% v* l5 P( w
9d48307d9e2a41d2bcdb5b1b63bebd93.png
# e2 g5 l% `. t" f6 X+ a3 y+ @9 J0 A
% |3 d" O6 V! C# Q
0error且生成了target就是正确的,否则排除error
% a: _: P% W$ F2 ^% w7 \+ y( w
- p- K+ @; F/ e0 B
1 |: d: Q4 P+ w% m8 y
使用STlink烧录程序
+ _% [4 _# m+ e0 U3 Istm32boot0置1

0 b3 o5 W' w, x& H1 pboot0是1的时候可以调试,0的时候程序运行
/ p$ u1 G/ H& s0 Q* S' W* P  o3 z; @, r2 ~6 Y9 \5 c1 n# Q" K7 S. q
对应引脚连接7 |4 _5 t. q& E7 u$ X# n
stm32-STlink" i1 L& ?+ U3 p6 u* S  w

" `- r( v5 n, ^" m3.3v-3.3v
! K1 A# J: R! F
" X) S6 U% }1 t6 g2 L; [+ s
swio-gnd
& B, a8 l3 F, g1 K- L1 I
3 p: s2 b; p/ X  X5 k* X
swclk-swdio" t1 `& P2 h9 e. ~  ~$ s
' }2 c( Z$ \- O+ q& o
gnd-swclk
8 a* ^3 M) S. k0 a4 `————————————————
, o* y5 Y8 \+ x. j版权声明:qqq2018
! v$ t$ G$ ~+ \5 [. F4 U如有侵权请联系删除1 w, _/ R" X2 E- H/ r3 d  L

+ r" ^) V+ Z( {0 z  G- h- A& g. ~# p  ?1 |3 m' y

" x  j9 P' b1 w5 _/ M
收藏 评论0 发布时间:2023-3-21 21:25

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版