差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
stm32:exti [2024/12/22 22:20] laythystm32:exti [2024/12/22 23:33] (当前版本) laythy
行 15: 行 15:
 {{ :stm32:nvic.png?600|}} {{ :stm32:nvic.png?600|}}
  
-NVIC结构:\\+**NVIC和AFIO**\\
   NVIC接收多个外设输入,只有一个输出给CPU(最高优先级中断)。   NVIC接收多个外设输入,只有一个输出给CPU(最高优先级中断)。
 +  看下图2,EXTI5到9和EXTI10到15接到同一个NVIC中断里,执行同一个中断函数(为了节省NVIC引脚)。
 {{ :stm32:nvicstructure.jpeg?400|}} {{ :stm32:nvicstructure.jpeg?400|}}
 +{{ :stm32:nvicstructure2.jpeg?600|}}
 +  AFIO除了用于中断引脚选择,还用于复用功能引脚重映射。
 +{{ :stm32:afio.jpeg?400|}}
  
-NVIC优先级分组:\\ +**NVIC优先级分组:**\\ 
-抢占优先级:如果现在正在中断中,立刻停止当前中断,执行此中断。(优先级高的抢占优先级低的,可做中断嵌套)(患者直接插队到诊室) +  抢占优先级:如果现在正在中断中,立刻停止当前中断,执行此中断。(优先级高的抢占优先级低的,可做中断嵌套)(形象比喻:患者直接插队到诊室) 
-响应优先级:如果现在正在中断中,继续当前中断,在当前中断结束后立即执行此中断。(患者插队到队伍前面) +  响应优先级:如果现在正在中断中,继续当前中断,在当前中断结束后立即执行此中断。(形象比喻:患者插队到队伍前面) 
-值越小,优先级越高,0优先级最高,15最低。+  值越小,优先级越高,0优先级最高,15最低。 
 +  当两个函数的抢占优先级和相应优先级都相同时,看下表中的第二列优先级进行,同样值越小,优先级越高
 {{ :stm32:nvicprioritygroup.jpeg?600|}} {{ :stm32:nvicprioritygroup.jpeg?600|}}
  
 +**EXTI(外部中断):**\\
 +  外部中断还有一个功能:从低功耗的停止模式下唤醒stm32切换到正常模式。(下图“通道数”的后四个)
 +  下图“相同的pin不能同时触发中断”:即GPIO_Pin_x,x相同的引脚不能同时触发中断。如PA3,PB3,PC3不能同时触发。而PA3,PA4,PB2可以。
 +  解释:看NVIC结构图2,GPIO先通过AFIO(中断优先级选择),再接到EXTI。PA3,PB3,PC3经过AFIO后,只有一个pin能进入EXTI的3脚输入。
 +{{ :stm32:exti.jpeg?600|}}
 +  EXTI结构图:(输入线一共20脚,16来自AFIO选择的GPIOpin+4特殊通道)
 +{{ :stm32:extistructure.jpeg?600|}}
 +  Q:什么时候用外部中断?
 +  A:当想要获取的信号是有外部驱动的很快的突发信号。(如旋转编码器输出、红外计次输出)
 +
 +旋转编码器:
 +{{ :stm32:rotaryencoder.jpeg?400|}}
 +  这种常见的旋转编码器,中间的轴可以按下,由上侧引脚输出。支持识别正反转和速度。
 +  识别正反转:这种旋转编码器有特制的轴下金属片阵列,产生90°的相位差(相位差90°的波形也叫正交波形)。正转时,A比B先90°输出。反转时,B比A先90°输出。
 +{{ :stm32:phasediff.jpeg?400|}}
 +{{ :stm32:rotaryencodercircuit.jpeg?400|}}