
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。 在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: 2 ~1 T* z' q( { " u: ?7 l' i6 s; ~+ i4 x: x 一、NVIC寄存器组 STM32的固件库中有如下定义: typedef struct8 Z+ o3 O( T# G! ]; C {0 z5 F q3 T/ E( I) ~/ ~1 G vu32 ISER[2]; 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]; u32 RESERVED3[30]; vu32 IABR[2]; u32 RESERVED4[62]; vu32 IPR[11];/ J' @) |" O8 D6 i } NVIC_TypeDef; 它们对应ARM手册中的名称为 ISER = Interrupt Set-Enable Registers/ p* d: V7 e' a- Z& C ICER = Interrupt Clear-Enable Registers ISPR = Interrupt Set-Pending Register: P$ \" ^: w$ Z. m7 S+ b# e ICPR = Interrupt Clear-Pending Register IABR = Active Bit Register IPR = Interrupt Priority Registers 每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。 参考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 位置2 - TAMPER = Tamper interrupt ......! 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的固件库中有如下定义: typedef struct9 H* o! c1 C: S: S9 Y, {* R2 ^ {) A( R! \) U8 _$ O7 c- X z& O vuc32 CPUID; vu32 ICSR; vu32 VTOR; vu32 AIRCR; vu32 SCR;6 n. f. G5 N; A+ {! `9 F8 V vu32 CCR; vu32 SHPR[3]; vu32 SHCSR;" n/ B) O8 y9 ~& G; N3 z4 m2 s vu32 CFSR; vu32 HFSR;! o- q$ z; L( Z) {; r vu32 DFSR;& v7 S- o1 e D) J vu32 MMFAR; vu32 BFAR;+ x: p& H% J6 Q* l. K+ K6 `9 x @ vu32 AFSR; } SCB_TypeDef; /* System Control Block Structure */ 它们对应ARM手册中的名称为 CPUID = CPUID Base Register ICSR = 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 SHCSR = System Handler Control and State Register+ y/ { {& i- R [9 L3 H4 { CFSR = Configurable Fault Status Registers HFSR = 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 { vu32 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手册中的名称为 CTRL = SysTick Control and Status Register LOAD = SysTick Reload Value Register VAL = SysTick Current Value Register" v7 P. x1 A# z! y ^7 }* R' } CALIB = SysTick Calibration Value Register 2 [5 d* T* T& c! f0 Q$ B0 { 5 @% w, D! [ ]7 t# X/ _' Y, x |
RE:STM32中用到的Cortex-M3寄存器说明
RE:STM32中用到的Cortex-M3寄存器说明
RE:STM32中用到的Cortex-M3寄存器说明
RE:STM32中用到的Cortex-M3寄存器说明
RE:STM32中用到的Cortex-M3寄存器说明
回复:STM32中用到的Cortex-M3寄存器说明
回复:STM32中用到的Cortex-M3寄存器说明
RE:STM32中用到的Cortex-M3寄存器说明