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

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

[复制链接]
得蜜 发布时间:2008-11-28 15:39
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。 7 u3 b% ~6 Q8 t9 N, S# E
在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: * g, J5 f# d, U% ]% r) q: G
 ) b3 ~. M% h" K  L) {
一、NVIC寄存器组 5 k, s, s" P+ n1 r; U
STM32的固件库中有如下定义: , p$ y+ ]! x. f) b3 N7 e
typedef struct8 s, _9 q3 p! E- ?
{9 R. ?% V% G( S. X) N/ g
vu32 ISER[2];
" \" R; I/ }( f1 e% B5 S5 pu32 RESERVED0[30];
5 ?5 v' ~9 D3 d4 \" Hvu32 ICER[2];
3 q4 q' N% N' j$ r  Bu32 RSERVED1[30];1 y" P- r5 Y  e
vu32 ISPR[2];% K( m% @6 u( P/ v
u32 RESERVED2[30];* J' ~) v( n4 e2 P  T# W
vu32 ICPR[2];9 q* J- j& Z* @7 B; @2 j) a
u32 RESERVED3[30];: ~3 n" m- E- H
vu32 IABR[2];
" r, i# {1 B- f* F( ^8 Z  pu32 RESERVED4[62];
) e. A' `% a) |4 f/ Ivu32 IPR[11];
9 Y* W, S0 s9 g, y, n} NVIC_TypeDef;

4 ?' n8 }+ c( `( J它们对应ARM手册中的名称为
) l7 o* ^+ K3 T" S0 c/ u& B0 ZISER = Interrupt Set-Enable Registers. Q7 Z) U$ h) L* e, D  U5 k  A; ^
ICER = Interrupt Clear-Enable Registers# r5 h) s4 U' t
ISPR = Interrupt Set-Pending Register
5 z) S% E$ m8 f8 D' b8 \! b& w& L% {ICPR = Interrupt Clear-Pending Register
* C7 E) w7 k. c* E# q; s) j7 p. cIABR = Active Bit Register
. `, Z: i% g# ?& U0 J6 O: |2 @, X# tIPR = Interrupt Priority Registers

8 _5 `1 q* ]/ }* I2 n7 z  K每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。
9 h% d$ K" e* `1 g6 e$ D: g参考STM32技术参考手册中的中断向量表,中断源的位置为:
. h7 s. }* X: f! B1 t位置0 - WWDG = Window Watchdog interrupt
& {* T! e8 u2 Q& W! c5 B位置1 - PVD = PVD through EXTI Line detection interrupt
5 `: V( G$ e3 R" y5 g: W9 V位置2 - TAMPER = Tamper interrupt
, g; t) T# ]* {! O* ^/ D......
5 M7 g; ]. q8 l6 |位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt6 W9 ?1 z3 ~- d3 f
位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts

/ |: z& ?/ I# M) a7 D: W7 b( N 
: A/ o: E) `9 _9 i1 j9 t3 Z二、系统控制寄存器组 7 T- x* Y; y6 q3 z5 b3 W
STM32的固件库中有如下定义: 6 y. o% {! s1 `# x, P0 O1 [
typedef struct
: S2 h4 [( @/ d% K4 @0 l1 e{2 j- ?0 c2 r  D- G. D2 J
vuc32 CPUID;+ n0 k8 k: m; K" N
vu32 ICSR;5 S, q) D/ \1 T
vu32 VTOR;
% c) q+ |  q8 r' {: d$ Qvu32 AIRCR;, |) a% w& ?9 A* q, o+ J# w" j% l
vu32 SCR;: O% s) _4 Q8 Z0 B/ E+ c. }4 a
vu32 CCR;
  ~3 y8 e) }, d; {6 Z- Cvu32 SHPR[3];
# ~. u  E4 [' a# J1 E5 f' Q" zvu32 SHCSR;/ U; O2 w! x+ I, d9 B
vu32 CFSR;
' x/ x1 {( x6 `$ }- ]2 ]% y9 fvu32 HFSR;# h8 X0 d4 r. R* \
vu32 DFSR;" y' e) L$ a% g* V" X9 ~/ ?% W
vu32 MMFAR;
7 N; L% @4 y6 h, S2 Cvu32 BFAR;+ h* `4 v3 ]) l
vu32 AFSR;3 g/ f+ t) f4 s4 ~% w
} SCB_TypeDef; /* System Control Block Structure */
9 \8 y/ b1 P6 b- U- G$ i
它们对应ARM手册中的名称为
/ K7 c1 e# R% `9 }- FCPUID = CPUID Base Register
7 ^$ v  t9 {! Q8 Q" Z8 zICSR = Interrupt Control State Register  M- G9 h0 ^. X& C7 c
VTOR = Vector Table Offset Register
% f: o9 r( u" x# a) lAIRCR = Application Interrupt/Reset Control Register6 w+ W& ?0 O, e1 n
SCR = System Control Register" b# o. C: @9 Y( y
CCR = Configuration Control Register
8 b3 v' a: }# F- MSHPR = System Handlers Priority Register( _1 [1 b/ Z8 F& f2 k- P2 k) m
SHCSR = System Handler Control and State Register
; I% m7 k, t$ N, M; G% r6 V7 eCFSR = Configurable Fault Status Registers
4 B4 N$ i! a% y- h) T8 k# o& VHFSR = Hard Fault Status Register3 s1 I# I3 i* {, K% H! R
DFSR = Debug Fault Status Register
- q$ G* O( g( EMMFAR = Mem Manage Address Register1 H4 C  t2 |) w7 ?- o
BFAR = Bus Fault Address Register
7 R' W8 w6 u2 g% r0 E. a- n% |AFSR = Auxiliary Fault Status Register
/ v; k' Q% _! I
 6 R0 _  a) y* b! A; a8 \0 ]8 Z3 L% x
三、系统时钟寄存器组 3 u# D: S$ Q/ _8 D+ |5 N7 ]
STM32的固件库中有如下定义: # J2 n5 y. e% r1 w8 @0 z3 m
typedef struct% a) ]! I6 Y6 k! D7 D- B$ J% Q# y
{) T9 Y4 |( e3 O, h7 Y. p: _
vu32 CTRL;
$ x  m% H" G) n4 q# y( G; @vu32 LOAD;
0 H; k9 H2 @% s+ k" mvu32 VAL;" z: `$ c7 Z3 W, X6 n8 B
vuc32 CALIB;
0 m5 x! D  c2 m/ O( v% X} SysTick_TypeDef;
% T3 H. h/ X: T
它们对应ARM手册中的名称为   [9 f+ O) O- n, t
CTRL = SysTick Control and Status Register  O3 h) }+ Y2 J5 @3 n; Z1 C
LOAD = SysTick Reload Value Register0 e2 ?# x6 c- |4 a$ C. h8 h6 a1 F
VAL = SysTick Current Value Register+ I2 c: Y* G4 f0 I+ L
CALIB = SysTick Calibration Value Register
% r. {; L. C0 r
4 t  n& P, P7 y

; G/ U" [! J  x& y" i1 g7 U& X
收藏 评论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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版