OpenEdv-开源电子网

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

求助,4.3寸触摸屏不能按着屏幕复位!

[复制链接]

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-1-28
在线时间
44 小时
发表于 2016-3-30 23:01:13 | 显示全部楼层 |阅读模式
50金钱
本帖最后由 琉璃 于 2016-3-31 19:11 编辑

自己参照原子哥的程序仿写的触摸屏程序,现在发现一个问题,就是平时正常复位可以工作,但是如果工作的时候手指按着屏幕不松,此时按下复位了,触摸屏就再也不能工作了,只能刷一遍别的HEX再刷回来才行,请教是不是初始化的问题?

最佳答案

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

已解决,改成BA、BB就可以了。都怪没好好看手册,白折腾大半个月
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-1-28
在线时间
44 小时
 楼主| 发表于 2016-3-30 23:01:14 | 显示全部楼层
已解决,改成BA、BB就可以了。都怪没好好看手册,白折腾大半个月
回复

使用道具 举报

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-1-28
在线时间
44 小时
 楼主| 发表于 2016-3-31 10:42:02 | 显示全部楼层
本帖最后由 琉璃 于 2016-3-31 19:11 编辑

[mw_shl_code=c,true]void   GT9147_Init()       //初始化GT9147触摸屏
{
      GPIO_InitTypeDef  G;
      u8 temp;
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOF, ENABLE);

// G.GPIO_Pin             =          GPIO_Pin_1 ;            //GT9147_INT 本程序中未使用
// G.GPIO_Mode            =          GPIO_Mode_IN;
// G.GPIO_OType           =          GPIO_OType_PP;
// G.GPIO_Speed           =          GPIO_Speed_100MHz;              
// G.GPIO_PuPd            =          GPIO_PuPd_UP;
// GPIO_Init(GPIOB, &G);

    G.GPIO_Pin             =          GPIO_Pin_13;              //GT9147_RST
    G.GPIO_Mode            =          GPIO_Mode_OUT;
    G.GPIO_OType           =          GPIO_OType_PP;
    G.GPIO_PuPd            =          GPIO_PuPd_UP;
    GPIO_Init(GPIOC, &G);
   
    G.GPIO_Pin             =          GPIO_Pin_0;               //GT9147_SCL
    G.GPIO_Mode            =          GPIO_Mode_OUT;
    G.GPIO_OType           =          GPIO_OType_PP;
    G.GPIO_PuPd            =          GPIO_PuPd_UP;
    GPIO_Init(GPIOB, &G);
    G.GPIO_Pin             =          GPIO_Pin_11;              //GT9147_SDA
    G.GPIO_Mode            =          GPIO_Mode_OUT;
    GPIO_Init(GPIOF, &G);

    GT_RST=0;                                                   //硬复位
    delay_us(10000);
    GT_RST=1;        
    delay_us(10000);  

    temp=0X02;                                                  //开始软复位
    GT9147_WR_Reg(GT_CTRL_REG,&temp,1);
    delay_us(10000);

    GT9147_Send_Cfg(0);                                         //更新但不保存配置,每次上电都写一遍好了
    delay_us(10000);

    temp=0X00;  
    GT9147_WR_Reg(GT_CTRL_REG,&temp,1);                         //结束软复位
    delay_us(1000000);
}




void GT9147_Scan()            
{
    u8 mode=0;
    u8 buf[4];
    u8 i=0;
    u8 temp;
    GT9147_RD_Reg(GT_GSTID_REG,&mode,1);                            //读取触摸点的状态  
    if(mode&0X80&&((mode&0XF)<6))                                   //仅当第一位为1(表示数据准备完成)和点数不超过5时进入
    {        
        sta=mode&0x07;                                              //获取触摸点数,本应0x0F才对,但0x07足够了
        
        if(sta)                                                     //触摸点数不可为0
        {
            for(i=0;i<sta;i++)                                      //有几处坐标就扫描几次
            {
                GT9147_RD_Reg(GT9147_TPX_TBL,buf,4);             //读取XY坐标值,进行字节合成                                    
               
                xx=((u16)buf[1]<<8)+buf[0];
                yy=((u16)buf[3]<<8)+buf[2];
            }
         }
        
        temp=0,GT9147_WR_Reg(GT_GSTID_REG,&temp,1);                 //获取完成,清除状态标志
     }
}[/mw_shl_code]


回复

使用道具 举报

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-1-28
在线时间
44 小时
 楼主| 发表于 2016-3-31 19:11:53 | 显示全部楼层
轻顶~~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 18:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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