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