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

📄 os_cpu_c.txt

📁 一个电力系统谐波检测的程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;;;184                OSIntNesting++;
;;;185                break;
;;;186            case 0x43:                      /*  判断中断是否需要切换             */
;;;187                if (OSTCBHighRdy == OSTCBCur)
;;;188                {
;;;189                    Regs[0] = 0;
;;;190                }
;;;191                else
;;;192                {
;;;193                    Regs[0] = 1;
;;;194                }
;;;195                break;
;;;196    #endif
;;;197            case 0x80:                      /* 任务切换到系统模式 */
                  |L1.380|
00017c  e1a00000          MOV      r0,r0
;;;198                __asm
;;;199                {
;;;200                    MRS     temp, SPSR
000180  e14f3000          MRS      r3,SPSR
;;;201                    BIC     temp, temp, #0x1f
000184  e3c3301f          BIC      r3,r3,#0x1f
;;;202                    ORR     temp, temp, #SYS32Mode    
000188  e383301f          ORR      r3,r3,#0x1f
;;;203                    MSR     SPSR_c, temp
00018c  e161f003          MSR      SPSR_c,r3
;;;204                }
;;;205                break;
000190  ea000025          B        |L1.556|
;;;206            case 0x81:                      /* 任务切换到用户模式 */
                  |L1.404|
000194  e1a00000          MOV      r0,r0
;;;207                __asm
;;;208                {
;;;209                    MRS     temp, SPSR
000198  e14f3000          MRS      r3,SPSR
;;;210                    BIC     temp, temp, #0x1f
00019c  e3c3301f          BIC      r3,r3,#0x1f
;;;211                    ORR     temp, temp, #USR32Mode    
0001a0  e3833010          ORR      r3,r3,#0x10
;;;212                    MSR     SPSR_c, temp
0001a4  e161f003          MSR      SPSR_c,r3
;;;213                }
;;;214                break;
0001a8  ea00001f          B        |L1.556|
;;;215            case 0x82:                      /* 任务是ARM代码 */
                  |L1.428|
0001ac  e1a00000          MOV      r0,r0
;;;216                if (Regs[0] <= OS_LOWEST_PRIO)
0001b0  e591c000          LDR      r12,[r1,#0]
0001b4  e35c000c          CMP      r12,#0xc
0001b8  ca000009          BGT      |L1.484|
;;;217                {
;;;218                    ptcb = OSTCBPrioTbl[Regs[0]];
0001bc  e59fe0b8          LDR      lr,|L1.636|
0001c0  e591c000          LDR      r12,[r1,#0]
0001c4  e79e210c          LDR      r2,[lr,r12,LSL #2]
;;;219                    if (ptcb != NULL)
0001c8  e3520000          CMP      r2,#0
0001cc  0a000004          BEQ      |L1.484|
;;;220                    {
;;;221                        ptcb -> OSTCBStkPtr[1] &= ~(1 << 5);
0001d0  e592c000          LDR      r12,[r2,#0]
0001d4  e59cc004          LDR      r12,[r12,#4]
0001d8  e3ccc020          BIC      r12,r12,#0x20
0001dc  e592e000          LDR      lr,[r2,#0]
0001e0  e58ec004          STR      r12,[lr,#4]
;;;222                    }
;;;223                }
;;;224                break;
                  |L1.484|
0001e4  ea000010          B        |L1.556|
;;;225            case 0x83:                      /* 任务是THUMB代码 */
                  |L1.488|
0001e8  e1a00000          MOV      r0,r0
;;;226                if (Regs[0] <= OS_LOWEST_PRIO)
0001ec  e591c000          LDR      r12,[r1,#0]
0001f0  e35c000c          CMP      r12,#0xc
0001f4  ca000009          BGT      |L1.544|
;;;227                {
;;;228                    ptcb = OSTCBPrioTbl[Regs[0]];
0001f8  e59fe07c          LDR      lr,|L1.636|
0001fc  e591c000          LDR      r12,[r1,#0]
000200  e79e210c          LDR      r2,[lr,r12,LSL #2]
;;;229                    if (ptcb != NULL)
000204  e3520000          CMP      r2,#0
000208  0a000004          BEQ      |L1.544|
;;;230                    {
;;;231                        ptcb -> OSTCBStkPtr[1] |= (1 << 5);
00020c  e592c000          LDR      r12,[r2,#0]
000210  e59cc004          LDR      r12,[r12,#4]
000214  e38cc020          ORR      r12,r12,#0x20
000218  e592e000          LDR      lr,[r2,#0]
00021c  e58ec004          STR      r12,[lr,#4]
;;;232                    }
;;;233                }
;;;234                break;
                  |L1.544|
000220  ea000001          B        |L1.556|
;;;235            default:
                  |L1.548|
000224  e1a00000          MOV      r0,r0
;;;236                break;
000228  e1a00000          MOV      r0,r0
                  |L1.556|
00022c  e1a00000          MOV      r0,r0                 ;148
;;;237        }
;;;238    }
000230  e49de004          POP      {lr}
000234  e12fff1e          BX       lr
                          ENDP

                  OSStartHighRdy PROC
;;;257            void OSStartHighRdy(void)
;;;258    {
000238  e92d4010          PUSH     {r4,lr}
;;;259        _OSStartHighRdy();
00023c  ef000001          SVC      0x1  ; formerly SWI
;;;260    }
000240  e8bd4010          POP      {r4,lr}
000244  e12fff1e          BX       lr
                          ENDP

                  OSInitHookBegin PROC
;;;280    {
;;;281    }
000248  e12fff1e          BX       lr
                          ENDP

                  OSInitHookEnd PROC
;;;298    {
;;;299    }
00024c  e12fff1e          BX       lr
                          ENDP

                  OSTaskCreateHook PROC
;;;315    {
;;;316        ptcb = ptcb;                       /* Prevent compiler warning                                     */
000250  e1a00000          MOV      r0,r0
;;;317    }
000254  e12fff1e          BX       lr
                          ENDP

                  OSTaskDelHook PROC
;;;332    {
;;;333        ptcb = ptcb;                       /* Prevent compiler warning                                     */
000258  e1a00000          MOV      r0,r0
;;;334    }
00025c  e12fff1e          BX       lr
                          ENDP

                  OSTaskSwHook PROC
;;;352    {
;;;353    }
000260  e12fff1e          BX       lr
                          ENDP

                  OSTaskStatHook PROC
;;;366    {
;;;367    }
000264  e12fff1e          BX       lr
                          ENDP

                  OSTCBInitHook PROC
;;;382    {
;;;383        ptcb = ptcb;                                           /* Prevent Compiler warning                 */
000268  e1a00000          MOV      r0,r0
;;;384    }
00026c  e12fff1e          BX       lr
                          ENDP

                  OSTimeTickHook PROC
;;;400    {
;;;401    }
000270  e12fff1e          BX       lr
                          ENDP

                  OSTaskIdleHook PROC
;;;418    {
;;;419    }
000274  e12fff1e          BX       lr
                  |L1.632|
000278  00000000          DCD      OsEnterSum
                  |L1.636|
00027c  00000000          DCD      OSTCBPrioTbl
                          ENDP



                          AREA ||.data||, DATA, ALIGN=2

                  OsEnterSum
                          DCD      0x00000000

⌨️ 快捷键说明

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