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

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

[复制链接]
STMCU小助手 发布时间:2021-11-22 21:03
1.ARM架构简单介绍9 k) M/ Z3 ]- v  D" G9 J
4 d# T6 r) s- M" P; `; w& I
市场上成百上千种的 ARM 芯片,如果我们去看它们的内核,却只有不多的几种。) l$ h  n. U7 A

, z% s8 a# H3 _: T从时间上来看,从1985年设计的 26 位地址总线的 ARMv1, 到 ARMv2, 一直发展到最近支持64位地址总线的 ARMv8。
7 x, f! O0 K/ |2 D5 X" t) B2 f! F
最近这几年,在每一代 ARMvx 核心的基础上,根据不同的应用场景,又做了扩充或裁剪,形成三大架构:
$ P1 K2 D9 u. `  v1 X: B. S! A8 `: D1 F6 `& K! P
A(Applications) 高性能,一般需要运行Linux等操作系统。
# ?; z* Y6 |8 ^& N6 L1 r& B( Y: w5 r! B/ Y% M, E; }$ u* u; r
R(Real-time) 需要实时处理的系统,一般应用与网络处理器,嵌入式控制系统。7 m& y: `& z9 q# A% C$ ]0 D

8 P$ z6 B! F" G. x2 u4 RM(Microcontroller) 小体积,低功耗,一般应用于嵌入式系统。
0 M( M0 {: _2 K) w. y! B4 h/ n+ h+ G$ B  Z2 o/ L$ e
ARMv1 - ARMv5 已经成为历史了。我们对最新的 ARMv6 - ARMv8 做一个简要区分:
% T; ~4 V3 u; g- S+ n( Q1 u/ q
1 X0 F. \1 e; }1 S' CARMv8-A, Z' \3 m$ p4 ]8 r. w

# h5 H1 k! [1 A高性能,支持64位指令集,同时兼容以前的32/16位指令集。针对安全应用引入Trustzone。2 }, l/ K, |# s2 F& y
$ M* H! \0 v2 P/ ^
典型芯片如华为的麒麟系列,Kirin990 内部集成了4颗 Cortex-A76,4颗 Cortex-A55,每一颗频率都可以跑到 2GHz以上。同样高通的骁龙865也是集成8颗 ARMv8-A 架构的内核。3 Y: k$ {0 V3 {+ G5 t2 `

7 N! M+ F. e0 g; J1 l) Q* y* wARMv8-M& d# U! F0 L4 v% V1 `% n/ y$ P
1 K( F# @) n) c! {' l' N
针对嵌入式应用,支持32位指令集,兼容以前指令集。引入Trustzone。加解密运算通过硬件加速。
; h7 Y! _' p. {1 ]0 _8 ]% I
5 n* ~* a& K- Z0 F1 R' h典型芯片如 STM32L552 (Cortex-M33 内核)。主频可以跑到 110 MHz。6 r0 M4 h0 s2 p, V) L0 B& N

' ?& T: N% ]4 Z0 Z" fARMv7-A
- s$ T* @( x. ]& x% s0 d$ {$ B% U3 M! j; j! e! X
支持 arm 和 Thumb 指令集,支持虚拟地址存储管理(Virtual Address Support in the Memory Management Unit)。跑 Linux 这类操作系统一般需要 MMU。这种架构主要面向复杂应用。6 G0 ?) a( r$ a/ e2 K& o
# M- E; Q* i0 x* v& Q
典型芯片如 STM32MP151 (Cortex-A7 内核) 。主频可以跑到 650 MHz。
  G0 v) U% F0 S3 y2 ]
/ a, h4 b. A6 \2 c+ TARMv7-R6 g1 r' C6 Y( C+ v1 l% p# r

- R1 g3 B/ C  g' Q3 f1 z) I支持 ARM 和 Thumb 指令集,但不支持虚拟地址管理。
: V+ K1 I2 ^. j' P4 X# p  H1 v8 [. Z! i3 a8 g7 m" [
典型芯片如 RM41L232 (Cortex-R4 内核)。主频可以跑到 80 MHz。% Z4 {1 @, K+ \4 Q9 x+ w7 g# z$ C

2 P; B# _" }& ^4 e4 ZARMv7-M
& `% ^- C7 d) ]+ B# n
8 x9 N( e( l9 Q, n) ]- H+ x4 ~  @只支持 Thumb 指令集。简化的流水线,更快的中断响应,针对嵌入式应用。
$ P( d7 B* L2 b; H% w, \( g6 ~) ]& E8 A( I% Y. |& G
典型芯片如 STM32F103 (Cortex-M3 内核)。主频可以跑到72MHz。
  ]8 d: H: y" R/ P5 b4 \) h% O. d0 |3 D
ARMv6-M
: Z5 r" U- F; o  w: ^8 V% C
* c. J2 Y) {: T' U. W; x3 MARMv6-M 是 ARMv7-M 的一个子集。架构做了进一步简化,但是保持和 ARMv7-M 兼容。
- P. Y2 b6 m2 W: b
* }& |, W' M+ }& s# ~6 l* h6 F典型芯片如 STM32F030 (Cortex-M0 内核)。主频可以跑到48MHz。
9 Y  B+ [8 o9 l) S. I2 X0 C' |" D# u, Y2 r. L- B: {9 y
ARMv5 及以前版本) i( b! x" s0 a6 `3 X2 m
8 s1 a) _* _* ?8 t, H& L% [' f, Y2 V
早期架构,已不推荐使用。/ z3 w, Q& |! Z  m% u

2 Z" z+ x  w) L7 ^" g1 H典型芯片:% i* _" |9 N( ?, R. z6 c" [# I

$ m  w1 }7 J# R1 CARM926 (ARMv5)
# i8 I5 {; R- g& ]0 q9 C; G# ?4 @/ s  a$ b
ARM7TDMI (ARMv4)
% ]/ k+ q& T2 R$ e2 j+ |7 ~9 Z: E4 {6 k
2.STM32F030芯片简介& O9 `, M" k7 B  {

9 I! c5 r$ B6 W! l+ kSTM32F030 的内核,采用了 ARMv6-M 架构的 Cortex-M0。这个系列提供了从 16K Flash, 4K RAM, TSSOP20 封装,到 256K Flash, 32K RAM, LQFP64封装的多种选择。) C+ |4 r3 i9 {# `  E$ G" e
) i/ |8 g, K9 x6 Z$ q; F! U1 ^6 n
同时这颗芯片集成了最常用的 UART,I2C, USART, ADC 等模块。在掌握了它的开发方法后,很容易拓展到其它的芯片。
/ R1 k; f  t* d* f' G. k
; j1 L8 C3 H. ?* g. j3.开发版$ w4 L+ \# k) }' D& n

4 R! {" h  F# b: P3 U硬件可以选用官方的 NUCLEO-F030R8
0 z8 Y5 ^3 n" {. E" `7 Z( @3 _3 s! J7 K! n# x
20200123175508597.jpg

8 O, x: I6 K# a
* ^+ |, B4 m- r$ ~如图,这个板子由两部分组成。上半部分是一个集成的下载调试工具 ST-LINK/V2,下半部分板子带一颗 STM32F030R8T6,简单的 32k 晶振,两个按键和一个LED 指示灯。它把所有的引脚都用排针引了出来,可以方便用户扩展电路做评估。4 I9 r4 t" V4 T5 L' M+ x

6 _+ \  `! N0 w. @' P3 u5 H& b  _( B* J上半部分的调试器部分可以从板子上切割下来单独使用,调试用户做的板子。用户也可以从网上单独购买 ST-LINK/V2调试器。0 t3 J0 w9 m5 I

% W1 r- m1 F3 C- X/ C4.集成开发环境(IDE)
& }& K7 _( g8 {1 L  Y  Y& z8 f! K5 N3 L% v8 {. V) j
对于 STM32F0/L0/G0, 在 ST 的官方网站上可以下载到正版免费的 Keil。
4 ?$ J4 D- t) q" g+ z! x6 S
( J( d; M) ^, b7 F, p: b8 dArm Keil MDK for STM32F0, STM32L0 and STM32G0; k! @! [& K3 m8 T5 k( G. l4 a

0 W$ @, X' I/ |& \6 C' n( [0 d5 r这个版本没有时间限制,但是代码有 32K 的限制,对一般应用来说也够了。6 J, J0 F, v. V) T

6 S! S' J' X5 P4 h7 l
20200123175503310.jpg

  F6 [- n' F9 G$ m+ z& \# n3 v0 u/ y& m5 @+ y3 J9 o: d# ~& q
5.软件代码- D  z' M7 o1 d0 ?( i2 g7 C& c) \

3 r8 Z( C! P6 f# l9 s2 ]5 u. j+ BST早期的代码都是基于 Standard Peripheral Library,最近ST的软件逐渐统一于 STMCube。它对软件进行了更科学的分层管理,更易于在不同的平台间移植。可以极大的缩短开发时间。如果是新项目,可以从 STMCube 入手。以前的软件库将逐渐淘汰。& B" `" D  r$ E3 k$ [% a. {
2 w" v( \) V# C$ o
对于STM32F030来说,对应的是 STM32CubeF0,在官网可以直接下载:
. D4 W( g9 Y- g  g0 R1 j, _7 ^! c/ b6 x
20200123175511938.jpg

; ]6 L3 w' B( f( r9 m  y* \  s/ x5 }7 e( ^/ v, }* `
7 N8 ^# [+ @+ t3 c6 r

/ h3 I! Z$ K" w, ^/ z* O+ \% X
收藏 评论2 发布时间:2021-11-22 21:03

举报

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

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

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

感谢分享~~~

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版