STM32F10X的外部中断(EXTI)
首先,在学习外部中断之前,我们要有一个前要知识,关于NVIC:嵌套向量中断控制器
NVIC寄存器包含如下:
typedef struct {
ISER //中断使能寄存器
ICER //中断清除寄存器
ISPR //中断使能挂起寄存器
ICPR //中断清除挂起寄存器
IABR //中断有效位寄存器
IP //中断优先级寄存器
STIR //软件触发中断寄存器
}NVIC_Type;
在配置中断时,我们一般使用ISER、ICER、IP,ISER用来使能中断,ICER用来清除中断,IP用来设置中断优先级
接下来就是如何使用中断
在固件库文件core_cm3.h中,提供了一些NVIC函数
通常库函数编程很少使用,在配置中断可以使用更简洁的方法,我这里以野火作为学习,后面会详细介绍。
IP-中断优先级寄存器介绍
NVIC_IPRx,用来设置外部中断的优先级,该寄存器有8bit,按道理应该有0~255个级别,数字越小,优先级越高,但是为了精简,在103中,高四位用于表达优先级,第四位未使用。
在这高四位中,又分为:抢占优先级、子优先级,抢占优先级级别高于子优先级,简单来说,你想判断中断的优先级,首先比较抢占优先级,如果相同ÿ