UCOSII消息队列使用说明

现在来说一下这个消息队列所传递的数据类型和特性。

首先,这个消息队列不是真正意义上的“队列”,它呢只会把每次存入的数据指针排队,而不会保存该数据。所以调用OSQPost时如果每次都是相同的指针,那就说明 白放了,因为读取的时候读到的是同一个指针,他总是最新的数据,老的没了,何来队列?

其次,该队列可以保存void*类型指针,即所有数据类型都适用,管他是整型还是结构体。

现在这个队列不是真队列,那怎么解决?莫急,看下面:

我这里提一种简单的方法,复杂的各位资格解决吧。

1、定义一个存放数据的缓冲区数组,这样每次向对列添加时就可以用不同的地址。例如struct my_struct data_array[10]

2、然后就是怎么变这个数组下标的问题,直接定义一个变量来寻找,然后使用++,到最后再折回来就好了,例如:

int idx=0;

idx++;

idx %= BUF_SIZE;

3、对于速度能及时解决的任务,那下标这样搞就可以,如果不行,那可能要重新考虑覆盖的问题了。

转载于:https://my.oschina.net/u/2252538/blog/3077775

你可能感兴趣的:(UCOSII消息队列使用说明)