Thực hiện nó! Đây là phần bao gồm
#include <linux/hrtimer.h>
#include <linux/sched.h>
Đây là khối biến
/****************************************************************************/
/* Timer variables block */
/****************************************************************************/
static enum hrtimer_restart function_timer(struct hrtimer *);
static struct hrtimer htimer;
static ktime_t kt_periode;
Đây là sự khởi tạo
kt_periode = ktime_set(0, 100); //seconds,nanoseconds
hrtimer_init (& htimer, CLOCK_REALTIME, HRTIMER_MODE_REL);
htimer.function = function_timer;
hrtimer_start(& htimer, kt_periode, HRTIMER_MODE_REL);
Đây là thủ tục để hủy bỏ việc thực hiện bộ đếm thời gian
hrtimer_cancel(& htimer);
và đây là cuộc gọi lại
static enum hrtimer_restart function_timer(struct hrtimer * unused)
{
if (gpio_current_state==0){
gpio_set_value(GPIO_OUTPUT,1);
gpio_current_state=1;
}
else{
gpio_set_value(GPIO_OUTPUT,0);
gpio_current_state=0;
}
hrtimer_forward_now(& htimer, kt_periode);
return HRTIMER_RESTART;
}