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

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

[复制链接]
STMCU小助手 发布时间:2021-11-20 23:00
1.最小硬件系统( g. `) M3 r  E/ e$ i0 p
3 `% s6 b) X2 @0 R' f
让 STM32F030 运行起来非常简单,在硬件上仅需给数字电源和模拟电源引脚(VDD,VDDA)供电,最好分别加上去耦电容。推荐值: VDD引脚加 1个4.7uF并联几个0.1uF 电容,VDDA 引脚加 1个1uF并联 1个0.01uF电容。电容值大些小些,甚至不加,对调试都不会有太大影响。0 s, ]; T/ W+ p: H
6 i, s& u* b- y1 t. n, a
需要注意的是 VDD 需要在2.4V和3.6V之间,VDDA需要大于等于VDD。当然我们最常见的用法是把VDD和VDDA都接到3.3V。8 Y9 z# J5 L5 v  E6 X9 [+ b7 J

7 x# `- i# |* i8 m; F: kVDD和VDDA之间用磁珠隔离一下,有助于提高模拟部分电路(ADC, RC震荡器,PLL等)的稳定性。: e' P& p* r& Y2 [# G5 q+ P' F/ i
9 s' O. |  z9 d) a8 G9 _9 Q
2020013017433142.png

6 s3 {3 V- b' L# _8 s0 l1 I! L, r9 D7 {  l% b) K6 P9 G0 ]
如上图,是一个可以让单片机工作起来的最小硬件系统。Boot0 引脚需要下拉到地。注意电路中没有时钟,单片机使用的是内部自带的 RC时钟 HSI(High-speed internal (HSI) RC oscillator),频率是8MHz。这个时钟在出厂时会做校正,全温度范围内精度在5%左右。如果需要更高精度的时钟源,需要外加晶振,或直接把时钟输入至 OSC_IN引脚。( D7 S6 h. e* J1 j

7 m) C0 O2 \/ ?2.下载调试器: u9 k7 S9 ~# n% e: K5 `3 K
9 V9 f) X* R4 l! T+ K- @" L8 d
需要用带SWD调试接口的下载调试器,如 ST-LINK/V2,或 JLink。
6 r! I, K1 u, q. |. x& _! l. d8 H& C; N
下面是标准的 20引脚 JTAG/SWD 接口。我们只需要用到其中的 5个引脚:) @4 T- l7 }  G: p

6 R; o) R9 |, A$ h9 H$ f1 VAPP, 接目标板上MCU的电源引脚 VDD。它的作用是让调试器知道目标板电压是多高。
" Q& W% ^/ {: }* i. A; ]. E
% f0 Y, y' j# D' ^! j7 F# M$ D! U7 SWDIO, SWD 双向数据线。# H2 h) s) E2 Z6 A! B

' L: q  ^3 y+ d6 V' u9 SWCLK, SWD 时钟线。' r# h4 H% [4 u. i$ o
5 P/ R  z7 R+ Z  i8 y, b. f
10 GND, 接目标板 GND。
3 f/ A$ Z2 O$ t0 [! ?; M8 s$ J* G5 Q! n# u
15 NRST, 复位引脚,接MCU的复位引脚。此引脚可以不接。
0 |4 e( a. e' B1 e6 X8 F6 H, f/ z( \3 t# O6 j: X  G) t
注1:ST-LINK/V2的4,6,8,10,12,14,16,18,20 都是GND。其它调试器请参考所用调试器的文档。
9 d4 \" [$ ]) d  |: f) l& ~( [/ ~$ ]* W( T* N0 y( h
注2:有的调试器可以从 19脚 对外供电。如果调试器没有供电能力,或目标板功耗较大,需要对目标板独立供电。3 B; E4 e3 U1 B* [; [
5 X2 ~2 p/ v8 {) F& O; r
20200130174323430.png
7 j- \0 |  ?6 D. s# H

7 H$ q5 d; C; ^" BST-Link安装后可以在设备管理器找到:
/ I) f! X: }/ C- r: e$ I; e  V2 Z. R% U
20200130174330974.png

* g# ]0 u" F% a& O
6 Z7 s( O, H! N( C3.Keil安装,官方代码的下载调试5 ?: P" |0 J/ `- u
/ w+ ?& m9 n9 f  A, [  z$ Y
从ST官方网站下载 Keil,和例程 STM32CubeF0。安装过程从略。
, V7 m$ v- M" [0 T9 o! i% h9 f3 ]5 p, m2 w7 s5 C. j
20200130174327141.jpg
- r" u. G" i4 j( q3 A
$ ^7 p  o/ n9 e: g, H7 ^
20200130174330958.jpg
# V/ I4 t- ]1 K& k% c5 H: b- w& F# A

( n0 H) M% f6 l/ J1 t解压并用 Keil打开下面这个工程:8 _" i- ?* y  ?# f- q3 C! t& q9 ?
6 x3 M6 o$ K$ Z5 [$ o: C
\STM32Cube_FW_F0_V1.11.0\Projects\) ?* o* k4 U" a: q: ?) O$ [

. @6 B1 Q$ i3 d& i1 R! MSTM32F030R8-Nucleo\Examples\GPIO\GPIO_IOToggle\MDK-ARM\Project.uvprojx2 r/ x# ^# ?# G) a( T: T9 a$ H9 O/ L

0 L, F. D" J) A+ }8 u, ?! |! G
20200130174323994.png

( J) i2 W; `  Y, l, v% z! _8 d5 Q8 J) B; c3 i8 A9 h) R
我们可能需要通过 工程目标选项(Options for Target),把调试器更改为实际使用的调试器:
$ z; A1 [* H: M6 _4 N1 Q3 d2 z
20200130174331151.png

# t' F. a) [$ s7 l1 Y8 G/ X
! P( V/ l6 m. d8 n5 ]之后 编译代码,下载代码。在左下角可以看到进度条:9 g: Q$ u7 ~# l9 a
, X* g" p# U' p& @/ r+ ]
20200130174331462.png

, Y; M0 g3 Z4 @* Z' G8 X% X  [8 Y% ?" J! g. W* d9 \8 m
下载成功后,点击 调试代码 按钮,进入下面这个界面。可以看到寄存器窗口(Registers),调用栈窗口(Call Stack + Locals)。
* A/ u' {( Y. I8 [) |9 }* h! g# R8 P) B3 y+ ^  X' y4 d) I
左上角有 复位,全速运行,停止,步入,单步,步出,运行到某行 等调试工具按钮。我们可以通过 View 这个菜单添加更多的窗口,比如 Watch Window, Memory Window, Disassembly Window 等。
& `8 X! Y1 X- q+ H- {- I3 u; u2 i; R% y( Z( Y  P
20200130174331448.png

) `) ]; A8 c5 o& `$ C6 x( \4 P
" Z9 h$ Q# f/ L: x5 F- x% D我们点击 全速运行(Run)按钮,如果用的是 NUCLEO-F030R8 开发板,可以观察到板子上一个 LED灯(连至MCU的 PA5引脚)不停地闪烁。
9 v2 r( b6 D: E+ Q
" {; ]: I0 M. A5 ^* w( I在这里我们可以看到下载代码后程序默认停在 main( ) 这个主程序入口。但是如果我们试着点一下复位按钮(RST),会发现程序停在了一段汇编代码里:
* Y$ t. l; G: I7 T
9 ?& ~8 C4 ^3 g
20200130174331367.png

5 f) Q+ m, f  t* ^2 h. R" C9 m/ n1 j3 b: ~
那么究竟 MCU 从一上电到开始控制 LED 灯闪烁,都经历了些什么呢?我们会在接下来的文章里进一步探讨。
$ Z! w! }$ k$ u. T3 k
6 s& w' L0 r; `  P3 C/ Q
: g- g6 |/ n1 x0 j; e
赞 收藏 评论0 发布时间:2021-11-20 23:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版