hrtimer是一个高精度计时器
本次使用了一个struct hrtimer mtimer;
struct work_struct mtimerwork;
hrtimer_init(&pTAS2557->mtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
pTAS2557->mtimer.function = firmware_timer_func;
另外:在static void tas2557_firmware_init(struct tas2557_priv *pTAS2557)函数中完成了hrtimer_init的初始化工作
{
INIT_WORK(&pTAS2557->mtimerwork, firmware_work_routine); //工作队列-----------------+
hrtimer_start(&pTAS2557->mtimer, |
ktime_set(ram_timer_val/1000, (ram_timer_val%1000)*1000000), |
HRTIMER_MODE_REL); //设置定时参数 |
}
|
--------------------------------------------------------------分割线------------------------------+
其中: static enum hrtimer_restart temperature_timer_func(struct hrtimer *timer)指定回调函数 |
static void timer_work_routine(struct tas2557_priv *pTAS2557) <--------------------+
相关内容:
struct hrtimer 结构体
1.hrtimer_init hrtimer初始化工作
hrtimer_init(&vibe_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
其中:vibe_timer.function = timer_func; timer_func自己定义
hrtimer结构体变量.函数
2.static enum hrtimer_restart timer_func(struct hrtimer *timer)
设置定时器回调函数,定时器到调用该函数(不可中断)
3.hrtimer_start
hrtimer_start(&vibe_timer,
ktime_set(value / 1000, (value % 1000) * 1000000),HRTIMER_MODE_REL);
第一个参数是秒 第二个参数为毫秒
4.要取消一个hrtimer,使用hrtimer_cancel:
int hrtimer_cancel(struct hrtimer *timer);
参考资料:
https://www.cnblogs.com/sky-heaven/p/5404620.html
https://www.cnblogs.com/zzb-Dream-90Time/p/7098225.html