MTK feaurephone timer学习研究文档.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MTK featurephone timer学习研究文档 timer学习研究 MTK定时器和定时器消息机制分析 内容: 1,先来了解下我们常用的定时器以及在哪些地方用到; 2,定时器使用了哪些数据结构,定时器在MTK的几个应用层上的联系是怎么样的; 3,分析一个timer的开启和结束的完整流程; 4,问答: (1)mtk系统内部是怎么管理这些timer的? (2)tiemr从start到stop的整个流程是怎么处理的? (3)如何创建自己的timer? (4)如何设计一个tmer管理器的应用?比如闹钟。 1,先来了解下我们常用的定时器以及在哪些地方用到; 一,定时器调用的函数(参考L300项目): 1,StartTimer(); StopTimer(); //需要自定义一个定时器id; 例如: 1,先定义一个timerID: /*来到文件:TimerEvents.h的枚举MMI_TIMER_IDS*/ MY_TEMER_ID, 2,/*打开定时器*/ StartTimer(MY_TEMER_ID,500,funcPtr); 3,/*关闭定时器*/ StopTimer(MY_TEMER_ID); 2,gui_start_timer(); gui_cancel_timer(); //不用自定义定时器id; 例如: /*开启一个定时器,只要传入延时时间和回调函数就可以了*/ gui_start_timer( delay,funcPtr ); /*关闭定时器*/ gui_cancel_timer( funcPtr ); 二,如何自定义一个定时器: 首先,定义自己的Timer typedef struct MyTimerItem { const int index;//多个timer时使用,在这个例子里是没有用的 int delay;//1000相当于1秒 unsigned char used;//是否被使用, FuncPtr timerFunc;//执行的函数 int isCircle;//timer是否循环 }MyTimer; /* 在文件TimerEvents.h里有一个enum,叫做MMI_TIMER_IDS,它存放了所有timer的索引,如果想要使用一个自己的timer,就要在这个enum时加上自己的一项.一般加在后面,即MAX_TIMERS的前一个. typedef enum { // Start for for Keypad based timer. KEY_TIMER_ID_NONE = 0, KEY_TIMER_ID0 = 1, KEY_TIMER_ID1, KEY_TIMER_ID2, KEY_TIMER_ID3, ...... 中间忽略无数个 MY_TEMER_BASE_ID, MY_TEMER_END_ID = My_TEMER_BASE_ID + 5, MAX_TIMERS } MMI_TIMER_IDS; */ my_timer_baseid = MY_TEMER_BASE_ID; //函数StartTimer和StopTimer在文件Events.c里实现. static MyTimer mytimer = { 0, 1000, 0, MyTimerHanler, 1 }; //timer处理函数 void MyUpdateTimerHanler() { MyTimer * t = mytimer; //写下你要的操作 // 使定时器,继续工作, MTK 的定时器执行一次就会关闭 if(t-isCircle)

文档评论(0)

书是爱的奉献 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档