在线时间0 小时
UID319119
注册时间2011-9-21
NXP金币0
该用户从未签到
新手上路

- 积分
- 0
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2011-12-23 10:27:00
|
显示全部楼层
回复:定时器的问题
谢谢你的回答。前几天我已经试过了。
/////////////////////////////////////
MQX_TICK_STRUCT ticks;
MQX_TICK_STRUCT dticks;
_timer_id on_timer;
_timer_create_component(TIMER_TASK_PRIORITY, 1024);
_time_init_ticks(&dticks, 0);
_time_add_msec_to_ticks(&dticks,5);
_time_get_ticks(&ticks);
_time_add_msec_to_ticks(&ticks, 100);
on_timer = _timer_start_periodic_at_ticks(LED_twinkle, 0, TIMER_KERNEL_TIME_MODE, &ticks, &dticks);
//////////////////////////////////
// 我刚开始写的时候,发现_timer_start_periodic_at_ticks函数调用_timer_start_periodic_at_internal函数的时候把小于10毫秒的时间屏蔽了,后来我改了一下,dticks可以设小于10毫秒的时间,我设了一个计数器在LED_twinkle里,经过延时后,计数器的值是对了,后来我在LED_twinkle加入时间记录计数器,发现dticks小于10毫秒,不管是多少,LED_twinkle这个函数依然是只能每隔10毫秒才被执行,我设成5毫秒,其实是每隔10毫秒,执行LED_twinkle两次,设成500微妙,就是每隔10毫秒,执行LED_twinkle20次。任务切换时间是10毫秒,定时器也是一个任务,所以定时器不管设多小的值,都是10毫秒切换出来执行一次函数。
现在没有头绪,估计要改内核,并且改动很大,很困难。
我就是想每隔500毫秒执行一次采样,不知道有没有什么好的思路和想法能提供一下,谢谢! |
|