一、中断系统
主程序运行过程中,出现中断请求,编译器会保护主程序断点现场,跳出优先处理中断,中断程序运行完成后,跳回主程序继续运行断点后的主程序。
注意分清:中断、中断优先级、中断嵌套三个概念。
1)STM32的中断介绍
1、中断通道就是中断源,STM32具体到某个型号不一定有68个中断这么全,基本上所有外设均可触发中断。一个外设可以有多个中断源,每个中断通道都有16个可编程的优先等级。
2、中断使用NVIC(嵌套中断向量控制器)统一管理(可以把它比作是医院里面的叫号系统,CPU是医生)。 管理中断、分配优先级都由它来控制。NVIC是一个内核外设,服务与CPU。图中n的意思是一个外设可能会占用多个中断通道。
响应优先级:
CPU目前处理的中断完成后,如果排队待处理的中断中有响应优先级的中断,即使排在末尾,也可以插队优先让CPU处理。
抢占优先级:
CPU目前正在处理中断的情况下,处于抢占优先级的中断源出现,可以让CPU暂停当前正在处理的中断,先处理抢占优先级的中断,处理完抢占优先级的中断后再处理刚才暂停的中断。
中断排队规则:
中断是按照中断号来进行排队,并不是按照先来后到的顺序,按照优先级排队,值越小优先级越高。
二、外部中断
触发后响应的两种方式:
中断响应:正常中断触发流程,中断触发,CPU处理中断函数;
事件响应:中断检测到引脚电平变化时,中断信号不通向CPU,直接通向其他外设,触发其他外设的操作,属于外设与外设之间的联合工作。
外部中断基本结构
AFIO:中断引脚选择器,因为GPIO_Pin只有16个中断通道,所以同一个Pin,只有一个能接到通道内,例如PinA0 PinB0 PinC0 只有一个可以接到通道0上,
EXTI外部中断控制器逻辑图:
总结:
对于STM32来说,想要获取的信号是外部驱动很快的突发信号,SMT32属于被动输入,需要及时检测并处理收到的信号,则需要用到外部中断。