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

📄 os_tmr.lst

📁 lpc2478开发板基于IAR编译器移植ucos实验例程
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000050   ........           LDR      R0,??DataTable7  ;; OSIntNesting
   \   00000054   0000D0E5           LDRB     R0,[R0, #+0]
   \   00000058   010050E3           CMP      R0,#+1
   \   0000005C   0300003A           BCC      ??OSTmrStateGet_5
    480                  *perr = OS_ERR_TMR_ISR;
   \   00000060   8B00A0E3           MOV      R0,#+139
   \   00000064   0000C5E5           STRB     R0,[R5, #+0]
    481                  return (0);
   \   00000068   0000A0E3           MOV      R0,#+0
   \   0000006C   100000EA           B        ??OSTmrStateGet_2
    482              }
    483              OSTmr_Lock();
   \                     ??OSTmrStateGet_5:
   \   00000070   ........           BL       OSTmr_Lock
    484              state = ptmr->OSTmrState;
   \   00000074   3100D4E5           LDRB     R0,[R4, #+49]
   \   00000078   0060B0E1           MOVS     R6,R0
    485              switch (state) {
   \   0000007C   0600B0E1           MOVS     R0,R6
   \   00000080   030050E3           CMP      R0,#+3
   \   00000084   0600008A           BHI      ??OSTmrStateGet_6
   \   00000088   011F8FE2           ADR      R1,??OSTmrStateGet_0
   \   0000008C   0010D1E7           LDRB     R1,[R1, R0]
   \   00000090   01F18FE0           ADD      PC,PC,R1, LSL #+2
   \                     ??OSTmrStateGet_0:
   \   00000094   00000000           DC8      +0,+0,+0,+0
    486                  case OS_TMR_STATE_UNUSED:   
    487                  case OS_TMR_STATE_STOPPED:  
    488                  case OS_TMR_STATE_COMPLETED:
    489                  case OS_TMR_STATE_RUNNING:  
    490                       *perr = OS_ERR_NONE;
   \                     ??OSTmrStateGet_7:
   \   00000098   0000A0E3           MOV      R0,#+0
   \   0000009C   0000C5E5           STRB     R0,[R5, #+0]
   \   000000A0   010000EA           B        ??OSTmrStateGet_8
    491                       break;
    492                       
    493                  default:
    494                       *perr = OS_ERR_TMR_INVALID_STATE;
   \                     ??OSTmrStateGet_6:
   \   000000A4   8D00A0E3           MOV      R0,#+141
   \   000000A8   0000C5E5           STRB     R0,[R5, #+0]
    495                       break;
    496              }
    497              OSTmr_Unlock();
   \                     ??OSTmrStateGet_8:
   \   000000AC   ........           BL       OSTmr_Unlock
    498              return (state);
   \   000000B0   0600B0E1           MOVS     R0,R6
   \                     ??OSTmrStateGet_2:
   \   000000B4   7080BDE8           POP      {R4-R6,PC}       ;; return
    499          }
    500          #endif
    501          
    502          /*$PAGE*/
    503          /*
    504          ************************************************************************************************************************
    505          *                                                   START A TIMER
    506          *
    507          * Description: This function is called by your application code to start a timer.
    508          *
    509          * Arguments  : ptmr          Is a pointer to an OS_TMR
    510          *
    511          *              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
    512          *                               OS_ERR_NONE
    513          *                               OS_ERR_TMR_INVALID
    514          *                               OS_ERR_TMR_INVALID_TYPE    'ptmr'  is not pointing to an OS_TMR
    515          *                               OS_ERR_TMR_ISR             if the call was made from an ISR
    516          *                               OS_ERR_TMR_INACTIVE        if the timer was not created
    517          *                               OS_ERR_TMR_INVALID_STATE   the timer is in an invalid state
    518          *
    519          * Returns    : OS_TRUE    if the timer was started
    520          *              OS_FALSE   if an error was detected
    521          ************************************************************************************************************************
    522          */
    523          
    524          #if OS_TMR_EN > 0

   \                                 In segment CODE, align 4, keep-with-next
    525          BOOLEAN  OSTmrStart (OS_TMR   *ptmr,
    526                               INT8U    *perr)
    527          {
   \                     OSTmrStart:
   \   00000000   30402DE9           PUSH     {R4,R5,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
   \   00000008   0150B0E1           MOVS     R5,R1
    528          #if OS_ARG_CHK_EN > 0
    529              if (perr == (INT8U *)0) {                               /* Validate arguments                                     */
   \   0000000C   000055E3           CMP      R5,#+0
   \   00000010   0100001A           BNE      ??OSTmrStart_1
    530                  return (OS_FALSE);
   \   00000014   0000A0E3           MOV      R0,#+0
   \   00000018   370000EA           B        ??OSTmrStart_2
    531              }
    532              if (ptmr == (OS_TMR *)0) {
   \                     ??OSTmrStart_1:
   \   0000001C   000054E3           CMP      R4,#+0
   \   00000020   0300001A           BNE      ??OSTmrStart_3
    533                  *perr = OS_ERR_TMR_INVALID;
   \   00000024   8A00A0E3           MOV      R0,#+138
   \   00000028   0000C5E5           STRB     R0,[R5, #+0]
    534                  return (OS_FALSE);
   \   0000002C   0000A0E3           MOV      R0,#+0
   \   00000030   310000EA           B        ??OSTmrStart_2
    535              }
    536          #endif
    537              if (ptmr->OSTmrType != OS_TMR_TYPE) {                   /* Validate timer structure                               */
   \                     ??OSTmrStart_3:
   \   00000034   0000D4E5           LDRB     R0,[R4, #+0]
   \   00000038   640050E3           CMP      R0,#+100
   \   0000003C   0300000A           BEQ      ??OSTmrStart_4
    538                  *perr = OS_ERR_TMR_INVALID_TYPE;
   \   00000040   8900A0E3           MOV      R0,#+137
   \   00000044   0000C5E5           STRB     R0,[R5, #+0]
    539                  return (OS_FALSE);
   \   00000048   0000A0E3           MOV      R0,#+0
   \   0000004C   2A0000EA           B        ??OSTmrStart_2
    540              }
    541              if (OSIntNesting > 0) {                                 /* See if trying to call from an ISR                      */
   \                     ??OSTmrStart_4:
   \   00000050   ........           LDR      R0,??DataTable7  ;; OSIntNesting
   \   00000054   0000D0E5           LDRB     R0,[R0, #+0]
   \   00000058   010050E3           CMP      R0,#+1
   \   0000005C   0300003A           BCC      ??OSTmrStart_5
    542                  *perr  = OS_ERR_TMR_ISR;
   \   00000060   8B00A0E3           MOV      R0,#+139
   \   00000064   0000C5E5           STRB     R0,[R5, #+0]
    543                  return (OS_FALSE);
   \   00000068   0000A0E3           MOV      R0,#+0
   \   0000006C   220000EA           B        ??OSTmrStart_2
    544              }
    545              OSTmr_Lock();
   \                     ??OSTmrStart_5:
   \   00000070   ........           BL       OSTmr_Lock
    546              switch (ptmr->OSTmrState) {
   \   00000074   3100D4E5           LDRB     R0,[R4, #+49]
   \   00000078   030050E3           CMP      R0,#+3
   \   0000007C   1A00008A           BHI      ??OSTmrStart_6
   \   00000080   011F8FE2           ADR      R1,??OSTmrStart_0
   \   00000084   0010D1E7           LDRB     R1,[R1, R0]
   \   00000088   01F18FE0           ADD      PC,PC,R1, LSL #+2
   \                     ??OSTmrStart_0:
   \   0000008C   120A0A00           DC8      +18,+10,+10,+0
    547                  case OS_TMR_STATE_RUNNING:                          /* Restart the timer                                      */
    548                       OSTmr_Unlink(ptmr);                            /* ... Stop the timer                                     */
   \                     ??OSTmrStart_7:
   \   00000090   0400B0E1           MOVS     R0,R4
   \   00000094   ........           BL       OSTmr_Unlink
    549                       OSTmr_Link(ptmr, OS_TMR_LINK_DLY);             /* ... Link timer to timer wheel                          */
   \   00000098   0010A0E3           MOV      R1,#+0
   \   0000009C   0400B0E1           MOVS     R0,R4
   \   000000A0   ........           BL       OSTmr_Link
    550                       OSTmr_Unlock();
   \   000000A4   ........           BL       OSTmr_Unlock
    551                       *perr = OS_ERR_NONE;
   \   000000A8   0000A0E3           MOV      R0,#+0
   \   000000AC   0000C5E5           STRB     R0,[R5, #+0]
    552                       return (OS_TRUE);
   \   000000B0   0100A0E3           MOV      R0,#+1
   \   000000B4   100000EA           B        ??OSTmrStart_2
    553          
    554                  case OS_TMR_STATE_STOPPED:                          /* Start the timer                                        */
    555                  case OS_TMR_STATE_COMPLETED:
    556                       OSTmr_Link(ptmr, OS_TMR_LINK_DLY);             /* ... Link timer to timer wheel                          */
   \                     ??OSTmrStart_8:
   \   000000B8   0010A0E3           MOV      R1,#+0
   \   000000BC   0400B0E1           MOVS     R0,R4
   \   000000C0   ........           BL       OSTmr_Link
    557                       OSTmr_Unlock();
   \   000000C4   ........           BL       OSTmr_Unlock
    558                       *perr = OS_ERR_NONE;
   \   000000C8   0000A0E3           MOV      R0,#+0
   \   000000CC   0000C5E5           STRB     R0,[R5, #+0]
    559                       return (OS_TRUE);
   \   000000D0   0100A0E3           MOV      R0,#+1
   \   000000D4   080000EA           B        ??OSTmrStart_2
    560          
    561                  case OS_TMR_STATE_UNUSED:                           /* Timer not created                                      */
    562                       OSTmr_Unlock();
   \                     ??OSTmrStart_9:
   \   000000D8   ........           BL       OSTmr_Unlock
    563                       *perr = OS_ERR_TMR_INACTIVE;
   \   000000DC   8700A0E3           MOV      R0,#+135
   \   000000E0   0000C5E5           STRB     R0,[R5, #+0]
    564                       return (OS_FALSE);
   \   000000E4   0000A0E3           MOV      R0,#+0
   \   000000E8   030000EA           B        ??OSTmrStart_2
    565          
    566                  default:
    567                       OSTmr_Unlock();
   \                     ??OSTmrStart_6:
   \   000000EC   ........           BL       OSTmr_Unlock
    568                       *perr = OS_ERR_TMR_INVALID_STATE;
   \   000000F0   8D00A0E3           MOV      R0,#+141
   \   000000F4   0000C5E5           STRB     R0,[R5, #+0]
    569                       return (OS_FALSE);
   \   000000F8   0000A0E3           MOV      R0,#+0
   \                     ??OSTmrStart_2:
   \   000000FC   3080BDE8           POP      {R4,R5,PC}       ;; return
    570              }
    571          }
    572          #endif
    573          
    574          /*$PAGE*/
    575          /*
    576          ************************************************************************************************************************
    577          *                                                   STOP A TIMER
    578          *
    579          * Description: This function is called by your application code to stop a timer.
    580          *
    581          * Arguments  : ptmr          Is a pointer to the timer to stop.
    582          *
    583          *              opt           Allows you to specify an option to this functions which can be:
    584          *
    585          *                               OS_TMR_OPT_NONE          Do nothing special but stop the timer
    586          *                               OS_TMR_OPT_CALLBACK      Execute the callback function, pass it the callback argument
    587          *                                                        specified when the timer was created.
    588          *                               OS_TMR_OPT_CALLBACK_ARG  Execute the callback function, pass it the callback argument
    589          *                                                        specified in THIS function call

⌨️ 快捷键说明

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