Pin类 – I/O管脚控制¶
引脚对象用于控制I/O引脚(也称为GPIO—通用输入/输出)。Pin对象通常与一个可驱动输出电压和读取输入电压的引脚相关联。 引脚类有设置引脚模式(IN、OUT等)的方法,以及设置数字逻辑的方法。对引脚的模拟控制,请参见 ADC
类。
引脚对象通过使用明确指定某个I/O引脚的标识符来构建。每一个标识符都对应到一个引脚,标识符可能是整数、字符串或者一个带有端口和引脚号的元组。
例子:
from machine import Pin
# create an output pin on pin #0
p0 = Pin(0, Pin.OUT)
# set the value low then high
p0.value(0)
p0.value(1)
# create an input pin on pin #2, with a pull up resistor
p2 = Pin(2, Pin.IN, Pin.PULL_UP)
# read and print the pin value
print(p2.value())
# reconfigure pin #0 in input mode
p0.mode(p0.IN)
# configure an irq callback
p0.irq(lambda p:print(p))
构造函数¶
- class machine.Pin(id, mode=-1, pull=-1, *, value, drive, alt)¶
访问与给定
id
相关联的外围引脚(GPIO引脚)。若在构造函数中给出了额外参数,则该参数用于初始化引脚。任何未指定设置都将保留其先前状态。参数如下:
id
是强制性的,可为一个任意对象。可能的值类型为:int(内部引脚标识符)、str(引脚名称)、元组(一对[端口, 引脚])。mode
specifies the pin mode, which can be one of:Pin.IN
- 引脚配置为输入。若将之视为输出,则引脚会处于高阻抗状态。Pin.OUT
- 引脚配置为(常规)输出。Pin.OPEN_DRAIN
- 引脚配置为开漏输出。开漏输出按照以下方式工作:若输出值设置为0,则引脚处于低电平状态;若输出值设置为1,则引脚处于高阻抗状态。并非所有端口都实现这一模式,某些端口仅在特定引脚实现。Pin.ALT
- Pin is configured to perform an alternative function, which is port specific. For a pin configured in such a way any other Pin methods (exceptPin.init()
) are not applicable (calling them will lead to undefined, or a hardware-specific, result). Not all ports implement this mode.Pin.ALT_OPEN_DRAIN
- 与``Pin.ALT`` 相同,但是该引脚配置为开漏。并非所有引脚都实现该模式。
pull
指定,若引脚与一个(弱)电阻相连,可为下列之一:None
- 无上拉或下拉电阻。Pin.PULL_UP
- 启用上拉电阻。Pin.PULL_DOWN
- 启用下拉电阻。
value
只对Pin.OUT和Pin.OPEN_DRAIN模式有效,且在给定情况下指定初始输出引脚值,否则该外围引脚状态仍未改变。drive
指定引脚的输出功率,可为下列之一:Pin.LOW_POWER
,Pin.MED_POWER
和Pin.HIGH_POWER
. 当前的实际驱动能力是取决于端口。并非所有端口都实现该参数。alt
为引脚指定一个替代函数,其可取的值取决于端口。该参数仅对Pin.ALT
和Pin.ALT_OPEN_DRAIN
模式有效。该参数可能用于引脚支持多个备用函数时。若引脚仅支持一个备用函数,则不需要该参数。并非所有端口都实现该参数。
如上所述,引脚类允许为特定引脚设置一个备用函数,但并未在引脚上指定任何进一步的操作。在备用函数模式下配置的引脚通常不用作GPIO, 而是由其他外围硬件驱动。这一注脚唯一支持的操作是通过调用构造函数或
Pin.init()
方法重新初始化。 若在备用函数模式下配置的引脚使用Pin.IN
、Pin.OUT
、Pin.OPEN_DRAIN
重新初始化,该备用函数将会从引脚中删除。
方法¶
- Pin.init(mode=-1, pull=-1, *, value, drive, alt)¶
使用给定参数将引脚重新初始化。只有指定参数将被设置。其余的外围引脚状态将保持不变。更多参数细节,请参见构造函数文件。
返回
None
.
- Pin.value([x])¶
该方法允许设置并获取引脚值,这取决于是否提供了参数
x
。若参数被删除,则该方法获取引脚的数字逻辑电平,分别返回0或1对应的低电压信号和高电压信号。该方法的行为取决于引脚的模式:
Pin.IN
- 该方法返回目前在引脚上出现的实际输入值。Pin.OUT
- 该方法的行为和返回值未定义。Pin.OPEN_DRAIN
- 若该引脚在“0”状态下,则该方法的行为和返回值未定义。否则,若该引脚在“1”状态下,该方法返回目前在引脚上出现的实际输入值。
若提供了参数,则该方法设置引脚的数字逻辑电平。参数
x
可为任何可以转换成布尔值的参数。 若转换为True
,则该引脚设置为状态“1”,否则引脚为状态“0”。该方法的行为取决于引脚的模式:Pin.IN
- 该值储存在引脚的输出缓冲区中。引脚状态不变,始终为高阻抗状态。当它更改为``Pin.OUT`` 或Pin.OPEN_DRAIN
模式时,该储存值将在引脚上激活。Pin.OUT
- 输出缓冲区立即设置为给定值。Pin.OPEN_DRAIN
- 若该值为’0’,引脚则被设置为低电压状态。否则引脚设置为高阻抗状态。
设置值时,该方法返回
None
.
- Pin.__call__([x])¶
引脚对象可调用。调用方法提供设置和获取引脚值的快捷方式。等同于Pin.value([x])。详情请参见
Pin.value()
.
- Pin.on()¶
设置为1
- Pin.off()¶
设置为0
- Pin.mode([mode])¶
获取或设置引脚模式。
mode
参数的更多细节,请参见构造函数。
- Pin.pull([pull])¶
获取或这是引脚的上拉状态。
pull
参数的更多细节,请参见构造函数文件。
- Pin.drive([drive])¶
获取或设置引脚的驱动强度。
drive
参数的更多细节,请参见构造函数文件。并非所有版本都实现该方法。
可用于:WiPy。
- Pin.irq(handler=None, trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING, *, priority=1, wake=None, hard=False)¶
配置一个中断处理程序,当引脚的触发器源处于激活状态时,调用该程序。若引脚模式为
Pin.IN
, 则触发器源为引脚上的外部值。若引脚模式为Pin.OUT
,则触发器源为引脚上的输出缓冲区。 否则,若引脚模式为Pin.OPEN_DRAIN
,状态为“0”时,触发器源为输出缓冲区;状态为“1”时,触发器源为外部引脚值。参数如下:
handler
is an optional function to be called when the interrupt triggers. The handler must take exactly one argument which is thePin
instance.trigger
配置可产生中断的事件。可能值为:Pin.IRQ_FALLING
下降沿上的中断.Pin.IRQ_RISING
上升沿上的中断.Pin.IRQ_LOW_LEVEL
低电平上的中断.Pin.IRQ_HIGH_LEVEL
高电平上的中断.
这些值可在多个事件中同时进行“或”运算。
priority
设置中断的优先级。可取的值时特定于端口的,但是高数值通常代表高优先级。wake
选择电源模式,在该模式下中断可唤醒系统。可为machine.IDLE
,machine.SLEEP
或``machine.DEEPSLEEP``. 这些值可同时进行“或”运算,以使引脚在多种电源模式下生成中断。hard
if true a hardware interrupt is used. This reduces the delay between the pin change and the handler being called. Hard interrupt handlers may not allocate memory; see 编写中断处理程序. Not all ports support this argument.
该方法返回一个回调对象。
常量¶
以下常量用于配置引脚对象。注意:并非所有常量都在所有移植版本上可用。