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

📄 os_task.txt

📁 stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 919] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\output\os_task.o --depend=.\output\os_task.d --device=DARMSTM --apcs=interwork -O1 -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\arm-cortex-m3\Generic\RealView -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\CPU\ST\STM32\inc -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\Arm-Cortex-M3\RealView -I..\..\..\..\..\uC-LIB -IC:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\output\os_task.crf ..\..\..\..\..\uCOS-II\Source\os_task.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  OSTaskChangePrio PROC
;;;51     INT8U  OSTaskChangePrio (INT8U oldprio, INT8U newprio)
;;;52     {
000000  e92de92d          PUSH     {r4-r12,lr}
000004  4604              MOV      r4,r0
000006  460f              MOV      r7,r1
;;;53     #if (OS_EVENT_EN)
;;;54         OS_EVENT  *pevent;
;;;55     #if (OS_EVENT_MULTI_EN > 0)
;;;56         OS_EVENT **pevents;
;;;57     #endif
;;;58     #endif
;;;59         OS_TCB    *ptcb;
;;;60         INT8U      y_new;
;;;61         INT8U      x_new;
;;;62         INT8U      y_old;
;;;63     #if OS_LOWEST_PRIO <= 63
;;;64         INT8U      bity_new;
;;;65         INT8U      bitx_new;
;;;66         INT8U      bity_old;
;;;67         INT8U      bitx_old;
;;;68     #else
;;;69         INT16U     bity_new;
;;;70         INT16U     bitx_new;
;;;71         INT16U     bity_old;
;;;72         INT16U     bitx_old;
;;;73     #endif
;;;74     #if OS_CRITICAL_METHOD == 3
;;;75         OS_CPU_SR  cpu_sr = 0;                                  /* Storage for CPU status register         */
;;;76     #endif
;;;77     
;;;78     
;;;79     /*$PAGE*/
;;;80     #if OS_ARG_CHK_EN > 0
;;;81         if (oldprio >= OS_LOWEST_PRIO) {
;;;82             if (oldprio != OS_PRIO_SELF) {
;;;83                 return (OS_ERR_PRIO_INVALID);
;;;84             }
;;;85         }
;;;86         if (newprio >= OS_LOWEST_PRIO) {
;;;87             return (OS_ERR_PRIO_INVALID);
;;;88         }
;;;89     #endif
;;;90         OS_ENTER_CRITICAL();
000008  f7fff7ff          BL       OS_CPU_SR_Save
;;;91         if (OSTCBPrioTbl[newprio] != (OS_TCB *)0) {             /* New priority must not already exist     */
00000c  49fa              LDR      r1,|L1.1016|
00000e  f851f851          LDR      r2,[r1,r7,LSL #2]
000012  b122              CBZ      r2,|L1.30|
;;;92             OS_EXIT_CRITICAL();
000014  f7fff7ff          BL       OS_CPU_SR_Restore
;;;93             return (OS_ERR_PRIO_EXIST);
000018  2028              MOVS     r0,#0x28
                  |L1.26|
;;;94         }
;;;95         if (oldprio == OS_PRIO_SELF) {                          /* See if changing self                    */
;;;96             oldprio = OSTCBCur->OSTCBPrio;                      /* Yes, get priority                       */
;;;97         }
;;;98         ptcb = OSTCBPrioTbl[oldprio];
;;;99         if (ptcb == (OS_TCB *)0) {                              /* Does task to change exist?              */
;;;100            OS_EXIT_CRITICAL();                                 /* No, can't change its priority!          */
;;;101            return (OS_ERR_PRIO);
;;;102        }
;;;103        if (ptcb == OS_TCB_RESERVED) {                          /* Is task assigned to Mutex               */
;;;104            OS_EXIT_CRITICAL();                                 /* No, can't change its priority!          */
;;;105            return (OS_ERR_TASK_NOT_EXIST);
;;;106        }
;;;107    #if OS_LOWEST_PRIO <= 63
;;;108        y_new                 = (INT8U)(newprio >> 3);          /* Yes, compute new TCB fields             */
;;;109        x_new                 = (INT8U)(newprio & 0x07);
;;;110        bity_new              = (INT8U)(1 << y_new);
;;;111        bitx_new              = (INT8U)(1 << x_new);
;;;112    #else
;;;113        y_new                 = (INT8U)((newprio >> 4) & 0x0F);
;;;114        x_new                 = (INT8U)( newprio & 0x0F);
;;;115        bity_new              = (INT16U)(1 << y_new);
;;;116        bitx_new              = (INT16U)(1 << x_new);
;;;117    #endif
;;;118    
;;;119        OSTCBPrioTbl[oldprio] = (OS_TCB *)0;                    /* Remove TCB from old priority            */
;;;120        OSTCBPrioTbl[newprio] =  ptcb;                          /* Place pointer to TCB @ new priority     */
;;;121        y_old                 =  ptcb->OSTCBY;
;;;122        bity_old              =  ptcb->OSTCBBitY;
;;;123        bitx_old              =  ptcb->OSTCBBitX;
;;;124        if ((OSRdyTbl[y_old] &   bitx_old) != 0) {              /* If task is ready make it not            */
;;;125             OSRdyTbl[y_old] &= ~bitx_old;
;;;126             if (OSRdyTbl[y_old] == 0) {
;;;127                 OSRdyGrp &= ~bity_old;
;;;128             }
;;;129             OSRdyGrp        |= bity_new;                       /* Make new priority ready to run          */
;;;130             OSRdyTbl[y_new] |= bitx_new;
;;;131        }
;;;132    
;;;133    #if (OS_EVENT_EN)
;;;134        pevent = ptcb->OSTCBEventPtr;
;;;135        if (pevent != (OS_EVENT *)0) {
;;;136            pevent->OSEventTbl[y_old] &= ~bitx_old;             /* Remove old task prio from wait list     */
;;;137            if (pevent->OSEventTbl[y_old] == 0) {
;;;138                pevent->OSEventGrp    &= ~bity_old;
;;;139            }
;;;140            pevent->OSEventGrp        |= bity_new;              /* Add    new task prio to   wait list     */
;;;141            pevent->OSEventTbl[y_new] |= bitx_new;
;;;142        }
;;;143    #if (OS_EVENT_MULTI_EN > 0)
;;;144        if (ptcb->OSTCBEventMultiPtr != (OS_EVENT **)0) {
;;;145            pevents =  ptcb->OSTCBEventMultiPtr;
;;;146            pevent  = *pevents;
;;;147            while (pevent != (OS_EVENT *)0) {
;;;148                pevent->OSEventTbl[y_old] &= ~bitx_old;         /* Remove old task prio from wait lists    */
;;;149                if (pevent->OSEventTbl[y_old] == 0) {
;;;150                    pevent->OSEventGrp    &= ~bity_old;
;;;151                }
;;;152                pevent->OSEventGrp        |= bity_new;          /* Add    new task prio to   wait lists    */
;;;153                pevent->OSEventTbl[y_new] |= bitx_new;
;;;154                pevents++;
;;;155                pevent                     = *pevents;
;;;156            }
;;;157        }
;;;158    #endif
;;;159    #endif
;;;160    
;;;161        ptcb->OSTCBPrio = newprio;                              /* Set new task priority                   */
;;;162        ptcb->OSTCBY    = y_new;
;;;163        ptcb->OSTCBX    = x_new;
;;;164        ptcb->OSTCBBitY = bity_new;
;;;165        ptcb->OSTCBBitX = bitx_new;
;;;166        OS_EXIT_CRITICAL();
;;;167        if (OSRunning == OS_TRUE) {
;;;168            OS_Sched();                                         /* Find new highest priority task          */
;;;169        }
;;;170        return (OS_ERR_NONE);
;;;171    }
00001a  e8bde8bd          POP      {r4-r12,pc}
                  |L1.30|
00001e  2cff              CMP      r4,#0xff              ;95
000020  d103              BNE      |L1.42|
000022  4af6              LDR      r2,|L1.1020|
000024  6812              LDR      r2,[r2,#0]            ;96  ; OSTCBCur
000026  f892f892          LDRB     r4,[r2,#0x32]         ;96
                  |L1.42|
00002a  f851f851          LDR      r2,[r1,r4,LSL #2]     ;98
00002e  b91a              CBNZ     r2,|L1.56|
000030  f7fff7ff          BL       OS_CPU_SR_Restore
000034  2029              MOVS     r0,#0x29              ;101
000036  e7f0              B        |L1.26|
                  |L1.56|
000038  2a01              CMP      r2,#1                 ;103
00003a  d103              BNE      |L1.68|
00003c  f7fff7ff          BL       OS_CPU_SR_Restore
000040  2043              MOVS     r0,#0x43              ;105
000042  e7ea              B        |L1.26|
                  |L1.68|
000044  08fb              LSRS     r3,r7,#3              ;108
000046  f007f007          AND      r10,r7,#7             ;109
00004a  2501              MOVS     r5,#1                 ;110
00004c  fa05fa05          LSL      r6,r5,r3              ;110
000050  b2f6              UXTB     r6,r6                 ;110
000052  fa05fa05          LSL      r5,r5,r10             ;111
000056  f005f005          AND      r12,r5,#0xff          ;111
00005a  2500              MOVS     r5,#0                 ;119
00005c  f841f841          STR      r5,[r1,r4,LSL #2]     ;119
000060  f841f841          STR      r2,[r1,r7,LSL #2]     ;120
000064  f892f892          LDRB     r5,[r2,#0x34]         ;121
000068  f892f892          LDRB     r9,[r2,#0x36]         ;122
00006c  f892f892          LDRB     lr,[r2,#0x35]         ;123
000070  4ce3              LDR      r4,|L1.1024|
000072  5d61              LDRB     r1,[r4,r5]            ;124
000074  ea11ea11          TST      r1,lr                 ;124
000078  d015              BEQ      |L1.166|
00007a  ea21ea21          BIC      r1,r1,lr              ;125
00007e  5561              STRB     r1,[r4,r5]            ;125
000080  5d61              LDRB     r1,[r4,r5]            ;126
000082  f8dff8df          LDR      r8,|L1.1028|
000086  b929              CBNZ     r1,|L1.148|
000088  f898f898          LDRB     r1,[r8,#0]            ;127  ; OSRdyGrp
00008c  ea21ea21          BIC      r1,r1,r9              ;127
000090  f888f888          STRB     r1,[r8,#0]            ;127  ; OSRdyGrp
                  |L1.148|
000094  f898f898          LDRB     r1,[r8,#0]            ;129  ; OSRdyGrp
000098  4331              ORRS     r1,r1,r6              ;129
00009a  f888f888          STRB     r1,[r8,#0]            ;129  ; OSRdyGrp
00009e  5ce1              LDRB     r1,[r4,r3]            ;130
0000a0  ea41ea41          ORR      r1,r1,r12             ;130
0000a4  54e1              STRB     r1,[r4,r3]            ;130
                  |L1.166|
0000a6  69d1              LDR      r1,[r2,#0x1c]         ;134
0000a8  b1a1              CBZ      r1,|L1.212|
0000aa  194c              ADDS     r4,r1,r5              ;136
0000ac  f894f894          LDRB     r8,[r4,#0xb]          ;136
0000b0  ea28ea28          BIC      r8,r8,lr              ;136
0000b4  f884f884          STRB     r8,[r4,#0xb]          ;136
0000b8  7ae4              LDRB     r4,[r4,#0xb]          ;137
0000ba  b91c              CBNZ     r4,|L1.196|
0000bc  7a8c              LDRB     r4,[r1,#0xa]          ;138
0000be  ea24ea24          BIC      r4,r4,r9              ;138
0000c2  728c              STRB     r4,[r1,#0xa]          ;138
                  |L1.196|
0000c4  7a8c              LDRB     r4,[r1,#0xa]          ;140
0000c6  4334              ORRS     r4,r4,r6              ;140
0000c8  728c              STRB     r4,[r1,#0xa]          ;140
0000ca  4419              ADD      r1,r1,r3              ;141
0000cc  7acc              LDRB     r4,[r1,#0xb]          ;141
0000ce  ea44ea44          ORR      r4,r4,r12             ;141
0000d2  72cc              STRB     r4,[r1,#0xb]          ;141
                  |L1.212|
0000d4  6a14              LDR      r4,[r2,#0x20]         ;144
0000d6  b32c              CBZ      r4,|L1.292|
0000d8  6821              LDR      r1,[r4,#0]            ;146
0000da  e021              B        |L1.288|
                  |L1.220|
0000dc  eb01eb01          ADD      r8,r1,r5              ;148
0000e0  f898f898          LDRB     r11,[r8,#0xb]         ;148
0000e4  ea2bea2b          BIC      r11,r11,lr            ;148
0000e8  f888f888          STRB     r11,[r8,#0xb]         ;148
0000ec  f898f898          LDRB     r8,[r8,#0xb]          ;149
0000f0  f1b8f1b8          CMP      r8,#0                 ;149
0000f4  d105              BNE      |L1.258|
0000f6  f891f891          LDRB     r8,[r1,#0xa]          ;150
0000fa  ea28ea28          BIC      r8,r8,r9              ;150
0000fe  f881f881          STRB     r8,[r1,#0xa]          ;150
                  |L1.258|
000102  f891f891          LDRB     r8,[r1,#0xa]          ;152
000106  ea48ea48          ORR      r8,r8,r6              ;152
00010a  f881f881          STRB     r8,[r1,#0xa]          ;152
00010e  4419              ADD      r1,r1,r3              ;153
000110  f891f891          LDRB     r8,[r1,#0xb]          ;153
000114  ea48ea48          ORR      r8,r8,r12             ;153
000118  f881f881          STRB     r8,[r1,#0xb]          ;153
00011c  f854f854          LDR      r1,[r4,#4]!           ;155
                  |L1.288|
000120  2900              CMP      r1,#0                 ;147
000122  d1db              BNE      |L1.220|
                  |L1.292|
000124  f802f802          STRB     r7,[r2,#0x32]!        ;161
000128  7093              STRB     r3,[r2,#2]            ;162
00012a  f882f882          STRB     r10,[r2,#1]           ;163
00012e  7116              STRB     r6,[r2,#4]            ;164
000130  f882f882          STRB     r12,[r2,#3]           ;165
000134  f7fff7ff          BL       OS_CPU_SR_Restore
000138  48b3              LDR      r0,|L1.1032|
00013a  7800              LDRB     r0,[r0,#0]            ;167  ; OSRunning
00013c  2801              CMP      r0,#1                 ;167
00013e  d101              BNE      |L1.324|
000140  f7fff7ff          BL       OS_Sched
                  |L1.324|
000144  2000              MOVS     r0,#0                 ;170
000146  e768              B        |L1.26|
;;;172    #endif
                          ENDP

⌨️ 快捷键说明

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