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;        //等待超时退出等待发送标志
            }
        }
    }

发布了41 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39758638/article/details/104855221