gpio_app.lua 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. --加载AirGPIO_1000驱动文件
  2. local air_gpio = require "AirGPIO_1000"
  3. --AirGPIO_1000扩展GPIO输出测试
  4. --P00每隔一秒切换输出一次高低电平,可以通过示波器或者万用表测量AirGPIO_1000上P00引脚电平
  5. local function gpio_output_task_func()
  6. air_gpio.setup(0x00, 0)
  7. while true do
  8. air_gpio.set(0x00, 0)
  9. sys.wait(1000)
  10. air_gpio.set(0x00, 1)
  11. sys.wait(1000)
  12. end
  13. end
  14. --AirGPIO_1000扩展GPIO输入测试
  15. --P10配置为输出模式,每隔一秒切换输出一次高低电平
  16. --P11配置为输入模式,每隔一秒调用get接口读取一次输入的电平
  17. --将P10和P11两个引脚短接
  18. local function gpio_input_task_func()
  19. air_gpio.setup(0x10, 0)
  20. air_gpio.setup(0x11)
  21. while true do
  22. air_gpio.set(0x10, 0)
  23. sys.wait(1000)
  24. log.info("air_gpio.get(0x11)", air_gpio.get(0x11))
  25. air_gpio.set(0x10, 1)
  26. sys.wait(1000)
  27. log.info("air_gpio.get(0x11)", air_gpio.get(0x11))
  28. end
  29. end
  30. --P04引脚中断处理函数
  31. --id:0x04
  32. --level:触发中断后,某一时刻,扩展GPIO输入的电平状态,高电平为1, 低电平为0
  33. local function P04_int_cbfunc(id, level)
  34. log.info("P04_int_cbfunc", id, level)
  35. end
  36. --P14引脚中断处理函数
  37. --id:0x14
  38. --level:触发中断后,某一时刻,扩展GPIO输入的电平状态,高电平为1, 低电平为0
  39. local function P14_int_cbfunc(id, level)
  40. log.info("P14_int_cbfunc", id, level)
  41. end
  42. --AirGPIO_1000扩展GPIO中断测试
  43. --P03配置为输出模式,每隔一秒切换输出一次高低电平
  44. --P04配置为中断模式,并且配置中断处理函数P04_int_cbfunc
  45. --将P03和P04两个引脚短接
  46. --P13配置为输出模式,每隔一秒切换输出一次高低电平
  47. --P14配置为中断模式,并且配置中断处理函数P14_int_cbfunc
  48. --将P13和P14两个引脚短接
  49. local function gpio_int_task_func()
  50. air_gpio.setup(0x03, 0)
  51. air_gpio.setup(0x04, P04_int_cbfunc)
  52. air_gpio.setup(0x13, 0)
  53. air_gpio.setup(0x14, P14_int_cbfunc)
  54. while true do
  55. air_gpio.set(0x03, 0)
  56. air_gpio.set(0x13, 0)
  57. sys.wait(1000)
  58. air_gpio.set(0x03, 1)
  59. air_gpio.set(0x13, 1)
  60. sys.wait(1000)
  61. end
  62. end
  63. --初始化Air8000和AirGPIO_1000之间的通信参数
  64. --使用Air8101的I2C0
  65. --使用Air8101的GPIO2做为中断引脚
  66. --Air8101核心板和AirGPIO_1000配件板的接线方式如下
  67. --Air8101核心板 AirGPIO_1000配件板
  68. --VDD_EXT(3.3V)-----------------3V3
  69. -- GND-----------------GND
  70. -- I2C1_SDA-----------------SDA
  71. -- I2C1_SCL-----------------SCL
  72. -- GPIO2-----------------INT
  73. air_gpio.init(1, 2)
  74. --AirGPIO_1000的GPIO输出测试
  75. sys.taskInit(gpio_output_task_func)
  76. --AirGPIO_1000的GPIO输入测试
  77. sys.taskInit(gpio_input_task_func)
  78. --AirGPIO_1000的GPIO中断测试
  79. sys.taskInit(gpio_int_task_func)