文章目录
- 一、中断和事件
- 二、EXTI
- 三、NVIC
-
- 1.NVIC
- 2.NVIC配置
- 3.寄存器
-
- 3.1Interrupt set-enable register x (NVIC_ISERx)
- 3.2Interrupt clear-enable register x (NVIC_ICERx)
- 3.3Interrupt set-pending register x (NVIC_ISPRx)
- 3.4Interrupt clear-pending register x (NVIC_ICPRx)
- 3.5Interrupt active bit register x (NVIC_IABRx)
- 3.6Interrupt priority register x (NVIC_IPRx)
- 3.7Software trigger interrupt register (NVIC_STIR)
- 四、一些术语术语
- 五.配置流程
一、中断和事件
1.总览二者
下面是整个中断和事件的框图,可以看到我使用不同颜色标出了重点
(1)黑色为输入:要注意到事件和中断本质的输入一样的
(2)蓝色为中断:这里是中断的关键寄存器
(3)红色为事件:这里是事件的关键寄存器
(4)绿色为NVIC:是中断需要的控制寄存器
这里其实我们就可以嗅到一些气息,事件很可能处理是要比中断更加迅速的,毕竟不需要经过NVIC
2.中断和事件的区别
其实在上面就已经指出了一些东西,但是在这里进行更多的一些分析
从框图可以看出整个中断和事件的前驱流程是,
(1)input line
(2)edge detect边沿检测
(3)software interrupt/event软件中断/软件事件是否触发
这里可以看出两个要点
(1)软件中断和软件事件优先级是高于事件和中断的
(2)事件和中断有相同的处理时间段
但是上面所说的前驱流程过后,后面就出现了中断和事件的不同之处了
(1)二者都会各自经过一个与门,而各自相与的是中断屏蔽寄存器/事件屏蔽寄存器,也就是说他们分别进入了各自的流程,且为同时判断的(这里我还推测,其实是可以中断和事件同时触发的,如果这样做可能可以在某种程度上加速运算)
(2)在进行了是否为中断/事件的判断后二者进入了完全不同的流程了
--------对于中断,会进入挂起请求寄存器(pending request,等待请求),如果没有所谓的挂起,那么中断就不会进入NVIC,那么就不会处理。如果进入了挂起请求寄存器,后续会到达NVIC(Nested vectored interrupt controller )也就是嵌套向量中断寄存器,进行中断的一些处理,这是是需要和处理器协同运作的,所以会需要更多的内存
--------对于事件,后续进入的是一个脉冲的发生器,完全不进入处理器也不需要进入NVIC,这样就降低了处理器的负荷,提高了运行速度
3.总结
(1)中断:需要NVIC参与,需要处理器处理,速度慢
(2)事件:不需要NVIC,处理器,单独进行,响应快
二、EXTI
1.EXTI介绍
EXTI(External Interrupt/Event Controller):也就是外部中断和事件控制器
(正常来讲应该先了解NVIC,但是个人认为EXTI包含了中断和事件两个单元,而NVIC仅仅是包含了中断的一些设置啥的,应该还是排在后续,所以先了解EXTI或许不是一个坏选择)
2.EXTI功能
其实从名字就了解的七七八八了,就是对中断和事件进行一个控制嘛:),同时有23条单独对于中断和事件的