高分辨率定時器(hrtimer)以ktime_t來定義時間, 精度可以達到納秒級別 ,ktime_t定義如下:
typedef s64 ktime_t;
可以用ktime_set來初始化一個ktime對象,常用方法如下:
ktime_t t = ktime_set(secs, nsecs);
高分辨率hrtimer結構體定義如下:
struct hrtimer {
struct timerqueue_node node;
ktime_t _softexpires;
enum hrtimer_restart (*function)(struct hrtimer *);
struct hrtimer_clock_base *base;
unsigned long state;
......
};
enum hrtimer_restart {
HRTIMER_NORESTART, /* Timer is not restarted */
HRTIMER_RESTART, /* Timer must be restarted */
};
struct hrtimer結構體中最主要的成員就是回調函數function,回調函數的返回值可以為HRTIMER_NORESTART或HRTIMER_RESTART。HRTIMER_NORESTART代表不需要重啟定時器,HRTIMER_RESTART代表需要重啟定時器。
最常用的接口如下:
hrtimer_init(struct hrtimer *timer, clockid_t clock_id , enum hrtimer_mode mode)
hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode)
hrtimer_forward_now(struct hrtimer *timer,ktime_t interval)
hrtimer_cancel(struct hrtimer *timer)
hrtimer_init:初始化 struct hrtimer結構對象。clockid_t 是時鐘的類型, 種類很多,常見的有四種:
CLOCK_REALTIME:系統實時時間。CLOCK_MONOTONIC:從系統啟動時開始計時,自系統開機以來的單調遞增時間CLOCK_PROCESS_CPUTIME_ID:本進程到當前代碼系統CPU花費的時間,包含該進程下的所有線程。CLOCK_THREAD_CPUTIME_ID:本線程到當前代碼系統CPU花費的時間。
mode 是時間的模式,可以是 HRTIMER_MODE_ABS, 表示絕對時間, 也可以是 HRTIMER_MODE_REL,表 示相對時間。hrtimer_start:啟動定時器。tim 是設定的到期時間, mode 和hrtimer_init中的mode參數含義相同。hrtimer_forward_now: 修改到期時間為從現在開始之后的 interval 時間。hrtimer_cancel:取消定時器。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
驅動
+關注
關注
12文章
1954瀏覽量
88522 -
Linux
+關注
關注
88文章
11759瀏覽量
219013 -
定時器
+關注
關注
23文章
3368瀏覽量
123604
發布評論請先 登錄
相關推薦
熱點推薦
Linux時間子系統中的高精度定時器(HRTIMER)的原理和實現
雖然大部分時間里,時間輪可以實現O(1)時間復雜度,但是當有進位發生時,不可預測的O(N)定時器級聯遷移時間,這對于低分辨率定時器來說問題不大,可是它大大地影響了定時器的精度;
發表于 05-10 14:11
?8168次閱讀
詳解高精度定時器與高級控制定時器
在高精度定時器中,可以使用外部事件來對 PWM 輸出進行封鎖,并可自動恢復;在高級控制定時器中,可以使用 Break 或是 Clr_input 來對 PWM 輸出進行封鎖, 然后也可以自動恢復,其中 Break 必須結合 AOE
Linux驅動開發高精度定時器的精度測量評測
前言 今天我們來評測linux內核的高精度定時器。順便利用通過Tektronix示波器 和 DS100 Mini 數字示波器進行交叉測試。 因項目需要用到精準的時間周期,所以要評估它的可行性,并驗證
LAT1173高精度定時器的同步功能應用筆記
STM32G474 所含的高精度定時器(HRTIMER)其實包含了多個定時器,多個定時器之間可以單獨工作,也可以進行同步,且
發表于 01-11 17:32
?0次下載
Linux驅動高精度定時器hrtimer
評論