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

📄 os_tmr.lst

📁 uCos-ii 2.86 在C8051F410单片机上移植成功!!! 其中包括:UART驱动
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V8.17   OS_TMR                                                                03/26/2009 14:24:25 PAGE 1   


C51 COMPILER V8.17, COMPILATION OF MODULE OS_TMR
OBJECT MODULE PLACED IN .\out-files\os_tmr.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uCOS II Files\os_tmr.c LARGE BROWSE INCDIR(.\smaRTC;.\SMBus) DEBUG OBJECTEX
                    -TEND PRINT(.\list-files\os_tmr.lst) TABS(2) OBJECT(.\out-files\os_tmr.obj)

line level    source

   1          /*
   2          **********************************************************************************************************
             -**************
   3          *                                                uC/OS-II
   4          *                                          The Real-Time Kernel
   5          *                                            TIMER MANAGEMENT
   6          *
   7          *                              (c) Copyright 1992-2007, Micrium, Weston, FL
   8          *                                           All Rights Reserved
   9          *
  10          *
  11          * File    : OS_TMR.C
  12          * By      : Jean J. Labrosse
  13          * Version : V2.86
  14          *
  15          * LICENSING TERMS:
  16          * ---------------
  17          *   uC/OS-II is provided in source form for FREE evaluation, for educational use or for peaceful research.
             -  
  18          * If you plan on using  uC/OS-II  in a commercial product you need to contact Micri祄 to properly license 
  19          * its use in your product. We provide ALL the source code for your convenience and to help you experience 
  20          * uC/OS-II.   The fact that the  source is provided does  NOT  mean that you can use it without  paying a 
  21          * licensing fee.
  22          **********************************************************************************************************
             -**************
  23          */
  24          
  25          #include "..\header files\includes.h"
  26          
  27          /*
  28          **********************************************************************************************************
             -**************
  29          *                                                        NOTES
  30          *
  31          * 1) Your application MUST define the following #define constants:
  32          *
  33          *    OS_TASK_TMR_PRIO          The priority of the Timer management task
  34          *    OS_TASK_TMR_STK_SIZE      The size     of the Timer management task's stack
  35          *
  36          * 2) You must call OSTmrSignal() to notify the Timer management task that it's time to update the timers.
  37          **********************************************************************************************************
             -**************
  38          */
  39          
  40          /*
  41          **********************************************************************************************************
             -**************
  42          *                                                     CONSTANTS
  43          **********************************************************************************************************
             -**************
  44          */
  45          
  46          #define  OS_TMR_LINK_DLY       0
  47          #define  OS_TMR_LINK_PERIODIC  1
C51 COMPILER V8.17   OS_TMR                                                                03/26/2009 14:24:25 PAGE 2   

  48          
  49          /*
  50          **********************************************************************************************************
             -**************
  51          *                                                  LOCAL PROTOTYPES
  52          **********************************************************************************************************
             -**************
  53          */
  54          
  55          #if OS_TMR_EN > 0
              static  OS_TMR  *OSTmr_Alloc         (void) reentrant;
              static  void     OSTmr_Free          (OS_TMR *ptmr)reentrant ;
              static  void     OSTmr_InitTask      (void) reentrant ;
              static  void     OSTmr_Link          (OS_TMR *ptmr, INT8U type) reentrant;
              static  void     OSTmr_Unlink        (OS_TMR *ptmr) reentrant;
              static  void     OSTmr_Lock          (void) reentrant;
              static  void     OSTmr_Unlock        (void) reentrant;
              static  void     OSTmr_Task          (void   *p_arg) reentrant; 
              
              #endif
  66          
  67          /*$PAGE*/
  68          /*
  69          **********************************************************************************************************
             -**************
  70          *                                                   CREATE A TIMER
  71          *
  72          * Description: This function is called by your application code to create a timer.
  73          *
  74          * Arguments  : dly           Initial delay.
  75          *                            If the timer is configured for ONE-SHOT mode, this is the timeout used
  76          *                            If the timer is configured for PERIODIC mode, this is the first timeout to wa
             -it for
  77          *                               before the timer starts entering periodic mode
  78          *
  79          *              period        The 'period' being repeated for the timer.
  80          *                               If you specified 'OS_TMR_OPT_PERIODIC' as an option, when the timer expire
             -s, it will
  81          *                               automatically restart with the same period.
  82          *
  83          *              opt           Specifies either:
  84          *                               OS_TMR_OPT_ONE_SHOT       The timer counts down only once
  85          *                               OS_TMR_OPT_PERIODIC       The timer counts down and then reloads itself
  86          *
  87          *              callback      Is a pointer to a callback function that will be called when the timer expire
             -s.  The
  88          *                               callback function must be declared as follows:
  89          *
  90          *                               void MyCallback (OS_TMR *ptmr, void *p_arg);
  91          *
  92          *              callback_arg  Is an argument (a pointer) that is passed to the callback function when it is
             - called.
  93          *
  94          *              pname         Is a pointer to an ASCII string that is used to name the timer.  Names are us
             -eful for
  95          *                               debugging.  The length of the ASCII string for the name can be as big as:
  96          *
  97          *                               OS_TMR_CFG_NAME_SIZE and should be found in OS_CFG.H
  98          *
  99          *              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
 100          *                               OS_ERR_NONE
 101          *                               OS_ERR_TMR_INVALID_DLY     you specified an invalid delay
C51 COMPILER V8.17   OS_TMR                                                                03/26/2009 14:24:25 PAGE 3   

 102          *                               OS_ERR_TMR_INVALID_PERIOD  you specified an invalid period
 103          *                               OS_ERR_TMR_INVALID_OPT     you specified an invalid option
 104          *                               OS_ERR_TMR_ISR             if the call was made from an ISR
 105          *                               OS_ERR_TMR_NON_AVAIL       if there are no free timers from the timer pool
 106          *                               OS_ERR_TMR_NAME_TOO_LONG   if the timer name is too long to fit
 107          *
 108          * Returns    : A pointer to an OS_TMR data structure.  
 109          *              This is the 'handle' that your application will use to reference the timer created.
 110          **********************************************************************************************************
             -**************
 111          */
 112          
 113          #if OS_TMR_EN > 0
              OS_TMR  *OSTmrCreate (INT32U           dly,
                                    INT32U           period,
                                    INT8U            opt,
                                    OS_TMR_CALLBACK  callback,
                                    void            *callback_arg,
                                    INT8U           *pname,
                                    INT8U           *perr)  reentrant
              {
                  OS_TMR   *ptmr;
              #if OS_TMR_CFG_NAME_SIZE > 0
                  INT8U     len;
              #endif  
              
              
              #if OS_ARG_CHK_EN > 0
                  if (perr == (INT8U *)0) {                               /* Validate arguments                         
             -            */
                      return ((OS_TMR *)0);
                  }
                  switch (opt) {
                      case OS_TMR_OPT_PERIODIC:
                           if (period == 0) {
                               *perr = OS_ERR_TMR_INVALID_PERIOD;
                               return ((OS_TMR *)0);
                           }
                           break;
              
                      case OS_TMR_OPT_ONE_SHOT:
                           if (dly == 0) {
                               *perr = OS_ERR_TMR_INVALID_DLY;
                               return ((OS_TMR *)0);
                           }
                           break;
              
                      default:
                           *perr = OS_ERR_TMR_INVALID_OPT;
                           return ((OS_TMR *)0);
                  }
              #endif
                  if (OSIntNesting > 0) {                                 /* See if trying to call from an ISR          
             -            */
                      *perr  = OS_ERR_TMR_ISR;
                      return ((OS_TMR *)0);
                  }
                  OSTmr_Lock();
                  ptmr = OSTmr_Alloc();                                   /* Obtain a timer from the free pool          
             -            */
                  if (ptmr == (OS_TMR *)0) {
                      OSTmr_Unlock();
C51 COMPILER V8.17   OS_TMR                                                                03/26/2009 14:24:25 PAGE 4   

                      *perr = OS_ERR_TMR_NON_AVAIL;
                      return ((OS_TMR *)0);
                  }
                  ptmr->OSTmrState       = OS_TMR_STATE_STOPPED;          /* Indicate that timer is not running yet     
             -            */
                  ptmr->OSTmrDly         = dly;
                  ptmr->OSTmrPeriod      = period;
                  ptmr->OSTmrOpt         = opt;
                  ptmr->OSTmrCallback    = callback;
                  ptmr->OSTmrCallbackArg = callback_arg;
              #if OS_TMR_CFG_NAME_SIZE > 0
                  if (pname !=(INT8U *)0) {
                      len = OS_StrLen(pname);                             /* Copy timer name                            
             -            */
                      if (len < OS_TMR_CFG_NAME_SIZE) {
                          (void)OS_StrCopy(ptmr->OSTmrName, pname);
                      } else {
              #if OS_TMR_CFG_NAME_SIZE > 1
                          ptmr->OSTmrName[0] = '#';                       /* Invalid size specified                     
             -            */
                          ptmr->OSTmrName[1] = OS_ASCII_NUL;
              #endif
                          *perr              = OS_ERR_TMR_NAME_TOO_LONG;
                          OSTmr_Unlock();
                          return (ptmr);
                      }
                  }
              #endif
                  OSTmr_Unlock();
                  *perr = OS_ERR_NONE;
                  return (ptmr);
              }
              #endif
 190          
 191          /*$PAGE*/
 192          /*
 193          **********************************************************************************************************
             -**************
 194          *                                                   DELETE A TIMER
 195          *
 196          * Description: This function is called by your application code to delete a timer.
 197          *
 198          * Arguments  : ptmr          Is a pointer to the timer to stop and delete.
 199          *
 200          *              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
 201          *                               OS_ERR_NONE
 202          *                               OS_ERR_TMR_INVALID        'ptmr'  is a NULL pointer
 203          *                               OS_ERR_TMR_INVALID_TYPE   'ptmr'  is not pointing to an OS_TMR
 204          *                               OS_ERR_TMR_ISR            if the function was called from an ISR
 205          *                               OS_ERR_TMR_INACTIVE       if the timer was not created
 206          *                               OS_ERR_TMR_INVALID_STATE  the timer is in an invalid state
 207          *
 208          * Returns    : OS_TRUE       If the call was successful
 209          *              OS_FALSE      If not
 210          **********************************************************************************************************
             -**************
 211          */
 212          
 213          #if OS_TMR_EN > 0 && OS_TMR_DEL_EN >0
              BOOLEAN  OSTmrDel (OS_TMR  *ptmr,

⌨️ 快捷键说明

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