串口通信转到LCD屏上遇到的问题

2019-07-20 10:59发布

新手,将串口接收的数据显示到LCD上,遇到这样一个问题:
当本次传输的数据长度大于上次时,一切正常;而当本次传输的数据小于上次时,屏幕上显示出此次数据后,后面还加有上次传输的数据的后几位,但电脑串口助手显示正常。我已经用LCD填充显示区域了,这一块程序应该没有问题。为什么此时USART_RX_BUF里面的数据在显示屏上和上位机上显示不一样呢?
程序截取如下:
while(1)
    {
       if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                        printf(" 您发送的消息为: ");
                        HAL_UART_Transmit(&UART1_Handler,(uint8_t*)USART_RX_BUF,len,1000);        //发送接收到的数据
                        while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET);                //等待发送结束
                        printf(" ");//插入换行
                        LCD_Fill(1,140,470,200,WHITE);
                        LCD_ShowString(30,140,250,16,16,"THE MESSAGE YOU SEND IS:");
                        LCD_ShowString(30,170,450,16,16,USART_RX_BUF);       
                        USART_RX_STA=0;
                       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。