发布网友 发布时间:2022-04-23 14:58
共1个回答
热心网友 时间:2023-10-04 07:42
2010-09-12 22:00
●SUBSRCPND寄存器:它用来表示INT_RXD0、INT_TXD0等中断是否发生(注:这些中断是某一大类中断中的子类),每位对应一个中断。当这些中断发生并且没有被INTSUBMSK寄存器屏蔽,则它们中的若干位将汇集出现在SRCPND寄存器的某一位上。要清除中断,往此寄存器中某位写1。
●INTSUBMSK寄存器:与SUBSRCPND寄存器对应,它用来屏蔽SUBSRCPND寄存器所标识的中断。INTSUBMSK寄存器中某位设置1时,对应的中断被屏蔽。
●SRCPND寄存器:它每一位被用来表示一个/一类中断是否发生。要清除某一位,往此位写1,具体参考数据手册。
●INTMSK寄存器:与SRCPND寄存器对应,用来屏蔽SRCPND寄存器所标识的中断。INTMSK寄存器中某位被设为1时,对应的中断被屏蔽,它只能屏蔽IRQ中断,不能屏蔽FIQ。
●INTMOD寄存器:它某位被设为1时,对应的中断被设为FIQ。同一时间,INTMOD只能有一位被设为1。
●PRIORITY寄存器:当有多个普通中断同时发生时,中断控制器选出最高优先级的中断,首先处理它。中断优先级通过7个仲裁器来完成,每个仲裁器基于一个位仲裁器模式控制(ARB_MODE,对应寄存器的[6:0]位)和选择控制信号(ARB_SEL,对应寄存器的[20:7]位)的两位来处理6个中断请求。
●INTPND寄存器:经过中断优先级选出优先级最高的中断后,这个中断在INTPND寄存器中的相应位被置1,随后CPU进入中断模式处理它,同一时间,此寄存器只有一位被置1。在ISR中,可以根据这个位确定是哪个中断,清除中断时,往此位写入1。
●INTOFFSET寄存器:用来表示INTPND寄存器中哪位被置1了,即INTPND寄存器中位[x]为1时,INTOFFSET寄存器的值为x(x为0-31)。清除SRCPND、INTPND寄存器时,INTOFFSET寄存器被自动清除。
★S3C2410提供了以下外部中断控制寄存器。
24个外部中断占用GPF0~GPF7(EINT0~EINT7)、GPG0~GPG15(EINT8~EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。
●EXTINT0~EXTINT2寄存器:设定EINT0~EINT23的触发方式。
●EINTFLT0~EINTFLT3寄存器:控制滤波时钟和滤波宽度。
●EINTPEND寄存器:这个是中断挂起寄存器,清除时要写1。当一个外部中断(EINT4~EINT23)发生后,那么相应的位会被置1。为什么没有EINT0~EINT3,看看SRCPND就知道了,里面没有EINT4~EINT23的位子,所以有了EINTPEND。
●EINTMASK寄存器:屏蔽中断用的,某位为1时,此次中断无效。追问太专业了,看不懂