定時器使用示例
使用步驟:
1、調用init_timer
初始化一個定時器,給struct timer_list
各成員賦值。
2、調用add_timer
將定時器添加到內核定時器鏈表,時間到后回調函數自動調用,用mod_timer
修改expires
的值可實現循環定時。
3、不需要定時器時,調用del_timer
刪除。
單次定時
加載驅動一秒鐘后,打印出“timer handler, data:520
”:
#include < linux/init.h >
#include < linux/kernel.h >
#include < linux/module.h >
#include < linux/sched.h >//jiffies在此頭文件中定義
#include < linux/timer.h >//struct timer_list
struct timer_list timer;
static void timer_handler (unsigned long arg)
{
printk("timer handler, data:%dn", arg);
}
static int __init my_init(void)
{
printk("%s entern", __func__);
init_timer(&timer);
timer.expires = get_jiffies_64() + msecs_to_jiffies(1000);//定時1秒
timer.function = timer_handler;
timer.data = 520;
add_timer(&timer);
return 0;
}
static void __exit my_exit(void)
{
printk("%s entern", __func__);
del_timer(&timer);
}
module_init(my_init);
module_exit(my_exit);
MODULE_LICENSE("GPL");
循環定時
實現循環定時就是在定時時間到了之后, 調用mod_timer函數再次修改定時時間 。
每隔一秒鐘打印“timer handler, data:520
”
#include < linux/init.h >
#include < linux/kernel.h >
#include < linux/module.h >
#include < linux/sched.h >//jiffies在此頭文件中定義
#include < linux/timer.h >//struct timer_list
struct timer_list timer;
static void timer_handler (unsigned long arg)
{
printk("timer handler, data:%dn", arg);
mod_timer(&timer, get_jiffies_64() + msecs_to_jiffies (1000));
}
static int __init my_init(void)
{
init_timer(&timer);
timer.expires = get_jiffies_64() + msecs_to_jiffies (1000);//定時1秒
timer.function = timer_handler;
timer.data = 520;
add_timer(&timer);
return 0;
}
static void __exit my_exit(void)
{
del_timer(&timer);
}
module_init(my_init);
module_exit(my_exit);
MODULE_LICENSE("GPL");
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內核
+關注
關注
3文章
1372瀏覽量
40280 -
驅動
+關注
關注
12文章
1838瀏覽量
85262 -
Linux
+關注
關注
87文章
11292瀏覽量
209333 -
定時器
+關注
關注
23文章
3246瀏覽量
114721
發布評論請先 登錄
相關推薦
Linux驅動開發-內核定時器
內核定時器是內核用來控制在未來某個時間點(基于jiffies(節拍總數))調度執行某個函數的一種機制,相關函數位于 和 kernel/timer.c 文件
定時器、PWM、ICP范例(AVR 定時器使用范例)
/*************************************************** AVR 定時器使用范例 
發表于 11-01 01:23
?77次下載
如何利用單片機看門狗定時器使led閃爍
看門狗是為了防止程序跑飛而設定的,但是由于看門狗是一個類似于定時器,因此可以把他當作定時器來使用
示例代碼:用看門狗定時器使一個led閃爍
#include
void
發表于 02-11 10:00
?3951次閱讀
基于STM32定時器捕獲測量脈寬的應用示例
來實現脈寬測量,我們可以選用一個通道、也可以使用兩個通道。使用1個通道時,只需使用定時器基本的輸入捕獲功能結合中斷或DMA即可實現;若使用兩個通道時可以將捕獲功能與定時器的從模式來相結合完成。這里就兩種方案的實現示例都做個簡單
詳細剖析Linux和RTOS(RT-Thread)的時鐘和定時器的使用
Linux發燒友1.RTOS篇1.1RT-Thread簡介1.2時鐘管理1.2.1時鐘節拍1.3獲取系統節拍1.4定時器分類1.5定時器源碼分析1.6定時器相關函數1.61動態創建一個
發表于 01-17 09:31
?4次下載
利用通用定時器輸出PWM(附示例驅動直流電機)
上一節講述了時鐘樹和基本定時器的配置方法,本節先介紹通用定時器和基本定時器的差異,然后粗略講述PWM波原理,然后講述如何配置通用定時器,最后進行PWM波
發表于 04-03 14:56
?0次下載
CKS32F4xx系列產品的定時器使用-基本特征和定時操作
這一課我們將介紹CKS32F4XX系列產品的定時器使用,CKS32F4XX的定時器功能十分強大,包含2個高級控制定時器,8個普通定時器,2個基礎定時
Linux高精度定時器hrtimer使用示例
要使用高精度定時器hrtimer。 使用示例 單次定時 加載驅動一秒后輸出“ hrtimer handler ”: # include # include # include # in
評論