新手,将串口接收的数据显示到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;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>