Linux 设备驱动之内核定时器 2020-02-20

2020-02-22  本文已影响0人  Focus_Uphold

该内核定时器的实现是基于低精度定时器实现,高精度定时器的实现代码更为复杂,将在其他章节做相应介绍
struct timer_list gpio_trigger_time;    //定义一个 time_list


probe 函数中添加如下:

init_timer(&gpio_trigger_time);//初始化定时器

gpio_trigger_time.expires = jiffies+HZ/100; //该种定时精度有限,表示定时 10 ms,HZ 表示 1s

gpio_trigger_time.function = gpio_trigger_time_function;  //定时时间到所调用函数

add_timer(&gpio_trigger_time); //添加定时器


static void gpio_trigger_time_function(unsigned long ptr)

{

      gpio_set_value(USER_PWM,GPIO_HIGH);    //定时器函数功能实现

     printk(KERN_INFO "gpio_trigger_time_function\n");  //打印输出

     gpio_trigger_time.expires = jiffies+HZ/100; //重新设定定时超时时间

     gpio_trigger_time.function = gpio_trigger_time_function; //定时时间到所调用函数

     add_timer(&gpio_trigger_time);//添加定时器

}

上一篇下一篇

猜你喜欢

热点阅读