Đồng hồ bấm giờ trong mô-đun hạt nhân với độ chính xác dưới micro giây


7

Chào buổi tối, tôi đang nhờ bạn giúp đỡ, để hiểu cách sử dụng bộ đếm thời gian trong mô-đun hạt nhân để đạt được nhiệm vụ định kỳ với thời gian dưới một phần triệu giây. Tôi đã tìm kiếm trên web và tôi đã tìm thấy tồn tại một Timer (bên ARM) có khả năng thời gian như vậy. Có ai đó đã sử dụng nó và có thể cho tôi một gợi ý nhỏ?

Câu trả lời:


5

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;
}

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.