OpenEdv-开源电子网

 找回密码
 立即注册
查看: 1839|回复: 4

touchgfx 触摸一直搞不定,望高手指点

[复制链接]

6

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2021-3-1
在线时间
73 小时
发表于 2022-6-12 09:11:52 | 显示全部楼层 |阅读模式
#include <STM32TouchController.hpp>
#include "touch.h"

void STM32TouchController::init()
{
        TP_Init();
}

bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)
{       
                if(GT_INT == 0)
                {
                                x=tp_dev.x[0];//记录第一次按下时的坐标
                                y=tp_dev.y[0];
                                return true;
        }
        return false;
}
请大侠指点,代码有什么问题,触摸用不了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2021-3-1
在线时间
73 小时
 楼主| 发表于 2022-6-12 09:15:42 | 显示全部楼层
我的液晶是RGB1024*600   触摸芯片GT911
回复 支持 反对

使用道具 举报

6

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2021-3-1
在线时间
73 小时
 楼主| 发表于 2022-6-12 09:26:15 | 显示全部楼层
#include <STM32TouchController.hpp> #include "touch.h" #include "gt911.h"  void STM32TouchController::init() {         TP_Init();         GT911_Init(); }  bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y) {                         u8 buf[4];                          if(GT_INT == 0)                 {                                 x=(((u16)buf[1]<<8)+buf[0]);                                 y=(((u16)buf[3]<<8)+buf[2]);                                 return true;         }         return false; }
回复 支持 反对

使用道具 举报

6

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2021-3-1
在线时间
73 小时
 楼主| 发表于 2022-6-12 09:26:47 | 显示全部楼层
#include <STM32TouchController.hpp>
#include "touch.h"
#include "gt911.h"

void STM32TouchController::init()
{
        TP_Init();
        GT911_Init();
}

bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)
{       
                u8 buf[4];
       
                if(GT_INT == 0)
                {
                                x=(((u16)buf[1]<<8)+buf[0]);
                                y=(((u16)buf[3]<<8)+buf[2]);
                                return true;
        }
        return false;
}
这样直接读寄存器也不行
回复 支持 反对

使用道具 举报

6

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2021-3-1
在线时间
73 小时
 楼主| 发表于 2022-6-12 13:50:30 | 显示全部楼层
自问自答,搞定了
#include <STM32TouchController.hpp>
#include "gt911.h"
#include "delay.h"
#include "led.h"

void STM32TouchController::init()
{
        GT911_Init();
        LED_Init();
}


bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)
{       
        u8 buf[4];
        uint8_t clear_flag = 0;
//        if(GT_INT == 0)
//        {
                GT911_RD_Reg(GT_GSTID_REG, buf, 1);
                        if(buf[0]&0x80)          //有按键被按下   
                        {
                                        GT911_RD_Reg(GT_TP1_REG, buf, 4);
                                        GT911_WR_Reg(GT_GSTID_REG, &clear_flag ,1);
                                        x=(((u16)buf[1]<<8)+buf[0]);
                                        y=(((u16)buf[3]<<8)+buf[2]);
                                        LED0_Toggle;
                                        return true;
                 }
                       
//        }

    return false;
}
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

正点原子公众号

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

GMT+8, 2024-5-19 09:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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