跳转至

Air201的PWRKEY按键控制

PWRKEY为Air201的开关机控制管脚,关机状态下将PWRKEY管脚拉低1.5s可以将模块开机。但是在开机状态下却不能以相同拉低的方式将模块关机。

那现在就介绍怎么通过使用GPIO控制,实现Air201预留的PWRKEY按键,长按关机的功能。

1, 搭建环境

1.1 准备一个201开发板、一根type-c数据线

1.2 下载Luatools烧录调试工具

1.3 代码下载

选择对应固件 链接:https://gitee.com/openLuat/LuatOS-Air201/tree/master/core

选择脚本 链接:https://gitee.com/openLuat/LuatOS-Air201/tree/master/demo/gpio/pwrkey

2, 代码展示

-- Luatools需要PROJECT和VERSION这两个信息
PROJECT = "pwrkey_demo"
VERSION = "1.0.0"

log.info("main", PROJECT, VERSION)

-- sys库是标配
_G.sys = require("sys")

local powerkey_pin = 46    -- 赋值powerkey引脚编号

-- local count=0    -- 五秒内短按三次关机
-- local function pwrkeycb() 
--     log.info("pwrkey", gpio.get(powerkey_pin))
--     if gpio.get(powerkey_pin) == 0 then
--         count=count+1
--         sys.timerStart(function()
--             log.info("计数归零")
--             count=0
--         end, 5000)
--         if count>=3 then
--             pm.shutdown() 
--         end
--     end
-- end

function pwroff()
    log.info("power off!!")
    pm.shutdown() 
end

local function pwrkeycb()    --长按五秒关机
    log.info("pwrkey", gpio.get(powerkey_pin))
    if gpio.get(powerkey_pin) == 1 then
        sys.timerStop(pwroff)
    else
        sys.timerStart(pwroff, 5000)
    end
end

if powerkey_pin ~= 255 then
    gpio.setup(powerkey_pin, pwrkeycb, gpio.PULLUP,gpio.BOTH)
else
    log.info("bsp not support")
end
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

3, 烧录程序

开始下载

image

4, 展示效果

4.1 长按五秒关机功能

image

4.2 五秒内短按三次关机功能

image