os_sec_to_tick
所属模块:时间管理 | 类型:时间换算函数
函数简介
os_sec_to_tick 用于将秒转换为系统 Tick 数。
该函数基于当前定时器计数值计算单个 Tick 的实际毫秒长度,从而推导出 1 秒对应的 Tick 数。
常用于长时间延时与周期任务调度。
函数原型
u16 os_sec_to_tick(u8 sec);
源码实现
u16 os_sec_to_tick(u8 sec)
{
u16 tick_value;
u16 tick_ms;
u16 tick_per_sec;
tick_value = OS_T0_TH0;
tick_value <<= 8;
tick_value += OS_T0_TL0;
tick_ms = (65536 - tick_value) / 1000;
if(tick_ms == 0)
{
tick_ms = 1;
}
tick_per_sec = 1000 / tick_ms;
return tick_per_sec * sec;
}
使用示例
void task_demo()
{
u16 tick = os_sec_to_tick(2);
os_task_delay(tick);
}
注意事项
转换结果依赖系统 Tick 精度,若定时器配置变化,结果会相应变化。