main.lua 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. PROJECT = "mcu_test_demo"
  2. VERSION = "1.0.0"
  3. log.info("main", PROJECT, VERSION)
  4. _G.sys = require("sys")
  5. mcu.hardfault(1) -- 设置为死机后重启
  6. -- 初始化看门狗(如果支持)
  7. if wdt then
  8. wdt.init(9000)
  9. sys.timerLoopStart(wdt.feed, 3000)
  10. end
  11. -- 测试函数
  12. local function testMcuFunctions()
  13. -- 1. 测试主频获取
  14. local mhz = mcu.getClk()
  15. if mhz == -1 then
  16. log.error("mcu", "getClk failed")
  17. else
  18. log.info("mcu", "Current clock:", mhz, "MHz", mhz == 0 and "(可能处于32k省电模式)" or "")
  19. end
  20. -- 2. 测试唯一ID
  21. local unique_id = mcu.unique_id()
  22. if #unique_id > 0 then
  23. log.info("mcu", "Unique ID(hex):", unique_id:toHex())
  24. else
  25. log.warn("mcu", "Unique ID not supported")
  26. end
  27. -- 3. 测试ticks相关函数
  28. log.info("mcu", "ticks:", mcu.ticks())
  29. log.info("mcu", "获取每秒的tick数量:", mcu.hz())
  30. -- 4. 测试64位tick
  31. local tick_str, tick_per = mcu.tick64()
  32. log.info("mcu", "tick64:", tick_str:toHex(), "ticks per us:", tick_per)
  33. -- 5. 测试ticks2函数
  34. local us_h, us_l = mcu.ticks2(0)
  35. local ms_h, ms_l = mcu.ticks2(1)
  36. local sec_h, sec_l = mcu.ticks2(2)
  37. log.info("mcu", "us:", us_h, us_l)
  38. log.info("mcu", "ms:", ms_h, ms_l)
  39. log.info("mcu", "sec:", sec_h, sec_l)
  40. --6.测试
  41. local value = mcu.x32(0x2009FFFC) --输出"0x2009fffc"
  42. log.info("mcu","string",value)
  43. -- 7. 测试tick差值计算
  44. local tick1 = mcu.tick64()
  45. sys.wait(100)
  46. local tick2 = mcu.tick64()
  47. local result, diff_tick = mcu.dtick64(tick1, tick2)
  48. log.info("mcu", "dtick64 result:", result, "diff:", diff_tick)
  49. -- 9. 测试IO复用功能(需要根据具体硬件支持)
  50. mcu.iomux(mcu.UART, 2, 2) -- Air780E的UART2复用到gpio6和gpio7
  51. mcu.iomux(mcu.I2C, 0, 1) -- Air780E的I2C0复用到gpio12和gpio13
  52. --10.
  53. local us_h, us_l = mcu.ticks2(0)
  54. local ms_h, ms_l = mcu.ticks2(1)
  55. local sec_h, sec_l = mcu.ticks2(2)
  56. log.info("us_h", us_h, "us_l", us_l)
  57. log.info("ms_h", ms_h, "ms_l", ms_l)
  58. log.info("sec_h", sec_h, "sec_l", sec_l)
  59. -- 10. 测试晶振参考时钟输出(需要硬件支持)
  60. -- mcu.XTALRefOutput(true, false)
  61. end
  62. -- 创建测试任务
  63. sys.taskInit(function()
  64. sys.wait(1000) -- 等待系统稳定
  65. -- 每隔5秒运行一次测试
  66. testMcuFunctions()
  67. log.info("End MCU Function Test")
  68. end)
  69. -- 用户代码已结束---------------------------------------------
  70. -- 结尾总是这一句
  71. sys.run()
  72. -- sys.run()之后后面不要加任何语句!!!!!