|
陈明计先生的SMALL RTOS消息队列中(假如用户任务数<9)
Buf[0]=指示消息队列中消息的数目
buf[1]=指示消息队列占用的内存空间(包括buf[0],buf[1],buf[2],buf[3])
buf[2]=指示出队位置
buf[3]=消息等待任务列表
(1)、在任务数<9时,出队位置=4,也就是说从buf[4]开始取出消息。从P94页的图7.1和图7.2也可以看出,第一个装入消息的位置是从buf[4]开始装入的。
(2)、但是在P103页的“中断中FIFO方式向消息队列发送消息”系统函数中
计算消息保存位置的代码如下:
temp=Buf[2]+buf[0]+1
即作者为了省去数据结构中队列入队指针,而采用“出队位置+消息数目”来确定入队位置
假如:目前消息队列刚刚被创建,此时buf[0]=0,buf[2]=4,当收到一个消息后,计算插入位置
那么temp=4+0+1=5
显示将第一条消息从buf[5]位置装,不是从buf[4]开始装入的吗?我的理解到底错在哪里?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|