本文共 1180 字,大约阅读时间需要 3 分钟。
子中断组的划分是根据设置它们的寄存器是否是同一个;总中断的按组划分,也是一样。
S3C6410总中断控制器共支持64个中断,分别由两组总中断控制器、即VIC0和VIC1来处理。上一章节我们分析的28个外部中断即第0组外部中断与总中断的对应关系是:
总中断号 | 中断源组 | 中断源成员描述 | 对应总中断控制器 |
0 | INT_EINT0 | 外部中断的EINT0~EINT3/GPN0~GPN3 | VIC0 |
1 | INT_EINT1 | 外部中断的EINT4~EINT11/GPN4~GPN11 | VIC0 |
...... | ...... | ...... | ...... |
32 | INT_EINT2 | 外部中断的EINT12~EINT19/GPN12~GPN15、GPL8~GPL11 | VIC1 |
33 | INT_EINT3 | 外部中断的EINT20~EINT27/GPL12~GPL14、GPM1~GPM4 | VIC1 |
...... | ...... | ...... | ...... |
总中断号 | 中断源组 | 中断源成员描述 | 对应总中断控制器 |
53 | INT_EINT4 | 外部中断的1到9组/GPA0~GPA7、GPC0~GPC7、... 、GPP0~GPP17、GPQ0~GPQ8 | VC1 |
注意第0组外部中断占用了0、1、32和33总共4个总中断号;第1至9组外部中断用了53号1个总中断号。除此之外,其余都是内部中断、共计64-5=59个中断。
下面介绍总中断控制器:
一、VIC0
处理总中断号是0~31
1.总中断使能寄存器rVIC0INTENABLE = 0x7120 0010
相应位置1表示打开,置0表示关闭。
2.总中断处理程序地址寄存器rVIC0VECTADDR = 0x7120 0100 ~ 0x7120 017C
rVIC0VECTADDR是保存总中断号为0的中断服务程序;
rVIC0VECTADDR+4是保存总中断号为1的中断服务程序。以此类推。
rVIC0VECTADDR+0x78是保存总中断号为31的中断服务程序。
3.当前中断处理程序地址寄存器rVIC0ADDR = 0x7120 0F00
二、VIC1
处理中断号是32~63
1.总中断使能寄存器rVIC1INTENABLE = 0x7130 0010
相应位置1表示打开,值0表示关闭。
2.总中断处理程序地址寄存器rVIC1VECTADDR = 0x7130 0100 ~ 0x7130 017C
rVIC1VECTADDR是保存总中断号为32的中断服务程序;
rVIC1VECTADDR+4是保存总中断号为33的中断服务程序。以此类推。
rVIC1VECTADDR+0x78是保存总中断号为63的中断服务程序。
3.当前中断处理程序地址寄存器rVIC1ADDR = 0x7130 0F00
转载地址:http://tegai.baihongyu.com/