修改定时器 在申请定时器的时候设置的定时器周期, 可以通过函数 xTimerChangePeriod 修改, 如下示例 :
void vAFunction_2( TimerHandle_t xTimer )
{
// 判断定时器是否处于运行状态
if( xTimerIsTimerActive( xTimer ) != pdFALSE )
{
/* xTimer is active, do something. */
}
else
{
// 处于这个状态的定时器, 可能由于 :
// 1 定时器 create 后没有start
// 2 一次性定时器执行溢出后
// 修改定时器周期
if( xTimerChangePeriod( xTimer,
/*修改定时周期*/
500 / portTICK_PERIOD_MS,
/*允许阻塞最大时间 100 ticks*/
100 ) == pdPASS )
{
// update fail
// 阻塞 100 tick 仍然无法发送命令
// 删除定时器 释放对应内存!
xTimerDelete( xTimer );
}
else
{
// 定时器配置更新成功, 并已经启动 !!
}
}
}
如上, 该函数会修改定时器并使定时器 开始运行!!!
|