1简介
这张图是一条外部中断线或外部事件线的示意图。图中的红色虚线箭头,标出了外部中断信号的传输路径;图中绿色虚线箭头,标出了外部事件信号的传输路径。图中信号线上划有一条斜线,旁边标志20字样的注释,表示这样的线路共有20套。
2概念
事件:是表示检测到某一动作(电平边沿)触发事件发生了。
中断:有某个事件发生并产生中断,并跳转到对应的中断处理程序中。
中断有可能被更优先的中断屏蔽,事件不会。
事件本质上就是一个触发信号,是用来触发特定的外设模块或核心本身(唤醒)。
事件只是一个触发信号(脉冲),而中断则是一个固定的电平信号 。
事件是中断的触发源,事件可以触发中断,也可以不触发,开放了对应的中断屏蔽位,则事件可以触发相应的中断。 事件还是其它一些操作的触发源,比如DMA,还有TIM中影子寄存器的传递与更新;
简单点就是中断一定要有中断服务函数,但是事件却没有对应的函数。
事件可以在不需要CPU干预的情况下,执行这些操作,但是中断则必须要CPU介入.。
3中断传输路径
如红色虚线所示。首先,外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路。
编号2的边沿检测电路:这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。
编号3的或门:这个或门的另一个输入是软件中断/事件寄存器,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,即当软件中断/事件寄存器的对应位为"1"时,不管外部信号如何,编号3的或门都会输出有效信号。
然后,一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器,到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化。
外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为"0",则该请求信号不能传输到与门的另一端,实现了中断的屏蔽。
4事件传输路径
明白了外部中断的请求机制,就很容易理解事件的请求机制了。图中红色虚线箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的与门,这个与门的作用与编号4的与门类似,用于引入事件屏蔽寄存器的控制;最后脉冲发生器的一个跳变的信号转变为一个单脉冲,输出到芯片中的其它功能模块。
5中断和事件的区别:
中断是当IO达到中断条件后会向CPU产生中断请求
事件是事先设置好的任务,当单片机达到要求将通过硬件的方式处理事先设置好的任务,而不向CPU请求中断,比如DMA、AD转换等
从外部激励信号来看,中断和事件的产生源都可以是一样的,之所以分成2个部分,由于中断是需要CPU参与的,需要软件的中断服务函数才能完成中断后产生的结果。但是事件,是靠脉冲发生器产生一个脉冲,进而由硬件自动完成这个事件产生的结果,当然相应的联动部件需要先设置好,比如引起DMA操作,AD转换等。
中断线路最终会输入到 NVIC 控制器中,从而会运行中断服务函数,实现中断内功能,这个是软件级的。
事件线路最后产生的脉冲信号会流向其他的外设电路,是硬件级的。