<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > S3C2440的UART詳解

S3C2440的UART詳解

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏

void uart0_init(void)
{
GPHCON |= 0xaa; // GPH0,GPH1,GPH2,GPH3分別nCTS0,nRTS0,TXD0,RXD0
GPHUP = 0x7ff; //內部上拉被禁止

UFCON0 = 0x00; // 不使用FIFO
UMCON0 = 0x00; // 不使用流控


ULCON0 = 0x03; // 8N1(8個(gè)數據位,無(wú)校驗,1個(gè)停止位)
UCON0 = 0x245;

// 查詢(xún)方式,UART時(shí)鐘源為PCLK,中斷請求方式為T(mén)x-電平,Rx-脈沖
rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 ); //設置波特率
}

接下來(lái)幾個(gè)是進(jìn)行數據的發(fā)送和接收的函數

//======此函數的作用是向UART發(fā)送一個(gè)字符,不用FIFO,直接用UART發(fā)送

void Uart_SendByte(char data)

{

if(data==)

{

while(!(rUTRSTAT0 & 0x2));

取出rUTRSTAT0(UART0發(fā)送/接收寄存器)寄存器中的第2位,含義為T(mén)ransmit buffer是否為空,為1時(shí)表示空。在發(fā)送緩沖器為空時(shí),再發(fā)送

// Delay(1); //because the slow response of hyper_terminal

WrUTXH0(); //將數據寫(xiě)入到UART0發(fā)送緩沖器中

}

while(!(rUTRSTAT0 & 0x2)); //Wait until THR is empty.

// Delay(1);

WrUTXH0(data);

}

//========發(fā)送字符串的函數

void Uart_SendString(char *pt)

{

while(*pt)

Uart_SendByte(*pt++);

}

//C語(yǔ)言的可變參數,為了達到printf的功能

//例如:Uart_Printf(“my name is %s”a[10]);就相當于Uart_SendString(“my name is XX”);XX是a[10]的內容

void Uart_Printf(char *fmt,...)

{

va_list ap;

char string[256];

va_start(ap,fmt);

vsprintf(string,fmt,ap);

Uart_SendString(string);

va_end(ap);

}

//==等待,直到UART的發(fā)送器為空,就是發(fā)送完畢

void Uart0_TxEmpty()

{

while(!(rUTRSTAT0 & 0x4)); //Wait until Tx shifter is empty.

}

//===從終端上獲取敲入的字符,返回值為char類(lèi)型。RdURXH0有數據時(shí),返回URXH的數據。當URXH沒(méi)有數據時(shí),總是等待,直到有數據。

char Uart_Getch(void)

{

while(!(rUTRSTAT0 & 0x1)); //接收緩沖器接收到有效數據

return RdURXH0(); //從UART0接收緩沖器(URXH0)接收數據

}

//===Uart_GetKey 這個(gè)與Uart_Getch 不同的是,當URXH沒(méi)有數據時(shí)返回0。有數據時(shí),返回數據,這個(gè)函數可以用來(lái)查看當前URXH中的值。

char Uart_GetKey(void)

{

if(rUTRSTAT0 & 0x1) //Receive data ready

return RdURXH0();

else

return 0;

}

//==這個(gè)函數用于從終端得到一個(gè)字符串,并儲存到string中

void Uart_GetString(char *string)

{

char *string2 = string;

char c;

while((c = Uart_Getch())!=)//’’是回車(chē)鍵

{

if(c==)//’’是backspace按鍵

{

if( (int)string2 < (int)string )

{

Uart_Printf(" ");//因為backspace,所以刪除最后一個(gè)顯示的字符

string--;

}

}

else

{

*string++ = c; //不是回車(chē)和退格鍵,則儲存到string中

Uart_SendByte(c); //每輸入一個(gè)字符,都將它輸出到終端中

}

}

*string=国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放

<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>