Использовал таймауты с сравнением с xTaskGetTickCount. Потом вдруг понял, что дней через 50 все может перестать работать, потому что произойдет переполнение счетчика тиков. В ядре FreeRTOS с этой проблемой уже поборолись, там есть счетчик переполнений. Заодно нагуглилось такое решение, правда нужно еще 4 байта в памяти на каждый таймаут. Возможно, это элементарно - но вдруг кому-то поможет. Еще есть похожая тема на официальном форуме FreeRTOS.