Chinaunix首页 | 论坛 | 博客
  • 博客访问: 471233
  • 博文数量: 65
  • 博客积分: 573
  • 博客等级: 中士
  • 技术积分: 693
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-09 17:16
文章分类

全部博文(65)

文章存档

2015年(12)

2014年(9)

2013年(22)

2012年(7)

2011年(15)

分类: LINUX

2014-09-15 09:04:46

参考文章:http://www.ibm.com/developerworks/cn/linux/l-timers-list/

1.标准计时器:
    使用方法:
(1)定义一个定时器结构体:
        struct timer_list my_timer
(2)初始化并设置回调函数
        setup_timer( &my_timer, my_timer_callback, 0 );
(3)实现回调函数
void my_timer_callback( unsigned long data )
{
printk( "my_timer_callback called (%ld).\n", jiffies );
mod_timer&my_timerjiffies + msecs_to_jiffies(200) );
}
  (4) 启动、停止定时器
    start:   mod_timer&my_timerjiffies + msecs_to_jiffies(200) );
    stop:    del_timer(&my_timer);
2.高精度定时器:
    使用方法:
(1)定义一个高精度结构体:
        struct hrtimer hr_timer;
(2)初始化并设置回调函数
        hrtimer_init( &hr_timer , CLOCK_MONOTONIC, HRTIMER_MODE_REL ); 
        ihr_timer .function=hrtimer_callback;
(3)实现回调函数
static enum hrtimer_restart hrtimer_callback ( struct hrtimer *timer )
{
   printk("hrtimer callback running !\n");
    //如果加上hrtimer_start这句,就回反复回调
    //ktime_set( 0, 1* 1000 * 1000) 括号里前面一个参数表示秒,后面一个参数表示微妙,此时我们设定的时间是1ms
    hrtimer_start( &hr_timer  , ktime_set( 0, 1* 1000 * 1000), HRTIMER_MODE_REL ); 
    return HRTIMER_NORESTART;
}
  (4) 启动、停止定时器
        start:  hrtimer_start( &hr_timer  , ktime_set( 0, 1* 1000 * 1000), HRTIMER_MODE_REL ); 
        stop:  hrtimer_cancel(&infrared_data->hr_infrared_timer);
阅读(2726) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~