1.中断系统:
2.中断执行流程:
注:右图中主程序不需要调用中断执行函数,当中断来临时,硬件自动调用。
3.STM32中断:
注:外设可申请中断的主要是EXTI外部中断,TIM定时器,ADC模数转换器,USART串口,SPI通信,IIC通信,RTC实时时钟外设。
灰色部分中断不需要掌握,了解即可,一般使用不到。
如:WWDG看门狗系统中断,若系统卡顿,则激活看门狗系统,使系统重启。
PVD电源电压监测中断,当电源电压没电时,激活中断。
详情放大看表,不再赘述。
中断函数的地址是不固定的,但是中断跳转只能跳转到固定位置,所以需要定义固定的地址列表,存放中断函数地址。如果发生中断,通过访问固定的地址列表得到中断函数地址,进而得到中断函数。
注:C语言不需要考虑该问题。
4.NVIC基本结构:
NVIC又叫嵌套中断向量控制器。分配中断优先级和管理中断。
作用:减少对CPU的接线口,使CPU能够独立出来。
5.NVIC优先级分组:
优先级寄存器的某一位(该位只可能是0~15)的值越小,优先级越高。
优先级寄存器的4位分配可以是:抢占优先级0,响应优先级4;抢占优先级1,响应优先级3等等5种形式。
举个听过的例子:医生正在给某一个病人看病,其他病人排队。
响应优先级:有病人在排队等待时可以类似于"插队",排到别人前面。
抢占优先级:跳过排队,直接"插队"到正在看病的病人前面,中断正在看病的人,自己先开。
值越小,优先级越高。
6.EXTI简介:
即:引脚发生变化,引起中断。
上升沿:引脚从低电平变为高电平的瞬间触发中断。
下降沿:引脚从高电平变为低电平的瞬间触发中断。
双边沿:高电平,低电平均可发生中断。
软件触发:程序只要执行相应代码,就会触发中断。
相同的Pin不能同时触发中断解释:如PA1,PB1,PC1不能同时触发。
触发相应方式解释:引脚电平(也可以是软件)触发中断。事件响应触发别的外设操作。
7.EXTI基本结构:
解释:GPIOA,GPIOB,GPIOC三个加起来有48个线,但是GPIO只能允许16根线(EXTI也介绍过),因此,AFIO作用就是在GPIO相同位中选择其中一个起作用,(如PA1,PB1,PC1选择PB1),也印证了EXTI基本原理。
注:EXTI-->NVIC时,EXTI9_5,EXTI5_10是一个中断,所以需要具体情况再次分析。
其他外设即是事件响应。
8.AFIO复用IO口:
右图为选择控制器:左侧为多个输入端,通过上或下的控制端,选择左侧多个输入端中的一个给右侧的输出端。
9.EXTI框图:
注:框1为与门,框2为或门,均允许多个输入,但是只能有一个输出。或门:输入只要有一个为高电平1,输出即为高电平1。输入全为0,输出才为0.。。与门:输入全部都为高电平1,输出才为高电平1,否则为低电平0。
10.旋转编码器简介:
如第一个图,圆盘状的为光栅编码盘。光栅编码盘转动时,红外传感器的红外光出现遮挡透过遮挡透过等现象,对应高电平,低电平交替现象的方波,方波个数代表转过的角度,方波的频率代表转速。但是无法测旋转方向。
第二个图,可以测旋转方向,因为相位图(正交波形)中,正转是滞后90°,反转是提前90°.
第三个为电机连接霍尔传感器,当磁铁旋转时,通过霍尔传感器,输出正交的方波信号。
11.旋转编码器硬件电路:
解释:左图中A进入信号之后,默认VCC,为高电平1。若按键旋转,则A与GND直接导通,为低电平0.R3为输出限流电阻,防止模块引脚电流过大。C1是输出滤波电容,防止输出信号抖动。
左图B原理同A,不再赘述。
注:推荐各位查找NVIC和STM32手册加深理解。手册已上传,需要的可以在我的git中查找
STM32手册的第9章,中断和事件。