K210_MaixPy IDE外设开发之四 按键中断

开发板:K210 AIRV R3版 widora

开发环境:MaixPy IDE 矽速家的

必须的参考网站:

https://cn.maixpy.sipeed.com/zh/api_reference/Maix/fpioa.html

https://cn.maixpy.sipeed.com/zh/api_reference/Maix/gpio.html

打开 Maixpy IDE,新建文件 名字为 _3key_irq.py

代码用上节的key的,然后再改

LED和KEY的配置都用上一节的,因此我们这节只用配置中断即可

设置中断回调函数名字为key1_irq, 其中中断方式为下降沿

key1.irq(key1_irq,GPIO.IRQ_FALLING,GPIO.WAKEUP_NOT_SUPPORT,7)

功能是: 按下KEY1的时候, LED2的状态翻转

同时while1那边不断的闪烁LED1

中断函数如下

def key1_irq(pin_num):
    global i
    if(i==0):
        i = 1
    else    :
        i = 0
    led2.value(i)

引入了一个调用全局变量global关键字,我刚去学了半个小时这个才找出怎么设定一个标志位的

完整代码如下

import utime
from Maix import FPIOA
from Maix import GPIO


def key1_irq(pin_num):
    global i
    if(i==0):
        i = 1
    else    :
        i = 0
    led2.value(i)


fpioa = FPIOA()
fpioa.set_function(17,fpioa.GPIOHS0)
fpioa.set_function(18,fpioa.GPIOHS1)

fpioa.set_function(19,fpioa.GPIOHS2)
fpioa.set_function(20,fpioa.GPIOHS3)

led1 = GPIO(GPIO.GPIOHS0,GPIO.OUT)
led2 = GPIO(GPIO.GPIOHS1,GPIO.OUT)

key1 = GPIO(GPIO.GPIOHS2,GPIO.IN,GPIO.PULL_DOWN)
key2 = GPIO(GPIO.GPIOHS3,GPIO.IN,GPIO.PULL_NONE)

led1.value(0)
led2.value(0)
global i
i=0
key1.irq(key1_irq,GPIO.IRQ_FALLING,GPIO.WAKEUP_NOT_SUPPORT,7)


while(1):
    led1.value(0)
    utime.sleep_ms(500)
    led1.value(1)
    utime.sleep_ms(500)


好了之后,连接开发板,运行程序,切换到串口终端

现象:LED有一个LED再闪(500ms一次)

按key1会使得另一个LED切换状态

猜你喜欢

转载自blog.csdn.net/jwdeng1995/article/details/108938902