linux定时器Timer的用法

例子一:

#include<linux/kernel.h>

#include<linux/module.h>
#include<linux/init.h>
#include<linux/timer.h>
#include<linux/uaccess.h>  

MODULE_LICENSE("GPL");
MODULE_AUTHOR("James");
MODULE_DESCRIPTION("Timer Module");

struct timer_list timer;

void timer_func(int data)
{
    printk("<0>Timer Expired and para is %d!!\n",data);
}


int timer_init()
{
    init_timer(&timer);   //定时器初始化
    timer.data=10;         //设置超时处理函数参数
    timer.expires=jiffies+(10*HZ);   //设置超时jiffies值为10s  
    timer.function=timer_func;  //设置超时处理函数
    add_timer(&timer);       //添加定时器到内核
    return 0;
}


void timer_exit()
{
    del_timer(&timer);   //删除定时器
}

module_init(timer_init);
module_exit(timer_exit);
 
—————————————————————————————————
       定时器我在BCM代码的U盘读写时控制LED灯时用过,感觉还可以。就是有一点要注意,我当时是在定时器函数中检查变量A,如果A为1,则继续调用定时器。
 
       此时一定要注意,在下一次调用的时候,应该把前一次的定时器delete掉。
 
       加一个定时器:
 
        //add a timer;
       init_timer(&transfer_timer);
       transfer_timer.expires = jiffies + (2 * HZ);
       transfer_timer.data = (unsigned long) 10;  
       transfer_timer.function = usb_light_timer_funcation;
       add_timer(&transfer_timer);
 
       下面是我的定时器处理函数:
 
   

void usb_light_timer_funcation(unsigned long  p_data)
{
     printk( "*******    enter  usb_light_timer_funcation!  ********\n" );
 
      if(timer_blink_flag == 1)      
     {
         timer_blink_flag = 0; 
         del_timer(&transfer_timer);
         // 这里一定要先删除再加新定时器,不然系统就有问题了。 


         init_timer(&transfer_timer);
         transfer_timer.expires = jiffies +  (2 * HZ);
         transfer_timer.data = (unsigned long)10;
         transfer_timer.function = usb_light_timer_funcation;
         add_timer(&transfer_timer);
         printk( "*******  usb_light_timer_funcation:  renew  the timer !  ********\n" );
     }
     else
     {
         del_timer(&transfer_timer);
         printk( "*******  usb_light_timer_funcation:  delete  the timer !  ********\n" );

         usb_flag = 0;
         kerSysLedCtrl((BOARD_LED_NAME)( kLedUsb1), kLedStateOn);
     }
}

        
 
 
 
 
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值