• ESP8266——GPIO和外部中断


    1.GPIO

      将电路板连接到外部世界并控制其他组件的方法是通过 GPIO 引脚。并非所有引脚都可以使用,在大多数情况下,只能使用引脚 0、2、4、5、12、13、14、15 和 16。分别对应的是开发板上引脚的GPIO0、GPIO2、...GPIO15和GPIO16。

    图1-1 NodeMCU开发板引脚示意图

     

    针脚在机器模块中可用,因此请确保首先导入该引脚。然后,您可以使用:

    >>> pin = machine.Pin(0)

    此处,"0"是您要访问的引脚。通常,您希望将引脚配置为输入或输出,并在构造引脚时执行此操作。要使用输入引脚:

    >>> pin = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP)

    对于输入拉取模式,可以使用PULL_UP或无。如果未指定,则默认为"无",即无拉电阻。GPIO16 没有上拉模式。您可以使用以下功能读取引脚上的值:

    >>> pin.value()
    0

    板上的引脚可能会在此处返回 0 或 1,具体取决于其连接的内容。要使用输出引脚:

    >>> pin = machine.Pin(0, machine.Pin.OUT)

    然后使用:

    >>> pin.value(0)
    >>> pin.value(1)

    或:

    >>> pin.off()
    >>> pin.on()

     2.外部中断

    除数字 16 外,所有引脚都可以配置为在输入发生变化时触发硬中断。您可以设置要在触发器上执行的代码(回调函数)。

    让我们首先定义一个回调函数,该函数必须采用单个参数,即触发该函数的引脚。我们将使函数只打印引脚:

    >>> def callback(p):
    ...     print('pin change', p)

    接下来,我们将创建两个引脚并将其配置为输入:

    >>> from machine import Pin
    >>> p0 = Pin(0, Pin.IN)
    >>> p2 = Pin(2, Pin.IN)

    最后,我们需要告诉引脚何时触发,以及当它们检测到事件时调用的函数:

    
    
    >>> p0.irq(trigger=Pin.IRQ_FALLING, handler=callback)
    >>> p2.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=callback)
    
    

    我们将引脚 0 设置为仅在输入的下降沿(当它从高到低)上触发,并将引脚 2 设置为在上升和下降边缘触发。输入此代码后,您可以将高电压和低电压应用于引脚 0 和 2 以查看正在执行的中断。

    一旦事件发生,硬中断将触发,并将中断任何正在运行的代码,包括 Python 代码。因此,回调函数在它们能做什么(例如,它们不能分配内存)方面受到限制,并且应该尽可能短和简单。

  • 相关阅读:
    CSS选择器实现搜索功能 驱动过滤搜索技术
    js实现倒计时 类似团购网站
    SQL Server系统表sysobjects介绍与使用
    四种开机的奇葩方法 设置定时开机
    sass 使用小记
    flex 弹性布局
    margin padding width height left top right bottom 百分比
    vue中canvas 实现手势密码
    babel-polyfill(解决浏览器不支持es6的问题)和es6-promise(解决不支持promise的问题)
    Ajax fetch axios的区别与优缺点
  • 原文地址:https://www.cnblogs.com/iBoundary/p/11987138.html
Copyright © 2020-2023  润新知