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

📄 os_time.txt

📁 一个电力系统谐波检测的程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000160  e3590000          CMP      r9,#0                 ;102
000164  cafffff6          BGT      |L1.324|              ;102
000168  e3a00000          MOV      r0,#0                 ;107
00016c  eaffffd7          B        |L1.208|              ;107
                  |L1.368|
000170  e3a00054          MOV      r0,#0x54              ;109
000174  eaffffd5          B        |L1.208|              ;109
                          ENDP

                  OSTimeDlyResume PROC
;;;138    INT8U  OSTimeDlyResume (INT8U prio)
;;;139    {
000178  e92d4070          PUSH     {r4-r6,lr}
00017c  e1a05000          MOV      r5,r0
;;;140    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;141        OS_CPU_SR  cpu_sr;
;;;142    #endif    
;;;143        OS_TCB    *ptcb;
;;;144    
;;;145    
;;;146        if (prio >= OS_LOWEST_PRIO) {
000180  e355000c          CMP      r5,#0xc
000184  ba000002          BLT      |L1.404|
;;;147            return (OS_PRIO_INVALID);
000188  e3a0002a          MOV      r0,#0x2a
                  |L1.396|
00018c  e8bd4070          POP      {r4-r6,lr}
;;;148        }
;;;149        OS_ENTER_CRITICAL();
;;;150        ptcb = (OS_TCB *)OSTCBPrioTbl[prio];                   /* Make sure that task exist                */
;;;151        if (ptcb != (OS_TCB *)0) {
;;;152            if (ptcb->OSTCBDly != 0) {                         /* See if task is delayed                   */
;;;153                ptcb->OSTCBDly  = 0;                           /* Clear the time delay                     */
;;;154                if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) {  /* See if task is ready to run  */
;;;155                    OSRdyGrp               |= ptcb->OSTCBBitY;             /* Make task ready to run       */
;;;156                    OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
;;;157                    OS_EXIT_CRITICAL();
;;;158                    OS_Sched();                                /* See if this is new highest priority      */
;;;159                } else {
;;;160                    OS_EXIT_CRITICAL();                        /* Task may be suspended                    */
;;;161                }
;;;162                return (OS_NO_ERR);
;;;163            } else {
;;;164                OS_EXIT_CRITICAL();
;;;165                return (OS_TIME_NOT_DLY);                      /* Indicate that task was not delayed       */
;;;166            }
;;;167        }
;;;168        OS_EXIT_CRITICAL();
;;;169        return (OS_TASK_NOT_EXIST);                            /* The task does not exist                  */
;;;170    }
000190  e12fff1e          BX       lr
                  |L1.404|
000194  ef000002          SVC      0x2  ; formerly SWI   ;149
000198  e59f00e0          LDR      r0,|L1.640|           ;150
00019c  e7904105          LDR      r4,[r0,r5,LSL #2]     ;150
0001a0  e3540000          CMP      r4,#0                 ;151
0001a4  0a00001e          BEQ      |L1.548|              ;151
0001a8  e1d402ba          LDRH     r0,[r4,#0x2a]         ;152
0001ac  e3500000          CMP      r0,#0                 ;152
0001b0  0a000018          BEQ      |L1.536|              ;152
0001b4  e3a00000          MOV      r0,#0                 ;153
0001b8  e1c402ba          STRH     r0,[r4,#0x2a]         ;153
0001bc  e5d4002c          LDRB     r0,[r4,#0x2c]         ;154
0001c0  e3100008          TST      r0,#8                 ;154
0001c4  1a000010          BNE      |L1.524|              ;154
0001c8  e5d40031          LDRB     r0,[r4,#0x31]         ;155
0001cc  e59f10a4          LDR      r1,|L1.632|           ;155
0001d0  e5d11000          LDRB     r1,[r1,#0]            ;155  ; OSRdyGrp
0001d4  e1800001          ORR      r0,r0,r1              ;155
0001d8  e59f1098          LDR      r1,|L1.632|           ;155
0001dc  e5c10000          STRB     r0,[r1,#0]            ;155  ; OSRdyGrp
0001e0  e5d4002f          LDRB     r0,[r4,#0x2f]         ;156
0001e4  e59f1088          LDR      r1,|L1.628|           ;156
0001e8  e7d10000          LDRB     r0,[r1,r0]            ;156
0001ec  e5d41030          LDRB     r1,[r4,#0x30]         ;156
0001f0  e1800001          ORR      r0,r0,r1              ;156
0001f4  e5d4102f          LDRB     r1,[r4,#0x2f]         ;156
0001f8  e59f2074          LDR      r2,|L1.628|           ;156
0001fc  e7c20001          STRB     r0,[r2,r1]            ;156
000200  ef000003          SVC      0x3  ; formerly SWI   ;157
000204  ebfffffe          BL       OS_Sched              ;158
000208  ea000000          B        |L1.528|              ;158
                  |L1.524|
00020c  ef000003          SVC      0x3  ; formerly SWI   ;160
                  |L1.528|
000210  e3a00000          MOV      r0,#0                 ;162
000214  eaffffdc          B        |L1.396|              ;162
                  |L1.536|
000218  ef000003          SVC      0x3  ; formerly SWI   ;164
00021c  e3a00050          MOV      r0,#0x50              ;165
000220  eaffffd9          B        |L1.396|              ;165
                  |L1.548|
000224  ef000003          SVC      0x3  ; formerly SWI   ;168
000228  e3a0000b          MOV      r0,#0xb               ;169
00022c  eaffffd6          B        |L1.396|              ;169
                          ENDP

                  OSTimeGet PROC
;;;187    INT32U  OSTimeGet (void)
;;;188    {
000230  e92d4010          PUSH     {r4,lr}
;;;189    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;190        OS_CPU_SR  cpu_sr;
;;;191    #endif    
;;;192        INT32U     ticks;
;;;193    
;;;194    
;;;195        OS_ENTER_CRITICAL();
000234  ef000002          SVC      0x2  ; formerly SWI
;;;196        ticks = OSTime;
000238  e59f0044          LDR      r0,|L1.644|
00023c  e5904000          LDR      r4,[r0,#0]  ; OSTime
;;;197        OS_EXIT_CRITICAL();
000240  ef000003          SVC      0x3  ; formerly SWI
;;;198        return (ticks);
000244  e1a00004          MOV      r0,r4
000248  e8bd4010          POP      {r4,lr}
;;;199    }
00024c  e12fff1e          BX       lr
                          ENDP

                  OSTimeSet PROC
;;;215    void  OSTimeSet (INT32U ticks)
;;;216    {
000250  e92d4010          PUSH     {r4,lr}
000254  e1a04000          MOV      r4,r0
;;;217    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;218        OS_CPU_SR  cpu_sr;
;;;219    #endif    
;;;220    
;;;221    
;;;222        OS_ENTER_CRITICAL();
000258  ef000002          SVC      0x2  ; formerly SWI
;;;223        OSTime = ticks;
00025c  e59f0020          LDR      r0,|L1.644|
000260  e5804000          STR      r4,[r0,#0]  ; OSTime
;;;224        OS_EXIT_CRITICAL();
000264  ef000003          SVC      0x3  ; formerly SWI
;;;225    }
000268  e8bd4010          POP      {r4,lr}
00026c  e12fff1e          BX       lr
                  |L1.624|
000270  00000000          DCD      OSTCBCur
                  |L1.628|
000274  00000000          DCD      OSRdyTbl
                  |L1.632|
000278  00000000          DCD      OSRdyGrp
                  |L1.636|
00027c  0000ffff          DCD      0x0000ffff
                  |L1.640|
000280  00000000          DCD      OSTCBPrioTbl
                  |L1.644|
000284  00000000          DCD      OSTime
                          ENDP


⌨️ 快捷键说明

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