You might want to use SINGLE_THREADED_BLOCK()
instead to still allow interrupts to get serviced.
The Software Timers are running on a FreeRTOS thread alongside the application and the system thread with a 1ms time slice for timers and app (not sure about system).
So single variable manipulations will not pose a problem since the code doesn’t actually run parallel. But if you are doing a lot of work on one variable (multi step calculations or extensive string building) a thread switch might occure.
Here is also some info
[SOLVED] Software Timer .isActive() returns false even when enabled