该内核定时器的实现是基于低精度定时器实现,高精度定时器的实现代码更为复杂,将在其他章节做相应介绍
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);//添加定时器
}
网友评论