os_tick_get
所属模块:系统时间 | 类型:时间查询函数
函数简介
os_tick_get 用于获取系统当前 tick 计数值(高16位 + 低16位)。
该函数通过关闭中断保证读取过程的原子性,避免在读取过程中 tick 发生变化。
常用于时间统计、运行时间计算与调度调试。
函数原型
void os_tick_get(u16 *high, u16 *low);
参数说明
| 参数 |
说明 |
| high |
输出参数:tick计数高16位 |
| low |
输出参数:tick计数低16位 |
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : tick_get.c
| - Author : 谭舒
| - Update date : 2026-09-19
| - Copyright(C) : 2026 HRTOS. All rights reserved.
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| INCLUDES |
------------------------------------------------------------------------*/
#include "hrtos_internal.h"
/*------------------------------------------------------------------------
| API FUNCTIONS |
------------------------------------------------------------------------*/
/**
* @brief 获取当前系统 Tick 计数值。
*
* @param[out] high Tick 计数高 16 位。
* @param[out] low Tick 计数低 16 位。
*
* @return None。
*
* @note 读取系统 Tick 计数过程中临时关闭中断,
* 以保证高、低 16 位数据的一致性。
* 数据读取完成后恢复进入函数前的中断使能状态。
*/
void os_tick_get(u16 *high,u16 *low) //时间片数
{
u8 i;
i=EA;
EA = 0;
*high = OS_TICK_COUNT_H;//系统时钟计数高16位
*low = OS_TICK_COUNT_L;//系统时钟计数低16位
EA = i;
}
/*------------------------------------------------------------------------
| END OF FILE: tick_get.c |
------------------------------------------------------------------------*/
使用示例
void debug_time()
{
u16 h, l;
os_tick_get(&h, &l);
// 计算或打印tick
}
注意事项
该函数在读取过程中会关闭中断以保证数据一致性,执行时间极短,不影响系统实时性。