发 帖  
原厂入驻New

[经验] 讲下中断寄存器(1)【2440】

2020-8-30 08:28:54  306 中断 寄存器
分享
5
这里讲的中断寄存器是指带2440平台上的。


1、SUBSRCPND寄存器:它用来表示INT_RXD0、INT_TXD0等中断是否发生(注:这些中断是某一大类中断中的子类),每位对应一个中断。当这些中断发生并且没有被INTSUBMSK寄存器屏蔽,则它们中的若干位将汇集出现在SRCPND寄存器的某一位上。要清除中断,往此寄存器中某位写1。

2、INTSUBMSK寄存器:与SUBSRCPND寄存器对应,它用来屏蔽SUBSRCPND寄存器所标识的中断。INTSUBMSK寄存器中某位设置1时,对应的中断被屏蔽。


3、SRCPND寄存器:它每一位被用来表示一个/一类中断是否发生。要清除某一位,往此位写1,具体参考数据手册


4、INTMSK寄存器:与SRCPND寄存器对应,用来屏蔽SRCPND寄存器所标识的中断。INTMSK寄存器中某位被设为1时,对应的中断被屏蔽,它只能屏蔽IRQ中断,不能屏蔽FIQ。


5、INTMOD寄存器:它某位被设为1时,对应的中断被设为FIQ。同一时间,INTMOD只能有一位被设为1。


6、PRIORITY寄存器:当有多个普通中断同时发生时,中断控制器选出最高优先级的中断,首先处理它。中断优先级通过7个仲裁器来完成,每个仲裁器基于一个位仲裁器模式控制(ARB_MODE,对应寄存器的[6:0]位)和选择控制信号(ARB_SEL,对应寄存器的[20:7]位)的两位来处理6个中断请求。


7、INTPND寄存器:经过中断优先级选出优先级最高的中断后,这个中断在INTPND寄存器中的相应位被置1,随后CPU进入中断模式处理它,同一时间,此寄存器只有一位被置1。在ISR中,可以根据这个位确定是哪个中断,清除中断时,往此位写入1。


8、INTOFFSET寄存器:用来表示INTPND寄存器中哪位被置1了,即INTPND寄存器中位[x]为1时,INTOFFSET寄存器的值为x(x为0-31)。清除SRCPND、INTPND寄存器时,INTOFFSET寄存器被自动清除。


★S3C2410提供了以下外部中断控制寄存器。
24个外部中断占用GPF0~GPF7(EINT0~EINT7)、GPG0~GPG15(EINT8~EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。


1、EXtiNT0~EXTINT2寄存器:设定EINT0~EINT23的触发方式。


2、EINTFLT0~EINTFLT3寄存器:控制滤波时钟和滤波宽度。


3、EINTPEND寄存器:这个是中断挂起寄存器,清除时要写1。当一个外部中断(EINT4~EINT23)发生后,那么相应的位会被置1。为什么没有EINT0~EINT3,看看SRCPND就知道了,里面没有EINT4~EINT23的位子,所以有了EINTPEND。


4、EINTMASK寄存器:屏蔽中断用的,某位为1时,此次中断无效。

相关经验

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表