1、其实就是在按键按下以后延时一段时间再 去读取按键值,如果此时按键值还有效那就表示这是一次有效的按键,中间的延时就是消抖的。
是延时函数会浪费
CPU
性能,因为延时函数就是空跑。如果按键是用中 断方式实现的,那就更不能在中断服务函数里面使用延时函数,因为中断服务函数最基本的要 求就是快进快出。
按键采用中断驱动方式,当按键按下以后触发按键中断,在 按键中断中开启一个定时器,定时周期为
10ms
当定
时时间到了以后就会触发定时器中断,最后在
定时器中断处理函数中读取按键的值,如果按键值还是按下状态那就表示这是一次有效的按键。
何使用
EPIT1
来配合按键
KEY 来实现具体的消抖。
1
、配置按键
IO
中断
配置按键所使用的
IO
,因为要使用到中断驱动按键,所以要配置
IO
的中断模式。
2
、初始化消抖用的定时器
上面已经讲的很清楚了,消抖要用定时器来完成,所以需要初始化一个定时器,这里使用
上一章讲解的
EPIT1
定时器,也算是对
EPIT1
定时器的一次巩固。定时器的定时周期为
10ms
,
也可根据实际情况调整定时周期。
3
、编写中断处理函数
需要编写两个中断处理函数:按键对应的
GPIO
中断处理函数和
EPIT1
定时器的中断处理
函数。在按键的中断处理函数中主要用于开启
EPIT1
定时器,
EPIT1
的中断处理函数才是重点,
按键。要做的具体任务都是在定时器
EPIT1
的中断处理函数中完成的,比如控制蜂鸣器打开或关
闭。
①、一个
LED
灯
LED0
。
②、定时器
EPTI1
。
③、一个按键
KEY
。
④、一个蜂鸣器。