
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。 在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: 8 T) k" B( V+ T2 O0 [7 H9 Z : ^* r: K! D ` 一、NVIC寄存器组 STM32的固件库中有如下定义: typedef struct" v7 u1 Q. f* n" h3 ? {& F: D+ X: ?7 }7 Q- B$ w3 h: M vu32 ISER[2];8 _/ l2 I: b( T, A5 d& s u32 RESERVED0[30];( X* `# _ P3 N4 s' n vu32 ICER[2]; u32 RSERVED1[30];# n# R/ b. g- c H9 ? vu32 ISPR[2];1 z! L' |/ ?% E$ y& B u32 RESERVED2[30];! }' n& _" ~+ h3 s1 T vu32 ICPR[2]; u32 RESERVED3[30];4 f1 ^: y* e! E& }! U( T: K4 l+ B8 V vu32 IABR[2];9 |4 g' {% `. f+ @ u32 RESERVED4[62]; vu32 IPR[11]; x7 G7 s4 A- N u: q" o# d# y } NVIC_TypeDef; # G, ?+ L0 t6 g+ @ 它们对应ARM手册中的名称为 ISER = Interrupt Set-Enable Registers ICER = Interrupt Clear-Enable Registers v* R7 H+ W3 s ISPR = Interrupt Set-Pending Register ICPR = Interrupt Clear-Pending Register. `& Z# p+ ?% O! h1 ?2 K+ I5 N IABR = Active Bit Register" w: d7 c0 U2 P" E' y4 X IPR = Interrupt Priority Registers 每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。 - K* G7 Q/ v0 { 参考STM32技术参考手册中的中断向量表,中断源的位置为:8 a8 S: H4 M# X# Y" u9 b' c 位置0 - WWDG = Window Watchdog interrupt 位置1 - PVD = PVD through EXTI Line detection interrupt: Y: l& I) ^7 i! I$ u9 o 位置2 - TAMPER = Tamper interrupt ...... 位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt 位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts 二、系统控制寄存器组 STM32的固件库中有如下定义: typedef struct3 A9 r3 F' z, V! @- d7 c3 N { vuc32 CPUID;; u S1 s% \9 ~% A, t vu32 ICSR;/ }) Z& G" Y: V$ D3 a7 y vu32 VTOR;" u' _! F m4 r1 ~ p5 r U9 S+ h vu32 AIRCR; vu32 SCR;; u& l0 g/ ]3 J) S* ~% J1 d vu32 CCR;4 [5 t2 l, V1 v" e8 r vu32 SHPR[3]; vu32 SHCSR;% Z7 a& a2 G" ~" m( e vu32 CFSR;( N) @5 |4 f) u# J2 p vu32 HFSR; vu32 DFSR;' D1 [2 W" P) e7 e, [ vu32 MMFAR;4 O: e3 O! h" B8 T ?# g vu32 BFAR;& R4 ]- h% `0 [, Y& r5 a$ a vu32 AFSR;7 s c, f. i$ c$ u" \; ^* O } SCB_TypeDef; /* System Control Block Structure */ 它们对应ARM手册中的名称为 CPUID = CPUID Base Register4 F5 b5 }/ m3 N- ` ICSR = Interrupt Control State Register VTOR = Vector Table Offset Register( B5 M) u3 ]4 r: D AIRCR = Application Interrupt/Reset Control Register SCR = System Control Register CCR = Configuration Control Register SHPR = System Handlers Priority Register SHCSR = System Handler Control and State Register CFSR = Configurable Fault Status Registers2 I, G u1 x* U- V HFSR = Hard Fault Status Register DFSR = Debug Fault Status Register- c# u. X: D# T. d! @/ T4 v- Z MMFAR = Mem Manage Address Register BFAR = Bus Fault Address Register AFSR = Auxiliary Fault Status Register * Y: u7 E( u( `% A1 Z/ e 三、系统时钟寄存器组 STM32的固件库中有如下定义: 2 B* W3 W7 `) n. ^1 l$ ? typedef struct {! i) K7 a' @. C" S vu32 CTRL;7 F9 r' b0 c% C vu32 LOAD;2 K% A/ N: P) E4 T; D& Q vu32 VAL; vuc32 CALIB;7 B5 g! W. F- X2 K# A } SysTick_TypeDef; 它们对应ARM手册中的名称为 2 `1 [# Y) V, k. X. n CTRL = SysTick Control and Status Register LOAD = SysTick Reload Value Register$ ?" S; U6 D4 y$ a/ m; ~# y. K VAL = SysTick Current Value Register4 l8 S8 [% V# q8 ^) Y7 O+ [4 a CALIB = SysTick Calibration Value Register ( v! R# C; P6 R3 G9 m. B |
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寄存器说明