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

【经验分享】STM32F0单片机快速入门一: ARM架构与STM32F0

[复制链接]
STMCU小助手 发布时间:2021-11-20 22:00
1.ARM架构简单介绍. [1 z9 ?% T/ N* T! ]' n

( \1 i! Z2 @% `) _9 g$ a" K2 F5 N市场上成百上千种的 ARM 芯片,如果我们去看它们的内核,却只有不多的几种。
0 J, `) N2 Q5 t# m7 J: H2 M4 B: i6 x9 x- f  O# V
从时间上来看,从1985年设计的 26 位地址总线的 ARMv1, 到 ARMv2, 一直发展到最近支持64位地址总线的 ARMv8。
! g( N( I) y8 x' b& P- C% P
1 U4 H3 |! U4 t3 b; J# `7 x最近这几年,在每一代 ARMvx 核心的基础上,根据不同的应用场景,又做了扩充或裁剪,形成三大架构:* \& H  ]6 p/ L) [8 \" w- y" i6 e
) I( A, [4 H: s5 B: U
A(Applications) 高性能,一般需要运行Linux等操作系统。
' A* p9 o, w: [4 [5 u  a2 M! a
& H. r+ G, e$ x; V# i7 |6 Y7 rR(Real-time) 需要实时处理的系统,一般应用与网络处理器,嵌入式控制系统。* K) }" X) N  T! R
  J. M7 b) a0 z) m
M(Microcontroller) 小体积,低功耗,一般应用于嵌入式系统。! X1 o( G! C1 K1 Q9 K9 H

- J3 Y$ ^+ x# d7 m& wARMv1 - ARMv5 已经成为历史了。我们对最新的 ARMv6 - ARMv8 做一个简要区分:' l+ U5 \" L1 x' {$ X
- G! ?& T- D+ H7 t  Y" ^. J
ARMv8-A1 `3 N8 X' D( @; N* Y

1 Q0 S8 C' c/ G. S8 [/ J& D0 N4 l  G高性能,支持64位指令集,同时兼容以前的32/16位指令集。针对安全应用引入Trustzone。
- B6 |; p' _4 U/ J1 V6 \
: G3 [3 A, F  e. `典型芯片如华为的麒麟系列,Kirin990 内部集成了4颗 Cortex-A76,4颗 Cortex-A55,每一颗频率都可以跑到 2GHz以上。同样高通的骁龙865也是集成8颗 ARMv8-A 架构的内核。
# Y8 z7 |, y# t7 n- u- R
0 O3 I9 @/ K" y1 L  d2 gARMv8-M
8 }- L7 d7 w6 Y7 S  P
4 w& H, V8 a$ k; D" y+ E: S. k4 Q针对嵌入式应用,支持32位指令集,兼容以前指令集。引入Trustzone。加解密运算通过硬件加速。
3 S0 d5 J" ?3 `- R$ t0 D* q: ?
" B( t% t& n! T; d典型芯片如 STM32L552 (Cortex-M33 内核)。主频可以跑到 110 MHz。. f) h9 N' e4 X3 U4 O0 S1 v/ c

* h( K# ]; ^0 uARMv7-A' u% q0 L: u5 B

2 x# }" H/ Z1 d# G# x支持 arm 和 Thumb 指令集,支持虚拟地址存储管理(Virtual Address Support in the Memory Management Unit)。跑 Linux 这类操作系统一般需要 MMU。这种架构主要面向复杂应用。; L" S7 l: r+ S' a
/ w7 y0 x6 j/ _0 l1 J' F8 W: p
典型芯片如 STM32MP151 (Cortex-A7 内核) 。主频可以跑到 650 MHz。
  T2 v4 ]5 O" F$ ]$ j' H4 ~6 k: y
ARMv7-R' M) l# y5 s! u/ E

0 J+ y) n% b6 P; M0 m支持 ARM 和 Thumb 指令集,但不支持虚拟地址管理。
& v6 a8 X; a% Q5 c9 O( G8 I8 Q3 H5 R- ~- t7 p! d9 B1 ^
典型芯片如 RM41L232 (Cortex-R4 内核)。主频可以跑到 80 MHz。
3 h9 a0 ^1 O+ M6 Y6 N4 z) x, a( ~7 ?1 {
" x& m0 x. m; t; X! ^* i2 c! zARMv7-M1 v9 a' V0 Q$ c6 v3 R2 ?6 m0 Z

. n& N/ P) ?& d. \% ?/ A' B只支持 Thumb 指令集。简化的流水线,更快的中断响应,针对嵌入式应用。+ F" Q' Z9 P6 J' y
$ k4 ^4 F$ c+ X/ U
典型芯片如 STM32F103 (Cortex-M3 内核)。主频可以跑到72MHz。
5 n! Y+ i* a- s; B
" a, t' r/ I. O! ~: s, ?, i  Q4 [ARMv6-M3 m  d/ P) W: T# [4 b

9 ^" m8 ]9 S& q3 f) |- n; M; _ARMv6-M 是 ARMv7-M 的一个子集。架构做了进一步简化,但是保持和 ARMv7-M 兼容。
5 x- x, I* _0 r, [; \: Z% y' Z
* Y) K8 v. \3 x7 E4 G典型芯片如 STM32F030 (Cortex-M0 内核)。主频可以跑到48MHz。- O1 b% |) d: F- \

6 D0 m4 @, i0 |/ DARMv5 及以前版本
: N: u! w) N. ?
% _$ O+ B0 w4 g8 o早期架构,已不推荐使用。
0 _" z( S2 ^: X% x' B1 M3 m: g  C" V, G$ N1 {
典型芯片:
! \* [1 Q* f* c# m9 y8 L$ g) v) x  e/ B
ARM926 (ARMv5)
0 T" N" Z1 c! a4 j8 I% n( T& q
9 {$ W4 }+ v1 C8 eARM7TDMI (ARMv4)
  c( q8 z  g0 P8 J! o2 ~5 f% u
2.STM32F030芯片简介
& E5 R; U$ j! E* @  D9 Q, U4 G' U$ S
STM32F030 的内核,采用了 ARMv6-M 架构的 Cortex-M0。这个系列提供了从 16K Flash, 4K RAM, TSSOP20 封装,到 256K Flash, 32K RAM, LQFP64封装的多种选择。% N- Y: L# k$ E1 b1 I  ?2 N  D
- ~' a. Y7 V- x: K) B( q# [5 G
同时这颗芯片集成了最常用的 UART,I2C, USART, ADC 等模块。在掌握了它的开发方法后,很容易拓展到其它的芯片。
, ^4 L" k! P; `7 M% W  C& O. X7 [/ D0 a$ @* ~0 U: m; w3 k% k. l
3.开发版0 U3 `/ j: o' b3 g/ Q: t, J

2 _* v- L8 k: c$ j0 a5 a$ r6 i硬件可以选用官方的 NUCLEO-F030R8" D3 c$ u9 @5 G+ K' T- w
4 @$ |6 t6 J& ?# x7 Y- U
20200123175508597.jpg

& s5 L% ?/ F) h  c, z1 J, [4 S: U# q& v8 `9 l7 K$ Q. y) v2 y
如图,这个板子由两部分组成。上半部分是一个集成的下载调试工具 ST-LINK/V2,下半部分板子带一颗 STM32F030R8T6,简单的 32k 晶振,两个按键和一个LED 指示灯。它把所有的引脚都用排针引了出来,可以方便用户扩展电路做评估。* u) Q7 W& i' k" ]* T
3 u& u8 ?$ l' u# J
上半部分的调试器部分可以从板子上切割下来单独使用,调试用户做的板子。用户也可以从网上单独购买 ST-LINK/V2调试器。
& P  a- h. ^- _: \. ?- a- u, J) v
& @# n* u) Y; f  m) d1 W# H4.集成开发环境(IDE)  K. [$ |( n# W% D
# ]5 N* a9 ^+ H5 V$ M' K
对于 STM32F0/L0/G0, 在 ST 的官方网站上可以下载到正版免费的 Keil。4 v& W+ W5 G% V/ `2 @2 ?

5 C  ~! f8 }* x& TArm Keil MDK for STM32F0, STM32L0 and STM32G0
/ Q/ p; _3 J/ ^: v; ^' V5 p; V# W$ u/ b, c' s/ c
这个版本没有时间限制,但是代码有 32K 的限制,对一般应用来说也够了。2 [3 F9 m2 J1 }- E8 C
2 u3 g8 f4 @' X( g) [: q
20200123175503310.jpg

8 N0 n  J  G/ f5 }% e/ B9 m, |1 m% S1 S7 y8 b) z% p3 {

  Y/ r, _3 E; j# X$ ~- l" v+ w% L  R6 G; Z* _- o7 E
5.软件代码0 C% {( |* s- J) ^+ D
; e2 j3 \. p$ R( T$ v4 @
ST早期的代码都是基于 Standard Peripheral Library,最近ST的软件逐渐统一于 STMCube。它对软件进行了更科学的分层管理,更易于在不同的平台间移植。可以极大的缩短开发时间。如果是新项目,可以从 STMCube 入手。以前的软件库将逐渐淘汰。( k7 A1 K1 L/ C4 J
; J+ B7 j8 m0 Y! S2 ]1 F; R0 p. f
对于STM32F030来说,对应的是 STM32CubeF0,在官网可以直接下载:% O& I" a- S+ M5 E
! {2 M0 j& G9 S, ]  _
20200123175511938.jpg
: c- a9 _& D- L8 `3 I- z
9 {  q: _2 V0 F( \

4 E- Q" G# e- j( ^4 P0 P4 p0 A- b+ ^

, w  J- P8 r! C/ e( `
20200123175508597.jpg
赞 收藏 评论0 发布时间:2021-11-20 22:00

举报

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