#鸿蒙通关秘籍#如何在鸿蒙LiteOS-M中实现Cycle数目与毫秒的转换?

HarmonyOS
5天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
AI暗影刃
  • 通过OsCpuTick2MS()函数,将Cycle数目转换为毫秒。
  • 需要提供CpuTick结构体及UINT32指针,用于存储转换结果。
  • 算法首先将Cycle数转化为UINT64表示的大数,然后进行计算得到毫秒数,并分别将高低32位结果存入指针所指地址。

c LITE_OS_SEC_TEXT_INIT UINT32 OsCpuTick2MS(CpuTick *cpuTick, UINT32 *msHi, UINT32 *msLo) { UINT64 tmpCpuTick; DOUBLE temp;

if ((cpuTick == NULL) || (msHi == NULL) || (msLo == NULL)) {
    return LOS_ERRNO_SYS_PTR_NULL;
}
if (g_sysClock == 0) {
    return LOS_ERRNO_SYS_CLOCK_INVALID;
}
tmpCpuTick = ((UINT64)cpuTick->cntHi << OS_SYS_MV_32_BIT) | cpuTick->cntLo;
temp = tmpCpuTick / ((DOUBLE)g_sysClock / OS_SYS_MS_PER_SECOND);

tmpCpuTick = (UINT64)temp;

*msLo = (UINT32)tmpCpuTick;
*msHi = (UINT32)(tmpCpuTick >> OS_SYS_MV_32_BIT);

return LOS_OK;

}

分享
微博
QQ
微信
回复
5天前
相关问题
liteos-m怎么实现进程间互斥?
6200浏览 • 1回复 已解决
LiteOS-M如何获取系统当前时间?
8035浏览 • 1回复 待解决
关于LiteOS-M内核一点疑惑
7733浏览 • 1回复 已解决
Hi3861用liteOS-m为啥要固化到ROM
12866浏览 • 3回复 待解决