La librería hace algo que poco tiene que ver con tu pregunta.
En el readme de TaskScheduler dice:
A lightweight implementation of cooperative multitasking (task scheduling) supporting:
- Periodic task execution, with dynamic execution period in
milliseconds
(default) ormicroseconds
(if explicitly enabled) – frequency of execution- Number of iterations (limited or infinite number of iterations)
- Execution of tasks in predefined sequence
- Dynamic change of task execution parameters (frequency, number of iterations, callback methods)
- Power saving via entering IDLE sleep mode when tasks are not scheduled to run
- Support for event-driven task invocation via Status Request object
- Support for task IDs and Control Points for error handling and watchdog timer
- Support for Local Task Storage pointer (allowing use of same callback code for multiple tasks)
- Support for layered task prioritization
- Support for
std::functions
(tested onESPx
only)- Overall task timeout
- Static and dynamic callback method binding
- CPU load / idle statistics for time critical applications
- Scheduling options with priotity for original schedule (with and without catchup) and interval
Punto 1: Ejecución de tareas periódicas, con periódo de ejecución en milisegundos (por defecto) o microsegundos (si se habilita explicitamente en algun .h seguramente).