⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_core.lst

📁 IAR project for MSP430 and uC/OS. All configured to start filling with tasks.
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   02CC  1C425008          MOV     &OSTCBCur,R12   
   \   02D0  8C431200          MOV     #0,18(R12)      
    542          }
   \   02D4  3041              RET             
   \   02D6            OS_EventWaitListInit:
    543          #endif
    544          /*$PAGE*/
    545          /*
    546          *********************************************************************************************************
    547          *                                 INITIALIZE EVENT CONTROL BLOCK'S WAIT LIST
    548          *
    549          * Description: This function is called by other uC/OS-II services to initialize the event wait list.
    550          *
    551          * Arguments  : pevent    is a pointer to the event control block allocated to the event.
    552          *
    553          * Returns    : none
    554          *
    555          * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
    556          *********************************************************************************************************
    557          */
    558          #if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0)
    559          void  OS_EventWaitListInit (OS_EVENT *pevent)
    560          {
    561              INT8U  *ptbl;
    562          
    563          
    564              pevent->OSEventGrp = 0x00;                   /* No task waiting on event                           */
   \   02D6  CC430100          MOV.B   #0,1(R12)       
    565              ptbl               = &pevent->OSEventTbl[0];
   \   02DA  3C500600          ADD     #6,R12  
    566          
    567          #if OS_EVENT_TBL_SIZE > 0
    568              *ptbl++            = 0x00;
   \   02DE  CC430000          MOV.B   #0,0(R12)       
   \   02E2  1C53              ADD     #1,R12  
    569          #endif
    570          
    571          #if OS_EVENT_TBL_SIZE > 1
    572              *ptbl++            = 0x00;
   \   02E4  CC430000          MOV.B   #0,0(R12)       
    573          #endif
    574          
    575          #if OS_EVENT_TBL_SIZE > 2
    576              *ptbl++            = 0x00;
    577          #endif
    578          
    579          #if OS_EVENT_TBL_SIZE > 3
    580              *ptbl++            = 0x00;
    581          #endif
    582          
    583          #if OS_EVENT_TBL_SIZE > 4
    584              *ptbl++            = 0x00;
    585          #endif
    586          
    587          #if OS_EVENT_TBL_SIZE > 5
    588              *ptbl++            = 0x00;
    589          #endif
    590          
    591          #if OS_EVENT_TBL_SIZE > 6
    592              *ptbl++            = 0x00;
    593          #endif
    594          
    595          #if OS_EVENT_TBL_SIZE > 7
    596              *ptbl              = 0x00;
    597          #endif
    598          }
   \   02E8  3041              RET             
   \   02EA            OS_InitEventList:
    599          #endif
    600          /*$PAGE*/
    601          /*
    602          *********************************************************************************************************
    603          *                                             INITIALIZATION
    604          *                           INITIALIZE THE FREE LIST OF EVENT CONTROL BLOCKS
    605          *
    606          * Description: This function is called by OSInit() to initialize the free list of event control blocks.
    607          *
    608          * Arguments  : none
    609          *
    610          * Returns    : none
    611          *********************************************************************************************************
    612          */
    613          
    614          static  void  OS_InitEventList (void)
    615          {
    616          #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
    617          #if (OS_MAX_EVENTS > 1)
    618              INT16U     i;
    619              OS_EVENT  *pevent1;
    620              OS_EVENT  *pevent2;
    621          
    622          
    623              pevent1 = &OSEventTbl[0];
   \   02EA  3E400600          MOV     #OSEventTbl,R14 
    624              pevent2 = &OSEventTbl[1];
   \   02EE  3D400000          MOV     #(OSEventTbl+8),R13     
    625              for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {                  /* Init. list of free EVENT control blocks  */
   \   02F2  0C43              MOV     #0,R12  
   \   02F4            ?0139:
   \   02F4  1C93              CMP     #1,R12  
   \   02F6  CE430000          MOV.B   #0,0(R14)       
   \   02FA  062C              JC      (?0138) 
    626                  pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
    627                  pevent1->OSEventPtr  = pevent2;
   \   02FC  8E4D0400          MOV     R13,4(R14)      
    628                  pevent1++;
   \   0300  3E52              ADD     #8,R14  
    629                  pevent2++;
   \   0302  3D52              ADD     #8,R13  
   \   0304  1C53              ADD     #1,R12  
   \   0306  F63F              JMP     (?0139) 
   \   0308            ?0138:
    630              }
    631              pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
    632              pevent1->OSEventPtr  = (OS_EVENT *)0;
   \   0308  8E430400          MOV     #0,4(R14)       
    633              OSEventFreeList      = &OSEventTbl[0];
   \   030C  B2400600          MOV     #OSEventTbl,&OSEventFreeList    
   \   0310  0400
    634          #else
    635              OSEventFreeList              = &OSEventTbl[0];               /* Only have ONE event control block        */
    636              OSEventFreeList->OSEventType = OS_EVENT_TYPE_UNUSED;
    637              OSEventFreeList->OSEventPtr  = (OS_EVENT *)0;
    638          #endif
    639          #endif
    640          }
   \   0312  3041              RET             
   \   0314            OS_InitMisc:
    641          /*$PAGE*/
    642          /*
    643          *********************************************************************************************************
    644          *                                             INITIALIZATION
    645          *                                    INITIALIZE MISCELLANEOUS VARIABLES
    646          *
    647          * Description: This function is called by OSInit() to initialize miscellaneous variables.
    648          *
    649          * Arguments  : none
    650          *
    651          * Returns    : none
    652          *********************************************************************************************************
    653          */
    654          
    655          static  void  OS_InitMisc (void)
    656          {
    657          #if OS_TIME_GET_SET_EN > 0   
    658              OSTime        = 0L;                                          /* Clear the 32-bit system clock            */
   \   0314  8243B60A          MOV     #0,&OSTime      
   \   0318  8243B80A          MOV     #0,&(OSTime+2)  
    659          #endif
    660          
    661              OSIntNesting  = 0;                                           /* Clear the interrupt nesting counter      */
   \   031C  C2434204          MOV.B   #0,&OSIntNesting        
    662              OSLockNesting = 0;                                           /* Clear the scheduling lock counter        */
   \   0320  C2434404          MOV.B   #0,&OSLockNesting       
    663          
    664              OSTaskCtr     = 0;                                           /* Clear the number of tasks                */
   \   0324  C2434B04          MOV.B   #0,&OSTaskCtr   
    665          
    666              OSRunning     = FALSE;                                       /* Indicate that multitasking not started   */
   \   0328  C2434A04          MOV.B   #0,&OSRunning   
    667              
    668              OSCtxSwCtr    = 0;                                           /* Clear the context switch counter         */
   \   032C  82430000          MOV     #0,&OSCtxSwCtr  
   \   0330  82430200          MOV     #0,&(OSCtxSwCtr+2)      
    669              OSIdleCtr     = 0L;                                          /* Clear the 32-bit idle counter            */
   \   0334  82434C04          MOV     #0,&OSIdleCtr   
   \   0338  82434E04          MOV     #0,&(OSIdleCtr+2)       
    670          
    671          #if (OS_TASK_STAT_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
    672              OSIdleCtrRun  = 0L;
   \   033C  82433C00          MOV     #0,&OSIdleCtrRun        
   \   0340  82433E00          MOV     #0,&(OSIdleCtrRun+2)    
    673              OSIdleCtrMax  = 0L;
   \   0344  82433800          MOV     #0,&OSIdleCtrMax        
   \   0348  82433A00          MOV     #0,&(OSIdleCtrMax+2)    
    674              OSStatRdy     = FALSE;                                       /* Statistic task is not ready              */
   \   034C  C2434000          MOV.B   #0,&OSStatRdy   
    675          #endif
    676          }
   \   0350  3041              RET             
   \   0352            OS_InitRdyList:
    677          /*$PAGE*/
    678          /*
    679          *********************************************************************************************************
    680          *                                             INITIALIZATION
    681          *                                       INITIALIZE THE READY LIST
    682          *
    683          * Description: This function is called by OSInit() to initialize the Ready List.
    684          *
    685          * Arguments  : none
    686          *
    687          * Returns    : none
    688          *********************************************************************************************************
    689          */
    690          
    691          static  void  OS_InitRdyList (void)
    692          {
    693              INT16U   i;
    694              INT8U   *prdytbl;
    695          
    696          
    697              OSRdyGrp      = 0x00;                                        /* Clear the ready list                     */
   \   0352  C2434704          MOV.B   #0,&OSRdyGrp    
    698              prdytbl       = &OSRdyTbl[0];
   \   0356  3D404804          MOV     #OSRdyTbl,R13   
    699              for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
   \   035A  0C43              MOV     #0,R12  
   \   035C            ?0145:
   \   035C  2C93              CMP     #2,R12  
   \   035E  052C              JC      (?0144) 
    700                  *prdytbl++ = 0x00;
   \   0360  CD430000          MOV.B   #0,0(R13)       
   \   0364  1D53              ADD     #1,R13  
   \   0366  1C53              ADD     #1,R12  
   \   0368  F93F              JMP     (?0145) 
   \   036A            ?0144:
    701              }
    702          
    703              OSPrioCur     = 0;
   \   036A  C2434504          MOV.B   #0,&OSPrioCur   
    704              OSPrioHighRdy = 0;
   \   036E  C2434604          MOV.B   #0,&OSPrioHighRdy       
    705          
    706              OSTCBHighRdy  = (OS_TCB *)0;                                 
   \   0372  82435408          MOV     #0,&OSTCBHighRdy        
    707              OSTCBCur      = (OS_TCB *)0;
   \   0376  82435008          MOV     #0,&OSTCBCur    
    708          }
   \   037A  3041         

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -