中断:是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行
中断分为两种类型,一种是系统异常,体现在内核水平,一种是外部中断,体现在外设水平
NVIC寄存器简介
typedef struct
{
__IO uint32_t ISER[8]; //中断使能寄存器
uint32_tRESERVED0[24];
__IO uint32_t ICER[8]; //中断清除寄存器
uint32_t RSERVED1[24];
__IO uint32_t ISPR[8]; //中断使能悬起寄存器
uint32_t RESERVED2[24];
__IO uint32_t ICPR[8]; //中断清除悬起寄存器
uint32_t RESERVED3[24];
__IO uint32_t IABR[8]; //中断有效位寄存器
uint32_t RESERVED4[56];
__IO uint8_t IP[240]; //中断优先级寄存器
uint32_t RESERVED5[644];
__O uint32_t STIR; /软件触发中断寄存器
} NVIC_Type;
先比较主优先级,再比较子优先级,如果均一致,再比较设备编号,数值越小,优先级越高。
相关函数
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);
void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState);
void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource);
EXTI:external interrupt/event controller
外部中断/事件控制器
typedef struct
{
uint32_t EXTI_Line; //用于产生 中断/事件 线
EXTIMode_TypeDef EXTI_Mode; //EXTI模式(中断/事件)
EXTITrigger_TypeDef EXTI_Trigger; //触发(上/下/上下)
FunctionalState EXTI_LineCmd; //使能或者失能
}EXTI_InitTypeDef;