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

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

[复制链接]
得蜜 发布时间:2008-11-28 15:39
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。
$ M. W( R( V3 y, A% ^在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下:
* m- n' e) H# w8 E+ l4 H" y 6 g; `) s& M/ \5 c4 k; u2 T8 x! I. _
一、NVIC寄存器组
5 W: _5 q) N$ pSTM32的固件库中有如下定义:
& J& B$ B+ V5 u7 \typedef struct+ T* N, A3 g% `* ~1 V7 Z
{
' \$ ~1 N( C6 L6 xvu32 ISER[2];7 a& i, e- W' J: ]+ j5 c
u32 RESERVED0[30];" H( |8 {1 ^1 I
vu32 ICER[2];
# F: ]; x6 K9 i. M9 [u32 RSERVED1[30];1 q% C3 k$ ]+ G3 `! e
vu32 ISPR[2];/ U+ W- s& E/ ?  o% J( A
u32 RESERVED2[30];
, K2 O2 v. p* p$ ]vu32 ICPR[2];* a+ a% N; Z: S2 |
u32 RESERVED3[30];' |; x2 K- Y+ q0 a9 p" N
vu32 IABR[2];; B& Y6 [3 Z) G) O. b8 Y" U
u32 RESERVED4[62];3 O7 |/ I. B+ E2 w) T, W0 o" M
vu32 IPR[11];) J$ u% E  W6 ?1 J8 e  b
} NVIC_TypeDef;

# E7 K" O+ l! D. m它们对应ARM手册中的名称为( D0 y$ z# L- ~; r. ^
ISER = Interrupt Set-Enable Registers
6 }$ I, m9 x. b1 oICER = Interrupt Clear-Enable Registers
6 [5 P$ J  w! R$ E. H3 j1 BISPR = Interrupt Set-Pending Register+ I% H7 |. |' `5 j. d0 c
ICPR = Interrupt Clear-Pending Register
* y; x" M# \/ [% D$ MIABR = Active Bit Register
5 E2 J$ w* M4 W3 \IPR = Interrupt Priority Registers
, j$ m/ W" H& E! U7 Y
每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。
" I& e' z  h' u' C+ ^) u参考STM32技术参考手册中的中断向量表,中断源的位置为:: E3 N9 u: C& r. u
位置0 - WWDG = Window Watchdog interrupt0 o. v8 F+ o6 m( E5 e+ r
位置1 - PVD = PVD through EXTI Line detection interrupt! X# ^( h( |: ^7 O
位置2 - TAMPER = Tamper interrupt9 J" z: y4 a# T* }) Q& v6 O
......6 h2 g1 G- w+ d( S* j
位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt, W; W$ v9 {1 z1 y( x1 `6 B7 Q" F
位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts

1 r" O& R5 x9 F: S8 g9 h5 C7 Q % W' P# E8 a* S, \9 {) Z" _# p0 l
二、系统控制寄存器组
- r. c' t3 C+ s3 s& ~STM32的固件库中有如下定义:
5 ^9 {: I) o! |0 b4 xtypedef struct+ y3 p- z- H" y9 ~; n: C
{
0 B6 m% S% k. o+ I- w4 Q& Avuc32 CPUID;  _5 v: S1 U& S- _9 J0 L
vu32 ICSR;2 }! ^. t7 |' W: G: L' S+ U
vu32 VTOR;
9 \2 }/ M$ r; ?  @. ~2 [vu32 AIRCR;
$ [6 B5 g& L: b2 svu32 SCR;
6 ]. }$ P) {$ O/ \vu32 CCR;# c9 ~& k; s( L- u
vu32 SHPR[3];/ H% }3 |; N% `6 u0 W3 U
vu32 SHCSR;0 Q5 t) L* j6 }. v
vu32 CFSR;' i* r! V8 m' m. i3 K
vu32 HFSR;
" T6 x* ]" l- e2 j1 \# t6 kvu32 DFSR;9 k- j7 ?: d4 ?. \' Q7 b' y# ^4 D/ s
vu32 MMFAR;# p$ A, z) p3 W2 |; X1 F
vu32 BFAR;
$ i. `6 O1 E6 h  l5 N" Vvu32 AFSR;
8 b! d" B4 C$ m: V} SCB_TypeDef; /* System Control Block Structure */
0 B& D& M0 S: [" P0 j
它们对应ARM手册中的名称为
& ?8 b0 b% g% i$ J: j! eCPUID = CPUID Base Register
0 V4 T( _8 A9 f( @) Y- L* G6 b# GICSR = Interrupt Control State Register
: Y: s1 |  U6 @- D+ UVTOR = Vector Table Offset Register: _0 q( a7 h1 S" p: ~9 H% B& E, E1 j+ a  y
AIRCR = Application Interrupt/Reset Control Register
- D* j/ B. k3 b# \4 P( v& JSCR = System Control Register
. Q6 e% Z' _: S0 |' ^; yCCR = Configuration Control Register
$ X8 }- J( a* j3 W$ ESHPR = System Handlers Priority Register7 o3 n* d$ _, B! p+ \. h( \6 L" O7 v
SHCSR = System Handler Control and State Register# U- W8 P6 i1 r0 Y( h# n; J
CFSR = Configurable Fault Status Registers+ }) R5 u) m& V; L. r1 O$ F) H) A
HFSR = Hard Fault Status Register
& Z/ c+ |* l- [8 Q* @DFSR = Debug Fault Status Register
  q/ Y6 L3 p) \5 {- i9 wMMFAR = Mem Manage Address Register! r. K5 i8 d1 N) ]: n. z
BFAR = Bus Fault Address Register0 b7 Q5 q$ O0 w
AFSR = Auxiliary Fault Status Register

6 k9 O5 T+ |% g5 O( s" T8 e9 k ; k7 T% D! N" {# a4 S1 q# M
三、系统时钟寄存器组 + G1 W8 O4 ?, v: M
STM32的固件库中有如下定义: 0 [  a4 k' a; h+ R6 n4 R' f8 E
typedef struct" }% p  E0 @# I
{# v$ J1 b$ w0 u' @% A% g
vu32 CTRL;& H9 l* O# _+ v  u  ~
vu32 LOAD;
: y6 g7 X0 b0 _vu32 VAL;# Y6 V( a0 E4 \+ }% K
vuc32 CALIB;5 q* i7 O' F4 G
} SysTick_TypeDef;
" ?; t( `; @! l+ d# d9 Z7 d$ g- |
它们对应ARM手册中的名称为
5 ~4 q6 j$ w7 I5 e! G; HCTRL = SysTick Control and Status Register
. B( Q: |" W' C/ L/ cLOAD = SysTick Reload Value Register
! `' l1 n( M& c! W4 ~: H  F5 fVAL = SysTick Current Value Register
- M2 ?3 D' G0 p4 _/ F- vCALIB = SysTick Calibration Value Register

% e' Y! N) C4 }2 K9 ?
5 r1 j! C8 F% ~2 }9 ~& y! S# I
. o9 W2 B$ C! |
收藏 评论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 手机版