linux内核中使用定时器

一、使用Linux 内核定时器
Linux 内核定时器采用系统时钟来实现, Linux 内核定时器使用很简单,只需要提供超时时间(相当于定时值)和定时处理函数即可,当超时时间到了以后设置的定时处理函数就会执行,和我们使用硬件定时器的套路一样,只是使用内核定时器不需要做一大堆的寄存器初始化工作。在使用内核定时器的时候要注意一点,内核定时器并不是周期性运行的,超时以后就会自动关闭,因此如果想要实现周期性定时,那么就需要在定时处理函数中重新开启定时器。 Linux 内核使用 timer_list 结构体表示内核定时器, timer_list 定义在文件include/linux/timer.h 中。具体步骤:
1、在设备结构体定义一个timer_list结构体

/* ad7606设备结构体 */
struct ad7606_dev{
   
 dev_t devid;			/* 设备号 	 */
 struct cdev cdev;		/* cdev 	*/
 struct class *class;    /* 类 		*/
 struct device *device;	/* 设备 	 */
 int major;				/* 主设备号	  */
 int minor;				/* 次设备号   */
 /*添加定时器*/
 int timeperiod; 		/* 定时周期,单位为ms */
 struct timer_list timer;/* 定义一个定时器*/
 spinlock_t lock;		/* 定义自旋锁 */
};

在设备初始化时初始化定时器

	/* 初始化timer,设置定时器处理函数,还未设置周期,所有不会激活定时器 */
	init_timer(&ad7606.timer);
	ad7606.timer.fu
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值