Skip to content

GPIO 口使用说明

MicroPython 中使用 GPIO 口主要是用到了 machine 模块中的 Pin 类,具体函数说明如下:

  • class machine.Pin(id, mode=-1, pull=-1, *, value)

    构造函数,用于声明与初始化 GPIO 口对象:

    id:GPIO 编号,如使用 GPIO13 则此处填写 13;

    mode:模式,可选 Pin.INPin.OUTPin.OPEN_DRAIN

    pull:使用内部上下拉电阻,可选 NonePin.PULL_UPPin.PULL_DOWN ,部分IO口可以设置为 PULL_HOLD 模式,可以在深度睡眠时保持其状态;

    value:输出或开漏模式下端口值,0为低(off)、1为高(on);

  • Pin.init(mode=-1, pull=-1, *, value, drive, alt)

    重新初始化GPIO口;

  • Pin.value([x])

    不填写参数使用时返回端口的值,参数填写0(False)、1(True)改变端口值;

  • Pin.on()

    输出或开漏模式下将端口设置为高;

  • Pin.off()

    输出或开漏模式下将端口设置为低;

  • Pin.irq(handler=None, trigger=(Pin.IRQ_FALLING | Pin.IRQ_RISING), *,wake=None)

    用于设置外部中断:

    handler:中断触发回调函数;

    trigger:中高端触发源可选下降沿上升沿或是一起使用;

    wake:使能外部中断唤醒睡眠,可设置为 WAKE_LOWWAKE_LOWWAKE_HIGH

python
# 将 GPIO22 和 GPIO23 用导线相连
from machine import Pin  # 导入 Pin 模块
import time  # 导入 Time 模块

p22 = Pin(22, Pin.OUT, value=0)  # 初始化 GPIO22
print('p22 value: %d' % p22.value())  # 打印 GPIO22 端口值

p23 = Pin(23, Pin.IN, Pin.PULL_DOWN)  # 初始化 GPIO23
print('p23 value: %d' % p23.value())  # 打印 GPIO23 端口值


def p23icb(self):  # 中断回调函数
    print('irq - p23 value: %d' % p23.value())  # 打印 GPIO23 端口值


p23.irq(p23icb, Pin.IRQ_RISING)  # GPIO23 设置上升沿触发中断

while True:
    time.sleep(1)
    print('p22 turn off')
    p22.off()
    time.sleep(1)
    print('p22 turn on')
    p22.on()  # 该动作会在 GPIO23 上产生上升沿,触发中断