os_uptime_ms
所属模块:系统时间 | 类型:运行时间统计函数
函数简介
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 total_tick;
u32 tick_us;
u32 tick_ms;
/*
* 读取32位tick计数
*/
EA = 0;
tick_h = OS_TICK_COUNT_H;
tick_l = OS_TICK_COUNT_L;
EA = 1;
/*
* 组合tick数量
*/
total_tick = ((u32)tick_h << 16) | tick_l;
/*
* 获取单tick时间(us)
*/
tick_value = OS_T0_TH0;
tick_value <<= 8;
tick_value += OS_T0_TL0;
tick_us = 65536 - tick_value;
/*
* 转换为毫秒
*/
tick_ms = tick_us / 1000;
if(tick_ms == 0)
{
tick_ms = 1;
}
return total_tick * tick_ms;
}
使用示例
void debug_uptime()
{
u32 ms;
ms = os_uptime_ms();
// 用于日志或性能统计
}
注意事项
该函数使用浮点运算提升精度,在资源受限系统中需注意执行开销。
tick计数依赖定时器配置,系统频率变化会影响结果精度。