Цитата(Jenya7 @ Jun 6 2018, 14:44)

у меня preemptive RTOS scheduler. может стоит перейти на cooperative?
Наоборот, поведение похоже на cooperative.
Как работает в FreeRTOS
Any number of tasks can share the same priority. If configUSE_TIME_SLICING is not defined, or if configUSE_TIME_SLICING is set to 1, then Ready state tasks of equal priority will share the available processing time using a time sliced round robin scheduling scheme.
https://freertos.org/RTOS-task-priority.htmlЕще
https://freertos.org/a00110.html#configUSE_TIME_SLICINGconfigUSE_TIME_SLICING
By default (if configUSE_TIME_SLICING is not defined, or if configUSE_TIME_SLICING is defined as 1) FreeRTOS uses prioritised preemptive scheduling with time slicing. That means the RTOS scheduler will always run the highest priority task that is in the Ready state, and will switch between tasks of equal priority on every RTOS tick interrupt. If configUSE_TIME_SLICING is set to 0 then the RTOS scheduler will still run the highest priority task that is in the Ready state, but will not switch between tasks of equal priority just because a tick interrupt has occurred.