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

📄 os_time.lst

📁 IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4.42的应用实例代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
    187              ptcb->OSTCBDly = 0;                                        /* Clear the time delay                 */
   \                     ??OSTimeDlyResume_5:
   \   00000070   0020A0E3           MOV      R2,#+0
   \   00000074   BA22C1E1           STRH     R2,[R1, #+42]
    188              if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
   \   00000078   2C20D1E5           LDRB     R2,[R1, #+44]
   \   0000007C   370012E3           TST      R2,#0x37
   \   00000080   0500000A           BEQ      ??OSTimeDlyResume_6
    189                  ptcb->OSTCBStat     &= ~OS_STAT_PEND_ANY;              /* Yes, Clear status flag               */
   \   00000084   2C20D1E5           LDRB     R2,[R1, #+44]
   \   00000088   C82012E2           ANDS     R2,R2,#0xC8
   \   0000008C   2C20C1E5           STRB     R2,[R1, #+44]
    190                  ptcb->OSTCBStatPend  =  OS_STAT_PEND_TO;               /* Indicate PEND timeout                */
   \   00000090   0120A0E3           MOV      R2,#+1
   \   00000094   2D20C1E5           STRB     R2,[R1, #+45]
   \   00000098   010000EA           B        ??OSTimeDlyResume_7
    191              } else {
    192                  ptcb->OSTCBStatPend  =  OS_STAT_PEND_OK;
   \                     ??OSTimeDlyResume_6:
   \   0000009C   0020A0E3           MOV      R2,#+0
   \   000000A0   2D20C1E5           STRB     R2,[R1, #+45]
    193              }
    194              if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) {  /* Is task suspended?                   */
   \                     ??OSTimeDlyResume_7:
   \   000000A4   2C20D1E5           LDRB     R2,[R1, #+44]
   \   000000A8   080012E3           TST      R2,#0x8
   \   000000AC   1000001A           BNE      ??OSTimeDlyResume_8
    195                  OSRdyGrp               |= ptcb->OSTCBBitY;             /* No,  Make ready                      */
   \   000000B0   ........           LDR      R2,??DataTable6  ;; OSRdyGrp
   \   000000B4   ........           LDR      R3,??DataTable6  ;; OSRdyGrp
   \   000000B8   0030D3E5           LDRB     R3,[R3, #+0]
   \   000000BC   3240D1E5           LDRB     R4,[R1, #+50]
   \   000000C0   033094E1           ORRS     R3,R4,R3
   \   000000C4   0030C2E5           STRB     R3,[R2, #+0]
    196                  OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
   \   000000C8   3020D1E5           LDRB     R2,[R1, #+48]
   \   000000CC   ........           LDR      R3,??DataTable8  ;; OSRdyTbl
   \   000000D0   3040D1E5           LDRB     R4,[R1, #+48]
   \   000000D4   ........           LDR      R12,??DataTable8  ;; OSRdyTbl
   \   000000D8   0C40D4E7           LDRB     R4,[R4, +R12]
   \   000000DC   3110D1E5           LDRB     R1,[R1, #+49]
   \   000000E0   041091E1           ORRS     R1,R1,R4
   \   000000E4   0310C2E7           STRB     R1,[R2, +R3]
    197                  OS_EXIT_CRITICAL();
   \   000000E8   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
    198                  OS_Sched();                                            /* See if this is new highest priority  */
   \   000000EC   ........           _BLF     OS_Sched,??OS_Sched??rA
   \   000000F0   000000EA           B        ??OSTimeDlyResume_9
    199              } else {
    200                  OS_EXIT_CRITICAL();                                    /* Task may be suspended                */
   \                     ??OSTimeDlyResume_8:
   \   000000F4   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
    201              }
    202              return (OS_ERR_NONE);
   \                     ??OSTimeDlyResume_9:
   \   000000F8   0000A0E3           MOV      R0,#+0
   \                     ??OSTimeDlyResume_1:
   \   000000FC   1080BDE8           POP      {R4,PC}          ;; return
   \                     ??OSTimeDlyResume_2:
   \   00000100   ........           DC32     OSTCBPrioTbl
    203          }
    204          #endif
    205          /*$PAGE*/
    206          /*
    207          *********************************************************************************************************
    208          *                                         GET CURRENT SYSTEM TIME
    209          *
    210          * Description: This function is used by your application to obtain the current value of the 32-bit
    211          *              counter which keeps track of the number of clock ticks.
    212          *
    213          * Arguments  : none
    214          *
    215          * Returns    : The current value of OSTime
    216          *********************************************************************************************************
    217          */
    218          
    219          #if OS_TIME_GET_SET_EN > 0

   \                                 In segment CODE, align 4, keep-with-next
    220          INT32U  OSTimeGet (void)
    221          {
   \                     OSTimeGet:
   \   00000000   30402DE9           PUSH     {R4,R5,LR}
    222              INT32U     ticks;
    223          #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    224              OS_CPU_SR  cpu_sr = 0;
   \   00000004   0050A0E3           MOV      R5,#+0
    225          #endif
    226          
    227          
    228          
    229              OS_ENTER_CRITICAL();
   \   00000008   ........           _BLF     OS_CPU_SR_Save,??OS_CPU_SR_Save??rA
   \   0000000C   0050B0E1           MOVS     R5,R0
    230              ticks = OSTime;
   \   00000010   ........           LDR      R0,??DataTable10  ;; OSTime
   \   00000014   004090E5           LDR      R4,[R0, #+0]
    231              OS_EXIT_CRITICAL();
   \   00000018   0500B0E1           MOVS     R0,R5
   \   0000001C   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
    232              return (ticks);
   \   00000020   0400B0E1           MOVS     R0,R4
   \   00000024   3080BDE8           POP      {R4,R5,PC}       ;; return
    233          }
    234          #endif
    235          
    236          /*
    237          *********************************************************************************************************
    238          *                                            SET SYSTEM CLOCK
    239          *
    240          * Description: This function sets the 32-bit counter which keeps track of the number of clock ticks.
    241          *
    242          * Arguments  : ticks      specifies the new value that OSTime needs to take.
    243          *
    244          * Returns    : none
    245          *********************************************************************************************************
    246          */
    247          
    248          #if OS_TIME_GET_SET_EN > 0

   \                                 In segment CODE, align 4, keep-with-next
    249          void  OSTimeSet (INT32U ticks)
    250          {
   \                     OSTimeSet:
   \   00000000   30402DE9           PUSH     {R4,R5,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    251          #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    252              OS_CPU_SR  cpu_sr = 0;
   \   00000008   0050A0E3           MOV      R5,#+0
    253          #endif
    254          
    255          
    256          
    257              OS_ENTER_CRITICAL();
   \   0000000C   ........           _BLF     OS_CPU_SR_Save,??OS_CPU_SR_Save??rA
   \   00000010   0050B0E1           MOVS     R5,R0
    258              OSTime = ticks;
   \   00000014   ........           LDR      R0,??DataTable10  ;; OSTime
   \   00000018   004080E5           STR      R4,[R0, #+0]
    259              OS_EXIT_CRITICAL();
   \   0000001C   0500B0E1           MOVS     R0,R5
   \   00000020   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
    260          }
   \   00000024   3080BDE8           POP      {R4,R5,PC}       ;; return

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable6:
   \   00000000   ........           DC32     OSRdyGrp

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable8:
   \   00000000   ........           DC32     OSRdyTbl

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable10:
   \   00000000   ........           DC32     OSTime
    261          #endif

   Maximum stack usage in bytes:

     Function        CSTACK
     --------        ------
     OSTimeDly           8
     OSTimeDlyHMSM       8
     OSTimeDlyResume     8
     OSTimeGet          12
     OSTimeSet          12


   Segment part sizes:

     Function/Label  Bytes
     --------------  -----
     OSTimeDly        152
     OSTimeDlyHMSM    216
     OSTimeDlyResume  260
     OSTimeGet         40
     OSTimeSet         40
     ??DataTable6       4
     ??DataTable8       4
     ??DataTable10      4
      Others           48

 
 768 bytes in segment CODE
 
 720 bytes of CODE memory (+ 48 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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