0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux驱动定时器使用示例

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-10-04 15:47 次阅读

定时器使用示例

使用步骤:

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

    文章

    1309

    浏览量

    39862
  • 驱动
    +关注

    关注

    11

    文章

    1718

    浏览量

    84354
  • Linux
    +关注

    关注

    87

    文章

    10992

    浏览量

    206744
  • 定时器
    +关注

    关注

    23

    文章

    3148

    浏览量

    112053
收藏 人收藏

    评论

    相关推荐

    Linux驱动开发-内核定时器

    内核定时器是内核用来控制在未来某个时间点(基于jiffies(节拍总数))调度执行某个函数的一种机制,相关函数位于 和 kernel/timer.c 文件
    的头像 发表于 09-17 15:06 1215次阅读

    Linux内核定时器的相关资料分享

    del_timer函数mod_timer函数示例代码按键消抖Linux内核定时器概念Linux内核定时器基础知识
    发表于 12-20 08:05

    Linux下实时定时器的实现及应用

    在嵌入式平台的开发过程中,由于控制硬件的要求,常常需要提供精度在μs级的定时器;而linux内核由于采用了分时系统,一般不提供这种级别的定时器。笔者在开发高端PDA 的过程
    发表于 04-16 09:19 36次下载

    Linux下一种高性能定时器池的实现

    提出Linux用户空间下的一种高性能定时器池的实现方法。主要基于时间轮、红黑树及Linux内核提供了一种利于管理的定时器句柄Timerfd。结合红黑树、位图、时间轮等技术,设计一种高性
    发表于 09-25 14:57 25次下载

    STM32F1通用定时器示例讲解_Timebase

    STM32F1通用定时器示例详解—Timebase
    发表于 12-07 18:14 0次下载

    如何利用单片机看门狗定时器使led闪烁

    看门狗是为了防止程序跑飞而设定的,但是由于看门狗是一个类似于定时器,因此可以把他当作定时器来使用 示例代码:用看门狗定时器使一个led闪烁 #include void
    发表于 02-11 10:00 3699次阅读
    如何利用单片机看门狗<b class='flag-5'>定时器使</b>led闪烁

    关于STM32定时器触发SPI逐字收发之应用示例

    STM32定时器触发SPI逐字收发之应用示例
    的头像 发表于 01-14 16:35 5071次阅读

    基于STM32定时器捕获测量脉宽的应用示例

    来实现脉宽测量,我们可以选用一个通道、也可以使用两个通道。使用1个通道时,只需使用定时器基本的输入捕获功能结合中断或DMA即可实现;若使用两个通道时可以将捕获功能与定时器的从模式来相结合完成。这里就两种方案的实现示例都做个简单
    的头像 发表于 01-02 18:17 1.2w次阅读
    基于STM32<b class='flag-5'>定时器</b>捕获测量脉宽的应用<b class='flag-5'>示例</b>

    WinCC中定时器使用方法介绍

    WinCC中定时器使用方法介绍说明。
    发表于 04-22 14:50 8次下载

    详细剖析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次下载
    详细剖析<b class='flag-5'>Linux</b>和RTOS(RT-Thread)的时钟和<b class='flag-5'>定时器</b>的使用

    Linux驱动开发高精度定时器的精度测量评测

    前言 今天我们来评测linux内核的高精度定时器。顺便利用通过Tektronix示波器 和 DS100 Mini 数字示波器进行交叉测试。 因项目需要用到精准的时间周期,所以要评估它的可行性,并验证
    的头像 发表于 08-09 11:17 1652次阅读

    Linux内核定时器

    Linux内核中,也可以通过定时器来完成定时功能。但和单片机不同的是,Linux内核定时器是一种基于未来时间点的计时方式,它以当前时刻为启
    的头像 发表于 09-22 08:56 1427次阅读
    <b class='flag-5'>Linux</b>内核<b class='flag-5'>定时器</b>

    利用通用定时器输出PWM(附示例驱动直流电机)

    上一节讲述了时钟树和基本定时器的配置方法,本节先介绍通用定时器和基本定时器的差异,然后粗略讲述PWM波原理,然后讲述如何配置通用定时器,最后进行PWM波
    发表于 04-03 14:56 0次下载
    利用通用<b class='flag-5'>定时器</b>输出PWM(附<b class='flag-5'>示例</b><b class='flag-5'>驱动</b>直流电机)

    CKS32F4xx系列产品的定时器使用-基本特征和定时操作

    这一课我们将介绍CKS32F4XX系列产品的定时器使用,CKS32F4XX的定时器功能十分强大,包含2个高级控制定时器,8个普通定时器,2个基础定时
    的头像 发表于 05-19 09:18 549次阅读
    CKS32F4xx系列产品的<b class='flag-5'>定时器使</b>用-基本特征和<b class='flag-5'>定时</b>操作

    Linux高精度定时器hrtimer使用示例

    要使用高精度定时器hrtimer。 使用示例 单次定时 加载驱动一秒后输出“ hrtimer handler ”: # include # include # include # in
    的头像 发表于 10-04 15:38 593次阅读