ucos 就绪表问题
在ucos 2.52版中 任务优先级插入到就绪表所用代码如下:ptcb->OSTCBY = prio >> 3; /* Pre-compute X, Y, BitX and BitY */
ptcb->OSTCBBitY = OSMapTbl;
ptcb->OSTCBX = prio & 0x07;
ptcb->OSTCBBitX = OSMapTbl;
OSRdyGrp |= ptcb->OSTCBBitY; /* Make task ready to run */
OSRdyTbl |= ptcb->OSTCBBitX;
在ucos 2.84版中 代码改为:(64个任务以下)
ptcb->OSTCBY = (INT8U)(prio >> 3); /* Pre-compute X, Y, BitX and BitY */
ptcb->OSTCBBitY = (INT8U)(1 << ptcb->OSTCBY);
ptcb->OSTCBX = (INT8U)(prio & 0x07);
ptcb->OSTCBBitX = (INT8U)(1 << ptcb->OSTCBX);
OSRdyGrp |= ptcb->OSTCBBitY; /* Make task ready to run */
OSRdyTbl |= ptcb->OSTCBBitX;
这两个代码一致么? 手上没有 2.52 版的,但如果 OSMapTbl 是 { 1, 2, 4, 8, 16, 32, 64, 128 }, 就是一致的。 2楼正解
页:
[1]