Hi David,
My semaphore is a global variable
and initialized is my init_task.
There is no task in overflow.

Is is valid when the ISR occurs.

My task I called "Door" is waiting for the semaphore.

And all the enabled ISRs would be initialized. I have removed the semaphore and replaced it by a simple variable (_b_IsMoved) and it works. But it is not memory safe when you deal with several threads....
I also tried the semaphore out of the ISR, and it works. So my issue is probably ISR dependent.
I can share the source code if you want to take a look at.
Thank you,
Anthony