STM32之中断和异常

1、STM32的所有GPIO都可以用作外部中断源的输入端,用来捕捉外部信号,可以配置为下降沿中断、上升沿中断和上升下降沿中断三种模式。
2、Cortex内核具有很强大的异常响应系统,它把能够打断当前代码执行流程的时间分为异常(exception)和中断(interrupt),并把它们用一个表管理起来,编号0~15的称为内核异常,而16以上的则称为外部中断。这个表就称为中断向量表。
3、NVIC是属于Cortex内核的器件,不可屏蔽中断(NMI)和外部中断都由它来处理,而SYSTICK不是由NVIC来控制的。
4、STM32的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表明它的优先级别越高。
抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A的过程中被中断B打断,执行完中断函数B再继续执行中断服务函数A),抢占属性由NVIC_IRQChannelPreemptionPriority的参数配置。
而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时到达,则先处理响应优先级高的中断,响应属性由NVIC_IRQChannelSubPriority参数配置。
5、NVIC只能配置16种中断向量,如果工程中超过16个中断怎么办?
注意NVIC能配置的是16种中断向量,而不是16个,当工程中有超过16个中断向量时,必然有两个月以上的中断向量是会用相同的中断种类,而具有相同中断种类的中断向量不能互相嵌套。
6、AFIO时钟
当把GPIO用作EXIT外部中断或使用重映射功能的时候,必须开启AFIO时钟,而在使用默认复用功能的时候,就不必开启AFIO时钟。
7、中断服务函数名是不是可以自己定义?
不可以,中断服务函数的名字必须要与启动文件startup_stm32f10x_hd.s中的中断向量表定义一致。
8、中断函数名有两种命名方法:

EXTI0_IRQHandler ;EXTI Line0
EXTI1_IRQHandler ;EXTI Line1
EXTI2_IRQHandler ;EXTI Line2
EXTI3_IRQHandler ;EXTI Line3
EXTI4_IRQHandler ;EXTI Line4

EXTI9_5_IRQHandler ;EXTI Line 9..5
EXTI5_10_IRQHandler ;EXTI Line 15..10
中断线在5之后的就不能像0~4那样只有单独一个函数名,都必须写成EXTI9_5_IRQHandler和EXTI15_10_IRQHandler。假如写成EXTI5_IRQHandler、EXTI6_IRQHandler、……、EXTI15_IRQHandler编译器是不会报错的,不过中断服务程序不能工作。所以如果不知道这样的区别,会浪费很多时间来查找错误。

你可能感兴趣的:(STM32,分类学习,抄录)