K210学习笔记(二)按键与外部中断

    这里将按键与外部中断联合在一起学习,因为都需要用到按键来进行实验,先说实验现象。通过板载按键(这里使用的是CanMv版本的K210),实现对板载LED的控制。按键按下,led灯反转亮灭。

    点灯需要将gpio配置成输出模式,按键则需要使用gpio对应的输入模式。通过扫描gpio的value值,判断是否有按键按下。通过板子电路图我们可以知道,当按键按下时,IO16被拉低,所以当io16为低电平时,我们可知按键按下。

 同时,我们可将该io映射到K210的任意内部IO上,因为要做外部中断,我们选择高速GPIO0(GPIOHS0),中断函数如下(K210只有高速GPIO有外部中断)

  这里中断还是用中断回调的方式去执行,但是跟stm32还是有很多不同的地方(后面有机会总结一下)

同时还有一个中断关闭的函数

 

下面就是主要程序的编写啦


from maix import GPIO
from fpioa_manager import fm
import utime


#注册对应IO口
LEDB=fm.register(35,fm.fpioa.GPIO0)
Interrupt1=fm.register(16,fm.fpioa.GPIOHS0)
#配置对应GPIO口(led和外部中断按键)
LEDB=GPIO(GPIO.GPIO0,GPIO.OUT,value=1)
Interrupt1=GPIO(GPIO.GPIOHS0,GPIO.IN,GPIO.PULL_UP)

#led状态显示
state=1
#中断回调函数

def Interrupt(Interrupt1):
    global state
    utime.sleep_ms(10)#消除抖动
    if Interrupt1.value()==0:
       state=not state
       LEDB.value(state)
Interrupt1.irq(Interrupt,GPIO.IRQ_FALLING)


while True:
      pass

要注意就是消抖部分,这部分几乎是不可或缺的,按键在按下的过程中并不是完美的一个方波曲线,相反会有一部分抖动,如果不用消抖的话可能会影响整个程序的正常运行(比如莫名其妙的进中断)

 这是理想情况下的,可以选择下降沿捕获进中断也可以选择上升沿捕获进中断,也可以采用双边沿触发

 这是实际按键按下的情况,因为存在抖动所以最好加一个消抖让按键更稳定(也不会因为误触导致进入中断)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cointreau97

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值