所有的GPIO都在pyb.Pin.board.Name中预先定义了:
x1_pin = pyb.Pin.board.X1
g = pyb.Pin(pyb.Pin.board.X1, pyb.Pin.IN)
也可以这样使用
g = pyb.Pin('X1', pyb.Pin.OUT_PP)
也可以自己定义GPIO名称
MyMapperDict = { 'LeftMotorDir' : pyb.Pin.cpu.C12 }
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
可以映射GPIO
pin = pyb.Pin("LeftMotorDir")
甚至可以通过函数进行映射
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
基本用法
- 定义GPIO: pyb.Pin(id)
LED1=Pin(Pin.cpu.A13, Pin.OUT_PP)
sw = Pin("X17")
sw = Pin('X17', Pin.IN, Pin.PULL_UP)
sw = Pin(Pin(Pin.cpu.B3, Pin.IN, Pin.PULL_UP)
- 返回GPIO的第二功能列表:Pin.af_list()
Pin.af_list(pyb.Pin.board.X1)
Pin.af_list(LED)
- 获取/设置debug状态:Pin.debug(state)
Pin.debug(True)
- 获取/设置GPIO映射字典:Pin.dict(dict)
MyMapperDict = { 'LeftMotorDir' : pyb.Pin.cpu.C12 }
pyb.Pin.dict(MyMapperDict)
- 获取/设置Pin映射:Pin.mapper(func)
- 初始化: Pin.init(mode, pull=Pin.PULL_NONE, af=-1)
- mode:
- Pin.IN - 输入
- Pin.OUT_PP - 推挽输出(push-pull)
- Pin.OUT_OD - 开漏输出(open-drain)
- Pin.AF_PP - 第二功能,推挽模式
- Pin.AF_OD - 第二功能,开漏模式
- Pin.ANALOG - 模拟功能
- pull
- Pin.PULL_NONE - 无上拉下拉
- Pin.PULL_UP - 上拉
- Pin.PULL_DOWN - 下拉
- af,当mode是Pin.AF_PP或Pin.AF_OD时,选择第二功能索引或名称
- 获取/设置GPIO逻辑电平
Pin.value(sw) # sw and LED has predefine
Pin.value(LED, 1)
Pin.value(LED, 0)
LED.value(1)
LED.value(0)
- 当前GPIO第二功能索引:pin.af()
- 当前GPIO关联基本地址:pin.gpio()
- GPIO的模式:pin.mode()
- GPIO的名称:pin.name()
- GPIO和预定义的名称:pin.names()
- 引脚序号:pin.pin()
- 端口序号:pin.port()
- 上拉状态:pin.pull()
例程
- from pyb import Pin
- p_out = Pin('X1', Pin.OUT_PP)
- p_out.high()
- p_out.low()
- p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
- p_in.value() # get value, 0 or 1
- LED = Pin(Pin.cpu.A14, Pin.OUT_PP)
- LED.value(not LED.value())
【MicroPython】教程