上一节里,实现同一时刻只能有一个进程使用同一个设备,例如:只能有一个进程,在同一时刻里使用/dev/buttons这个设备。
上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17563953
相信大家在写单片机的按键程序时,也必将会涉及一点,就去按键去抖动。按键去抖动的方法无非有二种,一种是硬件电路去抖动,这种在要求不是特别高的情况下是不会被采用的;另一种就是延时去抖动了。而延时又一般分为二种,一种是for循环死等待,一种是定时延时。对,这一节里我们来使用内核的定时器去抖动。
问:linux内核定时器有哪些要素?
答:有两个要素:
一、超时时间
二、处理函数
问:linux定时器结构是怎样的?
答:
struct timer_list {
struct list_head entry;
unsigned long expires;
void (*function)(unsigned long);
unsigned long data;
struct tvec_base *base;
.....
};
问:void (*function)(unsigned long data)里面的参数是谁传给它的?
答:是timer_list.data传给它的,如果需要向function传递参数时,则应该设置timer_list.data,否则可以不设置。
问:与定时器相关的操作函数有哪些?
答:
一、使用init_timer函数初始化定时器