# 开发指导 - [接口说明](#section158501652121514) - [开发流程](#section783435801510) - [编程实例](#section460018317164) - [实例描述](#section127752801718) - [示例代码](#section321653551711) - [结果验证](#section4366193318167) 用户需要了解当前系统运行的时间以及Tick与秒、毫秒之间的转换关系时,需要使用到时间管理模块的接口。 ## 接口说明 OpenHarmony LiteOS-M内核的时间管理提供下面几种功能,接口详细信息可以查看API参考。 **表 1** 时间管理接口

功能分类

接口名

描述

时间转换

LOS_MS2Tick

毫秒转换成Tick

LOS_Tick2MS

Tick转化为毫秒

OsCpuTick2MS

Cycle数目转化为毫秒,使用2个

UINT32类型的数值分别表示结果数值的高、低32位。

OsCpuTick2US

Cycle数目转化为微秒,使用2个

UINT32类型的数值分别表示结果数值的高、低32位。

时间统计

LOS_SysClockGet

获取系统时钟

LOS_TickCountGet

获取自系统启动以来的Tick数

LOS_CyclePerTickGet

每个Tick多少Cycle数

## 开发流程 时间管理的典型开发流程: 1. 根据实际需求,完成板级配置适配,并配置系统主时钟频率OS\_SYS\_CLOCK(单位Hz)和LOSCFG\_BASE\_CORE\_TICK\_PER\_SECOND。OS\_SYS\_CLOCK的默认值基于硬件平台配置。 2. 调用时钟转换/统计接口。 >![](../public_sys-resources/icon-note.gif) **说明:** >- 时间管理不是单独的功能模块,依赖于OS\_SYS\_CLOCK和LOSCFG\_BASE\_CORE\_TICK\_PER\_SECOND两个配置选项。 >- 系统的Tick数在关中断的情况下不进行计数,故系统Tick数不能作为准确时间使用。 >- 配置选项维护在开发板工程的文件target\_config.h。 ## 编程实例 ### 实例描述 在下面的例子中,介绍了时间管理的基本方法,包括: 1. 时间转换:将毫秒数转换为Tick数,或将Tick数转换为毫秒数。 2. 时间统计:每Tick的Cycle数、自系统启动以来的Tick数和延迟后的Tick数。 ### 示例代码 前提条件: - 使用每秒的Tick数LOSCFG\_BASE\_CORE\_TICK\_PER\_SECOND的默认值100。 - 配好OS\_SYS\_CLOCK系统主时钟频率。 时间转换: ``` VOID Example_TransformTime(VOID) { UINT32 ms; UINT32 tick; tick = LOS_MS2Tick(10000); // 10000ms转换为tick dprintf("tick = %d \n", tick); ms = LOS_Tick2MS(100); // 100tick转换为ms dprintf("ms = %d \n", ms); } ``` 时间统计和时间延迟: ``` VOID Example_GetTime(VOID) { UINT32 cyclePerTick; UINT64 tickCount; cyclePerTick = LOS_CyclePerTickGet(); if(0 != cyclePerTick) { dprintf("LOS_CyclePerTickGet = %d \n", cyclePerTick); } tickCount = LOS_TickCountGet(); if(0 != tickCount) { dprintf("LOS_TickCountGet = %d \n", (UINT32)tickCount); } LOS_TaskDelay(200); tickCount = LOS_TickCountGet(); if(0 != tickCount) { dprintf("LOS_TickCountGet after delay = %d \n", (UINT32)tickCount); } } ``` ### 结果验证 编译运行得到的结果为: 时间转换: ``` tick = 1000 ms = 1000 ``` 时间统计和时间延迟: ``` LOS_CyclePerTickGet = 495000 LOS_TickCountGet = 1 LOS_TickCountGet after delay = 201 ```