The timer seems to determine that a callback is likely to be executed twice in the process processing code
file: timers.c
pxTimer->pxCallbackFunction((TimerHandle_t)pxTimer);
file:///home/wangwei/%E5%9B%BE%E7%89%87/173069170-b2b6f5de-6371-4b36-a3b0-c73813a77fc9.png
I think it’s right because the callback is invoked for the current timer expiration and if it’s an auto-reload timer and also the next or further timeouts are already expired,
the corresponding number of callback invocations needs to be done.
The number of expirations and callback invocations should match.
The latter situation (multiple pending timeouts of a timer at the same time) is a corner case which shouldn’t happen because the timer process should have the highest prio in applications to process timeouts in time.
If there really is a (corner case) problem in the timer code @rtel should be notified or feel free to propose a solution / create a pull request for it.
Just to be on the same page, you’re referring to the latest FreeRTOS code, right ?