--[[ @module mstick @summary 统一毫秒时基(全局 mstick()): 封装 LuatOS mcu.ticks() @version 0.1 @date 2026.09.10 @usage 背景: 工程内原有 10 处调用 mstick(), 但 LuatOS 并未提供该 API (正确写法是 mcu.ticks(), 单位 1/mcu.hz() 秒; hz 通常 1000), 上板运行必然报 "attempt to call a nil value (global 'mstick')"。 本模块提供全局函数 mstick() 作为工程唯一时基入口: - 优先 mcu.ticks(); 无 mcu 库时回退 os.time()*1000(便于 PC 侧离线自检) - 约定单位毫秒。差值判据(now - marked)保持不变即可, 无需关心绝对基准 - ⚠ mcu.ticks() 为 32 位计数, 约 49.7 天回绕一次; 超时判定均为差值比较, 回绕瞬间最坏推迟一次触发(秒级), 对 5s/60s 级超时无实质影响 用法: 在 main.lua 中 require "mstick"(只 require, 不要用 local 接返回值, 否则会遮蔽同名全局函数, 导致后续 mstick() 调用报错) ]] local function now_ms() if mcu and type(mcu.ticks) == "function" then return mcu.ticks() end return os.time() * 1000 end -- 全局函数: 工程内既有 10 处 mstick() 调用点依赖此全局名 _G.mstick = now_ms return { now = now_ms }