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

📄 os_tmr.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000154  f04ff04f          MOV      r12,#0
000158  4283              CMP      r3,r0
00015a  d104              BNE      |L1.358|
;;;1011           ptmr1              = (OS_TMR *)ptmr->OSTmrNext;
;;;1012           pspoke->OSTmrFirst = (void *)ptmr1;
00015c  600a              STR      r2,[r1,#0]
;;;1013           if (ptmr1 != (OS_TMR *)0) {
00015e  b132              CBZ      r2,|L1.366|
;;;1014               ptmr1->OSTmrPrev = (void *)0;
000160  f8c2f8c2          STR      r12,[r2,#0x10]
000164  e003              B        |L1.366|
                  |L1.358|
;;;1015           }
;;;1016       } else {
;;;1017           ptmr1            = (OS_TMR *)ptmr->OSTmrPrev;       /* Remove timer from somewhere in the list                */
000166  6903              LDR      r3,[r0,#0x10]
;;;1018           ptmr2            = (OS_TMR *)ptmr->OSTmrNext;
;;;1019           ptmr1->OSTmrNext = ptmr2;
000168  60da              STR      r2,[r3,#0xc]
;;;1020           if (ptmr2 != (OS_TMR *)0) {
00016a  b102              CBZ      r2,|L1.366|
;;;1021               ptmr2->OSTmrPrev = (void *)ptmr1;
00016c  6113              STR      r3,[r2,#0x10]
                  |L1.366|
;;;1022           }
;;;1023       }
;;;1024       ptmr->OSTmrState = OS_TMR_STATE_STOPPED;
00016e  2201              MOVS     r2,#1
000170  f880f880          STRB     r2,[r0,#0x31]
;;;1025       ptmr->OSTmrNext  = (void *)0;
000174  f8c0f8c0          STR      r12,[r0,#0xc]
;;;1026       ptmr->OSTmrPrev  = (void *)0;
000178  f8c0f8c0          STR      r12,[r0,#0x10]
;;;1027       pspoke->OSTmrEntries--;
00017c  8888              LDRH     r0,[r1,#4]
00017e  1e40              SUBS     r0,r0,#1
000180  8088              STRH     r0,[r1,#4]
;;;1028   }
000182  4770              BX       lr
;;;1029   #endif
                          ENDP

                  OSTmrDel PROC
;;;214                       INT8U   *perr)
;;;215    {
000184  b570              PUSH     {r4-r6,lr}
000186  4605              MOV      r5,r0
000188  460c              MOV      r4,r1
;;;216    #if OS_ARG_CHK_EN > 0
;;;217        if (perr == (INT8U *)0) {                               /* Validate arguments                                     */
00018a  b90c              CBNZ     r4,|L1.400|
;;;218            return (OS_FALSE);
00018c  2000              MOVS     r0,#0
;;;219        }
;;;220        if (ptmr == (OS_TMR *)0) {
;;;221            *perr = OS_ERR_TMR_INVALID;
;;;222            return (OS_FALSE);
;;;223        }
;;;224    #endif
;;;225        if (ptmr->OSTmrType != OS_TMR_TYPE) {                   /* Validate timer structure                               */
;;;226            *perr = OS_ERR_TMR_INVALID_TYPE;
;;;227            return (OS_FALSE);
;;;228        }
;;;229        if (OSIntNesting > 0) {                                 /* See if trying to call from an ISR                      */
;;;230            *perr  = OS_ERR_TMR_ISR;
;;;231            return (OS_FALSE);
;;;232        }
;;;233        OSTmr_Lock();
;;;234        switch (ptmr->OSTmrState) {
;;;235            case OS_TMR_STATE_RUNNING:
;;;236                 OSTmr_Unlink(ptmr);                            /* Remove from current wheel spoke                        */
;;;237                 OSTmr_Free(ptmr);                              /* Return timer to free list of timers                    */
;;;238                 OSTmr_Unlock();
;;;239                 *perr = OS_ERR_NONE;
;;;240                 return (OS_TRUE);
;;;241    
;;;242            case OS_TMR_STATE_STOPPED:                          /* Timer has not started or ...                           */
;;;243            case OS_TMR_STATE_COMPLETED:                        /* ... timer has completed the ONE-SHOT time              */
;;;244                 OSTmr_Free(ptmr);                              /* Return timer to free list of timers                    */
;;;245                 OSTmr_Unlock();
;;;246                 *perr = OS_ERR_NONE;
;;;247                 return (OS_TRUE);
;;;248    
;;;249            case OS_TMR_STATE_UNUSED:                           /* Already deleted                                        */
;;;250                 OSTmr_Unlock();
;;;251                 *perr = OS_ERR_TMR_INACTIVE;
;;;252                 return (OS_FALSE);
;;;253    
;;;254            default:
;;;255                 OSTmr_Unlock();
;;;256                 *perr = OS_ERR_TMR_INVALID_STATE;
;;;257                 return (OS_FALSE);
;;;258        }
;;;259    }
00018e  bd70              POP      {r4-r6,pc}
                  |L1.400|
000190  b91d              CBNZ     r5,|L1.410|
000192  208a              MOVS     r0,#0x8a
000194  7020              STRB     r0,[r4,#0]
000196  2000              MOVS     r0,#0
000198  bd70              POP      {r4-r6,pc}
                  |L1.410|
00019a  7828              LDRB     r0,[r5,#0]
00019c  2864              CMP      r0,#0x64
00019e  d003              BEQ      |L1.424|
0001a0  2089              MOVS     r0,#0x89
0001a2  7020              STRB     r0,[r4,#0]
0001a4  2000              MOVS     r0,#0
0001a6  bd70              POP      {r4-r6,pc}
                  |L1.424|
0001a8  4892              LDR      r0,|L1.1012|
0001aa  7800              LDRB     r0,[r0,#0]  ; OSIntNesting
0001ac  b118              CBZ      r0,|L1.438|
0001ae  208b              MOVS     r0,#0x8b
0001b0  7020              STRB     r0,[r4,#0]
0001b2  2000              MOVS     r0,#0
0001b4  bd70              POP      {r4-r6,pc}
                  |L1.438|
0001b6  f7fff7ff          BL       OSTmr_Lock
0001ba  f895f895          LDRB     r0,[r5,#0x31]
0001be  b1c8              CBZ      r0,|L1.500|
0001c0  2600              MOVS     r6,#0
0001c2  2801              CMP      r0,#1
0001c4  d00e              BEQ      |L1.484|
0001c6  2802              CMP      r0,#2
0001c8  d00c              BEQ      |L1.484|
0001ca  2803              CMP      r0,#3
0001cc  d118              BNE      |L1.512|
0001ce  4628              MOV      r0,r5
0001d0  f7fff7ff          BL       OSTmr_Unlink
0001d4  4628              MOV      r0,r5
0001d6  f7fff7ff          BL       OSTmr_Free
0001da  f7fff7ff          BL       OSTmr_Unlock
0001de  7026              STRB     r6,[r4,#0]
0001e0  2001              MOVS     r0,#1
0001e2  bd70              POP      {r4-r6,pc}
                  |L1.484|
0001e4  4628              MOV      r0,r5
0001e6  f7fff7ff          BL       OSTmr_Free
0001ea  f7fff7ff          BL       OSTmr_Unlock
0001ee  7026              STRB     r6,[r4,#0]
0001f0  2001              MOVS     r0,#1
0001f2  bd70              POP      {r4-r6,pc}
                  |L1.500|
0001f4  f7fff7ff          BL       OSTmr_Unlock
0001f8  2087              MOVS     r0,#0x87
0001fa  7020              STRB     r0,[r4,#0]
0001fc  2000              MOVS     r0,#0
0001fe  bd70              POP      {r4-r6,pc}
                  |L1.512|
000200  f7fff7ff          BL       OSTmr_Unlock
000204  208d              MOVS     r0,#0x8d
000206  7020              STRB     r0,[r4,#0]
000208  2000              MOVS     r0,#0
00020a  bd70              POP      {r4-r6,pc}
;;;260    #endif
                          ENDP

                  OSTmrNameGet PROC
;;;290                         INT8U   *perr)
;;;291    {
00020c  b570              PUSH     {r4-r6,lr}
00020e  4605              MOV      r5,r0
000210  460e              MOV      r6,r1
000212  4614              MOV      r4,r2
;;;292        INT8U  len;
;;;293    
;;;294    
;;;295    #if OS_ARG_CHK_EN > 0
;;;296        if (perr == (INT8U *)0) {
000214  b90c              CBNZ     r4,|L1.538|
;;;297            return (0);
000216  2000              MOVS     r0,#0
;;;298        }
;;;299        if (pdest == (INT8U *)0) {
;;;300            *perr = OS_ERR_TMR_INVALID_DEST;
;;;301            return (0);
;;;302        }
;;;303        if (ptmr == (OS_TMR *)0) {
;;;304            *perr = OS_ERR_TMR_INVALID;
;;;305            return (0);
;;;306        }
;;;307    #endif
;;;308        if (ptmr->OSTmrType != OS_TMR_TYPE) {              /* Validate timer structure                                    */
;;;309            *perr = OS_ERR_TMR_INVALID_TYPE;
;;;310            return (0);
;;;311        }
;;;312        if (OSIntNesting > 0) {                            /* See if trying to call from an ISR                           */
;;;313            *perr = OS_ERR_NAME_GET_ISR;
;;;314            return (0);
;;;315        }
;;;316        OSTmr_Lock();
;;;317        switch (ptmr->OSTmrState) {
;;;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);
;;;322                 OSTmr_Unlock();
;;;323                 *perr = OS_ERR_NONE;
;;;324                 return (len);
;;;325    
;;;326            case OS_TMR_STATE_UNUSED:                      /* Timer is not allocated                                      */
;;;327                 OSTmr_Unlock();
;;;328                 *perr = OS_ERR_TMR_INACTIVE;
;;;329                 return (0);
;;;330    
;;;331            default:
;;;332                 OSTmr_Unlock();
;;;333                 *perr = OS_ERR_TMR_INVALID_STATE;
;;;334                 return (0);
;;;335        }
;;;336    }
000218  bd70              POP      {r4-r6,pc}
                  |L1.538|
00021a  b91e              CBNZ     r6,|L1.548|
00021c  2088              MOVS     r0,#0x88
00021e  7020              STRB     r0,[r4,#0]
000220  2000              MOVS     r0,#0
000222  bd70              POP      {r4-r6,pc}
                  |L1.548|
000224  b91d              CBNZ     r5,|L1.558|
000226  208a              MOVS     r0,#0x8a
000228  7020              STRB     r0,[r4,#0]
00022a  2000              MOVS     r0,#0
00022c  bd70              POP      {r4-r6,pc}
                  |L1.558|
00022e  7828              LDRB     r0,[r5,#0]
000230  2864              CMP      r0,#0x64
000232  d003              BEQ      |L1.572|
000234  2089              MOVS     r0,#0x89
000236  7020              STRB     r0,[r4,#0]
000238  2000              MOVS     r0,#0
00023a  bd70              POP      {r4-r6,pc}
                  |L1.572|
00023c  486d              LDR      r0,|L1.1012|
00023e  7800              LDRB     r0,[r0,#0]  ; OSIntNesting
000240  b118              CBZ      r0,|L1.586|
000242  2011              MOVS     r0,#0x11
000244  7020              STRB     r0,[r4,#0]
000246  2000              MOVS     r0,#0
000248  bd70              POP      {r4-r6,pc}
                  |L1.586|
00024a  f7fff7ff          BL       OSTmr_Lock
00024e  f895f895          LDRB     r0,[r5,#0x31]
000252  b188              CBZ      r0,|L1.632|
000254  2801              CMP      r0,#1
000256  d003              BEQ      |L1.608|
000258  2802              CMP      r0,#2
00025a  d001              BEQ      |L1.608|
00025c  2803              CMP      r0,#3
00025e  d111              BNE      |L1.644|
                  |L1.608|
000260  f105f105          ADD      r1,r5,#0x20
000264  4630              MOV      r0,r6
000266  f7fff7ff          BL       OS_StrCopy
00026a  4605              MOV      r5,r0
00026c  f7fff7ff          BL       OSTmr_Unlock
000270  2000              MOVS     r0,#0
000272  7020              STRB     r0,[r4,#0]
000274  4628              MOV      r0,r5
000276  bd70              POP      {r4-r6,pc}
                  |L1.632|
000278  f7fff7ff          BL       OSTmr_Unlock
00027c  2087              MOVS     r0,#0x87
00027e  7020              STRB     r0,[r4,#0]
000280  2000              MOVS     r0,#0
000282  bd70              POP      {r4-r6,pc}
                  |L1.644|
000284  f7fff7ff          BL       OSTmr_Unlock
000288  208d              MOVS     r0,#0x8d
00028a  7020              STRB     r0,[r4,#0]
00028c  2000              MOVS     r0,#0
00028e  bd70              POP      {r4-r6,pc}
;;;337    #endif
                          ENDP

                  OSTmrRemainGet PROC
;;;364                            INT8U   *perr)
;;;365    {
000290  e92de92d          PUSH     {r4-r8,lr}
000294  4605              MOV      r5,r0
000296  460c              MOV      r4,r1
;;;366        INT32U  remain;
;;;367    
;;;368    
;;;369    #if OS_ARG_CHK_EN > 0

⌨️ 快捷键说明

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