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

📄 os_tmr.lst

📁 编译环境是 iar EWARM ,STM32 下的UCOSII
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.42A/W32 KICKSTART     26/Dec/2008  18:22:04 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode        =  thumb                                                #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  F:\PROJECT\STM32_UCOSII\uCOS-II\Source\os_tmr.c      #
#    Command line    =  F:\PROJECT\STM32_UCOSII\uCOS-II\Source\os_tmr.c      #
#                       -lCN F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E- #
#                       EVAL\IAR\OS-Probe\Flash\List\ -o                     #
#                       F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\Flash\Obj\ -z6 --no_unroll --no_inline  #
#                       --no_tbaa --no_scheduling --debug --cpu_mode thumb   #
#                       --endian little --cpu cortex-M3 --stack_align 4 -e   #
#                       --fpu None --dlib_config "E:\Program Files\IAR       #
#                       Systems\Embedded Workbench 4.0                       #
#                       Kickstart\arm\LIB\dl7mptnnl8n.h" -I                  #
#                       F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\ -I F:\PROJECT\STM32_UCOSII\EvalBoards\ #
#                       ST\STM3210E-EVAL\IAR\OS-Probe\..\BSP\ -I             #
#                       F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\..\..\..\..\..\CPU\ST\STM32\inc\ -I     #
#                       F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\..\..\..\..\..\uC-CPU\ -I               #
#                       F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\..\..\..\..\..\uC-CPU\ARM-Cortex-M3\IAR #
#                       \ -I F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E- #
#                       EVAL\IAR\OS-Probe\..\..\..\..\..\uC-LCD\Source\ -I   #
#                       F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\..\..\..\..\..\uC-LIB\ -I               #
#                       F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\..\..\..\..\..\uCOS-II\Ports\ARM-Cortex #
#                       -M3\Generic\IAR\ -I F:\PROJECT\STM32_UCOSII\EvalBoar #
#                       ds\ST\STM3210E-EVAL\IAR\OS-Probe\..\..\..\..\..\uCOS #
#                       -II\Source\ -I F:\PROJECT\STM32_UCOSII\EvalBoards\ST #
#                       \STM3210E-EVAL\IAR\OS-Probe\..\..\..\..\..\uC-Probe\ #
#                       Target\Communication\Generic\RS-232\Source\ -I       #
#                       F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\..\..\..\..\..\uC-Probe\Target\Communic #
#                       ation\Generic\RS-232\Ports\ST\STM32\ -I              #
#                       F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\..\..\..\..\..\uC-Probe\Target\Communic #
#                       ation\Generic\Source\ -I F:\PROJECT\STM32_UCOSII\Eva #
#                       lBoards\ST\STM3210E-EVAL\IAR\OS-Probe\..\..\..\..\.. #
#                       \uC-Probe\Target\Plugins\uCOS-II\ -I "E:\Program     #
#                       Files\IAR Systems\Embedded Workbench 4.0             #
#                       Kickstart\arm\INC\"                                  #
#    List file       =  F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\Flash\List\os_tmr.lst                   #
#    Object file     =  F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
#                       IAR\OS-Probe\Flash\Obj\os_tmr.r79                    #
#                                                                            #
#                                                                            #
##############################################################################

F:\PROJECT\STM32_UCOSII\uCOS-II\Source\os_tmr.c
      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 <ucos_ii.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
     48          
     49          /*
     50          ************************************************************************************************************************
     51          *                                                  LOCAL PROTOTYPES
     52          ************************************************************************************************************************
     53          */
     54          
     55          #if OS_TMR_EN > 0
     56          static  OS_TMR  *OSTmr_Alloc         (void);
     57          static  void     OSTmr_Free          (OS_TMR *ptmr);
     58          static  void     OSTmr_InitTask      (void);
     59          static  void     OSTmr_Link          (OS_TMR *ptmr, INT8U type);
     60          static  void     OSTmr_Unlink        (OS_TMR *ptmr);
     61          static  void     OSTmr_Lock          (void);
     62          static  void     OSTmr_Unlock        (void);
     63          static  void     OSTmr_Task          (void   *p_arg);
     64          #endif
     65          
     66          /*$PAGE*/
     67          /*
     68          ************************************************************************************************************************
     69          *                                                   CREATE A TIMER
     70          *
     71          * Description: This function is called by your application code to create a timer.
     72          *
     73          * Arguments  : dly           Initial delay.
     74          *                            If the timer is configured for ONE-SHOT mode, this is the timeout used
     75          *                            If the timer is configured for PERIODIC mode, this is the first timeout to wait for
     76          *                               before the timer starts entering periodic mode
     77          *
     78          *              period        The 'period' being repeated for the timer.
     79          *                               If you specified 'OS_TMR_OPT_PERIODIC' as an option, when the timer expires, it will
     80          *                               automatically restart with the same period.
     81          *
     82          *              opt           Specifies either:
     83          *                               OS_TMR_OPT_ONE_SHOT       The timer counts down only once
     84          *                               OS_TMR_OPT_PERIODIC       The timer counts down and then reloads itself
     85          *
     86          *              callback      Is a pointer to a callback function that will be called when the timer expires.  The
     87          *                               callback function must be declared as follows:
     88          *
     89          *                               void MyCallback (OS_TMR *ptmr, void *p_arg);
     90          *
     91          *              callback_arg  Is an argument (a pointer) that is passed to the callback function when it is called.
     92          *
     93          *              pname         Is a pointer to an ASCII string that is used to name the timer.  Names are useful for
     94          *                               debugging.  The length of the ASCII string for the name can be as big as:
     95          *
     96          *                               OS_TMR_CFG_NAME_SIZE and should be found in OS_CFG.H
     97          *
     98          *              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
     99          *                               OS_ERR_NONE
    100          *                               OS_ERR_TMR_INVALID_DLY     you specified an invalid delay
    101          *                               OS_ERR_TMR_INVALID_PERIOD  you specified an invalid period
    102          *                               OS_ERR_TMR_INVALID_OPT     you specified an invalid option
    103          *                               OS_ERR_TMR_ISR             if the call was made from an ISR
    104          *                               OS_ERR_TMR_NON_AVAIL       if there are no free timers from the timer pool
    105          *                               OS_ERR_TMR_NAME_TOO_LONG   if the timer name is too long to fit
    106          *
    107          * Returns    : A pointer to an OS_TMR data structure.  
    108          *              This is the 'handle' that your application will use to reference the timer created.
    109          ************************************************************************************************************************
    110          */
    111          
    112          #if OS_TMR_EN > 0
    113          OS_TMR  *OSTmrCreate (INT32U           dly,
    114                                INT32U           period,
    115                                INT8U            opt,
    116                                OS_TMR_CALLBACK  callback,
    117                                void            *callback_arg,
    118                                INT8U           *pname,
    119                                INT8U           *perr)
    120          {
    121              OS_TMR   *ptmr;
    122          #if OS_TMR_CFG_NAME_SIZE > 0
    123              INT8U     len;
    124          #endif
    125          
    126          
    127          #if OS_ARG_CHK_EN > 0
    128              if (perr == (INT8U *)0) {                               /* Validate arguments                                     */
    129                  return ((OS_TMR *)0);
    130              }
    131              switch (opt) {
    132                  case OS_TMR_OPT_PERIODIC:
    133                       if (period == 0) {
    134                           *perr = OS_ERR_TMR_INVALID_PERIOD;
    135                           return ((OS_TMR *)0);
    136                       }
    137                       break;
    138          
    139                  case OS_TMR_OPT_ONE_SHOT:
    140                       if (dly == 0) {
    141                           *perr = OS_ERR_TMR_INVALID_DLY;
    142                           return ((OS_TMR *)0);
    143                       }
    144                       break;
    145          
    146                  default:
    147                       *perr = OS_ERR_TMR_INVALID_OPT;
    148                       return ((OS_TMR *)0);
    149              }
    150          #endif
    151              if (OSIntNesting > 0) {                                 /* See if trying to call from an ISR                      */
    152                  *perr  = OS_ERR_TMR_ISR;
    153                  return ((OS_TMR *)0);
    154              }
    155              OSTmr_Lock();
    156              ptmr = OSTmr_Alloc();                                   /* Obtain a timer from the free pool                      */
    157              if (ptmr == (OS_TMR *)0) {
    158                  OSTmr_Unlock();
    159                  *perr = OS_ERR_TMR_NON_AVAIL;

⌨️ 快捷键说明

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