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

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

[复制链接]
STMCU小助手 发布时间:2021-11-20 22:00
1.ARM架构简单介绍
2 V% ^- {5 T/ U" ?  z( U
7 Q- ]4 K; {+ X; q! r: L" T市场上成百上千种的 ARM 芯片,如果我们去看它们的内核,却只有不多的几种。
7 G1 P4 `. _' D) s5 ~, S# o; c; E
3 S2 N+ p4 R+ x# [9 J5 D' l从时间上来看,从1985年设计的 26 位地址总线的 ARMv1, 到 ARMv2, 一直发展到最近支持64位地址总线的 ARMv8。' M$ P+ _9 l7 q% P
, G/ B% `/ c. k; p9 f5 n
最近这几年,在每一代 ARMvx 核心的基础上,根据不同的应用场景,又做了扩充或裁剪,形成三大架构:
8 B2 c& n* p; P
& P' S  I) J) T. h9 R8 ]# hA(Applications) 高性能,一般需要运行Linux等操作系统。
% o1 `# E3 C: L5 I: T& g# p, `4 l. p3 [8 k
R(Real-time) 需要实时处理的系统,一般应用与网络处理器,嵌入式控制系统。
1 ]1 D( Q3 d# e0 n9 V# G9 Q% m6 n
M(Microcontroller) 小体积,低功耗,一般应用于嵌入式系统。
8 q) h* j; {- P$ f1 X; p3 g! |( k
3 `8 B9 u5 g" {4 DARMv1 - ARMv5 已经成为历史了。我们对最新的 ARMv6 - ARMv8 做一个简要区分:
5 y3 g/ f& @# G* K, p: v; C3 {3 i& M: p
ARMv8-A/ G# R- E3 C  z$ S; ~: b& ]% u
2 d) i) E0 q! _$ Z3 M
高性能,支持64位指令集,同时兼容以前的32/16位指令集。针对安全应用引入Trustzone。
; l  l: m( [: k, d
  m7 p) j9 f! N" p1 X- d典型芯片如华为的麒麟系列,Kirin990 内部集成了4颗 Cortex-A76,4颗 Cortex-A55,每一颗频率都可以跑到 2GHz以上。同样高通的骁龙865也是集成8颗 ARMv8-A 架构的内核。
) A5 ]. e% z- k6 Z: V+ D9 O
( U2 y( X/ Z4 A3 [ARMv8-M
6 V& ^3 M5 ^: T$ h1 ?
4 j4 U9 J9 m+ l! f& i3 N, p针对嵌入式应用,支持32位指令集,兼容以前指令集。引入Trustzone。加解密运算通过硬件加速。
# g: f' r3 T( ]. N# Y; R0 R* n) @5 t( z& e* K
典型芯片如 STM32L552 (Cortex-M33 内核)。主频可以跑到 110 MHz。
0 r- ]1 f1 |- A* f  k8 }. a+ \% c5 ^' A9 s6 K# X6 S
ARMv7-A
+ ~* X$ l/ i4 u
5 v. d& M$ C. g, X支持 arm 和 Thumb 指令集,支持虚拟地址存储管理(Virtual Address Support in the Memory Management Unit)。跑 Linux 这类操作系统一般需要 MMU。这种架构主要面向复杂应用。# D  D# p- y2 r# g) U' I8 w' [
+ a3 K5 N$ I! h6 x4 d- N0 ~
典型芯片如 STM32MP151 (Cortex-A7 内核) 。主频可以跑到 650 MHz。
0 z4 q- j7 }6 Z: z6 i0 H( _
1 a4 S! {  L3 h. U3 }; ~3 G  _' K3 _ARMv7-R) @6 f* N/ X4 i: K9 V5 j$ N
/ C! r, X. r2 [0 [
支持 ARM 和 Thumb 指令集,但不支持虚拟地址管理。
/ P5 \6 P( m" V& j9 s6 D$ d- }2 m9 ~, s  M4 T! A4 S# Q
典型芯片如 RM41L232 (Cortex-R4 内核)。主频可以跑到 80 MHz。- ^4 S; {- U; q8 z/ T: A: I2 U
6 X% x6 i6 x/ Z9 t% p
ARMv7-M
5 ]9 A( R3 r9 u1 }5 P! n. e; H- w5 v- f) j- G% M$ x) |* V8 }' T
只支持 Thumb 指令集。简化的流水线,更快的中断响应,针对嵌入式应用。9 E+ G5 d8 B; @3 N0 M9 K5 W$ H

2 U- X# C& W1 p4 c; A# D" m9 _典型芯片如 STM32F103 (Cortex-M3 内核)。主频可以跑到72MHz。
! a, ^' ~8 K& Q& x+ R8 b7 m& k" o4 W2 M6 A6 R" q/ u- Q% N6 E3 S3 ^
ARMv6-M' O) J3 U+ j# M; W( B

* I6 p3 \2 E7 l. J5 v7 X$ XARMv6-M 是 ARMv7-M 的一个子集。架构做了进一步简化,但是保持和 ARMv7-M 兼容。
4 r6 l, a4 |3 d. l9 @( V/ u3 ?3 y7 l% E. F
典型芯片如 STM32F030 (Cortex-M0 内核)。主频可以跑到48MHz。+ T2 c, k- m1 K' d) t! M
+ w( A! a# z! U* h9 X' S: B7 }
ARMv5 及以前版本
( R) S0 }( j+ X. G  v
9 u4 |& k3 E) K$ o早期架构,已不推荐使用。
0 w( @0 i* h" b
7 }! I& l2 I6 J$ k' s1 Z9 S典型芯片:& k. n# l0 s% t
: e4 E& n6 \) x/ T% E- J- S! ?
ARM926 (ARMv5)/ A1 L8 M( C: u4 f5 }, T- q2 F9 ~$ `4 G

0 u0 ]$ H1 O# N$ \% M, EARM7TDMI (ARMv4)7 Q, w$ U7 Z$ b: r
8 A8 @! \, Z% {" `
2.STM32F030芯片简介
5 m6 t% E1 i3 t% {
4 z; h6 B/ \9 YSTM32F030 的内核,采用了 ARMv6-M 架构的 Cortex-M0。这个系列提供了从 16K Flash, 4K RAM, TSSOP20 封装,到 256K Flash, 32K RAM, LQFP64封装的多种选择。2 Z8 E( w* R& J4 D8 |
7 y8 S5 Z$ l% t4 M1 T! M
同时这颗芯片集成了最常用的 UART,I2C, USART, ADC 等模块。在掌握了它的开发方法后,很容易拓展到其它的芯片。
* a& i2 K' G6 @+ t: D$ _! I0 Y. O+ e/ [1 T+ R, L
3.开发版" z" V, u( x5 y# z/ I) @
3 R# `' }+ P* n% N6 q6 g: w  \
硬件可以选用官方的 NUCLEO-F030R8
5 L0 ?% T2 s* }5 A- S+ ?, ?
$ R- x+ c# _% u* W
20200123175508597.jpg
# X: O4 o3 G3 K! l
1 I5 l6 P/ U7 m) f! Y9 h6 Y' v
如图,这个板子由两部分组成。上半部分是一个集成的下载调试工具 ST-LINK/V2,下半部分板子带一颗 STM32F030R8T6,简单的 32k 晶振,两个按键和一个LED 指示灯。它把所有的引脚都用排针引了出来,可以方便用户扩展电路做评估。
; O3 f5 b) a; M$ ?( s7 {
0 h; }+ |& l0 r% R% q# B- n上半部分的调试器部分可以从板子上切割下来单独使用,调试用户做的板子。用户也可以从网上单独购买 ST-LINK/V2调试器。
: u2 [# \/ R1 }+ s  h
2 i9 z, c9 c! f, h4.集成开发环境(IDE)
- T' q4 L6 Z8 Z8 E0 {8 l9 s! w: i+ X
( _( n# f' g/ M8 \" Y( a: u7 v$ i对于 STM32F0/L0/G0, 在 ST 的官方网站上可以下载到正版免费的 Keil。
5 C2 Q1 u1 W( c# [7 T* ^. B
( i6 k& ^# z/ u0 Y8 r8 {! gArm Keil MDK for STM32F0, STM32L0 and STM32G0' r7 b+ z) v- R& \2 p# l; Z8 ?

/ n& |1 x0 j4 W" |! i这个版本没有时间限制,但是代码有 32K 的限制,对一般应用来说也够了。
- I1 ~( m8 M9 K4 r7 q, g6 m- s9 q2 D, t( L7 {" N  V" G
20200123175503310.jpg
$ }* n" f- i/ k. N. y5 F! L
9 F8 i2 [; p. [  |4 q6 R; Q0 m

' w- S8 |2 N: p$ |* x# p( E. J$ @4 ^
5.软件代码
) K% W/ @6 F5 n
+ ]0 t& `, n/ z* l! O' |ST早期的代码都是基于 Standard Peripheral Library,最近ST的软件逐渐统一于 STMCube。它对软件进行了更科学的分层管理,更易于在不同的平台间移植。可以极大的缩短开发时间。如果是新项目,可以从 STMCube 入手。以前的软件库将逐渐淘汰。
/ T* X9 N2 w4 {1 ^1 Z9 D2 K; c8 ~$ G+ F3 C$ v6 l" J
对于STM32F030来说,对应的是 STM32CubeF0,在官网可以直接下载:
6 g1 H4 J4 R1 `" q1 V& e7 ^& s+ v1 X, }7 l, b
20200123175511938.jpg

5 p# I# W4 `. e" |) n4 z: i% p7 h5 w3 F, J9 ^. u
, Z# b! A4 ^+ R3 F
2 [$ n- W% U) m

0 R7 Q7 @' X) P& W1 g/ ?% E
20200123175508597.jpg
收藏 评论0 发布时间:2021-11-20 22:00

举报

0个回答

所属标签

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