6、外部中断学习

在stm32中中断有很多个,经常被使用在各种外设的正常工作中。
要想进入一个中断,必须要满足一定的条件。
不同的中断有不同的要求。
最简单的是按键边沿触发。
首先应该搞懂这个中断!!
首先要给某个引脚设置;
1、把这个触发外部中断引脚的gpio和 AFIO 的时钟开启和中断优先级进行设置;
6、外部中断学习
2、开启时钟后,对这两个时钟控制下的寄存器进行控制。分别是gpio和exti.
6、外部中断学习
为什么要开启AFIO时钟呢?
6、外部中断学习
在上面的中断线设置过程中,啥时候用到这些寄存器了?
GPIO_EXTILineConfig(KEY1_INT_EXTI_PORTSOURCE, KEY1_INT_EXTI_PINSOURCE);
你想开启中断线,就需要设置AFIO_EXTICRX,就需要开启这个AFIO时钟。
6、外部中断学习
3、宏定义;
6、外部中断学习
4、把这个中断的中断服务函数添加到stm32f10x_it.c中。
stm32f10x_it.h中只包括这几个添加好的函数声明,那我后添加的按键中断为什么不需要声明呢?
6、外部中断学习

可能是因为在启动文件里面,这些个中断服务函数就被区别对待了。。
6、外部中断学习
5、最重要的控制框图6、外部中断学习
一般进入NVIC中断控制器的中断有59外部中断,10个系统异常。
这么多中断,需要一一为他们开辟单独的中断线吗?
实际上在32中一共分配20个中断线。当你要使用一个引脚的中断功能时,应该通过设置开启对应的中断线。、
如果另一个引脚也使用这个中断线,比如pA1,pB1都是用EXTI1时,就要有优先级。
6、外部中断学习
优先级设置
6、外部中断学习