[ZLG-ARM] 串口收发数据时,0发送不出来,怎么回事啊 ?

[复制链接]
2465|2
 楼主| jstu023123 发表于 2007-9-20 13:35 | 显示全部楼层 |阅读模式
串口试验:用串口调试工具,先接收数据,后把接收的数据发送出来。发送0时,接收窗口没有0显示,通过软件调试时,确有0存入U0THR中的,不知为何啊?程序如下:<br /><br />/****************************************************************<br />*名称:&nbsp;&nbsp;COM_Puts(&nbsp;)<br />*功能:&nbsp;&nbsp;发送数据存入send_buf,并触发UART0发送中断<br />*入口参数:&nbsp;&nbsp;pBuffer&nbsp;&nbsp;发送数据首地址&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;发送数据字节长度<br />*出口参数:&nbsp;&nbsp;无<br />****************************************************************/<br /><br />void&nbsp;COM_Puts(UINT8&nbsp;*pBuffer,&nbsp;UINT32&nbsp;size)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;UINT32&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;size&gt0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgSendSize&nbsp;=&nbsp;min(SEND_BUFFER_SIZE,size)-1;&nbsp;&nbsp;//&nbsp;sgSendSize为存入到send_buf的数据个数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;SendFinished&nbsp;==&nbsp;FALSE&nbsp;);&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;等待上一次发送完毕<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendFinished&nbsp;=&nbsp;FALSE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0THR&nbsp;=&nbsp;*pBuffer++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;发送首个数据,触发发送中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltsgSendSize;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send_buf&nbsp;=&nbsp;*(pBuffer+i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0IER&nbsp;|=&nbsp;0x02;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;}<br /><br />中断子程序:<br />case&nbsp;0x02:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;发送中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt16;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;一次发送16个数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0THR&nbsp;=&nbsp;send_buf[sgSendCounter++];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(sgSendCounter&gtsgSendSize-1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(sgSendCounter&gtsgSendSize-1)&nbsp;&nbsp;//&nbsp;数据接收完成<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0IER&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;关闭发送使能<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendFinished&nbsp;=&nbsp;TRUE;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;置标志位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;<br />
jjk927 发表于 2007-9-21 19:28 | 显示全部楼层

RE:

我的板子也是这个问题!<br />请版主解释下!<br /><br />我发送其他的数据都可以,但是发送00就是不行!!<br /><br /><br />
zlgARM 发表于 2007-9-21 23:38 | 显示全部楼层

re

请参考另外一个相关主题帖子的回答。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

93

帖子

0

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