全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Linux驱动定时器使用示例

时间:2023-10-04 15:47

人气:

作者:admin

标签: 驱动  定时器  内核 

导读:定时器使用示例 使用步骤: 1、调用 init_timer 初始化一个定时器,给 struct timer_list 各成员赋值。 2、调用 add_timer 将定时器添加到内核定时器链表,时间到后回调函数自动调用,用 mod_...

定时器使用示例

使用步骤:

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");
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信