MicroPython教程:控制I/O引脚

控制 I/O 引脚

引脚对象用于控制 I/O 引脚(也称为 GPIO - 通用输入/输出)。引脚对象通常与可以驱动输出电压和读取输入电压的物理引脚相关联。pin 类具有设置 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 with a pull down resistor
p0.init(p0.IN, p0.PULL_DOWN)# configure an irq callback
p0.irq(lambda p:print(p))

构造函数

classmachine.Pin(idmode=- 1pull=- 1*valuedrivealt)

访问与给定 id. 如果在构造函数中给出了额外的参数,那么它们将用于初始化引脚。任何未指定的设置将保持其先前状态。

论据是:

  • id 是强制性的,可以是任意对象。可能的值类型包括:int(内部 Pin 标识符)、str(Pin 名称)和元组([port, pin] 对)。

  • mode 指定引脚模式,可以是以下之一:

    • Pin.IN - 引脚配置为输入。如果将其视为输出,则该引脚处于高阻抗状态。

    • Pin.OUT - 引脚配置为(正常)输出。

    • Pin.OPEN_DRAIN - 引脚配置为开漏输出。开漏输出的工作方式如下:如果输出值设置为0,则该引脚处于低电平有效;如果输出值为 1,则引脚处于高阻抗状态。并非所有端口都实现此模式,或者某些端口可能仅在某些引脚上。

    • Pin.ALT - 引脚配置为执行特定于端口的替代功能。对于以这种方式配置的引脚,任何其他引脚方法(除了 Pin.init())都不适用(调用它们将导致未定义或特定于硬件的结果)。并非所有端口都实现此模式

    • Pin.ALT_OPEN_DRAIN - 与 相同 Pin.ALT,但引脚配置为开漏。并非所有端口都实现此模式。

  • pull指定引脚是否连接了(弱)上拉电阻,并且可以是以下之一:

    • None - 没有上拉或下拉电阻。

    • Pin.PULL_UP - 上拉电阻使能。

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

  • value仅对 Pin.OUT 和 Pin.OPEN_DRAIN 模式有效,如果给定,则指定初始输出引脚值,否则引脚外设的状态保持不变。

  • drive 指定引脚的输出功率,可以是以下之一: Pin.LOW_POWERPin.MED_POWER 或Pin.HIGH_POWER。实际的当前驱动能力取决于端口。并非所有端口都实现此参数。

  • alt为引脚指定一个备用功能,它可以采用的值取决于端口。此参数仅对Pin.ALT和 Pin.ALT_OPEN_DRAIN 模式有效。当一个引脚支持多个备用功能时,可以使用它。如果仅支持一个引脚备用功能,则不需要此参数。并非所有端口都实现此参数。

如上所述,Pin 类允许为特定的 pin 设置备用功能,但它没有指定对此类 pin 的任何进一步操作。在交替功能模式下配置的引脚通常不用作 GPIO,而是由其他硬件外设驱动。此类引脚支持的唯一操作是通过调用构造函数或 Pin.init() 方法重新初始化。如果在复用功能模式下配置的引脚用Pin.INPin.OUT、 或 重新初始化,复用 Pin.OPEN_DRAIN功能将从引脚中删除。

方法

Pin.init(mode=- 1pull=- 1*valuedrivealt)

使用给定的参数重新初始化引脚。只会设置那些指定的参数。其余引脚外设状态将保持不变。有关参数的详细信息,请参阅构造函数文档。

返回 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 对象是可调用的。call 方法提供了一个(快速)快捷方式来设置和获取引脚的值。它等效于 Pin.value([x])。有关Pin.value() 更多详细信息,请参阅。

Pin.on()

将引脚设置为“1”输出电平。

Pin.off()

将引脚设置为“0”输出电平。

Pin.irq(handler=Nonetrigger=Pin.IRQ_FALLING | Pin.IRQ_RISING*priority=1wake=Nonehard=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高电平中断。

    这些值可以通过“或”运算来触发多个事件。

  • priority设置中断的优先级。它可以采用的值是特定于端口的,但更高的值总是代表更高的优先级。

  • wake选择此中断可以唤醒系统的电源模式。它可以是 machine.IDLEmachine.SLEEP or machine.DEEPSLEEP. 。也可以将这些值进行“或”运算,使一个引脚在一种以上的电源模式下产生中断。

  • hard 如果为真,则使用硬件中断。这减少了引脚更改和被调用的处理程序之间的延迟。硬中断处理程序可能不分配内存;请参阅 编写中断处理程序.。并非所有端口都支持此参数。

此方法返回一个回调对象。

以下方法不是核心 Pin API 的一部分,仅在某些端口上实现。

Pin.low()

将引脚设置为“0”输出电平。

可用性:nrf、rp2、stm32 端口。

Pin.high()

将引脚设置为“1”输出电平。

可用性:nrf、rp2、stm32 端口。

Pin.mode([mode])

获取或设置引脚模式。有关mode参数的详细信息,请参阅构造函数文档。

可用性:cc3200、stm32 端口。

Pin.pull([pull])

获取或设置引脚拉动状态。有关pull 参数的详细信息,请参阅构造函数文档。

可用性:cc3200、stm32 端口。

Pin.drive([drive])

获取或设置引脚驱动强度。有关 drive参数的详细信息,请参阅构造函数文档。

可用性:cc3200 端口。

常数

以下常量用于配置引脚对象。请注意,并非所有常量都可用于所有端口。

Pin.IN

Pin.OUT

Pin.OPEN_DRAIN

Pin.ALT

Pin.ALT_OPEN_DRAIN

选择引脚模式。

Pin.PULL_UP

Pin.PULL_DOWN

Pin.PULL_HOLD

选择是否有上拉/下拉电阻。使用 None 无拉取值 。

Pin.LOW_POWER

Pin.MED_POWER

Pin.HIGH_POWER

选择引脚驱动强度。

Pin.IRQ_FALLING

Pin.IRQ_RISING

Pin.IRQ_LOW_LEVEL

Pin.IRQ_HIGH_LEVEL

选择 IRQ 触发类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【四大组件】-- 服务 Service

服务 Service-服务(一)生命周期及使用方式 Service-服务(二)onStartCommand()详解 Service.onStartCommand()详解 什么是服务 它和Activity一样都是Context的子类,只不过它没有UI界面, 是在后台运行的组件。 默认运行在主线程中,因此不要在…

探索不同类型的“低”之魅力

随着数字化转型的浪潮不断高涨,低代码平台(LCDP)已逐渐成为企业快速构建和迭代应用程序的重要工具。低代码平台以其高效、灵活和易于集成的特点,受到越来越多企业的青睐。然而,低代码平台并非一蹴而就的单一产品&#…

CST电磁仿真软件表面等离子极化激元SPP --- 一维光栅耦合 - 衍射模式, 效率, Floquet端口

这两期我们看一下衍射光栅的高阶衍射、衍射效率、反射率。具体到仿真设置,就是Floquet端口的模式分析,S参数与衍射效率和反射率的关系。那么研究这些衍射和表面等离子极化激元SPP有什么关系呢?关系可大了,光栅是一种能够用来激励出…

企业微信群发功能:提升沟通效率,助力企业营销

随着信息技术的快速发展,企业微信作为企业内部沟通和企业对外营销的重要工具,其功能也在不断更新和完善。其中,企业微信的多次群发功能,不仅极大地提升了企业内部的沟通效率,更为企业的对外营销提供了强有力的支持。本…

告别鼠标,安卓模拟鼠标,绘图板,手写板操作电脑PC端,卡卡罗特也说好,儿童节快乐

家人们,上链接了:https://download.csdn.net/download/jasonhongcn/89387887 横屏模式: 竖屏模式: 操作说明: 1. 手势滑动模拟鼠标移动 2. 界面如果有滚动条,右手指按紧,通过左手指移动实现…

react高阶组件——withRouter

withRouter是高阶组件&#xff0c;可以通过 withRouter 获取到 history、location、match 对象。 import { withRouter } from umi;export default withRouter(({ history, location, match }) > {return (<div><ul><li>history: {history.action}</l…

力扣:101. 对称二叉树

101. 对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a; …

mysql DDL——增删改

简略版&#xff1a; 文字化&#xff1a; 1.对全部字段添加数据&#xff1a;insert into 表名 values (值1&#xff0c;值2&#xff0c;值3...); 2.对指定字段添加数据&#xff1a;insert into 表名 (字段名1&#xff0c;字段名2...) values &#xff08;值1&#xff0c;值2..…

跨区域文件管控过程中 如何保障安全和效率?

跨区域文件管控是指在跨越不同地域或区域的情况下对文件进行管理和控制的过程。这种控制可能涉及多个方面&#xff0c;包括安全性、合规性和管理效率等。 为了有效进行跨区域文件管控&#xff0c;组织通常需要采取一系列策略和措施&#xff0c;例如&#xff1a; 1、加密和安全…

java SQLException异常的解决步骤

要解决Java中的SQLException&#xff0c;可以考虑以下几个步骤&#xff1a; 异常处理&#xff1a;在程序中捕获SQLException并进行处理。可以使用try-catch语句块来捕获异常&#xff0c;然后在catch块中处理异常情况。 例如&#xff1a; try {// 执行数据库操作 } catch (SQ…

旺店通·企业奇门和金蝶云星空接口打通对接实战多系统间数据

旺店通企业奇门和金蝶云星空接口打通对接实战 来源系统:旺店通企业奇门 慧策&#xff08;原旺店通&#xff09;是一家技术驱动型智能零售服务商&#xff0c;基于云计算PaaS、SaaS模式&#xff0c;以一体化智能零售解决方案&#xff0c;帮助零售企业数字化智能化升级&#xff0c…

二进制文件(.bin等文件)转C语言数组形式hex文件(.c等文件)

使用python脚本把二进制文件&#xff08;.bin等文件&#xff09;转C语言数组形式hex文件&#xff08;.c等文件&#xff09;&#xff0c;具体代码如下&#xff1a; &#xff08;1&#xff09;读取.bin文件数据 &#xff08;2&#xff09;生成C语言数组定义 &#xff08;3&…

深圳雷龙LSYT201B语音控制模组

文章目录 前言一、芯片简介处理器外设音频蓝牙电源封装温度 二、功能简介管脚描述 三、应用场景四、使用说明五、硬件连接六、FAQ总结 前言 今天拿到的语音控制板是LSYT201B模组&#xff0c;它是深圳市雷龙发展有限公司基于YT2228芯片开发的一款面向智能家居控制的离线语音控制…

第15届蓝桥杯国赛JavaA组个人题解

最后两个概率题不会做, 50分没了 博弈论交了暴力, 30%的分 赛后hack了自己1个填空和一个15分的题 算下来应该是66分, 喜提国一最后一名, rank11 A 田字与直线 题目: 9个点按3*3排成矩阵状, 求恰好经过其中2个点的直线个数 答案 过角的: 4个角, 每个2条 不过角: 4个中点, 4…

员工转正申请精选12个模板供参考

随着社会在不断地进步&#xff0c;我们会经常使用各种各样的申请书&#xff0c;转正申请书就是申请书的一种&#xff0c;那么转正申请书是怎么写的呢&#xff1f;下面是我收集整理的员工转正申请书几个版本&#xff0c;仅供参考&#xff0c;希望能够帮助到大家。别忘了一键三连…

贵的SSL证书跟便宜的SSL证书有什么不一样的?

目前SSL证书市场上从几十块钱的到上万元的都是有的&#xff0c;那么这些着证书之间有什么不同&#xff1f;怎么收费差这么多&#xff1f; 一&#xff1a;从证书的认证安全等级来说 比较便宜的SSL证书一般都是DV验证级别的。也就是说只验证域名的所有权&#xff0c;做一个DNS解…

楼市去金融化, 教育去资本化 ,医疗去市场化

楼市去金融化&#xff0c; 教育去资本化 &#xff0c;医疗去市场化

03.0docker安装

docker简介 docker的主要目标是"Build,Ship and Run any App,Angwhere",构建&#xff0c;运输&#xff0c;处处运行 部署服务&#xff0c;环境问题 一次构建&#xff0c;处处运行 docker是一种软件的打包技术 构建&#xff1a;做一个docker镜像 运输&#xff1a;do…

数据分析常用模型合集(一)AARRR模型和漏斗模型

准备把常用的数据分析模型&#xff0c;像什么AARRR&#xff0c;RFM之类的&#xff0c;逐个全部写一下&#xff1b; 最好能带点案例和代码&#xff0c;搞一个小合集。 最终达到完全不懂的人&#xff0c;看完就能知道得差不多&#xff1b; 数据分析常用模型合集&#xff08;二…

[大师C语言(第十八篇)]C语言typedef背后技术详解

引言 在C语言中&#xff0c;typedef是一个非常有用的关键字&#xff0c;它允许程序员为现有的数据类型定义一个新的名称。这种做法可以提高代码的可读性和可维护性&#xff0c;特别是在处理复杂的数据结构时。本文将深入探讨C语言typedef背后的技术原理&#xff0c;并通过丰富…