|
完整65章+12章附件教程下载地址:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834
第77章 附件L--裸机工程推荐的触摸检测描方式
本章节配套的所有裸机例子都是将触摸检测放在硬件定时器中断里面了,实际项目中不推荐这种方式,因为触摸检测获取触摸数据时,时间都稍微有些长,如果获取电容屏的多点触摸数据,时间就更长了,比较影响系统的实时性,所以推荐使用emWin自带的定时器功能来做触摸检测。
分两步即可完成(配套的完整例子是:V6-617_STemWin实验_强烈推荐的裸机触摸检测方式,不在中断里调用(裸机)):
第1步:创建定时器,这里创建了两个定时器,周期分别是1ms和10ms。
- /* 创建定时器 */
- hTimer = GUI_TIMER_Create(_cbTimer, /* 回调函数 */
- 1, /* 绝对时间,设置系统上电后1ms作为溢出时间 */
- 0x01, /* 可以认为此参数是区分不同定时器的ID,方便多个定时使用同一个回调函数 */
- 0); /* 保留,暂时未用到 */
-
- /* 设置定时器周期为1ms */
- GUI_TIMER_SetPeriod(hTimer, 1);
-
-
- /* 创建定时器 */
- hTimer = GUI_TIMER_Create(_cbTimer, /* 回调函数 */
- 10, /* 绝对时间,设置系统上电后10ms作为溢出时间 */
- 0x02, /* 可以认为此参数是区分不同定时器的ID,方便多个定时使用同一个回调函数 */
- 0); /* 保留,暂时未用到 */
复制代码 第2步:定时器的回调函数电阻屏的检测周期是1ms,电容屏的触摸芯片GT811和FT5X06检测周期是10ms。
- /*
- *********************************************************************************************************
- * 函 数 名: _cbTimer
- * 功能说明: 定时器回调函数
- * 形 参: pTM 消息指针
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void _cbTimer(GUI_TIMER_MESSAGE * pTM)
- {
- switch (pTM->Context)
- {
- case 0x01:
- /* 电阻触摸屏 */
- if(g_tTP.Enable == 1)
- {
- TOUCH_Scan();
- }
-
- /* 此函数一定要调用,设置重新启动,要不仅执行一次 */
- GUI_TIMER_Restart(pTM->hTimer);
- break;
-
- case 0x02:
-
- /* 电容触摸屏GT811 */
- if(g_GT811.Enable == 1)
- {
- GT811_OnePiontScan();
- }
-
- /* 电阻触摸屏FT5X06 */
- if(g_tFT5X06.Enable == 1)
- {
- FT5X06_OnePiontScan();
- }
-
- /* 此函数一定要调用,设置重新启动,要不仅执行一次 */
- GUI_TIMER_Restart(pTM->hTimer);
- break;
-
- default:
- break;
- }
- }
复制代码 |
|