Binary Semaphore problem

we had this discussion before:

The feasibility of having timer instantiated for EACH request to be sent [posix] - Libraries - FreeRTOS Community Forums

I don’t think splitting sends and receives to/from the same serial devices into two tasks is a good design because normally you end up “back door serializing” your tasks to implement an inherently serialized protocol.

The problems you are seeing may just be corollaries of that architectural problem.