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

📄 os_core.txt

📁 一个电力系统谐波检测的程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 951] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oos_core.o --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips uCosii\OS_CORE.C]

                          ARM

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

                  OS_TaskStat PROC
;;;954    void  OS_TaskStat (void *pdata)
;;;955    {
                  |L1.0|
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  e1a07000          MOV      r7,r0
;;;956    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;957        OS_CPU_SR  cpu_sr;
;;;958    #endif    
;;;959        INT32U     run;
;;;960        INT32U     max;
;;;961        INT8S      usage;
;;;962    
;;;963    
;;;964        pdata = pdata;                               /* Prevent compiler warning for not using 'pdata'     */
000008  e1a00000          MOV      r0,r0
;;;965        while (OSStatRdy == FALSE) {
00000c  ea000001          B        |L1.24|
;;;966            OSTimeDly(2 * OS_TICKS_PER_SEC);         /* Wait until statistic task is ready                 */
                  |L1.16|
000010  e3a00e19          MOV      r0,#0x190
000014  ebfffffe          BL       OSTimeDly
                  |L1.24|
000018  e59f0ad4          LDR      r0,|L1.2804|          ;965
00001c  e5d00000          LDRB     r0,[r0,#0]            ;965  ; OSStatRdy
000020  e3500000          CMP      r0,#0                 ;965
000024  0afffff9          BEQ      |L1.16|               ;965
;;;967        }
;;;968        max = OSIdleCtrMax / 100L;
000028  e3a01064          MOV      r1,#0x64
00002c  e59f0ac4          LDR      r0,|L1.2808|
000030  e5900000          LDR      r0,[r0,#0]  ; OSIdleCtrMax
000034  ebfffffe          BL       __aeabi_uidivmod
000038  e1a04000          MOV      r4,r0
;;;969        for (;;) {
00003c  e1a00000          MOV      r0,r0
;;;970            OS_ENTER_CRITICAL();
                  |L1.64|
000040  ef000002          SVC      0x2  ; formerly SWI
;;;971            OSIdleCtrRun = OSIdleCtr;                /* Obtain the of the idle counter for the past second */
000044  e59f0ab0          LDR      r0,|L1.2812|
000048  e5900000          LDR      r0,[r0,#0]  ; OSIdleCtr
00004c  e59f1aac          LDR      r1,|L1.2816|
000050  e5810000          STR      r0,[r1,#0]  ; OSIdleCtrRun
;;;972            run          = OSIdleCtr;
000054  e59f0aa0          LDR      r0,|L1.2812|
000058  e5905000          LDR      r5,[r0,#0]  ; OSIdleCtr
;;;973            OSIdleCtr    = 0L;                       /* Reset the idle counter for the next second         */
00005c  e3a00000          MOV      r0,#0
000060  e59f1a94          LDR      r1,|L1.2812|
000064  e5810000          STR      r0,[r1,#0]  ; OSIdleCtr
;;;974            OS_EXIT_CRITICAL();
000068  ef000003          SVC      0x3  ; formerly SWI
;;;975            if (max > 0L) {
00006c  e3540000          CMP      r4,#0
000070  0a00000e          BEQ      |L1.176|
;;;976                usage = (INT8S)(100L - run / max);
000074  e1a01004          MOV      r1,r4
000078  e1a00005          MOV      r0,r5
00007c  ebfffffe          BL       __aeabi_uidivmod
000080  e2600064          RSB      r0,r0,#0x64
000084  e1a06c00          LSL      r6,r0,#24
000088  e1a06c46          ASR      r6,r6,#24
;;;977                if (usage >= 0) {                    /* Make sure we don't have a negative percentage      */
00008c  e3560000          CMP      r6,#0
000090  ba000002          BLT      |L1.160|
;;;978                    OSCPUUsage = usage;
000094  e59f0a68          LDR      r0,|L1.2820|
000098  e5c06000          STRB     r6,[r0,#0]  ; OSCPUUsage
00009c  ea00000b          B        |L1.208|
;;;979                } else {
;;;980                    OSCPUUsage = 0;
                  |L1.160|
0000a0  e3a00000          MOV      r0,#0
0000a4  e59f1a58          LDR      r1,|L1.2820|
0000a8  e5c10000          STRB     r0,[r1,#0]  ; OSCPUUsage
0000ac  ea000007          B        |L1.208|
;;;981                }
;;;982            } else {
;;;983                OSCPUUsage = 0;
                  |L1.176|
0000b0  e3a00000          MOV      r0,#0
0000b4  e59f1a48          LDR      r1,|L1.2820|
0000b8  e5c10000          STRB     r0,[r1,#0]  ; OSCPUUsage
;;;984                max        = OSIdleCtrMax / 100L;
0000bc  e3a01064          MOV      r1,#0x64
0000c0  e59f0a30          LDR      r0,|L1.2808|
0000c4  e5900000          LDR      r0,[r0,#0]  ; OSIdleCtrMax
0000c8  ebfffffe          BL       __aeabi_uidivmod
0000cc  e1a04000          MOV      r4,r0
;;;985            }
;;;986            OSTaskStatHook();                        /* Invoke user definable hook                         */
                  |L1.208|
0000d0  ebfffffe          BL       OSTaskStatHook
;;;987            OSTimeDly(OS_TICKS_PER_SEC);             /* Accumulate OSIdleCtr for the next second           */
0000d4  e3a000c8          MOV      r0,#0xc8
0000d8  ebfffffe          BL       OSTimeDly
0000dc  eaffffd7          B        |L1.64|
;;;988        }
;;;989    }
                          ENDP

                  OS_InitTaskStat PROC
;;;777    static  void  OS_InitTaskStat (void)
;;;778    {
0000e0  e52de004          PUSH     {lr}
0000e4  e24dd014          SUB      sp,sp,#0x14
;;;779    #if OS_TASK_CREATE_EXT_EN > 0
;;;780        #if OS_STK_GROWTH == 1
;;;781        (void)OSTaskCreateExt(OS_TaskStat,
0000e8  e3a03003          MOV      r3,#3
0000ec  e3a02000          MOV      r2,#0
0000f0  e3a01c03          MOV      r1,#0x300
0000f4  e59f0a0c          LDR      r0,|L1.2824|
0000f8  e98d000f          STMIB    sp,{r0-r3}
0000fc  e59f3a08          LDR      r3,|L1.2828|
000100  e58d3000          STR      r3,[sp,#0]
000104  e3a0300b          MOV      r3,#0xb
000108  e59f2a00          LDR      r2,|L1.2832|
00010c  e3a01000          MOV      r1,#0
000110  e24f0f46          ADR      r0,|L1.0|
000114  ebfffffe          BL       OSTaskCreateExt
;;;782                              (void *)0,                                   /* No args passed to OS_TaskStat()*/
;;;783                              &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Top-Of-Stack               */
;;;784                              OS_STAT_PRIO,                                /* One higher than the idle task  */
;;;785                              OS_TASK_STAT_ID,
;;;786                              &OSTaskStatStk[0],                           /* Set Bottom-Of-Stack            */
;;;787                              OS_TASK_STAT_STK_SIZE,
;;;788                              (void *)0,                                   /* No TCB extension               */
;;;789                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
;;;790        #else
;;;791        (void)OSTaskCreateExt(OS_TaskStat,
;;;792                              (void *)0,                                   /* No args passed to OS_TaskStat()*/
;;;793                              &OSTaskStatStk[0],                           /* Set Top-Of-Stack               */
;;;794                              OS_STAT_PRIO,                                /* One higher than the idle task  */
;;;795                              OS_TASK_STAT_ID,
;;;796                              &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Bottom-Of-Stack            */
;;;797                              OS_TASK_STAT_STK_SIZE,
;;;798                              (void *)0,                                   /* No TCB extension               */
;;;799                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
;;;800        #endif
;;;801    #else
;;;802        #if OS_STK_GROWTH == 1
;;;803        (void)OSTaskCreate(OS_TaskStat,
;;;804                           (void *)0,                                      /* No args passed to OS_TaskStat()*/
;;;805                           &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],      /* Set Top-Of-Stack               */
;;;806                           OS_STAT_PRIO);                                  /* One higher than the idle task  */
;;;807        #else
;;;808        (void)OSTaskCreate(OS_TaskStat,
;;;809                           (void *)0,                                      /* No args passed to OS_TaskStat()*/
;;;810                           &OSTaskStatStk[0],                              /* Set Top-Of-Stack               */
;;;811                           OS_STAT_PRIO);                                  /* One higher than the idle task  */
;;;812        #endif
;;;813    #endif
;;;814    }
000118  e28dd014          ADD      sp,sp,#0x14
00011c  e49de004          POP      {lr}
000120  e12fff1e          BX       lr
                          ENDP

                  OS_TaskIdle PROC
;;;911    void  OS_TaskIdle (void *pdata)
;;;912    {
                  |L1.292|
000124  e92d4010          PUSH     {r4,lr}
000128  e1a04000          MOV      r4,r0
;;;913    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;914        OS_CPU_SR  cpu_sr;
;;;915    #endif    
;;;916        
;;;917        
;;;918        pdata = pdata;                               /* Prevent compiler warning for not using 'pdata'     */
00012c  e1a00000          MOV      r0,r0
;;;919        for (;;) {
000130  e1a00000          MOV      r0,r0
;;;920            OS_ENTER_CRITICAL();
                  |L1.308|
000134  ef000002          SVC      0x2  ; formerly SWI
;;;921            OSIdleCtr++;
000138  e59f09bc          LDR      r0,|L1.2812|
00013c  e5900000          LDR      r0,[r0,#0]  ; OSIdleCtr
000140  e2800001          ADD      r0,r0,#1
000144  e59f19b0          LDR      r1,|L1.2812|
000148  e5810000          STR      r0,[r1,#0]  ; OSIdleCtr
;;;922            OS_EXIT_CRITICAL();
00014c  ef000003          SVC      0x3  ; formerly SWI
;;;923            OSTaskIdleHook();                        /* Call user definable HOOK                           */
000150  ebfffffe          BL       OSTaskIdleHook
000154  eafffff6          B        |L1.308|
;;;924        }
;;;925    }
                          ENDP

                  OS_InitTaskIdle PROC
;;;724    static  void  OS_InitTaskIdle (void)
;;;725    {
000158  e52de004          PUSH     {lr}
00015c  e24dd014          SUB      sp,sp,#0x14
;;;726    #if OS_TASK_CREATE_EXT_EN > 0
;;;727        #if OS_STK_GROWTH == 1
;;;728        (void)OSTaskCreateExt(OS_TaskIdle,
000160  e3a03003          MOV      r3,#3
000164  e3a02000          MOV      r2,#0
000168  e3a01040          MOV      r1,#0x40
00016c  e59f09a0          LDR      r0,|L1.2836|
000170  e98d000f          STMIB    sp,{r0-r3}
000174  e59f399c          LDR      r3,|L1.2840|
000178  e58d3000          STR      r3,[sp,#0]
00017c  e3a0300c          MOV      r3,#0xc
000180  e28020fc          ADD      r2,r0,#0xfc
000184  e3a01000          MOV      r1,#0
000188  e24f006c          ADR      r0,|L1.292|
00018c  ebfffffe          BL       OSTaskCreateExt
;;;729                              (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;;;730                              &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack                     */
;;;731                              OS_IDLE_PRIO,                              /* Lowest priority level                */
;;;732                              OS_TASK_IDLE_ID,
;;;733                              &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack                  */
;;;734                              OS_TASK_IDLE_STK_SIZE,
;;;735                              (void *)0,                                 /* No TCB extension                     */
;;;736                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;;;737        #else
;;;738        (void)OSTaskCreateExt(OS_TaskIdle,
;;;739                              (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;;;740                              &OSTaskIdleStk[0],                         /* Set Top-Of-Stack                     */
;;;741                              OS_IDLE_PRIO,                              /* Lowest priority level                */
;;;742                              OS_TASK_IDLE_ID,
;;;743                              &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack                  */
;;;744                              OS_TASK_IDLE_STK_SIZE,
;;;745                              (void *)0,                                 /* No TCB extension                     */
;;;746                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;;;747        #endif
;;;748    #else
;;;749        #if OS_STK_GROWTH == 1
;;;750        (void)OSTaskCreate(OS_TaskIdle,
;;;751                           (void *)0,
;;;752                           &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
;;;753                           OS_IDLE_PRIO);
;;;754        #else
;;;755        (void)OSTaskCreate(OS_TaskIdle,
;;;756                           (void *)0,
;;;757                           &OSTaskIdleStk[0],
;;;758                           OS_IDLE_PRIO);
;;;759        #endif
;;;760    #endif
;;;761    }
000190  e28dd014          ADD      sp,sp,#0x14
000194  e49de004          POP      {lr}
000198  e12fff1e          BX       lr
                          ENDP

                  OS_InitEventList PROC
;;;622    
;;;623        pevent1 = &OSEventTbl[0];

⌨️ 快捷键说明

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