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

【经验分享】STM32 资料下载和环境搭建

[复制链接]
STMCU小助手 发布时间:2022-4-27 10:44
1.1 资料下载和介绍' N4 m0 [, ]" j2 ?
假设读者下载完后,可以得到如图 4.1.1 所示资料结构,从0~9,一共有10个文件夹,下面分别对每个文件夹的内容进行简单介绍,方便读者快速寻找资料。 8 X$ L9 `" @0 m" W" c7 h) `/ h

/ D8 A: ^" z) z1 g1 F ~VZT0K7N}]P4X9L5}%PQHDR.png ) b8 ?+ q6 W/ R! z2 m+ _  V+ u; _4 |! a: o
4 B$ B, u) V' J" b. J! Y* o' n
图 4.1.1 资料结构
4 Y1 [$ a0 N' ~0 p3 G
' ?. T# s. g$ z# V8 P0_学前必看:包含学习方法简介、常见问题提示、注意事项等,读者应该首先阅读该文件夹的内容;5 e6 t9 p1 ?4 h0 r* F1 o6 q

0 c5 Z$ E; b( o9 ?& |1_学习手册:本手册所处位置,以后有其它百问网编写的本开发板学习手册,都将放在该目录;
* [9 J1 F8 b( d- Z7 Y9 v8 b' J3 ~0 Y8 s3 O2 \! s
2_原厂资料:包含一些ST原厂提供的该MCU相关资料,后面小结会介绍如何从原厂下载这些资料;
" i& E/ w* h. W' ~
& X0 E+ W0 D' K6 M0 y% M3_开发软件:用于开发环境搭建的软件,以及一些小工具,后面小结会有详细介绍;: j, Z! i) F4 u* p3 U0 Y+ n" {, w

: t1 I1 c- s& S8 O/ C4_硬件资料:包含开发板、开发板配套模块的的原理图,相关资料等;
: D* r- f2 y# X' w0 Q0 X
" S8 O$ s- X4 H) w5_程序源码:包含教程中涉及的全部实验的源码,后续实验中会依次用到;
; n2 Q  Z* u9 F+ O: @- ]1 J
6 t; Q8 R* I+ D7 d+ J1 L( s8 u7 ]6_视频教程:包含开发板学习的视频教程等;/ s/ h- E+ H9 R) v$ {# P
+ ?% u$ |  m+ i7 Z
7_操作系统:使用开发板运行FreeRTOS和RT-Thread的示例参考;
' G  x  v" i, j- o, P# l
6 a& |: U2 N5 b* n- W, s; S5 t8_项目示例:使用开发板做的项目示例参考;
7 K' f: o9 @, G  L! [7 s) k1 B. e; g0 m7 Z+ {
9_其它资料:存放除上述以外,供读者参考的一些资料;% z) g) E4 n1 f  j/ E( L

$ F; |( h+ T6 y( l7 F1.2 原厂资料的下载) ?% C3 E' s! h$ J% v7 F6 O' i7 S
前面“2_原厂资料”文件夹包含了本小结所介绍下载的资料。本块内容单独提炼出来讲解,是希望“授人以鱼不如授人以渔”,让读者明白这些资料该从何处下载,以后实际开发,换成了其它MCU,方法也基本一致,也能自己下载这些关键资料。0 [5 w: R" `. l$ Z. h
3 @! J- t, b- N$ N; f+ E* r
对于几乎所有的MCU,都会有数据手册和参考手册,这两个手册必须下载。2 @+ A: S) w" ~/ r
! i$ X9 S4 V8 X
对于STM32系列的MCU,通常还会有Cortex-M3/M4编程手册,闪存编程手册、勘误手册、原厂固件包示例源码、原厂固件包用户手册、HAL库用户手册等,这些资料根据需求下载。
/ Y' k  G. c. `- s" O0 `) @/ q% W* z. O
对于Cortex-M3/M4架构的的MCU,如果需要深入了解Cortex-M3/M4内核,还需要Cortex-M3/M4权威指南,这个供读者深入学习。
* I  x3 w! P  F1 Q- v
. v; @) @5 v! j% S- }       首先打开ST官网,在搜索框里直接输入“STM32F103C8”,点击“Search”,如图 4.2.1 所示。注意,ST官网在不断优化,本手册截图基于当前页面示意,读者根据页面举一反三,灵活变通。3 t* r. d/ Q& A% M! l8 A, N& S

% T; {4 g+ I4 k0 v# m8 G, H2 V KS{1AUGCS)1(SVVT9J}NMQ3.png
# ~, N+ N! a; p- M0 w  Y: B! E( v6 I7 E5 S& p; g! U* A/ S& D
图 4.2.1 输入所需MCU% A; ^; X/ u" {7 T1 ~
随后显示该搜索条件匹配的产品,如图 4.2.2 所示,可以看到只有一款产品符合搜索条件,点击该产品进入详细信息。
2 J5 r5 h& x+ U" d/ ~
% e8 [, R8 b. a+ ~5 q  s: l1 f/ W A]IBEZ]TD74W[W[BRQ1[}9J.png
$ b% v5 [0 M# W5 Y2 p5 j3 m
' \* u, T9 ^! }) K& ?& O图 4.2.2 搜索结果7 F+ J0 {3 r0 _! n( k
5 e; @/ i9 ^( J# j6 p  K1 ]
0 E0 F# ^5 f: k+ o8 i' f. }1 r
在产品详细页,切换到“Documentation”标签,可以看到该产品的所有文档手册,如图 4.2.3 所示为部分截图。
: }$ U: B5 ]! M( B0 N1 I1 d, p# F: K! _1 d, a2 c
“Product Specifications”(产品规格):也就是数据手册,包含该系列MCU的整体描述、引脚描述、内存映射、电气特性、封装信息、订购信息等。在芯片选型、原理图设计、PCB设计、代码编程等开发环节,都会需要该文档;$ u# {8 }7 E7 H

' ~+ d* m1 z/ P) z% m; i% W“Reference Manuals”(参考手册):包含该系列MCU各外设寄存器的详细描述,在代码编程时,需要找到对应外设章节,仔细阅读;" d+ L# p" ?) a

7 S/ ]8 E/ g/ f: G" c1 G- y. |“Programming Manuals”(编程手册):包含闪存编程手册和Cortex-M3内核编程手册,一些资源是在内核里的,比如NVIC和SysTick,此时在参考手册里找不到相关寄存器信息,就需要在Cortex-M3内核编程手册里查找;
3 F4 o& f# E2 w* L! S0 L5 s
2 R! |1 u, v) t- u" F) Y“Errata Sheets”(勘误手册):包含该MCU内核、外设资源的限制,解决方案等,在调试中出现了bug,可以看看该手册是否有类似记录;# a! P2 z- J& ]( N
2 U1 a' [& y6 Y2 r
HMM2()K}_{V`QN513K(9V`H.png 7 C3 h: s' ?2 o0 E$ c3 V$ z
  f8 L$ a9 U& ^, z, I+ R3 I: E' N- K% j. y
图 4.2.3 STM32F103C8系列原厂文档(部分截图)
4 z# j* R/ X7 h& a6 ]" r 除了这些文档外,通常半导体芯片制造厂还会为MCU提供一些示例程序,ST也不例外。在前面的产品详细页,切换到“Tools & Software”标签,可以看到该产品的所有工具软件,比如各种硬件开发工具、软件开发工具、元件模块、评估工具软件、MCU/MPU嵌入式软件、产品评估工具、解决方案评估工具、工程服务、培训课程等,如图 4.2.4 所示为部分截图。
  k* j1 O0 i9 G+ J; {4 ~8 c3 E' ?% b
  r1 A1 ~, o8 R! Z _ZT1~PIIY@GZ(F54VR@BG49.png
+ Y6 J- J5 j) Z$ I0 h* f- e6 B: V  S& n" l9 z; s
图 4.2.4 STM32F103C8系列原厂工具软件(部分截图): y* q) k- `3 r
) X. }- l0 ~5 d6 A3 v
“Software Development Tools”下圈出来的几个工具后续会用到,这里先跳过。“MCU & MPU Embedded Software”下的“STM32CubeF1”就是包含示例的固件包。点击该固件包,进入详细页面,在“Overview”标签栏下,点击“Get Software”可以分别进入固件包、固件包补丁下载页面,如图 4.2.5 所示。
, D4 l% X6 L6 g" h/ w
# p( M, x* L1 T  t4 j4 K X9~ZAEQPL5VQ6PB9J]Z{ZKR.png $ V0 ?. d( \6 h4 [' g
0 ]+ h* y: b0 C4 ]+ F0 {8 f
图 4.2.5 固件包下载
2 x' f, G9 n( x7 [% w0 p6 O
4 X2 A4 ?4 B: N2 _1 e2 ~ 随后会弹出许可协议“License Agreement”页面,点击“ACCEPT”表示接受,如图 4.2.6 所示。
: I# h) G# j2 ^% ~3 A4 E5 y, g- m8 N3 {3 {
8QF{5ZMEW61C4ON@%W}329J.png # E/ U1 l( a- i

8 _0 l6 y1 ?/ ?9 [  f* C3 a* }5 g图 4.2.6 许可协议页面8 V% D( q2 V0 Y4 T) Y+ Y
接着要求需要输入个人信息,如图 4.2.7所示。如果读者有账号,或者想注册一个账号方便以后下载,可以点击右上角“Login/Register”登陆/注册下载。如果读者不想注册,需要填写个人信息和邮箱,下载链接将发送到填写邮箱。0 K1 X. ]4 j6 [

4 W% L: r+ ^/ O/ T( |6 j% Z# ? {%MDYTXYFS@DI1]FF]3GRAQ.png
) Y) M1 P; r: V! B7 c% Z1 }
# H8 w: u* G* z' G& P图 4.2.7 填写个人信息; b; C, a$ f5 I0 k! G* v" r8 g  ^
ST还提供该固件包的详细说明文档,切换到“Documentation”标签。在“User Manuals”下可以看到“UM1850”文件,该手册详细描述了STM32F1系列的HAL库和LL库API,非常重要,后续会用到。“UM1847”文件则是该固件包的详细说明文档。除此之外,还有介绍LwIP TCP/IP协议栈、RTOS、FatFs等文档,如图 4.2.8 所示,读者可根据需求参考。7 x) V0 M; {0 c4 i+ c1 T) E

6 E; Z/ L0 B0 Q3 U 9G0`G$RN3%O)~E`[IK7$W)W.png
3 E6 g8 Q/ }$ f4 ]8 Z2 l) |( P3 J' k: G6 U
图 4.2.8 固件包相关文档
# @. Q- t8 ]  l! K最后,再简单介绍下固件包所包含的内容,供读者参考,固件包内容结构如图 4.2.9 所示。“Documentation”:里面是本固件包的详细说明文档;" Y+ S6 C  C5 b: B  g7 ?

$ ^  v4 P* g/ g* I, a6 G2 c5 E: Y“Drivers”:6 H  E3 V- D2 e0 N& t9 {+ ]; Q% q+ g
5 w) O" n. n; p$ X0 K1 D3 ?" I
“BSP”:板级支持包(Board Support Package),适配ST原厂的几个公板;5 q' z+ C8 ~- z. H2 _: n8 g
( |% U( m2 a2 D) g. z( {" z
“CMSIS”: Cortex微控制器软件接口标准(Cortex Microcontroller Software Interface Standard),包含STM32F1符合CMSIS标准的软件抽象层相关文件;. ^) l5 I' L0 U- ~: t
- n9 _1 G. f' Y; w0 ^; o
“STM32F1xx_HAL_Driver”:ST提供的HAL库驱动,方便快速编写程序;, Y# H2 J3 T0 T. @

& K9 U2 H  a3 A“Middlewares”:- S$ p# I9 F( L' a) D

  q# G5 F+ g: P' _“ST”:ST提供的图形GUI库“STemWin”、USB从设备库“STM32_USB_Device_Library”、USB从主设备库“USB从设备库“STM32_USB_Device_Library”;5 k: k6 e1 ?) S: Q8 ?, i, c$ W
6 s8 e  E, p- t4 f9 m
“Third_Party”:第三方提供的文件系统库“FatFs”、实时性操作系统“FreeRTOS”、网络协议栈“LwIP”;
& @" S0 l( m; |( d1 W! w2 A: c2 }9 b# f( j9 Q+ s
“Projects”:以ST原厂公板为载体,提供的外设应用示例,比如GPIO、UART、ADC、RTC等;$ o) U9 z% a0 U9 a# F

" ~$ l* g. X+ L“Utilities”:一些字体、日志、多媒体等杂项示例;) \0 D7 _% z' z/ u; J. m6 z! w

' g/ Y+ G% J+ j* x4 X3 @0 I/ L7 O* K YA6_}3)$}}$YJTCPL6L@]FP.png / ]. V, ^/ }/ ]' `2 [

' n+ {4 x' ^- O! p0 [5 y' s" _图 4.2.9 固件包内容结构
# k9 \3 f5 \5 _" G& w1 ^【总结】! L$ |  q, P6 ^4 F
+ }# i/ Q) K3 S% x! i3 ^
如果读者以后开发其它MCU,在没有现成资料的情况下,可以先去MCU官网下载对应型号的数据手册和参考手册,再找找是否提供相关集成开发工具(IDE)和示例程序。加上硬件的原理图、PCB丝印图等,就基本可以完成相关开发了。7 \. p5 F* W1 N1 n" ?

5 F3 z0 p; q8 i+ g! C6 ~7 G' B原厂提供的资料文档众多,有些文档甚至页码上千,读者不必担心,这些文档不需要一口气看完,只在需要的时候搜索相关关键词,定位到对应章节,仔细阅读即可。
0 x+ Y, \/ x0 _  l( k6 m2 U* |, D0 ]4 a, W& C. t1 S2 [8 P
1.3 开发环境的搭建
# U  f. V4 D1 x8 F4 C+ Y' I
1.3.1 交叉开发

! c+ |7 D: I! N# ]. k7 w8 y嵌入式系统开发不同于通用PC系统的开发。通用PC系统拥有强劲的处理器、充裕的内存和硬盘,且有鼠标键盘输入,显示屏查看,是理想的开发载体,因此PC程序也就直接在PC上开发。而嵌入式系统往往资源有限,输入显示也受限,不适合作为开发载体,因此嵌入式程序通常不在嵌入式系统中开发。而是将嵌入式程序放在PC上开发,然后将生成的可执行文件放在嵌入式系统运行,这种方式就叫交叉开发。
7 M+ O! ^: T& ~# _+ a) M# _, K% Y4 d2 C; r! o( o3 @0 `
交叉开发通常由三部分组成:宿主机(Host)、目标机(Target)、连接宿主机和目标机的工具(调试/仿真/下载器)。宿主机指用于开发程序的平台,这里指PC电脑,借助电脑上的开发软件,实现程序的编写、编译;目标机指程序运行的平台,这里指开发板;连接宿主机和目标机的工具通常有串口、J-Link等。三者示意如图 4.3.1 所示。
  e! L% j9 o8 ~. y; A( u5 u2 O  _8 t# F( [4 U0 s# X0 z
DV_8GUOY8@N{J(3K{[0_X%4.png 4 c# X7 e( Y% R2 E) {, |. l
" S6 U4 l) G% Q' |
图 4.3.1 交叉开发示意! X4 l) o0 ?1 V) ^; P( z
嵌入式开发通常分为六个步骤:编辑、预处理、编译、汇编、链接、调试和下载。每个环节都需要相应的软件实现,如果将这些软件集成在一起,就叫集成开发环境(Integrated Development Environment,IDE),如图 4.3.2 所示。
. ]9 l) t( a( J& i- H1 J$ U* A" [2 j( @) `5 S
UQM%ZDE3$K@OR7[(Y29`Y)L.png
0 r  L! L3 Y( J
4 Y- H- V, q0 y图 4.3.2 嵌入式开发流程及所需软件
( s( i8 M* @9 G+ U  L# o3 U实际开发中,除了使用调试/下载器进行调试,还会用到串口打印显示信息。对于STM32开发,所需的开发工具如表 4.3.1 所示。因此我们需要安装两个软件(IDE和串口工具软件),准备一个调试/烧写工具。/ T6 s! ^3 K( R* O5 X0 L. }) r
7 Z' y* p- f- C# ]4 k/ |
CH1UZ1T8997V6YAAF$DWITQ.png
1 k7 _' e! f" _/ p" f# a2 O0 g* \9 n! l  X
综合实际开发情况和软件收费限制。对于集成开发环境IDE,本手册选择Keil,使用最广,读者熟悉之后也能过渡到其它IDE;对于调试/烧写工具,本手册选择ST-Link示例,功能够用价格便宜;对于串口工具,选择MobaXterm,免费够用。! n: j$ h3 y6 i+ B& U/ {0 a* O6 h

& U; s+ x$ n) E0 d& b4 Z对于100ASK_STM32F103_MINI开发板,在电路上设计有串口自动下载电路,可以使用配套的100ASK_STM32F103_Tools工具,通过串口下载程序,免去J-Link/ST-Link等工具,在后面“4.4.1 串口直接下载”再介绍。
8 M  H7 V6 t9 _) C- Q$ L) b3 O
2 z+ s2 u' Y5 Q/ P# |8 P+ _: {- h3 @, s" `5 x0 B) a8 Z
1.3.2 下载、安装Keil
/ [' A! R' N, {* J8 F! B1 f' wKeil-MDK(Keil ARM Microcontroller Development Kit)前生是德国Keil公司,后被ARM收购,可以看作是ARM官方的集成开发环境。前面图 4.2.4 STM32F103C8系列官方工具软件(部分截图)所示的网页页面,里面有Keil的下载链接,或者开发板配套资料的“3_开发软件”文件夹提供所有需要的软件和驱动,读者也可直接去Keil官网(https://www.keil.com/download/product/)直接下载,当前最新版本为5.32,如图 4.3.3 所示。
: y! n2 Y! s+ Y' O6 E* G  y" @' [& u7 N% p1 C4 O
@PYCGJKRUVS{ALV]$BH2W.png
$ v9 g5 t7 `. I5 \2 ~* a' u- `5 w& K& Y
图 4.3.3 MDK-ARM下载页面3 I! n* r+ q; M
& y  y6 c  X4 K: W! a4 Q
随后进入个人信息完善页面,按提示填写所有的信息,如图 4.3.4 所示,填写完后,点击“Submit”提交。
& M+ [# T8 \6 C' {8 q2 }9 ]/ o. f9 c0 Y
FY7OKB@7DNZL27GND88P.png - g+ ?( v1 ^8 C' f
+ i  f9 V6 n( u' p
图 4.3.4 填写个人信息
3 U% p  g  r; Z( v, B5 W" Y7 w* h- B$ F# y+ |4 j: M0 J
随后进入下载页面,点击“MDK532.EXE”即可下载,如图 4.3.5 所示。
/ W7 H- x9 I$ ~4 h
7 U6 E' Z+ d9 g6 t+ h) ^ ZEU$~WINO4UF~~U@EEZT8~N.png
- e, A+ `( C/ f. h: \% w" S4 H0 \# \1 ^" M1 p
图 4.3.5 MDK下载
/ s1 F. W( G+ i8 w1 q4 @
- h# u- i( l) y下载完后,点击运行该文件,进入安装界面,选择“Next >>”,如图 4.3.6 所示。
8 y# j5 `1 `$ d7 s9 d" R3 x7 g* ^" a5 t9 ?( Z
0YTPWL)NV`2SAS}G~_L3K}X.png
6 n9 b7 W/ ~- Z
* B" k( c- x" s图 4.3.6 Keil安装界面
5 h% V: C6 h* Q7 G" L5 [' X1 c  Y# W; T4 t; I8 s
接着进入用户协议界面,勾选同意协议,点击“Next >>”,如图 4.3.7 所示。
# f: n( n+ x  ^) e) t: s  v# \: O
X{}9RT34H3_UY$IWUFM9X44.png
9 \- d* O$ p2 q* F, H( I6 l
, O5 P4 y' E. m5 `4 T2 z图 4.3.7 Keil用户协议
" D" ~7 P$ L) y- R2 b$ |, H; l( y# L$ a0 q- a
然后设置安装路径,第一个“Core”是软件的安装路径,第二个“Pack”是芯片的硬件支持包的安装路径,读者保持默认路径或者设置为如图 4.3.8 所示一样的即可,如果是自定义设置,建议为全英文路径,不建议为包含有中文的路径。选择好之后点击“Next >>”后:
/ S9 l  S" R8 k! G
' ~& {( ~! y- {2 |, I! P GOB)E79E[P3GU6D1J{YZX1R.png 8 q" w0 C& G4 |

# I+ o! Q' X: X' e, y% P$ C3 v图 4.3.8 设置Keil路径
5 h# A' \( K2 O9 l. B8 [  A* X! I7 L7 i) W7 |9 S" H9 y( J" T2 @
随后需要设置个人信息,随便填写即可,如图 4.3.9 所示。4 T8 H7 S6 r3 f  g' _2 l# J2 v/ w
8 y. {6 n- X& T4 V6 j) w/ }
EY5`2S9WHGC[3A@){350}FJ.png 2 O+ q  ^0 ?6 G8 V' l3 j2 ^
! V$ M5 r+ g' D7 e" y# ^6 w
图 4.3.9 填写用户信息
6 ^% B% T/ V% w
( M  ]  G8 i6 y2 o7 D4 l8 P# d之后便进入安装进度界面,如图 4.3.10 所示,等待安装完成。/ P# R5 X% s; M3 X3 t" N/ Y9 w% |

. W) L0 A$ O: q6 ^6 S$ R0 a KQYF)EJVI_03YUX}]3NN(8X.png
+ a) R: j* Y6 D& c3 G9 \! H; m% s% F9 m, ?( x( g+ q$ p7 d( T3 i% e
图 4.3.10 Keil安装状态& H- P+ \) T5 n- v3 a3 P: l
; Q" B( ~, W, z5 e+ [4 [
安装过程中,回弹出驱动安装界面,勾选“始终信任来自‘ARM Ltd’的软件”,然后点击“安装”,如图 4.3.11 所示。  h: m; d8 q# F0 W8 Y$ @, [4 ^

! _% b. \! j7 L' L$ [9 f (}6FO{KJ77QG@AYG0JB)Y1R.png
9 l6 j6 Y$ K: O! C3 O/ T0 j. i# z7 X6 g1 [, [
图 4.3.11 Keil驱动安装
; Y9 r, r/ V) Y" h1 K% T
" W3 B( N! m# K: \! b如图 4.3.12 所示即安装完成,“Show Release Notes”为查看当前版版本说明,可以不勾选,最后点击“Filash”。
# H7 ]2 N  E$ u) s2 g& i* ]
5 J. {9 C" c0 I1 Z3 f2 Z6 t MX~]49S@25J]3~P1XL`0D2L.png 3 h4 Q8 C% z# s! r

5 G* |2 K% J: ^图 4.3.12 Keil安装完成/ t2 N5 z0 h+ z2 d

& Z* [' o# F6 n/ U2 c/ d, r之后会自动进入“Pack Installer”界面,这里会检查安装的编译器、CMSIS等是否是最新的,由于我们安装的是官网提供的最新的MDK,所以这里一般情况下都是不需要更新的。
3 n/ Z. ~, U& I# |/ s. _) a/ @! g( A6 \
至此Keil就安装完成了,但这不是Keil开发环境的全部。一个Keil的开发环境,除了Keil软件,还需要安装对应的Pack,比如这里目标机的MCU是STM32F103C8T6,就需要下载该系列的的Pack,如果是STM32F4系列,就需要下其它系列Pack。1 F8 T: R0 z' y. }
2 N" k" l# ]3 u  B
使用“Pack Installer”可以方便的对Pack安装和管理。在左上角搜索框输入“STM32F103”,展开搜索结果,可以看到STM32F103C8,点击右边的简介链接即可跳转到Pack下载页面,如图 4.3.13 所示。如果跳转网页无法打开,可直接打开Pack下载总入口。进入Pack下载总入口后,找到“STMicroelectronics STM32F1 Series Device Support, Drivers and”,点击右边的下载图标即可,如图 4.3.14 所示(部分网络环境打开该链接无Pack列表,请尝试换个网络环境测试,仍旧不行则使用配套资料Pack)。
- u- X$ ]% s4 N3 C) v
( i2 e2 i. {/ N) L5 b: j 8E$O2V~G3Y$ZAD5$SEK11.png
. y3 R" U" J! Y! ~6 ?0 P$ G9 V
# ]* ?3 t# F0 u图 4.3.13 Pack安装管理器
* o+ [9 H6 T) m2 i: R6 l" E0 x. T) V  i( a, ], _, _+ @+ R7 G! {
M4N`M`(FAD93D[M0Q{90S.png 9 Z' j, ~/ x- {$ V/ i, G
; ?) K. R* u$ n# J3 d  t
图 4.3.14 STM32F1 Pack
/ W& T  X, F! o8 X6 i9 B下载之前会弹出Pack用户协议,点击“Accept”即可,如图 4.3.15 所示。
9 x" v# \( a% W! c" X; _$ i# O8 r' S7 r5 i: C' r
())KXW6YFU`@9TWEX`Y7HEB.png
7 }* s3 ^0 I& ?$ b# {1 F; b7 P, f
0 \. T! e/ g7 N" U; ]# h" N图 4.3.15 Pack用户协议7 N4 X0 V8 @: S* X  p3 i& o6 s
下载完成得到“Keil.STM32F1xx_DFP.2.3.0.pack”,直接双击该文件,随后弹出如图 4.3.16 所示界面,点击“Next”进行安装。
- ?; w; h4 ^7 g9 n( ?! F- O2 C" ~6 m
UE{QrVW{W09E$J]]QWB(9.png 4 h! G; D; Q8 q

) m+ b5 }" r7 O  G; e图 4.3.16 导入Pack
! p. R: a& `* m* M8 q本开发板使用ST-Link进行下载调试程序,还需要安装ST-Link驱动。首先从ST官网下载该驱动,或者直接使用配套资料里的ST-Link驱动,路径为“3_开发软件\1_涉及的所有驱动\ST-LinkV2仿真器驱动\en.stsw-link009.zip”。
$ E! F# ?# H3 E4 ?- X! V, v- l- w
解压“en.stsw-link009.zip”,双击运行“dpinst_amd64.exe”(如果电脑为32位系统,运行“dpinst_x86.exe”),出现如图 4.3.17 所示安装界面,点击“下一步”。
& Z* _% n4 L9 \5 D: a
- ^/ P6 k3 c* r$ z. @* b, V; i 2[6VXN}GAEZ07T{Y75JXKFX.png
3 j  B& \! o( F$ |& \% U# D8 w6 v; [0 @- Y5 A4 S7 k. z
图 4.3.17 ST-Link设备驱动安装界面
0 v7 I1 {: P( _: b% u 在安装过程中,出现如图 4.3.18 所示的Windows安全警告,选择“安装”。4 O+ ^9 S; F2 I: ^% n) U  c$ p
! k9 H% x" D- _9 Y0 ~5 O  R6 D
($C_VELYZ_ER(ZR%C@VGXEL.png
5 h( Q9 H; M0 \* q3 }% ?! @: R
) C1 y( E+ B7 R" n( ~图 4.3.18 Windows安全警告; L; y1 p# S, _  m
最后安装完成提示如图 4.3.19 所示,点击“完成”退出安装程序。/ P, Y+ e# q" A% Q
8 H  k' q  y) r' j4 n
221%L11L@{{6VYX51NK](T1.png   c  \5 _4 A2 I$ ]  D- a

2 V* }0 s, j& e2 C3 r: _4 m* c图 4.3.19 ST-Link驱动安装完成
5 I0 q* M+ v  r2 v8 n 至此,针对本开发板(STM32F103系列)的Keil开发环境,配置完成。
" p% J- z( \7 |8 }( U: r7 x6 N: A5 T3 r
1.3.3 下载、安装MobaXterm
$ q0 y% P8 B1 o8 A  j$ C6 p实际开发中,常常使用串口的输出信息来协助调试。通常的串口连接如图 4.3.17 所示。开发板的串口(TTL电平)引出,通过USB-TTL串口模块,转成USB信号给电脑,在电脑上还需要配套软件才能显示信息,也就是这里要安装的MobaXterm。本开发板的USB-TTL串口模块集成在了开发板上,只需要将USB切换开关,拨到非ON一端,然后插入电脑USB口即可。7 e8 T0 X5 l& V" z+ H

; m1 n& r& y: t1 ^( U AL6$ZY58H[B]E)PL_6HV5.png
) u* {. `! z5 H4 H% C3 Y. f: @; a: D; e, e. u& |
图 4.3.20 串口连接示意图7 @0 {  m2 l! N. s2 i% V
目前还用不上串口,因此不需要接线,只需要将串口工具MobaXterm先下载、安装即可。打开MobaXtrem官网,如图 4.3.18 所示。Moxtrem有两个版本,“Home Edition”(家庭版)有功能限制但免费,“Professional Edition”(专业版)无功能限制但收费,这里选择功能够用的家庭版下载即可。
; N- F( o* T7 O8 d% }0 a4 J+ r
3 X3 f2 Y5 ]+ a( V; { H%[IK(X(ETIDSXX(2KVD9DP.png # W2 m$ }5 O5 @6 m

- y8 ?3 s$ M+ m6 C  M: T  R# d: A图 4.3.21 MobaXtrem版本选择12 ~0 M" b' ?0 z9 e

; S, z8 C$ n5 d0 H8 ?8 J* v: A接着跳到家庭版下载页面,又分两个版本可选,“Protable edition”(便携版)无需安装,点击即用,“Installer edition”(安装版)需要安装才能使用,这里选择便携版即可,如图 4.3.19 所示。( a! C) G8 k& K' a3 J* J% U. q# B

' u! }$ ~5 {  i( } UUT8)RJ9{AAL3QVZB_%O3I4.png - v& O! x" ?; z

! D$ ~7 a0 Z# m图 4.3.22 MobaXterm版本选择26 ~: N% X4 r' o. ?9 C

. U$ C; I7 O9 l4 r下载得到“MobaXterm_Portable_v20.4.zip”,需要读者解压到任一目录,解压后如图 4.3.20 所示,以后点击“MobaXterm_Portable_v20.4.exe”即可运行MobaXtrem。
3 p$ c* U& @$ K/ C6 x$ I! b* D# H1 \: _. }
JHHDGS%UFA{[I9ZB_GVN32B.png
% s/ `8 \# v" p1 I% W' l( I. R
  \, F3 c4 c( h图 4.3.23 MobaXterm解压后文件
% H) q5 t& B4 z6 O2 b0 W4 `3 F2 e9 ?# v
本开发板采用CH340G转串口芯片,需要手动安装串口驱动,解压配套资料“3_开发软件\1_涉及的所有驱动\CH340G串口驱动\ CH341SER.ZIP”,双击运行“SETUP.EXE”,点击“安装”,如图 4.3.24 所示。+ d# _6 s- v/ O3 u) W" W9 Z
+ i4 ]! @! ?+ F, t
D)V3AO67L9D[_8B]C(5KP.png
. C: }/ I" q1 U  K) l& M0 {( W
7 O. J8 l6 ^; p图 4.3.24 安装串口驱动% q# C% _3 f' r% X( Z" v1 y

1 m# U2 T' |" P, T1.4 下载程序和调试
& P+ {3 |: u/ q7 ^6 I0 d9 n在本章的最后,再介绍下如何下载程序和简单调试,以“2_GPIO—LED点灯”工程为例,读者暂时只关注下载和调试,对于代码内容、工程结构,后面章节会详细介绍。
5 l6 l: a; ~4 j* Y, X8 L5 j
4 r5 m3 v" i: U1 m1.4.1 串口直接下载
: K: G* L1 {' K( s开发板独创了USB接口集供电与下载一体,无需额外配件,将开发板的“USB切换开关”拨到 “非ON”一端,然后插上电脑USB口,如图 4.4.1 所示。
4 B/ G! _" b9 g9 y- G9 j) k6 `& a/ e5 h  {( Q1 O
T)8ER%~_HWT9(WXQ@98D7L5.png # `) e5 Z% P+ a# F- d
7 b3 }0 {7 {% C- K6 g, V' `
图 4.4.1 连接电脑+ `" j9 {6 H1 \& p* e/ r
确保按“图 4.3.24 安装串口驱动”所示,安装好串口驱动,此时电脑设备管理器,会识别到开发板的串口端口,如图 4.4.2 所示,其中名字为“USB-SERIAL CH340”,端口号根据实际情况生成,和本文可能不一样。
" D0 v+ J" V/ m7 r
: G  k& N3 Q2 E4 P( w- t3 I' k G_]T)ON_3]Y(}%UYBAZ~)6K.png $ T4 N' `) k. b/ n; s2 E

/ m5 S$ Q/ v$ r; |; W. D$ @图 4.4.2 设备管理器& K) y; e  N  M  H
接着打开“100ASK_STM32F103_MINI开发板资料\3_开发软件\2_百问网STM32F103工具\100ASK_STM32F103_Tools”里面的“100ask_stm32f103_tools.exe“,如图 4.4.3 所示。
* M+ w" P$ ^* v* X6 \3 c4 B
) X0 E& l+ f0 B# B$ D: i. A 2JV_8%L]JDAD9Z24M44}RYD.png 6 \4 R2 n4 Z/ q+ N8 [- G

  U3 c6 L: l* l/ ]$ T3 b  r8 ^3 p+ N图 4.4.3 100ASK_STM32F103_Tools
% I) {) O# [4 c& b! W5 T' R/ e 这里要选择编程生成的“bin文件”或“hex文件”,打开配套资料的“05_程序源码”文件夹,里面包含了所有实验涉及的源码,找到“2_GPIO—LED点灯”并进入,再打开“Project”,双击里面的“Led.uvprojx”,如图 4.4.4 所示。0 X9 E, t$ h# R1 [: _1 k8 h
8 m) p! g% s7 \1 J5 j) n7 I/ f
6 c# o1 H- y' s  s' v6 i
  C1 a, }- i5 G9 x
图 4.4.4 LED实验工程
" D- {* B& E0 [9 L' o3 j1 Q# x 接着会自动打开Keil,界面如图 4.4.5 所示,可以把整个界面分为四个区域:3 W( h* l, A+ k, r# S  w

: X' j8 ~; ~, _4 l) N4 f①功能菜单区:包含Keil的功能菜单,以及一些常用功能按钮;
% z: q; N8 J  e7 h+ ~, G* \' u- g! b! {8 t( |; T: }" O) p" b
②工程文件区:该工程所有文件的目录结构;
+ v$ X8 b6 ^9 T6 l
5 y; q+ Z/ @+ h0 m" c4 j; N- V③代码编辑区:在工程文件区选中任一文件,将在代码编辑区显示内容,供用户编辑;7 j! J' T, o8 Z: `. j3 h& M0 _
+ Z0 E2 p% W8 P: n) m5 A
④编译信息输出区:显示在编译过程中的所有提示信息;
% }% j* S& b% Y( V/ z& z, h2 x1 h) ]3 A8 U) Z7 U
}TKC`R`(P{NL1T70WF}31.png 3 U8 R+ t( f4 P' A7 J
! n! ]) Q0 ^! E1 m5 R0 e8 m& q
图 4.4.5 Keil工程界面
1 R1 u+ M* \( r3 x5 X0 u在功能菜单区,圈出了两组按钮,其中左边的一组与编译下载相关,从左到右,功能依次为:1 M9 P* a$ T5 ~& Z8 f
4 m8 H" F/ j  m" H9 D
Translate:编译当前源文件,只进行语法错误的检查,不生成可执行文件,用来快速查看修改后的代码否有语法错误;
! s% z7 l; X) f  J- W! H, m
! i" a% @! R" ~& aBuild:编译工程得到目标文件(快捷键F7),这里只编译修改过,以及和修改文件有依赖的文件,也就是增量编译,用来快速得到目标文件;
! U6 @! j4 M. j3 O
9 I% E2 i+ }) h0 mRebuild: 重新编译工程,不管工程文件有无修改、编译,会对工程中所有文件重新进行编译生成目标文件,花费时间较长;4 Y' O) b8 D" p. Q
( l7 `  Y! m* ?2 H) ]
Batch Rebuild:批量编译,当Keil存在多个工程项目时,用于多项目的批量构建、重建、清理等;4 O+ \0 }8 i$ F; ]4 j/ ]' l

7 @8 y2 d* B! w7 K9 c' UStop Build:停止编译,在编译过程中才能点击该按钮,用于取消当前的编译;5 N/ A/ L: b1 ^& y8 F
: _9 t2 S3 y! t! f
Download:下载(快捷键F8),编译完成后,点击该按钮下载程序;
: C" w3 F5 \9 e1 P) ^' M- m' _
6 X# M' k* Z9 ]/ o5 q: t$ }在中间的一组与调试相关,从左到右,功能依次为:% n- H9 [! g/ K

9 m" H! e0 v9 {, [4 s6 A5 tStart/Stop Debug Seesion:开始/停止调试窗口,用于进入调试窗口,进入后会新增一系列的按钮,后面会仔细讲解;
9 L$ g" Z! \" _; c1 C/ n
2 t2 I. Q9 G" w2 L$ C3 OInsert/Remove Breakpoint: 插入/移除断点,在进入调试窗口后,选中想暂停的代码位置,点击按钮就会在该行出现一个实心的小红点,在调试时就会在该处暂停运行;
+ l4 T6 k2 ]+ g" ^
8 d, y8 @2 F7 C2 aEnable/Disable Breakpoint:使能/去能断点,在有断点的代码行,点击按钮就会取消该断点功能,再次点击恢复该断点功能;% a; Y% _6 X. {" }2 Q
( D) U% H$ p4 k% X3 w/ [% j
Disable All Breakpoints in current Target:去能当前工程所有断点,保留了断点的位置,方便再次使能调试;
0 W, D! C7 o. d/ s$ I/ G" t5 A1 S* D: Z
Kill All Breakpoints in current Target:清除当前工程所有断点,整个工程不会再有任何断点;
' t) k- T; l; O  r' Y$ ^4 b4 b( Z  t' K: y
对Keil有初步了解后,接下来就尝试编译、下载程序。点击Build按钮(快捷键F7),便开始编译程序,编译提示信息如图 4.4.6 所示,可以看到提示“0 Error(s),0 Warning(s)”,即没有错误没有警告,编译成功。
: P( ]8 }0 m! X
  [! Y$ E  h. Q5 C7 F. @4 U ~_(I@VU74VIF_VWF)P4QJ.png
7 ^4 W' {& N( \1 l1 |; S3 [
" o- L6 c, Q+ ^4 e" O+ @; ?6 _图 4.4.6 编译、下载提示信息
* y' ]& x, y: `% f) T编译成功后,将在工程的“Objects”目录下生成目标文件“Led.hex”和“Led.bin”,点击“100ask_stm32f103_tools”的“文件选择”,选择“Led.hex”或“Led.bin”,如图 4.4.7 所示。
$ H9 k  k5 \& A7 M8 G( [" a6 N& c% o  f6 \
R52PY283ISOCAZF}RDQYI{6.png   K( ?7 E1 L( ?: f
4 ]8 E& R3 D* e+ S" m% ^
图 4.4.7 选择烧写文件6 E3 j1 Q$ D9 e& n

; u* x) @1 p8 m* @  V点击“开始下载”,等进度条烧写完成,如图 4.4.8 所示,开发板自动重启,即可看到开发板LED闪烁。
. O' m; v0 K3 s" N4 {- G8 o6 M8 ~; y+ r+ H" h" y
DRQM`$~BY_IV)YKK2OX{2AC.png ! E9 M) z4 l9 u7 G$ J

2 n5 k' ]) a* t( g6 \图 4.4.8 烧写完成
) S5 N1 W  q- P0 g; H. c0 E& C( N% t
1.4.2 ST-Link V2) p% N4 X4 i9 N* y% y
ST-Link是由ST公司设计,用于STM8/STM32微控制器的在线调试器/下载器。目前为止,ST-Link一共有三个版本。9 l/ Y! U. |% l+ L( N, l

/ Q) l/ j" A! Y* qST-Link V1:早期版本目前市面很少看到,基本被V2取代;$ X) Y5 z3 M( v; h/ R1 p6 `
9 h/ S. y5 Y$ O/ h' h) u6 P
ST-Link V2:目前使用最多的版本,能够满足日常调试需求;1 N$ ]$ Y1 p6 J) ~* G5 Y5 E

( {9 C  M. Y& C# p% A$ O( cST-Link V3:近两年发布的版本,功能、速度上都有所提示,价格较高,目前普及不高;6 r, }: C) \/ I8 h% h3 a8 z

: w7 P* d; ^. |. r. a- _ST-Link V2本身就是使用STM32F103C8T6设计的,因此只要下载原厂固件,结合相应的电路,就可以将开发板变为ST-Link V2。+ o& t  u% J7 [% C  n, M; v
2 O5 A& I; R# w- T1 U/ |0 R2 Z* h1 E+ b
将开发板的 “USB切换开关”拨到 “非ON”一端,然后插上电脑USB口。打开“100ask_stm32f103_tools.exe“, 点击“ST-Link”图标,完成下载,如图 4.4.9 所示。* H) w' }6 f( j" M

* s& L& H# y# S7 L- S( y$ t2 K W@~@Z3Z9[NWGG3)9XUW(L73.png
1 p! @6 ]( H6 W& b& z6 c8 J
: M6 z% s( P- G% G+ d$ h6 ~图 4.4.9 烧写ST-Link固件) [' z( a% N; m  P+ k
下载完成后,需要将 “USB切换开关”拨到 “ON”一端,然后重新插入电脑,点击“确认”,进行升级,如图 4.4.10 所示。6 D- X* i! ]$ Q9 B" k5 t
2 y# N5 T1 U( x7 T0 d* z1 w
OR~77$TFKVJQO6R%)FKB6.png
0 W: v. T; s  q2 d
5 Y" B9 y5 b$ x图 4.4.10 ST-Link固件下载完成$ z# c, ~* P0 g0 \
在弹出的升级界面,点击“Device Connect”进行连接,如图 4.4.11 所示。. E' r, @4 c% l+ q, r7 \; ]2 N
* ^+ B( B, `6 G
4Y[U3R~C_N)~VJ(V)ZHXZ6K.png 0 C$ ^4 Y, K' M& c4 u
/ R) h7 P6 l& R1 ?% p! T
图 4.4.11 设备连接/ i* |  w. @( I& @8 ?) e# E: E
连接成功后,可以看到当前版本为“V2.J16.S4”,点击“Yes”升级到“V2.J38.S7”,如图 4.4.12 所示。3 m5 g6 @" z: K, n# Y) I% O

( H9 c$ l7 ~4 m' Q5 s' z' U  R. p( ` 8Y9U{XX]YSN0]Q8T(G(E}EI.png 8 b1 G5 Q3 r! I
( J% R1 e1 {" {" g5 \
图 4.4.12 升级成功  A- J$ K  `1 L6 Z; z. X
升级完成,即可作为ST-Link V2使用。; V$ U8 U" h/ x: a( v
/ w. k& x+ u* l, ~8 W
7 x) n) ~1 T* V( s& z4 k' F
连接100ASK_STM32F103_MINI开发板使用
# y: A/ l: ^& j! P) N% I2 M9 D& _6 C8 @$ `
对于100ASK_STM32F103_MINI,在设计上做了兼容,直接使用定制灰排线,按如图 4.4.13 所示连接,即一个作为ST-Link调试器,一个作为开发板,对后者进行调试和下载。/ Z  M% G+ ^5 j6 [; Z6 z3 i' Q! j

# x) ?( i% [- J BWHDMCQ~K{E[BQ@H0F1EV.png / d6 S% \+ r9 y# G9 }
! }3 {  @4 I& N$ w3 Y& q
图 4.4.13 连接100ASK_STM32F103_MINI开发板# a5 P, x2 Y9 ~3 F7 ]& K9 a4 o
l连接其它STM32开发板使用) G9 C* E1 V1 j

9 B' C' L# u- i连接其它STM32开发板时,使用如图 4.4.14 所示的“3V3”、“GND”、“JTCK”、“JTMS”,效果如图 4.4.15 所示。
7 ^* t# V& G4 h) w  p' u
% C5 w: B: g7 w# R5 y ABP$OHKM`N%P7X@0CE3}%EQ.png
+ D; A& W" Z1 Y0 s/ Z9 M4 v3 e
4 _$ E5 v4 k8 L) h+ u图 4.4.14  ST-Link下载引脚
, u( t: X% G! R0 t" ]- h0 y
# }$ e, I; F5 d 6I54Z$P(YNF0~7{BCA545@K.png
; ]2 j4 C0 w& f% v. u: p. j4 L; z0 _' p& k& w1 e
图 4.4.15 与其它开发板连接实物图
; H$ N7 d4 b  X. B# r3 N& D" a! V, L/ @
, S  s( }8 N: P
1.4.3 ST-Link调试下载1 U. N/ m; I3 M/ z$ @
将ST-Link与开发板连接好后,可以直接点击   Download下载(快捷键F8)。. m$ o6 Z' v% S6 S
/ @& S9 u& j3 e- }  n; z1 n# U& c
有了ST-Link除了能下载,还能调试,比如前面串口下载的点亮LED程序,可能需要逐步执行排查问题,点击Keil的Start/Stop Debug Seesion按钮,进入调试窗口。' E6 D: a1 c: X  r% R" K& U1 Z" k% @

  w9 w( g% u" w/ @. ?) k- `7 U. D* J默认的调试窗口界面如图 4.4.16 所示,可以大致分为五个区域,如图 4.4.16 所示,其中功能菜单区和用户代码区,是我们目前初步需要了解的,其它的读者可以网上查阅资料,扩展阅读。在功能菜单区,圈出了三组按钮,第一组是控制调试运行状态的按钮,第二组是控制各种调试窗口是否显示,第三组是前面介绍的断点添加工具。+ [' K% e+ \# ]8 C) N1 T
( |/ j# e' }& R3 I
HP]TG3MHFM24)9`Z{(K[7.png 3 N( r+ a; V9 }) S, |! u& L
8 i$ n! Z% Y7 d" k
图 4.4.16 Keil调试窗口; T3 X- R9 [8 p; t1 R+ T) \5 g0 {
这里重点介绍下第一控制调试运行状态的按钮:, ^$ A2 J. k9 z) Y" ?
4 N) A! g$ z: N+ J% t
Reset:复位,让程序从任一状态变为初始状态(跳到Reset Handler);
9 {7 D3 b# o: x: s& _; h- n/ z: d: p% j7 U8 s2 d* f
Run:运行(快捷键F5),让程序正常运行,遇到断点会暂停在断点所在代码行;
4 W' C$ v/ g/ |: D% m" g' d) U* a9 V2 a
Stop: 停止,当程序在运行时,可以点击该按钮停止运行;
' t0 ^- x( N% \  @  K  a; f$ Y
  u# ~# s) q7 \  f; B$ _Step:单步调试(快捷键F11),每点击一下,执行一条代码,遇到函数会跳进函数执行;
4 b- z. I5 z; b; S% m( t, {+ j" t
+ g3 s  F& b: l' sStep Over:逐行调试(快捷键F10),每点击一下,执行一行代码,遇到函数不会跳进函数执行;. n6 n' U2 x9 a  I7 w' [! j6 g8 E

+ \  |) R: L3 @. S$ f8 i) a/ E3 KStep Out:跳出调试(快捷键Ctrl + F11),每点击一下,跳出当前函数一次,直到跳到最外面的主函数(main函数);. L  J3 V3 F& I( Y) |4 J! P
! K- B. k- \3 s+ F# Q6 W
Run to Cursor Line:跳到光标所在行调试(快捷键Ctrl + F10),点击一下,运行到用户代码区的光标位置处停止,前提是光标所在位置能够执行;/ O+ _" ]1 Q6 T+ [/ u) v
, R/ [9 }7 b4 M% n9 Q
Show Next Statement:显示下一条语句,当打开了多个文件,不知道程序暂停到何处,点击该按钮可以跳到暂停处;9 W* d! W# l5 v

( R5 p8 l6 q/ l注意,每次修改代码后,都要按下Build(快捷键F7),重新编译修改后的代码,这样调试的才是修改后的代码。, s% P7 |9 n  a$ E2 z% N( y; w5 C

% ?3 v# P9 a9 p, q9 ?5 c5 V2 ?下面来感受下调试,在前面下载程序时,体验过“2_GPIO—LED点灯”实验的效果就是蓝色灯间隔一秒交替闪烁。
$ b5 P& X. D6 M. \. N4 _( T" ]* C% u
进入调试窗口后,用鼠标选中“main.c”的28行,此时点击该行左边灰色方框处,或者点击功能菜单区的插入/移除断点按钮,就会在灰色方框处显示一个红色实心的断点,同理在30行添加断点,如图 4.4.17 所示。
: G" D0 L* N: r9 ~8 \/ U4 y
1 v6 y: @& D: S' K6 \同时,在18行左边有两个小三角形,蓝色图标表示光标所在的行,黄色图标处为要运行的下一条语句,可知此时程序暂停在18行处,还未执行18行。
5 w$ Q. ~( Y' H5 ]0 m* T% A0 _9 d2 j  Y2 \& O3 Y
DX4[}II)2ESH_[5XLXJ3ZHD.png
9 N$ t! u) n4 i6 K
, }9 l0 m5 p% L3 H6 }& b0 f6 z5 T图 4.4.17 添加断点
9 T  n- b- e0 _5 F4 |/ u9 n% E( B接着按下Run按钮(快捷键F5),可以看到小三角形跳到了28行断点处,表示现在停在了该行,因为还没有执行这一行代码,所以蓝色灯还不会亮,如图 4.4.18 所示。
2 ?0 X7 u. W) H) K+ K# u" \: z5 n& b$ _& V/ f. H
8R0XHH@BYM[]8ZK]8WZ~Q{X.png 3 y/ e: k1 t8 S6 n
0 Q' N1 F; w3 D, ?; T! e
图 4.4.18 断点1
! ?* i. A% }, @1 S% c' i) R 接着再按下Run按钮(快捷键F5),小三角跳到了30行,此时观察开发板蓝色LED灯已经点亮,但还未执行30行关灯代码,如图 4.4.19 所示。
% f/ b- u( Q3 C( N$ l7 J
# [3 Q& V. z5 F }{Y[@3TISKIXS8Q`N9~TGR5.png
" f6 |  I# a0 E
+ W4 G$ {. w& j: t图 4.4.19 断点20 m1 B" }9 r! ?6 m8 V
再按下Run按钮(快捷键F5),因为循环的缘故,小三角又跳到了28行,此时观察开发板红色LED灯已熄灭,28行点亮蓝色LED灯还未执行,如图 4.4.20 所示。
4 A" O! }8 o  ^% ^8 l
( ?( J+ X  }- b& K; q& h1 A5 T RM@WJ67(EVJ5DHIJDP{IKM3.png
& N( y. V$ y" G) D5 r9 Z
( u3 h6 Z: |# i& [+ `! Y2 Q2 W7 p2 _图 4.4.20 重复断点1+ M" L# B" a) p! l; S
通过调试,可以控制代码一句一句的执行,从而方便观察现象,排查问题。当然,调试远不止这些,实际开发中,还会查看寄存器值、变量值等,这些在后面实验中需要用到的时候,再详细讲解,目前读者只需要了解调试概念、基本操作方法即可。 % \' s' e% T8 C% R

% x7 ?& z. I* P, k
" l+ \. ]7 Y+ `; a$ w9 a) W$ t: S$ |; X5 h' i4 f/ ]' U. N: Z$ a
M(XU([I6YWZPD{BVUB`_A`R.png
收藏 1 评论0 发布时间:2022-4-27 10:44

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版