跳转到内容

Alcor6L/eLua/pio

来自维基教科书,开放的书籍,开放的世界


此模块包含用于访问 CPU 的 PIO(可编程输入输出)引脚的函数。它包含两组具有相同名称和行为的函数。一组对用于访问端口中单个引脚的函数进行分组,另一组对用于访问完整端口的函数进行分组。

使用 pio 模块,您可以指定端口名称,如在您的 eLua 的 CPU 数据手册中所示。例如,如果您的 CPU 的端口名为 PA、PB 和 PC,则可以使用 pio.PApio.PBpio.PC 分别引用它们。如果您的 CPU 使用 P0、P1、P2 而不是 PA、PB 和 PC,您可以简单地使用 pio.P0pio.P1pio.P2 代替。

您还可以引用单个引脚而不是端口。使用与上面相同的符号,pio.PA_0 指的是端口 PA 的第一个引脚,pio.P0_15 指的是端口 P0 的第 16 个引脚,依此类推。

pio.pin.setdir

[编辑 | 编辑源代码]

设置引脚方向

pio.pin.setdir( direction, pin1, pin2, ..., pinn )
  • pio.pin.setdir( direction, pin1, pin2, ..., pinn )
  • direction - 引脚方向,可以是 pio.INPUTpio.OUTPUT
  • pin1 - 第一个引脚
  • pin2 (可选) - 第二个引脚
  • pinn (可选) - 第 n 个引脚

返回:无。

pio.pin.setpull

[编辑 | 编辑源代码]

在指定的引脚上启用/禁用上拉/下拉

pio.pin.setpull( type, pin1, pin2, ..., pinn )
  • type - 'pull' 类型,可以是 pio.PULLUP 来启用上拉,pio.PULLDOWN 来启用下拉,或者 pio.NOPULL 来禁用上拉和下拉
  • pin1 - 第一个引脚
  • pin2 (可选) - 第二个引脚
  • pinn (可选) - 第 n 个引脚

返回:无。

pio.pin.setval

[编辑 | 编辑源代码]

设置引脚值

pio.pin.setval( value, pin1, pin2, ..., pinn )
  • value - 引脚值,可以是 0 或 1
  • pin1 - 第一个引脚
  • pin2 (可选) - 第二个引脚
  • pinn (可选) - 第 n 个引脚

返回:无。

pio.pin.getval

[编辑 | 编辑源代码]

获取引脚值

val1, val2, ..., valn = pio.pin.getval( pin1, pin2, ..., pinn )
  • pin1 - 第一个引脚
  • pin2 (可选) - 第二个引脚
  • pinn (可选) - 第 n 个引脚

返回:引脚的价值,0 或 1

pio.pin.sethigh

[编辑 | 编辑源代码]

将引脚设置为 1(高电平)

pio.pin.sethigh( pin1, pin2, ..., pinn )
  • pin1 - 第一个引脚
  • pin2 (可选) - 第二个引脚
  • pinn (可选) - 第 n 个引脚

返回:无。

pio.pin.setlow

[编辑 | 编辑源代码]

将引脚设置为 0(低电平)

pio.pin.setlow( pin1, pin2, ..., pinn )
  • pin1 - 第一个引脚
  • pin2 (可选) - 第二个引脚
  • pinn (可选) - 第 n 个引脚

返回:无。

pio.port.setdir

[编辑 | 编辑源代码]

设置端口方向

pio.port.setdir( direction, port1, port2, ..., portn )
  • direction - 端口方向,可以是 pio.INPUT 或 pio.OUTPUT
  • port1 - 第一个端口
  • port2 (可选) - 第二个端口
  • portn (可选) - 第 n 个端口

返回:无。

pio.port.setpull

[编辑 | 编辑源代码]

在指定的端口上启用/禁用上拉/下拉

pio.port.setpull( type, port1, port2, ..., portn )
  • type - 'pull' 类型,可以是 pio.PULLUP 来启用上拉,pio.PULLDOWN 来启用下拉,或者 pio.NOPULL 来禁用上拉和下拉
  • port1 - 第一个端口
  • port2 (可选) - 第二个端口
  • portn (可选) - 第 n 个端口

返回:无。

pio.port.setval

[编辑 | 编辑源代码]

设置端口值

pio.port.setval( value, port1, port2, ..., portn )
  • value - 端口值
  • port1 - 第一个端口
  • port2 (可选) - 第二个端口
  • portn (可选) - 第 n 个端口

返回:无。

pio.port.getval

[编辑 | 编辑源代码]

获取端口值

val1, val2, ..., valn = pio.port.getval( port1, port2, ..., portn )
  • port1 - 第一个端口
  • port2 (可选) - 第二个端口
  • portn (可选) - 第 n 个端口

返回:端口的价值

pio.port.sethigh

[编辑 | 编辑源代码]

将端口设置为全 1(高电平)

pio.port.sethigh( port1, port2, ..., portn )
  • port1 - 第一个端口
  • port2 (可选) - 第二个端口
  • portn (可选) - 第 n 个端口

返回:无。

pio.port.setlow

[编辑 | 编辑源代码]

将端口设置为全 0(低电平)

pio.port.setlow( port1, port2, ..., portn )
  • port1 - 第一个端口
  • port2 (可选) - 第二个端口
  • portn (可选) - 第 n 个端口

返回:无。

pio.decode

[编辑 | 编辑源代码]

将 PIO 资源号转换为相应的端口和引脚。这最常用于 GPIO 边缘中断例程,将 Lua 中断例程的参数转换为引起中断的端口和引脚,但它也可以用于从引脚名称 pio.PA_0、pio.P2_15 等返回的值。

port, pin = pio.decode( resnum )
  • resnum - 引脚的资源号

返回

  • port - 端口的索引,从 0 开始(因此端口 A 为 0,端口 B 为 1,依此类推)
  • pin - 引脚号,通常从 0 到 31
华夏公益教科书