接着上次求助的关于7寸电容屏例程的移植,搞了几天,移植好了,可以正常显示了,还是头文件包含的问题。
但是接下来移植gt811触摸的驱动就又出现了问题:只要程序一运行,就自动默认一直在触摸电容屏的左下角,坐标为(0,480),用串口来输出看的话就是一直输出的是左下角的坐标。
我工程中移植了ucos和ucgui,ucos中新建一个touch_task每隔10ms来扫描是否有触摸,代码如下:
void touch_task(void *pdata)
{
while(1)
{
GUI_TOUCH_Exec();
delay_ms(10);
}
}
触摸屏的中断处理函数如下:
//触摸屏中断处理
void EXTI15_10_IRQHandler(void)
{
if(CT_INT==0) //有触摸中断
{
ctp_dev.tpsta|=0X80;//标记有有效触摸
}
EXTI->  R=1<<10; //清除LINE10上的中断标志位
}
中断中就置位有效触摸标记,然后在gui中扫描:
int GUI_TOUCH_X_MeasureX(void) {
ctp_dev.scan();
printf(" LCD X:%x\r\n",ctp_dev.x);
return ctp_dev.x;
}
int GUI_TOUCH_X_MeasureY(void) {
ctp_dev.scan();
printf(" LCD Y:%x\r\n",ctp_dev.y);
return ctp_dev.y;
}
我自己看着感觉没什么问题,触摸也能检测到,但是就是空闲没触摸的时候会默认触摸左下角,很奇怪。
用原子哥的例程就没有这个问题,唯一和原子哥有区别的就是我是主要用库函数编程,直接用的例程中sys.c文件中的函数,是寄存器版本的。其中在设置NVIC是,没有NVIC->IPR,我改为了NVIC->IP,在设置响应优先级和抢断优先级的时候。
不知各位大神有什么指教?
|