在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下:
1)、NVIC寄存器组
STM32的固件库中有如下定义:
typedefstruct
{
vu32ISER[2];
u32RESERVED0[30];
vu32ICER[2];
u32RSERVED1[30];
vu32ISPR[2];
u32RESERVED2[30];
vu32ICPR[2];
u32RESERVED3[30];
vu32IABR[2];
u32RESERVED4[62];
vu32IPR[11];
}NVIC_TypeDef;
它们对应ARM手册中的名称为
ISER=InterruptSet-EnableRegisters
ICER=InterruptClear-EnableRegisters
ISPR=InterruptSet-PendingRegister
ICPR=InterruptClear-PendingRegister
IABR=ActiveBitRegister
IPR=InterruptPriorityRegisters
每个寄存器有240位,以InterruptSet-EnableRegisters说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。
参考STM32技术参考手册中的中断向量表,中断源的位置为:
位置0-WWDG=WindowWatchdoginterrupt
位置1-PVD=PVDthroughEXTILinedetectioninterrupt
位置2-TAMPER=Tamperinterrupt
......
位置58-DMA2_Channel3=DMA2Channel3globalinterrupt
位置59-DMA2_Channel4_5=DMA2Channel4andDMA2Channel5globalinterrupts
2)、系统控制寄存器组
STM32的固件库中有如下定义:
typedefstruct
{
vuc32CPUID;
vu32ICSR;
vu32VTOR;
vu32AIRCR;
vu32SCR;
vu32CCR;
vu32SHPR[3];
vu32SHCSR;
vu32CFSR;
vu32HFSR;
vu32DFSR;
vu32MMFAR;
vu32BFAR;
vu32AFSR;
}SCB_TypeDef;/*SystemControlBlockStructure*/
它们对应ARM手册中的名称为
CPUID=CPUIDBaseRegister
ICSR=InterruptControlStateRegister
VTOR=VectorTableOffsetRegister
AIRCR=ApplicationInterrupt/ResetControlRegister
SCR=SystemControlRegister
CCR=ConfigurationControlRegister
SHPR=SystemHandlersPriorityRegister
SHCSR=SystemHandlerControlandStateRegister
CFSR=ConfigurableFaultStatusRegisters
HFSR=HardFaultStatusRegister
DFSR=DebugFaultStatusRegister
MMFAR=MemManageAddressRegister
BFAR=BusFaultAddressRegister
AFSR=AuxiliaryFaultStatusRegister
3)、系统时钟寄存器组
STM32的固件库中有如下定义:
typedefstruct
{
vu32CTRL;
vu32LOAD;
vu32VAL;
vuc32CALIB;
}SysTick_TypeDef;
它们对应ARM手册中的名称为
CTRL=SysTickControlandStatusRegister
LOAD=SysTickReloadValueRegister
VAL=SysTickCurrentValueRegister
CALIB=SysTickCalibrationValueRegister