mcu_test.lua 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. --[[
  2. @module mcu_test
  3. @summary 测试mcu模块功能
  4. @version 1.0
  5. @date 2025.10.21
  6. @author 孟伟
  7. @usage
  8. 本demo演示的功能为:
  9. MCU死机时的处理模式设置
  10. 唯一ID获取与显示
  11. 系统tick计数功能测试
  12. 64位tick计数和差值计算
  13. 微秒、毫秒、秒级别的时间计数
  14. 16进制字符串转换输出
  15. 本文件没有对外接口,直接在main.lua中require "mcu_test"就可以加载运行;
  16. ]]
  17. function mcu_test()
  18. -- 测试MCU 死机时的处理模式
  19. -- 死机后重启,一般用于正式产品_
  20. mcu.hardfault(1)
  21. -- 测试唯一ID
  22. local unique_id = mcu.unique_id()
  23. if #unique_id > 0 then
  24. log.info("mcu", "Unique ID(hex):", unique_id:toHex())
  25. else
  26. log.warn("mcu", "Unique ID not supported")
  27. end
  28. -- 测试ticks相关函数
  29. -- 获取启动后的 tick 数
  30. log.info("mcu", "ticks:", mcu.ticks())
  31. -- 获取每秒的 tick 数量
  32. log.info("mcu", "获取每秒的tick数量:", mcu.hz())
  33. -- 测试64位tick
  34. local tick_str, tick_per = mcu.tick64()
  35. log.info("mcu", "tick64:", tick_str:toHex(), "ticks per us:", tick_per)
  36. -- 测试mcu.dtick64接口获取ticks差值计算
  37. local tick1 = mcu.tick64()
  38. sys.wait(100)
  39. local tick2 = mcu.tick64()
  40. local result, diff_tick = mcu.dtick64(tick1, tick2)
  41. log.info("mcu", "dtick64 result:", result, "diff:", diff_tick)
  42. -- 测试ticks2函数
  43. local us_h, us_l = mcu.ticks2(0)
  44. local ms_h, ms_l = mcu.ticks2(1)
  45. local sec_h, sec_l = mcu.ticks2(2)
  46. log.info("mcu", "us:", us_h, us_l)
  47. log.info("mcu", "ms:", ms_h, ms_l)
  48. log.info("mcu", "sec:", sec_h, sec_l)
  49. -- 测试 转换 10 进制数为 16 进制字符串输出
  50. local value = mcu.x32(0x2009FFFC) --输出"0x2009fffc"
  51. log.info("mcu", "string", value)
  52. end
  53. sys.taskInit(mcu_test)