Hi
I am trying to use the osThreadYield function of the CMSIS-RTOS and even though I have many other threads in the READY state, control is not passed to them and I stay in the current thread which basically hangs the entire system.
This thread is the highest priority thread which is polling a CAN bus interface for messages but I want it to give up control to allow other tasks if they need to run.
I suspect that there is a statement missing from the description below that as task will give up control to HIGHER prioirty threads that are READY. Not just any thread as they imply below.
Does anyone know if this is the case? Or why this highest priority thread will not give up control when asked to?
Thanks Steve
osStatus osThreadYield ( void )
Returns status code that indicates the execution status of the function.
Note MUST REMAIN UNCHANGED: osThreadYield shall be consistent in every CMSIS-RTOS.
Pass control to the next thread that is in state READY. If there is no other thread in the state READY, the current thread continues execution and no thread switching occurs.