Here I am using binary a semaphore to protect(lock) a shared resource.

Only one of Task 1 and Task 2 can only get the lock at any given time.


xSemaphoreTake() always return pdFALSE which means the semaphore is not available. I’ve checked all my code, no one take the semaphore… This really drives me crazy for days.


I’m not sure why this work nor saying this works for you… Just to share what works for me

It seems that the semaphore is at "taken" status after its creation, by calling xSemaphoreGive(semaphore); the semaphore now can be used correctly.

Let me know if you know why!

Or maybe one day I will dig into it and update the detail here. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *