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

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

[复制链接]
STMCU小助手 发布时间:2021-11-20 23:00
1.最小硬件系统/ A2 G1 j  M% C  y
* f; q, @, O, c9 _* ^# K4 B
让 STM32F030 运行起来非常简单,在硬件上仅需给数字电源和模拟电源引脚(VDD,VDDA)供电,最好分别加上去耦电容。推荐值: VDD引脚加 1个4.7uF并联几个0.1uF 电容,VDDA 引脚加 1个1uF并联 1个0.01uF电容。电容值大些小些,甚至不加,对调试都不会有太大影响。! p! h6 x, g0 u* ?
* E$ `, \3 t6 A) z5 a
需要注意的是 VDD 需要在2.4V和3.6V之间,VDDA需要大于等于VDD。当然我们最常见的用法是把VDD和VDDA都接到3.3V。
$ B& S7 u# W. X1 [- C' f+ g6 A$ i. M5 E" }& [1 x2 Q
VDD和VDDA之间用磁珠隔离一下,有助于提高模拟部分电路(ADC, RC震荡器,PLL等)的稳定性。5 e. L& O: j( y
% d8 P% e9 W: `) w( }5 P6 r
2020013017433142.png
$ Y9 Y% H( a: h9 [1 G' J% `  h+ N

3 D. d! u& m) u" C/ I) s5 |如上图,是一个可以让单片机工作起来的最小硬件系统。Boot0 引脚需要下拉到地。注意电路中没有时钟,单片机使用的是内部自带的 RC时钟 HSI(High-speed internal (HSI) RC oscillator),频率是8MHz。这个时钟在出厂时会做校正,全温度范围内精度在5%左右。如果需要更高精度的时钟源,需要外加晶振,或直接把时钟输入至 OSC_IN引脚。! T, Q7 R0 n  t! M

' j' ]* w( O% L( h. {' p2.下载调试器. b& d9 P, f/ U. U

( B0 s) J2 d, X4 j需要用带SWD调试接口的下载调试器,如 ST-LINK/V2,或 JLink。
4 f6 T9 v) j) T& B9 d( T7 P" M; x$ P5 N' y+ }
下面是标准的 20引脚 JTAG/SWD 接口。我们只需要用到其中的 5个引脚:
& l7 i0 U- t  q" {* I! o9 X" G) e/ O) v
1 VAPP, 接目标板上MCU的电源引脚 VDD。它的作用是让调试器知道目标板电压是多高。
% r2 s" [3 S. C5 U( q& H
" c/ [( S( y- O  t* _7 SWDIO, SWD 双向数据线。
7 n& R9 G* B% `: K: D7 C) w  R' D0 j
9 SWCLK, SWD 时钟线。
9 K7 v7 N% `0 O) u# v3 c! W1 I9 S; n* p- d
10 GND, 接目标板 GND。
* D+ R* }( t% P5 G& d- E  l1 P3 m1 g0 M7 A! p: T
15 NRST, 复位引脚,接MCU的复位引脚。此引脚可以不接。. [( b! \0 q7 t! a" F$ n

( p: P) `* s$ C4 s6 `注1:ST-LINK/V2的4,6,8,10,12,14,16,18,20 都是GND。其它调试器请参考所用调试器的文档。
0 U- m0 g# {4 [. H) s' R. G3 E6 @$ D( j" U8 L; n
注2:有的调试器可以从 19脚 对外供电。如果调试器没有供电能力,或目标板功耗较大,需要对目标板独立供电。
$ y0 U+ n+ ~  L9 c  f7 B% M- x) i( l" `) K! f
20200130174323430.png
6 d, Z( X* P, a' r$ C5 M9 r) a

  m2 H& y1 D2 @2 BST-Link安装后可以在设备管理器找到:
! B8 M5 n: D4 s5 q8 ?5 V$ L- Z. G, V1 }& _7 b6 l, j
20200130174330974.png
" |5 S; V2 b5 n  b7 I8 q! F  j2 N
" S$ a, I# W0 }9 |$ m% s
3.Keil安装,官方代码的下载调试
8 N! F6 h- p) f; I* V& w$ w# U7 c% S5 k0 k' P: Q! _2 J1 K
从ST官方网站下载 Keil,和例程 STM32CubeF0。安装过程从略。$ O" }6 t: G6 K

3 t& C; ?0 H" I# J
20200130174327141.jpg

! [$ M( i  n8 S* U3 z& b. q' j! m% m) H' c9 v. |0 S' F
20200130174330958.jpg
( L' P* W6 z( |& r8 w$ q

6 m& P! w5 {5 M9 F解压并用 Keil打开下面这个工程:" ^& i  Z  M# w5 ?' ~0 ^5 Y. z6 {

2 W/ `. o: m6 F; c( N! \5 Z\STM32Cube_FW_F0_V1.11.0\Projects\
# K1 R$ p; o1 S! J8 u: H, @  ?" }4 ]& q$ U. ]( _
STM32F030R8-Nucleo\Examples\GPIO\GPIO_IOToggle\MDK-ARM\Project.uvprojx$ V2 i4 N/ j0 @# P% [
. X% ^3 |$ ^4 S1 t
20200130174323994.png
0 J' c$ r, b; C5 D; g8 E
; `4 X; x  C4 |: m" G/ w$ a# F
我们可能需要通过 工程目标选项(Options for Target),把调试器更改为实际使用的调试器:
' t) E  [. u3 T3 P, V7 w: ~
+ ^( ^9 \* i% T" @
20200130174331151.png

+ k+ `' p: [5 |% P# R
: {3 N+ U) @4 z5 z; |" F6 _/ r之后 编译代码,下载代码。在左下角可以看到进度条:" x0 |9 c# n. l
+ |( G  U1 _9 c7 j
20200130174331462.png
- ]4 Y- N: T: ]% f4 `" f% [8 {
' c2 \; x1 a6 [" y! M: s5 Q2 R- M: u) y
下载成功后,点击 调试代码 按钮,进入下面这个界面。可以看到寄存器窗口(Registers),调用栈窗口(Call Stack + Locals)。  F  t: b8 S2 e# D
  s) x1 x/ K* h* A
左上角有 复位,全速运行,停止,步入,单步,步出,运行到某行 等调试工具按钮。我们可以通过 View 这个菜单添加更多的窗口,比如 Watch Window, Memory Window, Disassembly Window 等。
/ p7 {1 o  c' L9 Y4 @
1 ?" l* H; H- D, `" M! M3 ~1 y
20200130174331448.png

  ]( d9 U  ~0 w7 p' n* ?- j' D, K- r0 I! R6 ]
我们点击 全速运行(Run)按钮,如果用的是 NUCLEO-F030R8 开发板,可以观察到板子上一个 LED灯(连至MCU的 PA5引脚)不停地闪烁。
* O, g! c/ S% C$ ]- D3 m' T5 S# I: F, u2 D  T; S  T
在这里我们可以看到下载代码后程序默认停在 main( ) 这个主程序入口。但是如果我们试着点一下复位按钮(RST),会发现程序停在了一段汇编代码里:5 {' E  `' N" k4 ~

& `8 _% A2 ]/ L
20200130174331367.png
1 y5 I1 n, i5 f# ]3 t
" w2 }1 J6 S7 o. m$ [5 K" b
那么究竟 MCU 从一上电到开始控制 LED 灯闪烁,都经历了些什么呢?我们会在接下来的文章里进一步探讨。
% m8 j' P3 U$ n0 m5 D4 ]+ n5 _8 P' M
3 x7 ?; f! j* ^3 Y
收藏 评论0 发布时间:2021-11-20 23:00

举报

0个回答

所属标签

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