У меня нет опыта работы с этим API, но, глядя на документацию, видно, что один таймер может иметь несколько задач в разные периоды, поэтому сброс TIMER_0
не имеет большого смыслового смысла;скорее, вам нужно сбросить отдельную задачу таймера, прикрепленную к таймеру - из которых может быть больше одной.
Из документации (которая плохая и содержитошибки) и исходный код , который является более надежным:
timer_task_instance.time_label = TIMER_0.time ;
, где timer_task_instance
- это экземпляр struct timer_task
, который вы хотите сбросить. Это устанавливает время начала на текущее время.
Вероятно, лучше всего обернуть это в функцию:
// Restart current interval, return interval.
uint32_t timer_restart( struct timer_descriptor* desc, struct timer_task* tsk )
{
tsk->time_label = desc->time
return tsk->interval ;
}
Тогда:
timer_restart( &TIMER_0, &timer_task_instance ) ;