#include "sr_osal.h"

#if  0
//性能测试使用，嵌在BSP内部，记录开始调用原厂API的tick
uint32_t g_callTick =0;
#endif

/*
解释：转换分为两部分：
整数部分：首先，计算 ms 除以 OS_MS_PER_SECOND（每秒的毫秒数，通常是1000）的商，然后乘以 SR_TICK_RATE_HZ（每秒的tick数）。这部分处理 ms 中的完整秒数。
小数部分：然后，计算 ms 除以 OS_MS_PER_SECOND 的余数，这表示剩余的毫秒数。为了将这部分也转换为“ticks”，我们先将其乘以 SR_TICK_RATE_HZ，然后加上 OS_MS_PER_SECOND - 1，并最后除以 OS_MS_PER_SECOND。这一步的目的是确保任何非零的余数都会被转换为至少一个“tick”（向上取整）。

*/
#define OS_MS_PER_SECOND   1000

srTick_t SR_OsMsToTick(uint32_t ms)
{
    srTick_t tick;

    tick = SR_TICK_RATE_HZ * (ms / OS_MS_PER_SECOND);
    tick += (SR_TICK_RATE_HZ * (ms % OS_MS_PER_SECOND) + (OS_MS_PER_SECOND - 1)) / OS_MS_PER_SECOND;

    return tick;
}

