gpio_input_task.lua 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. --[[
  2. @module gpio_input_task
  3. @summary Air780EPM演示GPIO输入检测与LED联动示例
  4. @version 1.0
  5. @date 2025.10.21
  6. @author 拓毅恒
  7. @usage
  8. 本文件为Air780EPM开发板演示GPIO输入检测功能的代码示例,核心业务逻辑为:
  9. 1. 初始化GPIO24为输入模式(可用杜邦线接稳压电源,高电平接3.3V,低电平接地)
  10. 2. 初始化GPIO27(板载LED)为输出模式,默认高电平(亮)
  11. 3. 启用输入消抖,消抖时间50 ms
  12. 4. 每500 ms读取一次GPIO24电平,并同步控制LED亮灭
  13. 5. 高电平→LED亮,低电平→LED灭
  14. ]]
  15. -- 配置gpio24为输入模式
  16. -- 配置GPIO27(即开发板上LED灯)为输出模式
  17. -- 请根据实际需求更改gpio编号和上下拉
  18. local inputpin = 24
  19. local ledpin = 27
  20. local input = gpio.setup(inputpin, nil, gpio.PULLDOWN)
  21. local led = gpio.setup(ledpin, 1)
  22. gpio.debounce(inputpin, 50)
  23. --GPIO24检测到有高低电平输入后,会返回GPIO24当前获取到的电平为高还是低,高返回值为1,低返回值为0
  24. --将这个返回值,传给GPIO27(LED),为0 则GPIO27输出低电平(LED灯灭),为1则输出高电平(LED灯亮)
  25. -- 定义一个函数用于循环读取输入引脚电平并控制LED灯
  26. local function controlLed()
  27. local level = 0
  28. while true do
  29. level = gpio.get(inputpin)
  30. log.info("gpio","set netled level: ",level)
  31. gpio.set(ledpin, level)
  32. sys.wait(500)
  33. end
  34. end
  35. sys.taskInit(controlLed)