Q群:
电话:
邮箱:
地址:
machine.Pin 类是 machine 模块下面的一个硬件类,用于对 GPIO 引脚的配置和控制,并提供对 Pin 设备的操作方法。
Pin 对象用于控制 GPIO 引脚。通常与一个物理引脚相关联,他可以驱动输出电平和读取输入电平。Pin 类中有设置引脚模式(输入/输出)的方法,也有获取和设置引脚电平的方法。
Pin 对象不用于引脚的复用,只用于 GPIO 输入与输出模式,对于复用模式可直接使用对应功能的类对象进行使用。
类型 | 常量名称 | 含义 |
---|---|---|
引脚模式 | Pin.IN | 设置为输入模式 |
Pin.OUT_PP | 设置为推挽输出模式 | |
Pin.OUT_OD | 设置为开漏输出模式 | |
中断触发类型 | Pin.IRQ_RISING | 外部中断模式:上升沿触发中断 |
Pin.IRQ_FALLING | 外部中断模式:下降沿触发中断 | |
Pin.IRQ_RISING_FALLING | 外部中断模式:上升和下降沿触发中断 | |
Pin.IRQ_LOW_LEVEL | 外部中断模式:低电平触发 | |
Pin.IRQ_HIGH_LEVEL | 外部中断模式:高电平触发 | |
Pin.IRQ_NONE | 无中断 | |
上/下拉模式 | Pin.PULL_DOWN | 选择上/下拉模式:使能下拉电阻 |
Pin.PULL_NONE | 选择上/下拉模式:没有上拉或者下拉电阻 | |
Pin.PULL_UP | 选择上/下拉模式:使能上拉电阻 |
构造函数 | class machine.Pin(id, mode = -1,value=-1, pull = -1) |
---|---|
功能 | 构造一个 Pin 对象 |
参数说明 | id:可采用元组形式(name,pin)传入参数或者只传 pin 参数,其中 name 为自定义的引脚名,pin 为设备驱动的引脚号(soc 芯片的引脚) mode:指定引脚模式,可选常量见 Pin 常量中引脚模式部分相关常量。 value:如果配置成输出形式,可以通过这个参数设定初始输出值,可传入逻辑 0 或者逻辑 1 pull:如果引脚可以软件配置上下拉电阻,通过这个参数指定上下拉模式 |
返回值 | 返回创建的 machine.Pin 类对象 |
注:1、mode 目前暂不需支持 ALT_PP、ALT_OD、ANALOG。
2、value 只对模式为 OUT_PP、OUT_OD 有效。
3、port 中传入的引脚号为原理图中的引脚编号
4、并不是所有引脚都可设置为指定的模式,用户需参照 datasheet 配合使用,避免设置不生效或返回异常。
machine.Pin 类包括如下类方法
方法名 | 说明 |
---|---|
class method Pin.dict () | 获取引脚映射器字典 |
详细说明如下:
方法名称 | classmethod Pin.dict() |
---|---|
功能 | 获取引脚映射器字典 |
参数说明 | 无 |
返回值 | 返回获取的引脚映射器字典,如{PA1:pin3,PA2:pin4} |
machine.Pin 类包括如下实例方法
方法名 | 说明 |
---|---|
Pin.init() | 初始化 Pin 对象 |
Pin.deinit() | 关闭 Pin 对象 |
Pin.value() | 获取/设置引脚逻辑电平 |
Pin.name() | 获取构造时用户自定义的引脚名 |
Pin.pin() | 获取构造时设置的 pin 引脚号 |
Pin.port() | 获取 pin 引脚对应的端口号 |
Pin.mode() | 获取/设置引脚模式 |
Pin.irq() | 获取/设置引脚的中断模式 |
详细说明如下:
方法名称 | Pin.init(mode = -1, value=-1, pull = -1) |
---|---|
功能 | 根据参数重新初始化引脚配置 |
参数说明 | mode:指定引脚模式 value:如果配置成输出形式,可以通过这个参数设定初始输出值,可传入逻辑 0 或者逻辑 1 pull:如果引脚可以软件配置上下拉电阻,通过这个参数指定上下拉模式,参数可选 Pin 常量中上/下拉模式部分相关常量 |
返回值 | 固定返回 None |
注:只有那些被指定的参数才会被设置,其余引脚的状态将保持不变,value 值只对模式为 OUT_PP、OUT_OD 有效。
方法名称 | Pin.deinit() |
---|---|
功能 | 关闭 Pin 对象 |
参数说明 | 无参数 |
返回值 | 固定返回 None |
注:关闭 Pin 对象后,需重新 init 才能正常使用 Pin 对象。
方法名称 | Pin.value([x]) |
---|---|
功能 | 获取/设置引脚逻辑电平 |
参数说明 | [x]为可选参数,若未给定参数则为读取当前引脚的值,若给定参数则为设定引脚的值,可传入逻辑 0 或逻辑 1 |
返回值 | 没有参数时返回引脚的逻辑电平 有参数时返回 None |
异常值描述 | 当引脚模式为非输出模式时,若进行电平 value 值设置,会引起 ModeNotMatchError 异常,并携带异常值 1。 |
方法名称 | Pin.name() |
---|---|
功能 | 获取构造时用户自定义的引脚名 |
参数说明 | 无参数 |
返回值 | 返回用户自定义的引脚名 |
方法名称 | Pin.pin() |
---|---|
功能 | 获取构造时设置的 pin 引脚号 |
参数说明 | 无参数 |
返回值 | 返回构造时设置的 pin 引脚号 |
方法名称 | Pin.port() |
---|---|
功能 | 获取 pin 引脚对应的 port 端口号 |
参数说明 | 无参数 |
返回值 | 返回 pin 引脚对应的 port 端口号 |
方法名称 | Pin. mode([mode]) |
---|---|
功能 | 获取/设置当前引脚的模式 |
参数说明 | [mode]为可选参数,若未给定参数则为读取当前引脚的配置模式,若给定参数则为设定引脚的模式,可传入参数见 Pin 常量中引脚模式部分相关常量。 |
返回值 | 无参数时,返回当前引脚模式,形式为 int 类型,其值与对应模式常量之一匹配; 有参数时返回 None。 |
注:当 mode 重新设置时,该引脚其他状态可能会无效,如中断模式、输出电平等。
方法名称 | Pin.irq([irqmode]) |
---|---|
功能 | 获取/设置引脚的中断模式 |
参数说明 | [irqmode]为可选参数,若未给定参数则为读取当前引脚的 中断配置模式,若给定参数则为设定引脚的中断模式,可 传入参数见 Pin 常量中中断触发类型部分相关常量,模式 可按位进行或’|’操作。 |
返回值 | 传入参数时,固定返回 None 无参数时,返回当前的中断触发类型,其返回值为中断触 发类型部分相关常量对应值或者经过或运算后的值 |
异常值描述 | 当中断模式不支持配置时,会触发 AttributeError,若为驱动不支持该配置,携带异常值 1,若为芯片引脚本身不支持,携带异常值 2。 |
注:1、若不进行 irq 配置,pin 引脚默认为无中断模式,即 Pin.IRQ_NONE;
2、并不是所有引脚均支持中断配置;
3、中断模式支持按位或’|’操作