STM32F0 485通讯最后一个字节发不出来

2019-10-15 23:44发布

程序如下:
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
}
问题是:最后一个字节总是发不出来,加入适当延时后正常,在网上查了部分资料,说是信号传输需要一段时间,查询标志位只能代表数据被发送,电平信号还没有发送完就被置为发送模式。但我用战舰板上的又正常,请教原子哥  ,这个问题怎么解决?我现在用的是延时。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-10-16 02:40
 精彩回答 2  元偷偷看……
1968986846
2楼-- · 2019-10-16 04:06
回复【2楼】正点原子:
---------------------------------
嗯  好的  原子哥都这样说了    谢谢
styleno1
3楼-- · 2019-10-16 07:06
查询TC标志位
1968986846
4楼-- · 2019-10-16 07:58
回复【4楼】styleno1:
---------------------------------
真的不行
flyaab
5楼-- · 2019-10-16 08:55
回复【3楼】1968986846:
---------------------------------
大神,我最近也在搞stm32的modbus,能不能发一份dome,小弟不胜感激啊!917119019@qq.com
lbzs121
6楼-- · 2019-10-16 11:56
 精彩回答 2  元偷偷看……

一周热门 更多>