
中断系统中断在主程序运行过程中出现了特定的中断触发条件中断源使得CUP暂停当前正在运行的程序转而去处理中断程序处理完成后又返回到原来被暂停的位置继续运行图1图1中断优先级当有多个中断源同时申请中断时CUP会根据中断源的轻重缓急进行裁决优先响应更加紧急的中断源中断嵌套当一个中断程序正在运行时又有新的更高优先级的中断源申请中断CUP再次暂停当前中断程序转而去处理新的中断程序处理后依次进行返回图2图2stm32中的中断包含68个可屏蔽中断通道包含EXTI外部中断TIM定时器ADC模数转换器USART(通用同步异步收发器),SPI(串行外设接口)I2C(通信总线)RTC实时时钟等多个外设使用NVIC进行统一管理中断每个中断通道都拥有16个可编程的优先级分组进一步设置抢占优先级和响应优先级NVIC的基本结构中断的分配是通过NVIC进行的NVIC优先级分组NVIC嵌套向量中断控制器的优先级分组由优先级寄存器的低4位0~15决定数字越小优先级越高这4位优先级可以进行切分分为高n位的抢占优先级和低4-n位的响应优先级抢占优先级高的可以申请中断嵌套响应优先级高的可以优先排队抢占优先级和响应优先级均相同的按中断号排队EXTI简介EXTI外部中断EXTI可以检测指定GPIO口的电平信号当指定的GPIO口产生电平变化时EXTI将立刻向NVIC发出中断申请经过NVIC裁决后即可中断CPU主程序使CPU执行EXTI对应的中断程序支持的触发方式上升沿/下降沿/双边沿/软件触发支持的GPIO口所有GPIO口但相同的Pin不能同时触发中断通道数16个GPIO_Pin外加PVD输出RTC时钟USB唤醒以太网唤醒触发方式中断响应/事件响应不通过CPUEXTI基本结构EXTI内部结构图中NVIC代表的是中断响应图中脉冲发生器代表的是事件响应或门只要有1个1就输出1全为0输出0与门只要有1个0就输出0全为1输出1图中中断屏蔽寄存器输出1即打开输出0无论挂起寄存器输出何值都输出0非门输入1输出0AFIO复用IO口AFIO主要用于引脚复用功能的选择和重定义在STM32中AFIO主要完成两个任务复用功能引脚重映射中断引脚选择什么时候需要使用外部中断对于一些外部驱动的突发信号例如旋转编码器/红外遥控可能很长时间都处于静默状态一但触发就会有很多的信号需要STM32进行处理为了避免信号缺失可以使用外部中断信号一过来STM32立刻接收信号另外按键也属于这类外部驱动但是由于按键抖动等原因使得其信号并不是转瞬即逝的因此一般不使用外部中断