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


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