zoukankan      html  css  js  c++  java
  • 按键消抖

    之前我们的按键程序没有考虑抖动的情况。

    按键按下的会有尖峰脉冲,常见的两种消抖方式:

    第一:硬件消抖

    并联一个电容,利用电容的充放电过程消抖。

    第二:软件消抖

    一般的用法就是一个延时,在不是us、ns必争的的场合,延时个几毫秒(一般5-10ms)再读取按键值就可以消除抖动了。

    韦老师的方法是在按键中断键值读取之前加了一个10ms的定时器延时。

    在按键中断的服务函数中,开启一个10ms的定时器,然后10ms定时器时间到了之后,再去读取按键值。

    这里主要学习几个内核函数和几个timer的概念。

    上面的HZ是一个宏,HZ定义成多少我们不用关心,只用知道用HZ代表的单位是秒。所以HZ/100就是10ms的时间了。

    jiffies是一个全局变量,它代表了内核的时基。

    时间结构体是一个链表,暂时我只用关心怎么初始化里面的元素,怎么调用可以实现定时器,进阶的待阅读源码。

    定时器使用步骤:

    1.先定义一个定时器的链表,然后初始化链表init_timer函数,给定时器回调函数赋值buttons_timer.function =XXX,添加定时器add_timer函数

    2.需要更改定时器的值调用mod_timer函数

    3.定时器时间到了之后,在定时器回调函数中执行想要的操作。

  • 相关阅读:
    简单的一个php验证登陆代码
    目标,信念,坚强,淡定,团队
    linux下安装redis及PHP扩展应用
    mysql 命令行 隔离级别
    数据库事务的隔离级别
    mysql 乐观锁和悲观锁
    SpringBoot跨域问题CORS解决
    Oracle SQL题目及其解答(学生、课程、成绩、教师)
    SpringCloud学习2-eureka
    SpringCloud学习1-概述
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/8982997.html
Copyright © 2011-2022 走看看