S3C2440之I/O寄存器和中断寄存器

I/O寄存器

一.端口寄存器组:

GPACON: 0=输出 1=初始引脚状态

GPxCON:  00=输入,01=输出,10=初始引脚状态,11=保留

GPxDAT

GPxUP:   0:允许上拉,1:禁止上拉

一般情况下不需要设置GPxUP

二,外部中断控制寄存器组

EXTIIN0(7~0):000=低电平,001=高电平,01x=下降沿触发,10x=上升沿触发,11x=2个沿都触发

EXTIIN1(15~8):000=低电平,001=高电平,01x=下降沿触发,10x=上升沿触发,11x=2个沿都触发

EXTIIN2(23~16):000=低电平,001=高电平,01x=下降沿触发,10x=上升沿触发,11x=2个沿都触发

三,外部中断滤波寄存器组

EINTFLT2(19~16):滤波时钟:

滤波宽度

EINTFLT2(23~20):滤波时钟:

 滤波宽度

四.外部中断屏蔽寄存器

EINTMASK(23~4):   0:允许中断  1:屏蔽中断

五,外部中断登记寄存器

EINTPEND(23~4):  0:无请求,1:有请求

所有请求的中断必须要登记。

中断寄存器

中断源主要有ADC,RTC,SPI,IIC,DMA,UART,USB,SD,LCD,TIMER,WDT,TICK,外部中断,也就是说几乎所有的外设都能采用中断的方式,向系统申请中断,处理中断处理程序


       带子寄存器的请求源通过子登记寄存器(SUBSRCPND),通过子屏蔽寄存器(submask);不带子寄存器的请求源向源登记寄存器(SRCPND)发出申请,再通过屏蔽寄存器(MASK)和模式寄存器(MODE),中断优先级寄存器(Priority),最后通过中断登记寄存器(INTPND),向ARM内核发出IRQ中断申请。

       通过分析芯片手册,我们发现SRCPND,INTPND的功能非常相像,但是并不相同,SRCPND是中断申请的入口,INTPND是中断处理的结果。SRCPND可以接受很多中断,但是通过屏蔽,优先级选择之后,INTPND只能处理一个中断。

一,源登记寄存器
SRCPND: 0=无中断请求,1=有中断请求
二,中断模式寄存器
INTMOD: 0=FIQ,1=IRQ
三,中断屏蔽寄存器
INTMSK: 0=允许服务,1=屏蔽
四,优先权寄存器
PROIRITY: 
五,中断登记寄存器
INTPND: 0=无中断请求 1=有中断请求
六,子源登记寄存器
SUBSRCPND: 0=无中断请求,1=有中断请求

在UART,DMA等,有子中断,例如,UART中的,INT_ERRn,INT_RXDn,INT_TXDn
七,中断子屏蔽寄存器
INTSUBMSK: 0=允许服务,1=屏蔽


linux中中断初始化代码

void __init s3c2410_init_irq(void)
{
INTMSK=0xffffffff;//屏蔽全部IRQs
INTSUBMSK=0x7ff;
EINTMASK=0x00fffff0;

INTMOD=0x00000000;//
SRCPND=0xffffffff;
INTPND=0xffffffff;
SUBSRCPND=0x7ff;
EINTPEND=0x00fffff0;
  .
           .
  .
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章