类 Pin -- 控制 I/O 引脚
- class machine.Pin(id, mode=-1, pull=-1, *, value=None, drive=0, alt=-1)
访问与给定
id关联的引脚外设(GPIO引脚)。 如果在构造函数中给出了附加参数,则它们用于初始化引脚。 未指定的任何设置将保持其先前的状态。注意
mPython 掌控板提供自有的引脚映射,将引脚映射为ESP32的GPIO。如,掌控板的P0引脚对应ESP32的IO33,则你可以使用
Pin.P0来替换33。参数:
id是必需的,可以是任何对象。可能的值 取决于板,但包括整数(用于GPIO编号), 字符串(用于板特定的引脚名称)和元组(用于端口和 引脚编号,例如('A', 1))。如果使用mPython,可用Pin.P(0~20),例如(Pin.P0)P0引脚提供映射为GPIO。mode指定引脚模式,可以是以下之一:Pin.IN- 引脚配置为输入。如果视为输出,引脚 处于高阻抗状态。Pin.OUT- 引脚配置为(正常)输出。Pin.OPEN_DRAIN- 引脚配置为开漏输出。 开漏输出的工作方式如下:如果输出值设置为0,引脚 在低电平有效;如果输出值为1,引脚处于高阻抗状态。 并非所有端口都实现此模式,或者某些端口可能仅在特定引脚上实现。Pin.ALT- 引脚配置为执行替代功能, 这是特定于端口的。对于以此方式配置的引脚,任何其他 Pin方法(除了Pin.init())都不适用(调用它们将 导致未定义或特定于端口的结果)。并非所有端口都实现 此模式。Pin.ALT_OPEN_DRAIN- 与Pin.ALT相同,但引脚配置为开漏。 并非所有端口都实现此模式。Pin.ANALOG- 引脚配置为模拟输入(参见ADC类)。 并非所有端口都实现此模式。
pull指定引脚是否连接有(弱)上拉电阻,可以是:None- 无上拉或下拉电阻。Pin.PULL_UP- 启用上拉电阻。Pin.PULL_DOWN- 启用下拉电阻。
value仅对Pin.OUT和Pin.OPEN_DRAIN模式有效, 指定初始输出引脚值,否则引脚外设的 状态不变。drive指定引脚的输出功率,可以是以下之一Pin.DRIVE_0,Pin.DRIVE_1等,驱动强度递增。 实际电流驱动能力取决于端口。 并非所有端口都实现此参数。alt指定替代功能,它可以采用特定于端口的值。 此参数仅对Pin.ALT和Pin.ALT_OPEN_DRAIN模式有效。当引脚支持多个 替代功能时可以使用。如果引脚仅支持一个替代功能 则不需要此参数。并非所有端口都实现此参数。
示例用法:
from machine import Pin # 在引脚 #32 上创建输出引脚 p0 = Pin(32, Pin.OUT) # 将值设置为低然后高 p0.value(0) p0.value(1) # 在引脚 #33 上创建输入引脚,带有上拉电阻 p2 = Pin(33, Pin.IN, Pin.PULL_UP) # 配置中断回调 p2.irq(trigger=Pin.IRQ_FALLING, handler=lambda t:print("IRQ"))
- Pin.init(mode=-1, pull=-1, *, value=None, drive=0, alt=-1)
使用给定的参数重新初始化引脚。仅设置指定的 参数,其他参数保持其先前的值。 有关参数的详细信息,请参见构造函数文档。
返回
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对象是可调用的。调用方法提供了一个(快速)快捷方式来设置和获取 引脚的值。它等同于
Pin.value([x])。请参阅Pin.value()获取更多详细信息。
- Pin.on()
将引脚设置为高逻辑电平。
- Pin.off()
将引脚设置为低逻辑电平。
- Pin.low()
将引脚设置为
0输出电平。可用性:mimxrt, nrf, renesas-ra, rp2, samd, stm32。
- Pin.high()
将引脚设置为
1输出电平。可用性:mimxrt, nrf, renesas-ra, rp2, samd, stm32。
- Pin.mode([mode])
获取或设置引脚模式。
有关
mode参数的更多信息,请参见构造函数文档。可用性:cc3200, stm32。
- Pin.pull([pull])
获取或设置引脚上拉状态。
有关
pull参数的更多信息,请参见构造函数文档。可用性:cc3200, stm32。
- Pin.drive([drive])
获取或设置引脚驱动强度。
有关
drive参数的更多信息,请参见构造函数文档。可用性:cc3200。
- Pin.toggle()
将输出引脚从
0切换到1或反之亦然。可用性:cc3200, esp32, esp8266, mimxrt, rp2, samd。
- 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是中断触发时要调用的可选函数。 处理程序必须接受恰好一个参数,即Pin实例。trigger配置可以触发中断的事件。可能的值为:Pin.IRQ_FALLING- 下降沿中断。Pin.IRQ_RISING- 上升沿中断。Pin.IRQ_LOW_LEVEL- 低电平中断。Pin.IRQ_HIGH_LEVEL- 高电平中断。
这些值可以OR组合以在多个事件上触发。
priority设置中断优先级级别。它可以采用特定于端口的值, 但较高的值始终表示较高的优先级。wake选择此中断可以唤醒系统的电源模式。 它可以是machine.IDLE、machine.SLEEP或machine.DEEPSLEEP。这些 值也可以OR组合,使引脚在多个 电源模式下生成中断。hard如果为True,则使用硬件中断。这减少了引脚 变化和调用处理程序之间的延迟。硬件中断处理程序不得 分配内存;有关更多信息,请参见 编写中断处理程序。并非所有端口都支持 此参数。
返回一个回调对象。
常量
板自有的引脚映射,将掌控板引脚映射为ESP32的GPIO
- Pin.P0
- Pin.P1
- Pin.P2
- Pin.P3
- Pin.P4
- Pin.P5
- Pin.P6
- Pin.P7
- Pin.P8
- Pin.P9
- Pin.P10
- Pin.P11
- Pin.P13
- Pin.P14
- Pin.P15
- Pin.P16
- Pin.P19
- Pin.P20
- Pin.P23
- Pin.P24
- Pin.P25
- Pin.P26
- Pin.P27
- Pin.P28
以下常量用于配置引脚对象。请注意,并非所有 常量在所有端口上都可用。