嵌入式系統(tǒng)第六章 S3C2410A的基本接口應(yīng)用程序設(shè)計(jì)_第1頁(yè)
嵌入式系統(tǒng)第六章 S3C2410A的基本接口應(yīng)用程序設(shè)計(jì)_第2頁(yè)
嵌入式系統(tǒng)第六章 S3C2410A的基本接口應(yīng)用程序設(shè)計(jì)_第3頁(yè)
嵌入式系統(tǒng)第六章 S3C2410A的基本接口應(yīng)用程序設(shè)計(jì)_第4頁(yè)
嵌入式系統(tǒng)第六章 S3C2410A的基本接口應(yīng)用程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩172頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

3個(gè)串行接口(UART)117位通用并行接口(GPIO)1個(gè)LCD控制器1個(gè)觸摸屏接口8通道10位A/D轉(zhuǎn)換器3個(gè)USB接口1個(gè)I2C總線接口2個(gè)SPI總線接口4個(gè)定時(shí)/計(jì)數(shù)器和1個(gè)內(nèi)部時(shí)鐘,1個(gè)看門(mén)狗計(jì)數(shù)器可處理56個(gè)中斷源的中斷系統(tǒng)SD卡和MMC卡接口SDRAM控制器4通道DMA控制器

S3C2410嵌入式微處理器的內(nèi)部資源:第6章S3C2410A的基本接口應(yīng)用程序設(shè)計(jì)具有ARM9內(nèi)核的S3C2410微處理器的嵌入式系統(tǒng)硬件平臺(tái)一、概述

S3C2410的UART(通用異步串行口)有三個(gè)獨(dú)立的異步串行I/O端口:UART0、UART1、UART2,每個(gè)串口都可以在中斷和DMA兩種模式下進(jìn)行收發(fā)。UART支持的最高波特率達(dá)230.4kbps。

每個(gè)UART包含:波特率發(fā)生器、接收器、發(fā)送器和控制單元。波特率發(fā)生器以PCLK或UCLK為時(shí)鐘源。發(fā)送器和接收器各包含1個(gè)16字節(jié)的FIFO寄存器和移位寄存器。

S3C2410的3個(gè)UART都有遵從1.0規(guī)范的紅外傳輸功能,UART0、UART1有完整的握手信號(hào),可以連接MODEM。 當(dāng)發(fā)送數(shù)據(jù)的時(shí)候,數(shù)據(jù)先寫(xiě)到FIFO然后拷貝到發(fā)送移位寄存器,然后從數(shù)據(jù)輸出端口(TxDn)依次被移位輸出。被接收的數(shù)據(jù)也同樣從接收端口(RxDn)移位輸入到移位寄存器,然后拷貝到FIFO中。6.1S3C2410A的串行通信接口6.1.1S3C2410A的內(nèi)部結(jié)構(gòu)S3C2410A的內(nèi)部集成了3個(gè)異步接收發(fā)送器(UART),它們可以作為串口使用實(shí)現(xiàn)串行通信。UART的內(nèi)部結(jié)構(gòu)串行口功能模塊

6.1.2S3C2410AUART的主要功能異步串行通信方式是將傳輸數(shù)據(jù)的每個(gè)字符一位接一位地傳送。其字符傳送協(xié)議為:1.串行數(shù)據(jù)的發(fā)送和接收

工作原理

數(shù)據(jù)幀格式:可編程,包含1個(gè)開(kāi)始位、5到8個(gè)數(shù)據(jù)位、1個(gè)可選的奇偶校驗(yàn)位、1個(gè)或2個(gè)停止位,通過(guò)線路控制器(ULCONn)來(lái)設(shè)置。 發(fā)送中止信號(hào):迫使串口輸出邏輯0,這種狀態(tài)保持一個(gè)傳輸幀的時(shí)間長(zhǎng)度。通常在一幀傳輸數(shù)據(jù)完整地傳輸完之后,再通過(guò)這個(gè)全0狀態(tài)將中止信號(hào)發(fā)送給對(duì)方。中止信號(hào)發(fā)送之后,傳送數(shù)據(jù)連續(xù)放到FIFO中(在不使用FIFO模式下,將被放到輸出保持寄存器)。2.紅外線模式數(shù)據(jù)的發(fā)送和接收UART連接紅外收發(fā)器,可以進(jìn)行紅外數(shù)據(jù)通信3.提供串行通信時(shí)的狀態(tài)信息S3C2410A的每個(gè)UART可以產(chǎn)生5個(gè)狀態(tài)信號(hào):接收緩沖器滿(mǎn)、發(fā)送緩沖器空、發(fā)送移位器空、超時(shí)錯(cuò)誤、幀錯(cuò)誤,這些狀態(tài)信號(hào)由兩個(gè)狀態(tài)寄存器(UTRSTAT和UERSTAT)來(lái)指示。接收器具有錯(cuò)誤檢測(cè)功能:可以檢測(cè)出溢出錯(cuò)誤,奇偶校驗(yàn)錯(cuò)誤,幀錯(cuò)誤和中止?fàn)顩r,每種情況下都會(huì)將一個(gè)錯(cuò)誤標(biāo)志在接收狀態(tài)寄存器置位。4.使用FIFO進(jìn)行收發(fā)

主要是通過(guò)對(duì)FIFO狀態(tài)寄存器UFSTATn的查詢(xún),確定進(jìn)行收發(fā)。

使用FIFO進(jìn)行發(fā)送: (1)選擇發(fā)送模式(中斷或者DMA模式) (2)查詢(xún)對(duì)方是否有請(qǐng)求發(fā)送要求,由MODEM狀態(tài)寄存器UMSTATn[0]給出,該位為1,則有請(qǐng)求,再查詢(xún)FIFO狀態(tài)寄存器UFSTATn的發(fā)送數(shù)據(jù)滿(mǎn)狀態(tài)位是否為1,如果不是1,可以向發(fā)送緩沖寄存器UTXHn寫(xiě)入發(fā)送的數(shù)據(jù)。上面二者有一個(gè)或者兩個(gè)都不滿(mǎn)足,則不發(fā)送數(shù)據(jù)。

使用FIFO進(jìn)行接收(請(qǐng)求發(fā)送): (1)選擇接收模式(中斷或者DMA模式) (2)請(qǐng)求發(fā)送。先要查詢(xún)FIFO狀態(tài)寄存器UFSTATn的接收數(shù)據(jù)滿(mǎn)狀態(tài)位是否為1,如果不是1,則可以向?qū)Ψ桨l(fā)出“請(qǐng)求發(fā)送信號(hào)”,對(duì)MODEM控制寄存器MCONn中的請(qǐng)求發(fā)送信號(hào)產(chǎn)生位置1,使UARTn發(fā)出nRTS信號(hào);如果UFSTATn的數(shù)據(jù)滿(mǎn)狀態(tài)位是1,則不能夠請(qǐng)求發(fā)送數(shù)據(jù)。

5.不使用FIFO進(jìn)行收發(fā)

主要是通過(guò)對(duì)收/發(fā)狀態(tài)寄存器UTRSTATn的查詢(xún),確定進(jìn)行收發(fā)。

數(shù)據(jù)發(fā)送: (1)選擇發(fā)送模式(中斷或者DMA模式) (2)查詢(xún)對(duì)方是否有請(qǐng)求發(fā)送要求,由MODEM狀態(tài)寄存器UMSTATn[0]給出,該位為1,則有請(qǐng)求,再查詢(xún)發(fā)送/接收狀態(tài)寄存器UTRSTATn[1]的“發(fā)送緩沖器空”狀態(tài)位是否為1,如果是1,可以向發(fā)送緩沖寄存器UTXHn寫(xiě)入發(fā)送的數(shù)據(jù)。

數(shù)據(jù)接收(請(qǐng)求發(fā)送): (1)選擇接收模式(中斷或者DMA模式) (2)請(qǐng)求發(fā)送。先要查詢(xún)發(fā)送/接收狀態(tài)寄存器UTRSTATn[0]的接收緩沖器“數(shù)據(jù)就緒狀態(tài)位”是否為1,如果是1,需要先讀取數(shù)據(jù),然后再請(qǐng)求對(duì)方發(fā)送數(shù)據(jù),方法是對(duì)MODEM控制寄存器MCONn中的請(qǐng)求發(fā)送信號(hào)產(chǎn)生位置1,使UARTn發(fā)出nRTS信號(hào)。

6.中斷或DMA請(qǐng)求 每個(gè)UART都有3類(lèi)、7種事件產(chǎn)生中斷請(qǐng)求或者DMA請(qǐng)求。

7種中斷請(qǐng)求事件是:溢出錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤、幀格式錯(cuò)誤、傳輸中斷信號(hào)、接收緩沖器數(shù)據(jù)就緒、發(fā)送緩沖器空、發(fā)送移位器空。 它們可以分成3類(lèi):錯(cuò)誤中斷請(qǐng)求、接收中斷請(qǐng)求、發(fā)送中斷請(qǐng)求。 接收中斷:

非FIFO模式:當(dāng)接收緩沖寄存器收到數(shù)據(jù)后,產(chǎn)生中斷請(qǐng)求。

FIFO模式:RxFIFO中數(shù)據(jù)的數(shù)目達(dá)到了觸發(fā)中斷的水平,或者超時(shí)(在三幀時(shí)間內(nèi)未收到任何數(shù)據(jù)),均產(chǎn)生中斷請(qǐng)求。 發(fā)送中斷: 非FIFO模式:當(dāng)發(fā)送緩沖器空時(shí),產(chǎn)生中斷請(qǐng)求。

FIFO模式:TxFIFO中數(shù)據(jù)的數(shù)目達(dá)到了觸發(fā)中斷的水平。

錯(cuò)誤中斷: 一共有4種錯(cuò)誤中斷:溢出錯(cuò)誤、奇偶檢驗(yàn)錯(cuò)誤、幀格式錯(cuò)誤、傳輸中斷信號(hào)錯(cuò)誤。 非FIFO模式:只要有任何一個(gè)錯(cuò)誤出現(xiàn),就會(huì)產(chǎn)生中斷請(qǐng)求。

FIFO模式:RxFIFO中數(shù)據(jù)溢出,或者出現(xiàn)了幀格式錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤、傳輸中斷信號(hào)錯(cuò)誤,都會(huì)產(chǎn)生中斷請(qǐng)求。

說(shuō)明:

(1)對(duì)于“奇偶校驗(yàn)錯(cuò)誤、幀格式錯(cuò)誤、傳輸中斷信號(hào)錯(cuò)誤”中斷,在數(shù)據(jù)接收時(shí)就產(chǎn)生了,但是在數(shù)據(jù)接收產(chǎn)生時(shí)并非出現(xiàn)中斷請(qǐng)求,而是在讀出錯(cuò)誤數(shù)據(jù)時(shí)才出現(xiàn)中斷請(qǐng)求。 (2)如果設(shè)置的是DMA模式,而不是中斷請(qǐng)求模式,對(duì)于以上所出現(xiàn)的中斷請(qǐng)求,應(yīng)該是DMA請(qǐng)求。 (3)傳輸中斷信號(hào)定義:在超出一幀的時(shí)間內(nèi),全部輸出低電平。

7.循環(huán)檢測(cè)模式

S3C2410X的每一個(gè)UART都提供有檢測(cè)功能,它是一種數(shù)據(jù)循環(huán)流動(dòng)的自發(fā)、自收方式,數(shù)據(jù)從發(fā)送緩沖器傳送到TXD,數(shù)據(jù)不經(jīng)過(guò)引腳輸出,在內(nèi)部將數(shù)據(jù)傳到接收引腳RXD,再傳輸?shù)浇邮站彌_器。

8.串行口的自動(dòng)流控制功能(AFC)

UART0和UART1不僅有完整的握手信號(hào),而且有自動(dòng)流控制功能,在寄存器UMCONn中設(shè)置實(shí)現(xiàn)。自動(dòng)流控制是利用信號(hào)nRTS、nCTS來(lái)實(shí)現(xiàn)的。在接收數(shù)據(jù)時(shí),只要接收FIFO中有兩個(gè)空字節(jié)就會(huì)使nRTS有效,使對(duì)方發(fā)送數(shù)據(jù);在發(fā)送數(shù)據(jù)時(shí),只要nCTS有效,就會(huì)發(fā)送數(shù)據(jù)。其實(shí)現(xiàn)過(guò)程如下圖所示。

nRTS:請(qǐng)求對(duì)方發(fā)送 nCTS:清除請(qǐng)求發(fā)送 注意:這種自動(dòng)流控制應(yīng)用于對(duì)方也是UART設(shè)備,不能應(yīng)用于MODEM設(shè)備。

每個(gè)UART的波特率發(fā)生器為傳輸提供了串行移位時(shí)鐘。波特率產(chǎn)生器的時(shí)鐘源可以從S3C2410的內(nèi)部系統(tǒng)時(shí)鐘PCLK或UCLK中來(lái)選擇。波特率數(shù)值決定于波特率除數(shù)寄存器(UBRDIVn)的值,波特率數(shù)與UBRDIVn的關(guān)系為:UBRDIVn=(int)(CLK/(fB*16))-1

其中CLK為所選擇的時(shí)鐘頻率,fB為波特率。fB=CLK/16/(UBRDIVn+1

) 例如,如果波特率為115200bps且PCLK或UCLK為40MHz,則UBRDIVn為:

UBRDIVn=(int)(40000000)(115200*16))-1 =(int)(21.7)-1 =21-1

=20

6.1.3串行口的波特率發(fā)生器6.1.4UART的初始化UART在工作前必須對(duì)其進(jìn)行初始化,即對(duì)UART的線控制寄存器(ULCON)、控制寄存器(UCON)、FIFO控制寄存器(UFCON)、Modem控制寄存器(UMCON)、波特率因子寄存器(UBRDIV)進(jìn)行設(shè)置。UART專(zhuān)用寄存器

3個(gè)UART,每個(gè)都有11個(gè)專(zhuān)用寄存器,共31個(gè)寄存器RegisterAddressR/WDescriptionResetValueULCONn0x5000x000R/W線路控制寄存器0x00UCONn0x5000x004R/W控制寄存器0x00UFCONn0x5000x008R/WFIFO控制寄存器0x00UMCONn0x5000x00CR/WMODEM控制寄存器*0x00UTRSTATn0x5000x010R發(fā)送/接收狀態(tài)寄存器0x6UERSTATn0x5000x014RRx錯(cuò)誤狀態(tài)寄存器0x0UFSTATn0x5000x018RFIFO狀態(tài)寄存器0x00UMSTATn0x5000x01CRMODEM狀態(tài)寄存器*0x0UTXHn0x5000x020/23W發(fā)送緩沖寄存器-URXHn0x5000x024/27R接收緩沖寄存器-UBRDIVn0x5000x028R/W波特率除數(shù)寄存器-1、線路控制寄存器(ULCON)RegisterAddressR/WDescriptionResetValueULCON00x50000000R/WUART0線路控制寄存器0x00ULCON10x50004000R/WUART1線路控制寄存器0x00ULCON20x50008000R/WUART2線路控制寄存器0x00字段名位意義初值-7保留0Infra-Red-Mode6

紅外模式設(shè)置位。0:正常模式;1:紅外0ParityMode5:3

奇偶校驗(yàn)類(lèi)型。

0xx:不校驗(yàn);

100:奇校驗(yàn);101:偶校驗(yàn);

110:強(qiáng)制為1;111:強(qiáng)制為0000Numofstopbit2

停止位個(gè)數(shù)。0:1個(gè);1:2個(gè)0WordLength1:0

數(shù)據(jù)位數(shù)目。

00:5位;

01:6位;10:7位;11:8位002、控制寄存器(UCON)RegisterAddressR/WDescriptionResetValueUCON00x50000004R/WUART0控制寄存器0x00UCON10x50004004R/WUART1控制寄存器0x00UCON20x50008004R/WUART2控制寄存器0x002、控制寄存器(UCON)字段名位意義初值ClockSelection10波特率時(shí)鐘源選擇。0:PCLK;1:UCLK0TxIntType9發(fā)送中斷請(qǐng)求類(lèi)型。0:脈沖型;1:電平0RxIntType8接收中斷請(qǐng)求類(lèi)型。0:脈沖型;1:電平0RxTimeOVEna7接收超時(shí)中斷控制。0:禁止;1:允許0RxERRIntEna6接收錯(cuò)誤中斷控制。0:禁止;1:允許0LoopbackMode5回送模式控制。0=正常操作;1=回送模式

0SendBreakSignal4發(fā)送暫停信號(hào)控制。0=正常傳輸;1=發(fā)送暫停信號(hào)(全為0)

0TransmitMode3:2

發(fā)送/接收模式控制。00:禁止發(fā)送/接收;

01:中斷或查詢(xún)模式;10:UART0、2用DMA0、DMA2;11:UART1用DMA100ReceiveMode1:0003、FIFO控制寄存器(UFCON)RegisterAddressR/WDescriptionResetValueUFCON00x50000008R/WUART0FIFO控制寄存器0x00UFCON10x50004008R/WUART1FIFO控制寄存器0x00UFCON20x50008008R/WUART2FIFO控制寄存器0x003、FIFO控制寄存器字段名位意義初值TxFIFOTriLeve7:6

TxFIFO的觸發(fā)電平設(shè)置。

00:空;

01:減少到4字節(jié);10:減少到8字節(jié);11:減少到12字節(jié)00lRxFIFOTriLevel5:4

RxFIFO的觸發(fā)電平設(shè)置。

00:增加到4字節(jié);01:增加到8字節(jié);

10:增加到12字節(jié);11:增加到16字節(jié)00reserved3保留0TxFIFOReset2

TxFIFO清除控制。0:正常;1:清零0RxFIFOReset1

RxFIFO清除控制。0:正常;1:清零0FIFOEnable0

FIFO應(yīng)用控制。0:失能;1:使能04、MODEM控制寄存器(UMCON)RegisterAddressR/WDescriptionResetValueUMCON00x5000000CR/WUART0MODEM控制寄存器0x00UMCON10x5000400CR/WUART1MODEM控制寄存器0x00reserved0x5000800C-保留-字段名位意義初值reserved7:5保留(為0)000AutoFlowControl(AFC)4

自動(dòng)流控制。

0:一般方式;1:自動(dòng)流控制0reserved3:1保留(為0)000RequesttoSend0

nRTS引腳信號(hào)控制。

0:nRTS為高電平;1:nRTS為低電平,有效。05、發(fā)送/接收狀態(tài)寄存器(UTRSTAT)RegisterAddressR/WDescriptionResetValueUTRSTAT00x50000010RUART0狀態(tài)寄存器0x06UTRSTAT10x50004010RUART1狀態(tài)寄存器0x06UTRSTAT20x50008010RUART2狀態(tài)寄存器0x06字段名位意義初值Transmitterempty2

發(fā)送器空狀態(tài)位。0:發(fā)送器未空

1:發(fā)送器、發(fā)送緩沖器均空。1Transmitbufferempty1

發(fā)送緩沖器空狀態(tài)位。0:未空;1:空

在非FIFO模式,激發(fā)中斷或DMA請(qǐng)求1Receivebufferdataready0

接收緩沖器狀態(tài)位。0:空;1:有數(shù)據(jù)在非FIFO模式,激發(fā)中斷或DMA請(qǐng)求06、Rx錯(cuò)誤狀態(tài)寄存器(UERSTAT)RegisterAddressR/WDescriptionResetValueUERSTAT00x50000014RUART0Rx錯(cuò)誤狀態(tài)寄存器0x0UERSTAT10x50004014RUART1Rx錯(cuò)誤狀態(tài)寄存器0x0UERSTAT20x50008014RUART2Rx錯(cuò)誤狀態(tài)寄存器0x0字段名位意義初值BreakDetect

3

暫停信號(hào)狀態(tài)。0:無(wú)暫停信號(hào);

1:收到暫停信號(hào)(產(chǎn)生中斷請(qǐng)求)0FrameError2

幀錯(cuò)誤狀態(tài)位。0:無(wú)幀錯(cuò)誤;

1:有幀錯(cuò)誤(產(chǎn)生中斷請(qǐng)求)0ParityError

1

奇偶校驗(yàn)錯(cuò)誤狀態(tài)。0:無(wú)奇偶校驗(yàn)錯(cuò)

1:有奇偶校驗(yàn)錯(cuò)誤(產(chǎn)生中斷請(qǐng)求)0OverrunError0

溢出錯(cuò)誤狀態(tài)位。0:無(wú)溢出錯(cuò)誤;

1:溢出錯(cuò)誤(產(chǎn)生中斷請(qǐng)求)07、FIFO狀態(tài)寄存器(UFSTAT)RegisterAddressR/WDescriptionResetValueUFSTAT00x50000018RUART0FIFO狀態(tài)寄存器0x00UFSTAT10x50004018RUART1FIFO狀態(tài)寄存器0x00UFSTAT20x50008018RUART2FIFO狀態(tài)寄存器0x00字段名位意義初值Reserved15:10

保留(為0)0TxFIFOFull9

發(fā)送FIFO滿(mǎn)狀態(tài)。0:未滿(mǎn);1:滿(mǎn)0RxFIFOFull8

接收FIFO狀態(tài)位。

0:未滿(mǎn);1:滿(mǎn)0TxFIFOCount7:4

發(fā)送FIFO中數(shù)據(jù)的數(shù)目,字節(jié)單位。0RxFIFOCount3:0

接收FIFO中數(shù)據(jù)的數(shù)目,字節(jié)單位。08、MODEM狀態(tài)寄存器(UMSTAT)RegisterAddressR/WDescriptionResetValueUMSTAT00x5000001CRUART0Modem狀態(tài)寄存器0x0UMSTAT10x5000401CRUART1Modem狀態(tài)寄存器0x0Reserved0x5000801CR保留-字段名位意義初值Reserved3

保留(為0)0DeltaCTS

2

nCTS引腳信號(hào)自上次讀后變化狀態(tài)。

0:未改變;1:已改變。0Reserved1

保留(為0)0CleartoSend0

nCTS引腳信號(hào)狀態(tài)。

0:nCTS為高電平;1:nCTS引腳為低電平,有效。09、發(fā)送緩沖寄存器(UTxH)RegisterAddressR/WDescriptionResetValueUTxH00x50000020(L)0x50000023(B)W(byte)UART0發(fā)送緩沖寄存器-UTxH10x50004020(L)0x50004023(B)W(byte)UART1發(fā)送緩沖寄存器-UTxH20x50008020(L)0x50008023(B)W(byte)UART2發(fā)送緩沖寄存器-字段名位意義初值TxDATAn7:0UARTn發(fā)送的一個(gè)字節(jié)數(shù)據(jù)-注:表中L地址為小端模式下的地址,B為大端模式時(shí)地址.

當(dāng)判斷串口準(zhǔn)備好發(fā)送數(shù)據(jù)時(shí),將數(shù)據(jù)放入發(fā)送緩沖器UTXH發(fā)送數(shù)據(jù)。10、接收緩沖寄存器(URxH)RegisterAddressR/WDescriptionResetValueURxH00x50000024(L)0x50000027(B)R(byte)UART0接收緩沖寄存器0x00URxH10x50004024(L)0x50004027(B)R(byte)UART1接收緩沖寄存器0x00URxH20x50008024(L)0x50008027(B)R(byte)UART2接收緩沖寄存器0x00字段名位意義初值RxDATAn7:0UARTn接收的一個(gè)字節(jié)數(shù)據(jù)。-當(dāng)判斷串口已接收到數(shù)據(jù)時(shí),從接收緩沖器URXH中讀取數(shù)據(jù)。11、波特率除數(shù)寄存器(UBRDIV)RegisterAddressR/WDescriptionResetValueUBRDIV00x50000028R/WUART0波特率除數(shù)寄存器-UBRDIV10x50004028R/WUART1波特率除數(shù)寄存器-UBRDIV20x50008028R/WUART2波特率除數(shù)寄存器-字段名位意義初值UBRDIV15:0

波特率除數(shù)值。UBRDIVn>0-【例6.2】編程實(shí)現(xiàn)UART0發(fā)送一個(gè)字符的程序和UART0接收一個(gè)字符的程序,發(fā)送和接收均采用查詢(xún)的方法進(jìn)行控制。解:根據(jù)題目要求,采用UTRSTAT0的第1位來(lái)判斷發(fā)送緩沖器是否準(zhǔn)備就緒,UTRSTAT0的第0位來(lái)判斷收緩沖區(qū)是否接收到數(shù)據(jù)。

#defineWrUTXH0(ch)(*(volatileunsignedchar)0x50000020)=(unsignedchar)(ch)/*定義串口0發(fā)送緩沖器*/#defineRdURXH0()(*(volatileunsignedchar*)0x50000024)/*定義串口0接收緩沖器*/#definerUTRSTAT0(*(volatileunsigned*)0x50000010)

/*定義串口0接收/發(fā)送狀態(tài)寄存器*/發(fā)送一個(gè)字符的子函數(shù)為:voidUart0_SendByten(intdata)//發(fā)送一個(gè)字符的子函數(shù)定義{while(!(rUTRSTAT0&0x2));//判斷發(fā)送緩沖器是否為空,未空則等待.hudelay(10);//延時(shí)WrUTXH0(data);//發(fā)送數(shù)據(jù)}接收一個(gè)字符的子函數(shù)為:charUart0_Getchn(viod)//接收一個(gè)字符的子函數(shù)定義{if(rUTRSTAT0&0x1));//判斷接收緩沖器是否有接收到數(shù)據(jù)returnRdURXH0();//有則返回接收到的數(shù)據(jù)elsereturn0;//沒(méi)有則返回0計(jì)算機(jī)之間串行通信的硬件連接一般采用RS-232C標(biāo)準(zhǔn),有如下兩種基本連接方式:

簡(jiǎn)單連接完全連接S3C2410AUART與RS232的連接電平轉(zhuǎn)換電路6.1.6串口應(yīng)用編程舉例編程實(shí)現(xiàn)S3C2410與PC機(jī)串行通信,在PC機(jī)上通過(guò)超級(jí)終端在鍵盤(pán)輸入字符,由超級(jí)終端將字符經(jīng)PC機(jī)串口送到S3C2410的串口,S3C2410收到字符后再經(jīng)PC機(jī)串口將字符發(fā)回到超級(jí)終端顯示。目標(biāo)板初始化回車(chē)換行調(diào)串口接收數(shù)據(jù)子函數(shù)調(diào)串口發(fā)送數(shù)據(jù)子函數(shù)開(kāi)始開(kāi)始開(kāi)始接收緩沖器有數(shù)據(jù)接收數(shù)據(jù)發(fā)送緩沖器空發(fā)送數(shù)據(jù)返回返回主程序串口接收數(shù)據(jù)子函數(shù)串口發(fā)送數(shù)據(jù)子函數(shù)程序框圖#include<string.h>//包含字符處理庫(kù)函數(shù)#include<stdio.h>//包含標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)#defineU8unsignedchar#defineTRUE 1#defineFALSE 0#pragmaimport(_use_no_semihosting_swi)//不使用軟中斷

/**********串口通信主函數(shù)***********/#definerUTRSTAT0(*(volatileunsigned*)0x50000010)//定義串口0的狀態(tài)寄存器地址#defineWrUTXH0(ch) (*(volatileunsignedchar*)0x50000020)=(unsignedchar)(ch)//定義串口0的發(fā)送緩沖器地址#defineRdURXH0() (*(volatileunsignedchar*)0x50000024)//定義串口0的接收緩沖器地址voidUart_SendByten(int,U8);//發(fā)送函數(shù)charUart_Getchn(char*Revdata,intUartnum,inttimeout);//接收函數(shù)voidARMTargetInit(void);//目標(biāo)板初始化函數(shù)voidhudelay(inttime);//延時(shí)函數(shù)intmain(void)//主函數(shù){charc1[1];charerr;ARMTargetInit();//目標(biāo)板初始化

while(1){Uart_SendByten(0,0xa);//換行

Uart_SendByten(0,0xd);//回車(chē)

err=Uart_Getchn(c1,0,0);//調(diào)串口0接收數(shù)據(jù)子函數(shù)

Uart_SendByten(0,c1[0]);//調(diào)串口0發(fā)送數(shù)據(jù)子函數(shù)

}}

串口0發(fā)送“換行符”接收數(shù)據(jù)的存放數(shù)組串口0允許超時(shí)時(shí)間串口0發(fā)送數(shù)據(jù)的存放數(shù)組調(diào)串口接收函數(shù)的返回值,返回值可用來(lái)判斷接收是否成功voidUart_SendByten(intUartnum,U8data)//串口0發(fā)送數(shù)據(jù)子函數(shù)

{ while(!(rUTRSTAT0&0x4));//串口0等待發(fā)送數(shù)據(jù)

hudelay(10);//延時(shí)

WrUTXH0(data);//串口0發(fā)送數(shù)據(jù)

}

串口號(hào)要發(fā)送的數(shù)據(jù)發(fā)送的數(shù)據(jù)串口0發(fā)送數(shù)據(jù)操作charUart_Getchn(char*Revdata,intUartnum,inttimeout)//串口0接收數(shù)據(jù)子函數(shù)

{ while(!(rUTRSTAT0&0x1));//串口0等待接收數(shù)據(jù) *Revdata=RdURXH0();//串口0接收數(shù)據(jù)

returnTRUE;//串口0接收數(shù)據(jù)成功返回

}

串口0接收數(shù)據(jù)操作6.2輸入/輸出端口主要內(nèi)容概述寄存器應(yīng)用舉例一、概述

S3C2410X有117個(gè)輸入/輸出端口。這些端口是:

A口(GPA):23個(gè)輸出口

B口(GPB):11個(gè)輸入/輸出口

C口(GPC):16個(gè)輸入/輸出口

D口(GPD):16個(gè)輸入/輸出口

E口(GPE):16個(gè)輸入/輸出口

F口(GPF):8個(gè)輸入/輸出口

G口(GPG):16個(gè)輸入/輸出口

H口(GPH):11個(gè)輸入/輸出口 這些端口都具有多功能,通過(guò)引腳配置寄存器,可以將其設(shè)置為所需要的功能,如:I/O功能、中斷功能等等。

二、端口寄存器及引腳配置 每一個(gè)端口都有4個(gè)寄存器,它們是:引腳配置寄存器、數(shù)據(jù)寄存器、引腳上拉寄存器等。RegisterAddressR/WDescriptionResetValueGPXCON0x560000x0R/W端口X配置寄存器XGPXDAT0x560000x4R/W端口X數(shù)據(jù)寄存器XGPXUP0x560000x8R/W端口X上拉寄存器XRESERVED0x560000xCR/W端口X保留寄存器- GPADAT寄存器為準(zhǔn)備輸出的數(shù)據(jù)其值為23位[22:0]

注意:(1)當(dāng)A口引腳配置為非輸出功能時(shí),其輸出無(wú)意義; (2)從引腳輸入沒(méi)有意義。1、端口A寄存器及引腳配置

RegisterAddressR/WDescriptionResetValueGPACON0x56000000R/W端口A引腳配置寄存器0x7FFFFFGPADAT0x56000004R/W端口A數(shù)據(jù)寄存器-RESERVED0x56000008-端口A保留寄存器-RESERVED0x5600000C-端口A保留寄存器-1、端口A寄存器及引腳配置

位號(hào)位名位值:01位號(hào)位名位值:0122GPA22輸出nFCE10GPA10輸出ADDR2521GPA21輸出nRSTOUT9GPA9輸出ADDR2420GPA20輸出nFRE8GPA8輸出ADDR2319GPA19輸出nFWE7GPA7輸出ADDR2218GPA18輸出ALE6GPA6輸出ADDR2117GPA17輸出CLE5GPA5輸出ADDR2016GPA16輸出nGCS54GPA4輸出ADDR1915GPA15輸出nGCS43GPA3輸出ADDR1814GPA14輸出nGCS32GPA2輸出ADDR1713GPA13輸出nGCS21GPA1輸出ADDR1612GPA12輸出nGCS10GPA0輸出ADDR011GPA11輸出ADDR26GPBDAT---為準(zhǔn)備輸出或輸入的數(shù)據(jù) 其值為11位[10:0]GPBUP---端口B上拉寄存器,位[10:0]有意義。

0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無(wú)上拉功能

注意:

當(dāng)B口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒(méi)有意義。2、端口B寄存器及引腳配置

RegisterAddressR/WDescriptionResetValueGPBCON0x56000010R/W端口B引腳配置寄存器0x0GPBDAT0x56000014R/W端口B數(shù)據(jù)寄存器-GPBUP0x56000018R/W端口B上拉寄存器0x0RESERVED0x5600001C-端口B保留寄存器-端口B引腳配置寄存器

位號(hào)位名位值:0001101121,20GPB10輸入輸出nXDREQ0Reserved19,18GPB9輸入輸出nXDACK0Reserved17,16GPB8輸入輸出nXDREQ1Reserved15,14GPB7輸入輸出nXDACK1Reserved13,12GPB6輸入輸出nXBACKReserved11,10GPB5輸入輸出nXBREQReserved9,8GPB4輸入輸出TCLK0Reserved7,6GPB3輸入輸出TOUT3Reserved5,4GPB2輸入輸出TOUT2Reserved3,2GPB1輸入輸出TOUT1Reserved1,0GPB0輸入輸出TOUT0ReservedGPCDAT---為準(zhǔn)備輸出或輸入的數(shù)據(jù) 其值為16位[15:0]GPCUP---端口C上拉寄存器,位[15:0]有意義。

0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無(wú)上拉功能

注意:

當(dāng)C口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒(méi)有意義。3、端口C寄存器及引腳配置

RegisterAddressR/WDescriptionResetValueGPCCON0x56000020R/W端口C引腳配置寄存器0x0GPCDAT0x56000024R/W端口C數(shù)據(jù)寄存器-GPCUP0x56000028R/W端口C上拉寄存器0x0RESERVED0x5600002C-端口C保留寄存器-端口C引腳配置寄存器

位號(hào)位名位值位號(hào)位名位值000110110001101131,30GPC15輸入輸出VD7保留15,14GPC7輸入輸出LCDVF2保留29,28GPC14輸入輸出VD6保留13,12GPC6輸入輸出LCDVF1保留27,26GPC13輸入輸出VD5保留11,10GPC5輸入輸出LCDVF0保留25,24GPC12輸入輸出VD4保留9,8GPC4輸入輸出VM保留23,22GPC11輸入輸出VD3保留7,6GPC3輸入輸出VFRAME保留21,20GPC10輸入輸出VD2保留5,4GPC2輸入輸出VLINE保留19,18GPC9輸入輸出VD1保留3,2GPC1輸入輸出VCLK保留17,16GPC8輸入輸出VD0保留1,0GPC0輸入輸出VEND保留GPDDAT---為準(zhǔn)備輸出或輸入的數(shù)據(jù) 其值為16位[15:0]GPDUP---端口D上拉寄存器,位[15:0]有意義。

0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無(wú)上拉功能 初始化時(shí),[15:12]無(wú)上拉功能,而[11:0]有上拉

注意:

當(dāng)D口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒(méi)有意義。4、端口D寄存器及引腳配置

RegisterAddressR/WDescriptionResetValueGPDCON0x56000030R/W端口D引腳配置寄存器0x0GPDDAT0x56000034R/W端口D數(shù)據(jù)寄存器-GPDUP0x56000038R/W端口D上拉寄存器0xF000RESERVED0x5600003C-端口D保留寄存器-端口D引腳配置寄存器位號(hào)位名位值位號(hào)位名位值000110110001101131,30GPD15輸入輸出VD23nSS015,14GPD7輸入輸出VD15保留29,28GPD14輸入輸出VD22nSS113,12GPD6輸入輸出VD14保留27,26GPD13輸入輸出VD21保留11,10GPD5輸入輸出VD13保留25,24GPD12輸入輸出VD20保留9,8GPD4輸入輸出VD12保留23,22GPD11輸入輸出VD19保留7,6GPD3輸入輸出VD11保留21,20GPD10輸入輸出VD18保留5,4GPD2輸入輸出VD10保留19,18GPD9輸入輸出VD17保留3,2GPD1輸入輸出VD9保留17,16GPD8輸入輸出VD16保留1,0GPD0輸入輸出VD8保留GPEDAT---為準(zhǔn)備輸出或輸入的數(shù)據(jù) 其值為16位[15:0]GPEUP---端口E上拉寄存器,位[15:0]有意義。

0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無(wú)上拉功能 初始化時(shí),各個(gè)引腳都有上拉功能。

注意:

當(dāng)E口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒(méi)有意義。5、端口E寄存器及引腳配置

RegisterAddressR/WDescriptionResetValueGPECON0x56000040R/W端口E引腳配置寄存器0x0GPEDAT0x56000044R/W端口E數(shù)據(jù)寄存器-GPEUP0x56000048R/W端口E上拉寄存器0x0RESERVED0x5600004C-端口E保留寄存器-端口E引腳配置寄存器位號(hào)位名位值位號(hào)位名位值000110110001101131,30GPE15輸入輸出IICSDA保留15,14GPE7輸入輸出SDDAT0保留29,28GPE14輸入輸出IICSCL保留13,12GPE6輸入輸出SDCMD保留27,26GPE13輸入輸出SPICLK0保留11,10GPE5輸入輸出SDCLK保留25,24GPE12輸入輸出SPISI0保留9,8GPE4輸入輸出IISSDO保留23,22GPE11輸入輸出SPISO0保留7,6GPE3輸入輸出IISSDI保留21,20GPE10輸入輸出SDDAT3保留5,4GPE2輸入輸出CDCLK保留19,18GPE9輸入輸出SDDAT2保留3,2GPE1輸入輸出IISSCLK保留17,16GPE8輸入輸出SDDAT1保留1,0GPE0輸入輸出IISLRCK保留GPFDAT---為準(zhǔn)備輸出或輸入的數(shù)據(jù) 其值為8位[7:0]GPFUP---端口F上拉寄存器,位[7:0]有意義。

0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無(wú)上拉功能 初始化時(shí),各個(gè)引腳都有上拉功能。

注意:

當(dāng)F口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒(méi)有意義。6、端口F寄存器及引腳配置

RegisterAddressR/WDescriptionResetValueGPFCON0x56000050R/W端口F引腳配置寄存器0x0GPFDAT0x56000054R/W端口F數(shù)據(jù)寄存器-GPFUP0x56000058R/W端口F上拉寄存器0x0RESERVED0x5600005C-端口F保留寄存器-端口F引腳配置寄存器位號(hào)位名位值0001101115,14GPF7輸入輸出EINT7保留13,12GPF6輸入輸出EINT6保留11,10GPF5輸入輸出EINT5保留9,8GPF4輸入輸出EINT4保留7,6GPF3輸入輸出EINT3保留5,4GPF2輸入輸出EINT2保留3,2GPF1輸入輸出EINT1保留1,0GPF0輸入輸出EINT0保留GPGDAT---為準(zhǔn)備輸出或輸入的數(shù)據(jù) 其值為16位[15:0]GPGUP---端口G上拉寄存器,位[15:0]有意義。

0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無(wú)上拉功能 初始化時(shí),[15:11]引腳無(wú)上拉功能,其它引腳有。

注意:

當(dāng)G口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒(méi)有意義。7、端口G寄存器及引腳配置

RegisterAddressR/WDescriptionResetValueGPGCON0x56000060R/W端口G引腳配置寄存器0x0GPGDAT0x56000064R/W端口G數(shù)據(jù)寄存器-GPGUP0x56000068R/W端口G上拉寄存器0xF800RESERVED0x5600006C-端口G保留寄存器-端口G引腳配置寄存器位號(hào)位名位值位號(hào)位名位值000110110001101131,30GPG15輸入輸出EINT23nYPON15,14GPG7輸入輸出EINT15SPICLK129,28GPG14輸入輸出EINT22YMON13,12GPG6輸入輸出EINT14SPISI127,26GPG13輸入輸出EINT21nXPON11,10GPG5輸入輸出EINT13SPISO125,24GPG12輸入輸出EINT20XMON9,8GPG4輸入輸出EINT12LCD-PEN23,22GPG11輸入輸出EINT19TCLK17,6GPG3輸入輸出EINT11nSS121,20GPG10輸入輸出EINT18保留5,4GPG2輸入輸出EINT10nSS019,18GPG9輸入輸出EINT17保留3,2GPG1輸入輸出EINT9保留17,16GPG8輸入輸出EINT16保留1,0GPG0輸入輸出EINT8保留LCD-PEN:POWER_ENABLEnSS0:SPI0_SELECTGPHDAT---為準(zhǔn)備輸出或輸入的數(shù)據(jù) 其值為11位[10:0]GPHUP---端口H上拉寄存器,位[10:0]有意義。

0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無(wú)上拉功能

注意:

當(dāng)H口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒(méi)有意義。8、端口H寄存器及引腳配置

RegisterAddressR/WDescriptionResetValueGPHCON0x56000070R/W端口H引腳配置寄存器0x0GPHDAT0x56000074R/W端口H數(shù)據(jù)寄存器-GPHUP0x56000078R/W端口H上拉寄存器0x0RESERVED0x5600007C-端口H保留寄存器-端口H引腳配置寄存器

位號(hào)位名位值:0001101121,20GPH10輸入輸出CLKOUT1Reserved19,18GPH9輸入輸出CLKOUT0Reserved17,16GPH8輸入輸出UCLKReserved15,14GPH7輸入輸出RXD2nCTS113,12GPH6輸入輸出TXD2nRTS111,10GPH5輸入輸出RXD1Reserved9,8GPH4輸入輸出TXD1Reserved7,6GPH3輸入輸出RXD0Reserved5,4GPH2輸入輸出TXD0Reserved3,2GPH1輸入輸出nRTS0Reserved1,0GPH0輸入輸出nCTS0ReservedUCLK為USB的GPIO應(yīng)用舉例下圖是基于S3C2410的芯片設(shè)計(jì)的一個(gè)電路,根據(jù)下圖,回答問(wèn)題:

1、讀下面的電路圖,說(shuō)明該電路完成的功能是什么?并簡(jiǎn)要說(shuō)明其工作原理。1)該電路完成的功能是通過(guò)S3C2410的GPB7-10的4個(gè)端口控制的4個(gè)LED的點(diǎn)亮和熄滅。

2)工作原理:由電路原理圖知,4個(gè)發(fā)光二極管LED的正極接電源的正極。當(dāng)GPB7-10端口的某一位輸出為0時(shí),對(duì)應(yīng)的該發(fā)光二極管LED被點(diǎn)亮,當(dāng)GPB7-10端口的某一位輸出為1時(shí),對(duì)應(yīng)的該發(fā)光二極管LED熄滅。2、根據(jù)下面的s3c2410的數(shù)據(jù)手冊(cè)與上面的電路,回答下列問(wèn)題:答:1):(1)GPBCON寄存器的作用是配置B口的功能屬性,如輸入輸出屬性。(2)根據(jù)上面電路實(shí)現(xiàn)的功能,在此實(shí)驗(yàn)中GPB7-10端口定義為輸出屬性。(3)用到了GPBCON寄存器的14-21位,GPB7-10端口對(duì)應(yīng)的位的值為bit[15:14]=01,bit[17:16]=01,bit[19:18]=01,bit[21:20]=01,其余為為0,可以求出GPBCON寄存器的配置數(shù)據(jù)為0x154000。1)說(shuō)明GPBCON寄存器的作用?根據(jù)上面電路實(shí)現(xiàn)的功能,指出用到了該寄存器的那些位,并設(shè)置該位的值,最后求出GPBCON寄存器的配置數(shù)據(jù)?

2)說(shuō)明GPBUP寄存器的作用?根據(jù)上面電路實(shí)現(xiàn)的功能,禁止GPB端口的上拉電阻,指出用到了該寄存器的那些位,并設(shè)置該位的值,最后求出GPBUP寄存器的配置數(shù)據(jù)?答:(1)GPBUP寄存器的作用是為提供或禁止上拉電阻。(2)根據(jù)上面電路實(shí)現(xiàn)的功能,禁止GPB端口的上拉電阻,用到了該寄存器的7-10位,對(duì)應(yīng)的位的值為1,可以求出GPBUP寄存器的配置數(shù)據(jù)為0xfffff(說(shuō)明:該值有多個(gè),只要保證7-10對(duì)應(yīng)的位設(shè)置正確就行)。3)說(shuō)明GPBDAT寄存器的作用?根據(jù)上面電路實(shí)現(xiàn)的功能,使LED1亮、LED2、LED3、LED4滅,指出用到了該寄存器的那些位,并設(shè)置該位的值,最后求出GPBDAT寄存器的配置數(shù)據(jù)?答:(1)GPBDAT寄存器的作用是設(shè)置端口的數(shù)據(jù)。(2)根據(jù)上面電路實(shí)現(xiàn)的功能,使LED1亮、LED2、LED3、LED4滅,用到了該寄存器的7-10位,對(duì)應(yīng)的相關(guān)位的值為:第7為0,第8-10位為1,可以求出GPBDAT寄存器的配置數(shù)據(jù)為0xff7f(說(shuō)明:該值有多個(gè),只要保證7-10對(duì)應(yīng)的位設(shè)置正確就行)。9、端口其它控制寄存器

RegisterAddressR/WDescriptionResetValueMISCCR0x56000080R/W混合控制寄存器0x10330DCLKCON0x56000084R/WD時(shí)鐘控制寄存器0x0nEN_SCKE---SCLK使能位。在電源關(guān)閉模式下對(duì)SDRAM做保護(hù)

0:正常狀態(tài) 1:低電平nEN_SCLKx---SCLKx使能位。在電源關(guān)閉模式下對(duì)SDRAM做保護(hù)

0:SCLKx=SCLK 1:低電平nRSTCON---對(duì)nRSTOUT軟件復(fù)位控制位

0:使nRSTOUT為低,0;1:使nRSTOUT為高,1151413121110987保留USBSUSPND1

USBSUSPND0

保留CLKSEL1

保留(1)MISCCR---混合控制寄存器31……2019181716保留(為0)nEN_SCKE

nEN_SCLK1

nEN_SCLK0

nRSTCON

6543210CLKSEL0

USBPAD

MEM_HZ_CONSPUCR_L

SPUCR_H

USBSUSPND1---USB端口1模式

0:正常 1:浮空USBSUSPND0---USB端口0模式

0:正常 1:浮空CLKSEL1---CLKOUT1引腳輸出信號(hào)源選擇

000:MPLLCLK 001:UPLLCLK 010:FCLK 011:HCLK 100:PCLK 101:DCLK1 11x:保留CLKSEL0---CLKOUT0引腳輸出信號(hào)源選擇

000:MPLLCLK 001:UPLLCLK 010:FCLK 011:HCLK 100:PCLK 101:DCLK0 11x:保留151413121110987保留USBSUSPND1

USBSUSPND0

保留CLKSEL1

保留USBPAD---與USB連接選擇

0:與USB設(shè)備連接 1:與USB主機(jī)連接MEM_HZ_CON---MEM高阻控制位

0:Hi-Z 1:前一狀態(tài)SPUCR_L---數(shù)據(jù)口低16位[15:0]上拉控制位

0:上拉 1:無(wú)上拉SPUCR_H---數(shù)據(jù)口高16位[31:16]上拉控制位

0:上拉 1:無(wú)上拉6543210CLKSEL0

USBPAD

MEM_HZ_CONSPUCR_L

SPUCR_H

15…1211109876543210保留DCLK0CMPDCLK0DIV保留DCLK0SelCKDCLK0EN(2)DCLKCON---D時(shí)鐘控制寄存器31…28272625242322212019181716保留DCLK1CMP

DCLK1DIV

保留

DCLK1SEL

DCLK1ENDCLK1(0)CMP---DCLK1(0)低電平時(shí)間所占的比例數(shù)。 設(shè)該位值為m,m<DCLK1(0)DIV。 則低、高電平持續(xù)時(shí)間的源周期數(shù)分別為:

m+1、DCLK1(0)DIV-mDCLK1(0)DIV---DCLK1(0)分頻值

DCLK1(0)frequency =sourceclock/(DCLK1(0)DIV+1)15…1211109876543210保留DCLK0CMPDCLK0DIV保留DCLK0SelCKDCLK0EN(2)DCLKCON---D時(shí)鐘控制寄存器(續(xù))31…28272625242322212019181716保留DCLK1CMP

DCLK1DIV

保留

DCLK1SEL

DCLK1ENDCLK1(0)SelCK---DCLK1(0)sourceclock選擇

0:源時(shí)鐘選擇PCLK 1:源時(shí)鐘選擇UCLK(USB)DCLK1(0)EN---DCLK1(0)Enable 0:禁止

1:允許

主要設(shè)置各個(gè)外中斷源的觸發(fā)方式、濾波10、外中斷控制寄存器

RegisterAddressR/WDescriptionResetValueEXTINT00x56000088R/W外中斷觸發(fā)方式寄存器00x0EXTINT10x5600008CR/W外中斷觸發(fā)方式寄存器10x0EXTINT20x56000090R/W外中斷觸發(fā)方式寄存器20x0EINT0~7---中斷請(qǐng)求信號(hào)觸發(fā)方式選擇

000:低電平觸發(fā) 001:高電平觸發(fā)

01x:下降沿觸發(fā) 10x:上升沿觸發(fā)

11x:雙邊沿觸發(fā)第3、7、11、15、19、23、27、31位---保留1514131211109876543210XEINT3XEINT2XEINT1XEINT0(1)EXTINT0---外中斷觸發(fā)方式控制寄存器031302928272625242322212019181716XEINT7XEINT6XEINT5XEINT4EINT8~15---中斷請(qǐng)求信號(hào)觸發(fā)方式選擇

000:低電平觸發(fā) 001:高電平觸發(fā)

01x:下降沿觸發(fā) 10x:上升沿觸發(fā)

11x:雙邊沿觸發(fā)第3、7、11、15、19、23、27、31位---保留1514131211109876543210XEINT11XEINT10XEINT9XEINT8(2)EXTINT1---外中斷觸發(fā)方式控制寄存器131302928272625242322212019181716XEINT15XEINT14XEINT13XEINT12EINT16~23---外中斷請(qǐng)求信號(hào)觸發(fā)方式選擇

000:低電平觸發(fā) 001:高電平觸發(fā)

01x:下降沿觸發(fā) 10x:上升沿觸發(fā)

11x:雙邊沿觸發(fā)第3、7、11、15、19、23、27、31位---為FILTEN各引腳濾波控制位

0:禁止濾波 1:使能濾波1514131211109876543210F19EINT19F18EINT18F17EINT17F16EINT16(3)EXTINT2---外中斷控制寄存器231302928272625242322212019181716F23EINT23F22EINT22F21EINT21F20EINT20

主要設(shè)置各個(gè)外中斷源的濾波器設(shè)置11、外中斷濾波控制寄存器

RegisterAddressR/WDescriptionResetValueEINTFLT00x56000094R/W保留-EINTFLT10x56000098R/W保留-EINTFLT20x5600009CR/W外中斷濾波控制寄存器20x0EINTFLT30x560000A0R/W外中斷濾波控制寄存器30x0FLTCLK16~19---外中斷16~19濾波器時(shí)鐘選擇

0:PCLK 1:外部/振蕩時(shí)鐘(由OM引腳選擇)EINTFLT16~19---外中斷16~19濾波器寬度(頻帶寬度)

1514……876……0FLTCLK17EINTFLT17FLTCLK16EINTFLT16(1)EINTFLT2---外中斷濾波控制寄存器23130……24232216FLTCLK19EINTFLT19FLTCLK18EINTFLT18FLTCLK20~23---外中斷20~23濾波器時(shí)鐘選擇

0:PCLK 1:外部/振蕩時(shí)鐘(由OM引腳選擇)EINTFLT20~23---外中斷20~23濾波器寬度(頻帶寬度)

1514……876……0FLTCLK21EINTFLT21FLTCLK20EINTFLT20(2)EINTFLT3---外中斷濾波控制寄存器33130……24232216FLTCLK23EINTFLT23FLTCLK22EINTFLT2212、外中斷屏蔽、標(biāo)志寄存器

RegisterAddressR/WDescriptionResetValueEINTMAK0x560000A4R/W外中斷屏蔽寄存器0x00FFFFF0EINTPEND0x560000A8R/W外中斷標(biāo)志寄存器0x0外中斷屏蔽寄存器EINTMAK位號(hào)含義位號(hào)含義位號(hào)含義23EINT2315EINT157EINT722EINT2214EINT146EINT621EINT2113EINT135EINT520EINT2012EINT124EINT419EINT1911EINT113保留18EINT1810EINT102保留17EINT179EINT91保留16EINT168EINT80保留各位:

0:允許中斷 1:禁止中斷注意:EINT0---EINT3不能在此被屏蔽,在SRCMAK中屏蔽。外中斷標(biāo)志寄存器EINTPEND位號(hào)含義位號(hào)含義位號(hào)含義23EINT2315EINT157EINT722EINT2214EINT146EINT621EINT2113EINT135EINT520EINT2012EINT124EINT419EINT1911EINT113保留18EINT1810EINT102保留17EINT179EINT91保留16EINT168EINT80保留各位:

0:無(wú)中斷請(qǐng)求 1:有中斷請(qǐng)求

注意:對(duì)某位寫(xiě)1,則清除相應(yīng)標(biāo)志,即清為0.GSTATUS3、4: 復(fù)位時(shí)被清0,其它情況下其數(shù)據(jù)不變。 用戶(hù)可以用于保存數(shù)據(jù)。13、外中斷狀態(tài)寄存器

RegisterAddressR/WDescriptionResetValueGSTATUS00x560000ACR外部引腳狀態(tài)寄存器不確定GSTATUS10x560000B0R芯片ID(標(biāo)識(shí))寄存器0x32410000GSTATUS20x560000B4R/W復(fù)位狀態(tài)寄存器0x1GSTATUS30x560000B8R/W信息保存寄存器0x0GSTATUS40x560000C0R/W信息保存寄存器0x0nWAIT---引腳nWAIT狀態(tài)nCON---引腳nCON狀態(tài)RnB---引腳R/nB狀態(tài)nBATT_FLT---引腳nBATT_FLT狀態(tài)

注意:各位的數(shù)值0、1,隨著對(duì)應(yīng)引腳變化。31……43210保留nWAITnCONRnBnBATT_FLT(1)GSTATUS0---外部引腳狀態(tài)寄存器WDTRST---上電復(fù)位控制狀態(tài)

1:出現(xiàn)了上電復(fù)位 對(duì)該位寫(xiě),則將該位清0OFFRST---掉電模式復(fù)位狀態(tài)。

1:系統(tǒng)出現(xiàn)了從掉電模式喚醒復(fù)位 對(duì)該位寫(xiě),則將該位清0PWRST---看門(mén)狗復(fù)位狀態(tài)

1:系統(tǒng)出現(xiàn)了看門(mén)狗定時(shí)器復(fù)位 對(duì)該位寫(xiě),則將該位清031……3210保留WDTRSTOFFRSTPWRST(2)GSTATUS2---復(fù)位狀態(tài)寄存器中斷控制器INTERRUPTPRIORITYGENERATINGBLOCKINTERRUPTCONTROLLERSPECIALREGISTERSSOURCEPENDING(SRCPND)REGISTERINTERRUPTMODE(INTMOD)REGISTERINTERRUPTMASK(INTMSK)REGISTERINTERRUPTPENDING(INTPND)REGISTERINTERRUPTOFFSET(INTOFFSET)REGISTERSUBSOURCEPENDING(SUBSRCPND)REGISTERINTERRUPTSUBMASK(INTSUBMSK)REGISTER外中斷舉例staticvoid__irqEint0Int(void){ClearPending(BIT_EINT0);Uart_Printf("EINT0interruptisoccurred.\n");}staticvoid__irqEint1Int(void){ClearPending(BIT_EINT1);Uart_Printf("EINT1interruptisoccurred.\n");}#defineClearPending(bit){\rSRCPND=bit;\rINTPND=bit;\ rINTPND;\}

voidTest_Eint(void){inti;intextintMode; //選擇外中斷觸發(fā)方式變量

Uart_Printf("[ExternalInterruptTest]\n");Uart_Printf("1.L-LEVEL2.H-LEVEL3.F-EDGE4.R-EDGE5.B-EDGE\n");Uart_Printf("Selecttheexternalinterrupttype.\n");extintMode=Uart_Getch(); //extintMode='3';rGPFCON=(rGPFCON&0xfffa)|(1<<3)|(1<<1); //設(shè)置引腳配置,F(xiàn)0、F1配置為EINT0/1

switch(extintMode){case'1': rEXTINT0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論