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

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

[复制链接]
STMCU小助手 发布时间:2021-11-22 21:03
1.ARM架构简单介绍8 p: W! H. ^4 R) ~* D+ ^' p2 u6 V/ ^

! m1 J0 h3 j, [6 ?1 I市场上成百上千种的 ARM 芯片,如果我们去看它们的内核,却只有不多的几种。
: u- o7 J) |+ _, s6 n! P' k6 t/ _4 e" q5 X0 M+ o
从时间上来看,从1985年设计的 26 位地址总线的 ARMv1, 到 ARMv2, 一直发展到最近支持64位地址总线的 ARMv8。9 r3 d' x  y* A9 }' [5 w7 b

6 p% w( `" @, s) X, _) E最近这几年,在每一代 ARMvx 核心的基础上,根据不同的应用场景,又做了扩充或裁剪,形成三大架构:
! O& v/ q! R+ v+ w) U" B
. s+ B' C, w( l1 A: DA(Applications) 高性能,一般需要运行Linux等操作系统。% p7 _; g: k; C1 W' ~

% i9 P* C+ A$ q& A0 B- QR(Real-time) 需要实时处理的系统,一般应用与网络处理器,嵌入式控制系统。. N( t$ ^4 P  t' p' q$ C

/ Z" Q( |  M5 CM(Microcontroller) 小体积,低功耗,一般应用于嵌入式系统。7 |" q+ I5 ?- z0 q, A% W, t& R3 u

/ G' P+ q3 J, E8 jARMv1 - ARMv5 已经成为历史了。我们对最新的 ARMv6 - ARMv8 做一个简要区分:
# a' J, O$ }+ b# ^. k. ~! R- A: U7 S) L4 F5 L
ARMv8-A7 q# n) N7 H# G' U& j8 e

) {6 w" Y; l6 W高性能,支持64位指令集,同时兼容以前的32/16位指令集。针对安全应用引入Trustzone。
" z2 S+ y, z: W6 D+ r( ?; ^6 l. ^( y: P  u( Y, E) D
典型芯片如华为的麒麟系列,Kirin990 内部集成了4颗 Cortex-A76,4颗 Cortex-A55,每一颗频率都可以跑到 2GHz以上。同样高通的骁龙865也是集成8颗 ARMv8-A 架构的内核。
) D; T' O% C# J0 [! D6 D
9 i9 x& C8 `% M+ c, TARMv8-M5 X/ y0 C3 |/ N; E7 L5 p6 x
( X! l' k  `% A0 W
针对嵌入式应用,支持32位指令集,兼容以前指令集。引入Trustzone。加解密运算通过硬件加速。
( _/ L7 ]3 J, W; D- w- R" r
; j4 L: q8 N$ j) z& L2 x* [典型芯片如 STM32L552 (Cortex-M33 内核)。主频可以跑到 110 MHz。
  r: W# x9 ~' p: f- y+ _: v
+ \# a7 b1 U. f" a; g% \ARMv7-A1 K4 n' c! U5 x6 x9 p

- a* N* v0 X8 P& O/ g' x. D; g支持 arm 和 Thumb 指令集,支持虚拟地址存储管理(Virtual Address Support in the Memory Management Unit)。跑 Linux 这类操作系统一般需要 MMU。这种架构主要面向复杂应用。
* n: t; T. `" H7 [1 x3 \9 u! ?( \8 U8 e; z& q4 V& f3 k
典型芯片如 STM32MP151 (Cortex-A7 内核) 。主频可以跑到 650 MHz。' q# t, A0 J; V' B* g% E2 o
6 |6 Y! `1 V9 U) D5 ]3 H& t
ARMv7-R$ X' Z6 I# R8 B% H7 S
8 |8 E, N- n  `" i# ^
支持 ARM 和 Thumb 指令集,但不支持虚拟地址管理。
6 h8 K8 W1 F2 e! g( f1 _4 o8 |
* A, F5 ]* G( ]. }7 U2 @典型芯片如 RM41L232 (Cortex-R4 内核)。主频可以跑到 80 MHz。8 Q3 G1 N! R7 a3 b2 s7 B9 W7 z- ]

% |; L4 l% X9 s5 F! H, FARMv7-M
7 {" y+ s; E  S# ?) [0 _4 F$ O# C) G( X/ n* {5 Z% N
只支持 Thumb 指令集。简化的流水线,更快的中断响应,针对嵌入式应用。
; g9 R  U! v4 V! m# b. @' }
8 r2 j2 l. K( E; g2 x7 v典型芯片如 STM32F103 (Cortex-M3 内核)。主频可以跑到72MHz。
( A  H  W5 L3 e0 \/ w0 @
7 Z# j# i2 g( G* Q" G# W. n! KARMv6-M9 |, ^0 V, Y/ ]$ {. s

3 E# A( m" S) w, I4 `5 JARMv6-M 是 ARMv7-M 的一个子集。架构做了进一步简化,但是保持和 ARMv7-M 兼容。
5 z$ |* D9 ]! f& A
- `0 S5 t2 u* K$ W% y' }; t% {典型芯片如 STM32F030 (Cortex-M0 内核)。主频可以跑到48MHz。$ P% q+ E2 b- Y. D2 O9 \* H
$ i/ W) n& R- J: p" L
ARMv5 及以前版本
+ ~$ o  {8 p8 Q8 y) f
& h3 ^9 G& F7 d/ G1 k0 n早期架构,已不推荐使用。6 [9 ?( C# l4 x6 [
8 x2 O* `- V+ N% a
典型芯片:
( x+ }( E8 Z/ C! B8 i$ J1 f$ ^7 Q1 f: I$ C8 I+ D
ARM926 (ARMv5)
. E, z! r, n. H! e# o( G. N
, v- n2 Q, I# b) {. fARM7TDMI (ARMv4)
# [, y5 |5 U+ Y9 b3 z) ]" W  }6 B8 _9 @: f) R1 y! I8 T
2.STM32F030芯片简介
: [/ p/ ^: R( E( O  y0 h5 k  X2 y% J  w0 d
STM32F030 的内核,采用了 ARMv6-M 架构的 Cortex-M0。这个系列提供了从 16K Flash, 4K RAM, TSSOP20 封装,到 256K Flash, 32K RAM, LQFP64封装的多种选择。1 {% @2 z! c$ c, L1 K# j3 h' s! d

9 ~- S. _6 f8 g同时这颗芯片集成了最常用的 UART,I2C, USART, ADC 等模块。在掌握了它的开发方法后,很容易拓展到其它的芯片。
! b' g/ [! d9 h, q2 p* h  ~
5 V6 V( u8 j/ m" f" I" W3.开发版
; s3 ^1 t9 J; t6 w/ D' z! W
. k4 k5 ?# z5 D; f0 [- g: a6 T/ k硬件可以选用官方的 NUCLEO-F030R8
" H/ u' _* a  b; _% z+ ~# r, G3 S4 C" R9 \; X9 z7 y; D9 x+ _
20200123175508597.jpg

" Y, Y5 |; ?) X" v: E: K
6 [% I. B- f) b' E2 }4 e# y' Y如图,这个板子由两部分组成。上半部分是一个集成的下载调试工具 ST-LINK/V2,下半部分板子带一颗 STM32F030R8T6,简单的 32k 晶振,两个按键和一个LED 指示灯。它把所有的引脚都用排针引了出来,可以方便用户扩展电路做评估。
- l4 u4 }2 H5 o; C$ ?8 Z, }1 M& _, D
上半部分的调试器部分可以从板子上切割下来单独使用,调试用户做的板子。用户也可以从网上单独购买 ST-LINK/V2调试器。6 Z& G, h# }8 ^( q' A) P9 T

3 F3 _0 ^9 L2 ]6 X. `5 [+ V1 k4.集成开发环境(IDE)
  r) g; }' C) J0 Z: {3 d' c9 {0 b6 v) x' m2 g) K2 a' }0 O
对于 STM32F0/L0/G0, 在 ST 的官方网站上可以下载到正版免费的 Keil。
. d+ u4 I1 |( e1 Y$ n
* }/ G, a0 t$ z# _; m/ {Arm Keil MDK for STM32F0, STM32L0 and STM32G0
4 W9 l$ W- }' W" _: }" q9 g! V! Z: u" w. p6 D9 T2 L
这个版本没有时间限制,但是代码有 32K 的限制,对一般应用来说也够了。
, q+ K6 H! f9 X* @: y6 A: u  d  \- x/ k0 s7 o+ I! ]
20200123175503310.jpg

9 G+ o  ]$ G& n; u: N9 @$ P7 Z& k! \5 n
5.软件代码
+ I( b0 l) w% M8 n3 N) n! v' M$ x7 G5 T' I0 {0 _7 T
ST早期的代码都是基于 Standard Peripheral Library,最近ST的软件逐渐统一于 STMCube。它对软件进行了更科学的分层管理,更易于在不同的平台间移植。可以极大的缩短开发时间。如果是新项目,可以从 STMCube 入手。以前的软件库将逐渐淘汰。* p3 l: h5 G7 o: v5 r$ f

  x- v+ n  Y5 w7 o5 E5 ^# r( X" |对于STM32F030来说,对应的是 STM32CubeF0,在官网可以直接下载:
4 j9 M' h" L) _+ {$ D+ C1 R# O3 E4 F5 f
20200123175511938.jpg

# y: m# f0 d. x4 H7 D, f5 G- U& m) h5 B
# y' Q' g, d* }7 |! G
( L/ g5 Y& f. a8 c9 K3 p# b8 @& J( d
收藏 评论2 发布时间:2021-11-22 21:03

举报

2个回答
landeng 回答时间:2021-11-23 09:48:16

感谢分享,学习了,期待更深入的:)

STM1024 回答时间:2021-11-23 10:55:19

感谢分享~~~

所属标签

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