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

STM32经验分享 第4章 资料下载和环境搭建

[复制链接]
STMCU小助手 发布时间:2022-8-30 12:38
1.1 资料下载和介绍' a  i- ~0 J- U0 N( r+ o# K( D+ U

' E. l: s3 x" e0 Q% M' a# K1.2 原厂资料的下载
5 x  f; ~( b; ]) E, L前面“2_原厂资料”文件夹包含了本小结所介绍下载的资料。本块内容单独提炼出来讲解,是希望“授人以鱼不如授人以渔”,让读者明白这些资料该从何处下载,以后实际开发,换成了其它MCU,方法也基本一致,也能自己下载这些关键资料。2 r( g/ K) E, Y  x

2 a7 z) C. @) b) ~! D" r$ i" k对于几乎所有的MCU,都会有数据手册和参考手册,这两个手册必须下载。
! E5 w. U. |- k
* K6 P9 s% S4 g4 l( l6 D) [对于STM32系列的MCU,通常还会有Cortex-M3/M4编程手册,闪存编程手册、勘误手册、原厂固件包示例源码、原厂固件包用户手册、HAL库用户手册等,这些资料根据需求下载。
0 J& [5 K7 \6 g6 s2 {. R, c8 X5 j0 d) J1 C- R
对于Cortex-M3/M4架构的的MCU,如果需要深入了解Cortex-M3/M4内核,还需要Cortex-M3/M4权威指南,这个供读者深入学习。
# t' K3 {$ p" e9 ]2 A6 O( E% x" |+ m- W
       首先打开ST官网,在搜索框里直接输入“STM32F103C8”,点击“Search”,如图 4.2.1 所示。注意,ST官网在不断优化,本手册截图基于当前页面示意,读者根据页面举一反三,灵活变通。- N6 p7 l9 l' |, O- d4 ]5 ]1 [
N(G(ZQ%YE(N(D068{VFE1ON.png
, O$ n/ t" v9 L4 O2 O
' h5 B# Q2 C! A: c& I3 u$ l
图 4.2.1 输入所需MCU

' s$ _5 X- Z8 \: M) Q" o* x# f随后显示该搜索条件匹配的产品,如图 4.2.2 所示,可以看到只有一款产品符合搜索条件,点击该产品进入详细信息。, r  C: B, J/ A+ R* P, n2 x

' ^# D8 ]; u0 L; J$ J9 g# M
)I`DA](8HJWH~TIGX5@QHWH.png
4 ~; Y9 @* U. o; M8 Y  m6 ?( V
1 g, c7 B  K. r; W4 X4 R" p% X
图 4.2.2 搜索结果

  D7 `; B, ^9 B% F
5 E) i" }& S5 v/ G5 h
* g+ u2 J! ]$ p3 p/ X在产品详细页,切换到“Documentation”标签,可以看到该产品的所有文档手册,如图 4.2.3 所示为部分截图。
) J& L# k) d' m  p# o7 y9 g( j- F; w
“Product Specifications”(产品规格):也就是数据手册,包含该系列MCU的整体描述、引脚描述、内存映射、电气特性、封装信息、订购信息等。在芯片选型、原理图设计、PCB设计、代码编程等开发环节,都会需要该文档;7 m; S( T5 m! M# T7 R* P1 n

" Z) z" V" X" y“Reference Manuals”(参考手册):包含该系列MCU各外设寄存器的详细描述,在代码编程时,需要找到对应外设章节,仔细阅读;
9 H" O5 S- B' I! X1 j1 R! s! o$ s, v: @/ M# W4 Q
“Programming Manuals”(编程手册):包含闪存编程手册和Cortex-M3内核编程手册,一些资源是在内核里的,比如NVIC和SysTick,此时在参考手册里找不到相关寄存器信息,就需要在Cortex-M3内核编程手册里查找;
* h- r( d/ y& z4 M# R$ O' E* o% a" q: G  \& f+ W3 |/ H
“Errata Sheets”(勘误手册):包含该MCU内核、外设资源的限制,解决方案等,在调试中出现了bug,可以看看该手册是否有类似记录;+ Q: C" X* u: i, g* y; s7 |( `$ ~
7 s% ^% e) U& j
{%%PDD${`71DDYL80}LY2.png

3 |0 @0 A1 i' Y6 c
* V) X/ w1 i& B& I; ^8 Y  \
图 4.2.3 STM32F103C8系列原厂文档(部分截图)

' n7 G/ w7 X: i# J, r 除了这些文档外,通常半导体芯片制造厂还会为MCU提供一些示例程序,ST也不例外。在前面的产品详细页,切换到“Tools & Software”标签,可以看到该产品的所有工具软件,比如各种硬件开发工具、软件开发工具、元件模块、评估工具软件、MCU/MPU嵌入式软件、产品评估工具、解决方案评估工具、工程服务、培训课程等,如图 4.2.4 所示为部分截图。
% M1 l% ]7 `: ^; K. P
9 \2 H0 M% |; q4 z7 j8 P
R)`IIA]{6FG@C`3LX35{MS1.png
: W/ G2 F, g" D' {; x* O" C8 R
0 J; r  P+ i# W3 W  G. k+ e
图 4.2.4 STM32F103C8系列原厂工具软件(部分截图)
7 [3 E3 A1 ]9 T1 f6 W1 `; u4 A
+ T" D& }8 P# f! C4 A0 E$ r

1 f* g5 u+ R0 b “Software Development Tools”下圈出来的几个工具后续会用到,这里先跳过。“MCU & MPU Embedded Software”下的“STM32CubeF1”就是包含示例的固件包。点击该固件包,进入详细页面,在“Overview”标签栏下,点击“Get Software”可以分别进入固件包、固件包补丁下载页面,如图 4.2.5 所示。
5 }6 E7 x5 n- C# x5 ?9 q1 u3 J1 P7 u" m" ]

- I  h* G4 A6 X' @
)}[}85MHK]IG83$Q2VY$Q.png
9 K% C/ A9 K+ s" B  l, f
9 C$ m- n4 ?; n
图 4.2.5 固件包下载

) r* f: j' Q& k- _  d% c" w4 w" t6 E3 ?& t% z

. J: z1 q$ \. S 随后会弹出许可协议“License Agreement”页面,点击“ACCEPT”表示接受,如图 4.2.6 所示。# B, N/ ]# ]6 u) Z% y

1 _2 ]& Z; s" N7 `
E_JR0CYTPC7K9TEB6J64S.png

! e+ }9 ?9 f) k# r# Z9 O, P# U4 V) A) u- G3 f& A  A
图 4.2.6 许可协议页面
, ^6 e& v/ }; p3 _; Q  [
接着要求需要输入个人信息,如图 4.2.7所示。如果读者有账号,或者想注册一个账号方便以后下载,可以点击右上角“Login/Register”登陆/注册下载。如果读者不想注册,需要填写个人信息和邮箱,下载链接将发送到填写邮箱。6 b, o2 g  ]' Z# s( q' ~

- S4 U5 x& c# l2 c
~D$Q~G1@LA_9BB1VG7,CU.png
( j% W( W& ?( l6 [. R) W

! ~' H9 B0 A* S9 O$ O2 l+ I
图 4.2.7 填写个人信息

9 b1 ?2 r$ x* D1 H" g ST还提供该固件包的详细说明文档,切换到“Documentation”标签。在“User Manuals”下可以看到“UM1850”文件,该手册详细描述了STM32F1系列的HAL库和LL库API,非常重要,后续会用到。“UM1847”文件则是该固件包的详细说明文档。除此之外,还有介绍LwIP TCP/IP协议栈、RTOS、FatFs等文档,如图 4.2.8 所示,读者可根据需求参考。" M' w* k; w. @) m1 f1 a

0 }' t& X7 a6 h- D
85Q}PX0))]SH6%3`CTS48VW.png

+ w3 \0 m3 P. B( X, V% Y1 X& [8 m! ]: ~: }
图 4.2.8 固件包相关文档

# S& I) N% O$ W) p最后,再简单介绍下固件包所包含的内容,供读者参考,固件包内容结构如图 4.2.9 所示。“Documentation”:里面是本固件包的详细说明文档;
7 g0 H; S7 Q" `% Z* k+ g( m) \2 M# V' A: u
“Drivers”:7 E( j% w7 S8 \, ]& U* L
& L* m( L: _: c4 K$ u0 p
“BSP”:板级支持包(Board Support Package),适配ST原厂的几个公板;
" W; d0 s0 k8 n$ _. h“CMSIS”: Cortex微控制器软件接口标准(Cortex Microcontroller Software Interface Standard),包含STM32F1符合CMSIS标准的软件抽象层相关文件;
+ G4 W4 T) \) l8 |% N“STM32F1xx_HAL_Driver”:ST提供的HAL库驱动,方便快速编写程序;! E7 F( S5 o  w
# n% j3 b+ o8 h, f2 S+ o! _' @
“Middlewares”:" @# q& f( ?( f( t6 r  {9 }8 o

: O9 g3 G& M2 U: K“ST”:ST提供的图形GUI库“STemWin”、USB从设备库“STM32_USB_Device_Library”、USB从主设备库“USB从设备库“STM32_USB_Device_Library”;
4 P2 N$ o7 A9 M6 l" e; @6 k1 x! f* ?2 s“Third_Party”:第三方提供的文件系统库“FatFs”、实时性操作系统“FreeRTOS”、网络协议栈“LwIP”;" b9 x' f4 R2 j; ?, I5 J
“Projects”:以ST原厂公板为载体,提供的外设应用示例,比如GPIO、UART、ADC、RTC等;
/ d9 m9 p" T- R8 k“Utilities”:一些字体、日志、多媒体等杂项示例;; t- V4 B& B! G

# f& E9 C$ f) j. P' J
LVLH}KBI8E6~UI]9]T`1QAG.png

. M5 j& E" g" i0 w  `) h1 Y  e2 @- [9 n3 ]
图 4.2.9 固件包内容结构
; F" U8 `3 T) K9 t
【总结】
  p7 k2 \& o/ L/ t' q( T4 B( E
' M' ^, ~2 ?0 c! z2 n如果读者以后开发其它MCU,在没有现成资料的情况下,可以先去MCU官网下载对应型号的数据手册和参考手册,再找找是否提供相关集成开发工具(IDE)和示例程序。加上硬件的原理图、PCB丝印图等,就基本可以完成相关开发了。
& r1 d, f/ R0 a8 B* L+ F( ?6 w, }2 D8 M( y) c
原厂提供的资料文档众多,有些文档甚至页码上千,读者不必担心,这些文档不需要一口气看完,只在需要的时候搜索相关关键词,定位到对应章节,仔细阅读即可。+ j. O5 R) B7 v
2 s4 n* a- P+ h0 S) r' P, V( y
3 Y' a! @; D# W) k* B% K! ^
1.3 开发环境的搭建4 G5 Z1 }$ x$ W6 u" E! `. A& v
1.3.1 交叉开发
! T1 u5 {0 ], z& S嵌入式系统开发不同于通用PC系统的开发。通用PC系统拥有强劲的处理器、充裕的内存和硬盘,且有鼠标键盘输入,显示屏查看,是理想的开发载体,因此PC程序也就直接在PC上开发。而嵌入式系统往往资源有限,输入显示也受限,不适合作为开发载体,因此嵌入式程序通常不在嵌入式系统中开发。而是将嵌入式程序放在PC上开发,然后将生成的可执行文件放在嵌入式系统运行,这种方式就叫交叉开发。2 L+ o) r& R0 X- @9 D
% i7 L+ s) j7 `# ~2 r3 J1 L" C
交叉开发通常由三部分组成:宿主机(Host)、目标机(Target)、连接宿主机和目标机的工具(调试/仿真/下载器)。宿主机指用于开发程序的平台,这里指PC电脑,借助电脑上的开发软件,实现程序的编写、编译;目标机指程序运行的平台,这里指开发板;连接宿主机和目标机的工具通常有串口、J-Link等。三者示意如图 4.3.1 所示。! b' |! S, W+ T/ W% Y! b9 P( n6 B
; c0 A# r, B" Y/ C. x
B@WBWTRR}BDX4E0B%OI1GFS.png

1 P2 W% q5 C0 F4 w% `1 a. C
( \% R4 c& f, c% e+ t
图 4.3.1 交叉开发示意
; k; c: p9 H0 t) [4 r; }3 ?! Z
嵌入式开发通常分为六个步骤:编辑、预处理、编译、汇编、链接、调试和下载。每个环节都需要相应的软件实现,如果将这些软件集成在一起,就叫集成开发环境(Integrated Development Environment,IDE),如图 4.3.2 所示。) k. N) {5 P' s, c6 u

0 A. \! W6 k- e  i4 w) o$ p
8]1]QS1II%HG4`9AIBS~NO4.png
7 ~9 g- [! s; j$ E, e. S, v

, ^& Z; u2 ?( Z3 {+ ^" t% e
图 4.3.2 嵌入式开发流程及所需软件

' c7 F2 G2 B4 l. u2 r. k实际开发中,除了使用调试/下载器进行调试,还会用到串口打印显示信息。对于STM32开发,所需的开发工具如表 4.3.1 所示。因此我们需要安装两个软件(IDE和串口工具软件),准备一个调试/烧写工具。
- e: R' y  K7 h
6 b, }9 p; c$ I( n
{07%3}~K2WROL]SIJSROHGN.png
7 k) J7 @6 q3 Q! E+ H* b

0 G$ N, C( k2 ]8 x( i/ K" o1 H8 _/ Z3 z% |2 Q/ `

, W! s8 {% k4 K/ c' a综合实际开发情况和软件收费限制。对于集成开发环境IDE,本手册选择Keil,使用最广,读者熟悉之后也能过渡到其它IDE;对于调试/烧写工具,本手册选择ST-Link示例,功能够用价格便宜;对于串口工具,选择MobaXterm,免费够用。7 z/ f; q( ~6 y
- e' E( i+ ~+ @1 w- f8 c; M& i
对于100ASK_STM32F103_MINI开发板,在电路上设计有串口自动下载电路,可以使用配套的100ASK_STM32F103_Tools工具,通过串口下载程序,免去J-Link/ST-Link等工具,在后面“4.4.1 串口直接下载”再介绍。+ E  x) g# w: _8 E! x- s
1 g( q& \4 p* U2 M: o8 H
% B& s1 t4 P0 Y: r, D  a( |
% K$ t5 C/ J; U3 `3 S% q
1.3.2 下载、安装Keil
, ]# D$ m/ C: d( bKeil-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 所示。; F7 J. P7 E- O  S

1 K: {9 P& ^, Q7 M
5ZB%QECUCAE7%4LU88~[N10.png

' G, v" a6 q  z3 d" N8 F
# v. @. i1 {1 G1 R# N
图 4.3.3 MDK-ARM下载页面

  _1 u4 W4 D: ?: P 随后进入个人信息完善页面,按提示填写所有的信息,如图 4.3.4 所示,填写完后,点击“Submit”提交。+ R4 x6 K* F' y, y/ F

5 d) _# f, ]. i/ `. j5 ^
LE4ZD{7CV4S((CD6{O56Q@4.png

4 E+ C9 n: _4 o0 C' K  s# C6 \& w% d: a8 h1 a2 @- _% J7 D
图 4.3.4 填写个人信息

1 F: j9 s, Q$ ^随后进入下载页面,点击“MDK532.EXE”即可下载,如图 4.3.5 所示。, }. Z. O7 i" t* f

5 y- \' m; q: k* q  B
EJD0PP6E~_QPHHAWK_F`}9F.png
* h1 [! |! J& Q. ]; W8 G$ o7 L

; M2 E# i/ u7 E. r' f
图 4.3.5 MDK下载
5 n1 R1 C) r" X( w* c
下载完后,点击运行该文件,进入安装界面,选择“Next >>”,如图 4.3.6 所示。- ]: t4 a, r) k

! [$ {" g) M! a4 y* l0 q
BKV6L6J[}GM95~86HHF7`B4.png
# N$ O* f8 a) b& A0 f% o  J

  H& h9 {+ L* ]! Q+ G! c
图 4.3.6 Keil安装界面
6 [/ E- E& J0 x; P
接着进入用户协议界面,勾选同意协议,点击“Next >>”,如图 4.3.7 所示。
$ N+ G) X5 _; h9 X  Q$ n9 T  x. D- n0 m& J- N5 }1 d
7`}P5YZF~[D9R2%{I2T$%EI.png
/ `8 d/ m- H1 Y0 h3 s  y

( }$ Z4 E, m% c/ }* z) q) k. i
图 4.3.7 Keil用户协议
, K3 [% G$ y6 l6 N6 ?
然后设置安装路径,第一个“Core”是软件的安装路径,第二个“Pack”是芯片的硬件支持包的安装路径,读者保持默认路径或者设置为如图 4.3.8 所示一样的即可,如果是自定义设置,建议为全英文路径,不建议为包含有中文的路径。选择好之后点击“Next >>”后:# v' v5 f6 X: h6 J% f, j
6 y, c2 R4 Q) H% C' ^5 f
A7LBGK2PPYNBEHM5FA_Z4.png

) _& s  s! n' {5 H, z  B$ g9 |/ P5 j
图 4.3.8 设置Keil路径

/ w! [; n' ?% f. S$ A' b) o1 r随后需要设置个人信息,随便填写即可,如图 4.3.9 所示。0 Z% X; V4 F5 X( F- p+ K" }' F
  z; k+ W9 n" p9 y* s0 K/ f" Q: t
[2B0J[NUH2GJUFIT$OKH_HV.png

& b$ ]% g& d# f9 Z6 A8 l+ X
4 O! r, l7 t, K" \: o8 V/ q
图 4.3.9 填写用户信息
% @- r. F* c) _
之后便进入安装进度界面,如图 4.3.10 所示,等待安装完成。7 Y) t. s" m$ V! S# V% S- d# ~+ i

4 C4 l* S, D* g" `# ~7 X( ~
Y6$@%]9E%SV9QHB)4@8EQZ5.png
1 M5 q: `2 ~2 U2 r
. q0 m7 A/ p! {% f2 v( ^
图 4.3.10 Keil安装状态
3 f4 b4 X/ \; r/ {8 {4 l' \
安装过程中,回弹出驱动安装界面,勾选“始终信任来自‘ARM Ltd’的软件”,然后点击“安装”,如图 4.3.11 所示。& Q4 L2 h9 u' e0 G$ d/ s, }

* u- h8 d/ |# ^1 W- P
8WA6]5~){]6T7{]V4H{I3.png
# W  {1 |1 [% Q# g0 O
4 \9 s9 d% f( ~
图 4.3.11 Keil驱动安装

3 s5 O% G1 m  W: O' D如图 4.3.12 所示即安装完成,“Show Release Notes”为查看当前版版本说明,可以不勾选,最后点击“Filash”。
- j5 g6 _; D+ W# E, i
$ V: {% w! G) }8 d2 E+ w, l
DGK]JFSA0)ET999DINGY`8N.png

" N: J1 P! a6 ]# ]+ M# h5 }4 G4 }4 }" U# w* s9 s) E2 X
图 4.3.12 Keil安装完成

( e) @9 v% F: {- g. N, K之后会自动进入“Pack Installer”界面,这里会检查安装的编译器、CMSIS等是否是最新的,由于我们安装的是官网提供的最新的MDK,所以这里一般情况下都是不需要更新的。
; C1 [" @/ d" ?2 B
& C% K1 o9 p& _, Z/ z至此Keil就安装完成了,但这不是Keil开发环境的全部。一个Keil的开发环境,除了Keil软件,还需要安装对应的Pack,比如这里目标机的MCU是STM32F103C8T6,就需要下载该系列的的Pack,如果是STM32F4系列,就需要下其它系列Pack。' B" c: e* j. t" ^

; G5 d' ]3 Z: Y5 N0 h5 s使用“Pack Installer”可以方便的对Pack安装和管理。在左上角搜索框输入“STM32F103”,展开搜索结果,可以看到STM32F103C8,点击右边的简介链接即可跳转到Pack下载页面,如图 4.3.13 所示。如果跳转网页无法打开,可直接打开Pack下载总入口。进入Pack下载总入口后,找到“STMicroelectronics STM32F1 Series Device Support, Drivers and”,点击右边的下载图标即可,如图 4.3.14 所示(部分网络环境打开该链接无Pack列表,请尝试换个网络环境测试,仍旧不行则使用配套资料Pack)。
' {9 C3 w# J" e1 ?0 j& C  k
, s: @8 \5 r- U; o( m/ v
{VXX4@@5G7EY0M6AEJW_MWH.png
( R# G8 \1 ]5 ^
7 C. {* U: m- O2 d
图 4.3.13 Pack安装管理器
* w* q% \6 j# @! C
5 O: ~5 H8 H3 E
5I(P}1GBSHWFK{GR`UQZ(}B.png
# X- O5 ~7 e: J# ~: S- S* G
3 T8 H$ n1 \5 H. G
图 4.3.14 STM32F1 Pack

+ N% N; |# [, A下载之前会弹出Pack用户协议,点击“Accept”即可,如图 4.3.15 所示。  S) U2 R: Q) Z0 ?' }/ c8 C( u

4 a" G& B5 ]/ y) @( S' {6 c
L2M9}6E7[LZ_CIG9~{PFJ%E.png

/ J5 W# [2 K, L% I' l
/ ~' y& t2 N+ h5 ^+ s- b4 ^  k
图 4.3.15 Pack用户协议

$ z" o$ D$ T8 _. o/ C1 T$ C* X7 ?下载完成得到“Keil.STM32F1xx_DFP.2.3.0.pack”,直接双击该文件,随后弹出如图 4.3.16 所示界面,点击“Next”进行安装。* J( U) b, a' t

9 s9 Q+ Y" C. l2 j9 l7 }1 n6 @/ S+ T
}6BWSO5$PI~V0O}6N4`VE.png

* m& q! }. ]' R- E
: _7 l) J6 t% t% l1 s
图 4.3.16 导入Pack

/ K7 @- Q* g( s- y+ B$ I0 x9 V4 _本开发板使用ST-Link进行下载调试程序,还需要安装ST-Link驱动。首先从ST官网下载该驱动,或者直接使用配套资料里的ST-Link驱动,路径为“3_开发软件\1_涉及的所有驱动\ST-LinkV2仿真器驱动\en.stsw-link009.zip”。0 m! W3 t1 e$ c% i7 I$ d
% w. m! u. C5 I/ B. y
解压“en.stsw-link009.zip”,双击运行“dpinst_amd64.exe”(如果电脑为32位系统,运行“dpinst_x86.exe”),出现如图 4.3.17 所示安装界面,点击“下一步”。# S6 P) a. P; I1 h4 O1 M9 V

: V6 ]$ G+ Q# }0 _$ w% \
]59{EVBO9E@M3L`5VE49~5C.png

$ \% d% x* Z) l# u6 `
, G0 E; d4 |1 ]' k# f
图 4.3.17 ST-Link设备驱动安装界面

2 ?( U$ x# e5 x% D# S 在安装过程中,出现如图 4.3.18 所示的Windows安全警告,选择“安装”。
0 \5 v! p' U* S4 k9 d% q1 t/ q2 ^0 X$ U
B[OS5$PC@X}D}LSMHUIAM[B.png

% R" R; ?5 n+ `2 u1 p) _: ?' u; g5 y/ G/ \
图 4.3.18 Windows安全警告
- i! _9 d5 C) S( q. P
最后安装完成提示如图 4.3.19 所示,点击“完成”退出安装程序。; _+ k+ K; k# ]( w/ ^% [# J

8 |1 h0 {# k7 s- `0 Z$ s5 }
MPV43V%]U51LTIT@$JZAKWK.png

9 G9 H! M9 m! d0 H* t2 d- M7 x% J" f/ |
图 4.3.19 ST-Link驱动安装完成
! {; U, C9 H6 |* I% A$ t1 {
至此,针对本开发板(STM32F103系列)的Keil开发环境,配置完成。
; ~1 ~0 b: R9 S. {
$ K2 v$ {$ ^$ n# Z, S7 z+ Z1 Y; p' F" b& W6 S
1.3.3 下载、安装MobaXterm
2 \/ l! d9 y4 z' l0 l( O, N( q+ R实际开发中,常常使用串口的输出信息来协助调试。通常的串口连接如图 4.3.17 所示。开发板的串口(TTL电平)引出,通过USB-TTL串口模块,转成USB信号给电脑,在电脑上还需要配套软件才能显示信息,也就是这里要安装的MobaXterm。本开发板的USB-TTL串口模块集成在了开发板上,只需要将USB切换开关,拨到非ON一端,然后插入电脑USB口即可。% c3 M+ G3 l: c6 B" [

, V" E. E6 r1 t! q' \
P8P]~W1VHQ5S5A4OTF0ZVW8.png

- z- W) D% n, k" U# E! Z
& X  C  m; s" I3 {
图 4.3.20 串口连接示意图
9 z! `; }9 d6 G5 B/ T7 [
目前还用不上串口,因此不需要接线,只需要将串口工具MobaXterm先下载、安装即可。打开MobaXtrem官网(https://mobaxterm.mobatek.net/download.html),如图 4.3.18 所示。Moxtrem有两个版本,“Home Edition”(家庭版)有功能限制但免费,“Professional Edition”(专业版)无功能限制但收费,这里选择功能够用的家庭版下载即可。
; k  ~+ u) G$ H' Y3 S9 V# _6 a" B/ ]9 l
BEV`@6UEAY~8R(6TDT5MO.png

$ n2 G/ \& B6 X( p/ N
; t& f" H# a4 N, T8 K
图 4.3.21 MobaXtrem版本选择1

5 t$ B( ~; _* Z5 J- f8 Y5 x. [: b* `' n接着跳到家庭版下载页面,又分两个版本可选,“Protable edition”(便携版)无需安装,点击即用,“Installer edition”(安装版)需要安装才能使用,这里选择便携版即可,如图 4.3.19 所示。
% t% Q8 T+ `9 u. A- R7 y; F7 F$ y: Z; X1 i  k
A25W16YX]4F)`R]ZCM7BP3L.png

8 T: g+ n! |  N8 P; @' R/ ~; W' U7 O. ?* g9 ~$ A! |1 G
图 4.3.22 MobaXterm版本选择2

8 x4 @- w% M; u# D. e下载得到“MobaXterm_Portable_v20.4.zip”,需要读者解压到任一目录,解压后如图 4.3.20 所示,以后点击“MobaXterm_Portable_v20.4.exe”即可运行MobaXtrem。% ^$ }  m" I+ P& I% s" t

: S$ H% P& }8 Q+ p% ]
L7{TQM1AB7B{T(RBX`CRS{1.png
# ]; B! s' r* L5 k& y( D

+ e% ?8 O, z8 y8 {) G8 Q7 s
图 4.3.23 MobaXterm解压后文件

  H/ {2 ^/ n3 `1 n本开发板采用CH340G转串口芯片,需要手动安装串口驱动,解压配套资料“3_开发软件\1_涉及的所有驱动\CH340G串口驱动\ CH341SER.ZIP”,双击运行“SETUP.EXE”,点击“安装”,如图 4.3.24 所示。
& n7 m: {$ A" n
' J4 c" c! U& ]$ R
{46%3S3TC3@6QTC0CE4P6YI.png

9 L2 ]5 a. w% L$ Z; c4 z) f
" f  P) C) Y( j, G' }
图 4.3.24 安装串口驱动

% d7 j# P9 I, ^$ U/ y8 ^; {6 {9 N2 V- @9 B- X, ]
, V7 E& L0 W; m8 |* z! P' k
1.4 下载程序和调试$ Z' m) N8 Q0 ~8 A# u' j
在本章的最后,再介绍下如何下载程序和简单调试,以“2_GPIO—LED点灯”工程为例,读者暂时只关注下载和调试,对于代码内容、工程结构,后面章节会详细介绍。2 L0 }0 ^: t$ L6 z

: Y, B1 ]( ], f, m9 n! a1.4.1 串口直接下载6 E' F  X1 @3 [' _( E
开发板独创了USB接口集供电与下载一体,无需额外配件,将开发板的“USB切换开关”拨到 “非ON”一端,然后插上电脑USB口,如图 4.4.1 所示。" V5 `6 _& d, h" f: v

/ r- a; a+ F, o+ a! _  c- U/ d3 H
AFD~)25]Y%AVO`M1}C260A4.png

( ^( O7 {7 w2 m' b4 l$ D& r) h$ C% M1 n
图 4.4.1 连接电脑
2 E* I/ a9 @1 Y* h- z! x  X
确保按“图 4.3.24 安装串口驱动”所示,安装好串口驱动,此时电脑设备管理器,会识别到开发板的串口端口,如图 4.4.2 所示,其中名字为“USB-SERIAL CH340”,端口号根据实际情况生成,和本文可能不一样。
1 `3 p3 T0 e! i: K+ S4 e9 A. b$ {
" T) r) w0 c& X, o2 {  W; G2 O" A# M
YMQ6(AHKRMQZ%VB4@086{VY.png
" D; ?' |3 q* m: C. y
4 i1 B0 y1 {5 [/ j2 I
图 4.4.2 设备管理器
0 p) L. C) Y) B0 ?8 w( U
接着打开“100ASK_STM32F103_MINI开发板资料\3_开发软件\2_百问网STM32F103工具\100ASK_STM32F103_Tools”里面的“100ask_stm32f103_tools.exe“,如图 4.4.3 所示。: h. _! }5 p# A8 {1 K: n. }

! k$ ?; z( c1 r  s
X0_6S~7VKT6IN5%JA(S9V.png

! D9 u) x" h& ~) ~1 v0 Q  R/ U- y7 f; Q  B1 n) Z. u+ \) W" E
图 4.4.3 100ASK_STM32F103_Tools
/ T* V$ `0 x2 X( E7 }9 k' q
这里要选择编程生成的“bin文件”或“hex文件”,打开配套资料的“05_程序源码”文件夹,里面包含了所有实验涉及的源码,找到“2_GPIO—LED点灯”并进入,再打开“Project”,双击里面的“Led.uvprojx”,如图 4.4.4 所示。
+ m$ B# ~2 j- _! ?' x5 W. M( d
$ j4 E/ u; v" B8 [7 o4 D
_@`(%FTVED88Q{P_4F6K1L6.png
1 ]; N$ o# v0 |/ W6 S$ q( n* ^* e

% c" m3 E% I( t2 o/ @
图 4.4.4 LED实验工程

! z' L$ }' G3 I& W) k 接着会自动打开Keil,界面如图 4.4.5 所示,可以把整个界面分为四个区域:" J# K# _1 P# ^% N' d' W2 ?
( j8 f: Z) B- V9 H$ w
①功能菜单区:包含Keil的功能菜单,以及一些常用功能按钮;! j" a8 b2 j# c. t0 k

6 ~! ], k- @+ C8 Q) z②工程文件区:该工程所有文件的目录结构;% u) y' g0 n; d4 V# p/ z
' s; e$ `0 b" t
③代码编辑区:在工程文件区选中任一文件,将在代码编辑区显示内容,供用户编辑;
3 ^( v8 r8 G- G% I2 R' b; I# D
7 q7 L8 l) |9 F; b: W④编译信息输出区:显示在编译过程中的所有提示信息;
# z) `5 \# U4 B1 N
0 G4 r6 K# M$ U# @. t+ H2 Z
)S$F%H33]SK9{Y2_V7K%CM3.png
7 S+ s: `6 I# K4 E( {
% N" L1 l9 m, A. K" M' o: C
图 4.4.5 Keil工程界面
' I+ y, f3 q7 ?5 F
在功能菜单区,圈出了两组按钮,其中左边的一组与编译下载相关,从左到右,功能依次为:
8 V5 L! \# W8 M* m, F. ~0 m4 y  Q; [: `5 v7 O% N, e! n! x
Translate:编译当前源文件,只进行语法错误的检查,不生成可执行文件,用来快速查看修改后的代码否有语法错误;6 Q, n! ?, d$ ~6 x& o9 }. g
) r# Q/ e( J! A! S; @, j& I/ [
Build:编译工程得到目标文件(快捷键F7),这里只编译修改过,以及和修改文件有依赖的文件,也就是增量编译,用来快速得到目标文件;4 V* U* F! i/ F: r+ @4 t
; h) j6 h2 o! P
Rebuild: 重新编译工程,不管工程文件有无修改、编译,会对工程中所有文件重新进行编译生成目标文件,花费时间较长;
! p$ t. y1 j5 V* E3 Q/ H
6 P! C/ J! n5 Q% ?6 J+ D2 zBatch Rebuild:批量编译,当Keil存在多个工程项目时,用于多项目的批量构建、重建、清理等;
' P6 v) [) v5 Z* z7 n' T0 R1 f5 M3 Z2 W( M- _" ~  a  l  ~
Stop Build:停止编译,在编译过程中才能点击该按钮,用于取消当前的编译;2 ?# @/ V; j) x6 I4 A: W; Q  r
- i# B$ s. L) I4 S( f$ t* ?" J
Download:下载(快捷键F8),编译完成后,点击该按钮下载程序;
$ `# E, {1 d- N: W* U1 |
) i6 N# S9 Q# Q. w
4 k8 ~$ \, u( T5 M在中间的一组与调试相关,从左到右,功能依次为:
' `. z  l, f2 K
  ]& E; f  i! p9 C' H( M8 \Start/Stop Debug Seesion:开始/停止调试窗口,用于进入调试窗口,进入后会新增一系列的按钮,后面会仔细讲解;$ K5 g* n9 U2 ]4 f, P$ i8 L
. f. q7 w* M0 y1 z+ e
Insert/Remove Breakpoint: 插入/移除断点,在进入调试窗口后,选中想暂停的代码位置,点击按钮就会在该行出现一个实心的小红点,在调试时就会在该处暂停运行;
- B! V- C, T. X$ P& k* K
% n# f1 L" S, l5 l  UEnable/Disable Breakpoint:使能/去能断点,在有断点的代码行,点击按钮就会取消该断点功能,再次点击恢复该断点功能;
8 |" u+ W" s' ~$ |& e+ n( Q# |5 |- M  N( \# |0 h
Disable All Breakpoints in current Target:去能当前工程所有断点,保留了断点的位置,方便再次使能调试;
6 A/ D2 z- a3 m+ T" T
% N) X' {, o( e" D! Z2 LKill All Breakpoints in current Target:清除当前工程所有断点,整个工程不会再有任何断点;
' h- n8 T. v# H# f$ E- A+ V; |! P+ E, i5 r$ O
对Keil有初步了解后,接下来就尝试编译、下载程序。点击Build按钮(快捷键F7),便开始编译程序,编译提示信息如图 4.4.6 所示,可以看到提示“0 Error(s),0 Warning(s)”,即没有错误没有警告,编译成功。) G- C% z% H7 H. @: X7 u' b1 b

+ p1 e! N! |7 s  D. _: l
9{K3HR33DHDB7H8NK7DP72A.png
! r: b* C' ?" T8 _0 p8 _

/ H; D% S" N; n0 }
图 4.4.6 编译、下载提示信息
& ^* Y/ U8 L5 @1 [* |+ ^
编译成功后,将在工程的“Objects”目录下生成目标文件“Led.hex”和“Led.bin”,点击“100ask_stm32f103_tools”的“文件选择”,选择“Led.hex”或“Led.bin”,如图 4.4.7 所示。# H2 ]: B( p' ?/ S8 ?: Y( J# v4 a
* E3 o+ [4 I+ z$ k
C%6QPTWF4E%YU~9QX_AII.png

; p& K+ ^9 j4 Y% z  e# w% f6 ?. y5 S3 A2 v6 d6 ^
图 4.4.7 选择烧写文件
6 [) m4 U3 ?) Q9 J

! _: b# |6 L, M% E! w  C* g% ]' ?# Z& `, }. _6 k% R
点击“开始下载”,等进度条烧写完成,如图 4.4.8 所示,开发板自动重启,即可看到开发板LED闪烁。- u0 f) Z5 }7 A/ D: S8 P

+ P; G5 D! f5 \2 T+ g/ O
TPA6EZ~`7TJJDSDXP7FAVTH.png

" s& h# x5 S2 G! Y
# p3 R$ t3 b6 c# G/ O% {
图 4.4.8 烧写完成
) i) a3 o* Z' r( r! f( ~

. ~7 H% p7 ~2 o8 f! v' F3 s
0 \# D% _) {. x' F6 Q( u1.4.2 ST-Link V2
0 ^* C9 K( m  U/ l
ST-Link是由ST公司设计,用于STM8/STM32微控制器的在线调试器/下载器。目前为止,ST-Link一共有三个版本。
/ @- z% c- E1 S5 q. a% v7 N
+ W/ q; ?, N- ?. q: ?ST-Link V1:早期版本目前市面很少看到,基本被V2取代;) b# x- V8 v5 `

0 m. H' E$ O" j+ b4 jST-Link V2:目前使用最多的版本,能够满足日常调试需求;6 L, o7 x1 t8 g2 m1 k* C' ]
9 l- r5 S. ]8 ?) l3 a& Y
ST-Link V3:近两年发布的版本,功能、速度上都有所提示,价格较高,目前普及不高;
. s# W4 \: u1 Z) r
9 e  r/ [% U, a. nST-Link V2本身就是使用STM32F103C8T6设计的,因此只要下载原厂固件,结合相应的电路,就可以将开发板变为ST-Link V2。
4 J% H- O' o6 G
! W" t, _  h/ K2 l; Q/ {# c2 V将开发板的 “USB切换开关”拨到 “非ON”一端,然后插上电脑USB口。打开“100ask_stm32f103_tools.exe“, 点击“ST-Link”图标,完成下载,如图 4.4.9 所示。
' `1 r$ c- L4 Q% O, z, E' }+ k) \% I% Y* C2 H& A
C6N]MP2D6UVNY)WJ{Y{X{4C.png
1 t9 W9 o9 s, E+ p& u
: e4 n2 u# Y, H, n' Y
图 4.4.9 烧写ST-Link固件
8 t2 @$ V4 T/ l/ W8 J0 _/ V
下载完成后,需要将 “USB切换开关”拨到 “ON”一端,然后重新插入电脑,点击“确认”,进行升级,如图 4.4.10 所示。
7 x$ I" B( H/ O/ p) j& c
$ X" k0 N( j: P% V& a& a
09XY@_E8_$L)XND82ZHB94I.png
( G; U! n8 R* m$ n  H
. y# S/ v5 G* w$ _
图 4.4.10 ST-Link固件下载完成

( c. p" U- K4 U9 b 在弹出的升级界面,点击“Device Connect”进行连接,如图 4.4.11 所示。: f( `0 n: u( H  }/ O4 ^0 e3 W' Y

" ?: y( l) T* z' [4 ]- y
(%C_EB3P9(LM$)NTS43J.png

- @; K4 ?* N( e* k/ a' S/ D" k- J4 c9 W' `$ o
图 4.4.11 设备连接

3 y) {5 g4 x! m' {! q9 B连接成功后,可以看到当前版本为“V2.J16.S4”,点击“Yes”升级到“V2.J38.S7”,如图 4.4.12 所示。
. ~/ ]  a: m: ?
: ^' C9 L6 \. {9 P& c* [* M
ZDKP5CDQ`{192{YTGE2P)%3.png

9 M( C, @5 A* I5 O! l& r
' t* X2 `) s1 b/ d2 w$ Q: \: Z
图 4.4.12 升级成功
( n- `. ^2 a  R/ J9 j
升级完成,即可作为ST-Link V2使用。! S3 o9 C& n* D* T7 i4 t/ v1 y8 H& s

3 s: A0 B- j' ^+ w; H& Z, _9 d# e4 d. y- o! ^% l5 A- M
连接100ASK_STM32F103_MINI开发板使用
3 Y+ n6 L- l* Y. R" t$ D% y

! q. m4 |% @. {; m" O+ n$ T/ i( Y对于100ASK_STM32F103_MINI,在设计上做了兼容,直接使用定制灰排线,按如图 4.4.13 所示连接,即一个作为ST-Link调试器,一个作为开发板,对后者进行调试和下载。
% R) T) @, b7 U$ E5 e# x5 x7 G+ o0 b, r8 t
JSRKP9K~KPID2XF[U09FA~J.png
4 t3 h: V+ ^% }/ x4 I6 {! n
2 a& R+ j1 ]9 m: C5 O( Z
图 4.4.13 连接100ASK_STM32F103_MINI开发板

+ E7 ]8 V" k" g# Y2 R( Ll连接其它STM32开发板使用8 \& s& e- }8 a% t$ ?5 z/ _9 J

/ u1 R6 l0 l+ _4 P4 H7 e0 o连接其它STM32开发板时,使用如图 4.4.14 所示的“3V3”、“GND”、“JTCK”、“JTMS”,效果如图 4.4.15 所示。
. S( [+ m/ L. L9 V
: K7 B) J& [5 A/ v' T
A}VJNQ2LR2@PE33`F`5)82W.png
, d9 g3 r) N, \: {9 M6 x$ W
' ?5 H7 m3 y8 A1 a( C# C; \2 H
图 4.4.14  ST-Link下载引脚
9 ^5 g& v$ i3 j* K. R( Y7 M
* ~0 S' P3 k6 F0 T  T
[JY{}`G~98E(0CI](4S{4QW.png
% c$ [2 |' F& c) s2 o
% i) Q" @- F, q) \
图 4.4.15 与其它开发板连接实物图
$ k5 n$ r5 z  ]& M9 I

7 l- w" S6 a6 N, f: n, F' Z6 c* G+ o
1.4.3 ST-Link调试下载* |2 `; g& f4 |) e1 }
将ST-Link与开发板连接好后,可以直接点击   Download下载(快捷键F8)。0 a3 s# l( N7 Q9 J9 \& B% x
8 J* C2 u) u) t& T
有了ST-Link除了能下载,还能调试,比如前面串口下载的点亮LED程序,可能需要逐步执行排查问题,点击Keil的Start/Stop Debug Seesion按钮,进入调试窗口。/ p8 ^' Y8 p0 M$ |

+ W, T4 u: {" `! R: X$ j默认的调试窗口界面如图 4.4.16 所示,可以大致分为五个区域,如图 4.4.16 所示,其中功能菜单区和用户代码区,是我们目前初步需要了解的,其它的读者可以网上查阅资料,扩展阅读。在功能菜单区,圈出了三组按钮,第一组是控制调试运行状态的按钮,第二组是控制各种调试窗口是否显示,第三组是前面介绍的断点添加工具。
; E1 [  {5 H# p: L0 z. Q, R& R# L: C+ ~$ d
: L& J  j3 n) I% {' _; X6 H' p
5 j, e* l" a0 i
图 4.4.16 Keil调试窗口

% F& P: |/ C' a( f# t$ t) `5 l这里重点介绍下第一控制调试运行状态的按钮:
3 ^+ t  s7 p9 l! ?  _! s- L6 N( p' z5 W  h9 C' d
Reset:复位,让程序从任一状态变为初始状态(跳到Reset Handler);5 C' D& q5 i1 j1 o5 |! r# D3 w6 m; p
  c/ @- ?; ^/ `# z* V/ Y& T
Run:运行(快捷键F5),让程序正常运行,遇到断点会暂停在断点所在代码行;
  p; J) S5 U9 e4 y! Z+ n, s
& ]( Z" p3 p* d- n. JStop: 停止,当程序在运行时,可以点击该按钮停止运行;
* q- `. }% F8 _# F+ n1 j8 t+ V
4 w7 L: R8 r0 d' ?! wStep:单步调试(快捷键F11),每点击一下,执行一条代码,遇到函数会跳进函数执行;6 s& V' M8 f! V6 `- D7 j
9 O% P4 X8 s8 H
Step Over:逐行调试(快捷键F10),每点击一下,执行一行代码,遇到函数不会跳进函数执行;# A( X( Q9 j% I0 c& q2 Y. M2 S  u1 U9 a
, ?' A( @6 C  V$ w- q0 O
Step Out:跳出调试(快捷键Ctrl + F11),每点击一下,跳出当前函数一次,直到跳到最外面的主函数(main函数);( \5 b7 h( D$ h& L+ s
5 J' `# ^& s: U$ v" ~
Run to Cursor Line:跳到光标所在行调试(快捷键Ctrl + F10),点击一下,运行到用户代码区的光标位置处停止,前提是光标所在位置能够执行;8 h) r2 \, E, {1 `
8 v. ?2 v' t, M
Show Next Statement:显示下一条语句,当打开了多个文件,不知道程序暂停到何处,点击该按钮可以跳到暂停处;9 D8 m6 y+ M# w# F& f8 ~" ]  g
% T! J6 m) R$ u7 A1 ~; o: _, A
注意,每次修改代码后,都要按下Build(快捷键F7),重新编译修改后的代码,这样调试的才是修改后的代码。1 ^! Q  I4 P# o' Y) Y7 q/ w  j
7 K! D7 E. g+ u+ e
下面来感受下调试,在前面下载程序时,体验过“2_GPIO—LED点灯”实验的效果就是蓝色灯间隔一秒交替闪烁。/ d# c9 G1 s8 a* N; j3 e" V2 t

& T+ x; N  H6 _5 x7 S进入调试窗口后,用鼠标选中“main.c”的28行,此时点击该行左边灰色方框处,或者点击功能菜单区的插入/移除断点按钮,就会在灰色方框处显示一个红色实心的断点,同理在30行添加断点,如图 4.4.17 所示。0 b0 a% v" U. X0 N( R
; r$ }+ X# y6 l: U# C( w1 s, {
同时,在18行左边有两个小三角形,蓝色图标表示光标所在的行,黄色图标处为要运行的下一条语句,可知此时程序暂停在18行处,还未执行18行。
/ z+ j4 ~& G9 g# [4 R; Y7 s9 W; n, U
69H3R]%]{CFWVUN3QA@H31H.png
- J- v# m1 Q  R, a. @

6 o7 y& ?# l, a7 P$ O
图 4.4.17 添加断点
& X8 u. ]2 c+ k) {; v
接着按下Run按钮(快捷键F5),可以看到小三角形跳到了28行断点处,表示现在停在了该行,因为还没有执行这一行代码,所以蓝色灯还不会亮,如图 4.4.18 所示。
: K$ q5 E/ e+ o% t- \/ B% a0 H. o" y. c* \
4O4L{@)8U~`0([A2$A}V8~G.png

! W1 R- Q2 {+ J2 ~- _" t* C2 Z, Q% B8 O+ A7 }
图 4.4.18 断点1
2 Y. c; Q  ^) K1 d$ A/ ?
接着再按下Run按钮(快捷键F5),小三角跳到了30行,此时观察开发板蓝色LED灯已经点亮,但还未执行30行关灯代码,如图 4.4.19 所示。: G8 L8 F- D' T- G
: d8 ?- t& X2 P; U3 J  `: |$ A
{J]4(3%9RQK8}9MAMRBRL5V.png
# s& W1 X9 J1 Y7 O4 P% b: i
8 w6 a: Z& t" n, U9 j- V4 U0 l
图 4.4.19 断点2

. ]( y% y' S2 m" s$ o2 o( F 再按下Run按钮(快捷键F5),因为循环的缘故,小三角又跳到了28行,此时观察开发板红色LED灯已熄灭,28行点亮蓝色LED灯还未执行,如图 4.4.20 所示。
% V5 A+ g3 o$ k' x8 X# ^7 w. M! Z: N' _4 c  {$ @
]81@KAT2OQ(X(YI1OJ0}V.png
" I# d4 L5 U& w+ g; a

8 {/ o, k4 S1 [9 X& M& t
图 4.4.20 重复断点1

4 w2 L2 D$ f5 y9 G' ^/ l 通过调试,可以控制代码一句一句的执行,从而方便观察现象,排查问题。当然,调试远不止这些,实际开发中,还会查看寄存器值、变量值等,这些在后面实验中需要用到的时候,再详细讲解,目前读者只需要了解调试概念、基本操作方法即可。' W! W2 g% [7 C
作者:攻城狮子黄
9 V, s0 R. _5 D( B
7 F' M2 N6 z+ T5 X) i& T
2 m$ s+ ]* V7 D" t( X' h2 R' j
R}D66MWOZR4VE[9)B_22$VY.png
收藏 评论0 发布时间:2022-8-30 12:38

举报

0个回答

所属标签

相似分享

官网相关资源

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