S3C2440的UART详解
接下来几个是进行数据的发送和接收的函数 //======此函数的作用是向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(); }
S3C2440UART详 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)