Linux驅動timer定時器例項分析

2021-08-20 03:59:02 字數 2602 閱讀 4868

#include

#include

#include

定義定時器結構體變數:

static struct timer_list test_timer;

初始化核心定時器:

init_timer(struct  timer_list *timer)

init_timer(&test_timer);

對timer_list成員變數進一步初始化:

test_timer.function=&timer_func;

test_timer.expires=jiffies + 100*(1000/hz);

啟用定時器

void add_timer(struct  timer_list *timer)

add_timer(&test_timer);

停止定時器

int del_timer(struct  timer_list *timer)

del_timer(&test_timer);

修改定時器expires

int mod_timer(struct timer_list * timer,unsigned long expires)//修改定時器的到期時間

mod_timer(&test_timer, jiffies + 100*(1000/hz));

3,驅動例子:

#include

#include

#include

#include

#include

#include

#include

static struct timer_list test_timer;

static void timer_func(unsigned long data)

static int init_test_timer(void)

2 完整驅動例項:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#inlcude

#include

#define device_name "timertest"

/*test結構體*/

struct test_dev

;struct test_dev *test_devp; /*裝置結構體指標*/

/*定時器處理函式*/

static void test_timer_handle(unsigned long arg)

/*檔案開啟函式*/

int test_open(struct inode *inode, struct file *filp)

/*檔案釋放函式*/

int test_release(struct inode *inode, struct file *filp)

/*test讀函式*/

static ssize_t test_read(struct file *filp, char __user *buf, size_t count,

loff_t *ppos)

/*檔案操作結構體*/

static const struct file_operations test_fops =

;static struct miscdevice misc_test=;

/*裝置驅動模組載入函式*/

int test_init(void)

//清空裝置結構

memset(test_devp, 0, sizeof(struct test_dev));

return 0;

}/*模組解除安裝函式*/

void test_exit(void)

module_author("mhao");

module_license("dual bsd/gpl");

module_init(test_init);

module_exit(test_exit);

3,測試例項:

#include

#include

#include

#include

#include

#include

int main(int argc char **argv)

}    

}else

close(fd);

return 0;

} 4,執行結果:

seconds after open /dev/timertest :1

seconds after open /dev/timertest :2

seconds after open /dev/timertest :3

seconds after open /dev/timertest :4

seconds after open /dev/timertest :5

linux 驅動中定時器timer學習

linux中定時器,比較簡單。struct timer list 步驟 init timer struct timer list timer 初始化定時器 add timer struct timer list timer 啟動定時器 del timer struct timer list time...

Timer定時器開發

timer定時器開發 定時器的作用是不佔執行緒的等待乙個確定時間,同樣通過callback來通知定時器到期。參考 定時器的建立 同樣是在wftaskfactory類裡的方法 using timer callback t std function class wftaskfactory static ...

Timer定時器開發

timer定時器開發 定時器的作用是不佔執行緒的等待乙個確定時間,同樣通過callback來通知定時器到期。參考 定時器的建立 同樣是在wftaskfactory類裡的方法 using timer callback t std function class wftaskfactory 第乙個引數為定...