图中的20代表在控制器内部类似的信号线路有 20 个,这与 EXTI 总共有 20 个中断/事件线是吻合的。
EXTI可分为两大部分功能,一个是产生中断,另一个是产生事件
中断:触发中断后,会自动跳到相应的中断服务函数中进行相应的处理。
事件:触发事件后,产生一个脉冲信号,这个脉冲信号可以给其他外设电路使用
比如定时器 TIM、ADC等等,这个脉冲信号一般用来触发 TIM 或者 ADC开始转换。
1、输入线:外部中断Line2的输入线部分,我们配置为PC2
2、边沿检测电路:输入线产生电平变化后,通过上升、下降沿寄存器判断是否触发信号
3、或门:外部中断和软件中断都可以触发,例如PC2外部中断,TIM定时器软件中断,二选一
4、请求挂起寄存器:存储中断请求的状态,以便处理器能够管理中断的优先级和响应顺序。
5、与门:可以通过中断屏蔽寄存器来打开或关闭对应中断
6、最后发送到NVIC中断控制器,执行对应中断服务函数
4、与门:可以通过事件屏蔽寄存器来打开或关闭对应事件
5、脉冲发生器:当与门输出为1时产生一个脉冲,发送到其它外设电路
中断请求存储:当外部中断线(如GPIO引脚)检测到一个触发事件(例如,上升沿、下降沿或电平变化),相应的中断请求标志会被置位。这个标志保存在EXTI挂起寄存器中,表示中断请求已发生但尚未处理。
优先级管理:如果中断控制器中有多个中断同时请求,挂起寄存器允许处理器根据中断优先级来决定先处理哪一个。中断系统通常有优先级分层,挂起寄存器确保低优先级的中断在高优先级的中断处理完毕后才被服务。
非阻塞操作:挂起寄存器的机制使得处理器可以继续执行其他任务,而不必立即响应中断。这有助于避免中断处理程序的嵌套过深,以及提高系统的实时性。
中断清除:一旦中断处理程序完成,对应的中断标志需要被清除,以防止重复处理同一个中断。通常,这可以通过读取并写回挂起寄存器(也称为读-清除操作)或使用专门的清除指令来完成。
状态查询:开发人员可以通过读取挂起寄存器来检查哪些中断源当前有未处理的请求,这对于调试和故障排查非常有用。