class Pin – 控制I/O引脚

引脚是控制I/O引脚的基本对象。它具有设置引脚模式(输入、输出等)的方法,以及获取和设置数字逻辑电平的方法。对于引脚的模拟控制,请参阅ADC类。

使用模型:

所有电路板引脚都预定义为 pyb.Pin.board.Name:

x1_pin = pyb.Pin.board.X1

g = pyb.Pin(pyb.Pin.board.X1, pyb.Pin.IN)

与板载引脚对应的CPU引脚可用作 pyb.Pin.cpu.Name。对于CPU引脚,名称是移植版本字母后跟引脚号。在PYBv1.0上,pyb.Pin.board.X1pyb.Pin.cpu.A0 是同一个引脚。

您还可以使用字符串:

g = pyb.Pin('X1', pyb.Pin.OUT_PP)

用户可以自己添加名称:

MyMapperDict = { 'LeftMotorDir' : pyb.Pin.cpu.C12 }
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)

并且可以查询映射:

pin = pyb.Pin("LeftMotorDir")

用户还可以添加自己的映射函数:

def MyMapper(pin_name):
   if pin_name == "LeftMotorDir":
       return pyb.Pin.cpu.A0

pyb.Pin.mapper(MyMapper)

因此,如果调用:pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) ,那么 "LeftMotorDir" 将直接传递给映射器函数。

总结一下,以下顺序确定如何将事物映射到序数引脚号:

  1. 直接指定引脚对象

  2. 用户提供的映射函数

  3. 用户提供的映射(对象必须可用作字典键)

  4. 提供与板载引脚匹配的字符串

  5. 提供与CPU端口/引脚匹配的字符串

您可以设置 pyb.Pin.debug(True) 以获取有关特定对象如何映射到引脚的一些调试信息。

所有引脚对象都通过引脚映射器进行处理,以得到其中一个GPIO引脚。

构造

class pyb.Pin(id, ...)

创建与id相关联的新Pin对象。如果提供了额外的参数,则使用它们来初始化引脚。参见 pin.init()

类方法

classmethod Pin.debug([state])

获取或设置调试状态(True 表示开启,False 表示关闭)。

classmethod Pin.dict([dict])

获取或设置引脚映射字典。

classmethod Pin.mapper([fun])

获取或设置引脚映射函数。

方法

Pin.init(mode, pull=Pin.PULL_NONE, *, value=None, alt=-1)

初始化引脚:

  • mode 可以是以下之一:

    • Pin.IN - 将引脚配置为输入;

    • Pin.OUT_PP - 将引脚配置为输出,带推挽控制;

    • Pin.OUT_OD - 将引脚配置为输出,带开漏控制;

    • Pin.ALT - 将引脚配置为替代功能,输入或输出;

    • Pin.AF_PP - 将引脚配置为替代功能,推挽;

    • Pin.AF_OD - 将引脚配置为替代功能,开漏;

    • Pin.ANALOG - 将引脚配置为模拟。

  • pull 可以是以下之一:

    • Pin.PULL_NONE - 不启用上拉或下拉电阻;

    • Pin.PULL_UP - 启用上拉电阻;

    • Pin.PULL_DOWN - 启用下拉电阻。

    当引脚启用 Pin.PULL_UPPin.PULL_DOWN 拉模式时,该引脚具有将其分别拉向3V3或GND的有效40k欧姆电阻(除了引脚 Y5 具有11k欧姆电阻)。

  • 如果不是 None,value 将在启用引脚之前设置端口输出值。

  • alt 可以在模式为 Pin.ALTPin.AF_PPPin.AF_OD 时使用,以设置与引脚关联的替代功能之一的索引或名称。如果需要,此参数以前称为 af ,仍然可以使用。

返回: None

Pin.value([value])

获取或设置引脚的数字逻辑电平:

  • 没有参数时,根据引脚的逻辑电平返回0或1。

  • 给出 value 时,设置引脚的逻辑电平。value 可以转换为布尔值的任何内容。如果转换为 True,则引脚设置为高电平,否则设置为低电平。

Pin.__str__()

返回描述引脚对象的字符串。

Pin.af()

返回引脚当前配置的替代功能。返回的整数将匹配 init 函数的 af 参数的允许的常量之一。

Pin.af_list()

返回此引脚可用的替代功能数组。

Pin.gpio()

返回与此引脚关联的 GPIO 块的基地址。

Pin.mode()

返回引脚当前配置的模式。返回的整数将匹配 init 函数的 mode 参数的允许的常量之一。

Pin.name()

获取引脚名称。

Pin.names()

返回此引脚的cpu和板载名称。

Pin.pin()

获取引脚号。

Pin.port()

获取引脚端口。

Pin.pull()

返回引脚当前配置的拉模式。返回的整数将匹配 init 函数的 pull 参数的允许的常量之一。

常量

Pin.ALT

将引脚初始化为输入或输出的替代功能模式

Pin.AF_OD

将引脚初始化为带开漏驱动的替代功能模式

Pin.AF_PP

将引脚初始化为带推挽驱动的替代功能模式

Pin.ANALOG

将引脚初始化为模拟模式

Pin.IN

将引脚初始化为输入模式

Pin.OUT_OD

将引脚初始化为带开漏驱动的输出模式

Pin.OUT_PP

将引脚初始化为带推挽驱动的输出模式

Pin.PULL_DOWN

在引脚上启用下拉电阻

Pin.PULL_NONE

在引脚上不启用任何上拉或下拉电阻

Pin.PULL_UP

在引脚上启用上拉电阻

class PinAF – 引脚替代功能

Pin代表微处理器上的物理引脚。每个引脚都可以有各种功能(GPIO、I2C SDA等)。每个PinAF对象表示引脚的特定功能。

使用模型:

x3 = pyb.Pin.board.X3
x3_af = x3.af_list()

现在,x3_af 将包含一个 PinAF 对象数组,这些对象在引脚 X3 上可用。

对于 pyboard,x3_af 将包含:

[Pin.AF1_TIM2, Pin.AF2_TIM5, Pin.AF3_TIM9, Pin.AF7_USART2]

通常,每个外设都会自动配置替代功能,但有时相同的功能可能在多个引脚上可用,并且希望有更多控制。

要将 X3 配置为暴露 TIM2_CH3,您可以使用:

pin = pyb.Pin(pyb.Pin.board.X3, mode=pyb.Pin.ALT, alt=pyb.Pin.AF1_TIM2)

或:

pin = pyb.Pin(pyb.Pin.board.X3, mode=pyb.Pin.ALT, alt=1)

方法

pinaf.__str__()

返回描述替代功能的字符串。

pinaf.index()

返回替代功能索引。

pinaf.name()

返回替代功能的名称。

pinaf.reg()

返回与分配给此替代功能的外设相关联的基本寄存器。例如,如果替代功能是 TIM2_CH3,则会返回 stm.TIM2