EXTI外部中断介绍(内置1.中断系统+2.中断执行流程+3.STM32中断+4.NVIC基本结构+5.NVIC优先级分组+6.EXTI简介+7.EXTI基本结构...)

简介: EXTI外部中断介绍(内置1.中断系统+2.中断执行流程+3.STM32中断+4.NVIC基本结构+5.NVIC优先级分组+6.EXTI简介+7.EXTI基本结构...)

1.中断系统:


3a1010643b2849f4b40f08f1bcd19b25.png


2.中断执行流程:


9d6c88b933854f34abff70224c592106.png


注:右图中主程序不需要调用中断执行函数,当中断来临时,硬件自动调用。


3.STM32中断:


a501e978dc8841a386d949022bc17319.png


注:外设可申请中断的主要是EXTI外部中断,TIM定时器,ADC模数转换器,USART串口,SPI通信,IIC通信,RTC实时时钟外设。


灰色部分中断不需要掌握,了解即可,一般使用不到。


如:WWDG看门狗系统中断,若系统卡顿,则激活看门狗系统,使系统重启。


PVD电源电压监测中断,当电源电压没电时,激活中断。


详情放大看表,不再赘述。


中断函数的地址是不固定的,但是中断跳转只能跳转到固定位置,所以需要定义固定的地址列表,存放中断函数地址。如果发生中断,通过访问固定的地址列表得到中断函数地址,进而得到中断函数。


注:C语言不需要考虑该问题。


4.NVIC基本结构:


50cd55213f2542d89aba2c72fbb2dca8.png


NVIC又叫嵌套中断向量控制器。分配中断优先级和管理中断。


作用:减少对CPU的接线口,使CPU能够独立出来。


5.NVIC优先级分组:


c9b8ff326df446cc87275ad0ee17aceb.png


优先级寄存器的某一位(该位只可能是0~15)的值越小,优先级越高。


优先级寄存器的4位分配可以是:抢占优先级0,响应优先级4;抢占优先级1,响应优先级3等等5种形式。


举个听过的例子:医生正在给某一个病人看病,其他病人排队。


响应优先级:有病人在排队等待时可以类似于"插队",排到别人前面。


抢占优先级:跳过排队,直接"插队"到正在看病的病人前面,中断正在看病的人,自己先开。


值越小,优先级越高。


6.EXTI简介:


954146ffbc16427fac5a8259698daffe.png


即:引脚发生变化,引起中断。


上升沿:引脚从低电平变为高电平的瞬间触发中断。


下降沿:引脚从高电平变为低电平的瞬间触发中断。


双边沿:高电平,低电平均可发生中断。


软件触发:程序只要执行相应代码,就会触发中断。


相同的Pin不能同时触发中断解释:如PA1,PB1,PC1不能同时触发。


触发相应方式解释:引脚电平(也可以是软件)触发中断。事件响应触发别的外设操作。


7.EXTI基本结构:


cef144634f2341df917b65f80903d64a.png


解释:GPIOA,GPIOB,GPIOC三个加起来有48个线,但是GPIO只能允许16根线(EXTI也介绍过),因此,AFIO作用就是在GPIO相同位中选择其中一个起作用,(如PA1,PB1,PC1选择PB1),也印证了EXTI基本原理。


注:EXTI-->NVIC时,EXTI9_5,EXTI5_10是一个中断,所以需要具体情况再次分析。


其他外设即是事件响应。


8.AFIO复用IO口:


2734ebd1cfd04766bd381696d26e8419.png


右图为选择控制器:左侧为多个输入端,通过上或下的控制端,选择左侧多个输入端中的一个给右侧的输出端。


9.EXTI框图:


a71bc55c7bed4f1ca20969fbe77ee88a.png


注:框1为与门,框2为或门,均允许多个输入,但是只能有一个输出。或门:输入只要有一个为高电平1,输出即为高电平1。输入全为0,输出才为0.。。与门:输入全部都为高电平1,输出才为高电平1,否则为低电平0。


10.旋转编码器简介:


b2119b443a6f4cbda27978a5ac8b8fae.png


如第一个图,圆盘状的为光栅编码盘。光栅编码盘转动时,红外传感器的红外光出现遮挡透过遮挡透过等现象,对应高电平,低电平交替现象的方波,方波个数代表转过的角度,方波的频率代表转速。但是无法测旋转方向。


第二个图,可以测旋转方向,因为相位图(正交波形)中,正转是滞后90°,反转是提前90°.


第三个为电机连接霍尔传感器,当磁铁旋转时,通过霍尔传感器,输出正交的方波信号。


11.旋转编码器硬件电路:


e0afeae0070e4a4caeff48d44b76ed3b.png


解释:左图中A进入信号之后,默认VCC,为高电平1。若按键旋转,则A与GND直接导通,为低电平0.R3为输出限流电阻,防止模块引脚电流过大。C1是输出滤波电容,防止输出信号抖动。


左图B原理同A,不再赘述。


注:推荐各位查找NVIC和STM32手册加深理解。手册已上传,需要的可以在我的git中查找


STM32手册的第9章,中断和事件。


相关文章
|
10月前
STM32中断与事件的理解
STM32中断与事件的理解
290 0
|
11月前
STM32外中断
STM32外中断
56 0
|
11月前
【STM32】通用定时器TIM2-TIM5中断配置方式+继电器控制
【STM32】通用定时器TIM2-TIM5中断配置方式+继电器控制
197 0
|
11月前
【STM32】高级定时器TIM1计数中断配置
【STM32】高级定时器TIM1计数中断配置
407 0
龙芯2K驱动开发——使用中断触发读取GPIO电平值上传给读取进程
龙芯2K驱动开发——使用中断触发读取GPIO电平值上传给读取进程
356 0
龙芯2K驱动开发——使用中断触发读取GPIO电平值上传给读取进程
|
智能硬件
GPIO中断/外部中断EXTI的初始化
GPIO中断/外部中断EXTI的初始化
314 0
|
数据采集 开发工具
ZYNQ-实现GPIO的中断控制
ZYNQ-实现GPIO的中断控制
284 0
ZYNQ-实现GPIO的中断控制
|
安全 开发工具 Perl
ZYNQ-定时器中断使用
ZYNQ-定时器中断使用
218 0
ZYNQ-定时器中断使用
|
芯片
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)
728 0
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)
|
Java
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(二)
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(二)
540 0
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(二)