OpenEdv-开源电子网

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

写液晶屏应用程序时,界面切换有时会花屏如何解决?

[复制链接]

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2015-10-9 14:08:40 | 显示全部楼层 |阅读模式
5金钱
有ucosii的液晶屏应用程序,两个动态刷新的界面切换时,有时会花屏,谁知道怎么解决吗?

分析是由于代码执行较慢,切换界面时前一个界面还在执行中,新界面跑一半前一个界面又打印到屏幕导致。
定义了一个标志,直到前一个界面跑完,才清屏并开始跑新界面。切换十几到几十次依然会出现花屏现象。

谁有遇到过吗?不知该如何解决。

最佳答案

查看完整内容[请看2#楼]

解决了。 原来主要是同一个界面的载入函数和刷新数据函数冲突。载入未完成时,刷新时间过早到来打断了载入。 载入函数里进入时sem=0,退出时sem=1; 刷新时判断sem为0就return。下次进来继续判断,直到载入函数释放sem=1;才执行刷新数据操作。
小小蜗牛
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
 楼主| 发表于 2015-10-9 14:08:41 | 显示全部楼层
解决了。
原来主要是同一个界面的载入函数和刷新数据函数冲突。载入未完成时,刷新时间过早到来打断了载入。
载入函数里进入时sem=0,退出时sem=1;
刷新时判断sem为0就return。下次进来继续判断,直到载入函数释放sem=1;才执行刷新数据操作。
小小蜗牛
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-10-9 14:53:49 | 显示全部楼层
信号量加保护
开往春天的手扶拖拉机
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
 楼主| 发表于 2015-10-9 15:46:18 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
我定义的标志就是这个目的:
初始化vu8 run_sem = 1;

每个界面进入前都等待:
while (1 != run_sem);

不停调用刷新屏的函数,函数里面都先置run_sem = 0,退出函数时都置run_sem = 1,

两个界面都这样处理的。
小小蜗牛
回复

使用道具 举报

14

主题

67

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2011-8-8
在线时间
15 小时
发表于 2015-10-10 09:41:28 | 显示全部楼层
信号线加上拉试试
上帝之所以创造指纹,是因为他想让人们知道:其实,每个人都有伤痕。?
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
 楼主| 发表于 2015-10-10 09:59:59 | 显示全部楼层
回复【4楼】小曾:
---------------------------------
应该是软件问题,我切换时进入临界区就不会花屏。
但是临界区又会导致串口超时。
小小蜗牛
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 11:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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