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

STM32中用到的Cortex-M3寄存器说明

[复制链接]
得蜜 发布时间:2008-11-28 15:39
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。
. X7 |/ i% q- n1 G, X9 Z, o% ~在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下:
2 K9 U0 p! @6 H" i5 ]2 v 
( G) t$ [# x9 g) J一、NVIC寄存器组
* B' d, t) o: r+ ~" T( w; o6 o( ESTM32的固件库中有如下定义: - \& G/ G3 l6 F( q
typedef struct; g& o- _! _- `: H% e1 |: c
{
4 ~7 u" \1 |" E; B# [' Svu32 ISER[2];* b. X0 @& Q5 ?
u32 RESERVED0[30];3 n9 l/ o* x% ?9 D
vu32 ICER[2];3 N0 c1 k$ }" @, O$ N) n7 W2 O
u32 RSERVED1[30];
9 V/ l6 c$ z+ F( |0 U! wvu32 ISPR[2];' y8 K( x  I6 E' ], J
u32 RESERVED2[30];
5 [; U6 O2 n1 M$ L8 X% Tvu32 ICPR[2];! ]; r2 j, B+ M. f0 R
u32 RESERVED3[30];
. i% v) a: i- _% R; A7 c) f2 B0 Ovu32 IABR[2];3 \; N/ |3 K! w9 ~
u32 RESERVED4[62];# X( x2 n8 f: d4 C. d* Q/ t% r
vu32 IPR[11];7 S* D' g3 Z, B, s; ?8 _
} NVIC_TypeDef;

8 ]; O2 X4 b& y/ m& [4 v8 D- e它们对应ARM手册中的名称为
% s1 v+ E0 T6 s9 G9 e& J4 QISER = Interrupt Set-Enable Registers( c+ W8 \( \4 I6 j: T! W5 N
ICER = Interrupt Clear-Enable Registers/ G1 c; J* N: I3 u& e
ISPR = Interrupt Set-Pending Register7 g# r( d& z* X( C  T$ E3 q
ICPR = Interrupt Clear-Pending Register
. T& r, J2 V& }IABR = Active Bit Register" r# O# ~" `" t& l# c. G
IPR = Interrupt Priority Registers
8 k; \8 y  ~: p4 w! j7 s% n
每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。 # t$ e$ C: ?+ v6 L6 b! R; ^
参考STM32技术参考手册中的中断向量表,中断源的位置为:
+ z3 t+ t+ a1 O位置0 - WWDG = Window Watchdog interrupt
- w# \0 b% W# D) s% i% }位置1 - PVD = PVD through EXTI Line detection interrupt
( |5 x+ x  C4 B# [) i位置2 - TAMPER = Tamper interrupt7 _# A) h, _; a# V
......
% j2 D+ }; I) x" w; t位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt
3 C' b8 n* w' J, t1 ?位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts
: T" b% @- c: C" |" ~1 i
 9 U- p9 N8 \4 C+ Y9 }$ }& h% S
二、系统控制寄存器组
1 O# Z4 n" T% H$ ?STM32的固件库中有如下定义:
7 R/ @; m8 a+ v7 ltypedef struct) s( A  L( q2 U0 s0 r) w
{
( }9 s$ l) n7 R2 ~% f, Yvuc32 CPUID;$ x4 R5 H! s+ O& |3 H
vu32 ICSR;! l: z; q2 p$ `
vu32 VTOR;
1 l: X2 B  I: _) T' b9 Nvu32 AIRCR;
, z; e6 o( v( d8 g% s$ Jvu32 SCR;+ q* G  p. `; h+ D
vu32 CCR;
9 z. \% S% t& T3 U: y% xvu32 SHPR[3];
+ S6 t% X" V! D* G# r7 b3 M: x3 \vu32 SHCSR;( @; ^9 t9 D% G, C/ S  j$ Y
vu32 CFSR;, w/ v( Y# \% e% W
vu32 HFSR;  ^8 u# E7 T6 C, x
vu32 DFSR;2 F8 {6 \2 M/ g; o; h( E) X4 A. |
vu32 MMFAR;6 K0 p( ~; u$ u+ [" ^4 P
vu32 BFAR;
0 ~% o2 K+ _/ C9 D) s: nvu32 AFSR;0 V' K9 ~. u% `7 z" B# A5 P: _
} SCB_TypeDef; /* System Control Block Structure */

9 o- G: D" v- z$ s( _4 u它们对应ARM手册中的名称为 ' x/ g7 n5 G0 t
CPUID = CPUID Base Register+ x1 F: g- W0 u! g" @+ m
ICSR = Interrupt Control State Register5 p" i. B/ F: H
VTOR = Vector Table Offset Register
8 _+ Q5 W* b: x+ M+ h, E% UAIRCR = Application Interrupt/Reset Control Register
- _( ?; R0 X0 |+ F2 HSCR = System Control Register
4 @" m( d4 K* P4 ZCCR = Configuration Control Register
0 t6 N7 B, u8 m, ySHPR = System Handlers Priority Register
6 S5 H7 x7 F9 q! H) ^6 xSHCSR = System Handler Control and State Register, N1 L! W3 X* a& _( W' N  m
CFSR = Configurable Fault Status Registers
' Z+ `8 E1 |0 b# F8 Y# r# y& {HFSR = Hard Fault Status Register, i+ Y& e# A, F$ ^
DFSR = Debug Fault Status Register
5 P* Y9 u8 U( ]" w. |% s4 N7 w% BMMFAR = Mem Manage Address Register' l7 }$ l% D9 G' d% H3 I$ c
BFAR = Bus Fault Address Register
  r* m  k# C0 U$ Q3 h; V! `AFSR = Auxiliary Fault Status Register

# l* w" p5 O  D7 D* t: g. w 3 R% l* D1 Q- f: j$ e9 P
三、系统时钟寄存器组 ( T* b. y# J& Z% _0 {9 W
STM32的固件库中有如下定义:
; D4 M# k$ c# ^3 c& S' S, Wtypedef struct. {. D% l) X) M9 S4 Q- H) G4 m! W
{
' p" ~7 ]0 ]8 \vu32 CTRL;4 {7 c) g$ x3 r7 P4 C3 m1 h' a
vu32 LOAD;/ g' |* z+ \1 }9 w* l
vu32 VAL;" @' S8 x6 c* t. \/ f9 f2 w, X
vuc32 CALIB;
. }+ n: F: H" C. X8 y: h! v6 D4 v7 }} SysTick_TypeDef;

, Y/ p$ M& e& ]/ w! l它们对应ARM手册中的名称为 ( e1 r( V- R" g  @
CTRL = SysTick Control and Status Register* U/ R* L5 x# I, n
LOAD = SysTick Reload Value Register
# P. Y; x# u9 [" O$ yVAL = SysTick Current Value Register+ r  v) ]9 v: Q
CALIB = SysTick Calibration Value Register

5 P7 @! ~' P$ v7 X$ r5 X/ s
* w+ i8 q; v: J& d9 r2 K

. u/ S. @  P  f; \
赞 收藏 评论8 发布时间:2008-11-28 15:39

举报

8个回答
a1z26 回答时间:2008-12-3 12:00:17

RE:STM32中用到的Cortex-M3寄存器说明

人气不高啊,得顶起来。
得蜜 回答时间:2008-12-3 16:08:53

RE:STM32中用到的Cortex-M3寄存器说明

嗯,谢谢。
c51avr 回答时间:2008-12-5 11:13:19

RE:STM32中用到的Cortex-M3寄存器说明

强烈建议得蜜版主公开靓照以增加论坛人气!
ibq3100 回答时间:2008-12-7 22:45:21

RE:STM32中用到的Cortex-M3寄存器说明

还是说得不够详细。凑够字
cole3 回答时间:2009-6-28 13:44:01

RE:STM32中用到的Cortex-M3寄存器说明

sqlwindspeaker 回答时间:2009-7-8 19:02:12

回复:STM32中用到的Cortex-M3寄存器说明

太赞了。。。不用说的足够太详细,指明到哪里去参考就可以了~ 谢谢
sqlwindspeaker 回答时间:2009-7-8 20:11:52

回复:STM32中用到的Cortex-M3寄存器说明

太赞了。。。不用说的足够太详细,指明到哪里去参考就可以了~ 谢谢
kevinsmith-4832 回答时间:2009-7-24 11:35:27

RE:STM32中用到的Cortex-M3寄存器说明

顶起来,我觉得对寄存器操作,很繁的, 我一般喜欢用库函数来实现.呵呵

所属标签

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