Цитата(GetSmart @ Feb 14 2011, 12:56)

Если оно делает то, что мне надо, то подходит.
А то в моей версии остановки таймера есть один косяк. Таймер может остановиться в районе перехода 0->max и прерывание сработает. Тогда по таймеру больше переключений не будет.
Вообще, конечно да,
vTaskSuspendAll();
xTaskResumeAll()
подходят лучше, но в данном случае все равно шедулер будет крутиться, не знаю на сколько это критично
Как запретить тики от таймера, смотрим как делается установка таймера, и по аналогии делаем обратные действия
Код
void prvSetupTimerInterrupt( void )
{
/* Configure SysTick to interrupt at the requested rate. */
*(portNVIC_SYSTICK_LOAD) = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;
*(portNVIC_SYSTICK_CTRL) = portNVIC_SYSTICK_CLK | portNVIC_SYSTICK_INT | portNVIC_SYSTICK_ENABLE;
}
То есть типа
Код
*(portNVIC_SYSTICK_CTRL) &= ~(portNVIC_SYSTICK_ENABLE);
И с другой стороны это действие есть остановка системного времени если что... Не всегда это желательно.
А вообще, как что делается с таймером надо смотреть в на сайте ARM, у NXP описания наверное не будет
А если он остановится в районе перехода с 0 в MAX, то прерывание отработает вперед, чем вы остановите таймер, и уже остановите его когда вернетесь в эту задачу.