打印

为什么最后一个字节发不出来?

[复制链接]
919|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangfeng33|  楼主 | 2014-7-29 19:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下:
loop:

USART1->TDR= DataTxd[Txcnt++];
while(!((USART1->ISR)&(1<<7))){;}
if(Txcnt<((DataTxd[1]&0x0f)))   
goto loop ;
else
{
Txcnt = 0;
TxReady = 1; //send frame finish flag
while (USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);  //send finish judge
//delay_ms(20);
RXD_ENABLE();    //SCIRDEN LOW,RXD ENABLE
}
问题是:最后一个字节总是发不出来,加入适当延时后正常,在网上查了部分资料,说是信号传输需要一段时间,查询标志位只能代表数据被发送,电平信号还没有发送完就被置为发送模式。但我用战舰板上的又正常,请教朋友们这个问题怎么解决?我现在用的是延时。
沙发
mmuuss586| | 2014-7-30 08:36 | 只看该作者
你用开发板正常,是不是库不一样啊;

使用特权

评论回复
板凳
想做大牛的小马| | 2014-7-30 09:01 | 只看该作者
感觉像是配置问题。。。确认一下配置,起始位数据位校验是几位etc。。。

使用特权

评论回复
地板
zchong| | 2014-7-30 09:34 | 只看该作者
1、你用了485的控制脚;
2、你用了TXE标志,TXE是数据寄存器为空(根据1,你是发不出去的),这里应该用TC标志,TC是移位寄存器为空标志。

使用特权

评论回复
5
拿起书本| | 2014-7-30 09:36 | 只看该作者
是应该加入一定的延时.,或者查询TC标志位检查。

使用特权

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

本版积分规则

506

主题

2446

帖子

8

粉丝