微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S3C2440的UART详解

S3C2440的UART详解

时间:11-26 来源:互联网 点击:

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

//======此函数的作用是向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();

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top