STM32中断与事件

来源:互联网 发布:数据结构与算法笔试 编辑:程序博客网 时间:2024/05/16 16:08


STM32 EXIT(一) - liyunfengxiaozhe - 小哲

 

 

       这张图是一条外部中断线或外部事件线的示意图,途中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套,途中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输入到NVIC中断控制器,在这个通道上游4个控制选项,外部的信号收件经过边沿检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或是下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了,接下来是编号3的或门,这个或门的另一个输入时“软件中断/事件寄存器”,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,即当“软件中断/事件寄存器的对应位为1时,不管外部信号如何,编号3的或门都会输出有效信号。

一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化,外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为0,则该请求信号不能传输到与门的另一端,实现了中断的屏蔽

       途中的红色箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的郁闷,这个与门的作用于编号4的与门类似,用于引入事件屏蔽寄存器的控制;最后脉冲发生器把一个跳变的信号转变位一个单脉冲,输出到芯片中的其他功能,

从这张图中可以看出,从外部激励信号来看,中断和事件是没有分别的,只是在芯片内部分开,一路信号会向CPU产生中断请求,另一路信号会向其他功能模块发送脉冲触发信号,其他功能模块如何响应这个信号,则由对应的模块自己决定。

在图上部的APB总线和外设模块接口,是每一个功能模块都有的部分

 

 

总结:

简单点就是中断一定要有中断服务函数,但是事件却没有对应的函数.但是事件可以触发其他关联操作,比如触发DMA,触发ADC采样等.
可以在不需要CPU干预的情况下,执行这些操作.中断则必须要CPU介入. 

       中断请求:当产生中断的时候,会执行对应的中断处理程序

       事件请求:当产生事件的时候,会想向其他模块发送触发信号,对于其他模块如何处理这个信号,则由模块自己决定!



中断和事件的产生源都可以是一样的! 
之所以分成2个部分,由于中断是需要CPU参与的,需要软件的中断服务函数才能完成中断后产生的结果; 
但是事件,是靠脉冲发生器产生一个脉冲,进而由硬件自动完成这个事件产生的结果,当然相应的联动部件需要先设置好,比如引起DMA操作,AD转换等; 
简单举例:外部I/O触发AD转换,来测量外部物品的重量; 
如果使用传统的中断通道,需要I/O触发产生外部中断,外部中断服务程序启动AD转换,AD转换完成中断服务程序提交最后结果; 
要是使用事件通道,I/O触发产生事件,然后联动触发AD转换,AD转换完成中断服务程序提交最后结果; 
相比之下,后者不要软件参与AD触发,并且响应速度也更块; 
要是使用事件触发DMA操作,就完全不用软件参与就可以完成某些联动任务了。 
可以这样简单的认为,事件机制提供了一个完全有硬件自动完成的触发到产生结果的通道,不要软件的参与,降低了CPU的负荷,节省了中断资源,提高了响应速度(硬件总快于软件),是利用硬件来提升CPU芯片处理事件能力的一个有效方法;

 评论这张
转发至微博
原创粉丝点击