找回密码
 注册
搜索
查看: 1743|回复: 3

[资料] MTK定时器的问题

[复制链接]
发表于 2008-4-24 17:49:27 | 显示全部楼层 |阅读模式
一个在MMI Task里的程序,用OslStartSoftTimer启动后,在手机进入省电模式后,定时器就停了.
如果我需要一个在省电模式可以正常工作的定时器,是要用什么定时器呢?启动和关闭的函数是什么?
谢谢各位大大了!万分感谢!
 楼主| 发表于 2008-4-25 10:36:59 | 显示全部楼层
找到了一个定时器

kal_set_timer,kal_create_timer,kal_cancel_timer.这个timer是否是MTK封装Nucleus的timer呢?但在MMI里一用手机就重启了,不知道为什么.请教各位了.谢谢!

代码如下:
timerId = vm_create_timer("MY TIMER");
kal_set_timer(timerId, (kal_timer_func_ptr)timer_proc, NULL, 3, 0); // 3认为是15ms.

void timer_proc(void* p)
{
    //do something.
    kal_set_timer(timerId, (kal_timer_func_ptr)timer_proc, NULL, 3, 0);
}
点评回复

使用道具 举报

 楼主| 发表于 2008-4-28 09:39:19 | 显示全部楼层
发现在OslStartSoftTimer最后也也是调用了L4层的定时器,L4StartTimer函数声明如下:
void L4StartTimer(unsigned short nTimerId, oslTimerFuncPtr TimerExpiry, void * funcArg, unsigned long nTimeDurationInTicks, unsigned char alignment)
最后一个参数比较关键.
1.如果是TIMER_IS_NO_ALIGNMENT,定时器会在手机进入睡眠模式的时候停止,但是定时准确,误差在1ms以内.
2.如果是TIMER_IS_ALIGNMENT则定时器不会停,但是却会被delay.在MTK25上可能被delay150-300ms之间.MTK28上大约是50-60ms.

但是我想问一下如果需要精确定时,但是却不能在手机进入睡眠模式的时候停止,所以以上两个结果都不符合要求.
我用了kal_create_timer,kal_set_timer手机会重新启.已经迷惑了好长时间.高手帮下忙啦!谢谢了!
点评回复

使用道具 举报

发表于 2016-9-19 21:43:16 | 显示全部楼层
求问找到这个定时器没。。我也需要做一个不会休眠的精确定时器
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-5-10 11:12 , Processed in 0.044726 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表