首先需要一个定时器,定时0.5毫秒,之后产生中断。在按下触摸屏的时候进行判断定时器是否开启:1.若关闭则开启;2.若开启则判定为double clicked,
定时器可设置为自动重装初值,并在中断服务中关闭停止定时器。程序如下:
a.初始化:(定时器4)
rSRCPND = rSRCPND | (0x1<<14);
rINTPND = rINTPND | (0x1<<14);
rINTMSK = rINTMSK & ~(0x1<<14) ; //请求,解除中断屏蔽
rTCFG0 &= 0xFF00FF;
rTCFG0 |= 0xf900; //预分频
rTCFG1 &= ~0xF0000;
rTCFG1 |= 0x20000; //分频值,频率25kHz
rTCNTB4 = 12500; //初值,使0.5秒
pISR_TIMER4 = (U32)time4Init;//中断服务
b.触摸屏中断中:
if((rTCON & 0x100000)==0){//停止状态
rTCON &= ~0xF00000;//
rTCON |= 0x700000;//开启
rTCON &= ~0x200000 ;
}
else//开启状态
{
Uart_Printf("double clicked!!\n");//判定双击
}
c.中断服务
void __irq time4Init()
{
rSRCPND = rSRCPND | (0x1<<14);
rINTPND = rINTPND | (0x1<<14);
rTCON &=~0x100000;//
}