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

HarmonyOS
2024-12-13 12:59:28
浏览
收藏 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;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

}

分享
微博
QQ
微信
回复
2024-12-13 14:21:43
相关问题
liteos-m怎么实现进程间互斥?
7254浏览 • 1回复 已解决
LiteOS-M如何获取系统当前时间?
9266浏览 • 1回复 待解决
关于LiteOS-M内核一点疑惑
8919浏览 • 1回复 已解决
Hi3861用liteOS-m为啥要固化到ROM
14030浏览 • 3回复 待解决