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

📄 os_flag.txt

📁 IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4.42的应用实例代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;646                 }
;;;647                 break;
;;;648    
;;;649            case OS_FLAG_WAIT_CLR_ANY:
;;;650                 flags_rdy = (OS_FLAGS)(~pgrp->OSFlagFlags & flags); /* Extract only the bits we want      */
;;;651                 if (flags_rdy != (OS_FLAGS)0) {               /* See if any flag cleared                  */
;;;652                     if (consume == OS_TRUE) {                 /* See if we need to consume the flags      */
;;;653                         pgrp->OSFlagFlags |= flags_rdy;       /* Set ONLY the flags that we got           */
;;;654                     }
;;;655                     OSTCBCur->OSTCBFlagsRdy = flags_rdy;      /* Save flags that were ready               */
;;;656                     OS_EXIT_CRITICAL();                       /* Yes, condition met, return to caller     */
;;;657                     *err                    = OS_ERR_NONE;
;;;658                     return (flags_rdy);
;;;659                 } else {                                      /* Block task until events occur or timeout */
;;;660                     OS_FlagBlock(pgrp, &node, flags, wait_type, timeout);
;;;661                     OS_EXIT_CRITICAL();
;;;662                 }
;;;663                 break;
;;;664    #endif
;;;665    
;;;666            default:
;;;667                 OS_EXIT_CRITICAL();
;;;668                 flags_rdy = (OS_FLAGS)0;
;;;669                 *err      = OS_ERR_FLAG_WAIT_TYPE;
;;;670                 return (flags_rdy);
;;;671        }
;;;672    /*$PAGE*/
;;;673        OS_Sched();                                            /* Find next HPT ready to run               */
;;;674        OS_ENTER_CRITICAL();
;;;675        if (OSTCBCur->OSTCBStatPend != OS_STAT_PEND_OK) {      /* Have we timed-out or aborted?            */
;;;676            pend_stat                = OSTCBCur->OSTCBStatPend;
;;;677            OSTCBCur->OSTCBStatPend  = OS_STAT_PEND_OK;
;;;678            OS_FlagUnlink(&node);
;;;679            OSTCBCur->OSTCBStat      = OS_STAT_RDY;            /* Yes, make task ready-to-run              */
;;;680            OS_EXIT_CRITICAL();
;;;681            flags_rdy                = (OS_FLAGS)0;
;;;682            switch (pend_stat) {
;;;683                case OS_STAT_PEND_TO:
;;;684                default:
;;;685                     *err = OS_ERR_TIMEOUT;                    /* Indicate that we timed-out waiting       */
;;;686                     break;
;;;687    
;;;688                case OS_STAT_PEND_ABORT:
;;;689                     *err = OS_ERR_PEND_ABORT;                 /* Indicate that we aborted   waiting       */
;;;690                     break;
;;;691            }
;;;692            return (flags_rdy);
;;;693        }
;;;694        flags_rdy = OSTCBCur->OSTCBFlagsRdy;
;;;695        if (consume == OS_TRUE) {                              /* See if we need to consume the flags      */
;;;696            switch (wait_type) {
;;;697                case OS_FLAG_WAIT_SET_ALL:
;;;698                case OS_FLAG_WAIT_SET_ANY:                     /* Clear ONLY the flags we got              */
;;;699                     pgrp->OSFlagFlags &= ~flags_rdy;
;;;700                     break;
;;;701    
;;;702    #if OS_FLAG_WAIT_CLR_EN > 0
;;;703                case OS_FLAG_WAIT_CLR_ALL:
;;;704                case OS_FLAG_WAIT_CLR_ANY:                     /* Set   ONLY the flags we got              */
;;;705                     pgrp->OSFlagFlags |=  flags_rdy;
;;;706                     break;
;;;707    #endif
;;;708                default:
;;;709                     OS_EXIT_CRITICAL();
;;;710                     *err = OS_ERR_FLAG_WAIT_TYPE;
;;;711                     return ((OS_FLAGS)0);
;;;712            }
;;;713        }
;;;714        OS_EXIT_CRITICAL();
;;;715        *err = OS_ERR_NONE;                                    /* Event(s) must have occurred              */
;;;716        return (flags_rdy);
;;;717    }
0007f8  e12fff1e          BX       lr
                  |L1.2044|
0007fc  e3540000          CMP      r4,#0
000800  1a000003          BNE      |L1.2068|
000804  e3a0006e          MOV      r0,#0x6e
000808  e5c80000          STRB     r0,[r8,#0]
00080c  e3a00000          MOV      r0,#0
000810  eafffff6          B        |L1.2032|
                  |L1.2068|
000814  e59f0748          LDR      r0,|L1.3940|
000818  e5d00000          LDRB     r0,[r0,#0]  ; OSIntNesting
00081c  e3500000          CMP      r0,#0
000820  da000003          BLE      |L1.2100|
000824  e3a00002          MOV      r0,#2
000828  e5c80000          STRB     r0,[r8,#0]
00082c  e3a00000          MOV      r0,#0
000830  eaffffee          B        |L1.2032|
                  |L1.2100|
000834  e59f073c          LDR      r0,|L1.3960|
000838  e5d00000          LDRB     r0,[r0,#0]  ; OSLockNesting
00083c  e3500000          CMP      r0,#0
000840  da000003          BLE      |L1.2132|
000844  e3a0000d          MOV      r0,#0xd
000848  e5c80000          STRB     r0,[r8,#0]
00084c  e3a00000          MOV      r0,#0
000850  eaffffe6          B        |L1.2032|
                  |L1.2132|
000854  e5d40000          LDRB     r0,[r4,#0]
000858  e3500005          CMP      r0,#5
00085c  0a000003          BEQ      |L1.2160|
000860  e3a00001          MOV      r0,#1
000864  e5c80000          STRB     r0,[r8,#0]
000868  e3a00000          MOV      r0,#0
00086c  eaffffdf          B        |L1.2032|
                  |L1.2160|
000870  e2060080          AND      r0,r6,#0x80
000874  e58d000c          STR      r0,[sp,#0xc]
000878  e59d000c          LDR      r0,[sp,#0xc]
00087c  e3500000          CMP      r0,#0
000880  0a000002          BEQ      |L1.2192|
000884  e3c66080          BIC      r6,r6,#0x80
000888  e3a0b001          MOV      r11,#1
00088c  ea000000          B        |L1.2196|
                  |L1.2192|
000890  e3a0b000          MOV      r11,#0
                  |L1.2196|
000894  ebfffffe          BL       OS_CPU_SR_Save
000898  e58d0008          STR      r0,[sp,#8]
00089c  e3560000          CMP      r6,#0
0008a0  0a00003e          BEQ      |L1.2464|
0008a4  e3560001          CMP      r6,#1
0008a8  0a000058          BEQ      |L1.2576|
0008ac  e3560002          CMP      r6,#2
0008b0  0a000002          BEQ      |L1.2240|
0008b4  e3560003          CMP      r6,#3
0008b8  1a000070          BNE      |L1.2688|
0008bc  ea00001b          B        |L1.2352|
                  |L1.2240|
0008c0  e1a00000          MOV      r0,r0
0008c4  e1d400b8          LDRH     r0,[r4,#8]
0008c8  e0009005          AND      r9,r0,r5
0008cc  e1590005          CMP      r9,r5
0008d0  1a00000d          BNE      |L1.2316|
0008d4  e35b0001          CMP      r11,#1
0008d8  1a000002          BNE      |L1.2280|
0008dc  e1d400b8          LDRH     r0,[r4,#8]
0008e0  e1c00009          BIC      r0,r0,r9
0008e4  e1c400b8          STRH     r0,[r4,#8]
                  |L1.2280|
0008e8  e59f0684          LDR      r0,|L1.3956|
0008ec  e5900000          LDR      r0,[r0,#0]  ; OSTCBCur
0008f0  e1c092b8          STRH     r9,[r0,#0x28]
0008f4  e59d0008          LDR      r0,[sp,#8]
0008f8  ebfffffe          BL       OS_CPU_SR_Restore
0008fc  e3a00000          MOV      r0,#0
000900  e5c80000          STRB     r0,[r8,#0]
000904  e1a00009          MOV      r0,r9
000908  eaffffb8          B        |L1.2032|
                  |L1.2316|
00090c  e1a03006          MOV      r3,r6
000910  e1a02005          MOV      r2,r5
000914  e58d7000          STR      r7,[sp,#0]
000918  e28d1010          ADD      r1,sp,#0x10
00091c  e1a00004          MOV      r0,r4
000920  ebfffffe          BL       OS_FlagBlock
000924  e59d0008          LDR      r0,[sp,#8]
000928  ebfffffe          BL       OS_CPU_SR_Restore
00092c  ea00005b          B        |L1.2720|
                  |L1.2352|
000930  e1a00000          MOV      r0,r0
000934  e1d400b8          LDRH     r0,[r4,#8]
000938  e0009005          AND      r9,r0,r5
00093c  e3590000          CMP      r9,#0
000940  0a00000d          BEQ      |L1.2428|
000944  e35b0001          CMP      r11,#1
000948  1a000002          BNE      |L1.2392|
00094c  e1d400b8          LDRH     r0,[r4,#8]
000950  e1c00009          BIC      r0,r0,r9
000954  e1c400b8          STRH     r0,[r4,#8]
                  |L1.2392|
000958  e59f0614          LDR      r0,|L1.3956|
00095c  e5900000          LDR      r0,[r0,#0]  ; OSTCBCur
000960  e1c092b8          STRH     r9,[r0,#0x28]
000964  e59d0008          LDR      r0,[sp,#8]
000968  ebfffffe          BL       OS_CPU_SR_Restore
00096c  e3a00000          MOV      r0,#0
000970  e5c80000          STRB     r0,[r8,#0]
000974  e1a00009          MOV      r0,r9
000978  eaffff9c          B        |L1.2032|
                  |L1.2428|
00097c  e1a03006          MOV      r3,r6
000980  e1a02005          MOV      r2,r5
000984  e58d7000          STR      r7,[sp,#0]
000988  e28d1010          ADD      r1,sp,#0x10
00098c  e1a00004          MOV      r0,r4
000990  ebfffffe          BL       OS_FlagBlock
000994  e59d0008          LDR      r0,[sp,#8]
000998  ebfffffe          BL       OS_CPU_SR_Restore
00099c  ea00003f          B        |L1.2720|
                  |L1.2464|
0009a0  e1a00000          MOV      r0,r0
0009a4  e1d400b8          LDRH     r0,[r4,#8]
0009a8  e1c59000          BIC      r9,r5,r0
0009ac  e1590005          CMP      r9,r5
0009b0  1a00000d          BNE      |L1.2540|
0009b4  e35b0001          CMP      r11,#1
0009b8  1a000002          BNE      |L1.2504|
0009bc  e1d400b8          LDRH     r0,[r4,#8]
0009c0  e1800009          ORR      r0,r0,r9
0009c4  e1c400b8          STRH     r0,[r4,#8]
                  |L1.2504|
0009c8  e59f05a4          LDR      r0,|L1.3956|
0009cc  e5900000          LDR      r0,[r0,#0]  ; OSTCBCur
0009d0  e1c092b8          STRH     r9,[r0,#0x28]
0009d4  e59d0008          LDR      r0,[sp,#8]
0009d8  ebfffffe          BL       OS_CPU_SR_Restore
0009dc  e3a00000          MOV      r0,#0
0009e0  e5c80000          STRB     r0,[r8,#0]
0009e4  e1a00009          MOV      r0,r9
0009e8  eaffff80          B        |L1.2032|
                  |L1.2540|
0009ec  e1a03006          MOV      r3,r6
0009f0  e1a02005          MOV      r2,r5
0009f4  e58d7000          STR      r7,[sp,#0]
0009f8  e28d1010          ADD      r1,sp,#0x10
0009fc  e1a00004          MOV      r0,r4
000a00  ebfffffe          BL       OS_FlagBlock
000a04  e59d0008          LDR      r0,[sp,#8]
000a08  ebfffffe          BL       OS_CPU_SR_Restore
000a0c  ea000023          B        |L1.2720|
                  |L1.2576|
000a10  e1a00000          MOV      r0,r0
000a14  e1d400b8          LDRH     r0,[r4,#8]
000a18  e1c59000          BIC      r9,r5,r0
000a1c  e3590000          CMP      r9,#0
000a20  0a00000d          BEQ      |L1.2652|
000a24  e35b0001          CMP      r11,#1
000a28  1a000002          BNE      |L1.2616|
000a2c  e1d400b8          LDRH     r0,[r4,#8]
000a30  e1800009          ORR      r0,r0,r9
000a34  e1c400b8          STRH     r0,[r4,#8]
                  |L1.2616|
000a38  e59f0534          LDR      r0,|L1.3956|
000a3c  e5900000          LDR      r0,[r0,#0]  ; OSTCBCur
000a40  e1c092b8          STRH     r9,[r0,#0x28]
000a44  e59d0008          LDR      r0,[sp,#8]
000a48  ebfffffe          BL       OS_CPU_SR_Restore
000a4c  e3a00000          MOV      r0,#0
000a50  e5c80000          STRB     r0,[r8,#0]
000a54  e1a00009          MOV      r0,r9
000a58  eaffff64          B        |L1.2032|
                  |L1.2652|
000a5c  e1a03006          MOV      r3,r6
000a60  e1a02005          MOV      r2,r5
000a64  e58d7000          STR      r7,[sp,#0]
000a68  e28d1010          ADD      r1,sp,#0x10
000a6c  e1a00004          MOV      r0,r4
000a70  ebfffffe          BL       OS_FlagBlock
000a74  e59d0008          LDR      r0,[sp,#8]
000a78  ebfffffe          BL       OS_CPU_SR_Restore
000a7c  ea000007          B        |L1.2720|
                  |L1.2688|
000a80  e1a00000          MOV      r0,r0
000a84  e59d0008          LDR      r0,[sp,#8]
000a88  ebfffffe          BL       OS_CPU_SR_Restore
000a8c  e3a09000          MOV      r9,#0
000a90  e3a0006f          MOV      r0,#0x6f
000a94  e5c80000          STRB     r0,[r8,#0]
000a98  e1a00009          MOV      r0,r9
000a9c  eaffff53          B        |L1.2032|
                  |L1.2720|
000aa0  e1a00000          MOV      r0,r0
000aa4  ebfffffe          BL  

⌨️ 快捷键说明

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