
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。 在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: 6 g; `) s& M/ \5 c4 k; u2 T8 x! I. _ 一、NVIC寄存器组 STM32的固件库中有如下定义: typedef struct+ T* N, A3 g% `* ~1 V7 Z { vu32 ISER[2];7 a& i, e- W' J: ]+ j5 c u32 RESERVED0[30];" H( |8 {1 ^1 I vu32 ICER[2]; u32 RSERVED1[30];1 q% C3 k$ ]+ G3 `! e vu32 ISPR[2];/ U+ W- s& E/ ? o% J( A u32 RESERVED2[30]; 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; 它们对应ARM手册中的名称为( D0 y$ z# L- ~; r. ^ ISER = Interrupt Set-Enable Registers ICER = Interrupt Clear-Enable Registers ISPR = Interrupt Set-Pending Register+ I% H7 |. |' `5 j. d0 c ICPR = Interrupt Clear-Pending Register IABR = Active Bit Register 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]。 参考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 % W' P# E8 a* S, \9 {) Z" _# p0 l 二、系统控制寄存器组 STM32的固件库中有如下定义: typedef struct+ y3 p- z- H" y9 ~; n: C { vuc32 CPUID; _5 v: S1 U& S- _9 J0 L vu32 ICSR;2 }! ^. t7 |' W: G: L' S+ U vu32 VTOR; vu32 AIRCR; vu32 SCR; 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; vu32 DFSR;9 k- j7 ?: d4 ?. \' Q7 b' y# ^4 D/ s vu32 MMFAR;# p$ A, z) p3 W2 |; X1 F vu32 BFAR; vu32 AFSR; } SCB_TypeDef; /* System Control Block Structure */ 0 B& D& M0 S: [" P0 j 它们对应ARM手册中的名称为 CPUID = CPUID Base Register ICSR = Interrupt Control State Register VTOR = Vector Table Offset Register: _0 q( a7 h1 S" p: ~9 H% B& E, E1 j+ a y AIRCR = Application Interrupt/Reset Control Register SCR = System Control Register CCR = Configuration Control Register SHPR = 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 DFSR = Debug Fault Status Register MMFAR = 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 ; 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; 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手册中的名称为 CTRL = SysTick Control and Status Register LOAD = SysTick Reload Value Register VAL = SysTick Current Value Register CALIB = SysTick Calibration Value Register . o9 W2 B$ C! | |
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寄存器说明