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

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

[复制链接]
STMCU小助手 发布时间:2022-8-30 12:38
1.1 资料下载和介绍
. K# I1 E: E) c6 O: x4 y+ \$ D! K3 ~. _1 b
1.2 原厂资料的下载
$ Q% T; G$ {! Z/ [9 |. R7 l前面“2_原厂资料”文件夹包含了本小结所介绍下载的资料。本块内容单独提炼出来讲解,是希望“授人以鱼不如授人以渔”,让读者明白这些资料该从何处下载,以后实际开发,换成了其它MCU,方法也基本一致,也能自己下载这些关键资料。
2 L3 F$ F% \3 Q: \; m8 |. _  v
- f& j: n2 N. C7 n7 f0 U对于几乎所有的MCU,都会有数据手册和参考手册,这两个手册必须下载。4 _& g$ e6 x- Q+ k+ a4 z

' G1 P; v; b9 B( z2 h! }对于STM32系列的MCU,通常还会有Cortex-M3/M4编程手册,闪存编程手册、勘误手册、原厂固件包示例源码、原厂固件包用户手册、HAL库用户手册等,这些资料根据需求下载。
) s  P; b- L5 z/ O$ A+ q( G0 H
! ]" f: \  B; O1 W) _对于Cortex-M3/M4架构的的MCU,如果需要深入了解Cortex-M3/M4内核,还需要Cortex-M3/M4权威指南,这个供读者深入学习。, V2 P; D1 X: k6 i5 J$ a

4 a! c5 m* E+ u- S       首先打开ST官网,在搜索框里直接输入“STM32F103C8”,点击“Search”,如图 4.2.1 所示。注意,ST官网在不断优化,本手册截图基于当前页面示意,读者根据页面举一反三,灵活变通。' ~& |! Y) Z6 [8 ^5 j
N(G(ZQ%YE(N(D068{VFE1ON.png
$ f( |2 W. @5 g6 z9 E* v* x/ `
# U" i. |. A# r+ T: d" E) V1 @9 k
图 4.2.1 输入所需MCU
  g4 V! `8 L7 x& }* L1 I6 e$ r
随后显示该搜索条件匹配的产品,如图 4.2.2 所示,可以看到只有一款产品符合搜索条件,点击该产品进入详细信息。
( j- z  j- l- ], y1 `
7 w8 @* r/ c/ G4 W6 S: l
)I`DA](8HJWH~TIGX5@QHWH.png

! Z+ x  k& z+ ]$ E5 z4 t- Z# s! `& f- d  K1 B' E
图 4.2.2 搜索结果
2 m' L) Z1 }$ H& Y: S
. v3 ^7 R$ j" q
+ Y8 ]+ `7 b3 n1 w! A( Z
在产品详细页,切换到“Documentation”标签,可以看到该产品的所有文档手册,如图 4.2.3 所示为部分截图。! `# _8 s) t) ~; |

6 A; @! `+ d# U! o  F0 h/ t4 d& ~$ h- [3 ^“Product Specifications”(产品规格):也就是数据手册,包含该系列MCU的整体描述、引脚描述、内存映射、电气特性、封装信息、订购信息等。在芯片选型、原理图设计、PCB设计、代码编程等开发环节,都会需要该文档;: R8 ]- }& n+ u% l6 q

. K' h5 D8 l9 J0 d3 k! a“Reference Manuals”(参考手册):包含该系列MCU各外设寄存器的详细描述,在代码编程时,需要找到对应外设章节,仔细阅读;& i' F5 ~# m$ n6 p4 U8 A
: {* V) s- v; B' U, s
“Programming Manuals”(编程手册):包含闪存编程手册和Cortex-M3内核编程手册,一些资源是在内核里的,比如NVIC和SysTick,此时在参考手册里找不到相关寄存器信息,就需要在Cortex-M3内核编程手册里查找;  V7 u& B" y6 b  l* d: `  D; b
) ?0 b' k6 L  v7 @/ {( m) r/ C' G$ _
“Errata Sheets”(勘误手册):包含该MCU内核、外设资源的限制,解决方案等,在调试中出现了bug,可以看看该手册是否有类似记录;
0 S5 n* r1 s! a4 k5 Q$ p" K: _' i% H1 z5 C$ _* f/ Z0 k* `) _* I1 _
{%%PDD${`71DDYL80}LY2.png
7 h; H! s, K& ?; D
3 e# v8 K. L" n1 m( F5 m
图 4.2.3 STM32F103C8系列原厂文档(部分截图)
6 R( A1 t" ~9 X5 \# B5 A' D
除了这些文档外,通常半导体芯片制造厂还会为MCU提供一些示例程序,ST也不例外。在前面的产品详细页,切换到“Tools & Software”标签,可以看到该产品的所有工具软件,比如各种硬件开发工具、软件开发工具、元件模块、评估工具软件、MCU/MPU嵌入式软件、产品评估工具、解决方案评估工具、工程服务、培训课程等,如图 4.2.4 所示为部分截图。) H. m6 u' w& f7 {& ~9 |" p
8 A8 a) }/ n+ j* c
R)`IIA]{6FG@C`3LX35{MS1.png

! m" ]8 \7 Y# }# P) y
. l) L' T1 m* L. Z0 d( Z- G8 W
图 4.2.4 STM32F103C8系列原厂工具软件(部分截图)

( m( e. O# S4 w; V1 a. G& \* R7 ~6 s2 n" y" K1 H3 Y8 M, Z, C

& c' ^: E; a' r4 J0 U “Software Development Tools”下圈出来的几个工具后续会用到,这里先跳过。“MCU & MPU Embedded Software”下的“STM32CubeF1”就是包含示例的固件包。点击该固件包,进入详细页面,在“Overview”标签栏下,点击“Get Software”可以分别进入固件包、固件包补丁下载页面,如图 4.2.5 所示。' ?* ~$ S' I+ t2 E  C5 E% p

7 M. U  t6 U) L* e5 Y9 Q( Y! Y! |6 ]& T% V9 \* ?
)}[}85MHK]IG83$Q2VY$Q.png

0 m' t8 X: T) r2 U* M" h8 n! @* D
2 E. B* {, E4 k
图 4.2.5 固件包下载
* v/ d7 O; n3 C9 O" [" l4 c' _/ ^

' {# Y( }+ E3 b1 _2 H. ~; c3 r: R- y  u6 ~* V* G! z* B8 i! }
随后会弹出许可协议“License Agreement”页面,点击“ACCEPT”表示接受,如图 4.2.6 所示。9 H% g/ Z- e4 I4 c, t# u8 d

" {1 q- s- T( y, U7 v
E_JR0CYTPC7K9TEB6J64S.png

) M* R+ E) d/ f" r9 }8 x0 I2 }/ v1 _: A7 n1 M. D# m3 s. t6 Z
图 4.2.6 许可协议页面
2 ^; ?5 H# {1 f, D
接着要求需要输入个人信息,如图 4.2.7所示。如果读者有账号,或者想注册一个账号方便以后下载,可以点击右上角“Login/Register”登陆/注册下载。如果读者不想注册,需要填写个人信息和邮箱,下载链接将发送到填写邮箱。
9 {3 G/ E& {' F8 E3 y, _0 d
+ L1 @/ O( R7 P; X( q
~D$Q~G1@LA_9BB1VG7,CU.png
+ s2 X( z2 n7 t4 M& x
7 `9 z" @4 |+ H9 A/ P
图 4.2.7 填写个人信息

7 }, ]2 y4 y5 d1 S ST还提供该固件包的详细说明文档,切换到“Documentation”标签。在“User Manuals”下可以看到“UM1850”文件,该手册详细描述了STM32F1系列的HAL库和LL库API,非常重要,后续会用到。“UM1847”文件则是该固件包的详细说明文档。除此之外,还有介绍LwIP TCP/IP协议栈、RTOS、FatFs等文档,如图 4.2.8 所示,读者可根据需求参考。
! f: C# T3 G& ~2 w/ I* F8 Q; Y& r0 A8 S2 o% b
85Q}PX0))]SH6%3`CTS48VW.png
( U3 c) S* @: t# U4 j2 z+ E2 `
7 z4 V6 _9 l. X/ w0 m
图 4.2.8 固件包相关文档

7 \3 l" ]6 i+ d" g% z最后,再简单介绍下固件包所包含的内容,供读者参考,固件包内容结构如图 4.2.9 所示。“Documentation”:里面是本固件包的详细说明文档;, M+ Z' P9 n3 Y* L, s# C

1 _! J6 p5 f$ z9 {“Drivers”:
; A+ C) S+ m7 R" B) P9 p! ?! T! l) W' n. |+ `/ W
“BSP”:板级支持包(Board Support Package),适配ST原厂的几个公板;9 Z. b) W0 V% [6 I: K
“CMSIS”: Cortex微控制器软件接口标准(Cortex Microcontroller Software Interface Standard),包含STM32F1符合CMSIS标准的软件抽象层相关文件;. a" f2 R9 o! m; p
“STM32F1xx_HAL_Driver”:ST提供的HAL库驱动,方便快速编写程序;* R7 V4 ]8 j* e5 i4 }1 n

' j8 F  j# ?! O% H: J+ R“Middlewares”:
1 N* f6 b, n/ X, @
: K  e2 _. l$ e3 s“ST”:ST提供的图形GUI库“STemWin”、USB从设备库“STM32_USB_Device_Library”、USB从主设备库“USB从设备库“STM32_USB_Device_Library”;, O- C0 O0 n% H
“Third_Party”:第三方提供的文件系统库“FatFs”、实时性操作系统“FreeRTOS”、网络协议栈“LwIP”;4 O0 D& W2 X7 D$ w4 n5 n& ?. d1 Y6 h
“Projects”:以ST原厂公板为载体,提供的外设应用示例,比如GPIO、UART、ADC、RTC等;+ u6 J- ]! P1 O/ z) a; l
“Utilities”:一些字体、日志、多媒体等杂项示例;
, o7 a# L) t; G5 e3 _0 Q( E/ \- o9 s: _6 x/ H0 V4 b6 R
LVLH}KBI8E6~UI]9]T`1QAG.png

; Q% m/ m0 h" `5 d3 V8 z5 ^* F+ s1 L7 B) @
图 4.2.9 固件包内容结构

* U+ M; b5 G' w, D, m* z$ I【总结】8 E% V% Y! h" L4 g  X! s" s) P  x

2 p) P/ a3 d, |7 @4 H# Q& w& s& b如果读者以后开发其它MCU,在没有现成资料的情况下,可以先去MCU官网下载对应型号的数据手册和参考手册,再找找是否提供相关集成开发工具(IDE)和示例程序。加上硬件的原理图、PCB丝印图等,就基本可以完成相关开发了。; X- s5 f, M3 R- O4 i
% `$ @) n* ?3 O+ V: u; s
原厂提供的资料文档众多,有些文档甚至页码上千,读者不必担心,这些文档不需要一口气看完,只在需要的时候搜索相关关键词,定位到对应章节,仔细阅读即可。* I/ s, E; [3 v1 f2 ^# b: ~! T* |, g

) e- ]3 ^6 L* i5 ?9 L8 p8 Y0 `2 d9 l9 D$ ?
1.3 开发环境的搭建
2 G2 A' {& v$ E) P0 _  z1.3.1 交叉开发
3 t! J* S5 v, R8 k嵌入式系统开发不同于通用PC系统的开发。通用PC系统拥有强劲的处理器、充裕的内存和硬盘,且有鼠标键盘输入,显示屏查看,是理想的开发载体,因此PC程序也就直接在PC上开发。而嵌入式系统往往资源有限,输入显示也受限,不适合作为开发载体,因此嵌入式程序通常不在嵌入式系统中开发。而是将嵌入式程序放在PC上开发,然后将生成的可执行文件放在嵌入式系统运行,这种方式就叫交叉开发。
  o' O1 t8 I/ y3 `  l' O! y$ f0 [
交叉开发通常由三部分组成:宿主机(Host)、目标机(Target)、连接宿主机和目标机的工具(调试/仿真/下载器)。宿主机指用于开发程序的平台,这里指PC电脑,借助电脑上的开发软件,实现程序的编写、编译;目标机指程序运行的平台,这里指开发板;连接宿主机和目标机的工具通常有串口、J-Link等。三者示意如图 4.3.1 所示。6 L  U: W- I/ I: a5 V) K4 y! _
* }1 L9 M! O8 ~' m* @' E* `
B@WBWTRR}BDX4E0B%OI1GFS.png
- h$ {1 @( X6 g) s9 G) m

+ i- y$ P/ s* n( U" t$ q7 _1 [6 R
图 4.3.1 交叉开发示意
5 p' F# q+ J& M+ h+ W  v3 v" Y6 B
嵌入式开发通常分为六个步骤:编辑、预处理、编译、汇编、链接、调试和下载。每个环节都需要相应的软件实现,如果将这些软件集成在一起,就叫集成开发环境(Integrated Development Environment,IDE),如图 4.3.2 所示。2 R  {2 O5 `" K

0 b' n+ K$ {' {- I$ n% v) m
8]1]QS1II%HG4`9AIBS~NO4.png
2 W; Q' j; T- g3 r: o) P6 q" T1 C

& T# D% ?/ Q1 f5 `, T; y9 Z$ ~
图 4.3.2 嵌入式开发流程及所需软件

6 C( V4 y# l9 X6 W3 R, J+ j实际开发中,除了使用调试/下载器进行调试,还会用到串口打印显示信息。对于STM32开发,所需的开发工具如表 4.3.1 所示。因此我们需要安装两个软件(IDE和串口工具软件),准备一个调试/烧写工具。- y' a, U1 V0 W( ~* A
0 W& Y/ d9 N5 r
{07%3}~K2WROL]SIJSROHGN.png

9 U; P2 G/ Q2 H; _) u5 Y2 g! v0 G1 c: z/ }( j2 e5 i

8 E; r" y/ S5 E$ a; v$ [( X* o2 c8 d( o! z/ n
综合实际开发情况和软件收费限制。对于集成开发环境IDE,本手册选择Keil,使用最广,读者熟悉之后也能过渡到其它IDE;对于调试/烧写工具,本手册选择ST-Link示例,功能够用价格便宜;对于串口工具,选择MobaXterm,免费够用。1 t& v5 `! M: b! _4 @3 A
3 J' ]' K6 [1 s
对于100ASK_STM32F103_MINI开发板,在电路上设计有串口自动下载电路,可以使用配套的100ASK_STM32F103_Tools工具,通过串口下载程序,免去J-Link/ST-Link等工具,在后面“4.4.1 串口直接下载”再介绍。
2 F3 @# G: i) g# T& \+ M" e2 X7 n: o  n- p" a' ~. A
" \! E1 _1 R' g& J/ @
9 Y7 u$ A) f" T9 ]* R8 I1 r
1.3.2 下载、安装Keil! W0 h, A. R: U  o3 B( U
Keil-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 所示。2 Y  \: Q0 S7 p" z# @) x$ o1 H

" P7 T" O2 q/ s+ \+ }
5ZB%QECUCAE7%4LU88~[N10.png
5 M  u/ m) N. H; `8 A

* K$ }- t) g5 \# y  g
图 4.3.3 MDK-ARM下载页面

; \7 C, l% p2 o( j/ d9 N 随后进入个人信息完善页面,按提示填写所有的信息,如图 4.3.4 所示,填写完后,点击“Submit”提交。# C  w$ A5 d9 r$ M! d8 G

, m4 b1 @8 |6 R3 o
LE4ZD{7CV4S((CD6{O56Q@4.png

# o( w0 G8 g* W; z/ `- p4 ^! {8 v1 A; L0 ]
图 4.3.4 填写个人信息
2 u& k% k8 y% i( g; N
随后进入下载页面,点击“MDK532.EXE”即可下载,如图 4.3.5 所示。
8 U" \! k! e. I8 h: Y$ ^9 |1 S' h. i  t+ G, j) x) D
EJD0PP6E~_QPHHAWK_F`}9F.png

& g/ d/ a+ W2 Q8 H( j
$ t0 N+ `0 h0 O/ e9 Q' o
图 4.3.5 MDK下载
  m9 v. A& Z2 R/ E$ Y9 g
下载完后,点击运行该文件,进入安装界面,选择“Next >>”,如图 4.3.6 所示。. O4 U% e. X& l" Q

) k1 t0 g6 O2 f$ q/ ~
BKV6L6J[}GM95~86HHF7`B4.png
! B/ _* V! D% Y6 N! M& s9 ?
4 I9 Z/ b9 \8 u7 P, M* G5 U
图 4.3.6 Keil安装界面

$ P: O% t- r( Y# t/ `接着进入用户协议界面,勾选同意协议,点击“Next >>”,如图 4.3.7 所示。
# H1 H8 P2 J: Q- x: k  E9 X! W2 S; v) Z0 m8 \3 \) u  i4 d
7`}P5YZF~[D9R2%{I2T$%EI.png
* m3 m4 V, D5 |( }& Q1 L

8 j9 k( `8 L; i
图 4.3.7 Keil用户协议

  V+ {6 J4 M2 J/ @' Y$ g; q然后设置安装路径,第一个“Core”是软件的安装路径,第二个“Pack”是芯片的硬件支持包的安装路径,读者保持默认路径或者设置为如图 4.3.8 所示一样的即可,如果是自定义设置,建议为全英文路径,不建议为包含有中文的路径。选择好之后点击“Next >>”后:  R5 v* [, N6 s

% R! o: N* V; R$ c
A7LBGK2PPYNBEHM5FA_Z4.png

. @" X7 z7 |  x; v  v+ Z: }- q+ b6 s9 u* b/ G+ @+ p% I
图 4.3.8 设置Keil路径

# y: \, J+ H5 @/ k" @0 d. F7 V随后需要设置个人信息,随便填写即可,如图 4.3.9 所示。
  f- O1 Y* O& ~0 N5 K9 T' s& j; ?+ P! ^+ j
[2B0J[NUH2GJUFIT$OKH_HV.png

+ C4 Q: g# h1 D2 D9 F$ ]6 U# b( J/ `: h
图 4.3.9 填写用户信息
9 E, ^* `0 w5 ^: d" W3 R3 l6 w
之后便进入安装进度界面,如图 4.3.10 所示,等待安装完成。  R- {3 W5 ]4 l9 Z0 b

0 P- {% p% T/ g# o/ h2 N% v
Y6$@%]9E%SV9QHB)4@8EQZ5.png

. R- E! z* |# l' W' Q: `: ~# y3 ~5 Y
图 4.3.10 Keil安装状态
; Y6 l/ x2 N1 E: W2 T
安装过程中,回弹出驱动安装界面,勾选“始终信任来自‘ARM Ltd’的软件”,然后点击“安装”,如图 4.3.11 所示。1 c* j' W# N9 v5 b6 [! L) T

; b# @8 Y1 [2 r: [5 X
8WA6]5~){]6T7{]V4H{I3.png
% x# e+ y8 ^. B

% p. a( z% N! G( m# h5 z* @9 ^
图 4.3.11 Keil驱动安装
5 N6 k+ \1 t( I+ `& n  _" d" a% S
如图 4.3.12 所示即安装完成,“Show Release Notes”为查看当前版版本说明,可以不勾选,最后点击“Filash”。
2 G# a2 r; ^: q5 W6 L5 e  S; [! y5 H( [5 T+ o' n8 ?
DGK]JFSA0)ET999DINGY`8N.png

) p/ K7 d$ y+ S# |8 V; |) f) t
. D/ J% `+ K4 d: q, \) v
图 4.3.12 Keil安装完成
0 K. M* w+ j* |; L0 @
之后会自动进入“Pack Installer”界面,这里会检查安装的编译器、CMSIS等是否是最新的,由于我们安装的是官网提供的最新的MDK,所以这里一般情况下都是不需要更新的。3 v1 n5 |. D5 ^( ]* F: `, B* e

+ V1 x, o* Q: Z6 N7 [/ T至此Keil就安装完成了,但这不是Keil开发环境的全部。一个Keil的开发环境,除了Keil软件,还需要安装对应的Pack,比如这里目标机的MCU是STM32F103C8T6,就需要下载该系列的的Pack,如果是STM32F4系列,就需要下其它系列Pack。; X$ a$ O9 K$ H  q. X9 r( ]

1 T# G. _' E. |/ ?8 L; r( l使用“Pack Installer”可以方便的对Pack安装和管理。在左上角搜索框输入“STM32F103”,展开搜索结果,可以看到STM32F103C8,点击右边的简介链接即可跳转到Pack下载页面,如图 4.3.13 所示。如果跳转网页无法打开,可直接打开Pack下载总入口。进入Pack下载总入口后,找到“STMicroelectronics STM32F1 Series Device Support, Drivers and”,点击右边的下载图标即可,如图 4.3.14 所示(部分网络环境打开该链接无Pack列表,请尝试换个网络环境测试,仍旧不行则使用配套资料Pack)。/ l8 ]/ l$ o! J1 m& X9 ^
9 a3 i6 T1 r" a: Q6 }2 K
{VXX4@@5G7EY0M6AEJW_MWH.png

  J) v8 g' F- C  K, C8 N+ G3 |( I  o5 ~$ X! |) B
图 4.3.13 Pack安装管理器

9 E) [/ W% Y! ]6 P: x9 D3 t
: K' ?9 O3 {( c) v: l+ I
5I(P}1GBSHWFK{GR`UQZ(}B.png

0 X4 [, }( i. \4 L5 Y1 Y; l/ m: d2 S+ Y
图 4.3.14 STM32F1 Pack
0 f: F; D+ b8 J6 r6 d) c; Y! W
下载之前会弹出Pack用户协议,点击“Accept”即可,如图 4.3.15 所示。! Z3 z1 Q( P8 N6 ?- \
5 B4 {  B% L: M- ?9 h, ?
L2M9}6E7[LZ_CIG9~{PFJ%E.png

, n- f5 l% u9 m2 N! f. f+ L4 j/ J& P8 e# ^+ B3 W2 C# s
图 4.3.15 Pack用户协议
6 t% V) @+ V( K
下载完成得到“Keil.STM32F1xx_DFP.2.3.0.pack”,直接双击该文件,随后弹出如图 4.3.16 所示界面,点击“Next”进行安装。4 c4 ]/ A$ w' }& O2 V- A
5 `" _$ n; F6 v; \0 a
}6BWSO5$PI~V0O}6N4`VE.png
6 k. D4 G, \+ n6 i/ h

3 k7 J2 v0 }& I! i
图 4.3.16 导入Pack

) g% |7 z. `1 {6 Q: p% P本开发板使用ST-Link进行下载调试程序,还需要安装ST-Link驱动。首先从ST官网下载该驱动,或者直接使用配套资料里的ST-Link驱动,路径为“3_开发软件\1_涉及的所有驱动\ST-LinkV2仿真器驱动\en.stsw-link009.zip”。
* m6 @( H9 {7 k" f9 D* W
2 S. l% F" i, v9 w解压“en.stsw-link009.zip”,双击运行“dpinst_amd64.exe”(如果电脑为32位系统,运行“dpinst_x86.exe”),出现如图 4.3.17 所示安装界面,点击“下一步”。
4 S4 p. d- _1 a, A$ Y) N" q
. ?7 N- i+ ?( C" X" h; v
]59{EVBO9E@M3L`5VE49~5C.png
& E9 g0 H6 U+ f; v7 I% b* G
8 g. |4 t8 _" d$ R1 \
图 4.3.17 ST-Link设备驱动安装界面
! S4 y6 Q/ Q6 I, F) [. Q1 G+ Q) }
在安装过程中,出现如图 4.3.18 所示的Windows安全警告,选择“安装”。# [4 m. x, `  I  |/ K+ k9 r9 Q
# D7 {6 q; c6 J2 f- i
B[OS5$PC@X}D}LSMHUIAM[B.png
7 A0 ~0 J3 m# i- X9 U' `2 ~: D
2 h4 |" ^% C  c8 T
图 4.3.18 Windows安全警告
) z" l  x/ B9 e2 c: H) |
最后安装完成提示如图 4.3.19 所示,点击“完成”退出安装程序。9 r# A( W& [+ Z
8 x% @/ o1 R0 R5 q! W' y' u+ [4 w% K
MPV43V%]U51LTIT@$JZAKWK.png
: D9 Y9 Z# Z; B) N& T3 C4 P) O
7 P# j/ S. `: x* ?4 d
图 4.3.19 ST-Link驱动安装完成
! q9 k, p* ]+ n# N. m
至此,针对本开发板(STM32F103系列)的Keil开发环境,配置完成。$ H5 y! m0 X1 g8 P6 z
  |; n- c+ r8 D' X

) k0 L* x2 ~0 _/ ?/ `8 n7 v+ x1.3.3 下载、安装MobaXterm
* f+ [* j* B* U9 w实际开发中,常常使用串口的输出信息来协助调试。通常的串口连接如图 4.3.17 所示。开发板的串口(TTL电平)引出,通过USB-TTL串口模块,转成USB信号给电脑,在电脑上还需要配套软件才能显示信息,也就是这里要安装的MobaXterm。本开发板的USB-TTL串口模块集成在了开发板上,只需要将USB切换开关,拨到非ON一端,然后插入电脑USB口即可。
9 H0 H  s+ N9 x1 a: G/ j
$ |: f) H4 _0 Q+ G. F4 S
P8P]~W1VHQ5S5A4OTF0ZVW8.png

1 @% ^, u9 X: X& J8 ^. ?, A4 B( K  y0 v* l
图 4.3.20 串口连接示意图

- [/ r+ d7 {/ _0 M目前还用不上串口,因此不需要接线,只需要将串口工具MobaXterm先下载、安装即可。打开MobaXtrem官网(https://mobaxterm.mobatek.net/download.html),如图 4.3.18 所示。Moxtrem有两个版本,“Home Edition”(家庭版)有功能限制但免费,“Professional Edition”(专业版)无功能限制但收费,这里选择功能够用的家庭版下载即可。( z0 _* r3 F0 ?; u- t7 A
  M% z. v! x. Z, b* g7 K, N6 Z
BEV`@6UEAY~8R(6TDT5MO.png
% h  W8 _6 l- u4 N

( ]: G# c9 F, w% n& L2 O5 a
图 4.3.21 MobaXtrem版本选择1

8 L( J" x0 n0 g+ ?接着跳到家庭版下载页面,又分两个版本可选,“Protable edition”(便携版)无需安装,点击即用,“Installer edition”(安装版)需要安装才能使用,这里选择便携版即可,如图 4.3.19 所示。
5 q: @. D: J! n. G5 s
% E& p( D5 f' o1 a8 f
A25W16YX]4F)`R]ZCM7BP3L.png

6 D$ o4 |6 i9 D# D1 K" N6 v
# ?: M6 d5 N  l3 I: K% l  v
图 4.3.22 MobaXterm版本选择2
4 h+ ~& k$ p# k
下载得到“MobaXterm_Portable_v20.4.zip”,需要读者解压到任一目录,解压后如图 4.3.20 所示,以后点击“MobaXterm_Portable_v20.4.exe”即可运行MobaXtrem。: a( }3 d6 [6 T# [4 p3 w7 v
+ T; r: c/ k5 B  A8 F+ C5 _
L7{TQM1AB7B{T(RBX`CRS{1.png

6 j' o  S2 j: Y4 j
7 D' k, b1 f1 l2 _
图 4.3.23 MobaXterm解压后文件
3 N& C2 A7 j; z: `
本开发板采用CH340G转串口芯片,需要手动安装串口驱动,解压配套资料“3_开发软件\1_涉及的所有驱动\CH340G串口驱动\ CH341SER.ZIP”,双击运行“SETUP.EXE”,点击“安装”,如图 4.3.24 所示。
& J8 n# Z( b  a2 r6 M
; k/ C- F$ e2 l
{46%3S3TC3@6QTC0CE4P6YI.png

* @- T6 I$ e; V& f2 ^
8 ~- k3 d9 _0 x+ ~* {7 a' i
图 4.3.24 安装串口驱动
* z: l5 g9 P" r# _  q: j2 y
, Z% V1 p. ^' y4 `* \1 d" p6 N% N( x2 d
3 d+ T$ b3 T- N
1.4 下载程序和调试
/ ^$ v  s# K+ X4 N# R在本章的最后,再介绍下如何下载程序和简单调试,以“2_GPIO—LED点灯”工程为例,读者暂时只关注下载和调试,对于代码内容、工程结构,后面章节会详细介绍。, H; j6 o+ S  \

, T7 o3 N+ C9 y7 m' }& j1.4.1 串口直接下载* ?+ J) O, Z4 K% |4 n& r0 N$ x
开发板独创了USB接口集供电与下载一体,无需额外配件,将开发板的“USB切换开关”拨到 “非ON”一端,然后插上电脑USB口,如图 4.4.1 所示。0 p. ?. M( _5 w/ y6 A. x% k9 `
$ p% d0 L( ^$ s) Q  q
AFD~)25]Y%AVO`M1}C260A4.png
6 S. G$ H) M. U6 j7 [( X) T1 L. j
( ^- A+ E3 V" ~: Q' {# E
图 4.4.1 连接电脑
0 V! q# J3 P, c7 S! k, K$ o
确保按“图 4.3.24 安装串口驱动”所示,安装好串口驱动,此时电脑设备管理器,会识别到开发板的串口端口,如图 4.4.2 所示,其中名字为“USB-SERIAL CH340”,端口号根据实际情况生成,和本文可能不一样。
) D. h3 [* ^1 S, _, O, h) q& F* Z4 c8 q+ d2 k0 O: P( @# y& L) X. ?7 F" I
YMQ6(AHKRMQZ%VB4@086{VY.png

) a2 v; {. H" \3 ^2 m, A+ C. h5 K, }/ q" l0 x
图 4.4.2 设备管理器
4 Y  ~- {% F' K2 T0 ~) m3 X; l
接着打开“100ASK_STM32F103_MINI开发板资料\3_开发软件\2_百问网STM32F103工具\100ASK_STM32F103_Tools”里面的“100ask_stm32f103_tools.exe“,如图 4.4.3 所示。& S- y; U3 W4 x1 I7 ?! W! z& q+ n
* F0 g( F) C% Z7 P. F
X0_6S~7VKT6IN5%JA(S9V.png

- g* e/ T/ }& N8 ~4 E8 Y9 H# K
图 4.4.3 100ASK_STM32F103_Tools

0 n. a' w3 X7 q+ T: X8 C 这里要选择编程生成的“bin文件”或“hex文件”,打开配套资料的“05_程序源码”文件夹,里面包含了所有实验涉及的源码,找到“2_GPIO—LED点灯”并进入,再打开“Project”,双击里面的“Led.uvprojx”,如图 4.4.4 所示。
+ Z7 x! @  L' O$ g9 I$ k
! Y& X; ^' \- }) _( ]
_@`(%FTVED88Q{P_4F6K1L6.png

0 L/ n! r  v3 W$ b# E! b4 l4 }8 Z; R. \# {* X, O8 I. d# Z
图 4.4.4 LED实验工程

2 \) J% Z6 j& a9 a; v 接着会自动打开Keil,界面如图 4.4.5 所示,可以把整个界面分为四个区域:
/ Z4 L, }4 W, E3 z
/ }5 ?5 ?9 s; s' H9 |①功能菜单区:包含Keil的功能菜单,以及一些常用功能按钮;
6 \" Z* ~9 e; D! w0 U, c2 [0 `, z9 ]7 j8 F( ?+ B
②工程文件区:该工程所有文件的目录结构;( l3 V  @$ a9 v7 R# |

+ S$ a1 ~0 @# \3 @& U③代码编辑区:在工程文件区选中任一文件,将在代码编辑区显示内容,供用户编辑;% d" g, _, I6 e) o1 ^4 a1 j
4 c$ c* S. y+ `8 i$ Z/ b
④编译信息输出区:显示在编译过程中的所有提示信息;( C7 H+ H, ^: ~' z( ^' }

+ U, O5 B8 k; }0 W) z9 e
)S$F%H33]SK9{Y2_V7K%CM3.png
& Z$ V, N# h7 k) a: |0 i9 `

+ f5 z2 o5 o. g" T1 p$ G" Y
图 4.4.5 Keil工程界面
, V5 S( T+ I( L  Y" H" W4 L
在功能菜单区,圈出了两组按钮,其中左边的一组与编译下载相关,从左到右,功能依次为:
, Y* [! b9 R( h( x7 `) }! X- l4 f+ d0 A; a
Translate:编译当前源文件,只进行语法错误的检查,不生成可执行文件,用来快速查看修改后的代码否有语法错误;
4 Z$ A4 q+ ?. c# o+ W0 T. i
/ Q) P1 E$ S; F6 r) T+ bBuild:编译工程得到目标文件(快捷键F7),这里只编译修改过,以及和修改文件有依赖的文件,也就是增量编译,用来快速得到目标文件;
, E; H" S+ v3 e4 M
7 e1 U9 Y0 a: b3 m+ {9 IRebuild: 重新编译工程,不管工程文件有无修改、编译,会对工程中所有文件重新进行编译生成目标文件,花费时间较长;+ f+ i" M: V+ Q$ ?) S
2 j* |! T& B6 `' J& j
Batch Rebuild:批量编译,当Keil存在多个工程项目时,用于多项目的批量构建、重建、清理等;5 p" }. }7 s6 }7 W: o0 e* t0 O
" h& M: e  ]. d8 R: V) a3 E; |! ~
Stop Build:停止编译,在编译过程中才能点击该按钮,用于取消当前的编译;
" L7 {* x/ K) |5 z$ i( ?9 r+ ?; }2 F5 P( ^4 A# X+ j' r
Download:下载(快捷键F8),编译完成后,点击该按钮下载程序;- H1 [' P9 n, O0 n' H  v

- l0 c3 Z% h. x$ E
0 U# N" n+ L5 T; k: l& }9 j在中间的一组与调试相关,从左到右,功能依次为:
3 ^$ Q$ K9 ^: ^8 @) ^$ V
7 u. E& E% ~& G, B% ]7 z3 |Start/Stop Debug Seesion:开始/停止调试窗口,用于进入调试窗口,进入后会新增一系列的按钮,后面会仔细讲解;' B/ A, V* s1 j( h2 t
- Y/ _. v) b" G& [( Z
Insert/Remove Breakpoint: 插入/移除断点,在进入调试窗口后,选中想暂停的代码位置,点击按钮就会在该行出现一个实心的小红点,在调试时就会在该处暂停运行;
% X. Z+ i$ i: K/ W: o; `# W. ?" j0 v- f5 H# m
Enable/Disable Breakpoint:使能/去能断点,在有断点的代码行,点击按钮就会取消该断点功能,再次点击恢复该断点功能;, Q5 e; F. D% v; k- B# E

; ~$ f' h- r1 Y: @Disable All Breakpoints in current Target:去能当前工程所有断点,保留了断点的位置,方便再次使能调试;
: t; z6 r* |. ~1 `7 N" [1 f8 v/ j3 ?- i( }. e# `
Kill All Breakpoints in current Target:清除当前工程所有断点,整个工程不会再有任何断点;
9 o& s. O9 Q( b; h; Z3 o* D
/ R" }$ t+ t: }: c, `) |( x9 Q 对Keil有初步了解后,接下来就尝试编译、下载程序。点击Build按钮(快捷键F7),便开始编译程序,编译提示信息如图 4.4.6 所示,可以看到提示“0 Error(s),0 Warning(s)”,即没有错误没有警告,编译成功。0 Q+ J% H7 c( y' \
  X& S, Z( q0 s8 b# C0 J- V( b
9{K3HR33DHDB7H8NK7DP72A.png
  @/ A$ ]: f) J( `) A+ R0 P+ J

9 r$ I6 w- n' {3 r& }. q+ G+ L
图 4.4.6 编译、下载提示信息
  x0 J7 _8 w+ P& D% }7 j
编译成功后,将在工程的“Objects”目录下生成目标文件“Led.hex”和“Led.bin”,点击“100ask_stm32f103_tools”的“文件选择”,选择“Led.hex”或“Led.bin”,如图 4.4.7 所示。
% s$ l& u; L* }0 b0 Z8 L- H% g* ^7 |) u8 j
C%6QPTWF4E%YU~9QX_AII.png

- [, `+ q* U' Z- S
5 }5 j2 _3 p* I* f* L; W% j, C9 P
图 4.4.7 选择烧写文件
& [3 E3 I4 ?& m* j) s5 f
( i  D& B$ v- o3 J9 w) e

9 \' J. Z3 Y4 N6 c' N/ \( ?点击“开始下载”,等进度条烧写完成,如图 4.4.8 所示,开发板自动重启,即可看到开发板LED闪烁。
  J  Q  z. {, e& F* z& v: M1 p
9 Z! |; ~/ n. v8 I
TPA6EZ~`7TJJDSDXP7FAVTH.png
1 M, m7 `) t, j7 o* u, K- y( Z
; k. H1 A# C: A& Y4 n/ x1 t
图 4.4.8 烧写完成
2 C* R" d" Y. N* S8 W
5 y/ z' v" K- X9 B
2 P' ~3 i$ a: s+ ^* K! P
1.4.2 ST-Link V2

, p  Y: ~: K$ L1 kST-Link是由ST公司设计,用于STM8/STM32微控制器的在线调试器/下载器。目前为止,ST-Link一共有三个版本。9 o" M6 v. p6 \$ ]  A+ Z+ T

- O6 I0 `5 c% }/ T: t' u6 q' `ST-Link V1:早期版本目前市面很少看到,基本被V2取代;
  a. Q6 b2 `* [, T4 t. Y1 c% t6 z) L$ H  r1 }% k# h
ST-Link V2:目前使用最多的版本,能够满足日常调试需求;/ z6 c" `% ~: K3 U  p
5 i& \( M0 Q0 }9 ?' i+ q! q
ST-Link V3:近两年发布的版本,功能、速度上都有所提示,价格较高,目前普及不高;  \, R1 d' e$ r* b

0 I/ Y3 v2 o, |+ Q; [6 K, R9 }ST-Link V2本身就是使用STM32F103C8T6设计的,因此只要下载原厂固件,结合相应的电路,就可以将开发板变为ST-Link V2。' {9 S! Q& _' Y) q- @
& t" X# v' Z* y: I0 Q( w- ]( S
将开发板的 “USB切换开关”拨到 “非ON”一端,然后插上电脑USB口。打开“100ask_stm32f103_tools.exe“, 点击“ST-Link”图标,完成下载,如图 4.4.9 所示。7 E( Z+ f4 k# |% ~  Q5 ~$ N9 e* c

: R) n& I# X$ j3 h1 b
C6N]MP2D6UVNY)WJ{Y{X{4C.png
! x6 y9 `1 U6 I& k

8 C- F% [! Y  o( z3 y
图 4.4.9 烧写ST-Link固件

$ W$ I2 L( H+ E4 T下载完成后,需要将 “USB切换开关”拨到 “ON”一端,然后重新插入电脑,点击“确认”,进行升级,如图 4.4.10 所示。
7 u* Q% B9 o8 r( m/ x" W( W; N& B4 k& q
09XY@_E8_$L)XND82ZHB94I.png
4 \* Y+ S1 Q$ D, v1 e( i6 `9 b! ^
' d! {  n2 j) W
图 4.4.10 ST-Link固件下载完成
# `: T' z. m: z9 Z- J; a) I  Z
在弹出的升级界面,点击“Device Connect”进行连接,如图 4.4.11 所示。  d% X: y& f) P. n

& u  U. }# ?# L& {0 A( ~6 ~
(%C_EB3P9(LM$)NTS43J.png
2 J0 l$ l8 l- \; t

5 g* a) X: ?  w# t. ?, z/ h* I# }
图 4.4.11 设备连接

! E& T2 y9 z" l7 Y. H连接成功后,可以看到当前版本为“V2.J16.S4”,点击“Yes”升级到“V2.J38.S7”,如图 4.4.12 所示。
5 ~0 o) X' H9 D, |4 Z
1 k& n) e& i+ i" h& V  ]& x
ZDKP5CDQ`{192{YTGE2P)%3.png
; e' e( P) V5 x: z
" u: d' C  H9 w( H5 d
图 4.4.12 升级成功

2 q7 ^2 I7 G# ~6 V* W3 ?: G 升级完成,即可作为ST-Link V2使用。
  @9 L3 Q2 q( a
6 p5 r9 d% R" S$ a; {3 _! v
" n8 d; R. Q2 N) G4 ]- b( H 连接100ASK_STM32F103_MINI开发板使用

; m" F7 z1 P+ F  U7 q. A0 r( j3 G5 ^3 z$ X3 g6 }
对于100ASK_STM32F103_MINI,在设计上做了兼容,直接使用定制灰排线,按如图 4.4.13 所示连接,即一个作为ST-Link调试器,一个作为开发板,对后者进行调试和下载。# H# F! Q+ i' I: e6 B- v( w" n" v" l

9 D3 h# Y8 B# @
JSRKP9K~KPID2XF[U09FA~J.png
! Z6 S* P. b" M% C+ j

7 ^8 n$ Y3 B# _- i) a' M4 k8 Y
图 4.4.13 连接100ASK_STM32F103_MINI开发板

  p2 d. s; R. |9 B" O0 F8 Z! Ul连接其它STM32开发板使用7 q; \1 _6 N. \0 _) Z6 I

9 ^- Y. A( C7 Y连接其它STM32开发板时,使用如图 4.4.14 所示的“3V3”、“GND”、“JTCK”、“JTMS”,效果如图 4.4.15 所示。' r$ i/ O0 O, @3 \8 W6 f2 t
" L0 R5 I( p4 f5 C
A}VJNQ2LR2@PE33`F`5)82W.png
' d& H' |) k6 a: m
' W5 k; h! N' m: }6 {! p
图 4.4.14  ST-Link下载引脚

+ ?. {9 ~  z8 f6 ^( m9 s- ]9 e6 l* w7 g4 e+ ~; u% N
[JY{}`G~98E(0CI](4S{4QW.png

& Z" W- o1 ?1 n6 r  a0 o3 L6 \  \. b
图 4.4.15 与其它开发板连接实物图

* v  {' }7 Z4 x$ s7 s4 J
3 k" Y; A+ `  ]  ]3 ]; N6 U: w  t/ v! p7 {; ]; r" {, \
1.4.3 ST-Link调试下载+ E/ M* C! [% @0 u: U
将ST-Link与开发板连接好后,可以直接点击   Download下载(快捷键F8)。
( D) J) t6 V. b" U/ u4 e( i- s" ^; M- ?6 k; `& F& ?4 s
有了ST-Link除了能下载,还能调试,比如前面串口下载的点亮LED程序,可能需要逐步执行排查问题,点击Keil的Start/Stop Debug Seesion按钮,进入调试窗口。
. J6 e; }0 [3 G$ m, O, Z6 g+ r  `6 z4 O; y$ A6 E/ v# H
默认的调试窗口界面如图 4.4.16 所示,可以大致分为五个区域,如图 4.4.16 所示,其中功能菜单区和用户代码区,是我们目前初步需要了解的,其它的读者可以网上查阅资料,扩展阅读。在功能菜单区,圈出了三组按钮,第一组是控制调试运行状态的按钮,第二组是控制各种调试窗口是否显示,第三组是前面介绍的断点添加工具。
8 ?' i& D% `, c, [, K9 r/ a5 h! D  b. A5 f8 m8 y% r
% X# }9 X- J( O" ~, u. e) i- {  ]* D, ]

6 h3 J6 G. C' ^0 c" f/ L
图 4.4.16 Keil调试窗口

( y6 w3 @$ S* A8 D; L3 ~7 u" j这里重点介绍下第一控制调试运行状态的按钮:5 G' G0 [; i  N9 u

5 V7 F: x2 R1 [4 j# \Reset:复位,让程序从任一状态变为初始状态(跳到Reset Handler);
2 o8 s" h. `( \  @0 H! w6 U) z4 k3 p3 z, K9 u5 ?8 [
Run:运行(快捷键F5),让程序正常运行,遇到断点会暂停在断点所在代码行;
) Z( Y+ X" z, j7 c& w0 u" ?% l  n' k+ t* M  \  W: I) P
Stop: 停止,当程序在运行时,可以点击该按钮停止运行;5 P: k- g; y# h
, K4 }4 t7 E# s/ g- w9 p
Step:单步调试(快捷键F11),每点击一下,执行一条代码,遇到函数会跳进函数执行;
1 A, ?+ s3 t4 |3 u
9 R  B3 `0 v* N! D  KStep Over:逐行调试(快捷键F10),每点击一下,执行一行代码,遇到函数不会跳进函数执行;  B# L; ^+ C/ h* E

, q7 B9 E' x. u  BStep Out:跳出调试(快捷键Ctrl + F11),每点击一下,跳出当前函数一次,直到跳到最外面的主函数(main函数);) Z+ T* D( G7 C9 t

4 P8 `) e7 {+ |% }( WRun to Cursor Line:跳到光标所在行调试(快捷键Ctrl + F10),点击一下,运行到用户代码区的光标位置处停止,前提是光标所在位置能够执行;' U7 V% `. E! k$ P2 p$ }7 _

+ I- L$ ^) v4 I& j' n* lShow Next Statement:显示下一条语句,当打开了多个文件,不知道程序暂停到何处,点击该按钮可以跳到暂停处;" x" r" U5 `5 x7 _
& Q9 S4 R2 P. x. G3 S4 O
注意,每次修改代码后,都要按下Build(快捷键F7),重新编译修改后的代码,这样调试的才是修改后的代码。
$ h. F* F3 l; u  D( K! }  \6 W* i. j" K, {
下面来感受下调试,在前面下载程序时,体验过“2_GPIO—LED点灯”实验的效果就是蓝色灯间隔一秒交替闪烁。
1 x, V8 V' Y" I$ a
/ Z6 w# e  g. L' X; {进入调试窗口后,用鼠标选中“main.c”的28行,此时点击该行左边灰色方框处,或者点击功能菜单区的插入/移除断点按钮,就会在灰色方框处显示一个红色实心的断点,同理在30行添加断点,如图 4.4.17 所示。
, ?* Z, d" v& C& r
+ L/ A$ h& r' b) u& ]1 ^0 l  r同时,在18行左边有两个小三角形,蓝色图标表示光标所在的行,黄色图标处为要运行的下一条语句,可知此时程序暂停在18行处,还未执行18行。
: \' G$ _- v/ a' h, a) M6 K$ b2 J& @& h1 [7 M9 a# E5 I
69H3R]%]{CFWVUN3QA@H31H.png
( p5 g* m* l7 P. d
; O# t% v. T! B
图 4.4.17 添加断点
3 d. m: |2 [4 l. B) k: C
接着按下Run按钮(快捷键F5),可以看到小三角形跳到了28行断点处,表示现在停在了该行,因为还没有执行这一行代码,所以蓝色灯还不会亮,如图 4.4.18 所示。6 q5 u1 C  Q1 @: [+ ~

& o' M" M, B2 W8 {9 v9 X( F) F
4O4L{@)8U~`0([A2$A}V8~G.png
) J* m( ?5 }- q! r; M% O$ d% V

; X- I$ y8 a2 o# |
图 4.4.18 断点1
+ N2 B; @; e% T2 {: @8 D- b
接着再按下Run按钮(快捷键F5),小三角跳到了30行,此时观察开发板蓝色LED灯已经点亮,但还未执行30行关灯代码,如图 4.4.19 所示。( c! D9 ^8 l$ }9 _" p8 d" m- E" R
7 H$ ^4 L8 a# Y. M2 g6 U$ u! O
{J]4(3%9RQK8}9MAMRBRL5V.png
* q8 ]3 \* V$ [$ l
" s, k' A. u* c7 m7 V
图 4.4.19 断点2

" L5 J2 E% z( Q2 Z  D* G 再按下Run按钮(快捷键F5),因为循环的缘故,小三角又跳到了28行,此时观察开发板红色LED灯已熄灭,28行点亮蓝色LED灯还未执行,如图 4.4.20 所示。! e4 c. \% x8 Z/ g
, K; G0 M1 w& t' H9 {
]81@KAT2OQ(X(YI1OJ0}V.png
6 k+ V( @; D) x

7 D( |) E8 S/ K/ C
图 4.4.20 重复断点1

" [2 n+ f/ ]. Y- {: T3 ]% r: ? 通过调试,可以控制代码一句一句的执行,从而方便观察现象,排查问题。当然,调试远不止这些,实际开发中,还会查看寄存器值、变量值等,这些在后面实验中需要用到的时候,再详细讲解,目前读者只需要了解调试概念、基本操作方法即可。( I& a6 Z9 X( O7 x  J( F5 U$ R
作者:攻城狮子黄
& c9 z: u: L( W9 J* {1 c: M) R5 O. D. f6 p) }& H' g
9 e  z: I) {* l: h
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 手机版