硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7904|回复: 18
收起左侧

[μCGUI] RA8875+STM32F207驱动触摸屏显示有乱线问题。

[复制链接]

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
发表于 2014-8-7 14:21:31 | 显示全部楼层 |阅读模式
请各位高手帮助,我现在用STM32F207+RA8875驱动屏AT056TN53,我做了几个界面。切换界面是在回调函数中GUI_EndDialog(hWin, 0)结果上个窗口;再创建新的窗口。现在的问题是切换界面时候在屏幕上偶尔会出现一条小黑线,位置不定,长短不定。但上电的时候主界面不会有黑线,切换到其它界面就会出现,再切回来也会出现。如果上电一直停在一个有数据刷新的界面也有出现。请各位高手分析一下是那方面的问题。多谢!
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-7 14:49:25 | 显示全部楼层
DSC_7607.JPG
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2014-8-7 17:14:01 | 显示全部楼层
你是不是用的RA8875做的触摸IC。
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-8 13:21:38 | 显示全部楼层
是的。还请多多指教
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2014-8-8 13:23:57 | 显示全部楼层

回 fanyanxi 的帖子

fanyanxi:是的。还请多多指教 (2014-08-08 13:21) 
触摸和TFT显示要做互斥操作的,可以参考我们的驱动代码,要不同时操作时序会出问题的。
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-8 13:34:20 | 显示全部楼层
我的程序用的就是贵公司的例程。
/*
*********************************************************************************************************
*
*    模块名称 : RA8875芯片驱动模块
*    文件名称 : LCD_RA8875.c
*    版    本 : V1.1
*    说    明 : RA8875底层驱动函数集。口线定义按安富莱 STM32-X2   (STM32F103VET6/LQFP100)
*    修改记录 :
*        版本号  日期       作者    说明
*        V1.0    2012-08-07 armfly  发布首版
*        V1.1    2012-10-23 armfly  解决绘制矩形函数的BUG(高度宽度计算错误);增加SPI-4接口模式;
*                                   解决几个绘制2D图形的函数判忙条件不真实的问题。
*                                   触摸校准增加4点校准
*
*    Copyright (C), 2011-2012, 安富莱电子 www.armfly.com
*
*********************************************************************************************************
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-8 13:38:12 | 显示全部楼层
还请教互斥操作怎么做。
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-8 14:35:49 | 显示全部楼层
我用的是UCGUI里的GUI_TOUCH_Exec();读取触摸的值
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-8 15:07:59 | 显示全部楼层
/*********************************************************************
*
*       GUI_TOUCH_Exec
*/
void GUI_TOUCH_Exec(void) {
  #ifndef WIN32
  static U8 ReadState;
  int x,y;
  if (RA8875_IsBusy())
        {
            return;
        }
  /* calculate Min / Max values */
  if (xyMinMax[GUI_COORD_X].Min < xyMinMax[GUI_COORD_X].Max) {
    xMin = xyMinMax[GUI_COORD_X].Min;
    xMax = xyMinMax[GUI_COORD_X].Max;
  } else {
    xMax = xyMinMax[GUI_COORD_X].Min;
    xMin = xyMinMax[GUI_COORD_X].Max;
  }
这样还是不好用
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-8 15:09:31 | 显示全部楼层

回 eric2013 的帖子

eric2013:你是不是用的RA8875做的触摸IC。 (2014-08-07 17:14) 
高手,有时间帮我解决一下。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2014-8-8 16:15:37 | 显示全部楼层

回 fanyanxi 的帖子

fanyanxi:高手,有时间帮我解决一下。
 (2014-08-08 15:09) 
如果你使用的是UCGUI的话,建议参考这个例子:
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=1806
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-8 17:08:20 | 显示全部楼层

回 eric2013 的帖子

eric2013:如果你使用的是UCGUI的话,建议参考这个例子:
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=1806 (2014-08-08 16:15) 
static  void  AppTaskKbd (void *p_arg)
{
  (void)p_arg;   
   while(1)
   {
         /* 延时10ms会读取一次触摸坐标    */
      OSTimeDlyHMSM(0,0,0,10);
      //GPIO_SetBits(GPIOF,GPIO_Pin_10);                    
      if (RA8875_IsBusy()==0)
        {
         GUI_TOUCH_Exec();
        }
      //GPIO_ResetBits(GPIOF,GPIO_Pin_10);   
   }
加了一个RA8875忙状态判断,还是没有解决问题。请问,还有没有其它地方需要修改。我把触摸任务停止,屏幕确实没有黑线了,所以肯定是冲突问题。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2014-8-8 17:47:34 | 显示全部楼层

回 fanyanxi 的帖子

fanyanxi:static  void  AppTaskKbd (void *p_arg)
{
  (void)p_arg;  
   while(1)
....... (2014-08-08 17:08) 
最简单的解决办法,把你的GUI_TOUCH_Exec();也放在GUI任务里面就不冲突了。
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-11 10:16:47 | 显示全部楼层

回 eric2013 的帖子

eric2013:最简单的解决办法,把你的GUI_TOUCH_Exec();也放在GUI任务里面就不冲突了。 (2014-08-08 17:47) 
我现在就是两个任务,一个显示的任务,一个触摸刷新的任务,不是这样吗?
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-11 11:09:00 | 显示全部楼层

回 eric2013 的帖子

eric2013:最简单的解决办法,把你的GUI_TOUCH_Exec();也放在GUI任务里面就不冲突了。 (2014-08-08 17:47) 
我明白你的意思了,我现在把屏幕刷新与触摸放在一个任务里
GUI_TOUCH_Exec();
GUI_Delay(20);
但这样我的屏幕刷新太快了,占用资源太大。出现过死机的现象。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2014-8-11 18:04:22 | 显示全部楼层

回 fanyanxi 的帖子

fanyanxi:我明白你的意思了,我现在把屏幕刷新与触摸放在一个任务里
GUI_TOUCH_Exec();
GUI_Delay(20);
但这样我的屏幕刷新太快了,占用资源太大。出现过死机的现象。 (2014-08-11 11:09) 
恩,是这样的。
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2014-8-12 09:00:06 | 显示全部楼层

回 eric2013 的帖子

eric2013:恩,是这样的。 (2014-08-11 18:04) 
我这样写,会不会好点?
if(timecount==0)
      {WM_Exec();
       timecount=10;
      }
    else
      {OSTimeDlyHMSM(0,0,0,10);
       GUI_TOUCH_Exec();
       timecount--;
      }
回复

使用道具 举报

38

主题

136

回帖

40

积分

初级会员

积分
40
发表于 2014-8-12 16:06:43 | 显示全部楼层

回 fanyanxi 的帖子

fanyanxi:我这样写,会不会好点?
if(timecount==0)
      {WM_Exec();
       timecount=10;
....... (2014-08-12 09:00) 
也行。
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2015-1-13 10:30:25 | 显示全部楼层
一直不知道8875 触摸屏的原理呀,能说下8875触摸屏的原理么?怎么校准的!
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 05:49 , Processed in 0.059292 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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