MTK使用系统timer


//首先,定义自己的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;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值