UCOS中的消息队列并不是真正意义上的队列

时间:2021-02-24 17:38:36

 

UCOS中的消息队列并不是真正意义上的队列,它只是发送了想要发送数据的指针,这个时候,如果发送多个同一个变量的不同数据,那么数据就相当于被覆盖了.

解决办法:

  定义一个缓存数组buffer[i];

  更改变量i的数值,就可以实现一个变相的FIFO,因为每次发送的变量的指针是不同的.

  i++;

  i %= bufsize;

  buffer[ ( i + bufsize - 1 ) % bufsize ];  //此处是取的上一个数据,当前数据直接取buffer[i]即可.