STM32傳送串列埠資料丟失位元組的解決辦法

huameixiao發表於2024-03-20

傳送資料函式

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);
    USART3->SR;
    for(t = 0; t < len; t++)		//迴圈傳送資料
    {
        USART_SendData(USART3, buf[t]);
        while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
    } 
    GPIO_WriteBit(GPIOB,RS485AB_EN_PIN,0); 
}

相關文章