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

【经验分享】STM32F0单片机快速入门二: 开发环境的建立

[复制链接]
STMCU小助手 发布时间:2021-11-20 23:00
1.最小硬件系统
, |& x/ `& P4 d( H& S! a& V5 @% Q9 x6 J+ b( k  X3 X' q
让 STM32F030 运行起来非常简单,在硬件上仅需给数字电源和模拟电源引脚(VDD,VDDA)供电,最好分别加上去耦电容。推荐值: VDD引脚加 1个4.7uF并联几个0.1uF 电容,VDDA 引脚加 1个1uF并联 1个0.01uF电容。电容值大些小些,甚至不加,对调试都不会有太大影响。* K+ n1 ]" z, a' d/ j

- \" o- k" P" L" m% q, J. b- d需要注意的是 VDD 需要在2.4V和3.6V之间,VDDA需要大于等于VDD。当然我们最常见的用法是把VDD和VDDA都接到3.3V。
3 e; [; Z  ?" S: K8 i
9 K* D1 T$ i+ U& f5 o0 cVDD和VDDA之间用磁珠隔离一下,有助于提高模拟部分电路(ADC, RC震荡器,PLL等)的稳定性。
( ^0 {" I! G* f+ F" X3 S# |: f0 T) j3 B1 U# ^1 Z. B, D
2020013017433142.png
7 Q$ o+ Q8 B' W' b9 @

, s9 Q, S; M, L& S) X如上图,是一个可以让单片机工作起来的最小硬件系统。Boot0 引脚需要下拉到地。注意电路中没有时钟,单片机使用的是内部自带的 RC时钟 HSI(High-speed internal (HSI) RC oscillator),频率是8MHz。这个时钟在出厂时会做校正,全温度范围内精度在5%左右。如果需要更高精度的时钟源,需要外加晶振,或直接把时钟输入至 OSC_IN引脚。9 Q8 O6 X1 k) d$ x+ n! X

" U/ X- o5 b: q/ J1 j' y4 k2.下载调试器# t# S1 J' k+ [8 [" \9 q

2 r& x/ J( \0 I+ r需要用带SWD调试接口的下载调试器,如 ST-LINK/V2,或 JLink。- U' }7 g9 Z6 f% B
6 Q& Y: ^: n! l' Y
下面是标准的 20引脚 JTAG/SWD 接口。我们只需要用到其中的 5个引脚:. l2 H# H* z" [. b8 H
) i9 \6 O) D6 a3 d/ \. L0 Y
1 VAPP, 接目标板上MCU的电源引脚 VDD。它的作用是让调试器知道目标板电压是多高。% e( j; i8 Y  A# Z) |2 S3 w
) J4 Y3 U4 ^8 s, z  j
7 SWDIO, SWD 双向数据线。- _% E7 `1 @1 J
3 G* l( y. Y. U- ^$ L
9 SWCLK, SWD 时钟线。
7 G! q' P4 n" q$ K5 M, ~& T2 O4 [
+ p' P4 Z6 \& I. n1 p10 GND, 接目标板 GND。
8 W* Z# ]; K3 `* R% R  N, I+ y, d
15 NRST, 复位引脚,接MCU的复位引脚。此引脚可以不接。7 _' W, C  ]4 C& N, @3 W7 ]2 ~- m

; [: h4 _( C  V8 _0 c+ y6 t& b注1:ST-LINK/V2的4,6,8,10,12,14,16,18,20 都是GND。其它调试器请参考所用调试器的文档。
* R# |( N/ _6 Z$ m1 Q* Z0 g) p! Y1 z# ?2 P
注2:有的调试器可以从 19脚 对外供电。如果调试器没有供电能力,或目标板功耗较大,需要对目标板独立供电。2 ]! _3 H! |! G8 r$ u

4 ]* l+ V6 Q# G" ?& o. j5 o
20200130174323430.png
9 E; H: \  b8 O7 H$ X. K+ K
# T; H+ Z, c/ G' \$ E# b" b( P
ST-Link安装后可以在设备管理器找到:6 g- i* b, y) D4 N' p. c& T

) Q9 J) [: f0 p4 z
20200130174330974.png
7 g& x9 q- b: w, ^2 ?" i! a6 s
! S  `3 \  j  ^" }' y
3.Keil安装,官方代码的下载调试
. `7 m$ \8 d6 y+ y
9 V3 p; w6 ^$ _* \从ST官方网站下载 Keil,和例程 STM32CubeF0。安装过程从略。% n, q5 I+ V7 L
  o0 Y& }- Y& \, @5 Q' X- ^
20200130174327141.jpg
' ^! V. G7 R6 S9 Q
6 U6 Q0 d" R3 l& o2 ?! O* `
20200130174330958.jpg

3 b2 q4 S- j) i( h& s* ^# M: q0 R0 x) r, y# h; Q+ S! {3 }) F% G
解压并用 Keil打开下面这个工程:# `5 x# X- o  G' [( K

) k7 f% ~0 r; V+ {1 b1 N: z0 n: t\STM32Cube_FW_F0_V1.11.0\Projects\
- l, L+ W3 p' m3 g! K) R0 {5 R
6 Q5 p- b4 {$ J6 LSTM32F030R8-Nucleo\Examples\GPIO\GPIO_IOToggle\MDK-ARM\Project.uvprojx/ @3 X$ h1 B" _
& O. }4 w3 U, R% I1 g! V
20200130174323994.png

5 i; O' {6 }/ \0 q% Y% M5 R5 d" B" R
我们可能需要通过 工程目标选项(Options for Target),把调试器更改为实际使用的调试器:
7 ?, M* }( P  v- Z% X) k
- E' P( Q: S" W3 f
20200130174331151.png

+ H0 G; \% U. P: D' `) i& k* H7 O7 J% H5 Y# @1 W( C2 [
之后 编译代码,下载代码。在左下角可以看到进度条:! X, z  u4 E+ Q6 k+ E" y
- [9 `% F' X, e( ~+ s' ~
20200130174331462.png

$ h+ A( \( ^: T) _# t2 l7 r" l6 p7 a$ S# [+ R0 x" v
下载成功后,点击 调试代码 按钮,进入下面这个界面。可以看到寄存器窗口(Registers),调用栈窗口(Call Stack + Locals)。
" z. y# x3 O- h
- r: M; v, C: Y" m% n' p左上角有 复位,全速运行,停止,步入,单步,步出,运行到某行 等调试工具按钮。我们可以通过 View 这个菜单添加更多的窗口,比如 Watch Window, Memory Window, Disassembly Window 等。
0 S7 I5 ?+ f$ r! }3 T1 m
2 |( n" A& k( z) C# }" w0 U
20200130174331448.png
$ q  G# b* {1 o8 D3 {) k
; }$ @* V3 k4 l" W# z
我们点击 全速运行(Run)按钮,如果用的是 NUCLEO-F030R8 开发板,可以观察到板子上一个 LED灯(连至MCU的 PA5引脚)不停地闪烁。  O* F5 X0 ^  T' \& t6 n
! _) Z3 a" X8 ]; k
在这里我们可以看到下载代码后程序默认停在 main( ) 这个主程序入口。但是如果我们试着点一下复位按钮(RST),会发现程序停在了一段汇编代码里:' k, E% {! Y) l8 o
, L  a7 w0 G9 P4 G$ m$ \! f
20200130174331367.png

  h! @9 f0 O* T2 g" P* y6 \7 w2 R$ I8 J
那么究竟 MCU 从一上电到开始控制 LED 灯闪烁,都经历了些什么呢?我们会在接下来的文章里进一步探讨。2 g/ p1 ?3 o8 z% _
& M& O' q9 J" G0 U& d% c
! r  c( w) F1 I) B0 A" V0 j* R0 t
收藏 评论0 发布时间:2021-11-20 23:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版