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

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

[复制链接]
得蜜 发布时间:2008-11-28 15:39
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。
. M1 a; J: ]  {  O0 j在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下:
' K: |" j* c1 u" k" k) W * `  g* Z1 o) ~+ x5 T  O
一、NVIC寄存器组
, ^2 C8 p! F. D; P2 w) K1 ~' wSTM32的固件库中有如下定义: 5 G, v9 f5 s: C7 h- S7 L
typedef struct& C5 L" l4 p' X6 W, C- ^
{/ E, [. b* F+ R! X
vu32 ISER[2];9 P4 T6 u, i  N! W
u32 RESERVED0[30];
* |+ s) F! v5 F$ C* `4 [- {2 }vu32 ICER[2];
9 M- {. Q2 o6 s/ J3 Wu32 RSERVED1[30];( Q" ?9 B' I- w: ?9 u7 }+ v
vu32 ISPR[2];
2 D) f: @8 O# P6 }9 uu32 RESERVED2[30];) U8 c! b" b# c% ^0 S$ Z
vu32 ICPR[2];2 n$ O: u5 U: }! Z; W! u
u32 RESERVED3[30];
7 w( e) |8 R* Uvu32 IABR[2];& ?6 `# {4 z8 w: B0 [' d- q
u32 RESERVED4[62];
0 }4 V( T& K3 Y4 N* l: lvu32 IPR[11];
! I% R  b  D: p" H) F9 `- `1 k} NVIC_TypeDef;
" u4 B) |* \; H; A$ g
它们对应ARM手册中的名称为8 k: N5 f& h& R$ p
ISER = Interrupt Set-Enable Registers8 Q' A  v! a" @: Y
ICER = Interrupt Clear-Enable Registers
+ M4 ]7 a8 p3 t) x9 @& }- bISPR = Interrupt Set-Pending Register8 m/ m# ?- P$ J/ O( x
ICPR = Interrupt Clear-Pending Register8 P0 r# B3 F8 ]! g# \% }2 Q2 B: _9 k
IABR = Active Bit Register
7 t- i3 K/ _$ T" ~7 fIPR = Interrupt Priority Registers
1 t( X, c+ r$ l! m
每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。 ) ?/ Z" ?4 i- j
参考STM32技术参考手册中的中断向量表,中断源的位置为:
3 B! ?1 q2 I3 a  I5 q位置0 - WWDG = Window Watchdog interrupt: M. {$ Q% o/ K5 m  Z# c" r% }
位置1 - PVD = PVD through EXTI Line detection interrupt+ Y, ]: r/ f/ L9 j; y& C+ I
位置2 - TAMPER = Tamper interrupt4 W3 b9 D9 E/ P
......1 X2 q! P# M7 V; Y9 h  E# O
位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt
$ ?4 Q+ R# |) a位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts
3 b1 v6 ~" y, q, w
 
$ F, T1 l2 S) O, O" B二、系统控制寄存器组 0 a; c$ L% O* c/ m6 I; i
STM32的固件库中有如下定义: 0 l5 g6 s; J8 O* M0 U# B
typedef struct8 z4 M: O  ?/ f( t) O
{
& C9 C8 }! o6 J4 y! ~: Nvuc32 CPUID;5 t7 S  R4 i4 B8 O0 A! P' k
vu32 ICSR;
& ^' W& z( [# S+ \/ Svu32 VTOR;
& s" ~) Q9 @! f9 K- G6 wvu32 AIRCR;
4 U) Z4 j+ A  d! f6 Svu32 SCR;2 L6 _3 y) N7 m6 @
vu32 CCR;
. T) L% _; {4 {' o  e  lvu32 SHPR[3];  i, `5 D' [) l( V5 K1 s' G; J
vu32 SHCSR;, Y* e9 d1 d3 k' o. W
vu32 CFSR;4 Q2 @6 p! i, i' P& O/ u* s& E. e/ F
vu32 HFSR;6 ~6 e  J# W: p7 t
vu32 DFSR;& i' h, M- A% a3 O, ~- M
vu32 MMFAR;+ T- T  g( U% ]2 H: I" C
vu32 BFAR;
' f: U! L3 x2 f5 P; ]' o, t# yvu32 AFSR;; u5 ~2 B/ i: C  O
} SCB_TypeDef; /* System Control Block Structure */
" b* B$ Z( [/ V: Q0 e
它们对应ARM手册中的名称为
+ E6 A& L0 H  ^4 `CPUID = CPUID Base Register
% q+ R2 e6 |+ k  ?$ gICSR = Interrupt Control State Register  Z0 j( v* ?* l0 {2 K, m$ [, h
VTOR = Vector Table Offset Register
$ L/ t& @, @+ YAIRCR = Application Interrupt/Reset Control Register
. Y* u$ J& |( m5 BSCR = System Control Register
7 e/ a3 z, p; L1 b! gCCR = Configuration Control Register; b# |" h9 y2 P1 o7 t/ S
SHPR = System Handlers Priority Register; j! A( [( w7 Y: _
SHCSR = System Handler Control and State Register1 ~" c9 J7 I) P# M. T
CFSR = Configurable Fault Status Registers
3 Y; u1 I/ M* AHFSR = Hard Fault Status Register  E* m' u5 k# U0 j  S$ s1 r: \8 d
DFSR = Debug Fault Status Register
9 b' V) g8 }% f  z$ V) GMMFAR = Mem Manage Address Register
- P) Q: ^7 v6 @! XBFAR = Bus Fault Address Register, J+ T5 X8 Z/ Z5 s# ~
AFSR = Auxiliary Fault Status Register

1 Z) u( W5 ?; g: v/ L9 U . |$ G3 M2 n0 a1 w. ^" o
三、系统时钟寄存器组
7 k" I4 x; k0 h; bSTM32的固件库中有如下定义:
4 ~% k& W) ]7 j" [: Ctypedef struct
. g% c( l7 a) r- w{
# }0 p( e* j- D* Mvu32 CTRL;
7 m$ i: E' E) a0 wvu32 LOAD;1 q3 ^# b8 U# X: G6 ?, c
vu32 VAL;4 o; g3 M/ w5 O) P$ _5 E3 @
vuc32 CALIB;
) O% o( N* B9 n9 C7 g- x) P} SysTick_TypeDef;

# |6 l3 z: l3 x; b, P它们对应ARM手册中的名称为 & u) A3 ^4 C: C: h4 i1 Y
CTRL = SysTick Control and Status Register( t, l% W* @2 u! c# Z; {4 R7 {
LOAD = SysTick Reload Value Register
) I! Z( a, w; v: \/ |VAL = SysTick Current Value Register0 U, X1 }. \! Y* ]
CALIB = SysTick Calibration Value Register

9 a! M: a2 q( s5 W- }4 h
! ]/ C- H3 ^6 }) v* T

" {: u7 h0 ^* T% n2 X( o! L- w
收藏 评论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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版