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

📄 os_tmr.lst

📁 lpc2478开发板基于IAR编译器移植ucos实验例程
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000020   0300001A           BNE      ??OSTmrRemainGet_3
    374                  *perr = OS_ERR_TMR_INVALID;
   \   00000024   8A00A0E3           MOV      R0,#+138
   \   00000028   0000C5E5           STRB     R0,[R5, #+0]
    375                  return (0);
   \   0000002C   0000A0E3           MOV      R0,#+0
   \   00000030   440000EA           B        ??OSTmrRemainGet_2
    376              }
    377          #endif
    378              if (ptmr->OSTmrType != OS_TMR_TYPE) {              /* Validate timer structure                                    */
   \                     ??OSTmrRemainGet_3:
   \   00000034   0000D4E5           LDRB     R0,[R4, #+0]
   \   00000038   640050E3           CMP      R0,#+100
   \   0000003C   0300000A           BEQ      ??OSTmrRemainGet_4
    379                  *perr = OS_ERR_TMR_INVALID_TYPE;
   \   00000040   8900A0E3           MOV      R0,#+137
   \   00000044   0000C5E5           STRB     R0,[R5, #+0]
    380                  return (0);
   \   00000048   0000A0E3           MOV      R0,#+0
   \   0000004C   3D0000EA           B        ??OSTmrRemainGet_2
    381              }
    382              if (OSIntNesting > 0) {                            /* See if trying to call from an ISR                           */
   \                     ??OSTmrRemainGet_4:
   \   00000050   ........           LDR      R0,??DataTable7  ;; OSIntNesting
   \   00000054   0000D0E5           LDRB     R0,[R0, #+0]
   \   00000058   010050E3           CMP      R0,#+1
   \   0000005C   0300003A           BCC      ??OSTmrRemainGet_5
    383                  *perr = OS_ERR_TMR_ISR;
   \   00000060   8B00A0E3           MOV      R0,#+139
   \   00000064   0000C5E5           STRB     R0,[R5, #+0]
    384                  return (0);
   \   00000068   0000A0E3           MOV      R0,#+0
   \   0000006C   350000EA           B        ??OSTmrRemainGet_2
    385              }
    386              OSTmr_Lock();
   \                     ??OSTmrRemainGet_5:
   \   00000070   ........           BL       OSTmr_Lock
    387              switch (ptmr->OSTmrState) {
   \   00000074   3100D4E5           LDRB     R0,[R4, #+49]
   \   00000078   030050E3           CMP      R0,#+3
   \   0000007C   2D00008A           BHI      ??OSTmrRemainGet_6
   \   00000080   011F8FE2           ADR      R1,??OSTmrRemainGet_0
   \   00000084   0010D1E7           LDRB     R1,[R1, R0]
   \   00000088   01F18FE0           ADD      PC,PC,R1, LSL #+2
   \                     ??OSTmrRemainGet_0:
   \   0000008C   250A2000           DC8      +37,+10,+32,+0
    388                  case OS_TMR_STATE_RUNNING:
    389                       remain = ptmr->OSTmrMatch - OSTmrTime;    /* Determine how much time is left to timeout                  */
   \                     ??OSTmrRemainGet_7:
   \   00000090   140094E5           LDR      R0,[R4, #+20]
   \   00000094   ........           LDR      R1,??DataTable43  ;; OSTmrTime
   \   00000098   001091E5           LDR      R1,[R1, #+0]
   \   0000009C   010050E0           SUBS     R0,R0,R1
   \   000000A0   0060B0E1           MOVS     R6,R0
    390                       OSTmr_Unlock();
   \   000000A4   ........           BL       OSTmr_Unlock
    391                       *perr  = OS_ERR_NONE;
   \   000000A8   0000A0E3           MOV      R0,#+0
   \   000000AC   0000C5E5           STRB     R0,[R5, #+0]
    392                       return (remain);
   \   000000B0   0600B0E1           MOVS     R0,R6
   \   000000B4   230000EA           B        ??OSTmrRemainGet_2
    393          
    394                  case OS_TMR_STATE_STOPPED:                     /* It's assumed that the timer has not started yet             */
    395                       switch (ptmr->OSTmrOpt) {
   \                     ??OSTmrRemainGet_8:
   \   000000B8   3000D4E5           LDRB     R0,[R4, #+48]
   \   000000BC   020050E3           CMP      R0,#+2
   \   000000C0   0B00001A           BNE      ??OSTmrRemainGet_9
    396                           case OS_TMR_OPT_PERIODIC:
    397                                if (ptmr->OSTmrDly == 0) {
   \                     ??OSTmrRemainGet_10:
   \   000000C4   180094E5           LDR      R0,[R4, #+24]
   \   000000C8   000050E3           CMP      R0,#+0
   \   000000CC   0200001A           BNE      ??OSTmrRemainGet_11
    398                                    remain = ptmr->OSTmrPeriod;
   \   000000D0   1C0094E5           LDR      R0,[R4, #+28]
   \   000000D4   0060B0E1           MOVS     R6,R0
   \   000000D8   010000EA           B        ??OSTmrRemainGet_12
    399                                } else {
    400                                    remain = ptmr->OSTmrDly;
   \                     ??OSTmrRemainGet_11:
   \   000000DC   180094E5           LDR      R0,[R4, #+24]
   \   000000E0   0060B0E1           MOVS     R6,R0
    401                                }
    402                                OSTmr_Unlock();
   \                     ??OSTmrRemainGet_12:
   \   000000E4   ........           BL       OSTmr_Unlock
    403                                *perr  = OS_ERR_NONE;
   \   000000E8   0000A0E3           MOV      R0,#+0
   \   000000EC   0000C5E5           STRB     R0,[R5, #+0]
   \   000000F0   040000EA           B        ??OSTmrRemainGet_13
    404                                break;
    405          
    406                           case OS_TMR_OPT_ONE_SHOT:
    407                           default:
    408                                remain = ptmr->OSTmrDly;
   \                     ??OSTmrRemainGet_9:
   \   000000F4   180094E5           LDR      R0,[R4, #+24]
   \   000000F8   0060B0E1           MOVS     R6,R0
    409                                OSTmr_Unlock();
   \   000000FC   ........           BL       OSTmr_Unlock
    410                                *perr  = OS_ERR_NONE;
   \   00000100   0000A0E3           MOV      R0,#+0
   \   00000104   0000C5E5           STRB     R0,[R5, #+0]
    411                                break;
    412                       }
    413                       return (remain);
   \                     ??OSTmrRemainGet_13:
   \   00000108   0600B0E1           MOVS     R0,R6
   \   0000010C   0D0000EA           B        ??OSTmrRemainGet_2
    414          
    415                  case OS_TMR_STATE_COMPLETED:                   /* Only ONE-SHOT that timed out can be in this state           */
    416                       OSTmr_Unlock();
   \                     ??OSTmrRemainGet_14:
   \   00000110   ........           BL       OSTmr_Unlock
    417                       *perr  = OS_ERR_NONE;
   \   00000114   0000A0E3           MOV      R0,#+0
   \   00000118   0000C5E5           STRB     R0,[R5, #+0]
    418                       return (0);
   \   0000011C   0000A0E3           MOV      R0,#+0
   \   00000120   080000EA           B        ??OSTmrRemainGet_2
    419          
    420                  case OS_TMR_STATE_UNUSED:
    421                       OSTmr_Unlock();
   \                     ??OSTmrRemainGet_15:
   \   00000124   ........           BL       OSTmr_Unlock
    422                       *perr  = OS_ERR_TMR_INACTIVE;
   \   00000128   8700A0E3           MOV      R0,#+135
   \   0000012C   0000C5E5           STRB     R0,[R5, #+0]
    423                       return (0);
   \   00000130   0000A0E3           MOV      R0,#+0
   \   00000134   030000EA           B        ??OSTmrRemainGet_2
    424          
    425                  default:
    426                       OSTmr_Unlock();
   \                     ??OSTmrRemainGet_6:
   \   00000138   ........           BL       OSTmr_Unlock
    427                       *perr  = OS_ERR_TMR_INVALID_STATE;
   \   0000013C   8D00A0E3           MOV      R0,#+141
   \   00000140   0000C5E5           STRB     R0,[R5, #+0]
    428                       return (0);
   \   00000144   0000A0E3           MOV      R0,#+0
   \                     ??OSTmrRemainGet_2:
   \   00000148   7080BDE8           POP      {R4-R6,PC}       ;; return
    429              }
    430          }
    431          #endif
    432          
    433          /*$PAGE*/
    434          /*
    435          ************************************************************************************************************************
    436          *                                    FIND OUT WHAT STATE A TIMER IS IN
    437          *
    438          * Description: This function is called to determine what state the timer is in:
    439          *
    440          *                  OS_TMR_STATE_UNUSED     the timer has not been created
    441          *                  OS_TMR_STATE_STOPPED    the timer has been created but has not been started or has been stopped
    442          *                  OS_TMR_COMPLETED        the timer is in ONE-SHOT mode and has completed it's timeout
    443          *                  OS_TMR_RUNNING          the timer is currently running
    444          *
    445          * Arguments  : ptmr          Is a pointer to the desired timer
    446          *
    447          *              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
    448          *                               OS_ERR_NONE
    449          *                               OS_ERR_TMR_INVALID        'ptmr' is a NULL pointer
    450          *                               OS_ERR_TMR_INVALID_TYPE   'ptmr'  is not pointing to an OS_TMR
    451          *                               OS_ERR_TMR_ISR            if the call was made from an ISR
    452          *                               OS_ERR_TMR_INACTIVE       'ptmr' points to a timer that is not active
    453          *                               OS_ERR_TMR_INVALID_STATE  if the timer is not in a valid state
    454          *
    455          * Returns    : The current state of the timer (see description).
    456          ************************************************************************************************************************
    457          */
    458          
    459          #if OS_TMR_EN > 0

   \                                 In segment CODE, align 4, keep-with-next
    460          INT8U  OSTmrStateGet (OS_TMR  *ptmr,
    461                                INT8U   *perr)
    462          {
   \                     OSTmrStateGet:
   \   00000000   70402DE9           PUSH     {R4-R6,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
   \   00000008   0150B0E1           MOVS     R5,R1
    463              INT8U  state;
    464          
    465          
    466          #if OS_ARG_CHK_EN > 0
    467              if (perr == (INT8U *)0) {
   \   0000000C   000055E3           CMP      R5,#+0
   \   00000010   0100001A           BNE      ??OSTmrStateGet_1
    468                  return (0);
   \   00000014   0000A0E3           MOV      R0,#+0
   \   00000018   250000EA           B        ??OSTmrStateGet_2
    469              }
    470              if (ptmr == (OS_TMR *)0) {
   \                     ??OSTmrStateGet_1:
   \   0000001C   000054E3           CMP      R4,#+0
   \   00000020   0300001A           BNE      ??OSTmrStateGet_3
    471                  *perr = OS_ERR_TMR_INVALID;
   \   00000024   8A00A0E3           MOV      R0,#+138
   \   00000028   0000C5E5           STRB     R0,[R5, #+0]
    472                  return (0);
   \   0000002C   0000A0E3           MOV      R0,#+0
   \   00000030   1F0000EA           B        ??OSTmrStateGet_2
    473              }
    474          #endif
    475              if (ptmr->OSTmrType != OS_TMR_TYPE) {              /* Validate timer structure                                    */
   \                     ??OSTmrStateGet_3:
   \   00000034   0000D4E5           LDRB     R0,[R4, #+0]
   \   00000038   640050E3           CMP      R0,#+100
   \   0000003C   0300000A           BEQ      ??OSTmrStateGet_4
    476                  *perr = OS_ERR_TMR_INVALID_TYPE;
   \   00000040   8900A0E3           MOV      R0,#+137
   \   00000044   0000C5E5           STRB     R0,[R5, #+0]
    477                  return (0);
   \   00000048   0000A0E3           MOV      R0,#+0
   \   0000004C   180000EA           B        ??OSTmrStateGet_2
    478              }
    479              if (OSIntNesting > 0) {                            /* See if trying to call from an ISR                           */
   \                     ??OSTmrStateGet_4:

⌨️ 快捷键说明

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