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

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

[复制链接]
STMCU小助手 发布时间:2021-11-20 23:00
1.最小硬件系统
7 f) A; z% V, Q7 Z
+ {; `5 j* v. V# ]让 STM32F030 运行起来非常简单,在硬件上仅需给数字电源和模拟电源引脚(VDD,VDDA)供电,最好分别加上去耦电容。推荐值: VDD引脚加 1个4.7uF并联几个0.1uF 电容,VDDA 引脚加 1个1uF并联 1个0.01uF电容。电容值大些小些,甚至不加,对调试都不会有太大影响。8 o/ q- t& ?' {

1 l: V+ n8 g& Y* y, m5 c9 ?需要注意的是 VDD 需要在2.4V和3.6V之间,VDDA需要大于等于VDD。当然我们最常见的用法是把VDD和VDDA都接到3.3V。# o6 y" O. k: O. o9 Q3 s6 x
2 q  P) A, R/ d
VDD和VDDA之间用磁珠隔离一下,有助于提高模拟部分电路(ADC, RC震荡器,PLL等)的稳定性。: E# t/ g( q) |- w' y
* u4 c: o) A0 q6 d
2020013017433142.png

! W( K3 v( T& k' d0 z% d4 }( _3 K" D
如上图,是一个可以让单片机工作起来的最小硬件系统。Boot0 引脚需要下拉到地。注意电路中没有时钟,单片机使用的是内部自带的 RC时钟 HSI(High-speed internal (HSI) RC oscillator),频率是8MHz。这个时钟在出厂时会做校正,全温度范围内精度在5%左右。如果需要更高精度的时钟源,需要外加晶振,或直接把时钟输入至 OSC_IN引脚。
% r5 b6 Q) a' v& ~. C3 R; r/ ]9 O9 H1 G0 x1 j
2.下载调试器- S" _3 _  r: T' D% |5 O
/ t8 z! g- g! W
需要用带SWD调试接口的下载调试器,如 ST-LINK/V2,或 JLink。
4 I) k1 x) E6 Y0 |1 n! ]; q" B/ N5 K5 M6 G  l
下面是标准的 20引脚 JTAG/SWD 接口。我们只需要用到其中的 5个引脚:
. V: H* u% L1 o* X% v& ]; @$ q
1 VAPP, 接目标板上MCU的电源引脚 VDD。它的作用是让调试器知道目标板电压是多高。9 ^- W' t) t0 E  j6 n1 s
. z( f4 u" j4 S; i' r
7 SWDIO, SWD 双向数据线。! e+ w3 G+ _; N- C- I
$ w+ E6 x$ z& Y
9 SWCLK, SWD 时钟线。
9 g  K0 ~: w7 R" I$ ~4 O
0 [  ~% ^1 ^" h1 s, u! V9 x% p6 y7 @! K10 GND, 接目标板 GND。' A6 q3 x" h( }$ [1 l2 V
' f" K. t6 `+ _1 L" G; u! U% \
15 NRST, 复位引脚,接MCU的复位引脚。此引脚可以不接。
7 @" J. |# C5 F. H0 R
  `5 |0 X( m0 [0 G注1:ST-LINK/V2的4,6,8,10,12,14,16,18,20 都是GND。其它调试器请参考所用调试器的文档。7 K& P+ P0 T9 u. }( {6 L

* \8 V; k4 R% d8 m$ g注2:有的调试器可以从 19脚 对外供电。如果调试器没有供电能力,或目标板功耗较大,需要对目标板独立供电。
) ]0 q" h9 b% ~3 U: r9 G/ A) z
/ d$ D' y: i, X" J" a- R: [
20200130174323430.png

5 Q2 o# D& i1 F7 H2 y+ O  E% b6 W. _  L2 \7 t" }+ X3 \/ s( I
ST-Link安装后可以在设备管理器找到:8 q' |& M+ }, [' K8 f

4 q7 w3 Y; h9 o  ?( h
20200130174330974.png

$ J1 V3 ^; C" v7 b; g+ `( ]$ G* }' X/ P5 r; C& N& K7 @
3.Keil安装,官方代码的下载调试
, z9 e2 t( K% ?/ z# W
( K0 }' p5 _. N, v: z6 D6 C从ST官方网站下载 Keil,和例程 STM32CubeF0。安装过程从略。: _4 d3 u! n( L* N+ r

  q& d2 S9 e  i, C
20200130174327141.jpg
" p+ k# V  c1 d" O' H) d  b* c

! ?7 g6 V" X" _: F' F
20200130174330958.jpg
" o( ?6 [$ F" ^4 I) K  d( y. {. v
. `( [3 h5 ?& R8 }: T& l. B) X8 b
解压并用 Keil打开下面这个工程:
! ?/ x6 _8 C% ?( B6 s( f% Y+ v- M* M! L2 R! g) w" q: X6 }3 g* ?
\STM32Cube_FW_F0_V1.11.0\Projects\
8 L5 w( [3 A2 F
( {$ ]$ p. _" n: ]) @9 N7 s7 B" ESTM32F030R8-Nucleo\Examples\GPIO\GPIO_IOToggle\MDK-ARM\Project.uvprojx
3 [$ b6 R) \! t* I8 M5 E' E1 m) Z3 P- Q8 l
20200130174323994.png

5 V- n: }5 i. }1 s/ l) Q4 n. f
- ?: e/ w3 ^: W: ~4 m0 G我们可能需要通过 工程目标选项(Options for Target),把调试器更改为实际使用的调试器:5 ~7 T  E1 Q1 C
! A$ |& I% c; S1 j& I2 Y
20200130174331151.png
3 i7 S4 f/ Q& p! S& l
' Z# L2 |, Q5 o1 c/ g0 R6 e
之后 编译代码,下载代码。在左下角可以看到进度条:
" I& f( q0 @" @; v
2 h" {4 T9 `0 J# a5 {* T: e6 `
20200130174331462.png
  ~9 ~( q0 Y+ Z. h* x9 ]( W
+ k) d2 _" _% d. B6 w. Z, J
下载成功后,点击 调试代码 按钮,进入下面这个界面。可以看到寄存器窗口(Registers),调用栈窗口(Call Stack + Locals)。  s; m/ i2 q" N! \
7 c, Q  A2 F" P' _; K, l% i
左上角有 复位,全速运行,停止,步入,单步,步出,运行到某行 等调试工具按钮。我们可以通过 View 这个菜单添加更多的窗口,比如 Watch Window, Memory Window, Disassembly Window 等。
+ i9 i( t6 G6 [+ a1 L) D( T
( v+ B( }. k9 T0 |) \$ i" a0 e  v
20200130174331448.png
1 B- _4 j4 u! o( v. }

- I2 w; w6 W* S: u6 Q我们点击 全速运行(Run)按钮,如果用的是 NUCLEO-F030R8 开发板,可以观察到板子上一个 LED灯(连至MCU的 PA5引脚)不停地闪烁。" |1 z. I$ v6 l2 h  k/ ?$ _7 A
2 b8 d. g7 D0 z) d- g' a0 R3 ~8 m
在这里我们可以看到下载代码后程序默认停在 main( ) 这个主程序入口。但是如果我们试着点一下复位按钮(RST),会发现程序停在了一段汇编代码里:
  i% x7 Q. D7 K/ w9 z0 w
* Q# c1 f9 W& t1 a
20200130174331367.png

( d  O1 g+ M: I% Q8 V) Z6 o
& s0 J8 V+ U1 r. e5 o9 ^* G那么究竟 MCU 从一上电到开始控制 LED 灯闪烁,都经历了些什么呢?我们会在接下来的文章里进一步探讨。# K  j( I3 l5 u  a1 I7 ^0 u
  k2 O/ p: D" i( m' U8 \
0 a+ A5 m# J0 @" J! U$ O
赞 收藏 评论0 发布时间:2021-11-20 23:00

举报

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