
# 开发指导
#### 使用场景
用户需要了解当前系统运行的时间以及Tick与秒、毫秒之间的转换关系等。
#### 功能
Huawei LiteOS的时间管理提供下面几种功能，接口详细信息可以查看API参考。
| 功能分类 | 接口名                 | 描述                       |
|:---|:---|:---|
| 时间转换 | LOS_MS2Tick         | 毫秒转换成Tick                |
| 时间转换 | LOS_Tick2MS         | Tick转化为毫秒                |
| 时间统计 | LOS_CyclePerTickGet | 每个Tick多少Cycle数           |
| 时间统计 | LOS_TickCountGet    | 获取自系统启动以来的Tick数          |
| 时间统计 | LOS_GetCpuCycle     | 获取自系统启动以来的Cycle数         |
| 时间统计 | LOS_CurrNanosec     | 获取自系统启动以来的纳秒数            |
| 延时管理 | LOS_Udelay          | 以us为单位的忙等，但可以被优先级更高的任务抢占 |
| 延时管理 | LOS_Mdelay          | 以ms为单位的忙等，但可以被优先级更高的任务抢占 |
   
#### 时间管理错误码
时间转换存在出错的可能性，需要返回对应的错误码，以便快速定位错误原因。
| 序号 | 定义                               | 实际数值       | 描述          | 参考解决方案                                                                                  |
|:---|:---|:---|:---|:---|
| 1  | LOS_ERRNO_TICK_CFG_INVALID       | 0x02000400 | 无效的系统Tick配置 | 在板级配置适配时配置有效的系统主时钟频率OS_SYS_CLOCK，通过make menuconfig配置有效的LOSCFG_BASE_CORE_TICK_PER_SECOND |
| 2  | LOS_ERRNO_TICK_NO_HWTIMER        | 0x02000401 | 暂不使用该错误码    | -                                                                                       |
| 3  | LOS_ERRNO_TICK_PER_SEC_TOO_SMALL | 0x02000402 | 暂不使用该错误码    | -                                                                                       |
   
#### 开发流程
时间管理的典型开发流程：
1. 根据实际需求，在板级配置适配时确认是否使能LOSCFG_BASE_CORE_TICK_HW_TIME宏选择外部定时器，并配置系统主时钟频率OS_SYS_CLOCK（单位Hz）。OS_SYS_CLOCK的默认值基于硬件平台配置。
2. 通过make menuconfig配置LOSCFG_BASE_CORE_TICK_PER_SECOND，配置项的菜单路径为：Kernel ---\> Basic Config ---\> Task。
   
   | 配置项                              | 含义      | 取值范围       | 默认值 | 依赖 |
   |:---|:---|:---|:---|:---|
   | LOSCFG_BASE_CORE_TICK_PER_SECOND | 每秒Tick数 | (0, 1000\] | 100 | 无  |
      
   
3. 调用时钟转换/统计接口。
 
