【MicroPython】GPIO

dcexpert   2016-3-26 16:47 楼主
所有的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()


例程
  1. from pyb import Pin

  2. p_out = Pin('X1', Pin.OUT_PP)
  3. p_out.high()
  4. p_out.low()

  5. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
  6. p_in.value() # get value, 0 or 1

  7. LED = Pin(Pin.cpu.A14, Pin.OUT_PP)
  8. LED.value(not LED.value())
【MicroPython】教程

回复评论 (2)

可以讲一下MicroPython在stm32可以运行的机制吗,它是怎么实现移植的
点赞  2016-3-26 23:17
引用: feiting94 发表于 2016-3-26 23:17
可以讲一下MicroPython在stm32可以运行的机制吗,它是怎么实现移植的

这需要大家一起来研究,我也是才开始学习。
点赞  2016-3-26 23:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复