S3C6410将外部GPIO/EINT中断源分成了10组、分别通过以下外部子中断控制寄存器来设置它们:
rEINT0CON0(rEINT0CON1)、rEINT0MASK、rEINT0PEND/控制第0组;
rEINT12CON、rEINT12MASK、rEINT12PEND/控制第1和第2组;
rEINT34CON、rEINT34MASK、rEINT34PEND/控制第3和第4组;
rEINT56CON、rEINT56MASK、rEINT56PEND/控制第5和第6组;
rEINT78CON、rEINT78MASK、rEINT78PEND/控制第7和第8组;
rEINT9CON、rEINT9MASK、rEINT9PEND/控制第9组,组成。
下面讲比较常用的第0组外部中断控制器相关设置:
一、子中断源触发类型寄存器组
1.rEINT0CON0 = 0x7F00 8900
bit0~bit2:设置EINT0和EINT1的中断触发类型;bit3不用。 //GPN0和GPN1
bit4~bit6:设置EINT2和EINT3的中断触发类型;bit7不用。 //GPN2和GPN3
bit8~bit10:设置EINT4和EINT5的中断触发类型;bit11不用。 //GPN4和GPN5
bit12~bit14:设置EINT6和EINT7的中断触发类型;bit15不用。 //GPN6和GPN7
bit16~bit18:设置EINT8和EINT9的中断触发类型;bit19不用。 //GPN8和GPN9
bit20~bit22:设置EINT10和EINT11的中断触发类型;bit23不用。 //GPN10和GPN11
bit24~bit26:设置EINT12和EINT13的中断触发类型;bit27不用。 //GPN12和GPN13
bit28~bit30:设置EINT14和EINT15的中断触发类型;bit31不用。 //GPN14和GPN15
2.rEINT0CON1 = 0x7F00 8904
设置EINT16~EINT27的中断触发类型。
bit0~bit2:设置EINT16和EINT17的中断触发类型;bit3不用。 //GPL8和GPL9
bit4~bit6:设置EINT18和EINT19的中断触发类型;bit7不用。 //GPL10和GPL11
bit8~bit10:设置EINT20和EINT21的中断触发类型;bit11不用。 //GPL12和GPL13
bit12~bit14:设置EINT22和EINT23的中断触发类型;bit15不用。 //GPL14和GPM0
bit16~bit18:设置EINT24和EINT25的中断触发类型;bit19不用。 //GPM1和GPM2
bit20~bit22:设置EINT26和EINT27的中断触发类型;bit23不用。 //GPM3和GPM4
说明:000表示低电平触发,001表示高电平触发,01x表示下降沿触发,10x表示上升沿触发,11x表示上升和下降沿都触发。
二、子中断屏蔽寄存器rEINT0MASK = 0x7F00 8920
bit0:0,EINT0使能;1,EINT0屏蔽。
bit1:0,EINT1使能;1,EINT1屏蔽。
bit2:0,EINT2使能;1,EINT2屏蔽。以此类推
bit26:0,EINT26使能;1,EINT26屏蔽。
bit27:0,EINT27使能;1,EINT27屏蔽。
三、子中断源清除寄存器rEINT0PEND = 0x7f008924;该中断发生后要人工用软件把它置1
bit0:0,EINT0没有发生过;1,EINT0发生过。
bit1:0:EINT1没有发生过;1,EINT1发生过。
bit2:0,EINT2没有发生过;1,EINT2发生过。
bit26:0,EINT26没有发生过;1,EINT26发生过。
bit27:0,EINT27没有发生过;1,EINT27发生过。
注意:该寄存器还有一个实际的用途;不同的GPIO/EINT脚上多个设备产生同一个总中断(如GPN0~GPN3/EINT0~EINT3产生的都是总中断号为0的中断),软件可以通过该寄存器判断。