GPIO-通用I/O

本文介绍GPIO-通用I/O支持函数的参数说明及示例。

硬件平台

产品型号

是否支持

硬件类型

固件版本号

HaaS600Kit

开发板

4.0.1

HaaS510

DTU

4.0.1

HaaS520

DTU

4.0.1

HaaS530

DTU

4.0.1

HaaS531

DTU

4.0.1

HaaS632-LT32V

模组

4.0.1

HaaS600-EC600S

模组

4.0.1

HaaS600-EC600N

模组

4.0.1

HaaS600-EC600U

模组

4.0.1

HaaS600-N715

模组

4.0.1

open(Object options)

打开GPIO接口,创建GPIO实例。

入参

Object类型,属性如下:

属性

类型

是否必填

描述

id

String

app.json中自定义的GPIO ID名称。

port

String

GPIO端口号,范围0~255。

dir

String

GPIO方向:

  • 'input':表示输入。

  • 'output':表示输出。

  • 'irq':表示中断。

  • 'opendrain':表示开漏输出。

  • 'hi-z':表示高阻态。

pull

String

GPIO上下拉配置:

  • 'pullup':表示上拉。

  • 'pulldown':表示下拉。

  • 'none':表示浮空。

intMode

String

GPIO中断触发方式:

  • 'rising':表示上升沿。

  • 'falling':表示下降沿。

  • 'both':表示双边沿。

返回

GPIO实例。

writeValue(Number level)

设置GPIO电平值,GPIO引脚为输出模式时可用。

入参

属性

类型

是否必填

描述

level

Number

电平值为1(高电平) 或者 0(低电平)。

返回

无。

toggle()

切换GPIO的电平,当前GPIO电平为低电平时,设置为高电平;当前GPIO电平为高电平时,设置为低电平。

入参

无。

返回

无。

onIRQ(Function cb)

开启引脚中断触发,引脚为输入模式时可用。

入参

属性

类型

是否必填

描述

cb

Function

引脚中断触发回调函数。

返回

无。

readValue()

读取GPIO电平值,输入模式和输出模式时均可用。

入参

无。

返回

Number类型。电平值为1(高电平) 或者 0(低电平)。

close()

关闭GPIO实例。

入参

无。

返回

无。

示例代码

板级配置

板级详细配置说明,请参见app.json-全局配置文件

{
    "version": "1.0.0",
    "io": {
        "D2": {
            "type": "GPIO",
            "port": 18,
            "dir": "output",
            "pull": "pullup"
        },
        "D4": {
            "type": "GPIO",
            "port": 16,
            "dir": "irq",
            "pull": "pullup",
            "intMode": "both"
        },
        "D13": {
            "type": "GPIO",
            "port": 33,
            "dir": "output",
            "pull": "pullup"
        }
    },
    "debugLevel": "DEBUG",
    "repl": "disable"
}

应用脚本

import * as gpio from "gpio";

var d2 = gpio.open({
  id: "D2",
});

var key = gpio.open({
  id: "D4",
});

var led = gpio.open({
  id: "D13",
});

var num = 0;
var val;
setInterval(function () {
  num = !num;
  d2.writeValue(num);
  val = d2.readValue();
  console.log("gpio: D2 get value " + val);
}, 1000);

//key trigger callback
key.onIRQ({
  cb: function () {
    console.log("gpio: key level has changed\n");
  },
});

var valLed;
setInterval(function () {
  led.toggle();
  valLed = led.readValue();
  console.log("gpio: led get value " + valLed);
}, 1000);