文档详情

UART串口通信程序.docx

发布:2017-05-24约1.8千字共5页下载文档
文本预览下载声明
 PAGE \* MERGEFORMAT 5 1、UART串口通信 void Delay(int tt) { U32 i; for(;tt0;tt--) { for(i=0;i10000;i++){} } } void Uart_SendByte(int data) { int whichUart=0; if(whichUart==0) { if(data==\n) { while(!(rUTRSTAT0 0x2)); Delay(1); //because the slow response of hyper_terminal WrUTXH0(\r); } while(!(rUTRSTAT0 0x2)); //Wait until THR is empty. Delay(1); WrUTXH0(data); } } void uart_init(int pclk,int baud) { int i; if(pclk == 0) pclk= PCLK; rUFCON0 = 0x0; rUCON0= 0x245; rUMCON0 = 0x0; rULCON0 = 0x3; rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 ); for(i=0;i100;i++); Delay(400); } char Uart_Getch(void) { while(!(rUTRSTAT0 0x1)); //Receive data ready return RdURXH0(); } void Uart_TxEmpty(int ch) { if(ch==0) { while(!(rUTRSTAT0 0x4)); } } void Uart_SendString(char *pt) { while(*pt) Uart_SendByte(*pt++); } 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); } int Main(int argc, char **argv) { // int data; char ch; U8 key; U32 mpll_val=0; mpll_val = (9212)|(14)|(1); ChangeMPllValue((mpll_val12)0xff, (mpll_val4)0x3f, mpll_val3); ChangeClockDivider(key, 12); MMU_DisableICache(); MMU_DisableDCache(); rGPBCON = 0x155555; rGPHCON = 0x00faaa; rGPHUP = 0x7ff; uart_init(0,115200); Uart_Printf(\nPlease enter char:); ch=Uart_Getch(); Uart_Printf(\n); Uart_SendByte(ch); while(1) { Uart_SendByte(ch); Uart_SendByte(,); ch++; Delay(100); } return 0; }
显示全部
相似文档