OpenEdv-开源电子网

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

原子STemWin的实验15,刚开始运行正常,一段时间不动,触摸功能失效?

[复制链接]

14

主题

115

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2015-12-19
在线时间
307 小时
发表于 2016-10-12 20:17:09 | 显示全部楼层 |阅读模式
20金钱
用的是原子的探索者F4开发板,下载的是实验15 BUTTON使用,发现这么一个问题?首先下载实验15,刚开始一切正常,但是一段时间不点,触摸功能就失效了,
表现为手指滑动触摸屏,鼠标不随手指移动?
广大坛友,有没有碰到过这个问题?
小弟也是刚开始学STemWin,发现没有UCOS的知识,估计玩不转这个STemWin;
另外还发现一个问题,就是对于原子的7寸屏,直接修改宏定义
#define DFT_SCAN_DIR  L2R_U2D  //默认的扫描方向
不会有相应的效果;
详细点就是,4.3寸的屏修改上述宏定义,可以实现显示效果的切换,比如左上角切换右下脚;
而7寸的屏幕就不会有上述效果。表现为修改宏定义,无效果。
查数据手册(SSD1963_DS_V1.1.pdf)
QQ图片20161012200951.png
下面的英文描述,应该是第0,1,2位改变的扫描方式,原子的程序貌似都是修改的第5,6,7位;
567位应该是CPU到缓存,0123应该才是缓存到屏幕。
所以原子这儿的程序稍微有点问题。解决办法可以加一个判断,然后做一下偏移。具体是
300                if(lcddev.id==0X5510)dirreg=0X3600;
301                else dirreg=0X36;
302                 if((lcddev.id!=0X5310)&&(lcddev.id!=0X5510)&&(lcddev.id!=0X1963))regval|=0X08;//5310/5510/1963不需要BGR   
303                if(lcddev.id==0X6804)regval|=0x02;//6804的BIT6和9341的反了          
304                LCD_WriteReg(dirreg,regval);

在303行和304行之间加一个判断,if(lcddev.id==0x1963)regval>>=5;
小弟在原子的实验13 TFT LCD显示实验上尝试修改之后,经验证,添加判断之后,修改宏定义可以修改显示效果。
别的历程暂时没做实验。
上述问题只是小问题,重要的是求助实验15 BUTTON使用;一段时间不动,触摸任务失效?求助?????

最佳答案

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

F407探索板+GT9147的4.3寸触摸屏 使用专用的移植工程,
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-10-12 20:17:10 | 显示全部楼层
本帖最后由 zuozhongkai 于 2016-10-12 21:01 编辑

F407探索板+GT9147的4.3寸触摸屏  使用专用的移植工程, EMWIN移植,GT9147专用(解决触摸问题).rar (3.91 MB, 下载次数: 1880)
回复

使用道具 举报

14

主题

115

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2015-12-19
在线时间
307 小时
 楼主| 发表于 2016-10-12 23:49:35 | 显示全部楼层
zuozhongkai 发表于 2016-10-12 21:00
F407探索板+GT9147的4.3寸触摸屏  使用专用的移植工程,

感谢回复,明天回去试试
回复

使用道具 举报

14

主题

115

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2015-12-19
在线时间
307 小时
 楼主| 发表于 2016-10-14 10:00:53 | 显示全部楼层
本帖最后由 shiqinghai 于 2016-10-14 10:02 编辑
zuozhongkai 发表于 2016-10-12 21:00
F407探索板+GT9147的4.3寸触摸屏  使用专用的移植工程,

对实验15BUTTON使用的移植过后,测试,没问题,解决一段时间不动,触摸功能失效的问题。
左老师给力!!!!如果能提供一个7寸屏的案例就更好了,文件夹对比,发现底层的touch修改的很多,需要仔细研究。
左老师功力深厚!!!
回复

使用道具 举报

25

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1190
金钱
1190
注册时间
2016-9-17
在线时间
140 小时
发表于 2016-11-22 23:09:13 | 显示全部楼层
zuozhongkai 发表于 2016-10-12 20:17
F407探索板+GT9147的4.3寸触摸屏  使用专用的移植工程,

可以说一下哪里改动了吗》?我是小白刚开始学习
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2016-12-3 16:09:41 | 显示全部楼层
我试了好多wmwin的例程,都是这个情况,过两三分钟就不动了。。。探索者开发板测试
回复

使用道具 举报

14

主题

115

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2015-12-19
在线时间
307 小时
 楼主| 发表于 2016-12-3 21:23:10 | 显示全部楼层
893227334 发表于 2016-11-22 23:09
可以说一下哪里改动了吗》?我是小白刚开始学习

找一个文件对比软件看一下
回复

使用道具 举报

13

主题

75

帖子

0

精华

高级会员

Rank: 4

积分
659
金钱
659
注册时间
2016-6-23
在线时间
72 小时
发表于 2016-12-8 10:17:27 | 显示全部楼层
shiqinghai 发表于 2016-10-14 10:00
对实验15BUTTON使用的移植过后,测试,没问题,解决一段时间不动,触摸功能失效的问题。
左老师给力!! ...

现在在使用7寸屏,也遇到触摸功能失效的问题;请教一下楼主:问题出现在哪里啊?对此表示感谢
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2016-12-29 15:13:34 | 显示全部楼层
893227334 发表于 2016-11-22 23:09
可以说一下哪里改动了吗》?我是小白刚开始学习

GUI_X_Touch_Analog.c 里面的函数改了就ok了。直接复制如下函数

/*********************************************************************
*                SEGGER Microcontroller GmbH & Co. KG                *
*        Solutions for real time microcontroller applications        *
**********************************************************************
*                                                                    *
*        (c) 1996 - 2012  SEGGER Microcontroller GmbH & Co. KG       *
*                                                                    *
*        Internet: www.segger.com    Support:  support@segger.com    *
*                                                                    *
**********************************************************************

** emWin V5.16 - Graphical user interface for embedded applications **
All  Intellectual Property rights  in the Software belongs to  SEGGER.
emWin is protected by  international copyright laws.  Knowledge of the
source code may not be used to write a similar product.  This file may
only be used in accordance with the following terms:

The software has been licensed to  ARM LIMITED whose registered office
is situated at  110 Fulbourn Road,  Cambridge CB1 9NJ,  England solely
for  the  purposes  of  creating  libraries  for  ARM7, ARM9, Cortex-M
series,  and   Cortex-R4   processor-based  devices,  sublicensed  and
distributed as part of the  MDK-ARM  Professional  under the terms and
conditions  of  the   End  User  License  supplied  with  the  MDK-ARM
Professional.
Full source code is available at: www.segger.com

We appreciate your understanding and fairness.
----------------------------------------------------------------------
File        : GUI_TOUCH_X.C
Purpose     : Config / System dependent externals for GUI
---------------------------END-OF-HEADER------------------------------
*/
#include "GUI.h"
#include "touch.h"
#include "ILI93xx.h"
#include "usart.h"


void GUI_TOUCH_X_ActivateX(void)
{
// XPT2046_WriteCMD(0x90);
}


void GUI_TOUCH_X_ActivateY(void)
{
  //XPT2046_WriteCMD(0xd0);
}

const u16 GT9147_TPX_TBL1[5] = {GT_TP1_REG,GT_TP2_REG,GT_TP3_REG,GT_TP4_REG,GT_TP5_REG};

//GT9147 é¨Ãè′¥ÃtÆá(2éóÃ2éÑˉ·½ê½)
void GT9147Touch_Scan(void)
{
    u8 mode=0;
    u8 buf[4];
    u8 temp;
    u8 i;
    GT9147_RD_Reg(GT_GSTID_REG,&mode,1);//¶áè¡′¥ÃtμãμÄ×′ì¬
    if((mode&0X80&&((mode&0XF)<6))||(mode&0x20))
        {
        temp=0;
        GT9147_WR_Reg(GT_GSTID_REG,&temp,1);//&#199;&#229;±ê&#214;&#190;                
        }
    if((mode&0XF)&&((mode&0XF)<6))
    {
        temp=~(0xFF << (mode & 0x0F));
        tp_dev.sta = temp|TP_PRES_DOWN|TP_CATH_PRES;
        for(i=0;i<5;i++)
        {
            if(tp_dev.sta & (1<<i))
            {
                GT9147_RD_Reg(GT9147_TPX_TBL1,buf,4); //&#182;áè&#161; XY ×&#248;±ê&#214;μ
                tp_dev.x=((u16)buf[1]<<8)+buf[0];
                tp_dev.y=((u16)buf[3]<<8)+buf[2];
            }
            if(tp_dev.touchtype&0X01)//oá&#198;á
            {
                tp_dev.y=((u16)buf[1]<<8)+buf[0];
                tp_dev.x=800-(((u16)buf[3]<<8)+buf[2]);
            }else
                        {
                tp_dev.x=((u16)buf[1]<<8)+buf[0];
                tp_dev.y=((u16)buf[3]<<8)+buf[2];
                        }
        }
        mode=0;
        GT9147_WR_Reg(GT_GSTID_REG,&mode,1);//&#199;&#229;±ê&#214;&#190;
    }
    else if((mode&0X8F)==0X80)//&#206;T′¥&#195;tμ&#227;°′&#207;&#194;
    {
        if(tp_dev.sta&TP_PRES_DOWN) //&#214;&#174;&#199;°ê&#199;±&#187;°′&#207;&#194;μ&#196;
        {
            tp_dev.sta&=~(1<<7); //±ê&#188;&#199;°′&#188;ü&#203;é&#191;a
        }else //&#214;&#174;&#199;°&#190;í&#195;&#187;óD±&#187;°′&#207;&#194;
        {
            tp_dev.x[0]=0xffff;
            tp_dev.y[0]=0xffff;
            tp_dev.sta&=0XE0;//&#199;&#229;3yμ&#227;óDD§±ê&#188;&#199;
        }   
    }
}

//&#187;&#241;è&#161;μ&#231;èY′¥&#195;t&#198;áμ&#196; X &#214;á&#214;μ
int32_t Get_CapacTouchValueX(void)
{
    int32_t lost_x;

    GT9147Touch_Scan();
    lost_x = tp_dev.x[0];
    return lost_x;
}
  
//&#187;&#241;è&#161;μ&#231;èY′¥&#195;t&#198;áμ&#196; Y &#214;á&#214;μ
int32_t Get_CapacTouchValueY(void)
{
    int32_t lost_y;

    GT9147Touch_Scan();
    lost_y=tp_dev.y[0];
    return lost_y;
}

int GUI_TOUCH_X_MeasureX(void)
{
    int32_t xvalue;
    if(lcddev.id == 0X5510) //μ&#231;èY&#198;áμ&#196;′¥&#195;t&#214;μ&#187;&#241;è&#161;
    {
        xvalue= Get_CapacTouchValueX();
        return xvalue;
    }else //μ&#231;×è&#198;á
    {
        return TP_Read_XOY(0XD0); //CMD_RDX=0XD0
    }
}   

int GUI_TOUCH_X_MeasureY(void)
{
    int32_t yvalue;
    if(lcddev.id == 0X5510) //μ&#231;èY&#198;áμ&#196;′¥&#195;t&#214;μ&#187;&#241;è&#161;
    {
        yvalue=Get_CapacTouchValueY();
        return yvalue;
    }else //μ&#231;×è&#198;á
    {
        return TP_Read_XOY(0X90); //CMD_RDX=0XD0
    }
}

//int  GUI_TOUCH_X_MeasureX(void)
//{
//        int32_t xvalue;
//        if((lcddev.id == 0X5510) || (lcddev.id == 0X1963)) //μ&#231;èY&#198;áμ&#196;′¥&#195;t&#214;μ&#187;&#241;è&#161;(ê1ó&#195;NT5510oíSSD1963D&#190;&#198;&#172;μ&#196;4.3′&#231;oí7′&#231;&#198;á&#182;&#188;ê&#199;μ&#231;èY&#198;á)
//        {
//                tp_dev.scan(0);
//                xvalue=tp_dev.x[0];
//                return xvalue;
//        }else                                //μ&#231;×è&#198;á
//        {
//                return TP_Read_XOY(0XD0);  //CMD_RDX=0XD0
//        }
//}

//int  GUI_TOUCH_X_MeasureY(void)
//{       
//        int32_t yvalue;
//        if((lcddev.id == 0X5510) || (lcddev.id == 0X1963))//μ&#231;èY&#198;áμ&#196;′¥&#195;t&#214;μ&#187;&#241;è&#161;(ê1ó&#195;NT5510oíSSD1963D&#190;&#198;&#172;μ&#196;4.3′&#231;oí7′&#231;&#198;á&#182;&#188;ê&#199;μ&#231;èY&#198;á)
//        {
//                tp_dev.scan(0);
//                yvalue = tp_dev.y[0];
//                return yvalue;
//        }else                                //μ&#231;×è&#198;á
//        {
//                return TP_Read_XOY(0X90);  //CMD_RDX=0XD0
//        }
//}

我也是看大神的工程对比看的
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2017-5-20
在线时间
30 小时
发表于 2017-5-20 15:58:11 | 显示全部楼层
不错,原先的程序有问题,一段时间不触摸就不起作用了。,改了触摸检测函数后才行。
回复

使用道具 举报

1

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2016-11-21
在线时间
43 小时
发表于 2017-5-20 17:53:30 | 显示全部楼层
MARK!!
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2017-11-20
在线时间
7 小时
发表于 2017-11-21 10:15:11 | 显示全部楼层
对啊,我也是一直在找问题,找不到什么问题,你们是怎么发现问题的呀
回复

使用道具 举报

5

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-10-7
在线时间
36 小时
发表于 2020-12-17 21:38:29 | 显示全部楼层
hi我歌月徘徊 发表于 2016-12-29 15:13
GUI_X_Touch_Analog.c 里面的函数改了就ok了。直接复制如下函数

/********************************** ...

感谢分享,请问是把整个的GUI_X_Touch_Analog.c文件替换掉了吗?我试了一下你的做法,编译完结果几个错误,
回复

使用道具 举报

5

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-10-7
在线时间
36 小时
发表于 2020-12-17 21:39:39 | 显示全部楼层
zuozhongkai 发表于 2016-10-12 20:17
F407探索板+GT9147的4.3寸触摸屏  使用专用的移植工程,

左老师你好,能发一个不带操作系统解决触摸问题的例程吗?谢谢
回复

使用道具 举报

1

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2022-3-20
在线时间
16 小时
发表于 2022-3-21 01:34:12 | 显示全部楼层
zuozhongkai 发表于 2016-10-12 20:17
F407探索板+GT9147的4.3寸触摸屏  使用专用的移植工程,

感謝分享, 測試結果, 不會死機了.
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 08:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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