CPU 执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),来处理该事件,该事件处理完成后又返回被中断的程序继续执行。
STM32支持84个中断(16个内部,68个外部);16级可编程的中断优先级设置。
抢占优先级:高抢占式优先级的中断事件会打断当前的主程序/中断程序的运行。中断嵌套。
响应优先级:在抢占式优先级相同的情况下,高响应优先级的中断优先被响应。不能嵌套,只能等待低响应优先级中断执行完成才能得到响应。
规则:先抢占优先级,后响应优先级;抢占式优先级决定是否会有中断嵌套。
内部中断表
外部中断表
7个外部中断
EXTI0
EXTI1
EXTI2
EXTI3
EXTI4
EXTI9_5
EXTI15_10
函数
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
功能: 根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
参数: EXTI_InitStruct:指向结构EXTI_InitTypeDef的指针,包含了外设EXTI的配置信息
EXTI_InitTypeDef定义于文件“stm32f10x_exti.h”:
typedef struct {
u32 EXTI_Line;
EXTIMode_TypeDef EXTI_Mode;
EXTIrigger_TypeDef EXTI_Trigger;
FunctionalState EXTI_LineCmd;
} EXTI_InitTypeDef;
EXTI_Line 选择了待使能或者失能的外部线路
EXTI_Line0 外部中断线0
EXTI_Line1 外部中断线1
EXTI_Line2 外部中断线2
EXTI_Line3 外部中断线3
EXTI_Line4 外