打印

请教高手:自己编的串口程序,终端收到乱码

[复制链接]
2147|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yangzx|  楼主 | 2008-6-4 12:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的是S3C2410,终端上出来的是乱码。串口应该能直接发字符,不需要什么转换吧!波特率应该不会有问题吧,我是直接套公式的!
串口通信方式为:波特率为115200,无奇偶校验,1位停止位,8位数据位

程序代码如下:
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <ctype.h>
#include "2410addr.h"

#define pclk        12000000

void Uart_Init( int baud)
{  int i;      
  
     // I/O口设置 (GPH5,GPH4) UART1的(RXD1,TXD1)
     rGPHUP =0x00;// The pull up function is enable
     rGPHCON = (rGPHCON & (~0x00000F00)) | (0x00000A00);
     //GPH5为RXD1、GPH4为TXD1
  
      rUFCON1 = 0x0;//UART channel 1 FIFO control register, FIFO disable
      rUMCON1 = 0x0;//UART chaneel 1 MODEM control register, AFC disable
  
      rULCON1 = 0x03;// 禁止IRDA,无奇偶校验,1位停止位,8位数据位
      rUCON1  = 0x245;// 使用PCLK来生成波特率,发送中断为电平触发模  式,接收中断为边沿触发模式,
// 禁止接收超时中断,使能接收错误中断,正常工作模式,中断或查询方式
(非DMA)
                          
    //串口波特率设置
   rUBRDIV1=( (int)(pclk/baud/16.0) -1 );// 未用PLL,则pclk=12M
   for(i=0;i<100;i++);
}


//向串口发送字节数据,并等待发送完毕。输入为data是要发送的数据
// 对于'\n'字符,发送时会加入'\r'字符
void UARTPutch( int data)
{  int i;
   
  
     if(data=='\n')
      {
        while(!(rUTRSTAT1 & 0x2));// 等待发送器为空
        for(i=0;i<10;i++); 
        //because the slow response of hyper_terminal 
         rUTXH1 = '\r';
      }
     while(!(rUTRSTAT1 & 0x2)); //Wait until THR Buffer is empty
     for(i=0;i<10;i++);
     rUTXH1=data;  
}
 

//向串口发送一字符串,*str为要发送的字符串的指针
void UARTPuts (char const *str) 
{
    while(*str !='\0')
     UARTPutch(*str++);
}

int Main(void) 
{  
   int i;
   Uart_Init(115200);  // 初始化UART1
   while(1)


       for(i=0; i<10; i++)
       {
         UARTPuts("Hello World!\n");
       }
      
}
return(0);
}

相关帖子

沙发
aibxyz| | 2008-6-4 14:06 | 只看该作者

确定你的pclk是12M?

使用特权

评论回复
板凳
yangzx|  楼主 | 2008-6-5 00:07 | 只看该作者

回复主题:请教高手:自己编的串口程序,终端收到乱码

我大概知道原因了,从模板启动后可能设置了默认系统FCLK为200M,那如果是按1:2:4则PCLK应是50M,不发乱码才怪呢!

使用特权

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

本版积分规则

9

主题

13

帖子

0

粉丝