OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3548|回复: 5

TFT-LCD显示残留

[复制链接]

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2018-10-18
在线时间
29 小时
发表于 2018-12-25 16:04:48 | 显示全部楼层 |阅读模式
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);所以才有你看到的残留
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-25 16:04:49 | 显示全部楼层
你不清空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);所以才有你看到的残留
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2018-10-18
在线时间
29 小时
 楼主| 发表于 2018-12-25 16:38:58 | 显示全部楼层
把LCD_Clear放在USART_RX_STA=0;后面可以清空屏幕,放最前面就没用。。是为什么啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-12-26 02:19:23 | 显示全部楼层
仿真找问题
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-26 08:24:21 | 显示全部楼层
USART_RX_BUF这个接收BUFF里面的数据你没有清零过,肯定是显示67345了,用完数据后用memset(USART_RX_BUF,0,USART_RX_STA&0x3fff)把这个BUFF清空
回复

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2018-10-18
在线时间
29 小时
 楼主| 发表于 2018-12-26 11:02:25 | 显示全部楼层
szczyb1314 发表于 2018-12-26 08:27
你不清空buff,buff里面的数据还是上次的12345,USART_RX_STA&0x3fff=5,这次接收到的数据是67,那么buff里 ...

谢谢大佬指点!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 08:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表