STM8串口UART2_SendData8函数连续发送数据丢失
1、STM8用UART2_SendData8(uint8_t Data)函数发送数据时,数据会丢失,因为库函数没有判读是否发送完成;
2、寄存器修改如下:
void UART2_SendData8(uint8_t Data)
{
/* Transmit Data */
unsigned int max_delay =0;
UART2->DR = Data;
while(1)
{
if((UART2->SR &0X40) != 0)break;
max_delay++;
if(max_delay > 10000)break;
}
}
2、库函数修改如下:
for(cnt =0; cnt < sizeof(Tx_buff); cnt ++)
{
max_delay = 0;
UART2_SendData8(Tx_buff[cnt]);
while((UART2_GetFlagStatus(UART2_FLAG_TC) == 0)) //判断发送完成标志
{
max_delay ++;
if(max_delay > 10000)
{
break; //等待超时退出等待发送标志
}
}
}