打印

事件、中断、异常有点糊涂

[复制链接]
5074|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangxk|  楼主 | 2009-4-9 09:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看完资料后的理解,中断号在-3~15的称为异常,16~255的称为中断,这些和51的中断机制基本雷同,能够明白。那么事件的机制有点不清楚,如果设置一个输入口触发了一个事件,那么这个事件是需要程序检测相应的状态得知呢?还是像中断那样也产生中断,程序跳转到中断服务程序?
沙发
computer00| | 2009-4-9 10:00 | 只看该作者

事件可以用来触发中断,也可以由你的程序去查询事件的标

使用特权

评论回复
板凳
machunshui| | 2009-4-9 10:09 | 只看该作者

事件的功能是

事件和中断一样,有外部异步请求产生,

事件的功能是向其它硬件功能模块发送脉冲触发信号,后续动作由接受触发信号的硬件功能模块相关设置决定.

中断则,向cpu产生中断请求,后续动作由中断相关设置决定.

使用特权

评论回复
地板
machunshui| | 2009-4-9 10:10 | 只看该作者

异常一般指

异常指
不可屏蔽中断和可屏蔽中断的总称.

常用来指不可屏蔽中断(往往是硬件错误)

使用特权

评论回复
5
zhangxk|  楼主 | 2009-4-9 10:21 | 只看该作者

事件和中断机理一样吗?

如果事件也是可以产生中断的,那么是否两者是一样的处理机制?那为什么还要区分事件和中断?

使用特权

评论回复
6
computer00| | 2009-4-9 10:26 | 只看该作者

事件是描述一件事的呀,或者一个动作。

例如串口发送完毕,这是一个事件。这个事件可以触发一个中断,例如串口接收中断。
也可以设置一个标志,例如串口发送完毕标志置位,你的软件就可以去查询它了。


异常和中断基本上是一样的,叫法不同而已了。

使用特权

评论回复
7
alex74| | 2009-4-9 10:26 | 只看该作者

。。。。

就是名称不同而已,其实就一个东西

使用特权

评论回复
8
zhangxk|  楼主 | 2009-4-9 10:34 | 只看该作者

回【computer00】

如果按你说的,事件是中断的前奏,比如串口发送完毕产生了一个事件,这个时候程序可以查询事件状态,执行相应的动作,如果这个事件的中断允许是打开的,那么串口发送完毕就直接触发了一个中断,进入到中断程序执行相应的动作。应该是这样的吧。

使用特权

评论回复
9
computer00| | 2009-4-9 10:36 | 只看该作者

是的,可以这么理解。事件嘛,就是一个事情。它可以导致不同

使用特权

评论回复
10
zhangxk|  楼主 | 2009-4-9 11:30 | 只看该作者

看了固件库的说明文档后

固件库的GPIO部分看过后,根据GPIO_EventOutputConfig、GPIO_EventOutputCmd、GPIO_ PinRemapConfig、GPIO_EXTILineConfig几个函数的描述和寄存器AFIO_EVCR、AFIO_EXTICR的功能,在一个GPIO端口上只能触发一个事件,但是一个端口上可以有几个输入口产生中断。

使用特权

评论回复
11
渤海三叠浪| | 2009-4-14 18:23 | 只看该作者

如果说中断是异常的一种,似乎更妥当一点!

使用特权

评论回复
12
pb486| | 2009-4-14 21:20 | 只看该作者

看看

使用特权

评论回复
13
PackBot| | 2010-8-14 10:23 | 只看该作者

这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。
图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断“挂起请求寄存器”,最后经过编号4的与门输出到NVIC中断控制器;在这个通道上有4个控制选项,外部的信号首先经过边沿检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。
接下来是编号3的或门,这个或门的另一个输入是“软件中断/事件寄存器”,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,既当“软件中断/事件寄存器”的对应位为“1”时,不管外部信号如何,编号3的或门都会输出有效信号。
一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器,到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化。
外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为“0”,则该请求信号不能传输到与门的另一端,实现了中断的屏蔽。
明白了外部中断的请求机制,就很容易理解事件的请求机制了。图中红色虚线箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的与门,这个与门的作用与编号4的与门类似,用于引入事件屏蔽寄存器的控制;最后脉冲发生器把一个跳变的信号转变为一个单脉冲,输出到芯片中的其它功能模块。
在这张图上我们也可以知道,从外部激励信号来看,中断和事件是没有分别的,只是在芯片内部分开,一路信号会向CPU产生中断请求,另一路信号会向其它功能模块发送脉冲触发信号,其它功能模块如何相应这个触发信号,则由对应的模块自己决定。
在图上部的APB总线和外设模块接口,是每一个功能模块都有的部分,CPU通过这样的接口访问各个功能模块,这里就不再赘述了。
--------------------------------------------引自网络

使用特权

评论回复
14
z_no1| | 2010-8-14 15:52 | 只看该作者
中断就是以前51的中断,异常是ARM特有的一些中断,取指失败啥的,一般写程序不用管它,51的RESET输入就类似于是一个51的异常。事件就是说这件事发生了,如果开了中断就进中断去处理了,没开就做个标记位完事。51也是这么做的啊,UART可以在中断里处理,也可以不断查询标记位。不过CM3可以把GPIO的外部沿变化也做成事件供查询,这点51好像不能。
这是我对异常、中断、事件的理解。大家拍砖。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

69

帖子

1

粉丝