- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UART串口通信程序
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;
}
文档评论(0)