STM32发送串口数据丢失字节的解决办法

发送数据函数

void Usart3_Send_Array(u8 *buf, u8 len)
{
    u8 t;
    GPIO_WriteBit(GPIOB,RS485AB_EN_PIN,1);
    for(t = 0; t < len; t++)		//循环发送数据
    {
        while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
        USART_SendData(USART3, buf[t]);
        while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
    } 
    GPIO_WriteBit(GPIOB,RS485AB_EN_PIN,0); 
}

或者

void Usart3_Send_Array(u8 *buf, u8 len)
{
    u8 t;
    GPIO_WriteBit(GPIOB,RS485AB_EN_PIN,1);
    for(t = 0; t < len; t++)		//循环发送数据
    {
        USART3->SR;
        USART3->DR = buf[t] & 0xFFFF;       // 清TC
        while((USART3->SR & 1<< 6) == 0);   // 等TC
    } 
    GPIO_WriteBit(GPIOB,RS485AB_EN_PIN,0); 
}

posted @ 2024-03-20 13:41  huameixiao  阅读(154)  评论(0编辑  收藏  举报