一、概念
该控制器是由多个边沿检测器组成的,边沿检测器会检查电平变化,当检测到用户提前设定的边沿类型(上升/下降沿)时,该器件会主动产生中断请求;
stm32c8t6有19个能产生事件/中断请求的边沿检测器,每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。
外部中断/事件控制器框图
二、配置GPIO口中断检测
(1)已知有19个能产生事件/中断请求的边沿检测器,而每组GPIO引脚都是16个,他们一一对应;得出中断线0控制所有GPIO的0号脚,在AFIO_EXTICRx中可以精确的选择GPIO组(A、B、C、D等);
外部中断通用i/o映像图
而剩余的4个检测器功能为:
● EXTI线16连接到PVD输出
● EXTI线17连接到RTC闹钟事件
● EXTI线18连接到USB唤醒事件
● EXTI线19连接到以太网唤醒事件(只适用于互联型产品)
(2)中断屏蔽寄存器(EXTI_IMR),开启中断线,在对应的 0 - 19 位置中写入二进制1,即可开启对应的中断请求;
(3)上升沿触发选择寄存器(EXTI_RTSR),下降沿触发选择寄存器(EXTI_FTSR),选择触发边沿极性(上升/下降沿)。在对应的0 - 19位置写入二进制1就是开启对应的上升沿触发,下降沿也是这样开启,只是在另一个寄存器中,上升沿和下降沿触发可以同时开启;
(4)确定GPIO组,例如在EXTI4位置中填入二进制0000,意思是开启中断线4选择的是GPIOA的引脚4 ==> PA4。