This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

a bug in RTX queue operation ,osMessagePut

Hi,all. After several weeks of debugging, it seems that there's a bug in RTX message queue operation.

osMessageQDef(MsgBox, 10, T_MEAS);      // Define message queue

result = osMessagePut(MsgBox, (uint32_t)mptr, 0);  // Send Message

normally,when the queue is full(10 messages), then 'result' is 0x81,which means resource not available.

But when the ISR calls 'osMessageGet' , which means the queue is not full at this time. Then 'osMessagePut' can put more than 10 messages now!

I tried to disable IRQ when calling these functions, but it didn't work. So, how to limit the number of messages in the queue?