# Development Guidelines
- [Available APIs](#section158501652121514)
- [How to Develop](#section783435801510)
- [Development Example](#section460018317164)
- [Example Description](#section127752801718)
- [Sample Code](#section321653551711)
- [Verification](#section4366193318167)
The time management module provides APIs to implement conversion between the system running time, ticks, and seconds/milliseconds.
## Available APIs
The following table describes APIs available for the OpenHarmony LiteOS-M time management. For more details about the APIs, see the API reference.
**Table 1** APIs of the time management module
Category
|
API
|
Description
|
Time conversion
|
LOS_MS2Tick
|
Converts milliseconds into ticks.
|
LOS_Tick2MS
|
Converts ticks into milliseconds.
|
OsCpuTick2MS
|
Converts cycles into milliseconds. Two UINT32 values indicate the high-order and low-order 32 bits of the result value, respectively.
|
OsCpuTick2US
|
Converts cycles into microseconds. Two UINT32 values indicate the high-order and low-order 32 bits of the result value, respectively.
|
Time statistics
|
LOS_SysClockGet
|
Obtains the system clock.
|
LOS_TickCountGet
|
Obtains the number of ticks since the system starts.
|
LOS_CyclePerTickGet
|
Obtains the number of cycles for each tick.
|
## How to Develop
The typical development process of time management is as follows:
1. Complete board configuration and adaptation as required, and configure the system clock frequency \(**OS\_SYS\_CLOCK** in Hz and **LOSCFG\_BASE\_CORE\_TICK\_PER\_SECOND**\). The default value of **OS\_SYS\_CLOCK** varies with the hardware platform.
2. Call the clock conversion and statistics APIs.
> **NOTE:**
>- The time management module depends on **OS\_SYS\_CLOCK** and **LOSCFG\_BASE\_CORE\_TICK\_PER\_SECOND**.
>- The number of system ticks is not counted when the interrupt feature is disabled. Therefore, the number of ticks cannot be used as the accurate time.
>- The configuration options are maintained in the **target\_config.h** file of the development board project.
## Development Example
### Example Description
The following example describes basic time management methods, including:
1. Time conversion: converts milliseconds to ticks or converts ticks to milliseconds.
2. Time statistics: obtains the number of cycles per tick, number of ticks since system startup, and number of delayed ticks.
### Sample Code
Prerequisites
- The default value of **LOSCFG\_BASE\_CORE\_TICK\_PER\_SECOND** is **100**.
- The system clock frequency **OS\_SYS\_CLOCK** is configured.
Time conversion:
```
VOID Example_TransformTime(VOID)
{
UINT32 ms;
UINT32 tick;
tick = LOS_MS2Tick(10000); // Convert 10000 ms into ticks.
dprintf("tick = %d \n", tick);
ms = LOS_Tick2MS(100); // Convert 100 ticks into ms.
dprintf("ms = %d \n", ms);
}
```
Time statistics and delay:
```
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);
}
}
```
### Verification
The development is successful if the return result is as follows:
Time conversion:
```
tick = 1000
ms = 1000
```
Time statistics and delay:
```
LOS_CyclePerTickGet = 495000
LOS_TickCountGet = 1
LOS_TickCountGet after delay = 201
```