67 lines
1.9 KiB
C
67 lines
1.9 KiB
C
#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__ */
|
||
|