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

📄 os_time.p

📁 ucOS 模拟环境
💻 P
字号:
#line 1 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\Task\\os_time.c"












 

#line 1 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"











 




#line 1 "E:\\Study\\ucOS-II\\ucOS-II\\PLATFORM\\CPU\\os_cpu.h"













 














 

typedef unsigned   char   BOOLEAN;
typedef  unsigned  char   INT8U;                  
typedef  signed    char   INT8S;                  
typedef  unsigned  short  INT16U;                 
typedef  signed    short  INT16S;                 
typedef  unsigned  long   INT32U;                 
typedef  signed    long   INT32S;                 
typedef  float            FP32;                   
typedef  double           FP64;                   

typedef  unsigned  short  OS_STK;                 
typedef  unsigned  char   OS_CPU_SR;              





 




























 











void     Tmr_Init(void);                          
void     Tmr_ISRClr(void);








 

OS_CPU_SR  OSCPUSaveSR(void);                     
                                                  
void       OSCPURestoreSR(OS_CPU_SR os_cpu_sr);   



#line 18 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"
#line 1 "E:\\Study\\ucOS-II\\ucOS-II\\PLATFORM\\Public\\os_cfg.h"








 




                                        








                                        



















                                        
#line 50 "E:\\Study\\ucOS-II\\ucOS-II\\PLATFORM\\Public\\os_cfg.h"


                                        
#line 59 "E:\\Study\\ucOS-II\\ucOS-II\\PLATFORM\\Public\\os_cfg.h"


                                        





                                        






                                        
#line 83 "E:\\Study\\ucOS-II\\ucOS-II\\PLATFORM\\Public\\os_cfg.h"


                                        






                                        
#line 102 "E:\\Study\\ucOS-II\\ucOS-II\\PLATFORM\\Public\\os_cfg.h"


                                        






typedef INT16U             OS_FLAGS;    

 





#line 19 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"









 






































 




 
#line 80 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"





 
#line 92 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"





 

























 











 









 








 








 


#line 174 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"

#line 181 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"































#line 222 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"














 




 


typedef struct os_event {
    INT8U    OSEventType;                     
    INT8U    OSEventGrp;                      
    INT16U   OSEventCnt;                      
    void    *OSEventPtr;                      
    INT8U    OSEventTbl[((4) / 8 + 1)];   



} OS_EVENT;







 

#line 288 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"

 




 


typedef struct os_mbox_data {
    void   *OSMsg;                          
    INT8U   OSEventTbl[((4) / 8 + 1)];  
    INT8U   OSEventGrp;                     
} OS_MBOX_DATA;






 

#line 332 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"

 




 


typedef struct os_mutex_data {
    INT8U   OSEventTbl[((4) / 8 + 1)];   
    INT8U   OSEventGrp;                      
    INT8U   OSValue;                         
    INT8U   OSOwnerPrio;                     
    INT8U   OSMutexPIP;                      
} OS_MUTEX_DATA;






 


typedef struct os_q {                    
    struct os_q   *OSQPtr;               
    void         **OSQStart;             
    void         **OSQEnd;               
    void         **OSQIn;                
    void         **OSQOut;               
    INT16U         OSQSize;              
    INT16U         OSQEntries;           
} OS_Q;


typedef struct os_q_data {
    void          *OSMsg;                
    INT16U         OSNMsgs;              
    INT16U         OSQSize;              
    INT8U          OSEventTbl[((4) / 8 + 1)];   
    INT8U          OSEventGrp;           
} OS_Q_DATA;






 

#line 390 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"





 

#line 403 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"

 




 

typedef struct os_tcb {
    OS_STK          *OSTCBStkPtr;       

#line 421 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"

    struct os_tcb   *OSTCBNext;         
    struct os_tcb   *OSTCBPrev;         


    OS_EVENT        *OSTCBEventPtr;     



    void            *OSTCBMsg;          


#line 439 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"

    INT16U           OSTCBDly;          
    INT8U            OSTCBStat;         
    INT8U            OSTCBPrio;         

    INT8U            OSTCBX;            
    INT8U            OSTCBY;            
    INT8U            OSTCBBitX;         
    INT8U            OSTCBBitY;         





#line 460 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"




} OS_TCB;

 




 

extern  INT32U            OSCtxSwCtr;                


extern  OS_EVENT         *OSEventFreeList;           
extern  OS_EVENT          OSEventTbl[5]; 








extern  INT8S             OSCPUUsage;                
extern  INT32U            OSIdleCtrMax;              
extern  INT32U            OSIdleCtrRun;              
extern  BOOLEAN           OSStatRdy;                 
extern  OS_STK            OSTaskStatStk[50];       


extern  INT8U             OSIntNesting;              
extern  INT8U             OSIntExitY;

extern  INT8U             OSLockNesting;             

extern  INT8U             OSPrioCur;                 
extern  INT8U             OSPrioHighRdy;             

extern  INT8U             OSRdyGrp;                         
extern  INT8U             OSRdyTbl[((4) / 8 + 1)];        

extern  BOOLEAN           OSRunning;                        

extern  INT8U             OSTaskCtr;                        

extern  volatile  INT32U  OSIdleCtr;                                  

extern  OS_STK            OSTaskIdleStk[25];       


extern  OS_TCB           *OSTCBCur;                         
extern  OS_TCB           *OSTCBFreeList;                    
extern  OS_TCB           *OSTCBHighRdy;                     
extern  OS_TCB           *OSTCBList;                        
extern  OS_TCB           *OSTCBPrioTbl[4 + 1]; 
extern  OS_TCB            OSTCBTbl[2 + 2];    











extern  OS_Q             *OSQFreeList;               
extern  OS_Q              OSQTbl[2];         







extern  INT8U   const     OSMapTbl[8];               
extern  INT8U   const     OSUnMapTbl[256];           

 





 





 










 

#line 592 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"





 




void         *OSMboxAccept(OS_EVENT *pevent);


OS_EVENT     *OSMboxCreate(void *msg);


OS_EVENT     *OSMboxDel(OS_EVENT *pevent, INT8U opt, INT8U *err);


void         *OSMboxPend(OS_EVENT *pevent, INT16U timeout, INT8U *err);


INT8U         OSMboxPost(OS_EVENT *pevent, void *msg);



INT8U         OSMboxPostOpt(OS_EVENT *pevent, void *msg, INT8U opt);



INT8U         OSMboxQuery(OS_EVENT *pevent, OS_MBOX_DATA *p_mbox_data);







 

#line 647 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"





 




INT8U         OSMutexAccept(OS_EVENT *pevent, INT8U *err);


OS_EVENT     *OSMutexCreate(INT8U prio, INT8U *err);


OS_EVENT     *OSMutexDel(OS_EVENT *pevent, INT8U opt, INT8U *err);


void          OSMutexPend(OS_EVENT *pevent, INT16U timeout, INT8U *err);
INT8U         OSMutexPost(OS_EVENT *pevent);


INT8U         OSMutexQuery(OS_EVENT *pevent, OS_MUTEX_DATA *p_mutex_data);




 




 




void  *OSQAccept (OS_EVENT *pevent);


OS_EVENT     *OSQCreate(void **start, INT16U size);


OS_EVENT     *OSQDel(OS_EVENT *pevent, INT8U opt, INT8U *err);



INT8U         OSQFlush(OS_EVENT *pevent);


void         *OSQPend(OS_EVENT *pevent, INT16U timeout, INT8U *err);


INT8U         OSQPost(OS_EVENT *pevent, void *msg);



INT8U         OSQPostFront(OS_EVENT *pevent, void *msg);



INT8U         OSQPostOpt(OS_EVENT *pevent, void *msg, INT8U opt);



INT8U         OSQQuery(OS_EVENT *pevent, OS_Q_DATA *p_q_data);




 




 
#line 744 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"

 




 





INT8U         OSTaskCreate(void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT8U prio);


#line 770 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"
























 




 

void          OSTimeDly(INT16U ticks);














void          OSTimeTick(void);





 

void          OSInit(void);

void          OSIntEnter(void);
void          OSIntExit(void);






void          OSStart(void);

void          OSStatInit(void);

INT16U        OSVersion(void);

 





 






INT8U         OS_EventTaskRdy(OS_EVENT *pevent, void *msg, INT8U msk);
void          OS_EventTaskWait(OS_EVENT *pevent);
void          OS_EventTO(OS_EVENT *pevent);
void          OS_EventWaitListInit(OS_EVENT *pevent);







void          OS_MemClr(INT8U *pdest, INT16U size);
void          OS_MemCopy(INT8U *pdest, INT8U *psrc, INT16U size);






void          OS_QInit(void);


void          OS_Sched(void);






void          OS_TaskIdle(void *p_arg);


void          OS_TaskStat(void *p_arg);










INT8U         OS_TCBInit(INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U stk_size, void *pext, INT16U opt);

 





 






void          OSInitHookBegin(void);
void          OSInitHookEnd(void);


void          OSIntCtxSw(void);

void          OSStartHighRdy(void);

void          OSTaskCreateHook(OS_TCB *ptcb);
void          OSTaskDelHook(OS_TCB *ptcb);


void          OSTaskIdleHook(void);


void          OSTaskStatHook(void);
OS_STK       *OSTaskStkInit(void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt);


void          OSTaskSwHook(void);



void          OSTCBInitHook(OS_TCB *ptcb);



void          OSTimeTickHook(void);







 


void          OSCtxSw(void);
void          OSTickISR(void);


 










 





 

#line 982 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"


























 

#line 1016 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"






















 

#line 1050 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"














 

#line 1072 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"














 

#line 1098 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"


































 

#line 1140 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"














 

#line 1166 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"

















































 





















 













#line 1258 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\ucos_ii.h"

























#line 17 "E:\\Study\\ucOS-II\\ucOS-II\\ucOS kernel\\Task\\os_time.c"
















 

void  OSTimeDly (INT16U ticks)
{

    OS_CPU_SR  cpu_sr;

    INT8U      y;


    if (ticks > 0) {                              
        cpu_sr = OSCPUSaveSR();
        y            =  OSTCBCur->OSTCBY;         
        OSRdyTbl[y] &= ~OSTCBCur->OSTCBBitX;
        if (OSRdyTbl[y] == 0) {  
            OSRdyGrp &= ~OSTCBCur->OSTCBBitY;
        }
        OSTCBCur->OSTCBDly = ticks;               
        OSCPURestoreSR(cpu_sr);
        OS_Sched();                               
    }
}

⌨️ 快捷键说明

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