Linux使用定时器消抖

按键去抖动的方法主要有两种,一种是硬件电路去抖动;另外一种就是软件延时去抖。而延时又一般分为两种,一种是for循环等待,另一种是定时器延时。在操作系统中,由于效率方面的原因,一般不允许使用for循环来等待,只能使用定时器。

Linux内核使用struct timer_list来描述一个定时器:

{

struct list_head entry;

unsigned long expires; //定时器定时时间

void (*function)(unsigned long);//定时器发生后调用函数

unsigned long data;

struct tvec_base *base;

};

Linux内核定时器使用流程:

1.定义定时器变量

2.初始化定时器

2.1init_timer初始化

2.2设置超时函数

3.add_timer注册定时器

4.mod_timer启动定时器

struct work_struct *work;
struct timer_list xxx_timer;


/* 当进入中断函数,首先执行关于中断硬件的部分,然后调用工作队列工作work_func */
/* work_func函数调用mod_timer开启定时器,开始计时,计时结束后调用xxx_timer_function函数*/
/* 进入xxx_timer_function函数识别中断源,执行中断函数功能*/




void work_func(struct work_struct *work)
{
    mod_timer(&xxx_timer, jiffies + (HZ /10));
//jiffies是一个全局变量,表示现在的时间(使用滴答表示,一秒一千个滴答),
//一个HZ是一秒,HZ /10表示一百个毫秒
}


void xxx_timer_function(unsigned long data)  
{




irqreturn_t xxx_int(int irq, void *dev_id)
{
//执行关于硬件部分程序


    //提交下半部
    schedule_work(work);


    //return 0;
    return IRQ_HANDLED;
}


int xxx_open(struct inode *node,struct file *filp)
{
    return 0;
}


struct file_operations xxx_fops = 
{
    .open = xxx_open,
};


struct miscdevice xxx_miscdev = {
    .minor = 200,
    .name = "  ",
    .fops = &xxx_fops,
};


static int xxx_init()
{
//注册混杂设备
    misc_register(&xxx_miscdev);


    //注册中断处理程序
    request_irq(IRQ_EINT0,xxx_int,IRQF_TRIGGER_FALLING,"  ",0);


    //创建工作(队列工作)
    work = kmalloc(sizeof(struct work_struct),GFP_KERNEL);
    INIT_WORK(work, work_func);


    /* 初始化定时器 */  
    init_timer(&xxx_timer); 
/* 指定定时器中断发生后调用函数 */
    xxx_timer.function  = xxx_timer_function;  


    /* 向内核注册一个定时器 */  
    add_timer(&xxx_timer);  
 
    return 0;
}


static void button_exit()
{
/* 注销混杂设备 */
    misc_deregister(&xxx_miscdev);
}


module_init(xxx_init);
module_exit(xxx_exit);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用于四线电阻屏的触摸驱动 触摸屏的简要介绍和安装准备 通用的四线电阻触摸屏的特点; 电阻触摸屏的安装准备; 安装电阻触摸屏的注意事项; 触摸屏的安装 触摸屏的安装过程; 触摸屏的驱动软件安装; 触摸屏的硬件安装; 触摸屏的具体使用方法和注意事项 排除故障的要点总结 触摸屏的简要介绍和安装准备 通用的四线电阻触摸屏的特点;    最近几年, 人机对话的界面刚发展起来的一项新技术,它通过计算机技术四线/触摸屏控制处理声音、图像、视频、文字、动画等信息,并在这些信息间建立一定的逻辑关系,使之成为能交互地进行信息存取和输出的集成系统。    触摸屏系统符合简便、经济、高效的原则,具有人机交互性好、 操作简单灵活、输入速度快等特点。它与迅猛发展的计算机网络和四线/触摸屏控制多媒体技术相结合,使用者仅仅用手指触摸屏幕,就能进行信息检索、数据分析,甚至可以做出身临其境、栩栩如生的效果;较键盘输入简单、直观、快捷,具有丰富多采的表现能力,比以往任何传媒更具亲合力。    触摸屏在我国已经得到了非常广阔的应用,主要是公共信息的查询;如电信局、税务局、银行、电力等部门的业务查询;城市街头的信息查询;此外应用于领导办公、工业控制、军事指挥、电子游戏、点歌点菜、多媒体教学、房地产预售等。如今,触摸屏特别是电阻式触摸屏,在不断走入大众家庭。    ,四线电阻式触摸屏:电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层四线/触摸屏控制复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层而内表面也涂有一层透明导电层,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘,见图1。    图1 四线电阻触摸屏的基本原理    当手指触摸屏幕时,平常相互绝缘的两层导电层就在触摸点位置有了一个接触导通,因其中一面导电层接通Y纵轴方向的参考电压Vref=5v均匀电压场,使得侦测层的电压由零变为非零,控制器侦测到这个接通后,进行模数A/D转换,并将得到的电压值与参考电压Vref相比即可得到触摸点的Y轴坐标,同理得出X横轴的四线/触摸屏控制坐标,这就是所有电阻技术触摸屏共同的最基本原理。     四线电阻式触摸屏的特点:高解析度(能轻松达到4096*4096),高速传输反应*(小于1/100秒)。 表面硬度处理,减少擦伤、刮伤及防化学处理。一次校正,永不漂移,稳定性高。不怕灰尘、水汽和油污,使用环境要求低,可以用任何非菱角的物体来触摸,技术工艺很成熟,成本较低,是最为广泛实用的触摸屏。 电阻触摸屏的安装准备; 首先,要准备好基本部件:包括:触摸屏,触摸笔,驱动程序(光盘),控制卡,连接线和延长线*(可根据实际需要取舍)。 控制卡按接口类型分为USB型和串口型两种*(通常选用USB型),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值