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

📄 os_tmr.lst

📁 stm32+ucos-ii
💻 LST
📖 第 1 页 / 共 5 页
字号:
    404                                    remain = ptmr->OSTmrPeriod;
   \   00000062   E069               LDR      R0,[R4, #+28]
   \   00000064   0600               MOVS     R6,R0
   \   00000066   01E0               B.N      ??OSTmrRemainGet_10
    405                                } else {
    406                                    remain = ptmr->OSTmrDly;
   \                     ??OSTmrRemainGet_9:
   \   00000068   A069               LDR      R0,[R4, #+24]
   \   0000006A   0600               MOVS     R6,R0
    407                                }
    408                                OSSchedUnlock();
   \                     ??OSTmrRemainGet_10:
   \   0000006C   ........           BL       OSSchedUnlock
    409                                *perr  = OS_ERR_NONE;
   \   00000070   0020               MOVS     R0,#+0
   \   00000072   2870               STRB     R0,[R5, #+0]
    410                                break;
   \   00000074   05E0               B.N      ??OSTmrRemainGet_11
    411          
    412                           case OS_TMR_OPT_ONE_SHOT:
    413                           default:
    414                                remain = ptmr->OSTmrDly;
   \                     ??OSTmrRemainGet_8:
   \   00000076   A069               LDR      R0,[R4, #+24]
   \   00000078   0600               MOVS     R6,R0
    415                                OSSchedUnlock();
   \   0000007A   ........           BL       OSSchedUnlock
    416                                *perr  = OS_ERR_NONE;
   \   0000007E   0020               MOVS     R0,#+0
   \   00000080   2870               STRB     R0,[R5, #+0]
    417                                break;
    418                       }
    419                       return (remain);
   \                     ??OSTmrRemainGet_11:
   \   00000082   3000               MOVS     R0,R6
   \   00000084   10E0               B.N      ??OSTmrRemainGet_1
    420          
    421                  case OS_TMR_STATE_COMPLETED:                   /* Only ONE-SHOT that timed out can be in this state           */
    422                       OSSchedUnlock();
   \                     ??OSTmrRemainGet_4:
   \   00000086   ........           BL       OSSchedUnlock
    423                       *perr = OS_ERR_NONE;
   \   0000008A   0020               MOVS     R0,#+0
   \   0000008C   2870               STRB     R0,[R5, #+0]
    424                       return (0u);
   \   0000008E   0020               MOVS     R0,#+0
   \   00000090   0AE0               B.N      ??OSTmrRemainGet_1
    425          
    426                  case OS_TMR_STATE_UNUSED:
    427                       OSSchedUnlock();
   \                     ??OSTmrRemainGet_3:
   \   00000092   ........           BL       OSSchedUnlock
    428                       *perr = OS_ERR_TMR_INACTIVE;
   \   00000096   8720               MOVS     R0,#+135
   \   00000098   2870               STRB     R0,[R5, #+0]
    429                       return (0u);
   \   0000009A   0020               MOVS     R0,#+0
   \   0000009C   04E0               B.N      ??OSTmrRemainGet_1
    430          
    431                  default:
    432                       OSSchedUnlock();
   \                     ??OSTmrRemainGet_6:
   \   0000009E   ........           BL       OSSchedUnlock
    433                       *perr = OS_ERR_TMR_INVALID_STATE;
   \   000000A2   8D20               MOVS     R0,#+141
   \   000000A4   2870               STRB     R0,[R5, #+0]
    434                       return (0u);
   \   000000A6   0020               MOVS     R0,#+0
   \                     ??OSTmrRemainGet_1:
   \   000000A8   70BD               POP      {R4-R6,PC}       ;; return
    435              }
    436          }
    437          #endif
    438          
    439          /*$PAGE*/
    440          /*
    441          ************************************************************************************************************************
    442          *                                    FIND OUT WHAT STATE A TIMER IS IN
    443          *
    444          * Description: This function is called to determine what state the timer is in:
    445          *
    446          *                  OS_TMR_STATE_UNUSED     the timer has not been created
    447          *                  OS_TMR_STATE_STOPPED    the timer has been created but has not been started or has been stopped
    448          *                  OS_TMR_STATE_COMPLETED  the timer is in ONE-SHOT mode and has completed it's timeout
    449          *                  OS_TMR_STATE_RUNNING    the timer is currently running
    450          *
    451          * Arguments  : ptmr          Is a pointer to the desired timer
    452          *
    453          *              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
    454          *                               OS_ERR_NONE
    455          *                               OS_ERR_TMR_INVALID        'ptmr' is a NULL pointer
    456          *                               OS_ERR_TMR_INVALID_TYPE   'ptmr'  is not pointing to an OS_TMR
    457          *                               OS_ERR_TMR_ISR            if the call was made from an ISR
    458          *                               OS_ERR_TMR_INACTIVE       'ptmr' points to a timer that is not active
    459          *                               OS_ERR_TMR_INVALID_STATE  if the timer is not in a valid state
    460          *
    461          * Returns    : The current state of the timer (see description).
    462          ************************************************************************************************************************
    463          */
    464          
    465          #if OS_TMR_EN > 0u

   \                                 In section .text, align 2, keep-with-next
    466          INT8U  OSTmrStateGet (OS_TMR  *ptmr,
    467                                INT8U   *perr)
    468          {
   \                     OSTmrStateGet:
   \   00000000   70B5               PUSH     {R4-R6,LR}
   \   00000002   0400               MOVS     R4,R0
   \   00000004   0D00               MOVS     R5,R1
    469              INT8U  state;
    470          
    471          
    472          #ifdef OS_SAFETY_CRITICAL
    473              if (perr == (INT8U *)0) {
    474                  OS_SAFETY_CRITICAL_EXCEPTION();
    475                  return (0u);
    476              }
    477          #endif
    478          
    479          #if OS_ARG_CHK_EN > 0u
    480              if (ptmr == (OS_TMR *)0) {
    481                  *perr = OS_ERR_TMR_INVALID;
    482                  return (0u);
    483              }
    484          #endif
    485              if (ptmr->OSTmrType != OS_TMR_TYPE) {              /* Validate timer structure                                    */
   \   00000006   2078               LDRB     R0,[R4, #+0]
   \   00000008   6428               CMP      R0,#+100
   \   0000000A   03D0               BEQ.N    ??OSTmrStateGet_0
    486                  *perr = OS_ERR_TMR_INVALID_TYPE;
   \   0000000C   8920               MOVS     R0,#+137
   \   0000000E   2870               STRB     R0,[R5, #+0]
    487                  return (0u);
   \   00000010   0020               MOVS     R0,#+0
   \   00000012   1BE0               B.N      ??OSTmrStateGet_1
    488              }
    489              if (OSIntNesting > 0u) {                           /* See if trying to call from an ISR                           */
   \                     ??OSTmrStateGet_0:
   \   00000014   ........           LDR.W    R0,??DataTable18_1
   \   00000018   0078               LDRB     R0,[R0, #+0]
   \   0000001A   0028               CMP      R0,#+0
   \   0000001C   03D0               BEQ.N    ??OSTmrStateGet_2
    490                  *perr = OS_ERR_TMR_ISR;
   \   0000001E   8B20               MOVS     R0,#+139
   \   00000020   2870               STRB     R0,[R5, #+0]
    491                  return (0u);
   \   00000022   0020               MOVS     R0,#+0
   \   00000024   12E0               B.N      ??OSTmrStateGet_1
    492              }
    493              OSSchedLock();
   \                     ??OSTmrStateGet_2:
   \   00000026   ........           BL       OSSchedLock
    494              state = ptmr->OSTmrState;
   \   0000002A   94F82500           LDRB     R0,[R4, #+37]
   \   0000002E   0600               MOVS     R6,R0
    495              switch (state) {
   \   00000030   F6B2               UXTB     R6,R6            ;; ZeroExt  R6,R6,#+24,#+24
   \   00000032   3000               MOVS     R0,R6
   \   00000034   0028               CMP      R0,#+0
   \   00000036   0328               CMP      R0,#+3
   \   00000038   02D8               BHI.N    ??OSTmrStateGet_3
    496                  case OS_TMR_STATE_UNUSED:
    497                  case OS_TMR_STATE_STOPPED:
    498                  case OS_TMR_STATE_COMPLETED:
    499                  case OS_TMR_STATE_RUNNING:
    500                       *perr = OS_ERR_NONE;
   \                     ??OSTmrStateGet_4:
   \   0000003A   0020               MOVS     R0,#+0
   \   0000003C   2870               STRB     R0,[R5, #+0]
    501                       break;
   \   0000003E   01E0               B.N      ??OSTmrStateGet_5
    502          
    503                  default:
    504                       *perr = OS_ERR_TMR_INVALID_STATE;
   \                     ??OSTmrStateGet_3:
   \   00000040   8D20               MOVS     R0,#+141
   \   00000042   2870               STRB     R0,[R5, #+0]
    505                       break;
    506              }
    507              OSSchedUnlock();
   \                     ??OSTmrStateGet_5:
   \   00000044   ........           BL       OSSchedUnlock
    508              return (state);
   \   00000048   3000               MOVS     R0,R6
   \   0000004A   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \                     ??OSTmrStateGet_1:
   \   0000004C   70BD               POP      {R4-R6,PC}       ;; return
    509          }
    510          #endif
    511          
    512          /*$PAGE*/
    513          /*
    514          ************************************************************************************************************************
    515          *                                                   START A TIMER
    516          *
    517          * Description: This function is called by your application code to start a timer.
    518          *
    519          * Arguments  : ptmr          Is a pointer to an OS_TMR
    520          *
    521          *              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
    522          *                               OS_ERR_NONE
    523          *                               OS_ERR_TMR_INVALID
    524          *                               OS_ERR_TMR_INVALID_TYPE    'ptmr'  is not pointing to an OS_TMR
    525          *                               OS_ERR_TMR_ISR             if the call was made from an ISR
    526          *                               OS_ERR_TMR_INACTIVE        if the timer was not created
    527          *                               OS_ERR_TMR_INVALID_STATE   the timer is in an invalid state
    528          *
    529          * Returns    : OS_TRUE    if the timer was started
    530          *              OS_FALSE   if an error was detected
    531          ************************************************************************************************************************
    532          */
    533          
    534          #if OS_TMR_EN > 0u

   \                                 In section .text, align 2, keep-with-next
    535          BOOLEAN  OSTmrStart (OS_TMR   *ptmr,
    536                               INT8U    *perr)
    537          {
   \                     OSTmrStart:
   \   00000000   38B5               PUSH     {R3-R5,LR}
   \   00000002   0400               MOVS     R4,R0
   \   00000004   0D00               MOVS     R5,R1

⌨️ 快捷键说明

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