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

📄 os_cpu_c.txt

📁 在KEIL下成功使用UCOS-II嵌入式操作系统
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;;;182            case 0x42:                      /* 中断开始处理 */
;;;183                OSIntNesting++;
;;;184                break;
;;;185            case 0x43:                      /*  判断中断是否需要切换             */
;;;186                if (OSTCBHighRdy == OSTCBCur)
;;;187                {
;;;188                    Regs[0] = 0;
;;;189                }
;;;190                else
;;;191                {
;;;192                    Regs[0] = 1;
;;;193                }
;;;194                break;
;;;195    #endif
;;;196            case 0x80:                      /* 任务切换到系统模式 */
                  |L1.388|
000184  e1a00000          MOV      r0,r0
;;;197                __asm
;;;198                {
;;;199                    MRS     tmp, SPSR
000188  e14f3000          MRS      r3,SPSR
;;;200                    BIC     tmp, tmp, #0x1f
00018c  e3c3301f          BIC      r3,r3,#0x1f
;;;201                    ORR     tmp, tmp, #SYS32Mode    
000190  e383301f          ORR      r3,r3,#0x1f
;;;202                    MSR     SPSR_c, tmp
000194  e161f003          MSR      SPSR_c,r3
;;;203                }
;;;204                break;
000198  ea000025          B        |L1.564|
;;;205            case 0x81:                      /* 任务切换到用户模式 */
                  |L1.412|
00019c  e1a00000          MOV      r0,r0
;;;206                __asm
;;;207                {
;;;208                    MRS     tmp, SPSR
0001a0  e14f3000          MRS      r3,SPSR
;;;209                    BIC     tmp, tmp, #0x1f
0001a4  e3c3301f          BIC      r3,r3,#0x1f
;;;210                    ORR     tmp, tmp, #USR32Mode    
0001a8  e3833010          ORR      r3,r3,#0x10
;;;211                    MSR     SPSR_c, tmp
0001ac  e161f003          MSR      SPSR_c,r3
;;;212                }
;;;213                break;
0001b0  ea00001f          B        |L1.564|
;;;214            case 0x82:                      /* 任务是ARM代码 */
                  |L1.436|
0001b4  e1a00000          MOV      r0,r0
;;;215                if (Regs[0] <= OS_LOWEST_PRIO)
0001b8  e591c000          LDR      r12,[r1,#0]
0001bc  e35c000c          CMP      r12,#0xc
0001c0  ca000009          BGT      |L1.492|
;;;216                {
;;;217                    ptcb = OSTCBPrioTbl[Regs[0]];
0001c4  e59fe0b0          LDR      lr,|L1.636|
0001c8  e591c000          LDR      r12,[r1,#0]
0001cc  e79e210c          LDR      r2,[lr,r12,LSL #2]
;;;218                    if (ptcb != NULL)
0001d0  e3520000          CMP      r2,#0
0001d4  0a000004          BEQ      |L1.492|
;;;219                    {
;;;220                        ptcb -> OSTCBStkPtr[1] &= ~(1 << 5);
0001d8  e592c000          LDR      r12,[r2,#0]
0001dc  e59cc004          LDR      r12,[r12,#4]
0001e0  e3ccc020          BIC      r12,r12,#0x20
0001e4  e592e000          LDR      lr,[r2,#0]
0001e8  e58ec004          STR      r12,[lr,#4]
;;;221                    }
;;;222                }
;;;223                break;
                  |L1.492|
0001ec  ea000010          B        |L1.564|
;;;224            case 0x83:                      /* 任务是THUMB代码 */
                  |L1.496|
0001f0  e1a00000          MOV      r0,r0
;;;225                if (Regs[0] <= OS_LOWEST_PRIO)
0001f4  e591c000          LDR      r12,[r1,#0]
0001f8  e35c000c          CMP      r12,#0xc
0001fc  ca000009          BGT      |L1.552|
;;;226                {
;;;227                    ptcb = OSTCBPrioTbl[Regs[0]];
000200  e59fe074          LDR      lr,|L1.636|
000204  e591c000          LDR      r12,[r1,#0]
000208  e79e210c          LDR      r2,[lr,r12,LSL #2]
;;;228                    if (ptcb != NULL)
00020c  e3520000          CMP      r2,#0
000210  0a000004          BEQ      |L1.552|
;;;229                    {
;;;230                        ptcb -> OSTCBStkPtr[1] |= (1 << 5);
000214  e592c000          LDR      r12,[r2,#0]
000218  e59cc004          LDR      r12,[r12,#4]
00021c  e38cc020          ORR      r12,r12,#0x20
000220  e592e000          LDR      lr,[r2,#0]
000224  e58ec004          STR      r12,[lr,#4]
;;;231                    }
;;;232                }
;;;233                break;
                  |L1.552|
000228  ea000001          B        |L1.564|
;;;234            default:
                  |L1.556|
00022c  e1a00000          MOV      r0,r0
;;;235                break;
000230  e1a00000          MOV      r0,r0
                  |L1.564|
000234  e1a00000          MOV      r0,r0                 ;147
;;;236        }
;;;237    }
000238  e49df004          POP      {pc}
                          ENDP

                  OSStartHighRdy PROC
;;;256            void OSStartHighRdy(void)
;;;257    {
00023c  e92d4010          PUSH     {r4,lr}
;;;258        _OSStartHighRdy();
000240  ef000001          SVC      0x1  ; formerly SWI
;;;259    }
000244  e8bd8010          POP      {r4,pc}
                          ENDP

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

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

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

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

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

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

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

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

                  OSTaskIdleHook PROC
;;;417    {
;;;418    }
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 + -