Philps LPC2292的UART通讯奇怪问题!

[复制链接]
 楼主| shang21ic 发表于 2008-4-30 19:32 | 显示全部楼层 |阅读模式
int&nbsp;&nbsp;RS232SendByte(char&nbsp;data)<br />{<br />while&nbsp;(&nbsp;(&nbsp;U0LSR&nbsp;&&nbsp;0x40&nbsp;)==0&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//还有数据未发送完,等待<br />&nbsp;U0THR&nbsp;=&nbsp;data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;发送数据<br />&nbsp;return&nbsp;0;<br />}<br /><br />一旦改成:<br /><br />int&nbsp;&nbsp;RS232SendByte(char&nbsp;data)<br />{<br />if(&nbsp;(&nbsp;U0LSR&nbsp;&&nbsp;0x40&nbsp;)==0&nbsp;)&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;//还有数据未发送完,等待<br />&nbsp;U0THR&nbsp;=&nbsp;data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;发送数据<br />&nbsp;return&nbsp;0;<br />}<br />发送就不正常了,&nbsp;&nbsp;大伙帮我分析一下是啥问题咯,不胜感激。。。
dld2 发表于 2008-4-30 19:41 | 显示全部楼层

如果不想等待

要用发送中断。不是这么干的。
 楼主| shang21ic 发表于 2008-4-30 19:45 | 显示全部楼层

一定要这样么?

while&nbsp;(&nbsp;(&nbsp;U0LSR&nbsp;&&nbsp;0x40&nbsp;)==0&nbsp;)&nbsp;;&nbsp;<br />是不是只能在这里等待,不能做其他事情了?<br />51好象可以这样处理的。
dld2 发表于 2008-4-30 19:57 | 显示全部楼层

这两个函数的区别

前一个保证发送出一个字符。<br />后一个有可能发送出去,也可能没有。<br /><br />为什么发送不正常,还要看调用RS232SendByte的上下文代码。
huangbingg 发表于 2008-5-1 13:46 | 显示全部楼层

不明白

你还没发送出去,就&quot;return&nbsp;-1&quot;那不是就返回了,就不发了,明显不对的嘛
 楼主| shang21ic 发表于 2008-5-2 00:19 | 显示全部楼层

找到原因,谢谢各位.

原来是另外一个函数出问题了<br />if(RS232SendByte(data));&nbsp;&nbsp;&nbsp;&nbsp;//这个分号查了半天没发现,气晕了.<br />&nbsp;abc++;
fengyeu 发表于 2008-5-2 00:25 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

287

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

65

主题

287

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部