跳转至

Air8000的POWER_ON按键控制

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

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

1, 搭建环境

1.1 准备一个Air8000核心板、一根type-c数据线

1.2 下载**Luatools烧录调试工具

1.3 代码下载

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

选择脚本 链接:https://gitee.com/openLuat/LuatOS-Air8000/blob/master/Core_board_demo/gpio/power_on/main.lua

2, 代码展示

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "poweron_demo"
VERSION = "1.0.0"

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

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

local poweron_pin = 46    -- 赋值poweron引脚编号

local count=0    -- 五秒内短按三次关机
local function pwrkeycb() 
    log.info("poweron_key", gpio.get(poweron_pin))
    if gpio.get(poweron_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("poweron_key", gpio.get(poweron_pin))
--     if gpio.get(poweron_pin) == 1 then
--         sys.timerStop(pwroff)
--     else
--         sys.timerStart(pwroff, 5000)
--     end
-- end

if poweron_pin ~= 255 then
    gpio.setup(poweron_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