打印

ARM9 s3c2410 串口发送程序乱码求助。。

[复制链接]
2170|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
只听风吟|  楼主 | 2011-2-24 12:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一个简单的测试用主函数:
int main()
{
int i=0;
Uart_Init(0,57600);
while(i<5)
{
  Uart_SendByte('A');
  i++;
}

return 0;
}
这是初始化串口0函数:
void Uart_Init(int pclk,int baud)
{
    int i;
   
    if(pclk == 0)
     pclk = PCLK;
/**
*
* 注意此处若不配置IO将会出错;
*
*
**/
#ifdef _DEBUG_UART0
//I/O pins configuration(GPH2,3)
rGPHUP |= (0x03<<2);
rGPHCON = (rGPHCON & (~0x000000F0)) | (0x000000A0);
rGPHCON |=  0xa0;
rGPHUP |= (0x03 << 2);

    rUFCON0 = 0x0;   //UART channel 0 FIFO control register, FIFO disable
    rUMCON0 = 0x0;   //UART chaneel 0 MODEM control register, AFC disable
   
//UART0
    rULCON0 = 0x3;   
    rUCON0  = 0x245; // Control register
    rUBRDIV0 = ( (int)(pclk/16./baud+0.5)-1 );    //Baud rate divisior register 0   
#endif
这是发送一个字节函数:
void Uart_SendByte(char str)
{
#ifdef _DEBUG_UART0
int i;
while(!(rUTRSTAT0 & 0x02));//to wait until the TX buffer REG is empty
    for(i=0;i<10;i++);
rUTXH0 = str;
//WrUTXH0(str);
#endif
}

利用回环模式仿真的时候能得到正确的数值,但发送到主机的串口是接收到的是乱码,比如发0x41收到的16进制数就是0C 80 FC 0C 80 FC ;调整串口调试助手的波特率就能得到不同的16进制数,我判断是波特率的问题,可是怎么才能知道波特率是否正确?我这个程序是不是哪有问题??求解,不胜感激。。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:知我者道我心忧,不知我者道我何求。。

0

主题

125

帖子

2

粉丝