嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第8章 通用IO端口和中斷系統(tǒng)程序設(shè)計(jì)_第1頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第8章 通用IO端口和中斷系統(tǒng)程序設(shè)計(jì)_第2頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第8章 通用IO端口和中斷系統(tǒng)程序設(shè)計(jì)_第3頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第8章 通用IO端口和中斷系統(tǒng)程序設(shè)計(jì)_第4頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第8章 通用IO端口和中斷系統(tǒng)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩108頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第8章ARM通用I/O和中斷系統(tǒng)應(yīng)用設(shè)計(jì)1第8章通用I/O端口和中斷系統(tǒng)程序設(shè)計(jì)

●S3C2410A提供了117個(gè)可編程的通用輸入輸出I/O端口引腳,分為8組通用輸入輸出I/O端口(GeneralPurposeI/O或GeneralParallelI/O):通用端口A(GPA)、通用端口B(GPA)、…、通用端口H(GPH)、通用端口G(GPG)。

特別是每組端口中的不同I/O引腳根據(jù)需要可以通過(guò)軟件配置為輸入引腳、或輸出引腳、或第2功能引腳、甚至或第3功能引腳,這對(duì)于實(shí)時(shí)控制系統(tǒng)來(lái)講是至關(guān)重要的,說(shuō)明具有較多的輸入輸出開(kāi)關(guān)量。

●在CPU訪問(wèn)I/O外設(shè)的3種方法(程序查詢方法、I/O中斷方法和DMA方法)中,中斷是實(shí)時(shí)性最好的方法,因?yàn)榍度胧较到y(tǒng)大部分都應(yīng)用于實(shí)時(shí)控制系統(tǒng)。

S3C2410A的CPU提供了普通中斷請(qǐng)求IRQ(InterruptRequest)和快速中斷請(qǐng)求FIQ(FastInterruptRequest)這2種中斷的請(qǐng)求方法,而且可以對(duì)外設(shè)I/O的56個(gè)中斷源請(qǐng)求進(jìn)行實(shí)時(shí)響應(yīng),這對(duì)于實(shí)時(shí)控制系統(tǒng)來(lái)說(shuō)也是非常必要的。S3C2410A中斷系統(tǒng)的邏輯層次深、關(guān)系最為復(fù)雜,無(wú)論是硬件中斷申請(qǐng)過(guò)程的組成,還是軟件相應(yīng)的具體執(zhí)行流程。28組通用I/O端口分別是:●通用端口A(GPA)是1個(gè)23位只能輸出的I/O端口?!裢ㄓ枚丝贐(GPB)和通用端口H(GPH)是2個(gè)11位的輸入輸出I/O端口?!裢ㄓ枚丝贑(GPC)、通用端口D(GPD)、通用端口E(GPE)和通用端口G(GPG)是4個(gè)16位通用輸入輸出I/O端口?!裢ㄓ枚丝贔(GPF)是1個(gè)8位通用輸入輸出I/O端口?!袷褂肐/O端口的方法首先根據(jù)端口引腳的實(shí)際使用功能,配置端口控制寄存器的對(duì)應(yīng)位,通過(guò)配置端口上拉電阻寄存器確定對(duì)應(yīng)的上拉電阻是否需要,最后對(duì)端口數(shù)據(jù)寄存器的讀/寫就可完成其輸入或輸出功能。38.1S3C2410A的通用I/O端口8.1.1I/O端口的功能S3C2410A的每個(gè)I/O端口都是多功能的,以下具體介紹每個(gè)端口引腳所具有的功能。1.GPA端口引腳位功能GPA的I/O引腳共有23根,每根引腳只具有2個(gè)輸出功能:

一是通用輸出端口;

二是與NandFlash相關(guān)的控制信號(hào)、與存儲(chǔ)器有關(guān)的Bank0~Bank5的片選信號(hào)以及與地址線有關(guān)的地址線。如表8-1所示。4表8-1GPA的引腳功能表5引腳名稱第1功能第2功能GPA22輸出nFCE(NandFlash片選信號(hào))-GPA21輸出nRSTOUT(對(duì)外器件輸出復(fù)位信號(hào))-GPA20輸出nFRE(NandFlash讀信號(hào))-GPA19輸出nFWE(NandFlash寫信號(hào))-GPA18輸出ALE(NandFlash地址鎖存信號(hào))-GPA17輸出CLE(NandFlash命令鎖存信號(hào))-GPA16~GPA12輸出nGCS0~nGCS5(Bank0~5片選信號(hào))-GPA11~GPA1輸出ADDR26~ADDR16(地址線26~16)-GPA0輸出ADDR0(地址線0)2.GPB端口引腳位功能

GPB引腳共有11根,每個(gè)引腳具有通用輸入,或通用輸出,或具有與DMA有關(guān)的信號(hào)線、與定時(shí)器有關(guān)的時(shí)鐘信號(hào)及輸出引腳線等第3功能,如下表所示。6引腳名稱第1、2功能第3功能第4功能GPB10輸入/輸出nXDREQ0(DMA請(qǐng)求0)-GPB9輸入/輸出nXDACK0(DMA應(yīng)答0)-GPB8輸入/輸出nXDREQ1(DMA請(qǐng)求1)-GPB7輸入/輸出nXDACK1(DMA應(yīng)答1)-GPB6輸入/輸出nXBREQ(總線請(qǐng)求)-GPB5輸入/輸出nXBACK(總線應(yīng)答)-GPB4輸入/輸出TCLK0(T0T1外輸入時(shí)鐘)-GPB3輸入/輸出TOUT3(T3時(shí)鐘輸出)-GPB2輸入/輸出TOUT2(T2時(shí)鐘輸出)-GPB1輸入/輸出TOUT1(T1時(shí)鐘輸出)-GPB0輸入/輸出TOUT0(T0時(shí)鐘輸出)-3.GPC端口引腳位功能

GPC引腳共有16根,每個(gè)引腳具有通用輸入、或通用輸出、或與LCD有關(guān)的控制信號(hào)線和數(shù)據(jù)線等第3功能,如下表所示。7引腳名稱第1、2功能第3功能第4功能GPC15~GPC8輸入/輸出VD7~VD0(LCD數(shù)據(jù)線7~0)-GPC7輸入/輸出LCDVF2(LCD時(shí)鐘控制線2)-GPC6輸入/輸出LCDVF1(LCD時(shí)鐘控制線1)-GPC5輸入/輸出LCDVF0(LCD時(shí)鐘控制線0)-GPC4輸入/輸出VM(LCD電源極性控制信號(hào))-GPC3輸入/輸出VFRAME(LCD幀掃描信號(hào))-GPC2輸入/輸出VLINE(LCD行掃描信號(hào))-GPC1輸入/輸出VCLK(LCD像素時(shí)鐘信號(hào))-GPC0輸入/輸出LEND(LCD行截止信號(hào))-4.

GPD端口引腳位功能

GPD引腳共有16根,每個(gè)引腳具有通用輸入、或通用輸出、或具有LCD數(shù)據(jù)線的第3功能,部分引腳還具有第4功能,如表下所示。8引腳名稱第1、2功能第3功能第4功能GPD15輸入/輸出VD23(LCD數(shù)據(jù)線23)nSS0GPD14輸入/輸出VD22(LCD數(shù)據(jù)線22)nSS1GPD13~GPD0輸入/輸出VD21~VD8(LCD數(shù)據(jù)線21~8)-表中的nSS0、nSS1在SPI為從設(shè)備時(shí)作為芯片選擇信號(hào)。5.

GPE端口引腳位功能

GPE引腳共有16根,每個(gè)引腳具有通用輸入、或通用輸出、或與I2C接口、SPI接口、I2S接口有關(guān)的第3功能,部分引腳還具有第4功能,如表8-5所示。9引腳名稱第1、2功能第3功能第4功能GPE15輸入/輸出IICSDA(I數(shù)據(jù)線)-GPE14輸入/輸出IICSCL(I時(shí)鐘線)-GPE13輸入/輸出SPICLK0(SPI時(shí)鐘線0)-GPE12輸入/輸出SPIMOSI0(SPI主出從入線0)-GPE11輸入/輸出SPIMISO0(SPI主入從出線0)-GPE10~GPE7輸入/輸出SDDAT3~SDDAT0(SD卡數(shù)據(jù)線3~0)-GPE6輸入/輸出SDCMD(SD命令線)-GPE5輸入/輸出SDCLK(SD時(shí)鐘線)-GPE4輸入/輸出I2SSDO(I2S串行數(shù)據(jù)輸出線)I2SSDIGPE3輸入/輸出I2SSDI(I2S串行數(shù)據(jù)輸入線)nSS0GPE2輸入/輸出CDCLK(I編碼時(shí)鐘)-GPE1輸入/輸出I2SSCLK(I2S串行時(shí)鐘)-GPE0輸入/輸出I2SLRCK(I2S通道選擇時(shí)鐘)-

6.GPF端口引腳位功能

GPF引腳共有8根,每個(gè)引腳具有輸入、或輸出、外部中斷引腳EINT7~EINT0的第3功能,如下表所示。10引腳名稱第1、2功能第3功能第4功能GPF7~0輸入/輸出EINT7(外部中斷7~0)-7.GPG端口引腳位功能

GPG引腳共有16根,每個(gè)引腳具有輸入、或輸出、或外部中斷引腳EINT23~EINT8的第3功能,部分引腳還具有觸摸屏、SPI接口等有關(guān)的第4功能,如表下所示。11引腳名稱第1、2功能第3功能第4功能GPG15輸入/輸出EINT23(外中斷23)nYPON(LCDy軸電源正極控制信號(hào))GPG14輸入/輸出EINT22(外中斷22)YMON(LCDy軸電源負(fù)極控制信號(hào))GPG13輸入/輸出EINT21(外中斷21)nXPON(LCDx軸電源正極控制信號(hào))GPG12輸入/輸出EINT20(外中斷20)XMON(LCDx軸電源負(fù)極控制信號(hào))GPG11輸入/輸出EINT19(外中斷19)TCLK1(T2T3T4外部輸入時(shí)鐘端)GPG10輸入/輸出EINT18(外中斷18)-GPG9輸入/輸出EINT17(外中斷17)-GPG8輸入/輸出EINT16(外中斷16-GPG7輸入/輸出EINT15(外中斷15)SPICLK1(SPI時(shí)鐘信號(hào)1)GPG6輸入/輸出EINT14(外中斷14)SPIMOSI1(SPI主出從入端1)GPG5輸入/輸出EINT13(外中斷13)SPIMISO1(SPI主入從出端1)GPG4輸入/輸出EINT12(外中斷12)LCD_PWREN(LCD電源使能信號(hào))GPG3輸入/輸出EINT11(外中斷11)nSS1(SPI為從設(shè)備時(shí)芯片的片選信號(hào)1)GPG2輸入/輸出EINT10(外中斷10)nSS0(SPI為從設(shè)備時(shí)芯片的片選信號(hào)0)GPG1輸入/輸出EINT9(外中斷9)-GPG0輸入/輸出EINT8(外中斷8)-8.GPH端口引腳位功能

GPH引腳共有11根,每個(gè)引腳具有通用輸入、或通用輸出、或與UART、外部時(shí)鐘輸出有關(guān)的第3功能,部分引腳還具有與UART控制信號(hào)有關(guān)的第4功能,如下表所示。12引腳名稱第1、2功能第3功能第4功能GPH10輸入/輸出CLKOUT0(外部使用時(shí)鐘0)-GPH9輸入/輸出CLKOUT1(外部使用時(shí)鐘1)-GPH8輸入/輸出UEXTCLK(串口外輸入時(shí)鐘)-GPH7輸入/輸出RXD2(串口2接收端)nCTS1(串口1允許發(fā)送)GPH6輸入/輸出TXD2(串口2發(fā)送端)nRTS1(串口1請(qǐng)求發(fā)送)GPH5輸入/輸出RXD1(串口1接收端)-GPH4輸入/輸出TXD1(串口1發(fā)送端)-GPH3輸入/輸出RXD0(串口0接收端)-GPH2輸入/輸出TXD0(串口0發(fā)送端)-GPH1輸入/輸出nRTS0(串口0請(qǐng)求發(fā)送)-GPH0輸入/輸出nCTS0(串口0允許發(fā)送)-8.1.2通用I/O端口功能寄存器通用I/O端口功能寄存器包括8個(gè)端口控制寄存器(GPACON~GPHCON)、8個(gè)端口數(shù)據(jù)寄存器(GPADAT~GPHDAT)和7個(gè)端口上拉寄存器(GPBUP~GPHUP)。由于在S3C2410A中,I/O端口引腳都是復(fù)用的,所以對(duì)于每一個(gè)I/O端口引腳都需要通過(guò)端口控制寄存器(GPnCON)來(lái)配置。配置完成后,就可以通過(guò)端口的數(shù)據(jù)寄存器(GPADAT~GPHDAT)來(lái)讀/寫。端口數(shù)據(jù)寄存器使用的數(shù)據(jù)bit位數(shù)與端口的位數(shù)相一致,并且從b0開(kāi)始使用。注意:對(duì)于數(shù)據(jù)寄存器(GPADAT~GPHDAT)的寫操作一定要留心。比如對(duì)于通用端口GPB共有11位,有的引腳定義為輸入,有的引腳定義為輸出或第3功能,寫操作時(shí)最好用“位操作”指令功能,只給作為輸出的寫數(shù)據(jù),其它的引腳信息保持不變。關(guān)于端口上拉電阻寄存器(GPBUP~GPHUP)的使用,每個(gè)上拉電阻寄存器bit位的使用與它的數(shù)據(jù)寄存器一一對(duì)應(yīng)。一般作為輸出端子時(shí),需要使能上拉電阻,將其對(duì)應(yīng)的bit位清“0”;作為輸入端子時(shí),需要禁止上拉電阻,將其對(duì)應(yīng)的bit位置“1”。由于端口數(shù)據(jù)寄存器(GPADAT~GPHDAT)和端口上拉電阻寄存器(GPBUP~GPHUP)的作用和所使用的bit位已經(jīng)清楚了,以下重點(diǎn)介紹端口控制寄存器(GPACON~GPHCON)。131.端口A功能寄存器

端口A的功能寄存器包括端口A控制寄存器GPACON(使用23位)、端口A數(shù)據(jù)寄存器GPADAT(使用23位)。它們的屬性如表8-9所示,GPACON的位功能如表8-10所示。14寄存器名地址讀寫屬性描述初值GPACON0x56000000讀/寫控制端口A的各引腳功能0x0GPADAT0x56000004讀/寫端口A數(shù)據(jù)寄存器,使用b22~b0-保留0x56000008讀/寫保留-表8-9GPA功能寄存器屬性表表8-10GPACON位功能表15引腳符號(hào)比特位功能描述初值GPA22[22]0=輸出;

1=nFCE(NandFlash片選信號(hào))1GPA21[21]0=輸出;

1=nRSTOUT(對(duì)外部芯片提供復(fù)位信號(hào))1GPA20[20]0=輸出;

1=nFRE(NandFlash讀信號(hào))1GPA19[19]0=輸出;

1=nFWE(NandFlash寫信號(hào))1GPA18[18]0=輸出;

1=ALE(NandFlash地址允許鎖存)1GPA17[17]0=輸出;

1=CLE(NandFlash命令允許鎖存)1GPA16[16]0=輸出;

1=nGCS5(Bank5片選信號(hào))1GPA15[15]0=輸出;

1=nGCS4(Bank4片選信號(hào))1GPA14[14]0=輸出;

1=nGCS3(Bank3片選信號(hào))1GPA13[13]0=輸出;

1=nGCS2(Bank2片選信號(hào))1GPA12[12]0=輸出;

1=nGCS1(Bank1片選信號(hào))1GPA11~1[11:1]0=輸出;

1=ADDR26~16(地址線26~16)1GPA0[0]0=輸出;

1=ADDR0(地址線0)12.端口B功能寄存器

端口B的功能寄存器包括端口B控制寄存器GPBCON(使用22位)、端口B數(shù)據(jù)寄存器GPBDAT(使用11位)、端口B上拉電阻寄存器GPBUP(使用11位)。它們的屬性如表8-11所示,GPBCON的位功能如表8-12所示。表8-11GPB功能寄存器屬性表16寄存器名地址讀寫屬性描述初值GPBCON0x56000010讀/寫控制端口B的各引腳功能0x0GPBDAT0x56000014讀/寫端口B數(shù)據(jù)寄存器,使用b10~b0-GPBUP0x56000018讀/寫使能端口B各引腳上拉電阻0x0表8-12GPBCON位功能表17引腳符號(hào)比特位功能描述初值GPB10[21:20]00=輸入;01=輸出;10=nXDREQ0(DMA0請(qǐng)求);11=保留00GPB9[19:18]00=輸入;01=輸出;10=nXDACK0(DMA0應(yīng)答);11=保留00GPB8[17:16]00=輸入;01=輸出;10=nXDREQ1(DMA1請(qǐng)求);11=保留00GPB7[15:14]00=輸入;01=輸出;10=nXDACK1(DMA1應(yīng)答);11=保留00GPB6[13:12]00=輸入;01=輸出;10=nXBREQ(總線請(qǐng)求);11=保留00GPB5[11:10]00=輸入;01=輸出;10=nXBACK(總線應(yīng)答);11=保留00GPB4[9:8]00=輸入;01=輸出;10=TCLK0(T0T1外入時(shí)鐘);11=保留00GPB3[7:6]00=輸入;01=輸出;10=TOUT3(T3輸出信號(hào));11=保留00GPB2[5:4]00=輸入;01=輸出;10=TOUT2(T2輸出信號(hào));11=保留00GPB1[3:1]00=輸入;01=輸出;10=TOUT1(T1輸出信號(hào));11=保留00GPB0[1:0]00=輸入;01=輸出;10=TOUT0(T0輸出信號(hào));11=保留003.端口C功能寄存器端口C的功能寄存器包括端口C控制寄存器GPCCON(使用32位)、端口C數(shù)據(jù)寄存器GPCDAT(使用16位)、端口C上拉電阻寄存器GPCUP(使用16位)。它們的屬性如表8-13所示,GPCCON的位功能如表8-14所示。18寄存器名地址讀寫屬性描述初值GPCCON0x56000020讀/寫控制端口C的各引腳功能0x0GPCDAT0x56000024讀/寫端口C數(shù)據(jù)寄存器,使用b15~b0-GPCUP0x56000028讀/寫使能端口C各引腳上拉電阻0x0表8-13GPC功能寄存器屬性表表8-14GPCCON位功能表19引腳符號(hào)比特位功能描述初值GPC15[31:30]00=輸入;01=輸出;10=VD7(LCD數(shù)據(jù)線7);11=保留00GPC14~8[29:16]00=輸入;01=輸出;10=VD6~0(LCD數(shù)據(jù)線6~0);11=保留0x0GPC7[15:14]00=輸入;01=輸出;10=LVDVF2(LCD時(shí)控2);11=保留00GPC6[13:12]00=輸入;01=輸出;10=LCDVF1(LCD時(shí)控1);11=保留00GPC5[11:10]00=輸入;01=輸出;10=LCDVF0(LCD時(shí)控0);11=保留00GPC4[9:8]00=輸入;01=輸出;10=VM(LCD電壓極性選擇);11=保留00GPC3[7:6]00=輸入;01=輸出;10=VFRAME(LCD幀掃描);11=保留00GPC2[5:4]00=輸入;01=輸出;10=VLINE(LCD行掃描信號(hào));11=保留00GPC1[3:2]00=輸入;01=輸出;10=VCLK(LCD時(shí)鐘信號(hào));

11=保留00GPC0[1:0]00=輸入;01=輸出;10=LEND(LCD行截止信號(hào));11=保留004.端口D功能寄存器端口D的功能寄存器包括端口D控制寄存器GPDCON(使用32位)、端口D數(shù)據(jù)寄存器GPDDAT(使用16位)、端口D上拉電阻寄存器GPDUP(使用16位)。它們的屬性如表8-15所示,GPDCON的位功能如表8-16所示。20寄存器名地址讀寫屬性描述初值GPDCON0x56000030讀/寫控制端口D的各引腳功能0x0GPDDAT0x56000034讀/寫端口D數(shù)據(jù)寄存器,使用b15~b0-GPDUP0x56000038讀/寫使能端口D各引腳上拉電阻0x0表8-16GPDCON位功能表5.端口E功能寄存器端口E的功能寄存器包括端口E控制寄存器GPECON(使用32位)、端口E數(shù)據(jù)寄存器GPEDAT(使用16位)、端口E上拉電阻寄存器GPEUP(使用16位)。它們的屬性如表8-17所示,GPECON的位功能如表8-18所示。表8-17GPE功能寄存器屬性表21寄存器名占用地址讀寫控制描述初值GPECON0x56000040讀/寫控制端口E的各引腳功能0x0GPEDAT0x56000044讀/寫端口E數(shù)據(jù)寄存器,使用b15~b0-GPEUP0x56000048讀/寫使能端口E各引腳上拉電阻0x0表8-18GPECON位功能表22引腳符號(hào)比特位功能描述初值GPE15[31:30]00=輸入;01=輸出;10=IICSDA(I數(shù)據(jù)線);11=保留00GPE14[29:28]00=輸入;01=輸出;10=IICSCL(I時(shí)鐘線);11=保留00GPE13[27:26]00=輸入;01=輸出;10=SPICLK(SPI時(shí)鐘);11=保留00GPE12[25:24]00=輸入;01=輸出;10=SPIMOSI0(SPI主出從入);11=保留00GPE11[23:22]00=輸入;01=輸出;10=SPIMISO0(SPI主入從出);11=保留00GPE10[21:20]00=輸入;01=輸出;10=SDDAT3(SD卡數(shù)據(jù)線3);11=保留00GPE9[19:18]00=輸入;01=輸出;10=SDDAT2(SD卡數(shù)據(jù)線2);11=保留00GPE8[17:16]00=輸入;01=輸出;10=SDDAT1(SD卡數(shù)據(jù)線1);11=保留00GPE7[15:14]00=輸入;01=輸出;10=SDDAT0(SD卡數(shù)據(jù)線0);11=保留00GPE6[13:12]00=輸入;01=輸出;10=SDCMD(SD卡命令線);11=保留00GPE5[11:10]00=輸入;01=輸出;10=SDCLK(SD卡時(shí)鐘);

11=保留00GPE4[9:8]00=輸入;01=輸出;10=I2SSDO(I2S數(shù)據(jù)輸出);11=I2SSDI00GPE3[7:6]00=輸入;01=輸出;10=I2SSDI(I2S數(shù)據(jù)輸入);

11=nSS000GPE2[5:4]00=輸入;01=輸出;10=CDCLK(I編碼時(shí)鐘);11=保留00GPE1[3:2]00=輸入;01=輸出;10=I2SSCLK(I2S串行時(shí)鐘);

11=保留00GPE0[1:0]00=輸入;01=輸出;10=I2SLRCK(I2S通道選擇時(shí)鐘);11=保留006.端口F功能寄存器端口F的功能寄存器包括端口F控制寄存器GPFCON(使用16位)、端口F數(shù)據(jù)寄存器GPFDAT(使用8位)、端口F上拉電阻寄存器GPFUP(使用8位)。它們的屬性如表8-19所示,GPFCON的位功能如表8-20所示。23寄存器名占用地址讀寫屬性描述初值GPFCON0x56000050讀/寫控制端口F的各引腳功能0x0GPFDAT0x56000054讀/寫端口F數(shù)據(jù)寄存器,使用b7~b0-GPFUP0x56000058讀/寫使能端口F各引腳上拉電阻0x0表8-19GPF功能寄存器屬性表引腳符號(hào)比特位功能描述初值GPF7[15:14]00=輸入;01=輸出;10=EINT7(外部中斷7);11=保留00GPF6~0[13:0]00=輸入;01=輸出;10=EINT6~0(外中斷6~0);11=保留00表8-20GPFCON位功能表7.端口G功能寄存器端口G的功能寄存器包括端口G控制寄存器GPGCON(使用32位)、端口G數(shù)據(jù)寄存器GPGDAT(使用16位)、端口G上拉電阻寄存器GPGUP(使用16位)。它們的屬性如表8-21所示,GPGCON的位功能如表8-22所示。24寄存器名占用地址讀寫屬性描述初值GPGCON0x56000060讀/寫控制端口G的各引腳功能0x0GPGDAT0x56000064讀/寫端口G數(shù)據(jù)寄存器,使用b15~b0-GPGUP0x56000068讀/寫使能端口G各引腳上拉電阻0x0表8-21GPG功能寄存器屬性表表8-22GPGCON位功能表25引腳符號(hào)比特位功能描述初值GPG15[31:30]00=輸入;01=輸出;10=EINT23(外部中斷23);11=nYPON00GPG14[29:28]00=輸入;01=輸出;10=EINT22(外部中斷22);11=YMON00GPG13[27:26]00=輸入;01=輸出;10=EINT21(外部中斷21);11=nXPON00GPG12[25:24]00=輸入;01=輸出;10=EINT20(外部中斷20);11=XMON00GPG11[23:22]00=輸入;01=輸出;10=EINT19(外部中斷19);11=TCLK100GPG10[21:20]00=輸入;01=輸出;10=EINT18(外部中斷18);11=保留00GPG9[19:18]00=輸入;01=輸出;10=EINT17(外部中斷17);11=保留00GPG8[17:16]00=輸入;01=輸出;10=EINT16(外部中斷16);11=保留00GPG7[15:14]00=輸入;01=輸出;10=EINT15(外部中斷15);11=SPICLK100GPG6[13:12]00=輸入;01=輸出;10=EINT14(外部中斷14);11=SPIMOSI100GPG5[11:10]00=輸入;01=輸出;10=EINT13(外部中斷13);11=SPIMISO100GPG4[9:8]00=輸入;

01=輸出;

10=EINT12(外部中斷12);11=LCD_PWREN(LCD電源使能信號(hào))00GPG3[7:6]00=輸入;01=輸出;10=EINT11(外部中斷11);11=nSS100GPG2[5:4]00=輸入;01=輸出;10=EINT10(外部中斷10);11=nSS000GPE1[3:2]00=輸入;01=輸出;10=EINT9(外部中斷9);

11=保留00GPG0[1:0]00=輸入;01=輸出;10=EINT8(外部中斷8);

11=保留00

8.端口H功能寄存器

端口H的功能寄存器包括端口H控制寄存器GPHCON(使用22位)、端口H數(shù)據(jù)寄存器GPHDAT(使用11位)、端口H上拉電阻寄存器GPHUP(使用11位)。它們的屬性如表8-23所示,GPHCON的位功能如表8-24所示。26寄存器名占用地址讀寫控制描述初值GPHCON0x56000070讀/寫控制端口H的各引腳功能0x0GPHDAT0x56000074讀/寫端口H數(shù)據(jù)寄存器,使用b10~b0-GPHUP0x56000078讀/寫使能端口H各引腳上拉電阻0x0表8-23GPH功能寄存器屬性表表8-24GPHCON位功能表27引腳符號(hào)比特位功能描述初值GPH10[21:20]00=輸入;01=輸出;10=CLKOUT1(外使用時(shí)鐘1);11=保留00GPH9[19:18]00=輸入;01=輸出;10=CLKOUT0(外使用時(shí)鐘0);11=保留00GPH8[17:16]00=輸入;01=輸出;10=UEXTCLK(串口外時(shí)鐘);11=保留00GPH7[15:14]00=輸入;01=輸出;10=RXD2(串口2接收);11=nCTS100GPH6[13:12]00=輸入;01=輸出;10=TXD2(串口2發(fā)送);11=nRTS100GPH5[11:10]00=輸入;01=輸出;10=RXD1(串口1接收);11=保留00GPH4[9:8]00=輸入;01=輸出;10=TXD1(串口1發(fā)送);11=保留00GPH3[7:6]00=輸入;01=輸出;10=RXD0(串口0接收);11=保留00GPH2[5:4]00=輸入;01=輸出;10=TXD0(串口0發(fā)送);11=保留00GPH1[3:2]00=輸入;01=輸出;10=nRTS0(串口0請(qǐng)求發(fā)送);11=保留00GPH0[1:0]00=輸入;01=輸出;10=nCTS0(串口0允許發(fā)送);11=保留008.1.3其它端口功能寄存器

外部時(shí)鐘控制寄存器DCLKCON(DCLKControlRegister);

多控制寄存器MISCCR(MiscellaneousControlRegister);

通用狀態(tài)寄存器5個(gè)GSTATUS0~GSTATUS4。

這些端口寄存器屬性如下表所示,28寄存器名占用地址讀寫屬性描述初值MISCCR0x56000080讀/寫控制SDRAM、USB等引腳功能0x10330DCLKCON0x56000084讀/寫控制DCLK時(shí)鐘信號(hào)的產(chǎn)生0x0GSTATUS00x560000AC只讀讀取外部的一些引腳狀態(tài)-GSTATUS10x560000B0只讀讀取芯片ID0x32410000GSTATUS20x560000B4讀/寫描述一些復(fù)位狀態(tài)信號(hào)0x1GSTATUS30x560000B8讀/寫信息通告,使用復(fù)位信號(hào)等復(fù)位0x0GSTATUS40x560000BC讀/寫信息通告,使用復(fù)位信號(hào)等復(fù)位0x01.多控制寄存器MISCCR

●多控制寄存器MISCCR的位功能如表8-26所示。

●控制SDRAM存儲(chǔ)器在掉電模式時(shí)的信號(hào)選取,USB端口模式、USB主機(jī)或器件的選擇等,S3C2410A輸出外部時(shí)鐘CLKOUT0(GPH9)、CLKOUT1(GPH10)的選擇,數(shù)據(jù)線上拉電阻的使能等。29表8-26MISCCR寄存器位功能表30比特位位功能符號(hào)功能描述初值[31:20]Reserved保留0x0[19]nEN_SCKE在節(jié)電模式下SDRAM的保護(hù):0=SCKE正常;1=SCKE低電平0[18]nEN_SCLK1在節(jié)電模式下SDRAM的保護(hù):0=SCLK1等于SCLK;1=SCLK1為低電平0[17]nEN_SCLK0在節(jié)電模式下SDRAM的保護(hù):0=SCLK0等于SCLK;1=SCLK0為低電平0[16]nRSTCON用于nRSTCON軟件控制:0=nRSTCON信號(hào)為0;1=nRSTCON信號(hào)為11[15:14]Reserved保留00[13]USBSUBPEND1確定USB端口1模式:0=正常;1=懸掛0[12]USBSUBPEND0確定USB端口0模式:0=正常;1=懸掛0[11]Reserved保留0[10:8]CLKSEL1選擇CLKOUT1的輸出時(shí)鐘源:000=MPLLCLK;001=UPLLCLK;010=FCLK;011=HCLK;100=PCLK;101=DCLK1;11x=保留011[7]Reserved保留[6:4]CLKSEL0選擇CLKOUT1的輸出時(shí)鐘源:000=MPLLCLK;001=UPLLCLK;010=FCLK;011=HCLK;100=PCLK;101=DCLK0;11x=保留011[3]USBPAD確定USB的模式:0=正常;1=懸掛0[2]MEM_HZ_CON當(dāng)CLKCON[0]=1時(shí),影響存儲(chǔ)器信號(hào)線nGCS[7:0],nWE,nOE,nBE[3:0],nSRAS,nSCAS,ADDR[26:0]

0=高阻;1=保持。0[1]SPUCR_L確定數(shù)據(jù)線低16位的上拉電阻:0=使能;1=禁止0[0]SPUCR_H確定數(shù)據(jù)線高16位的上拉電阻:0=使能;1=禁止02.外部時(shí)鐘控制寄存器DCLKCON

外部時(shí)鐘控制寄存器DCLKCON的位功能如表8-27所示。

●主要用于控制S3C2410A輸出引腳DCLK0(引腳序號(hào)為F13)、DCLK1(引腳序號(hào)為F14)的時(shí)鐘信號(hào),包括頻率和占空比。

●其輸入時(shí)鐘源可以是PCLK或UCLK。31表8-27DCLKCON寄存器位功能表32比特位位功能符號(hào)功能描述初值[31:28]Reserved保留0000[27:24]DCLK1CMP確定DCLK1的占空比0000[23:20]DCLK1DIV確定DCLK1的分頻系數(shù)0000[19:18]Reserved保留00[17]DCLK1SelCK選擇DCLK1的時(shí)鐘源:0=PCLK;1=UCLK0[16]DCLK1ENDCLK1的使能位:

0=禁止;1=使能0[15:12]Reserved保留00[11:8]DCLK0CMP確定DCLK0的占空比0000[7:4]DCLK0DIV確定DCLK0的分頻系數(shù)0000[3:2]Reserved保留00[1]DCLK0SelCK選擇DCLK1的時(shí)鐘源:0=PCLK;1=UCLK0[0]DCLK0ENDCLK1的使能位:0=禁止;1=使能0

通過(guò)設(shè)置DCLKCON寄存器可以定義DCLKn(n=0或1)時(shí)鐘信號(hào)的頻率和占空比。

例如,若DCLKnCMP取m,DCLKnDIV取n,則有:F(DCLKn)=時(shí)鐘源頻率/(n+1)DCLKn的低電平寬度為m+1,高電平寬度為(n+1)-(m+1)。DCLKn的輸出波形如圖8-1所示。33表8-28GSTATUS0狀態(tài)寄存器位功能表343.通用狀態(tài)寄存器GSTATUS0

該寄存器為只讀寄存器,僅使用了最低的4bit,它們的位功能如表8-28所示。比特位位功能符號(hào)功能描述初值[31:4]Reserved保留-[3]nWAIT總線引腳nWAIT的狀態(tài)。-[2]NCONNCON引腳的狀態(tài)。NandFlash配置端口,當(dāng)不使用NandFlash時(shí)外接上拉電阻。-[1]R/nBNandFlash的R/nB狀態(tài)。-[0]nBATT_FLTnBATT_FLT引腳的狀態(tài),用于電池檢測(cè)。-4.通用狀態(tài)寄存器GSTATUS1

該寄存器是只讀寄存器,用于存儲(chǔ)芯片ID,數(shù)據(jù)是0x32410000。5.

通用狀態(tài)寄存器GSTATUS2

該寄存器是可讀/寫的狀態(tài)寄存器,用于反映ARM復(fù)位的原因,位功能如下表所示。35比特位位功能符號(hào)功能描述初值[31:3]Reserved保留-[2]WDTRST由看門狗復(fù)位。對(duì)該位寫“1”時(shí)清“0”0[1]OFFRST從掉電模式喚醒后復(fù)位。對(duì)該位寫“1”時(shí)清“0”0[0]PWRST由電源復(fù)位。對(duì)該位寫“1”時(shí)清“0”18.1.4通用I/O端口程序設(shè)計(jì)示例硬件是設(shè)計(jì)一個(gè)按鍵開(kāi)關(guān)電路和LED顯示電路。軟件的功能是,當(dāng)按下Kn(n=1~4)時(shí),LED1~LED4依次重復(fù)顯示3次,但時(shí)間間隔為n個(gè)時(shí)間單位。1.硬件電路的設(shè)計(jì)

硬件電路的設(shè)計(jì)如圖8-2所示。按鍵使用GPG0、GPG3、GPG5、GPG6引腳,低電平有效。R1~R4的選取一般大于1K,電阻值越大,電路的功耗越小,但必須保證在平常狀態(tài)下加在輸入引腳的電平大于高電平的最小值。對(duì)于按鍵的防抖,可以在電阻的下端與地之間連接一個(gè)10uF大小的電容,實(shí)現(xiàn)硬件的防抖,同時(shí)使電路具有一定的抗干擾能力;也可以使用軟件防抖,當(dāng)程序發(fā)現(xiàn)按鍵按下后,等待大約15ms的時(shí)間再讀該引腳,如果還是低電平,則確認(rèn)是按鍵按下,否則認(rèn)為是干擾造成的。3637LED顯示使用GPB5~GPB8引腳,選擇低電平有效,因?yàn)榧蓴?shù)字電路輸出低電平時(shí)的灌電流能力要遠(yuǎn)遠(yuǎn)地大于輸出高電平的拉電流能力。限流電阻R5~R8的選取是保證發(fā)光二極管LED的工作電流在其允許的范圍內(nèi),LED的導(dǎo)通電阻取300~600Ω。VDD33V是3.3V的直流電壓源正極。

通用I/O端口的設(shè)計(jì)流程如下:①確定使用的I/O端口是輸入或輸出功能。②根據(jù)①配置相應(yīng)端口的控制寄存器GPnCON,并根據(jù)需要設(shè)置端口的上拉電阻寄存器GPnUP。③設(shè)置輸出端口的初始值;根據(jù)程序的功能要求編寫程序。

程序設(shè)計(jì)如下:382.通用I/O端口的程序設(shè)計(jì)#include2410addr.h/*寄存器地址C語(yǔ)言定義文件*/voidDelaySecond(u32x_second);/*聲明延時(shí)函數(shù),在其它文件中定義*/voidInit_Port();/*聲明初始化端口函數(shù)*/voidLed_Disply(u32x);//聲明4個(gè)LED依次顯示x秒函數(shù)voidmain(){chari;voidInit_Port();do{

if(rGPGDAT&0x01)==0)for(i=0;i<3;i++)Led_Disply(1);//各燈閃1次if(rGPGDAT&0x08==0)for(i=0;i<3;i++)Led_Disply(2);//各燈閃2次if(rGPGDAT&0x20==0)for(i=0;i<3;i++)Led_Disply(3);//各燈閃3次if(rGPGDAT&0x40==0)for(i=0;i<3;i++)Led_Disply(4);//各燈閃4次}while(1);}39voidInit_Port();/*定義初始化端口函數(shù)*/{

//設(shè)置GPG6、GPG5、GPG3、GPG0引腳功能為輸入,即使對(duì)應(yīng)的b2n+1b2n=00rGPGCON=rGPGCON&(~(3<<12))&(~(3<<10))&(~(3<<6))&(~(3<<0));//禁止GPG6、GPG5、GPG3、GPG0引腳上拉電阻,即使對(duì)應(yīng)的bn//設(shè)置GPB8、GPB7、GPB6、GPB5引腳功能為輸出,即使對(duì)應(yīng)的b2n+1b2n=01rGPBCON=rGPBCON&(~(3<<16))&(~(3<<14))&(~(3<<12))&(~(3<<10));rGPBCON=rGPBCON|(1<<16)|(1<<14)|(1<<12)|(1<<10);//GPB8、GPB7、GPB6、GPB5作為輸出要使能其引腳上拉電阻rGPBUP=rGPBUP&(~(1<<8))&(~(1<<7))&(~(1<<6))&(~(1<<5))=1//GPG6、GPG5、GPG3、GPG0作為輸入要禁止其引腳上拉電阻rGPGUP=rGPGUP|(1<<6)|(1<<5)|(1<<3)|(1<<0);//將GPB8、GPB7、GPB6、GPB5引腳設(shè)置為高電平,即4個(gè)LED開(kāi)始不亮rGPBDAT=rGPBDAT|(1<<8)|(1<<7)|(1<<6)|(1<<5);}4041voidLed_Disply(u32x)//定義4個(gè)LED依次顯示x秒函數(shù){

rGPBDAT=rGPBDAT&(~(1<<5));//GPB5輸出低電平,LED1亮DelaySecond(x);//延時(shí)x秒rGPBDAT=rGPBDAT|(1<<5);//GPB5輸出高電平,LED1滅rGPBDAT=rGPBDAT&(~(1<<6));//GPB6輸出低電平,LED2亮DelaySecond(x);rGPBDAT=rGPBDAT|(1<<6);//GPB6輸出高電平,LED2滅

rGPBDAT=rGPBDAT&(~(1<<7));//GPB7輸出低電平,LED3亮DelaySecond(x);rGPBDAT=rGPBDAT|(1<<7);//GPB7輸出高電平,LED3滅rGPBDAT=rGPBDAT&(~(1<<8));//GPB8輸出低電平,LED4亮DelaySecond(x);rGPBDAT=rGPBDAT|(1<<8);//GPB8輸出高電平,LED4滅}8.2微處理器S3C2410A中斷系統(tǒng)程序設(shè)計(jì)微處理器S3C2410A中的普通中斷IRQ和快速中斷FIQ均處于7種異常之內(nèi),當(dāng)S3C2410A的56個(gè)中斷源進(jìn)行中斷請(qǐng)求時(shí),如果CPU響應(yīng)中斷,則總中斷服務(wù)程序的入口地址是普通中斷IRQ異常的向量地址0x00000018或是快速中斷FIQ異常的向量地址0x0000001C,然后由總中斷服務(wù)程序再去查找具體的中斷源,執(zhí)行相應(yīng)的中斷服務(wù)程序。本節(jié)就是在這一線索的基礎(chǔ)上,講述其中斷系統(tǒng)的相關(guān)知識(shí)與應(yīng)用。42S3C2410A中斷系統(tǒng)的中斷源,將其分為3級(jí):CPU級(jí)的中斷源:IRQ和FIQ;ARM級(jí)的中斷源:共32個(gè),詳細(xì)請(qǐng)見(jiàn)表8-30;子中斷源和外部中斷源級(jí):共11+24=35個(gè),具體見(jiàn)表8-31、表8-32。由此可見(jiàn),它們的結(jié)構(gòu)就像一棵樹,如圖8-3所示,ARM中斷源沒(méi)有按默認(rèn)的優(yōu)先次序排列,子中斷源和外部中斷源也沒(méi)有按默認(rèn)的優(yōu)先次序排列。43中斷服務(wù)程序的請(qǐng)求與執(zhí)行過(guò)程:

●從圖中可以看出,子中斷源、外部中斷源和部分ARM中斷源的中斷申請(qǐng)過(guò)程是由樹的葉節(jié)點(diǎn)向樹的根節(jié)點(diǎn)的求索過(guò)程,是由硬件電路完成的;

●中斷服務(wù)程序的執(zhí)行過(guò)程是由樹的根節(jié)點(diǎn)向樹的葉節(jié)點(diǎn)的回索過(guò)程,即由總中斷服務(wù)程序開(kāi)始尋找具體的中斷服務(wù)程序去執(zhí)行。8.2.2S3C2410A的中斷源

●S3C2410A的中斷源分為CPU級(jí)的中斷源有IRQ和FIQ,ARM級(jí)的中斷源共有32個(gè),如表8-30所示。

●子中斷源共11個(gè),它是由ARM的中斷源INT_ADC、INT_UART0、INT_UART1、INT_UART2派生的,如表8-31所示。

●外部中斷源共24個(gè),是由ARM中斷源的EINT4_7、EINT8_23派生的,并包括EINT0~EINT3,如表8-32所示。4445中斷源名簡(jiǎn)要描述仲裁器INT_ADCADC中斷源,它派生出2個(gè)子中斷(ADC轉(zhuǎn)換結(jié)束中斷INT_ADC和觸摸屏中斷INT_TC)。ARB5INT_RTC實(shí)時(shí)鐘RTC報(bào)警中斷源。ARB5INT_SPI1SPI1中斷源。ARB5INT_UART0UART0中斷源,它派生出3個(gè)子中斷(UART0錯(cuò)誤中斷INT_ERR0、接收中斷INT_RXD0和發(fā)送中斷INT_TXD0)。ARB5INT_IICI接口中斷源。ARB4INT_USBHUSB主機(jī)中斷源。ARB4INT_USBDUSB設(shè)備中斷源。ARB4Reserved保留ARB4INT_UART1UART1中斷源,它派生出3個(gè)子中斷(UART1錯(cuò)誤中斷INT_ERR1、接收中斷INT_RXD1和發(fā)送中斷INT_TXD1)。ARB4INT_SPI0SPI0中斷源。ARB4INT_SDISDI中斷源。ARB3INT_DMA3DMA通道3中斷源。ARB3INT_DMA2DMA通道2中斷源。ARB3INT_DMA1DMA通道1中斷源。ARB3INT_DMA0DMA通道0中斷源。ARB3INT_LCDLCD中斷源(幀同步中斷INT_FrSyn和FIFO中斷INT_FiCnt)。ARB346INT_UART2UART2中斷源,它派生出3個(gè)子中斷(UART2錯(cuò)誤中斷INT_ERR2、接收中斷INT_RXD2和發(fā)送中斷INT_TXD2)。ARB2INT_TIMER4定時(shí)/計(jì)數(shù)器Timer4中斷源。ARB2INT_TIMER3定時(shí)/計(jì)數(shù)器Timer3中斷源。ARB2INT_TIMER2定時(shí)/計(jì)數(shù)器Timer2中斷源。ARB2INT_TIMER1定時(shí)/計(jì)數(shù)器Timer1中斷源。ARB2INT_TIMER0定時(shí)/計(jì)數(shù)器Timer0中斷源。ARB2INT_WDT看門狗定時(shí)器中斷源。ARB1INT_TICK實(shí)時(shí)鐘RTC時(shí)間片中斷源。ARB1nBATT_FLT電池故障中斷源(BatteryFaultInterrupt)。ARB1Reserved保留ARB1EINT8_23外部中斷源8_23,由它派生16個(gè)外部中斷源。輸入端口依次是GPG0~GPG15。ARB1EINT4_7外部中斷源4_7,由它派生4個(gè)外部中斷源。輸入端口依次是GPF4~GPF7。ARB1EINT3外部中斷源3,輸入端口是GPF3,受外部中斷相關(guān)寄存器控制。ARB0EINT2外部中斷源2,輸入端口是GPF2,受外部中斷相關(guān)寄存器控制。ARB0EINT1外部中斷源1,輸入端口是GPF1,受外部中斷相關(guān)寄存器控制。ARB0EINT0外部中斷源0,輸入端口是GPF0,受外部中斷相關(guān)寄存器控制。ARB047子中斷源描述子中斷源描述INT_ERR1UART1溢出錯(cuò)誤和幀錯(cuò)誤中斷源INT_ADCADC轉(zhuǎn)換結(jié)束中斷源INT_TXD1UART1發(fā)送寄存器空或FIFO小于設(shè)定值時(shí)產(chǎn)生的中斷源INT_TC觸摸屏觸筆按下中斷源INT_RXD1UART1接收寄存器滿或FIFO大于設(shè)定值時(shí)產(chǎn)生的中斷源INT_ERR2UART2溢出錯(cuò)誤和幀錯(cuò)誤中斷源INT_ERR0UART0溢出錯(cuò)誤和幀錯(cuò)誤中斷源INT_TXD2UART2發(fā)送寄存器空或FIFO小于設(shè)定值時(shí)產(chǎn)生的中斷源INT_TXD0UART0發(fā)送寄存器空或FIFO小于設(shè)定值時(shí)產(chǎn)生的中斷源INT_RXD2UART2接收寄存器滿或FIFO大于設(shè)定值時(shí)產(chǎn)生的中斷源INT_RXD0UART0接收寄存器滿或FIFO大于設(shè)定值時(shí)產(chǎn)生的中斷源表8-31S3C2410A子中斷源表表8-32S3C2410A外部中斷源表48外中斷源名描述與輸入端口EINT23~8外部中斷23~8,輸入端口GPG15~0EINT7~0外部中斷7~0,輸入端口GPF7~0

●S3C2410A采用ARM920TCPU內(nèi)核,ARM920TCPU的中斷源有IRQ和FIQ。IRQ是普通中斷,F(xiàn)IQ是快速中斷,F(xiàn)IQ的優(yōu)先級(jí)高于IRQ。FIQ中斷通常在進(jìn)行大批量的復(fù)制、數(shù)據(jù)傳輸?shù)裙ぷ鲿r(shí)使用,系統(tǒng)的快速中斷源最多只能有一個(gè)。

●S3C2410A通過(guò)對(duì)程序狀態(tài)寄存器PSR[7:6]的I位和F位進(jìn)行設(shè)置,控制CPU能否進(jìn)行中斷響應(yīng)。如果設(shè)置PSR[7]的I位為1,禁止IRQ中斷,則CPU不會(huì)響應(yīng)來(lái)自中斷控制器的IRQ中斷;如果設(shè)置PSR[6]的F位為1,禁止FIQ中斷,則CPU不會(huì)響應(yīng)來(lái)自中斷控制器的FIQ中斷。

●如果設(shè)置PSR的I位或F位設(shè)置為0,即允許CPU中斷,同時(shí)再將中斷屏蔽寄存器(INTMSK)中的對(duì)應(yīng)位設(shè)置為0,CPU就可以響應(yīng)來(lái)自中斷控制器的IRQ或FIQ中斷請(qǐng)求。圖8-4是S3C2410A的中斷請(qǐng)求過(guò)程示意圖。498.2.3S3C2410A中斷請(qǐng)求過(guò)程501.子中斷請(qǐng)求過(guò)程

對(duì)于子中斷能夠得到請(qǐng)求,要完成以下的流程才能進(jìn)行中斷申請(qǐng)并得到CPU的響應(yīng)。

①子中斷源器件或I/O接口必須中斷使能,即允許它進(jìn)行中斷。

②子中斷屏蔽寄存器INTSUBMSK的相應(yīng)位必須設(shè)置為0(即子中斷允許)。

③對(duì)應(yīng)共享的ARM中斷源的相應(yīng)中斷屏蔽寄存器INTMSK位也要清“0”(即ARM中斷允許),這樣就有可以進(jìn)行子中斷申請(qǐng)。例如,觸摸屏子中斷INT_TC,過(guò)程是觸摸屏開(kāi)中斷→允許觸摸屏子中斷→允許ARM的中斷源INT_ADC中斷。在CPU中斷源IRQ或FIQ允許的情況下,就可以響應(yīng)該子中斷。2.外部中斷請(qǐng)求過(guò)程

外部中斷請(qǐng)求,要完成以下的流程才能進(jìn)行中斷申請(qǐng)并得到CPU的響應(yīng)。①必須使用相應(yīng)的引腳的第3功能,即將對(duì)應(yīng)的b2n+1b2n=10。②設(shè)置外部中斷源的觸發(fā)電平,例如是低電平、高電平、上升沿等。③設(shè)置中斷濾波寄存器(必要時(shí))。④外部中斷屏蔽寄存器的相應(yīng)位清“0”,即允許外部中斷請(qǐng)求。⑤ARM的中斷屏蔽寄存器的相應(yīng)位也必須清“0”,即允許ARM中斷請(qǐng)求。

完成以上流程,只要CPU的IRQ或FIQ開(kāi)中斷,外部的中斷請(qǐng)求就可以得到響應(yīng)。3.ARM中斷請(qǐng)求過(guò)程ARM的中斷請(qǐng)求是過(guò)程最為簡(jiǎn)單的,只要ARM中斷源的器件或I/O接口開(kāi)中斷,同時(shí)ARM中斷屏蔽寄存器的相應(yīng)位清“0”,在CPU中斷源IRQ或FIQ允許中斷時(shí),ARM的中斷申請(qǐng)就可以得到響應(yīng)。注意:上述是概括性的對(duì)各種中斷源申請(qǐng)過(guò)程的描述,細(xì)化的過(guò)程在以后的節(jié)中可以體會(huì)得到。528.2.4ARM中斷控制寄存器

S3C2410A的中斷請(qǐng)求過(guò)程,除了設(shè)置上述的主要中斷寄存器外,還要設(shè)置中斷模式寄存器INTMOD和中斷優(yōu)先權(quán)寄存器PRIORITY。與中斷有關(guān)的寄存器有的是控制著中斷源向CPU申請(qǐng)中斷的硬件電路,有的是記錄著哪一個(gè)中斷源得到了CPU的中斷響應(yīng),為總中斷服務(wù)程序查找具體的中斷源并執(zhí)行其中斷程序或函數(shù)提供了有效信息。

ARM中斷控制寄存器共有6個(gè),它們的屬性如表8-33所示。53寄存器名地址讀寫控制描述初值SRCPND0x4A000000讀/寫中斷源懸掛寄存器0x00000000INTMOD0x4A000004讀/寫中斷模式寄存器0x00000000INTMSK0x4A000008讀/寫中斷屏蔽寄存器0xFFFFFFFFPRIORITY0x4A00000C讀/寫中斷優(yōu)先權(quán)寄存器0x4A00000CINTPND0x4A000010讀/寫中斷懸掛寄存器0x00000000INTOFFSET0x4A000014讀/寫中斷偏移量寄存器0x000000001.中斷源懸掛寄存器SRCPND

中斷源懸掛寄存器SRCPND(SourcePendingRegister)反映的是,相應(yīng)的比特位所對(duì)應(yīng)的ARM中斷源是否有中斷申請(qǐng)信號(hào),只要有中斷申請(qǐng)信號(hào),相應(yīng)的寄存器位置“1”,否則為“0”。它的復(fù)位工作在中斷服務(wù)程序中進(jìn)行,通過(guò)對(duì)相應(yīng)的位寫“1”來(lái)完成。SRCPND使用的地址為0x4A000000,復(fù)位初值為0x00000000。SRCPND寄存器的各比特位功能如表8-34所示。5455比特位功能描述初值[31]INT_ADC中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[30]INT_RTC中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[29]INT_SPI1中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[28]INT_UART0中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[27]INT_IIC中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[26]INT_USBH中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[25]INT_USBD中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[24]保留0[23]INT_UART1中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[22]INT_SPI0中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[21]INT_SDI中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[20]INT_DMA3中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[19]INT_DMA2中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[18]INT_DMA1中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[17]INT_DMA0中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[16]INT_LCD中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0中斷源懸掛寄存器位功能表中斷源懸掛寄存器位功能表(續(xù))56[15]INT_UART2中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[14]INT_TIM4中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[13]INT_TIM3中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[12]INT_TIM2中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[11]INT_TIM1中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[10]INT_TIM0中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[9]INT_WDT中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[8]INT_TICK中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[7]nBATT_FLT中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[6]保留0[5]EINT8_23中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[4]EINT4_7中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[3]EINT3中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[2]EINT2中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[1]EINT1中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求0[0]EINT0中斷請(qǐng)求:0=無(wú)中斷請(qǐng)求;1=有中斷請(qǐng)求02.中斷模式寄存器INTMOD

S3C2410A的中斷模式寄存器INTMOD(InterruptModeRegister)控制選擇ARM32個(gè)中斷源是普通中斷IRQ還是快速中斷FIQ模式。

注意:FIQ最多只能選擇其中的1個(gè)中斷源。57比特位功能描述初值[31]INT_ADC中斷模式:0=普通中斷IRQ;1=快速中斷FIQ0[30]INT_RTC中斷模式:0=普通中斷IRQ;1=快速中斷FIQ0…[29:2]中斷源與SRCPND對(duì)應(yīng)位相同,設(shè)置功能與上下行雷同0x0[1]EINT1中斷模式:

0=普通中斷IRQ;1=快速中斷FIQ0[0]EINT0中斷模式:

0=普通中斷IRQ;1=快速中斷FIQ0圖8-35INTMOD寄存器比特位功能表INTMOD使用的地址為0x4A000004,復(fù)位初值為0x00000000。3.中斷屏蔽寄存器INTMSK

中斷屏蔽寄存器INTMSK(InterruptMaskRegister)用于控制ARM的32個(gè)中斷源的中斷允許或禁止中斷。

如果設(shè)置中斷屏蔽寄存器INTMSK中的相對(duì)應(yīng)屏蔽位為“1”,表示相對(duì)應(yīng)的中斷源禁止中斷;

如果設(shè)置為“0”,表示相對(duì)應(yīng)的中斷源允許中斷。

INTMSK使用的地址為0x4A000008,復(fù)位初值為0xFFFFFFFF。58比特位功能描述初值[31]INT_ADC中斷屏蔽位:0=中斷允許;1=禁止中斷1[30]INT_RTC中斷屏蔽位:0=中斷允許;1=禁止中斷1…[29:2]中斷源與SRCPND對(duì)應(yīng)位相同,設(shè)置功能與行雷同均為1[1]EINT1中斷屏蔽位:

0=中斷允許;1=禁止中斷1[0]EINT0中斷屏蔽位:

0=中斷允許;1=禁止中斷14.中斷優(yōu)先權(quán)寄存器PRIORITY中斷優(yōu)先級(jí)寄存器PRIORITY是IRQ模式下的中斷優(yōu)先級(jí)控制寄存器。以下首先介紹中斷優(yōu)先權(quán)仲裁器電路結(jié)構(gòu)框圖,然后介紹PRIORITY寄存器的位功能。⑴中斷優(yōu)先權(quán)仲裁器S3C2410A中斷優(yōu)先權(quán)仲裁器ARB(Arbiter)由6個(gè)分仲裁器和1個(gè)總仲裁器組成。每一個(gè)仲裁器可以處理6路中斷,仲裁ARM的32個(gè)中斷源申請(qǐng)優(yōu)先級(jí),中斷優(yōu)先權(quán)仲裁器的電路結(jié)構(gòu)框圖如圖8-5所示。S3C2410A的56個(gè)中斷源通過(guò)這32個(gè)中斷請(qǐng)求提供優(yōu)先級(jí)邏輯控制,仲裁器ARBITER0~ARBITER5連接的中斷源按優(yōu)先級(jí)排序,它們的輸出輸入到仲裁器ARBITER6,實(shí)現(xiàn)最終的優(yōu)先級(jí)排序。5960⑵中斷優(yōu)先權(quán)寄存器PRIORITY

中斷優(yōu)先級(jí)寄存器PRIORITY使用的地址為0x4A00000C,復(fù)位后的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論