程序如下:
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
}
问题是:最后一个字节总是发不出来,加入适当延时后正常,在网上查了部分资料,说是信号传输需要一段时间,查询标志位只能代表数据被发送,电平信号还没有发送完就被置为发送模式。但我用战舰板上的又正常,请教朋友们这个问题怎么解决?我现在用的是延时。
|