yb_arm/osp/inc/ospSwTimer.h

67 lines
1.9 KiB
C
Raw Normal View History

2023-07-12 14:14:31 +08:00
#ifndef __OSP_SW_TIMER__
#define __OSP_SW_TIMER__
#define OSP_SW_TIMER_NAME_LEN (24)
#define OSP_SW_TIMER_NUM (4)
#define OSP_GET_MIN(a, b) (((a) < (b)) ? (a) : (b))
/* 定时器回调函数 */
typedef void (*OSP_CALLBACK)(void* pArg);
/* 定时器类型 */
typedef enum _OspTmrType
{
OSP_TMR_ONESHOT = 0, /* 一次性定时器 */
OSP_TMR_PERIODIC /* 周期性定时器 */
}OspTmrType;
/* 定时器状态 */
typedef enum _OspTmrStatus
{
OSP_TMR_STOPED = 0, /* 停止 */
OSP_TMR_RUNING /* 运行 */
}OspTmrStatus;
typedef enum _OspTmrUsing
{
OSP_TMR_FREE = 0, /* 定时点结点空闲 */
OSP_TMR_BUSY /* 定时点结点忙 */
}OspTmrUsing;
/* 定时器结构体 */
typedef struct _OspSwTimer
{
uint8_t u8Using; /* 定时器是否占用0-未占用1-已占用 */
uint8_t u8Padding[3];
uint8_t u8TmrName[OSP_SW_TIMER_NAME_LEN]; /* 定时器名称 */
uint32_t u32TimeOut; /* 定时器超时时间 */
uint32_t u32RealTime; /* 当前剩余时间 */
OspTmrType emTmrType; /* 定时器类型 */
OSP_CALLBACK pfnTmrCallBack; /* 定时器回调函数 */
void* pArg; /* 定时器回调函数参数 */
OspTmrStatus emTmrStatus; /* 定时器状态 */
}OspSwTimer_t;
/* 定时器初始化函数 */
int8_t OspTmrInit();
/* 创建定时器 */
int8_t OspTmrCreate(const char* pu8Name,
uint32_t u32TimeOut,
OspTmrType emTmrType,
OSP_CALLBACK pfnTmrCallBack,
void* pArg);
/* 删除定时器 */
int8_t OspTmrDelete(uint8_t u8TmrIndex);
/* 启动定时器 */
int8_t OspTmrStart(uint8_t u8TmrIndex);
/* 停止定时器 */
int8_t OspTmrStop(uint8_t u8TmrIndex);
#endif /* __OSP_SW_TIMER__ */