STM32F1学习——EXTI
一、外部中断
stm32中有一种非常常用的中断叫做外部中断,他们就好像门外有人敲门,你去开门处理完事情后再继续做自己的事情一样。
二、STM32的中断
中断的基本流程图如下,需要中断的资源连接NVIC,NVIC通过配置的中断优先级来判断现在应该给CPU处理哪个中断。这里可以使用医生和病人的例子来理解,CPU是医生他主要负责治病,而NVIC是助理他负责叫号,需要中断的资源则是病人。
当然stm32的中断众多,可分类为以下10种类:
1、系统中断:例如SysTick滴答定时器中断。
2、外部中断EXTI:由外部硬件触发,如GPIO。
3、定时器中断:例如定时器记时到了。
4、通信中断:UART SPI I2C CAN USB。
5、模拟外设中断:例如ADC或DAC采样完成。
6、DMA中断:例如数据完成中断。
7、电源管理中断:例如PVD电源电压检测器中断。
8、RTC实时时钟中断:在特定时间出发中断。
9、看门狗中断:例如防止系统中断。
10、闪存控制中断:例如闪存写入完成触发中断。
三、STM32中的外部中断——EXTI
外部中断首先是通过GPIO开始的,通过众多GPIO的读入,到AFIO数据选择器。
如下图,STM32的GPIO引脚通过AFIO数据选择器连接到EXTI上,如下图会导致GPIO都能触发中断,但是pin值相同的pin不能同时触发中断,因为他们都会标记到EXTI n上,NVIC以为只知道这里有人中断申请,不知道有几个。
上面的EXIT0-15就会到EXTI的输入线进入EXTI。
下面就是EXTI的系统逻辑图了,通过检测到外部电路,检测上升或者下降或者都检测产生中断信号,同时STM32还支持软件中断,中间的或门代表着不管是外部中断信号还是软件中断都可以导致中断请求挂起最后至NVIC中断控制器,或者他不需要CPU处理而是触发事件由外设来处理触发脉冲发生器发出脉冲触发其他外设工作。
四、代码
代码的整体逻辑是 开启时钟->初始化GPIO->初始化AFIO->初始化EXTI->初始化NVIC->编写中断程序。
//暂存到时候加
参考
[5-1] EXTI外部中断_哔哩哔哩_bilibili