新闻中心

EEPW首页>嵌入式系统>设计应用> S3C2440的UART详解

S3C2440的UART详解

作者: 时间:2016-11-26 来源:网络 收藏

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个数据位,无校验,1个停止位)
UCON0 = 0x245;

// 查询方式,UART时钟源为PCLK,中断请求方式为Tx-电平,Rx-脉冲
rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 ); //设置波特率
}

接下来几个是进行数据的发送和接收的函数

//======此函数的作用是向UART发送一个字符,不用FIFO,直接用UART发送

void Uart_SendByte(char data)

{

if(data==)

{

while(!(rUTRSTAT0 & 0x2));

取出rUTRSTAT0(UART0发送/接收寄存器)寄存器中的第2位,含义为Transmit buffer是否为空,为1时表示空。在发送缓冲器为空时,再发送

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

WrUTXH0(); //将数据写入到UART0发送缓冲器中

}

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

// Delay(1);

WrUTXH0(data);

}

//========发送字符串的函数

void Uart_SendString(char *pt)

{

while(*pt)

Uart_SendByte(*pt++);

}

//C语言的可变参数,为了达到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的发送器为空,就是发送完毕

void Uart0_TxEmpty()

{

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

}

//===从终端上获取敲入的字符,返回值为char类型。RdURXH0有数据时,返回URXH的数据。当URXH没有数据时,总是等待,直到有数据。

char Uart_Getch(void)

{

while(!(rUTRSTAT0 & 0x1)); //接收缓冲器接收到有效数据

return RdURXH0(); //从UART0接收缓冲器(URXH0)接收数据

}

//===Uart_GetKey 这个与Uart_Getch 不同的是,当URXH没有数据时返回0。有数据时,返回数据,这个函数可以用来查看当前URXH中的值。

char Uart_GetKey(void)

{

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

return RdURXH0();

else

return 0;

}

//==这个函数用于从终端得到一个字符串,并储存到string中

void Uart_GetString(char *string)

{

char *string2 = string;

char c;

while((c = Uart_Getch())!=)//’’是回车键

{

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

{

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

{

Uart_Printf(" ");//因为backspace,所以删除最后一个显示的字符

string--;

}

}

else

{

*string++ = c; //不是回车和退格键,则储存到string中

Uart_SendByte(c); //每输入一个字符,都将它输出到终端中

}

}

*string=;

Uart_SendByte();

}


上一页 1 2 下一页

关键词:S3C2440UART详

评论


技术专区

关闭