STM32之中断的使用(EXTI NVIC)
外部中断/事件控制器由19 个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以被独立的屏蔽。挂起寄存器保持着状态线的中断要求。
NVIC驱动有多种用途:例如使能或者失能IRQ中断,
使能或者失能单独的IRQ通道,改变IRQ通道的优先级等等。
EXTI结构体
typedef struct {
uint32_t EXTI_Line; // 中断/事件线
EXTIMode_TypeDef EXTI_Mode; // EXTI 模式
EXTITrigger_TypeDef EXTI_Trigger; // 触发类型
FunctionalState EXTI_LineCmd; // EXTI 使能
} EXTI_InitTypeDef;
NVIC结构体
typedef struct {
uint8_t NVIC_IRQChannel; // 中断源
uint8_t NVIC_IRQChannelPreemptionPriority; // 抢占优先级
uint8_t NVIC_IRQChannelSubPriority; // 子优先级
FunctionalState NVIC_IRQChannelCmd; // 中断使能或者失能
} NVIC_InitTypeDef;
中断/事件线
EXTI 有20 个中断/事件线,每个GPIO都可以被设置为输入线,占用EXTI0 至EXTI15,
还有另外七根用于特定的外设事件
中断/事件线 输入源
EXTI0 PX0(X 可为A,B,C,D,E,F,G,H,I)