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

📄 os_flag.txt

📁 stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0001ac  f8dff8df          LDR      r10,|L1.1200|
0001b0  f04ff04f          MOV      r9,#0x3f              ;319
0001b4  f04ff04f          MOV      r11,#0                ;319
0001b8  d002              BEQ      |L1.448|
0001ba  2801              CMP      r0,#1                 ;319
0001bc  d13b              BNE      |L1.566|
0001be  e020              B        |L1.514|
                  |L1.448|
0001c0  b99f              CBNZ     r7,|L1.490|
0001c2  f884f884          STRB     r9,[r4,#0xa]          ;323
0001c6  f884f884          STRB     r11,[r4,#0xb]         ;324
0001ca  f884f884          STRB     r11,[r4,#0]           ;326
0001ce  f8daf8da          LDR      r0,[r10,#0]           ;327  ; OSFlagFreeList
0001d2  6060              STR      r0,[r4,#4]            ;327
0001d4  f8a4f8a4          STRH     r11,[r4,#8]           ;328
0001d8  f8caf8ca          STR      r4,[r10,#0]           ;329  ; OSFlagFreeList
0001dc  4640              MOV      r0,r8                 ;330
0001de  f7fff7ff          BL       OS_CPU_SR_Restore
0001e2  f886f886          STRB     r11,[r6,#0]           ;331
0001e6  2000              MOVS     r0,#0                 ;332
0001e8  e7cd              B        |L1.390|
                  |L1.490|
0001ea  4640              MOV      r0,r8                 ;334
0001ec  f7fff7ff          BL       OS_CPU_SR_Restore
0001f0  2049              MOVS     r0,#0x49              ;335
0001f2  7030              STRB     r0,[r6,#0]            ;335
0001f4  4620              MOV      r0,r4                 ;336
0001f6  e7c6              B        |L1.390|
                  |L1.504|
0001f8  2100              MOVS     r1,#0                 ;343
0001fa  4628              MOV      r0,r5                 ;343
0001fc  f7fff7ff          BL       OS_FlagTaskRdy
000200  682d              LDR      r5,[r5,#0]            ;344
                  |L1.514|
000202  2d00              CMP      r5,#0                 ;342
000204  d1f8              BNE      |L1.504|
000206  f884f884          STRB     r9,[r4,#0xa]          ;347
00020a  f884f884          STRB     r11,[r4,#0xb]         ;348
00020e  f884f884          STRB     r11,[r4,#0]           ;350
000212  f8daf8da          LDR      r0,[r10,#0]           ;351  ; OSFlagFreeList
000216  6060              STR      r0,[r4,#4]            ;351
000218  f8a4f8a4          STRH     r11,[r4,#8]           ;352
00021c  f8caf8ca          STR      r4,[r10,#0]           ;353  ; OSFlagFreeList
000220  4640              MOV      r0,r8                 ;354
000222  f7fff7ff          BL       OS_CPU_SR_Restore
000226  2f01              CMP      r7,#1                 ;355
000228  d101              BNE      |L1.558|
00022a  f7fff7ff          BL       OS_Sched
                  |L1.558|
00022e  f886f886          STRB     r11,[r6,#0]           ;358
000232  2000              MOVS     r0,#0                 ;359
000234  e7a7              B        |L1.390|
                  |L1.566|
000236  4640              MOV      r0,r8                 ;363
000238  f7fff7ff          BL       OS_CPU_SR_Restore
00023c  2007              MOVS     r0,#7                 ;364
00023e  7030              STRB     r0,[r6,#0]            ;364
000240  4620              MOV      r0,r4                 ;365
000242  e7a0              B        |L1.390|
;;;370    #endif
                          ENDP

                  OSFlagNameGet PROC
;;;396    INT8U  OSFlagNameGet (OS_FLAG_GRP *pgrp, INT8U *pname, INT8U *perr)
;;;397    {
000244  e92de92d          PUSH     {r4-r8,lr}
000248  4606              MOV      r6,r0
00024a  460f              MOV      r7,r1
00024c  4615              MOV      r5,r2
;;;398        INT8U      len;
;;;399    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;400        OS_CPU_SR  cpu_sr = 0;
;;;401    #endif
;;;402    
;;;403    
;;;404    
;;;405    #if OS_ARG_CHK_EN > 0
;;;406        if (perr == (INT8U *)0) {                    /* Validate 'perr'                                    */
;;;407            return (0);
;;;408        }
;;;409        if (pgrp == (OS_FLAG_GRP *)0) {              /* Is 'pgrp' a NULL pointer?                          */
;;;410            *perr = OS_ERR_FLAG_INVALID_PGRP;
;;;411            return (0);
;;;412        }
;;;413        if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
;;;414            *perr = OS_ERR_PNAME_NULL;
;;;415            return (0);
;;;416        }
;;;417    #endif
;;;418        if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
00024e  4897              LDR      r0,|L1.1196|
000250  7800              LDRB     r0,[r0,#0]  ; OSIntNesting
000252  b118              CBZ      r0,|L1.604|
;;;419            *perr = OS_ERR_NAME_GET_ISR;
000254  2011              MOVS     r0,#0x11
000256  7028              STRB     r0,[r5,#0]
;;;420            return (0);
000258  2000              MOVS     r0,#0
;;;421        }
;;;422        OS_ENTER_CRITICAL();
;;;423        if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
;;;424            OS_EXIT_CRITICAL();
;;;425            *perr = OS_ERR_EVENT_TYPE;
;;;426            return (0);
;;;427        }
;;;428        len   = OS_StrCopy(pname, pgrp->OSFlagName); /* Copy name from OS_FLAG_GRP                         */
;;;429        OS_EXIT_CRITICAL();
;;;430        *perr = OS_ERR_NONE;
;;;431        return (len);
;;;432    }
00025a  e6dd              B        |L1.24|
                  |L1.604|
00025c  f7fff7ff          BL       OS_CPU_SR_Save
000260  4604              MOV      r4,r0                 ;422
000262  7830              LDRB     r0,[r6,#0]            ;423
000264  2805              CMP      r0,#5                 ;423
000266  d006              BEQ      |L1.630|
000268  4620              MOV      r0,r4                 ;424
00026a  f7fff7ff          BL       OS_CPU_SR_Restore
00026e  2001              MOVS     r0,#1                 ;425
000270  7028              STRB     r0,[r5,#0]            ;425
000272  2000              MOVS     r0,#0                 ;426
000274  e6d0              B        |L1.24|
                  |L1.630|
000276  f106f106          ADD      r1,r6,#0xa            ;428
00027a  4638              MOV      r0,r7                 ;428
00027c  f7fff7ff          BL       OS_StrCopy
000280  4606              MOV      r6,r0                 ;428
000282  4620              MOV      r0,r4                 ;429
000284  f7fff7ff          BL       OS_CPU_SR_Restore
000288  2000              MOVS     r0,#0                 ;430
00028a  7028              STRB     r0,[r5,#0]            ;430
00028c  4630              MOV      r0,r6                 ;431
00028e  e6c3              B        |L1.24|
;;;433    #endif
                          ENDP

                  OSFlagNameSet PROC
;;;460    void  OSFlagNameSet (OS_FLAG_GRP *pgrp, INT8U *pname, INT8U *perr)
;;;461    {
000290  e92de92d          PUSH     {r4-r8,lr}
000294  4605              MOV      r5,r0
000296  460f              MOV      r7,r1
000298  4614              MOV      r4,r2
;;;462        INT8U      len;
;;;463    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;464        OS_CPU_SR  cpu_sr = 0;
;;;465    #endif
;;;466    
;;;467    
;;;468    
;;;469    #if OS_ARG_CHK_EN > 0
;;;470        if (perr == (INT8U *)0) {                    /* Validate 'perr'                                    */
;;;471            return;
;;;472        }
;;;473        if (pgrp == (OS_FLAG_GRP *)0) {              /* Is 'pgrp' a NULL pointer?                          */
;;;474            *perr = OS_ERR_FLAG_INVALID_PGRP;
;;;475            return;
;;;476        }
;;;477        if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
;;;478            *perr = OS_ERR_PNAME_NULL;
;;;479            return;
;;;480        }
;;;481    #endif
;;;482        if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
00029a  4884              LDR      r0,|L1.1196|
00029c  7800              LDRB     r0,[r0,#0]  ; OSIntNesting
00029e  b110              CBZ      r0,|L1.678|
;;;483            *perr = OS_ERR_NAME_SET_ISR;
0002a0  2012              MOVS     r0,#0x12
0002a2  7020              STRB     r0,[r4,#0]
;;;484            return;
;;;485        }
;;;486        OS_ENTER_CRITICAL();
;;;487        if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
;;;488            OS_EXIT_CRITICAL();
;;;489            *perr = OS_ERR_EVENT_TYPE;
;;;490            return;
;;;491        }
;;;492        len = OS_StrLen(pname);                      /* Can we fit the string in the storage area?         */
;;;493        if (len > (OS_FLAG_NAME_SIZE - 1)) {         /* No                                                 */
;;;494            OS_EXIT_CRITICAL();
;;;495            *perr = OS_ERR_FLAG_NAME_TOO_LONG;
;;;496            return;
;;;497        }
;;;498        (void)OS_StrCopy(pgrp->OSFlagName, pname);   /* Yes, copy name from OS_FLAG_GRP                    */
;;;499        OS_EXIT_CRITICAL();
;;;500        *perr = OS_ERR_NONE;
;;;501        return;
;;;502    }
0002a4  e6b8              B        |L1.24|
                  |L1.678|
0002a6  f7fff7ff          BL       OS_CPU_SR_Save
0002aa  4606              MOV      r6,r0                 ;486
0002ac  7828              LDRB     r0,[r5,#0]            ;487
0002ae  2805              CMP      r0,#5                 ;487
0002b0  d005              BEQ      |L1.702|
0002b2  4630              MOV      r0,r6                 ;488
0002b4  f7fff7ff          BL       OS_CPU_SR_Restore
0002b8  2001              MOVS     r0,#1                 ;489
0002ba  7020              STRB     r0,[r4,#0]            ;489
0002bc  e6ac              B        |L1.24|
                  |L1.702|
0002be  4638              MOV      r0,r7                 ;492
0002c0  f7fff7ff          BL       OS_StrLen
0002c4  280f              CMP      r0,#0xf               ;493
0002c6  d905              BLS      |L1.724|
0002c8  4630              MOV      r0,r6                 ;494
0002ca  f7fff7ff          BL       OS_CPU_SR_Restore
0002ce  2073              MOVS     r0,#0x73              ;495
0002d0  7020              STRB     r0,[r4,#0]            ;495
0002d2  e6a1              B        |L1.24|
                  |L1.724|
0002d4  4639              MOV      r1,r7                 ;498
0002d6  f105f105          ADD      r0,r5,#0xa            ;498
0002da  f7fff7ff          BL       OS_StrCopy
0002de  4630              MOV      r0,r6                 ;499
0002e0  f7fff7ff          BL       OS_CPU_SR_Restore
0002e4  2000              MOVS     r0,#0                 ;500
0002e6  7020              STRB     r0,[r4,#0]            ;500
0002e8  e696              B        |L1.24|
;;;503    #endif
                          ENDP

                  OS_FlagBlock PROC
;;;988    static  void  OS_FlagBlock (OS_FLAG_GRP *pgrp, OS_FLAG_NODE *pnode, OS_FLAGS flags, INT8U wait_type, INT16U timeout)
;;;989    {
0002ea  b5f0              PUSH     {r4-r7,lr}
0002ec  9f05              LDR      r7,[sp,#0x14]
;;;990        OS_FLAG_NODE  *pnode_next;
;;;991        INT8U          y;
;;;992    
;;;993    
;;;994        OSTCBCur->OSTCBStat      |= OS_STAT_FLAG;
0002ee  4d73              LDR      r5,|L1.1212|
0002f0  682c              LDR      r4,[r5,#0]  ; OSTCBCur
0002f2  3428              ADDS     r4,r4,#0x28
0002f4  7a26              LDRB     r6,[r4,#8]
0002f6  f046f046          ORR      r6,r6,#0x20
0002fa  7226              STRB     r6,[r4,#8]
;;;995        OSTCBCur->OSTCBStatPend   = OS_STAT_PEND_OK;
0002fc  2600              MOVS     r6,#0
0002fe  7266              STRB     r6,[r4,#9]
;;;996        OSTCBCur->OSTCBDly        = timeout;              /* Store timeout in task's TCB                   */
000300  80e7              STRH     r7,[r4,#6]
;;;997    #if OS_TASK_DEL_EN > 0
;;;998        OSTCBCur->OSTCBFlagNode   = pnode;                /* TCB to link to node                           */

⌨️ 快捷键说明

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