初级会员

- 积分
- 90
- 金钱
- 90
- 注册时间
- 2018-10-18
- 在线时间
- 29 小时
|
10金钱
本帖最后由 狙侧奇 于 2018-12-25 16:06 编辑
程序大概就是将原子哥的RGB TFT汉字显示和串口通讯修改了一些拼接,已经可以成功在串口助手上发送、显示但是有LCD显示残留问题,
比如第一次发送12345
第二次发送67
最后显示结果为67345,看来下论坛别人的帖子就是清屏,我也在循环里面加上清屏了啊,怎么没反应?
刚刚开始学32 希望大神指点!
while(1)
{
if(USART_RX_STA&0x8000)
{
LCD_Clear(WHITE);
//POINT_COLOR=RED;
Show_Str(224,80,400,32,"串口通讯测试",32,0);
LED0=!LED0;
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("\r\n您发送的消息为:\r\n");
HAL_UART_Transmit(&UART1_Handler,(uint8_t*)USART_RX_BUF,len,1000); //发送接收到的数据
Show_Str(320,350,400,24,USART_RX_BUF,24,0);
while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET); //等待发送结束
printf("\r\n\r\n");//插入换行
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf("\r\n串口实验\r\n");
}
if(times%200==0)printf("请输入数据,以回车键结束\r\n");
// if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
delay_ms(10);
}
}
|
最佳答案
查看完整内容[请看2#楼]
你不清空buff,buff里面的数据还是上次的12345,USART_RX_STA&0x3fff=5,这次接收到的数据是67,那么buff里的数据是67345,但是此时的USART_RX_STA&0x3fff=2了。然后你现实的是整个buff, Show_Str(320,350,400,24,USART_RX_BUF,24,0);所以才有你看到的残留
|