打印

菜鸟求教一个UART的问题

[复制链接]
1667|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
鸿影2010|  楼主 | 2012-10-24 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在做与pc的串口通信的时候(我用的是LPC21xx),在超级终端上显示的全是乱码,调了好几天也没能解决。下面的实验代码,是我根据一个正确的实验代码简化的,有没有高手帮我看一下,哪里出错了?先行谢过
main.cint main(void)
{
        UINT32 i;
        Uart_Init(115200);
        while(1)
        {
                printf("my name is liugang ,yes you are right %d\n");

                for(i=0;i<0xfffff;i++);
        }
}

uart.c
UINT32 Uart_Init(UINT32 baud)
{
        UINT32 bak;
        PINSEL0=0x00050000;
        if((baud==0)||(baud>115200)) return 0;

        U1LCR=0x83;
        bak=(Fpclk>>4)/baud;
        U1DLM=bak>>8;
        U1DLL=bak&0xff;
        U1LCR=0x03;

        return 1;
}

int SendChar(int ch)
{
        if(ch=='\n')
        {
                while(!(U1LSR & 0x20));
                U1THR=0x0d;
        }
        while(!(U1LSR & 0x20));
        return(U1THR=ch);
}

相关帖子

沙发
鸿影2010|  楼主 | 2012-10-24 21:47 | 只看该作者
补充一下,我用的是串口调试助手

使用特权

评论回复
板凳
阿南| | 2012-10-24 22:24 | 只看该作者
您串口调试助手是如何设置的?波特率设对了吗?
如果有收到数据,只是乱码,很有可能是波特率不对引起的。

使用特权

评论回复
地板
Cloud_Field| | 2012-10-24 22:53 | 只看该作者
少年,建议你不要着急调用printf("my name is liugang ,yes you are right %d\n");这样的语句,先用int SendChar(int ch)这个函数发一个固定的数据,如果能正常接收那就说明你printf这个函数有问题,不然的话就是串口配置的问题。

使用特权

评论回复
5
鸿影2010|  楼主 | 2012-10-25 15:14 | 只看该作者
我特别留意的一下,波特率的设置方面应该没问题,应该某部分代码搞错了 3# 阿南

使用特权

评论回复
6
阿南| | 2012-10-25 16:56 | 只看该作者
如果有示波器,就扫一下看看波特率是多少。

使用特权

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

本版积分规则

0

主题

6

帖子

0

粉丝