pins_default.lua 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. --[[
  2. @module pins_default
  3. @summary pins_default测试功能模块
  4. @version 1.0
  5. @date 2025.10.15
  6. @author 马亚丹
  7. @usage
  8. 本demo演示的功能为:使用Air780EHM核心板,演示动态修改管脚复用功能
  9. 核心逻辑:
  10. 1.烧录管脚配置文件pins_Air780EHM.json配置管脚功能
  11. 2.烧录pins_Air780EHM.json前,
  12. pin28默认功能是UART2_RXD
  13. pin29默认功能是UART2_TXD
  14. pin55默认功能是CAM_RX0
  15. pin56默认功能是CAM_RX1
  16. 烧录了pins_Air780EHM.json后,在内核固件运行时,已经自动加载pins_Air780EHM.json,并且按照pins_Air780EHM.json的配置初始化所有io引脚功能,
  17. 文件中把pin28由原UART2_RXD功能配置为GPIO12,
  18. pin29由原UART2_TXD功能配置为GPIO13,
  19. pin55由原CAM_RX0功能配置为UART2_RXD,
  20. pin56由原CAM_RX1功能配置为UART2_TXD,
  21. 3.演示重新配置的串口管脚的功能,通过串口工具收发数据。
  22. ]]
  23. --如果需要debug,在任何需要的地方添加这一行
  24. --log.info ("打开debug",pins.debug(true))
  25. --如果打开debug后需要关闭debug,在任何需要的地方添加这一行
  26. --log.info ("打开debug",pins.debug(false))
  27. --========验证复用的管脚的功能=========--
  28. local uartid = 2
  29. --初始化 参数都可以根据实施情况修改
  30. uart.setup(
  31. --串口id
  32. uartid,
  33. --波特率
  34. 115200,
  35. 8, --数据位
  36. 1 --停止位
  37. )
  38. log.info("uart", "uart2配置完成")
  39. local function ur_rec(id, len)
  40. local s = ""
  41. repeat
  42. s = uart.read(id, 128)
  43. -- #s 是取字符串的长度
  44. if #s > 0 then
  45. -- 关于收发hex值,请查阅 https://doc.openluat.com/article/583
  46. log.info("uart", "receive", id, #s, s)
  47. -- 如果传输二进制/十六进制数据, 部分字符不可见, 不代表没收到,可以用以hex格式打印
  48. log.info("uart", "receive(hex)", id, #s, s:toHex())
  49. end
  50. until s == ""
  51. end
  52. -- 收取数据会触发回调, 这里的 "receive" 是固定值不要修改。
  53. uart.on(uartid, "receive", ur_rec)
  54. --向串口发送数据
  55. local function uart_test()
  56. local n = 0
  57. while n < 10 do
  58. sys.wait(2000)
  59. log.info("这是第" .. n .. "次向串口发数据")
  60. -- 写入可见字符串
  61. --uart.write(uartid, "test data.")
  62. -- 写入十六进制字符串
  63. uart.write(uartid, string.char(0x55, 0xAA, 0x4B, 0x03, 0x86))
  64. n = n + 1
  65. sys.wait(2000)
  66. end
  67. end
  68. sys.taskInit(uart_test)