os_uptime_ms

所属模块:系统时间 | 类型:运行时间统计函数

API Metadata

函数ID:os_uptime_ms
模块:time
类型:uptime statistics
嵌套深度:1

函数简介

os_uptime_ms 用于获取系统从启动开始累计运行的毫秒时间。

该函数基于32位tick计数器,并结合当前定时器重装值进行精确换算,可用于系统运行时间统计与性能分析。

内部采用临界区保护,保证tick读取的一致性,并使用浮点运算减少换算误差。

函数原型

u32 os_uptime_ms(void);

参数说明

无参数。

返回值

返回系统累计运行时间(单位:毫秒)。

源码实现

u32 os_uptime_ms() { u16 tick_h; u16 tick_l; u16 tick_value; u32 TS; float tick_ms; float total_tick; float total_ms; u16 result_h; u16 result_l; EA = 0; tick_h = OS_TICK_COUNT_H; tick_l = OS_TICK_COUNT_L; EA = 1; tick_value = OS_T0_TH0; tick_value <<= 8; tick_value += OS_T0_TL0; tick_ms = (65536.0 - tick_value) / 1000.0; if(tick_ms <= 0) { tick_ms = 1; } total_tick = ((float)tick_h * 65536.0) + tick_l; total_ms = total_tick * tick_ms; if(total_ms > 4294967295.0) { total_ms = 4294967295.0; } result_h = (u16)(total_ms / 65536.0); result_l = (u16)(total_ms - ((float)result_h * 65536.0)); TS = result_h; TS <<= 16; TS += result_l; return TS; }

使用示例

void debug_uptime() { u32 ms; ms = os_uptime_ms(); // 用于日志或性能统计 }

注意事项

该函数使用浮点运算提升精度,在资源受限系统中需注意执行开销。 tick计数依赖定时器配置,系统频率变化会影响结果精度。

相关推荐