K210中断按键,自复位按键的两种状态
自复位按键的功能通常有两种:
- 按下按键松手,蓝灯亮起,再次按下按键松手,蓝灯熄灭;
- 按下按键,蓝灯亮起,松手后,蓝灯熄灭。
功能1
from Maix import GPIO
from fpioa_manager import fm
import utime
#注册IO,注意高速GPIO口才有中断
fm.register(12, fm.fpioa.GPIO0)
fm.register(16, fm.fpioa.GPIOHS0)
#构建lED和KEY对象
LED_B=GPIO(GPIO.GPIO0,GPIO.OUT,value=1)
KEY=GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_UP)
#LED状态表示
state = 1
#中断回调函数
def fun(KEY):
global state
utime.sleep_ms(10) #消除抖动
if KEY.value()==0: #确认按键被按下
state = not state
LED_B.value(state)
#开启中断,下降沿触发
KEY.irq(fun, GPIO.IRQ_FALLING)
这里的关键点是中断回调函数的编写,重点实现两部分功能:
- 状态位的设置,以便状态反转切换
- 消抖动作
功能2
from Maix import GPIO
from fpioa_manager import fm
import utime
#注册IO,注意高速GPIO口才有中断
fm.register(12, fm.fpioa.GPIO0)
fm.register(16, fm.fpioa.GPIOHS0)
#构建lED和KEY对象
LED_B=GPIO(GPIO.GPIO0,GPIO.OUT,value=1)
KEY=GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_UP)
#LED状态表示
state = 1
#中断回调函数
def fun(KEY):
global state
utime.sleep_ms(10) #消除抖动
if KEY.value()==0: #确认按键被按下
LED_B.value(0)
else:
LED_B.value(1)
#开启中断,上升下降沿均触发
KEY.irq(fun, GPIO.IRQ_BOTH)
这里的关键点是中断回调函数的编写,重点实现两部分功能:
- 消抖动作
- 上升沿和下降沿均触发,并指定各自状态位。