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;
.
.
.
}