GT911程序关于GT911的使用,我在调试的时候遇到过的问题:1:初始化过后,即使没触碰屏幕,也会一直申请中断,在遇到这个问题的时候,我一直以为是配置出了问题,可每次上电,根据读出出来的配置信息跟我写入的是一模一样的,所以判断配置无错,也怀疑过坐标清零不成功,每次读取坐标的时候都进行好几次清零,但都不管用,最后怀疑是软件复位的问题,我在配置完成后会进行软件复位,我以为软件复位之后会自动结束复位,实际情况并不是如此,在使用软件复位之后,一定要把复位关闭,INT脚才会正常,不关闭复位会出现三种现象:一是:没触摸也一直申请中断;二是:触摸后松手,坐标会一直是松手之前的坐标;三是:配置INT脚为上升沿触发时,INT脚会一直保持高电平,但频繁出现下降沿的情况。或配置为高电平查询的时候,INT脚会一直保持高电平;配置为下降沿或者低电平查询的时候相反。所以记得关闭软件复位,以下是GT911的初始化函数,我用的屏幕分辨率是480*320的。主控用的STM32F103VET6,晶振8M主频设置16倍频,也就是128M超频运行,规定最高是72M,但是我不用,超频也没什么,也稳定运行只是芯片会稍微暖一点,这是正常现象。这是配置表信息:复制过来中文会变成乱码,就改一下重要参数,剩下的我就不管了,懒得修改了//用const的方式储存,不占用变量资源,局部变量过多会造成堆栈溢出,导致死机,要修改的参数也不多,所以没必要使用变量方式保存constu8GT911_Cfg[183]={//0x42,//0x8047//版本号,这里注释掉了,直接读取GT911的原版本号在直接写进去即可0x40,0x01,//0x8048-8049//0x0140320设置扫描坐标0xE0,0x01,//0x804a-804b//0x01E04800x01,//0x804c//设置触摸点数,GT911支持五点触控,但我只用一个0x37,//0x804d//设置INT脚中断方式,这里我用的高电平查询触发,想用其它的自己看手册更改0x00,//0x804eÔ¤Áô£¨reserved£©0x02,//0x804FÊÖÖ¸°´ÏÂÏû¶¶´ÎÊý0x08,//0x8050Ôʼ×ø±ê´°¿ÚÂ˲¨Öµ0x1E,//0x8051´óÃæ»ý´¥µç¸öÊý0x0F,//0x8052ÔëÉùÏû³ýÖµ0x50,//0x8053ÆÁÉÏ´¥Ãþµã´ÓÎÞµ½Óеķ§Öµ0x32,//0x8054ÆÁÉÏ´¥Ãþµã´ÓÓе½Î޵ķ§Öµ0x03,//0x8055进入低功耗的时间,这里设置3秒0x00,//0x8056×ø±êÉϱ¨ÂÊÔ²ÎÊý0x050x00,//0x8057Ô¤Áô£¨reserved£©0x00,//0x8058Ô¤Áô£¨reserved£©0x00,0x00,//0x8059-805aÔ¤Áô£¨reserved£©0x11,//0x805bÉÏϱ߿ò¿Õ°×Çø0x11,//0x805c×óÓұ߿ò¿Õ°×Çø0x00,//0x805dÈôÀÉì³Ì¶È0x18,//0x805eÀÉìÇø¼ä1ϵÊý0x1A,//0x805fÀÉìÇø¼ä2ϵÊý0x1D,//0x8060ÀÉìÇø¼ä3ϵÊý0x14,//0x8061¸÷ÀÉìÇø¼ä»ùÊý0x87,//0x80620x27,//0x80630x0A,//0x80640x3C,//0x8065A×éÇý¶¯ÆµÂÊ0x3E,//0x8066B×éÇý¶¯ÆµÂÊ0x0C,//0x8067Çý¶¯×éA,BµÄ»ùƵL0x08,//0x8068Çý¶¯×éA,bµÄ»ùƵH0x00,//0x8069ÏàÁÚÁ½´ÎÇý¶¯ÐźŵÄÊä³öʱ¼ä¼ä¸ôL0x00,//0x806aÏàÁÚÁ½´ÎÇý¶¯ÐźŵÄÊä³öʱ¼ä¼ä¸ôH0x00,//0x806b0x9B,//0x806c0x02,//0x806d0x1C,//0x806e0x00,//0x806fÔ¤Áô£¨reserved£©0x01,//0x8070Ô¤Áô£¨reserved£©0x05,0x00,//0x8071-8072Ô¤Áô£¨reserved£©0x00,//0x80730x00,0x00,0x09,0x11,0x00,0x00,//0x8074-8079Ô¤Áô£¨reserved£©0x28,//0x807a0x6E,//0x807b0x94,//0x807c0xC5,//0x807d0x02,//0x807e0x00,//0x807f0x00,0x00,//0x8080-8081Ô¤Áô£¨reserved£©0x04,//0x80820xAB,//0x80830x2C,//0x80840x00,//0x80850x8D,//0x80860x36,//0x80870x00,//0x80880x75,//0x80890x42,//0x808a0x00,//0x808b0x61,//0x808c0x51,//0x808d0x00,//0x808e0x51,//0x808f0x63,//0x80900x00,0x51,//0x8091-8092Ô¤Áô£¨reserved£©0x00,//0x8093Key1位置,0表示无按键0x00,//0x8094Key2λÖÃ0±êʾÎÞ°´¼ü0x00,//0x8095Key3λÖÃ0±êʾÎÞ°´¼ü0x00,//0x8096Key4λÖÃ0±êʾÎÞ°´¼ü0xF0,//0x8097¸ßËÄ볤°´¸üÐÂʱ¼ä|µÍËÄλ°´¼üÓÐЧÇø¼äÉèÖÃ0x4A,//0x8098´¥Ãþ°´¼ü°´¼ü·§Öµ0x3A,//0x8099´¥Ãþ°´¼üËɼü·§Öµ0xFF,//0x809a¸ßËÄλ°´¼ü1ÁéÃô¶ÈϵÊý|µÚËÄλ°´¼ü2ÁéÃô¶ÈϵÊý0xFF,//0x809b¸ßËÄλ°´¼ü3ÁéÃô¶ÈϵÊý|µÚËÄλ°´¼ü4ÁéÃô¶ÈϵÊý0x27,//0x809c¸ßËÄλÊÖÖ¸´ÓÆÁÄ»ÉÏÀ뿪ºóÒÖÖÆ°´¼üµÄʱ¼ä|µÍËÄλ¶ÀÁ¢°´¼üÁÚ¼üÒÖÖƲÎÊý0x00,0x00,0x00,0x00,0x00,//0x809d-80a1Ô¤Áô£¨reserved£©0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//0x80a2-80aa0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//0x80ab-80b20x00,//0x80b3Ô¤Áô£¨reserved£©0x00,//0x80b4Ô¤Áô£¨reserved£©0x00,0x00,//0x80b5-80b6Ô¤Áô£¨reserved£©0x14,//0x80b780b7-80c4ITOSensor¶ÔÓ¦µÄоƬͨµÀºÅ0x12,//0x80b80x10,//0x80b90x0E,//0x80ba0x0C,//0x80bb0x0A,//0x80bc0x08,//0x80bd0x06,//0x80be0x04,//0x80bf0x02,//0x80c00xFF,//0x80c10xFF,//0x80c20xFF,//0x80c30xFF,//0x80c40x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//0x80c5-80d0Ô¤Áô£¨reserved£©0x00,0x00,0x00,0x00,//0x80d1-80d4Ô¤Áô£¨reserved£©0x00,//0x80d580d5-80eeITODriver¶ÔÓ¦µÄоƬͨµÀºÅ0x02,//0x80d60x04,//0x80d70x06,//0x80d80x08,//0x80d90x0A,//0x80da0x0C,//0x80db0x24,//0x80dc0x22,//0x80dd0x21,//0x80de0x20,//0x80df0x1F,//0x80e00x1E,//0x80e10x1D,//0x80e20xFF,//0x80e30xFF,//0x80e40xFF,//0x80e50xFF,//0x80e60xFF,//0x80e70xFF,//0x80e80xFF,//0x80e90xFF,//0x80ea0xFF,//0x80eb0xFF,//0x80ec0xFF,//0x80ed0xFF,//0x80ee0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,////0x80ef-80faÔ¤Áô£¨reserved£©0x00,0x00,0x00,0x00,////0x80fb-80feÔ¤Áô£¨reserved£©//0xE5,//0x80ffÅäÖÃУÑéÐÅÏ¢//0x01,//0x8100ÅäÖøüÐÂÐÅÏ¢};以下是.h文件#ifndef__GT911_H#define__GT911_H#includesys.h#defineGT911_SCLPBout(11)#defineGT911_SDA_OUTPBout(10)#defineGT911_SDA_INPBin(10)#defineGT911_RSTPDout(12)#defineGT911_INTPBin(14)#defineGT911_CMD_WR0xBA//写指令#defineGT911_CMD_RD0xBB//读指令//#defineGT911_CMD_WR0x28//дָÁî//911µØÖ·//#defineGT911_CMD_RD0x29//¶ÁÖ¸Áî#defineGT911_CTRL_REG0x8040//控制寄存器#defineGT911_CFGS_REG0x8047//Cfg寄存器#defineGT911_CHECK_REG0x80FF//校验和寄存器#defineGT911_PID_REG0x8140//产品ID#defineGT911_GSTID_REG0x814E//触摸情况#defineGT911_INT_REG0x804D//中断方式#defineGT911_INT_H0x37//高电平查询#defineGT911_INT_L0x36//低电平查询#defineGT911_INT_LH0x34//上升沿触发#defineGT911_INT_HL0x35//下降沿触发externu16TouchX,TouchY,TouchS;//X坐标,Y坐标,坐标面积externu8GT911_BUF[41];//最多存储5个触摸点的数据voidGT911_Init(void);voidGT911_delay(void);voidGT911_start(void);voidGT911_stop(void);u8GT911_ACK(void);//ACK应答voidGT911_Have_ACK(void);voidGT911_NO_ACK(void);voidGT911_write_byte(u8dat);u8GT911_read_byte(void);voidGT911_write_data(u16mem_add,u8dat);//写一个数据u8GT911_write_datas(u16mem_add,u8*dat,u8Len);//连续写多个数据voidGT911_read_data(u16mem_add,u8*dat,u8Len);//连续读多个数据voidGT911_Read_Touch(void);//读取坐标值voidGT911_Send_Cfg(void);//发送Cfg参数voidGT911_Send_RST(u8GT911_RSTEN)