在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。 7 u3 b% ~6 Q8 t9 N, S# E 在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: * g, J5 f# d, U% ]% r) q: G ) b3 ~. M% h" K L) { 一、NVIC寄存器组 5 k, s, s" P+ n1 r; U STM32的固件库中有如下定义: , p$ y+ ]! x. f) b3 N7 e typedef struct8 s, _9 q3 p! E- ? {9 R. ?% V% G( S. X) N/ g vu32 ISER[2]; u32 RESERVED0[30]; vu32 ICER[2]; u32 RSERVED1[30];1 y" P- r5 Y e vu32 ISPR[2];% K( m% @6 u( P/ v u32 RESERVED2[30];* J' ~) v( n4 e2 P T# W vu32 ICPR[2];9 q* J- j& Z* @7 B; @2 j) a u32 RESERVED3[30];: ~3 n" m- E- H vu32 IABR[2]; u32 RESERVED4[62]; vu32 IPR[11]; } NVIC_TypeDef; 它们对应ARM手册中的名称为 ISER = Interrupt Set-Enable Registers. Q7 Z) U$ h) L* e, D U5 k A; ^ ICER = Interrupt Clear-Enable Registers# r5 h) s4 U' t ISPR = Interrupt Set-Pending Register 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技术参考手册中的中断向量表,中断源的位置为: 位置0 - WWDG = Window Watchdog interrupt 位置1 - PVD = PVD through EXTI Line detection interrupt 位置2 - TAMPER = Tamper interrupt ...... 位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt6 W9 ?1 z3 ~- d3 f 位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts 二、系统控制寄存器组 7 T- x* Y; y6 q3 z5 b3 W STM32的固件库中有如下定义: 6 y. o% {! s1 `# x, P0 O1 [ typedef struct {2 j- ?0 c2 r D- G. D2 J vuc32 CPUID;+ n0 k8 k: m; K" N vu32 ICSR;5 S, q) D/ \1 T vu32 VTOR; vu32 AIRCR;, |) a% w& ?9 A* q, o+ J# w" j% l vu32 SCR;: O% s) _4 Q8 Z0 B/ E+ c. }4 a vu32 CCR; vu32 SHPR[3]; vu32 SHCSR;/ U; O2 w! x+ I, d9 B vu32 CFSR; vu32 HFSR;# h8 X0 d4 r. R* \ vu32 DFSR;" y' e) L$ a% g* V" X9 ~/ ?% W vu32 MMFAR; vu32 BFAR;+ h* `4 v3 ]) l vu32 AFSR;3 g/ f+ t) f4 s4 ~% w } SCB_TypeDef; /* System Control Block Structure */ 9 \8 y/ b1 P6 b- U- G$ i 它们对应ARM手册中的名称为 CPUID = CPUID Base Register ICSR = Interrupt Control State Register M- G9 h0 ^. X& C7 c VTOR = Vector Table Offset Register AIRCR = Application Interrupt/Reset Control Register6 w+ W& ?0 O, e1 n SCR = System Control Register" b# o. C: @9 Y( y CCR = Configuration Control Register SHPR = System Handlers Priority Register( _1 [1 b/ Z8 F& f2 k- P2 k) m SHCSR = System Handler Control and State Register CFSR = Configurable Fault Status Registers HFSR = Hard Fault Status Register3 s1 I# I3 i* {, K% H! R DFSR = Debug Fault Status Register MMFAR = Mem Manage Address Register1 H4 C t2 |) w7 ?- o BFAR = Bus Fault Address Register AFSR = Auxiliary Fault Status Register / v; k' Q% _! I 6 R0 _ a) y* b! A; a8 \0 ]8 Z3 L% x 三、系统时钟寄存器组 3 u# D: S$ Q/ _8 D+ |5 N7 ] STM32的固件库中有如下定义: # J2 n5 y. e% r1 w8 @0 z3 m typedef struct% a) ]! I6 Y6 k! D7 D- B$ J% Q# y {) T9 Y4 |( e3 O, h7 Y. p: _ vu32 CTRL; vu32 LOAD; vu32 VAL;" z: `$ c7 Z3 W, X6 n8 B vuc32 CALIB; } SysTick_TypeDef; % T3 H. h/ X: T 它们对应ARM手册中的名称为 [9 f+ O) O- n, t CTRL = SysTick Control and Status Register O3 h) }+ Y2 J5 @3 n; Z1 C LOAD = SysTick Reload Value Register0 e2 ?# x6 c- |4 a$ C. h8 h6 a1 F VAL = SysTick Current Value Register+ I2 c: Y* G4 f0 I+ L CALIB = SysTick Calibration Value Register % r. {; L. C0 r 4 t n& P, P7 y |
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寄存器说明