#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__ */