历史上的今天
今天是:2025年03月08日(星期六)
2021年03月08日 | STM32中断与事件的区别
2021-03-08 来源:eefocus

这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径。
首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了.
按下来是编号3的或门,这个或门的另一个输入是软件中断/事件寄存器,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,即当软件中断/事件寄存器的对应位为"1"时,不管外部信号如何,编号3的或门都会输出有效信号.
一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器,到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化.
外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为"0",则该请求信号不能传输到与门的另一端,实现了中断的屏蔽.
明白了外部中断的请求机制,就很容易理解事件的请求机制了.图中红色虚线箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的与门,这个与门的作用与编号4的与门类似,用于引入事件屏蔽寄存器的控制;
最后脉冲发生器的一个跳变的信号转变为一个单脉冲,输出到芯片中的其它功能模块.从这张图上我们也可以知道,从外部激励信号来看,中断和事件的产生源都可以是一样的.之所以分成2个部分,由于中断是需要CPU参与的,需要软件的中断服务函数才能完成中断后产生的结果;但是事件,是靠脉冲发生器产生一个脉冲,进而由硬件自动完成这个事件产生的结果,当然相应的联动部件需要先设置好,比如引起DMA操作,AD转换等;
简单举例:外部I/O触发AD转换,来测量外部物品的重量;如果使用传统的中断通道,需要I/O触发产生外部中断,外部中断服务程序启动AD转换,AD转换完成中断服务程序提交最后结果;要是使用事件通道,I/O触发产生事件,然后联动触发AD转换,AD转换完成中断服务程序提交最后结果;相比之下,后者不要软件参与AD触发,并且响应速度也更块;要是使用事件触发DMA操作,就完全不用软件参与就可以完成某些联动任务了。
总结
可以这样简单的认为,事件机制提供了一个完全有硬件自动完成的触发到产生结果的通道,不要软件的参与,降低了CPU的负荷,节省了中断资源,提高了响应速度(硬件总快于软件),是利用硬件来提升CPU芯片处理事件能力的一个有效方法;
史海拾趣
|
血红蛋白是血细胞的重要组成部分,它负责将氧气从肺部输送到身体的其它组织。血红蛋白在任一时刻所含的氧气量被称为血氧饱和度(即SpO2)。 血氧饱和度是反映人体呼吸功能及氧含量是否正常的重要生理参数,它是显示我们人体各组织是否健康的一个重要 ...… 查看全部问答> |
|
各位大侠好。。小弟是新手。。想问一下用1602还有一块51单片机做一个电子钟。。都要用到什么东西。。望能详细点解答。。最好能细到连电子元器件都说明。。而且最好能有个大概的制作步骤。。。小弟在此谢过了。。… 查看全部问答> |
|
wince的flash保存的文件的内容被改变了,或者是丢失了 系统在启动以后,通过同步工具拷贝一个配置文件给系统,然后重启。第一次重启后得到的数据是正确的,可以正常的读取文件的配置。第二次及其以后的重启就会发现配置文件数据已经读取不了了,或者是格式不对了。我拷贝出来一看,文件大 ...… 查看全部问答> |
|
飞凌嵌入式’全新ARM9学习套件,功能强大的OK2440-IV开发板仅售598元!另加36元获赠一块单片机学习板,希望能帮助大家从零开始学习嵌入式高端技术! http://www.helloarm.com/Samsung/48.htm… 查看全部问答> |
|
Windows CE 中连接远程sql server 2005报错“PlatformNotSupportedException“请高手帮下~! 情况是这样的,我想用window ce 连接远程sql server 2005却出现了PlatformNotSupportedException异常,同样的代码在windows 程序下测试是可以的! 我的开发环境是 vs 2005 +c# 本地用的是模拟器,模拟器可以连接到网络(用模拟器可以访问外部 ...… 查看全部问答> |
|
现在做一个使用CYCLONE III系列的EP3C55做ddr2控制器,我这边使用的是一个8位的ddr2芯片,在FPGA里面用bank2的IO口专门做DDR2的pin接口输出,DDR2的引脚和bank2上面的专用DQ,DQS,DM连接,其余的引脚用来连接DDR的地址引脚和控制引脚,在FPGA里面 ...… 查看全部问答> |




