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

📄 os_task.txt

📁 stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;606    }
000394  bd10              POP      {r4,pc}
                  |L1.918|
000396  2cff              CMP      r4,#0xff              ;587
000398  d109              BNE      |L1.942|
00039a  f7fff7ff          BL       OS_CPU_SR_Save
00039e  4917              LDR      r1,|L1.1020|
0003a0  6809              LDR      r1,[r1,#0]            ;589  ; OSTCBCur
0003a2  f891f891          LDRB     r4,[r1,#0x37]         ;589
0003a6  f7fff7ff          BL       OS_CPU_SR_Restore
0003aa  4620              MOV      r0,r4                 ;591
0003ac  bd10              POP      {r4,pc}
                  |L1.942|
0003ae  f7fff7ff          BL       OS_CPU_SR_Save
0003b2  4911              LDR      r1,|L1.1016|
0003b4  f851f851          LDR      r1,[r1,r4,LSL #2]     ;594
0003b8  b919              CBNZ     r1,|L1.962|
0003ba  f7fff7ff          BL       OS_CPU_SR_Restore
0003be  2043              MOVS     r0,#0x43              ;597
0003c0  bd10              POP      {r4,pc}
                  |L1.962|
0003c2  2901              CMP      r1,#1                 ;599
0003c4  d103              BNE      |L1.974|
0003c6  f7fff7ff          BL       OS_CPU_SR_Restore
0003ca  203d              MOVS     r0,#0x3d              ;601
0003cc  bd10              POP      {r4,pc}
                  |L1.974|
0003ce  223f              MOVS     r2,#0x3f              ;603
0003d0  f881f881          STRB     r2,[r1,#0x37]         ;603
0003d4  f7fff7ff          BL       OS_CPU_SR_Restore
0003d8  2000              MOVS     r0,#0                 ;605
0003da  bd10              POP      {r4,pc}
;;;607    #endif
                          ENDP

                  OSTaskNameGet PROC
;;;635    INT8U  OSTaskNameGet (INT8U prio, INT8U *pname, INT8U *perr)
;;;636    {
0003dc  e92de92d          PUSH     {r4-r8,lr}
0003e0  4606              MOV      r6,r0
0003e2  460f              MOV      r7,r1
0003e4  4615              MOV      r5,r2
;;;637        OS_TCB    *ptcb;
;;;638        INT8U      len;
;;;639    #if OS_CRITICAL_METHOD == 3                              /* Allocate storage for CPU status register   */
;;;640        OS_CPU_SR  cpu_sr = 0;
;;;641    #endif
;;;642    
;;;643    
;;;644    
;;;645    #if OS_ARG_CHK_EN > 0
;;;646        if (perr == (INT8U *)0) {                            /* Validate 'perr'                            */
;;;647            return (0);
;;;648        }
;;;649        if (prio > OS_LOWEST_PRIO) {                         /* Task priority valid ?                      */
;;;650            if (prio != OS_PRIO_SELF) {
;;;651                *perr = OS_ERR_PRIO_INVALID;                 /* No                                         */
;;;652                return (0);
;;;653            }
;;;654        }
;;;655        if (pname == (INT8U *)0) {                           /* Is 'pname' a NULL pointer?                 */
;;;656            *perr = OS_ERR_PNAME_NULL;                       /* Yes                                        */
;;;657            return (0);
;;;658        }
;;;659    #endif
;;;660        if (OSIntNesting > 0) {                              /* See if trying to call from an ISR          */
0003e6  4809              LDR      r0,|L1.1036|
0003e8  7800              LDRB     r0,[r0,#0]  ; OSIntNesting
0003ea  b1c8              CBZ      r0,|L1.1056|
;;;661            *perr = OS_ERR_NAME_GET_ISR;
0003ec  2011              MOVS     r0,#0x11
0003ee  7028              STRB     r0,[r5,#0]
;;;662            return (0);
0003f0  2000              MOVS     r0,#0
                  |L1.1010|
;;;663        }
;;;664        OS_ENTER_CRITICAL();
;;;665        if (prio == OS_PRIO_SELF) {                          /* See if caller desires it's own name        */
;;;666            prio = OSTCBCur->OSTCBPrio;
;;;667        }
;;;668        ptcb = OSTCBPrioTbl[prio];
;;;669        if (ptcb == (OS_TCB *)0) {                           /* Does task exist?                           */
;;;670            OS_EXIT_CRITICAL();                              /* No                                         */
;;;671            *perr = OS_ERR_TASK_NOT_EXIST;
;;;672            return (0);
;;;673        }
;;;674        if (ptcb == OS_TCB_RESERVED) {                       /* Task assigned to a Mutex?                  */
;;;675            OS_EXIT_CRITICAL();                              /* Yes                                        */
;;;676            *perr = OS_ERR_TASK_NOT_EXIST;
;;;677            return (0);
;;;678        }
;;;679        len   = OS_StrCopy(pname, ptcb->OSTCBTaskName);      /* Yes, copy name from TCB                    */
;;;680        OS_EXIT_CRITICAL();
;;;681        *perr = OS_ERR_NONE;
;;;682        return (len);
;;;683    }
0003f2  e8bde8bd          POP      {r4-r8,pc}
0003f6  0000              DCW      0x0000
                  |L1.1016|
0003f8  00000000          DCD      OSTCBPrioTbl
                  |L1.1020|
0003fc  00000000          DCD      OSTCBCur
                  |L1.1024|
000400  00000000          DCD      OSRdyTbl
                  |L1.1028|
000404  00000000          DCD      OSRdyGrp
                  |L1.1032|
000408  00000000          DCD      OSRunning
                  |L1.1036|
00040c  00000000          DCD      OSIntNesting
                  |L1.1040|
000410  00000000          DCD      OSLockNesting
                  |L1.1044|
000414  00000000          DCD      OSTaskCtr
                  |L1.1048|
000418  00000000          DCD      OSTCBList
                  |L1.1052|
00041c  00000000          DCD      OSTCBFreeList
                  |L1.1056|
000420  f7fff7ff          BL       OS_CPU_SR_Save
000424  4604              MOV      r4,r0                 ;664
000426  2eff              CMP      r6,#0xff              ;665
000428  d103              BNE      |L1.1074|
00042a  489c              LDR      r0,|L1.1692|
00042c  6800              LDR      r0,[r0,#0]            ;666  ; OSTCBCur
00042e  f890f890          LDRB     r6,[r0,#0x32]         ;666
                  |L1.1074|
000432  489b              LDR      r0,|L1.1696|
000434  f850f850          LDR      r1,[r0,r6,LSL #2]     ;668
000438  2643              MOVS     r6,#0x43              ;669
00043a  b929              CBNZ     r1,|L1.1096|
00043c  4620              MOV      r0,r4                 ;670
00043e  f7fff7ff          BL       OS_CPU_SR_Restore
000442  702e              STRB     r6,[r5,#0]            ;671
000444  2000              MOVS     r0,#0                 ;672
000446  e7d4              B        |L1.1010|
                  |L1.1096|
000448  2901              CMP      r1,#1                 ;674
00044a  d105              BNE      |L1.1112|
00044c  4620              MOV      r0,r4                 ;675
00044e  f7fff7ff          BL       OS_CPU_SR_Restore
000452  702e              STRB     r6,[r5,#0]            ;676
000454  2000              MOVS     r0,#0                 ;677
000456  e7cc              B        |L1.1010|
                  |L1.1112|
000458  314c              ADDS     r1,r1,#0x4c           ;679
00045a  4638              MOV      r0,r7                 ;679
00045c  f7fff7ff          BL       OS_StrCopy
000460  4606              MOV      r6,r0                 ;679
000462  4620              MOV      r0,r4                 ;680
000464  f7fff7ff          BL       OS_CPU_SR_Restore
000468  2000              MOVS     r0,#0                 ;681
00046a  7028              STRB     r0,[r5,#0]            ;681
00046c  4630              MOV      r0,r6                 ;682
00046e  e7c0              B        |L1.1010|
;;;684    #endif
                          ENDP

                  OSTaskNameSet PROC
;;;714    void  OSTaskNameSet (INT8U prio, INT8U *pname, INT8U *perr)
;;;715    {
000470  e92de92d          PUSH     {r4-r8,lr}
000474  4605              MOV      r5,r0
000476  460f              MOV      r7,r1
000478  4614              MOV      r4,r2
;;;716        INT8U      len;
;;;717        OS_TCB    *ptcb;
;;;718    #if OS_CRITICAL_METHOD == 3                          /* Allocate storage for CPU status register       */
;;;719        OS_CPU_SR  cpu_sr = 0;
;;;720    #endif
;;;721    
;;;722    
;;;723    
;;;724    #if OS_ARG_CHK_EN > 0
;;;725        if (perr == (INT8U *)0) {                        /* Validate 'perr'                                */
;;;726            return;
;;;727        }
;;;728        if (prio > OS_LOWEST_PRIO) {                     /* Task priority valid ?                          */
;;;729            if (prio != OS_PRIO_SELF) {
;;;730                *perr = OS_ERR_PRIO_INVALID;             /* No                                             */
;;;731                return;
;;;732            }
;;;733        }
;;;734        if (pname == (INT8U *)0) {                       /* Is 'pname' a NULL pointer?                     */
;;;735            *perr = OS_ERR_PNAME_NULL;                   /* Yes                                            */
;;;736            return;
;;;737        }
;;;738    #endif
;;;739        if (OSIntNesting > 0) {                          /* See if trying to call from an ISR              */
00047a  488a              LDR      r0,|L1.1700|
00047c  7800              LDRB     r0,[r0,#0]  ; OSIntNesting
00047e  b110              CBZ      r0,|L1.1158|
;;;740            *perr = OS_ERR_NAME_SET_ISR;
000480  2012              MOVS     r0,#0x12
000482  7020              STRB     r0,[r4,#0]
;;;741            return;
;;;742        }
;;;743        OS_ENTER_CRITICAL();
;;;744        if (prio == OS_PRIO_SELF) {                      /* See if caller desires to set it's own name     */
;;;745            prio = OSTCBCur->OSTCBPrio;
;;;746        }
;;;747        ptcb = OSTCBPrioTbl[prio];
;;;748        if (ptcb == (OS_TCB *)0) {                       /* Does task exist?                               */
;;;749            OS_EXIT_CRITICAL();                          /* No                                             */
;;;750            *perr = OS_ERR_TASK_NOT_EXIST;
;;;751            return;
;;;752        }
;;;753        if (ptcb == OS_TCB_RESERVED) {                   /* Task assigned to a Mutex?                      */
;;;754            OS_EXIT_CRITICAL();                          /* Yes                                            */
;;;755            *perr = OS_ERR_TASK_NOT_EXIST;
;;;756            return;
;;;757        }
;;;758        len = OS_StrLen(pname);                          /* Yes, Can we fit the string in the TCB?         */
;;;759        if (len > (OS_TASK_NAME_SIZE - 1)) {             /*      No                                        */
;;;760            OS_EXIT_CRITICAL();
;;;761            *perr = OS_ERR_TASK_NAME_TOO_LONG;
;;;762            return;
;;;763        }
;;;764        (void)OS_StrCopy(ptcb->OSTCBTaskName, pname);    /*      Yes, copy to TCB                          */
;;;765        OS_EXIT_CRITICAL();
;;;766        *perr = OS_ERR_NONE;
;;;767    }
000484  e7b5              B        |L1.1010|
                  |L1.1158|
000486  f7fff7ff          BL       OS_CPU_SR_Save
00048a  4606              MOV      r6,r0                 ;743
00048c  2dff              CMP      r5,#0xff              ;744
00048e  d103              BNE      |L1.1176|
000490  4882              LDR      r0,|L1.1692|
000492  6800              LDR      r0,[r0,#0]            ;745  ; OSTCBCur
000494  f890f890          LDRB     r5,[r0,#0x32]         ;745
                  |L1.1176|
000498  4881              LDR      r0,|L1.1696|
00049a  f850f850          LDR      r5,[r0,r5,LSL #2]     ;747
00049e  f04ff04f          MOV      r8,#0x43              ;748
0004a2  b92d              CBNZ     r5,|L1.1200|
0004a4  4630              MOV      r0,r6                 ;749
0004a6  f7fff7ff          BL       OS_CPU_SR_Restore
0004aa  f884f884          STRB     r8,[r4,#0]            ;750
0004ae  e7a0              B        |L1.1010|
                  |L1.1200|
0004b0  2d01              CMP      r5,#1                 ;753
0004b2  d105              BNE      |L1.1216|
0004b4  4630              MOV      r0,r6                 ;754
0004b6  f7fff7ff          BL       OS_CPU_SR_Restore
0004ba  f884f884          STRB     r8,[r4,#0]            ;755
0004be  e798              B        |L1.1010|
                  |L1.1216|
0004c0  4638              MOV      r0,r7                 ;758
0004c2  f7fff7ff          BL       OS_StrLen
0004c6  280f              CMP      r0,#0xf               ;759
0004c8  d905              BLS      |L1.1238|
0004ca  4630              MOV      r0,r6                 ;760
0004cc  f7fff7ff          BL       OS_CPU_SR_Restore
0004d0  2041              MOVS     r0,#0x41              ;761
0004d2  7020              STRB     r0,[r4,#0]            ;761

⌨️ 快捷键说明

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