定义结构体
static struct timer_list aw9523b_timer;
初始化,设置定时器中断函数,后添加定时器prob:
init_timer(&aw9523b_timer);
aw9523b_timer.function = aw9523b_timer_function;
add_timer(&aw9523b_timer);
到时后会触发函数,我们使用工作队列,来实现功能。不能在中断中处理大的工作。
static void aw9523b_timer_function(unsigned long data)
{
queue_work(aw9523b_workqueue, &aw9523b_work);
}
static struct work_struct aw9523b_work;
static struct workqueue_struct * aw9523b_workqueue = NULL;
初始化工作队列 名字为aw9523b_leds prob:
aw9523b_workqueue = create_singlethread_workqueue("aw9523b_leds");
INIT_WORK(&aw9523b_work, aw9523b_callback); //aw9523b_callback 为工作队列的任务函数
void aw9523b_callback(struct work_struct *work)
{
mod_timer(&aw9523b_timer, jiffies/100); // 1S/100 = 10ms 10ms后会再次触发定时器中断 aw9523b_timer_function函数
}