gpio.setup(pin, mode, pull, irq)
gpio.set(pin, value)
gpio.get(pin)
gpio.close(pin)
- 常量
gpio.LOW = 0
gpio.HIGH = 1
gpio.OUTPUT = 0
gpio.INPUT = 1
gpio.IRQ = 2
gpio.PULLNO = 0
gpio.PULLUP = 1
gpio.PULLDOWN = 2
gpio.RISING = 0
gpio.FALLING = 1
gpio.BOTH = 2
设置gpio,初始化
入参 |
说明 |
pin |
数字,要设置的引脚id |
mode |
par,输入输出模式. 数字0/1代表输出模式,nil代表输入模式,function代表中断模式 |
pull |
数字,上拉下列模式, 可以是gpio.PULLUP 或 gpio.PULLDOWN |
irq |
数字,默认gpio.BOTH,中断触发模式, 上升沿gpio.RISING, 下降沿gpio.FALLING |
返回 |
说明 |
handle |
func,输出模式返回设置输出电压的闭包函数, 输入模式和中断模式返回获取电平的闭包函数 |
PROJECT = "GPIO"
VERSION = "1.0.0"
VER = ""
if rtos.hw then VER = rtos.hw():upper() end
log.warn("IMEI:", misc.getImei(), "Dev", VER)
if VER == "ZL500" or VER == "ZL400" then
log.info("mem sys", rtos.meminfo("sys"))
log.info("mem lua", rtos.meminfo())
end
local netled, linkled
-- gpio输出测试
sys.taskInit(function()
-- gpio13配置为输出模式
-- gpio8配置为输出模式
if VER == "ZL500" then
netled = gpio.setup(33, 0) -- output
linkled = gpio.setup(12, 0)
else
netled = gpio.setup(13, 0) -- output
linkled = gpio.setup(8, 0)
end
log.info("test gpio", "start")
sys.wait(1000)
while 1 do
netled(0)
linkled(1)
sys.wait(1000)
netled(1)
linkled(0)
sys.wait(1000)
end
end)
-- GPIO8配置为输入,可通过getGpio8Fnc获取输入电平
-- 请注释掉上面的gpio8输出测试
-- local getGpio8Fnc = gpio.setup(8)
-- sys.timerLoopStart(function() log.info("test gpio input", getGpio8Fnc()) end,
-- 1000)
-- gpio.setup(pin, mode, pull, irq)
-- pin 编号,数字
-- mode 输入输出模式,0/1代表输出模式, nil代表输入模式, function代表中断
-- pull 暂时不支持
-- irq 中断触发模式,默认gpio.BOTH, 上升沿gpio.RISING, 下降沿gpio.FALLING, 上升和下降都要gpio.BOTH
-- function gpio8IntHandle(pin, val) log.info("test gpio int", pin, val) end
-- -- GPIO8配置为中断,可通过getGpio8Fnc()获取输入电平,产生中断时,自动执行gpio8IntHandle函数
-- getGpio8Fnc = gpio.setup(8, gpio8IntHandle)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
while true do sys.eventloop() end
设置gpio输出状态
获取gpio输入状态
关闭gpio初始化