//首先,定义自己的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)
StartTimer((UINT16)(my_timer_baseid), t->delay, t->timerFunc);
}
//开始计时
int MyUpdateTimerStart()
{
MyTimer * t = &mytimer;
if(!t) return 0;
StartTimer((UINT16)(my_timer_baseid), t->delay, t->timerFunc);
return 0;
}
//关掉timer
int UpdateTimerStop()
{
MyTimer * t = &mytimer;
if(!t) return 0;
StopTimer((UINT16)(my_timer_baseid));
return 0;
}