[原创] [ESP8266]Pin的用法

dcexpert   2016-7-28 22:10 楼主
为了配合下周的活动,同时也是ESP8266版的MicroPython有很多和PYB版本不一样的地方,所以开始逐步整理ESP8266相关的文档和教材。 Pin的用法 在ESP8266中,Pin的用法和在pyboard(STM32)中有不少区别。
  • 定义Pin class machine.Pin(id, ...)
方法
  • Pin.init(mode, pull=None, *, value) 初始化 mode
    • Pin.IN,输入
    • Pin.OUT,输出
    pull
    • NONE,无
    • Pin.PULL_UP,上拉
    value:输出电平
  • Pin.value([value]) 不带参数时是读取输入电平,带参数时是设置输出电平。参数可以是True/False,也可以是1/0。
  • Pin.low()
  • Pin.high() 设置输出电平
  • Pin.irq(*, trigger, handler=None) 中断 trigger,触发方式
    • Pin.IRQ_FALLING,下降沿
    • Pin.IRQ_RISING,上升沿
    • Pin.IN,上升下降沿
    handler,回调函数
常数 下面的常数用于配置 pin。注意不是没股份端口都有全部的属性。
  • Pin.IN
  • Pin.OUT
  • Pin.OPEN_DRAIN
  • Pin.ALT
  • Pin.ALT_OPEN_DRAIN 选择 pin 模式
  • Pin.PULL_UP
  • Pin.PULL_DOWN 设置上拉/下拉电阻。
  • Pin.LOW_POWER
  • Pin.MED_POWER
  • Pin.HIGH_POWER 设置驱动能力
  • Pin.IRQ_FALLING
  • Pin.IRQ_RISING
  • Pin.IRQ_LOW_LEVEL
  • Pin.IRQ_HIGH_LEVEL 设置 IRQ 触发类型。

例子
  1. from machine import Pin
  2. CS = Pin(2, Pin.OUT)
  3. CS(1)
  4. CS(0)
  5. CS.value()
  6. CS.value(1)
  7. CS.high()
  8. CS.low()
  9. sw=Pin(0, Pin.IN)
  10. sw()
  11. sw.irq(trigger=Pin.IRQ_FALLING, handler=lambda t:led.value(not led.value()))
本帖最后由 dcexpert 于 2016-7-28 22:13 编辑

回复评论 (13)

官方文档中,掺杂了一些WiPY版本的内容,而这部分在ESP8266上和PYBoard上都是不能使用的,所以整理后的文档中删减了这些内容。
点赞  2016-7-28 22:14
支持一下,希望楼主多多给出指导,方便学习
点赞  2016-7-28 22:46
引用: qwerghf 发表于 2016-7-28 22:46
支持一下,希望楼主多多给出指导,方便学习

大家一起学习交流。
点赞  2016-7-28 22:55
我记得你说过esp8266的外设管脚是可以任意指定的?但到了mp上是不是就固定了?一般就用官方推荐的功能?
点赞  2016-7-29 08:57
引用: johnrey 发表于 2016-7-29 08:57
我记得你说过esp8266的外设管脚是可以任意指定的?但到了mp上是不是就固定了?一般就用官方推荐的功能?

一部分是可以任意设置输入输出PWM,还有中断,一部分只能做数字输入输出。ADC是固定的一个GPIO。这是芯片本身的限制。
点赞  2016-7-29 09:02
学习学习
点赞  2016-8-12 22:48

为什么 设置 IRQ 触发类型设为Pin.IRQ_LOW_LEVEL 会报错,说这个属性无效

单片机软件/硬件交流群:127034610
点赞  2020-12-21 16:39

如果两个输入口,想其中一个口的电平,应该如何操作呀,谢谢

 

 

单片机软件/硬件交流群:127034610
点赞  2020-12-21 16:40
引用: liushiming82 发表于 2020-12-21 16:39 为什么 设置 IRQ 触发类型设为Pin.IRQ_LOW_LEVEL 会报错,说这个属性无效

MPY中没有你说的这个属性,只能设置 Pin.IRQ_RISING 或 Pin.IRQ_FALLING 中断,或者两者组合。

点赞  2020-12-21 22:04
引用: liushiming82 发表于 2020-12-21 16:40 如果两个输入口,想其中一个口的电平,应该如何操作呀,谢谢    

没有看懂问题

点赞  2020-12-21 22:04
引用: dcexpert 发表于 2020-12-21 22:04 MPY中没有你说的这个属性,只能设置 Pin.IRQ_RISING 或 Pin.IRQ_FALLING 中断,或者两者组合。

但是,我看的资料里面有低电平和高电平呀

  • Pin.IRQ_FALLING
  • Pin.IRQ_RISING
  • Pin.IRQ_LOW_LEVEL
  • Pin.IRQ_HIGH_LEVEL
    设置 IRQ 触发类型。
  •  
单片机软件/硬件交流群:127034610
点赞  2020-12-22 11:36
引用: dcexpert 发表于 2020-12-21 22:04 MPY中没有你说的这个属性,只能设置 Pin.IRQ_RISING 或 Pin.IRQ_FALLING 中断,或者两者组合。

这个问题已经解决,谢谢

 

单片机软件/硬件交流群:127034610
点赞  2020-12-22 11:36
引用: liushiming82 发表于 2020-12-22 11:36 但是,我看的资料里面有低电平和高电平呀 Pin.IRQ_FALLING Pin.IRQ_RISING Pin.IRQ_LOW_LEVEL ...

不是每种硬件平台都支持这些功能。现在官网的文档还有点乱

点赞  2020-12-22 11:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复