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

📄 os_flag.txt

📁 IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4.42的应用实例代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;354                 OS_EXIT_CRITICAL();
;;;355                 if (tasks_waiting == OS_TRUE) {               /* Reschedule only if task(s) were waiting  */
;;;356                     OS_Sched();                               /* Find highest priority task ready to run  */
;;;357                 }
;;;358                 *err = OS_ERR_NONE;
;;;359                 pgrp_return          = (OS_FLAG_GRP *)0;      /* Event Flag Group has been deleted        */
;;;360                 break;
;;;361    
;;;362            default:
;;;363                 OS_EXIT_CRITICAL();
;;;364                 *err                 = OS_ERR_INVALID_OPT;
;;;365                 pgrp_return          = pgrp;
;;;366                 break;
;;;367        }
;;;368        return (pgrp_return);
;;;369    }
0003a4  e12fff1e          BX       lr
                  |L1.936|
0003a8  e3540000          CMP      r4,#0
0003ac  1a000003          BNE      |L1.960|
0003b0  e3a0006e          MOV      r0,#0x6e
0003b4  e5c60000          STRB     r0,[r6,#0]
0003b8  e1a00004          MOV      r0,r4
0003bc  eafffff7          B        |L1.928|
                  |L1.960|
0003c0  e59f0b9c          LDR      r0,|L1.3940|
0003c4  e5d00000          LDRB     r0,[r0,#0]  ; OSIntNesting
0003c8  e3500000          CMP      r0,#0
0003cc  da000003          BLE      |L1.992|
0003d0  e3a0000f          MOV      r0,#0xf
0003d4  e5c60000          STRB     r0,[r6,#0]
0003d8  e1a00004          MOV      r0,r4
0003dc  eaffffef          B        |L1.928|
                  |L1.992|
0003e0  e5d40000          LDRB     r0,[r4,#0]
0003e4  e3500005          CMP      r0,#5
0003e8  0a000003          BEQ      |L1.1020|
0003ec  e3a00001          MOV      r0,#1
0003f0  e5c60000          STRB     r0,[r6,#0]
0003f4  e1a00004          MOV      r0,r4
0003f8  eaffffe8          B        |L1.928|
                  |L1.1020|
0003fc  ebfffffe          BL       OS_CPU_SR_Save
000400  e1a0a000          MOV      r10,r0
000404  e5940004          LDR      r0,[r4,#4]
000408  e3500000          CMP      r0,#0
00040c  0a000001          BEQ      |L1.1048|
000410  e3a07001          MOV      r7,#1
000414  ea000000          B        |L1.1052|
                  |L1.1048|
000418  e3a07000          MOV      r7,#0
                  |L1.1052|
00041c  e3550000          CMP      r5,#0
000420  0a000002          BEQ      |L1.1072|
000424  e3550001          CMP      r5,#1
000428  1a000039          BNE      |L1.1300|
00042c  ea00001a          B        |L1.1180|
                  |L1.1072|
000430  e1a00000          MOV      r0,r0
000434  e3570000          CMP      r7,#0
000438  1a000011          BNE      |L1.1156|
00043c  e3a0003f          MOV      r0,#0x3f
000440  e5c4000a          STRB     r0,[r4,#0xa]
000444  e3a00000          MOV      r0,#0
000448  e5c4000b          STRB     r0,[r4,#0xb]
00044c  e5c40000          STRB     r0,[r4,#0]
000450  e59f0b10          LDR      r0,|L1.3944|
000454  e5900000          LDR      r0,[r0,#0]  ; OSFlagFreeList
000458  e5840004          STR      r0,[r4,#4]
00045c  e3a00000          MOV      r0,#0
000460  e1c400b8          STRH     r0,[r4,#8]
000464  e59f0afc          LDR      r0,|L1.3944|
000468  e5804000          STR      r4,[r0,#0]  ; OSFlagFreeList
00046c  e1a0000a          MOV      r0,r10
000470  ebfffffe          BL       OS_CPU_SR_Restore
000474  e3a00000          MOV      r0,#0
000478  e5c60000          STRB     r0,[r6,#0]
00047c  e3a08000          MOV      r8,#0
000480  ea000004          B        |L1.1176|
                  |L1.1156|
000484  e1a0000a          MOV      r0,r10
000488  ebfffffe          BL       OS_CPU_SR_Restore
00048c  e3a00049          MOV      r0,#0x49
000490  e5c60000          STRB     r0,[r6,#0]
000494  e1a08004          MOV      r8,r4
                  |L1.1176|
000498  ea000024          B        |L1.1328|
                  |L1.1180|
00049c  e1a00000          MOV      r0,r0
0004a0  e5949004          LDR      r9,[r4,#4]
0004a4  ea000003          B        |L1.1208|
                  |L1.1192|
0004a8  e3a01000          MOV      r1,#0
0004ac  e1a00009          MOV      r0,r9
0004b0  ebfffffe          BL       OS_FlagTaskRdy
0004b4  e5999000          LDR      r9,[r9,#0]
                  |L1.1208|
0004b8  e3590000          CMP      r9,#0
0004bc  1afffff9          BNE      |L1.1192|
0004c0  e3a0003f          MOV      r0,#0x3f
0004c4  e5c4000a          STRB     r0,[r4,#0xa]
0004c8  e3a00000          MOV      r0,#0
0004cc  e5c4000b          STRB     r0,[r4,#0xb]
0004d0  e5c40000          STRB     r0,[r4,#0]
0004d4  e59f0a8c          LDR      r0,|L1.3944|
0004d8  e5900000          LDR      r0,[r0,#0]  ; OSFlagFreeList
0004dc  e5840004          STR      r0,[r4,#4]
0004e0  e3a00000          MOV      r0,#0
0004e4  e1c400b8          STRH     r0,[r4,#8]
0004e8  e59f0a78          LDR      r0,|L1.3944|
0004ec  e5804000          STR      r4,[r0,#0]  ; OSFlagFreeList
0004f0  e1a0000a          MOV      r0,r10
0004f4  ebfffffe          BL       OS_CPU_SR_Restore
0004f8  e3570001          CMP      r7,#1
0004fc  1a000000          BNE      |L1.1284|
000500  ebfffffe          BL       OS_Sched
                  |L1.1284|
000504  e3a00000          MOV      r0,#0
000508  e5c60000          STRB     r0,[r6,#0]
00050c  e3a08000          MOV      r8,#0
000510  ea000006          B        |L1.1328|
                  |L1.1300|
000514  e1a00000          MOV      r0,r0
000518  e1a0000a          MOV      r0,r10
00051c  ebfffffe          BL       OS_CPU_SR_Restore
000520  e3a00007          MOV      r0,#7
000524  e5c60000          STRB     r0,[r6,#0]
000528  e1a08004          MOV      r8,r4
00052c  e1a00000          MOV      r0,r0
                  |L1.1328|
000530  e1a00000          MOV      r0,r0
000534  e1a00008          MOV      r0,r8
000538  eaffff98          B        |L1.928|
                          ENDP

                  OSFlagNameGet PROC
;;;395    INT8U  OSFlagNameGet (OS_FLAG_GRP *pgrp, INT8U *pname, INT8U *err)
;;;396    {
00053c  e92d41f0          PUSH     {r4-r8,lr}
000540  e1a04000          MOV      r4,r0
000544  e1a05001          MOV      r5,r1
000548  e1a06002          MOV      r6,r2
;;;397        INT8U      len;
;;;398    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;399        OS_CPU_SR  cpu_sr = 0;
00054c  e3a07000          MOV      r7,#0
;;;400    #endif
;;;401    
;;;402    
;;;403    
;;;404        OS_ENTER_CRITICAL();
000550  ebfffffe          BL       OS_CPU_SR_Save
000554  e1a07000          MOV      r7,r0
;;;405    #if OS_ARG_CHK_EN > 0
;;;406        if (err == (INT8U *)0) {                     /* Validate 'err'                                     */
000558  e3560000          CMP      r6,#0
00055c  1a000004          BNE      |L1.1396|
;;;407            OS_EXIT_CRITICAL();
000560  e1a00007          MOV      r0,r7
000564  ebfffffe          BL       OS_CPU_SR_Restore
;;;408            return (0);
000568  e3a00000          MOV      r0,#0
                  |L1.1388|
00056c  e8bd41f0          POP      {r4-r8,lr}
;;;409        }
;;;410        if (pgrp == (OS_FLAG_GRP *)0) {              /* Is 'pgrp' a NULL pointer?                          */
;;;411            OS_EXIT_CRITICAL();                      /* Yes                                                */
;;;412            *err = OS_ERR_FLAG_INVALID_PGRP;
;;;413            return (0);
;;;414        }
;;;415        if (pname == (INT8U *)0) {                    /* Is 'pname' a NULL pointer?                         */
;;;416            OS_EXIT_CRITICAL();                      /* Yes                                                */
;;;417            *err = OS_ERR_PNAME_NULL;
;;;418            return (0);
;;;419        }
;;;420    #endif
;;;421        if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
;;;422            OS_EXIT_CRITICAL();
;;;423            *err = OS_ERR_EVENT_TYPE;
;;;424            return (0);
;;;425        }
;;;426        len  = OS_StrCopy(pname, pgrp->OSFlagName);  /* Copy name from OS_FLAG_GRP                         */
;;;427        OS_EXIT_CRITICAL();
;;;428        *err = OS_ERR_NONE;
;;;429        return (len);
;;;430    }
000570  e12fff1e          BX       lr
                  |L1.1396|
000574  e3540000          CMP      r4,#0
000578  1a000005          BNE      |L1.1428|
00057c  e1a00007          MOV      r0,r7
000580  ebfffffe          BL       OS_CPU_SR_Restore
000584  e3a0006e          MOV      r0,#0x6e
000588  e5c60000          STRB     r0,[r6,#0]
00058c  e3a00000          MOV      r0,#0
000590  eafffff5          B        |L1.1388|
                  |L1.1428|
000594  e3550000          CMP      r5,#0
000598  1a000005          BNE      |L1.1460|
00059c  e1a00007          MOV      r0,r7
0005a0  ebfffffe          BL       OS_CPU_SR_Restore
0005a4  e3a0000c          MOV      r0,#0xc
0005a8  e5c60000          STRB     r0,[r6,#0]
0005ac  e3a00000          MOV      r0,#0
0005b0  eaffffed          B        |L1.1388|
                  |L1.1460|
0005b4  e5d40000          LDRB     r0,[r4,#0]
0005b8  e3500005          CMP      r0,#5
0005bc  0a000005          BEQ      |L1.1496|
0005c0  e1a00007          MOV      r0,r7
0005c4  ebfffffe          BL       OS_CPU_SR_Restore
0005c8  e3a00001          MOV      r0,#1
0005cc  e5c60000          STRB     r0,[r6,#0]
0005d0  e3a00000          MOV      r0,#0
0005d4  eaffffe4          B        |L1.1388|
                  |L1.1496|
0005d8  e284100a          ADD      r1,r4,#0xa
0005dc  e1a00005          MOV      r0,r5
0005e0  ebfffffe          BL       OS_StrCopy
0005e4  e1a08000          MOV      r8,r0
0005e8  e1a00007          MOV      r0,r7
0005ec  ebfffffe          BL       OS_CPU_SR_Restore
0005f0  e3a00000          MOV      r0,#0
0005f4  e5c60000          STRB     r0,[r6,#0]
0005f8  e1a00008          MOV      r0,r8
0005fc  eaffffda          B        |L1.1388|
                          ENDP

                  OSFlagNameSet PROC
;;;457    void  OSFlagNameSet (OS_FLAG_GRP *pgrp, INT8U *pname, INT8U *err)
;;;458    {
000600  e92d41f0          PUSH     {r4-r8,lr}
000604  e1a04000          MOV      r4,r0
000608  e1a05001          MOV      r5,r1
00060c  e1a07002          MOV      r7,r2
;;;459        INT8U      len;
;;;460    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;461        OS_CPU_SR  cpu_sr = 0;
000610  e3a08000          MOV      r8,#0
;;;462    #endif
;;;463    
;;;464    
;;;465    
;;;466        OS_ENTER_CRITICAL();
000614  ebfffffe          BL       OS_CPU_SR_Save
000618  e1a08000          MOV      r8,r0
;;;467    #if OS_ARG_CHK_EN > 0
;;;468        if (err == (INT8U *)0) {                     /* Validate 'err'                                     */
00061c  e3570000          CMP      r7,#0
000620  1a000003          BNE      |L1.1588|
;;;469            OS_EXIT_CRITICAL();
000624  e1a00008          MOV      r0,r8
000628  ebfffffe          BL       OS_CPU_SR_Restore
                  |L1.1580|
;;;470            return;
;;;471        }
;;;472        if (pgrp == (OS_FLAG_GRP *)0) {              /* Is 'pgrp' a NULL pointer?                          */
;;;473            OS_EXIT_CRITICAL();                      /* Yes                                                */
;;;474            *err = OS_ERR_FLAG_INVALID_PGRP;
;;;475            return;
;;;476        }
;;;477        if (pname == (INT8U *)0) {                    /* Is 'pname' a NULL pointer?                         */
;;;478            OS_EXIT_CRITICAL();                      /* Yes                                                */
;;;479            *err = OS_ERR_PNAME_NULL;
;;;480            return;
;;;481        }

⌨️ 快捷键说明

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