GPIO 口使用说明
MicroPython 中使用 GPIO 口主要是用到了 machine 模块中的 Pin 类,具体函数说明如下:
class machine.Pin(id, mode=-1, pull=-1, *, value)
构造函数,用于声明与初始化 GPIO 口对象:
id:GPIO 编号,如使用 GPIO13 则此处填写 13;
mode:模式,可选
Pin.IN
、Pin.OUT
、Pin.OPEN_DRAIN
;pull:使用内部上下拉电阻,可选
None
、Pin.PULL_UP
、Pin.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_LOW
、WAKE_LOW
、WAKE_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 上产生上升沿,触发中断