#if OS_MAX_TASKS<9 //把當前任務加入到此消息隊//列的等待任務表中Buf[3]=OSMapTbl[OSRunnmgTasklD()]; (5)#elseif(OSRunningTasklD()<8){ (6)Buf[3]=OSMap Tbl[OSRunningTasklD()]; (7)else{Buf[4] |= OSMapTbl[OSRunningTasklD( ) &()x07]; (8)}#endifwhile(Buf[O]==0) //消息隊列中暫時投有消息 (9){#ifdef_C51_SP=SP+sizeof(Buf)。 (10)*((uint8 0S_Q_MEM_SEL * data*)(SP+l-slzeof(Buf))=Buf; (11)#endif{OSClearSignal(OSRunningTask()); //當前任務進入休眠//狀態 (12)OSSched(); //調度下一個最高優先級的就緒任務運行(13)#ifdef_C51_Buf= *((uint8 OS_Q_MEM SEL*dota*)(SP+1-sizeof(Buf)); (14)SP=SP-sizeof(Buf); (15)#endifif(OSWaitTick[OSRunningTasklD()]==O)(16){break; //任務再次運行,如果超時到,退出循環}} //while(Buf[0]==O)第(10)(11)(14)(15)語句不是很理解,堆棧指針sp是如何變化的?(uint8 0S_Q_MEM_SEL * data*)是什么意思?
sizeof(Buf)這個是指數組buf[]的大小還是指 指針buf所指向數組的第一個數的大?。?/h1>
慕婉清6462132
2022-10-01 14:10:57
慕婉清6462132
2022-10-01 14:10:57