9、软定时器

软定时器

  1. 软定时器的原理与创建
  2. 软定时器的启动与停止
  3. 软定时器的删除与状态查询

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、软定时器的删除与状态查询

猜你喜欢

转载自blog.csdn.net/qq_33487044/article/details/79257315