stm32串口发送丢失首字符解决方法

根据网上提供的解决方法有三个,实际测试有效的是1、3,手册描述是需要使用2,实际使用效果不太好

1、发送函数中检测标志USART_FLAG_TXE

2、初始化时清除标志USART_ClearFlag(UART4, USART_FLAG_TC);

3、初始化后随便发送一个字符

USART_FLAG_TXE和USART_FLAG_TC似乎需要配合使用效果更好

void usartSendData(USART_TypeDef* USARTx,uint8_t *dat,uint16_t length)
{
    while(length--)
    {
        while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET) ;
        USART_SendData(USARTx,*dat++);
        while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET) ;
    }
}

猜你喜欢

转载自www.cnblogs.com/gzbkey/p/11942290.html
今日推荐