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

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

[复制链接]
得蜜 发布时间:2008-11-28 15:39
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。
) n8 ]! Z/ t" P6 U6 u. y! F在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: 2 ~1 T* z' q( {
 " u: ?7 l' i6 s; ~+ i4 x: x
一、NVIC寄存器组
1 l2 z# C' C# M9 n7 BSTM32的固件库中有如下定义:
* J5 |5 U5 P/ K6 a! e7 Ztypedef struct8 Z+ o3 O( T# G! ]; C
{0 z5 F  q3 T/ E( I) ~/ ~1 G
vu32 ISER[2];
6 e' h% k4 `+ E  ?$ f0 c* ]u32 RESERVED0[30];$ F6 s) c  o1 @4 T/ }5 e* ?
vu32 ICER[2];# [9 E$ e" ]4 D
u32 RSERVED1[30];0 Q( M# R8 ]- T& ^
vu32 ISPR[2];; _4 W% d% G- ?9 d
u32 RESERVED2[30];. ^% F/ k- e4 o
vu32 ICPR[2];
+ d& @7 G" P; w' vu32 RESERVED3[30];
0 W" P: J1 T6 x( o. Jvu32 IABR[2];
+ l) s$ ~7 b- n8 H# L7 b# Ou32 RESERVED4[62];
, Y5 U! x( P9 j0 ?2 x! w+ Kvu32 IPR[11];/ J' @) |" O8 D6 i
} NVIC_TypeDef;

4 ]9 D% J( f8 O0 W2 ^它们对应ARM手册中的名称为
, j! ~. m, Q/ W# ?; P# m' O  AISER = Interrupt Set-Enable Registers/ p* d: V7 e' a- Z& C
ICER = Interrupt Clear-Enable Registers
- O- W+ ^/ j* _9 f; GISPR = Interrupt Set-Pending Register: P$ \" ^: w$ Z. m7 S+ b# e
ICPR = Interrupt Clear-Pending Register
7 w5 B, R4 r4 l$ l% b2 p3 T' q+ ^* QIABR = Active Bit Register
( F5 [( T  l- e2 i2 _8 Z5 jIPR = Interrupt Priority Registers

4 k1 L3 S$ t* E  N1 q. }! M8 \每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。
/ {. f& I3 W; o  I8 H% y参考STM32技术参考手册中的中断向量表,中断源的位置为:# M# P) v3 m# u: b; K1 T5 \
位置0 - WWDG = Window Watchdog interrupt! {3 n9 p/ J0 `3 t4 E& o' l- \
位置1 - PVD = PVD through EXTI Line detection interrupt
% @: W+ d7 j9 p位置2 - TAMPER = Tamper interrupt
5 t- v  [6 G3 b8 p......! H. D( n6 {2 A0 C% \
位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt) H! m0 W& |" i# v$ q
位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts
; D* Z1 @. D% Z1 s$ K
 ) o$ z0 d+ S2 q' ?, ^  n
二、系统控制寄存器组 ( L& W! e/ g. M5 Q2 @
STM32的固件库中有如下定义:
1 ^0 F5 y/ e1 @0 I8 utypedef struct9 H* o! c1 C: S: S9 Y, {* R2 ^
{) A( R! \) U8 _$ O7 c- X  z& O
vuc32 CPUID;
: a. ]* }# V* d0 Z; S' w- c5 `vu32 ICSR;
" c% i: l; i! @; Q& S7 U7 s* Hvu32 VTOR;
* U3 N' f8 y" t2 V( Ovu32 AIRCR;
8 s/ l" W# p% w6 U0 `: Wvu32 SCR;6 n. f. G5 N; A+ {! `9 F8 V
vu32 CCR;
9 N- M5 d- e' T* Y8 {+ G4 Dvu32 SHPR[3];
1 C) W+ }. B) ]# y. w; Y, hvu32 SHCSR;" n/ B) O8 y9 ~& G; N3 z4 m2 s
vu32 CFSR;
- v* H; ?! {: _- J- s4 mvu32 HFSR;! o- q$ z; L( Z) {; r
vu32 DFSR;& v7 S- o1 e  D) J
vu32 MMFAR;
. `$ a% z  X9 D0 o0 |vu32 BFAR;+ x: p& H% J6 Q* l. K+ K6 `9 x  @
vu32 AFSR;
9 V- Y3 d' x! P: p7 ]& i" A3 B6 Z( J} SCB_TypeDef; /* System Control Block Structure */

. s0 J3 Y+ _$ ]. i4 ^' g8 @它们对应ARM手册中的名称为
  {1 z# s- w5 J$ D8 p) rCPUID = CPUID Base Register
+ K* }. j# Y$ N# WICSR = Interrupt Control State Register0 ^" v+ {3 m- X0 H$ ]8 a
VTOR = Vector Table Offset Register) }' `: s5 k4 i
AIRCR = Application Interrupt/Reset Control Register9 J4 o% y  M, u& x: s
SCR = System Control Register5 s( `# F- x; w7 O
CCR = Configuration Control Register% p: A" x( ?* g8 O
SHPR = System Handlers Priority Register
: y1 Z% `; |5 W8 b/ R- V* hSHCSR = System Handler Control and State Register+ y/ {  {& i- R  [9 L3 H4 {
CFSR = Configurable Fault Status Registers
" h1 u1 u) q# THFSR = Hard Fault Status Register* \; ?4 s3 z) y& R9 `6 ~
DFSR = Debug Fault Status Register; |& j# P1 ?6 P
MMFAR = Mem Manage Address Register8 n% ~" r$ E# h& H% \
BFAR = Bus Fault Address Register( g! v3 o* p7 J8 f4 x4 d! ]! E
AFSR = Auxiliary Fault Status Register
3 T9 I. U6 f* B  C
 5 D- a+ |: D5 L; l
三、系统时钟寄存器组 0 |$ t- _9 r' \1 ^8 Y
STM32的固件库中有如下定义: " K+ W7 f2 w* L( U" [
typedef struct
# W2 P+ R5 Z* H( T7 q{
+ L. [1 j  D$ [% |( t, jvu32 CTRL;+ p& p' d, x: x+ N. O
vu32 LOAD;! B7 e. i; d2 M$ F; d4 P4 q
vu32 VAL;% L" v6 S+ |# A# ]6 z! v; L
vuc32 CALIB;* K  Q0 ~/ B1 B9 Y4 v) [
} SysTick_TypeDef;
, j: c1 _( g% r
它们对应ARM手册中的名称为
) @( t" ^; \/ `6 O) YCTRL = SysTick Control and Status Register
: X  W0 ]5 V. kLOAD = SysTick Reload Value Register
$ A# i9 z6 j4 [0 j6 lVAL = SysTick Current Value Register" v7 P. x1 A# z! y  ^7 }* R' }
CALIB = SysTick Calibration Value Register

: M* @9 t1 k; Q6 ?* a4 }) h2 [5 d* T* T& c! f0 Q$ B0 {
5 @% w, D! [  ]7 t# X/ _' Y, 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版