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

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

[复制链接]
得蜜 发布时间:2008-11-28 15:39
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。 , U5 t; t/ l# L4 Z) r
在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: % f& N8 C) k- y, V+ t/ H  S
 ) M& g" d" o7 a1 b3 W4 ?* G
一、NVIC寄存器组
+ M0 y1 \  e: }: j" h9 @STM32的固件库中有如下定义:
, @! |# w* R( F$ m' v  X3 N9 ytypedef struct
" j& c/ L. T( Z( z+ X{
* y+ \# o: x& Z5 M3 `4 E  n' P+ Yvu32 ISER[2];0 h* c4 P9 o) |5 D5 H" Z6 I7 |
u32 RESERVED0[30];
! O; n! e8 S/ O4 \vu32 ICER[2];; H( m, q  ~3 K3 y" M' m+ q5 E
u32 RSERVED1[30];
: m- b! B" o. Rvu32 ISPR[2];
0 {+ }( C  B  l' Xu32 RESERVED2[30];
3 X( z4 v) j7 j: s1 E& Cvu32 ICPR[2];
( S( y8 Z; ]( {9 y4 }0 Wu32 RESERVED3[30];" K  Q9 }5 O5 l; t) q
vu32 IABR[2];/ ]# P/ h( D1 G1 Q8 s" e% S
u32 RESERVED4[62];
3 C! V* j3 `2 O* Z3 A  Mvu32 IPR[11];
& E. n4 k- j) p8 \# H: _} NVIC_TypeDef;
( B- z1 f& c. A# [5 [+ K
它们对应ARM手册中的名称为
/ |$ E2 Z2 G; n' k1 `1 \ISER = Interrupt Set-Enable Registers
9 h3 c* R' ~- {' yICER = Interrupt Clear-Enable Registers9 j, ?, m" O& c* ^
ISPR = Interrupt Set-Pending Register6 j( Z; K) m% r3 n/ {1 p4 p
ICPR = Interrupt Clear-Pending Register1 ~( x' d( k) v$ O
IABR = Active Bit Register" h) C1 E+ Q& X5 C
IPR = Interrupt Priority Registers
8 L% {: z4 E( {
每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。 + {, t. {8 t: b9 W( m
参考STM32技术参考手册中的中断向量表,中断源的位置为:! B1 @" U3 r  W+ q: ~: z
位置0 - WWDG = Window Watchdog interrupt
3 `. L& ?% q# b位置1 - PVD = PVD through EXTI Line detection interrupt
+ F& ?7 Q) _9 P% L( q位置2 - TAMPER = Tamper interrupt! m$ |5 g' w9 n6 x% [, c! O
......0 B1 W0 s6 V: ^  [
位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt
+ V' K0 j; _; X+ W5 Q位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts

7 ?6 r) h; D, r, J& h; o 4 p6 x! R) i0 F% m
二、系统控制寄存器组 4 r) R$ W6 [% ^9 `% s2 W
STM32的固件库中有如下定义:
2 C) K, W) O3 L% atypedef struct
# p: E9 f7 G1 z{* O+ t( V" ^$ ]+ w# k* x% k
vuc32 CPUID;
/ W: X* I  e1 e$ F2 ~, N, }9 qvu32 ICSR;
4 m- R" {* D1 f( Avu32 VTOR;
( c! ]) D3 p- N7 w( T4 `5 qvu32 AIRCR;3 N8 n6 m+ y# [/ H
vu32 SCR;
, l4 z* R- h1 ?vu32 CCR;7 R/ B5 T4 N7 `7 P. f, `0 P
vu32 SHPR[3];! W+ M7 C) ~. q+ n3 q/ k
vu32 SHCSR;
# z  ~) P8 \  t4 dvu32 CFSR;" s  A! [0 e; t. u) Y* q. [
vu32 HFSR;
5 h# p4 \2 J- rvu32 DFSR;  {/ D7 T. m# a* `+ e. V6 m& S
vu32 MMFAR;
* T! y* a" v- Q: `vu32 BFAR;
" ^! K2 V0 {& ~7 [; ivu32 AFSR;
5 A& B* B  h5 |9 r9 B# A} SCB_TypeDef; /* System Control Block Structure */
2 w0 W: W" A: L2 V8 a
它们对应ARM手册中的名称为
0 \8 c! f9 J$ A4 d) UCPUID = CPUID Base Register8 n- y" d1 ]/ r9 ?& i% N( _
ICSR = Interrupt Control State Register
/ ~$ B7 ^% a3 e0 o1 o1 |& m$ L2 OVTOR = Vector Table Offset Register: R. B4 H$ K4 y! r6 ?, w: Q2 w
AIRCR = Application Interrupt/Reset Control Register  F* z, p0 a/ U2 f
SCR = System Control Register) p0 L4 x# D8 B, o9 N5 x
CCR = Configuration Control Register
" z* ?! `, r/ ZSHPR = System Handlers Priority Register8 t) [, [" X2 Q
SHCSR = System Handler Control and State Register0 [* R7 d+ `% c' a, L0 B
CFSR = Configurable Fault Status Registers) E5 P* D0 Z( ?& F( ]
HFSR = Hard Fault Status Register6 k2 ?9 j% s; o5 [8 H
DFSR = Debug Fault Status Register
' O! K# b; l9 d4 s$ SMMFAR = Mem Manage Address Register% s0 a2 ?8 m* @* S( q! ~
BFAR = Bus Fault Address Register" q. m3 I( _; Q5 [( ^
AFSR = Auxiliary Fault Status Register

, f7 @" t5 i2 S8 q) }# M% I' r; ?1 z5 h 
2 h4 x8 u- i$ n: z三、系统时钟寄存器组 0 M+ [  B3 c2 U& v% J2 G1 j
STM32的固件库中有如下定义:
+ r- R; G5 I7 \typedef struct+ [; \2 V- b& q! O. b3 x4 A
{
1 M% w& r  S( F9 e, M, k+ ]vu32 CTRL;
: B' a7 \- Y$ K/ I$ ]vu32 LOAD;- y* k0 N) I  L/ C; `& v+ J# }
vu32 VAL;4 a. F7 D5 c- q0 S1 x6 D
vuc32 CALIB;, ~7 E/ F1 @: \. o
} SysTick_TypeDef;
, h+ u9 I7 E/ L, @4 ^
它们对应ARM手册中的名称为
5 {. W. n$ E7 b  ~/ TCTRL = SysTick Control and Status Register9 E5 L5 i/ v. W! n
LOAD = SysTick Reload Value Register
3 [* ~6 E: S1 Y: A6 b5 w/ A5 R) H6 dVAL = SysTick Current Value Register
0 q& \2 m  q( g% ICALIB = SysTick Calibration Value Register
) N$ D& m4 Z0 C( }% Z( O9 A

6 o5 \+ @" Q8 @: b' `1 }0 I; M

- E  L; u0 y/ j( [  M
收藏 评论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 手机版