HCoreBase/include/HTimer.h
2025-03-12 11:04:56 +08:00

57 lines
1.2 KiB
C

/**
* 日期: 2025-03-08
* 作者: coffee
* 描述: 毫秒级定时器, 添加即可使用, 定时器最大数量为 HTIMER_MAX
*/
#ifndef __H_TIMER_H__
#define __H_TIMER_H__
#include <stdint.h>
// 定时器最大数量
#ifndef HTIMER_MAX
#define HTIMER_MAX 10
#endif
#ifndef HTIMER_INVALID
#define HTIMER_INVALID -1
#endif
// 检查添加定时任务超出限制后进入死循环, 方便调试
#ifdef HTIMER_CHECK_LOOP
#define HTIMER_CHECK_INVALID_LOOP
#endif
typedef enum
{
kHTimerOnce = 0, ///< 仅执行一次
kHTimerLoop, ///< 循环执行
} eHTimerFlags;
typedef void (*HTimerCallType)();
///< 初始化毫秒定时器, 需要传递获取毫秒的函数
void HTimerInitMs(uint32_t (*func)(void));
///< 获取毫秒
uint32_t HTimerGetMs();
///< 运行定时器可执行任务, 需要在主循环中调用
void HTimerRun();
///< 添加一个定时任务, 添加失败返回 HTIMER_INVALID, ms不超过24比特
int16_t HTimerAdd(uint32_t ms, HTimerCallType call, eHTimerFlags flags);
///< 移除一个定时任务
void HTimerRemove(int16_t index);
///< 在定时器回调任务中获取当前定时器调用者索引, 不存在返回 HTIMER_INVALID
int16_t HTimerGetCurrentCaller();
#endif //__H_TIMER_H__