os_ms_to_tick
所属模块:时间管理 | 类型:时间换算函数
函数简介
os_ms_to_tick 用于将毫秒时间转换为系统 Tick 数,用于任务延时和调度计算。
该函数会根据当前系统定时器计数值计算单个 Tick 的实际毫秒长度,从而完成动态换算。
函数原型
u16 os_ms_to_tick(u16 ms);
源码实现
u16 os_ms_to_tick(u16 ms)
{
u16 tick_time_us;
u16 tick_value;
u16 tick_ms;
tick_value = OS_T0_TH0;
tick_value = tick_value << 8;
tick_value += OS_T0_TL0;
tick_time_us = 65536 - tick_value;
tick_ms = tick_time_us / 1000;
if(tick_ms == 0)
{
tick_ms = 1;
}
return (ms + tick_ms - 1) / tick_ms;
}
使用示例
void delay_task()
{
u16 tick = os_ms_to_tick(100);
os_task_delay(tick);
}
注意事项
Tick 计算依赖定时器当前计数值,若系统时钟配置变化,该函数结果会相应变化。