软定时器
- 软定时器的原理与创建
- 软定时器的启动与停止
- 软定时器的删除与状态查询
1、软定时器的原理与创建
// 软定时器结构
typedef struct _tTimer
{
// 链表结点
tNode linkNode;
// 初次启动延后的ticks数
uint32_t startDelayTicks;
// 周期定时时的周期tick数
uint32_t durationTicks;
// 当前定时递减计数值
uint32_t delayTicks;
// 定时回调函数
void (*timerFunc) (void * arg);
// 传递给回调函数的参数
void * arg;
// 定时器配置参数
uint32_t config;
// 定时器状态
tTimerState state;
}tTimer;
#// 定时器1:100个tick后启动,以后每10个tick启动一次
tTimerInit(&timer1, 100, 10, timerFunc, (void *)&bit1, TIMER_CONFIG_TYPE_HARD);
#原型:
/**********************************************************************************************************
** Function name: tTimerInit
** Descriptions : 初始化定时器
** parameters : timer 等待初始化的定时器
** parameters : delayTicks 定时器初始启动的延时ticks数。
** parameters : durationTicks 给周期性定时器用的周期tick数,一次性定时器无效
** parameters : timerFunc 定时器回调函数
** parameters : arg 传递给定时器回调函数的参数
** parameters : timerFunc 定时器回调函数
** parameters : config 定时器的初始配置
** Returned value : 无
***********************************************************************************************************/
void tTimerInit (tTimer * timer, uint32_t delayTicks, uint32_t durationTicks,
void (*timerFunc) (void * arg), void * arg, uint32_t config)
{
tNodeInit(&timer->linkNode);
timer->startDelayTicks = delayTicks;
timer->durationTicks = durationTicks;
timer->timerFunc = timerFunc;
timer->arg = arg;
timer->config = config;
// 如果初始启动延时为0,则使用周期值
if (delayTicks == 0)
{
timer->delayTicks = durationTicks;
}
else
{
timer->delayTicks = timer->startDelayTicks;
}
timer->state = tTimerCreated;
}
2、软定时器的启动与停止
3、软定时器的删除与状态查询