EXTI,外部中断,是stm32的众多外设之一,属于中断的一种。
它最重要的就是通过检测外部引脚口的电平变化,比如说上升沿,下降沿,以及双边沿,来触发中断,让主程序放下当前的事情,去执行发生中断时应该执行的事情(设置好的函数)。
大概是如上所属,但是其实具体是怎么运行的呢
EXTI是有20个通道指向NCVI(中断的),主要是16个引脚,还有四个复位,以太网乱七八糟的东西,暂时不用管,但是单片机上肯定不止16个引脚,所以这里用到了AFIO选择器,就当引脚号相同时触发中断时,只选择一个进行触发,就比如说过PA0和PB0同时触发了中断,但是AFIO只能选择一个进行触发,因为都连接在一个通道上,接着往下走,涉及到了优先级的概念,因为你想啊,如果两个中断同时触发,你要先处理哪一个呢,那肯定要设置好处理事件的轻重缓急。这个优先级呢,又分为两种,一种为响应优先级,一种为抢占优先级,听这个名字,抢占优先级就更加厉害的样子,确实如此,,就会形成中断嵌套,先执行抢占优先级更加高的,那响应优先级就要弱一些了,如果一个中断正在执行时,一个响应优先级更高的中断发生了,并不会嵌套,依然会执行原来的,不过之后会根据响应优先级的高低排出队伍顺序(通俗的来讲想象成看病,响应优先级直接冲进诊室,让原来正在看病的病人靠边站,而响应优先级顶多插到队伍前面),这个具体是咋设置,有一个设置优先级的4位寄存器,有0、1、2、3、4几种模式,分别表示抢占优先级占的位数,剩下的就是响应优先级所占的位数,然后将通道根据设定的模式分别设定两个优先级的数值就OK了。然后NCVI就可以根据优先级将中断挨个交给cpu处理,其实就是执行中断通道触发的中断函数,注意这里通道5-10,11-15触发的同一个函数。整个流程就是如此了,在说明一点,中断触发之后也不一定非要传到cpu执行中断函数,也可以传到某一外设,让它做事情,这样就会减轻cpu的负担了,称为事件中断。