打印

Philps LPC2292的UART通讯奇怪问题!

[复制链接]
1768|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shang21ic|  楼主 | 2008-4-30 19:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int  RS232SendByte(char data)
{
while ( ( U0LSR & 0x40 )==0 ) ;     //还有数据未发送完,等待
 U0THR = data;                // 发送数据
 return 0;
}

一旦改成:

int  RS232SendByte(char data)
{
if( ( U0LSR & 0x40 )==0 ) return -1;    //还有数据未发送完,等待
 U0THR = data;            // 发送数据
 return 0;
}
发送就不正常了,  大伙帮我分析一下是啥问题咯,不胜感激。。。

相关帖子

沙发
dld2| | 2008-4-30 19:41 | 只看该作者

如果不想等待

要用发送中断。不是这么干的。

使用特权

评论回复
板凳
shang21ic|  楼主 | 2008-4-30 19:45 | 只看该作者

一定要这样么?

while ( ( U0LSR & 0x40 )==0 ) ; 
是不是只能在这里等待,不能做其他事情了?
51好象可以这样处理的。

使用特权

评论回复
地板
dld2| | 2008-4-30 19:57 | 只看该作者

这两个函数的区别

前一个保证发送出一个字符。
后一个有可能发送出去,也可能没有。

为什么发送不正常,还要看调用RS232SendByte的上下文代码。

使用特权

评论回复
5
huangbingg| | 2008-5-1 13:46 | 只看该作者

不明白

你还没发送出去,就"return -1"那不是就返回了,就不发了,明显不对的嘛

使用特权

评论回复
6
shang21ic|  楼主 | 2008-5-2 00:19 | 只看该作者

找到原因,谢谢各位.

原来是另外一个函数出问题了
if(RS232SendByte(data));    //这个分号查了半天没发现,气晕了.
 abc++;

使用特权

评论回复
7
fengyeu| | 2008-5-2 00:25 | 只看该作者

.

.

使用特权

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

本版积分规则

65

主题

287

帖子

1

粉丝