EXTI 外部中断
EXTI可以检测指定gpio口的电平信号,当指定的gpio口发生电平跳变时,EXTI向NVIC发送中断申请。裁决后中断cpu主程序,执行EXTI中断程序
支持的触发方式如下:
上升沿,下降沿,双边沿,软件触发
通道数:16个GPIO_pin PVD RTC USB唤醒 以太网唤醒
值得注意的是,虽然支持所有的gpio口,但相同的pin不能同时触发中断,因为AFIO(中断引脚选择模块,即一个数据选择器)如PA0,PB0,PC0等只有一个能连接到AFIO的通道0上进行中断。
触发相应方式:中断响应/事件响应
中断响应效果如上,事件响应就是触发中断时不会跳转到cpu,而是直接跳转到某外设如ad转换器等触发相应的操作
为何外部中断?
想要获取的信号是外部驱动的快速突发信号,需要外部产生信号时快速反应。
代码思路:
1.配置RCC,打开所需使用外设的时钟
RCC_APB2PeriphClockcmd(指定GPIO口,使能)函数
开启对应GPIO口,AFIO的时钟,,EXTI和NVIC时钟常开,不需要特地打开
2.配置GPIO,选择端口为输入模式
定义结构体GPIO_InitTypeDef GPIO_InitStructure;
配置mode(上拉,下拉,浮空),pin和speed
3.配置AFIO,选择使用的GPIO,连接后面的EXTI。
4.配置EXTI,选择边沿触发方式(上升沿,下降沿,双边沿),选择触发响应方式,中断响应或事件响应
5.配置NVIC,给中断分配合适的优先级。
中断函数文件,从启动文件里找