|
陈明计先生的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周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|