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

📄 os_tmr.lst

📁 lpc2478开发板基于IAR编译器移植ucos实验例程
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000000D0   ........           BL       OSTmr_Unlock
    251                       *perr = OS_ERR_TMR_INACTIVE;
   \   000000D4   8700A0E3           MOV      R0,#+135
   \   000000D8   0000C5E5           STRB     R0,[R5, #+0]
    252                       return (OS_FALSE);
   \   000000DC   0000A0E3           MOV      R0,#+0
   \   000000E0   030000EA           B        ??OSTmrDel_2
    253          
    254                  default:
    255                       OSTmr_Unlock();
   \                     ??OSTmrDel_6:
   \   000000E4   ........           BL       OSTmr_Unlock
    256                       *perr = OS_ERR_TMR_INVALID_STATE;
   \   000000E8   8D00A0E3           MOV      R0,#+141
   \   000000EC   0000C5E5           STRB     R0,[R5, #+0]
    257                       return (OS_FALSE);
   \   000000F0   0000A0E3           MOV      R0,#+0
   \                     ??OSTmrDel_2:
   \   000000F4   3080BDE8           POP      {R4,R5,PC}       ;; return
    258              }
    259          }
    260          #endif
    261          
    262          /*$PAGE*/
    263          /*
    264          ************************************************************************************************************************
    265          *                                             GET THE NAME OF A TIMER
    266          *
    267          * Description: This function is called to obtain the name of a timer.
    268          *
    269          * Arguments  : ptmr          Is a pointer to the timer to obtain the name for
    270          *
    271          *              pdest         Is a pointer to where the name of the timer will be placed.  It is the caller's responsibility
    272          *                            to ensure that he has sufficient storage in the destination, i.e. at least OS_TMR_CFG_NAME_SIZE
    273          *
    274          *              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
    275          *                               OS_ERR_NONE               The call was successful
    276          *                               OS_ERR_TMR_INVALID_DEST   'pdest' is a NULL pointer
    277          *                               OS_ERR_TMR_INVALID        'ptmr'  is a NULL pointer
    278          *                               OS_ERR_TMR_INVALID_TYPE   'ptmr'  is not pointing to an OS_TMR
    279          *                               OS_ERR_TMR_ISR            if the call was made from an ISR
    280          *                               OS_ERR_TMR_INACTIVE       'ptmr'  points to a timer that is not active
    281          *                               OS_ERR_TMR_INVALID_STATE  the timer is in an invalid state
    282          *
    283          * Returns    : The length of the string or 0 if the timer does not exist.
    284          ************************************************************************************************************************
    285          */
    286          
    287          #if OS_TMR_EN > 0 && OS_TMR_CFG_NAME_SIZE > 0

   \                                 In segment CODE, align 4, keep-with-next
    288          INT8U  OSTmrNameGet (OS_TMR  *ptmr,
    289                               INT8U   *pdest,
    290                               INT8U   *perr)
    291          {
   \                     OSTmrNameGet:
   \   00000000   F0402DE9           PUSH     {R4-R7,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
   \   00000008   0150B0E1           MOVS     R5,R1
   \   0000000C   0260B0E1           MOVS     R6,R2
    292              INT8U  len;
    293          
    294          
    295          #if OS_ARG_CHK_EN > 0
    296              if (perr == (INT8U *)0) {
   \   00000010   000056E3           CMP      R6,#+0
   \   00000014   0100001A           BNE      ??OSTmrNameGet_1
    297                  return (0);
   \   00000018   0000A0E3           MOV      R0,#+0
   \   0000001C   340000EA           B        ??OSTmrNameGet_2
    298              }
    299              if (pdest == (INT8U *)0) {
   \                     ??OSTmrNameGet_1:
   \   00000020   000055E3           CMP      R5,#+0
   \   00000024   0300001A           BNE      ??OSTmrNameGet_3
    300                  *perr = OS_ERR_TMR_INVALID_DEST;
   \   00000028   8800A0E3           MOV      R0,#+136
   \   0000002C   0000C6E5           STRB     R0,[R6, #+0]
    301                  return (0);
   \   00000030   0000A0E3           MOV      R0,#+0
   \   00000034   2E0000EA           B        ??OSTmrNameGet_2
    302              }
    303              if (ptmr == (OS_TMR *)0) {
   \                     ??OSTmrNameGet_3:
   \   00000038   000054E3           CMP      R4,#+0
   \   0000003C   0300001A           BNE      ??OSTmrNameGet_4
    304                  *perr = OS_ERR_TMR_INVALID;
   \   00000040   8A00A0E3           MOV      R0,#+138
   \   00000044   0000C6E5           STRB     R0,[R6, #+0]
    305                  return (0);
   \   00000048   0000A0E3           MOV      R0,#+0
   \   0000004C   280000EA           B        ??OSTmrNameGet_2
    306              }
    307          #endif
    308              if (ptmr->OSTmrType != OS_TMR_TYPE) {              /* Validate timer structure                                    */
   \                     ??OSTmrNameGet_4:
   \   00000050   0000D4E5           LDRB     R0,[R4, #+0]
   \   00000054   640050E3           CMP      R0,#+100
   \   00000058   0300000A           BEQ      ??OSTmrNameGet_5
    309                  *perr = OS_ERR_TMR_INVALID_TYPE;
   \   0000005C   8900A0E3           MOV      R0,#+137
   \   00000060   0000C6E5           STRB     R0,[R6, #+0]
    310                  return (0);
   \   00000064   0000A0E3           MOV      R0,#+0
   \   00000068   210000EA           B        ??OSTmrNameGet_2
    311              }
    312              if (OSIntNesting > 0) {                            /* See if trying to call from an ISR                           */
   \                     ??OSTmrNameGet_5:
   \   0000006C   ........           LDR      R0,??DataTable7  ;; OSIntNesting
   \   00000070   0000D0E5           LDRB     R0,[R0, #+0]
   \   00000074   010050E3           CMP      R0,#+1
   \   00000078   0300003A           BCC      ??OSTmrNameGet_6
    313                  *perr  = OS_ERR_TMR_ISR;
   \   0000007C   8B00A0E3           MOV      R0,#+139
   \   00000080   0000C6E5           STRB     R0,[R6, #+0]
    314                  return (0);
   \   00000084   0000A0E3           MOV      R0,#+0
   \   00000088   190000EA           B        ??OSTmrNameGet_2
    315              }
    316              OSTmr_Lock();
   \                     ??OSTmrNameGet_6:
   \   0000008C   ........           BL       OSTmr_Lock
    317              switch (ptmr->OSTmrState) {
   \   00000090   3100D4E5           LDRB     R0,[R4, #+49]
   \   00000094   030050E3           CMP      R0,#+3
   \   00000098   1100008A           BHI      ??OSTmrNameGet_7
   \   0000009C   011F8FE2           ADR      R1,??OSTmrNameGet_0
   \   000000A0   0010D1E7           LDRB     R1,[R1, R0]
   \   000000A4   01F18FE0           ADD      PC,PC,R1, LSL #+2
   \                     ??OSTmrNameGet_0:
   \   000000A8   09000000           DC8      +9,+0,+0,+0
    318                  case OS_TMR_STATE_RUNNING:
    319                  case OS_TMR_STATE_STOPPED:
    320                  case OS_TMR_STATE_COMPLETED:
    321                       len   = OS_StrCopy(pdest, ptmr->OSTmrName);
   \                     ??OSTmrNameGet_8:
   \   000000AC   201094E2           ADDS     R1,R4,#+32
   \   000000B0   0500B0E1           MOVS     R0,R5
   \   000000B4   ........           _BLF     OS_StrCopy,??OS_StrCopy??rA
   \   000000B8   0070B0E1           MOVS     R7,R0
    322                       OSTmr_Unlock();
   \   000000BC   ........           BL       OSTmr_Unlock
    323                       *perr = OS_ERR_NONE;
   \   000000C0   0000A0E3           MOV      R0,#+0
   \   000000C4   0000C6E5           STRB     R0,[R6, #+0]
    324                       return (len);
   \   000000C8   0700B0E1           MOVS     R0,R7
   \   000000CC   080000EA           B        ??OSTmrNameGet_2
    325          
    326                  case OS_TMR_STATE_UNUSED:                      /* Timer is not allocated                                      */
    327                       OSTmr_Unlock();
   \                     ??OSTmrNameGet_9:
   \   000000D0   ........           BL       OSTmr_Unlock
    328                       *perr = OS_ERR_TMR_INACTIVE;
   \   000000D4   8700A0E3           MOV      R0,#+135
   \   000000D8   0000C6E5           STRB     R0,[R6, #+0]
    329                       return (0);
   \   000000DC   0000A0E3           MOV      R0,#+0
   \   000000E0   030000EA           B        ??OSTmrNameGet_2
    330          
    331                  default:
    332                       OSTmr_Unlock();
   \                     ??OSTmrNameGet_7:
   \   000000E4   ........           BL       OSTmr_Unlock
    333                       *perr = OS_ERR_TMR_INVALID_STATE;
   \   000000E8   8D00A0E3           MOV      R0,#+141
   \   000000EC   0000C6E5           STRB     R0,[R6, #+0]
    334                       return (0);
   \   000000F0   0000A0E3           MOV      R0,#+0
   \                     ??OSTmrNameGet_2:
   \   000000F4   F080BDE8           POP      {R4-R7,PC}       ;; return
    335              }
    336          }
    337          #endif
    338          
    339          /*$PAGE*/
    340          /*
    341          ************************************************************************************************************************
    342          *                                    GET HOW MUCH TIME IS LEFT BEFORE A TIMER EXPIRES
    343          *
    344          * Description: This function is called to get the number of ticks before a timer times out.
    345          *
    346          * Arguments  : ptmr          Is a pointer to the timer to obtain the remaining time from.
    347          *
    348          *              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
    349          *                               OS_ERR_NONE
    350          *                               OS_ERR_TMR_INVALID        'ptmr' is a NULL pointer
    351          *                               OS_ERR_TMR_INVALID_TYPE   'ptmr'  is not pointing to an OS_TMR
    352          *                               OS_ERR_TMR_ISR            if the call was made from an ISR
    353          *                               OS_ERR_TMR_INACTIVE       'ptmr' points to a timer that is not active
    354          *                               OS_ERR_TMR_INVALID_STATE  the timer is in an invalid state
    355          *
    356          * Returns    : The time remaining for the timer to expire.  The time represents 'timer' increments.  In other words, if
    357          *              OSTmr_Task() is signaled every 1/10 of a second then the returned value represents the number of 1/10 of
    358          *              a second remaining before the timer expires.
    359          ************************************************************************************************************************
    360          */
    361          
    362          #if OS_TMR_EN > 0

   \                                 In segment CODE, align 4, keep-with-next
    363          INT32U  OSTmrRemainGet (OS_TMR  *ptmr,
    364                                  INT8U   *perr)
    365          {
   \                     OSTmrRemainGet:
   \   00000000   70402DE9           PUSH     {R4-R6,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
   \   00000008   0150B0E1           MOVS     R5,R1
    366              INT32U  remain;
    367          
    368          
    369          #if OS_ARG_CHK_EN > 0
    370              if (perr == (INT8U *)0) {
   \   0000000C   000055E3           CMP      R5,#+0
   \   00000010   0100001A           BNE      ??OSTmrRemainGet_1
    371                  return (0);
   \   00000014   0000A0E3           MOV      R0,#+0
   \   00000018   4A0000EA           B        ??OSTmrRemainGet_2
    372              }
    373              if (ptmr == (OS_TMR *)0) {
   \                     ??OSTmrRemainGet_1:
   \   0000001C   000054E3           CMP      R4,#+0

⌨️ 快捷键说明

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