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

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

[复制链接]
攻城狮Melo 发布时间:2023-3-21 21:25
下载st官方固件库" B  v$ ?( S: _/ l- k$ {
搜索并下载固件库# I3 e4 ?9 g% |  }* f* @
9 N( ~# ]" |6 ?0 w. @7 a( ]% L
2b947363f5c741cd89ffb5caad3b3f16.png & h' l/ }& m6 }1 N& v/ f2 _# l& B: e
% x4 X8 Q1 V; x0 A1 y7 D1 i
使用固件库创建工程模版(以后不用每次配置了)% V% c( m+ j. k! ?
新建一个“工程模版”文件夹,里边新建三个文件夹
, u8 E/ G4 m2 M  |- s* j# \6 @& k, B
工程模板" b, H. q% a6 `1 C5 H; Q
|----Project        自己编写的代码把下载的库中的\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下的
; H: y9 v3 j4 C8 r% Q1 s8 o8 q6 K6 |8 o  ~
main.c
  t6 G" F. o# q! xstm32f10x_conf.h: c. l; ~, \8 D2 D; u
stm32f10x_it.c0 |- Y  I6 x: h; a
stm32f10x_it.h/ \) \5 z! k$ x: M; b9 Q8 R
复制进来9 f# F8 d/ `8 d, E* u9 |% I7 _( ~
|----Libraries      下载的库文件中的同名文件拷贝过来的' q* ^4 r; f4 C5 u7 H
|----Output        存放编译完成后的机器码之类的
: q- U+ o) I# P* r! N9 [; F$ Y
/ T+ G9 g# n, q  G; w
, w' l8 Y$ s( B7 ~! Q5 h
新建工程
& t9 E6 a& w: ]) g7 D+ f& }然后打开keil5程序,Project -> New uvision Project...
0 T% y& f: n% P7 w, p: x" S) n3 N8 }$ V2 {' Y: L+ J6 V6 w) D  F
目录选择为刚才新建的project目录,点保存会出现一个选择芯片的页面,选择所要用的芯片。; J. O' g# J7 R) e
我所需芯片在STMicroelectronics -> STM32F1 Series -> STM32F103 -> STM32F103C 下: R9 Z8 {7 e1 t* k
找到点击,然后OK。3 i) c- v* ?8 n6 i" g6 a! ^

+ ^5 q8 j6 \1 u( v5 Q没有的话,先不新建工程,先在keil主面板上点击打开pack installer# A0 C2 R8 f# |7 j" Q: F; c
- g5 G1 y) g6 i  \1 N# ]
b2b43ed37ce242e798787d00c84ebac4.png 7 o1 q4 c* b# S0 A6 N8 y& ~
! M5 R6 _: y1 |+ V6 {3 g0 _
左侧 Device选项卡下搜索STM32F103,在出现的列表中选中STM32F103C8(根据自己的板子选)7 ~* \" G' P. Y3 i( ~& ]+ b  e/ O
1 O9 F8 |! L+ @
右侧packs选项卡中,列出了Device Specific中有两个Keil::....点击安装这两个包。装好后退出来重新新建工程就可以看到STMicroelectronics下自己的板子的包了。
1 H! _& f" K' K. \  n" v& A5 B) X/ u" [+ `9 C6 K5 `/ E( u

6 \1 z" c, P' i8 E9 t工程配置
8 q, m0 R5 ?* P# d& ~' T3 c: C添加工程组和组文件
5 u! l+ |% d5 A. |& z8 J2 H, N8 s% U. Q
cc0299c0f54b44338857628da4608405.png 4 M0 g9 H7 D% N: r
  J( v' l6 `) H6 y
在Groups中创建分组:
* Z) |. F% r. yUser            自己开发的程序代码& c3 j- a' g3 m: y5 g& j! A
Deiver         管理STM32外设的驱动
2 ?% {/ Z8 l) ^8 i2 o9 P4 J; ACM3            管理CMSIS内核驱动$ B4 v6 _6 r3 \2 Q' F8 V  I" R8 O
Startup       管理MDK开发环境下与芯片相对应的启动代码5 B5 H  X$ `# E9 o3 Q& B( L

4 N) R. m7 A1 j( C7 J7 w在Files中加入文件
( y: l  P+ |! m% {  {- `4 qUSER:project中的main.c\stm32f10x_it.c0 x5 o/ V, y0 F) h; T6 V
Driver:Libraries\STM32F10x_StdPeriph_Driver\src下的所有.c文件  {: f& X( n$ W& k% Q8 n( w
CM3ibraries\CMSIS\CM3\CoreSupport 下的core_cm3.c
( q# l$ E1 p( i/ u8 \8 p5 g. U& ^( jStartup:Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s/ \9 K; @* r: a( l
(这个目录下的一堆.s文件对应的是不同容量的芯片,stm32f103c8对应的是md后缀的)- B" P! `3 g' e8 Z9 k/ b5 n, S
  ?# g5 e* y2 x6 E

/ P  G  A' {1 Wtarget选项配置
" I2 W3 p& \7 ^  G+ m  \) {2 X6 `
478cf894d9d74d0e943dcd4d954855b4.png
+ t4 d# n  H5 x  e- T$ o$ d. v0 l9 R+ E  b5 B! x
1.Target选项卡中ARM Compiler选择版本5的编译器3 @* c7 q8 h0 G* E3 J3 G. w5 A

9 b  I' x/ ^' c: C+ ^1 [2.Output选项卡将Create HEX File选上,output路径选择为刚才创建的output文件夹d  r/ T, j! E2 h" b$ b4 N# `! p2 N

5 ^* q& h7 g& C) b0 i1 ^; f, D3.C/C++(4C6)选项卡,在preprocessor Symbols的define中写两个宏定义:
  @( l  G+ S4 h% w% H
" ^8 H6 l: V8 O
USE_STDPERIPH_DRIVER,STM32F10X_MD(中间是逗号),第一个宏定义是说使用固件库进行开发,第二个说的是芯片容量,分为LD,MD,HD,对于stm32f103c8来说是MD。3 C+ E8 U8 Y! N
) v  C2 f1 |" [! c) U$ ?' Z# p
然后在include Path处,点击后面的三个点,把Libraries文件夹中的路径配上,分别为
: ?! _! T  b; j, c9 O9 S9 N! b3 K( e1 f7 f8 @. ]
Libraries\CMSIS\CM3\CoreSupport
6 B. q0 d0 R6 E# P4 D
1 J& D6 l5 U+ Q! o! ALibraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
, e4 O5 y) A& t% n/ `. h$ n  m* N+ y

6 s9 D4 A, v- u# s6 x$ ULibraries\STM32F10x_StdPeriph_Driver\inc
" f5 }$ a4 A2 K2 F4 i, n7 J

% S6 M; Y8 w- P) ^Libraries\STM32F10x_StdPeriph_Driver\src
- |$ W$ p- ?! `& B

# M  F/ F* M+ F) ]: q; yLibraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x0 H; L. a0 T! a9 ~( q5 _$ \

) s) L6 W+ g5 l% b8 W0 l  ^
05596f1ec42b489eb82573a903b465ce.png 2 ^) R# b  c) n% Y8 Y

# S. R: j  Y8 X  V! c

( U! x! [/ p/ Q6 t/ D; I" C1 C4. debug选项卡右上角的debugger选择为ST-Link Debugger$ Y# y7 p* U2 p9 j5 {0 O

5 p! }5 Y/ a4 ~- d接线正确的话,插上stlink后点settings会在SW Device中出现stlink设备
; A$ S, q) |( P1 }* [, J6 o- e/ F5 V7 u' t+ R  t
20210108212908398.png
' P; P, s! x2 s; t3 h1 Y% d1 W6 ]7 W' g
20210108213152680.png
  c8 \3 e( {/ K4 ], \

* r; `. B" d( A/ y/ j4 |$ x, j测试& S+ a3 q, u# P2 y$ O9 U
打开main.c文件只留空循环
$ U1 s; y; T. }3 M9 @# p' ^- b  O5 L) E" x! ?: ?
d2da0988a3324454954b267323127602.png 2 z: L/ y7 y* l' w6 g( Z

! T" @4 J# o- D2 L0 K% U 运行程序, Z" o9 u: F# r! J5 _

- ?5 i4 i) L8 @- B2 r! n
9d48307d9e2a41d2bcdb5b1b63bebd93.png
6 s' h$ q# p  L8 e

1 ~% a# [7 k6 ]. h. u0error且生成了target就是正确的,否则排除error
' f- f$ G& U  k( r" c$ ?, k: n) K( Q' [+ p1 e* z

; S" i. ]4 ^/ g/ n$ K3 T& }. k! N6 g1 b使用STlink烧录程序
2 z1 c8 U  q$ E! @! C: Zstm32boot0置1

4 F4 ~. m, r5 G$ U/ eboot0是1的时候可以调试,0的时候程序运行2 |* ]5 `# B  t2 [! n
) `# J+ u0 i, H; s' I
对应引脚连接
$ f$ L6 i  T$ T1 G0 w% Zstm32-STlink& l- U8 m" ]/ t8 \

( B8 L" j* |1 Y/ l3.3v-3.3v6 S4 x- x5 M/ N* `3 w9 _- e" `
+ k6 r; |9 S/ ?! R! D) v
swio-gnd
( `6 ^: W! F6 n8 B1 C& r, m

$ n: E" T7 Y4 z( n* D5 R7 X. x  a& Y; Bswclk-swdio
1 ~3 C  h' Y/ I: A& t3 i$ F! }6 l0 k. H
gnd-swclk
! K7 B/ R5 C5 F$ p3 E( {+ t————————————————
, n9 Z8 B2 v& x9 P. Y- a7 f版权声明:qqq2018
8 Q& C4 o5 ^; H! z  A1 ]# _* A6 f如有侵权请联系删除
$ O. t6 T. n% n. F6 }! o" P& _* r" ?9 O$ {$ ]
" a8 y0 ^9 Q6 J# n) D
1 U% `" l! X( Z2 U
赞 收藏 评论0 发布时间:2023-3-21 21:25

举报

0个回答

所属标签

相似技术帖

官网相关资源

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