打印
[ZLG-ARM]

SMARTARM2200 UART问题

[复制链接]
1604|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lcyong|  楼主 | 2007-1-16 23:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用SMARTARM2200开发板做UART0实验,很奇怪是,发送BUF中数据为0 都没有发出去,不为0均发出去了.一开始用带UCOS操作系统的环境来做,出现了上述现象,后来,干脆不用操作系统,重新写了简单的代码,现象也一样.请高手看看是何原因? 下面是相关的代码.

void  UART0_Init(void)
{  
    uint16 Fdiv;

    U0LCR = 0x80;            // DLAB = 1,可设置波特率
    Fdiv = (Fpclk / 16) / UART_BPS;        // 设置波特率
    U0DLM = Fdiv / 256;                           U0DLL = Fdiv % 256;                           U0FCR = 0x00;
    U0LCR = 0x03;
    U0IER = 0x00;    
}

void  UART0_SendByte(uint8 data)
{  
    while( (U0LSR&0x40)==0 );            // 等待数据发送完毕
    U0THR = data;                    // 发送数据
}

int  main(void)
{  
    uint8 i;
    uint8 Buf[64];
    
    PINSEL0 = 0x00000005;            // 设置I/O连接到UART0
    UART0_Init();

    for(i=0;i<16;i++)
    {
       Buf=i;
    }    
    
    Buf[16]=0x00;
    Buf[17]=0x00;
    Buf[18]=0x0a;    
    Buf[19]=0x0d;        
   
    while(1)    
    {  
       
       for(i=0;i<20;i++)
          UART0_SendByte(Buf);
       
        DelayNS(1000);
    }

    return(0);
}

理论上从串口调试软件串口应该收到(16进制方式):
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00 00 0A 0D
但实际数据接收为:
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0A 0D

其中为0的数据都给丢掉了!!!

相关帖子

沙发
zlgarm| | 2007-1-17 10:34 | 只看该作者

re:

如果使用过ISP软件,请重新启动PC,再用串口调试软件接收数据。

使用特权

评论回复
板凳
lcyong|  楼主 | 2007-1-17 10:48 | 只看该作者

谢谢,问题已解决

昨天因这个问题郁闷了一天,通过ZLG工程师的指教,知道是ISP惹的祸,它修改了PC机串口的属性,导致数据接收异常.重启机或使用好的串口调试工具(丁丁串口调试工具)就没有这个现象了.

使用特权

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

本版积分规则

9

主题

32

帖子

0

粉丝