📄 app.lst
字号:
376 pstate = 1;
\ 00000014 2C00 MOVS R4,R5
\ 00000016 01E0 B.N ??AppTaskUserIF_0
377
378
379 while (DEF_TRUE) {
380 msg = (CPU_INT08U *)(OSMboxPend(AppUserIFMbox, OS_TICKS_PER_SEC / 10, &err));
381 if (err == OS_NO_ERR) {
382 nstate = (CPU_INT32U)msg;
383 }
384
385 if (nstate != pstate) {
386 LCD_Clear();
387 pstate = nstate;
388 }
389
390 switch (nstate) {
391 case 2:
392 AppDispScr_TaskNames();
\ ??AppTaskUserIF_1:
\ 00000018 ........ BL AppDispScr_TaskNames
\ ??AppTaskUserIF_0:
\ 0000001C 6A46 MOV R2,SP
\ 0000001E 0A21 MOVS R1,#+10
\ 00000020 .... LDR.N R0,??DataTable1 ;; Probe_B1 + 8
\ 00000022 0068 LDR R0,[R0, #+0]
\ 00000024 ........ _BLF OSMboxPend,??OSMboxPend??rT
\ 00000028 9DF80010 LDRB R1,[SP, #+0]
\ 0000002C 0029 CMP R1,#+0
\ 0000002E 00D1 BNE.N ??AppTaskUserIF_2
\ 00000030 0500 MOVS R5,R0
\ ??AppTaskUserIF_2:
\ 00000032 A542 CMP R5,R4
\ 00000034 02D0 BEQ.N ??AppTaskUserIF_3
\ 00000036 ........ _BLF LCD_Clear,??LCD_Clear??rT
\ 0000003A 2C00 MOVS R4,R5
\ ??AppTaskUserIF_3:
\ 0000003C 2800 MOVS R0,R5
\ 0000003E 0228 CMP R0,#+2
\ 00000040 EAD0 BEQ.N ??AppTaskUserIF_1
393 break;
394
395 case 1:
396 default:
397 AppDispScr_SignOn();
\ 00000042 ........ BL AppDispScr_SignOn
\ 00000046 E9E7 B.N ??AppTaskUserIF_0
398 break;
399 }
400 }
401 }
402
403
404 /*
405 *********************************************************************************************************
406 * KEYBOARD RESPONSE TASK
407 *
408 * Description : This task monitors the state of the push buttons and passes messages to AppTaskUserIF()
409 *
410 * Arguments : p_arg is the argument passed to 'AppStartKbd()' by 'OSTaskCreate()'.
411 *
412 * Returns : none
413 *********************************************************************************************************
414 */
415
\ In segment CODE, align 4, keep-with-next
416 static void AppTaskKbd (void *p_arg)
417 {
\ AppTaskKbd:
\ 00000000 F0B5 PUSH {R4-R7,LR}
418 CPU_BOOLEAN b1_prev;
419 CPU_BOOLEAN b1;
420 CPU_INT08U key;
421
422
423 (void)p_arg;
424
425 b1_prev = DEF_FALSE;
\ 00000002 0027 MOVS R7,#+0
426 key = 1;
\ 00000004 0124 MOVS R4,#+1
\ 00000006 2600 MOVS R6,R4
\ 00000008 0DE0 B.N ??AppTaskKbd_0
427
428 while (DEF_TRUE) {
429 b1 = PB_GetStatus(1);
430
431 if (b1 == DEF_TRUE && b1_prev == DEF_FALSE) {
432 if (key == 2) {
433 key = 1;
434 } else {
435 key++;
\ ??AppTaskKbd_1:
\ 0000000A 761C ADDS R6,R6,#+1
\ 0000000C F6B2 UXTB R6,R6
436 }
437
438 OSMboxPost(AppUserIFMbox, (void *)key);
\ ??AppTaskKbd_2:
\ 0000000E 3100 MOVS R1,R6
\ 00000010 .... LDR.N R0,??DataTable1 ;; Probe_B1 + 8
\ 00000012 0068 LDR R0,[R0, #+0]
\ 00000014 ........ _BLF OSMboxPost,??OSMboxPost??rT
439 }
440
441 b1_prev = b1;
\ ??AppTaskKbd_3:
\ 00000018 2F00 MOVS R7,R5
442
443 OSTimeDlyHMSM(0, 0, 0, 20);
\ 0000001A 1423 MOVS R3,#+20
\ 0000001C 0022 MOVS R2,#+0
\ 0000001E 1146 MOV R1,R2
\ 00000020 0846 MOV R0,R1
\ 00000022 ........ _BLF OSTimeDlyHMSM,??OSTimeDlyHMSM??rT
\ ??AppTaskKbd_0:
\ 00000026 2046 MOV R0,R4
\ 00000028 ........ _BLF PB_GetStatus,??PB_GetStatus??rT
\ 0000002C 0500 MOVS R5,R0
\ 0000002E 0128 CMP R0,#+1
\ 00000030 F2D1 BNE.N ??AppTaskKbd_3
\ 00000032 002F CMP R7,#+0
\ 00000034 F0D1 BNE.N ??AppTaskKbd_3
\ 00000036 3000 MOVS R0,R6
\ 00000038 0228 CMP R0,#+2
\ 0000003A E6D1 BNE.N ??AppTaskKbd_1
\ 0000003C 2600 MOVS R6,R4
\ 0000003E E6E7 B.N ??AppTaskKbd_2
444 }
445 }
446
447
448 /*
449 *********************************************************************************************************
450 * PRINT SYSTEM INFORMATION ON LCD
451 *
452 * Description: This function displays uC/OS-II system information on the LCD.
453 *
454 * Argument(s): None
455 *
456 * Returns : None
457 *********************************************************************************************************
458 */
459
\ In segment CODE, align 4, keep-with-next
460 static void AppDispScr_SignOn (void)
461 {
\ AppDispScr_SignOn:
\ 00000000 2DE9F043 PUSH {R4-R9,LR}
462 CPU_INT32U value;
463
464
465 Str_Copy(AppLCDLine0, " Micrium uC/OS-II ");
\ 00000004 .... LDR.N R4,??DataTable7 ;; AppLCDLine3
\ 00000006 .... LDR.N R5,??DataTable8 ;; `?<Constant " CPU Usage:xx % ">`
\ 00000008 2900 MOVS R1,R5
\ 0000000A 1831 ADDS R1,R1,#+24
\ 0000000C 2000 MOVS R0,R4
\ 0000000E 1830 ADDS R0,R0,#+24
\ 00000010 ........ _BLF Str_Copy,??Str_Copy??rT
466 Str_Copy(AppLCDLine1, "ST STM32 (Cortex-M3)");
\ 00000014 2900 MOVS R1,R5
\ 00000016 D831 ADDS R1,R1,#+216
\ 00000018 2000 MOVS R0,R4
\ 0000001A 3030 ADDS R0,R0,#+48
\ 0000001C ........ _BLF Str_Copy,??Str_Copy??rT
467
468 Str_Copy(AppLCDLine2, " ");
\ 00000020 05F2C008 ADDW R8,R5,#+192
\ 00000024 4146 MOV R1,R8
\ 00000026 2000 MOVS R0,R4
\ 00000028 4830 ADDS R0,R0,#+72
\ 0000002A ........ _BLF Str_Copy,??Str_Copy??rT
469
470 Str_Copy(AppLCDLine3, " uC/OS-II: Vx.yy ");
\ 0000002E 2900 MOVS R1,R5
\ 00000030 A831 ADDS R1,R1,#+168
\ 00000032 2000 MOVS R0,R4
\ 00000034 ........ _BLF Str_Copy,??Str_Copy??rT
471 value = (CPU_INT32U)OSVersion();
\ 00000038 ........ _BLF OSVersion,??OSVersion??rT
\ 0000003C 0200 MOVS R2,R0
472 AppLCDLine3[14] = value / 100 + '0';
\ 0000003E 6420 MOVS R0,#+100
\ 00000040 B2FBF0F0 UDIV R0,R2,R0
\ 00000044 3030 ADDS R0,R0,#+48
\ 00000046 A073 STRB R0,[R4, #+14]
473 AppLCDLine3[16] = (value % 100) / 10 + '0';
\ 00000048 1000 MOVS R0,R2
\ 0000004A 6421 MOVS R1,#+100
\ 0000004C ........ _BLF ??divu32_t,??rT??divu32_t
\ 00000050 0A21 MOVS R1,#+10
\ 00000052 B0FBF1F0 UDIV R0,R0,R1
\ 00000056 3030 ADDS R0,R0,#+48
\ 00000058 2074 STRB R0,[R4, #+16]
474 AppLCDLine3[17] = (value % 10) + '0';
\ 0000005A 1000 MOVS R0,R2
\ 0000005C ........ _BLF ??divu32_t,??rT??divu32_t
\ 00000060 3030 ADDS R0,R0,#+48
\ 00000062 6074 STRB R0,[R4, #+17]
475
476 Str_Copy(AppLCDLine4, " TickRate: xxxx ");
\ 00000064 2900 MOVS R1,R5
\ 00000066 9031 ADDS R1,R1,#+144
\ 00000068 2000 MOVS R0,R4
\ 0000006A 6030 ADDS R0,R0,#+96
\ 0000006C ........ _BLF Str_Copy,??Str_Copy??rT
477 value = (CPU_INT32U)OS_TICKS_PER_SEC;
478 AppFormatDec(&AppLCDLine4[14], value, 4);
\ 00000070 0422 MOVS R2,#+4
\ 00000072 6421 MOVS R1,#+100
\ 00000074 2000 MOVS R0,R4
\ 00000076 6E30 ADDS R0,R0,#+110
\ 00000078 ........ BL AppFormatDec
479
480 Str_Copy(AppLCDLine5, " CPU Usage:xx % ");
\ 0000007C .... LDR.N R6,??DataTable11 ;; AppLCDLine5
\ 0000007E 2900 MOVS R1,R5
\ 00000080 3000 MOVS R0,R6
\ 00000082 ........ _BLF Str_Copy,??Str_Copy??rT
481 value = (CPU_INT32U)OSCPUUsage;
\ 00000086 3948 LDR.N R0,??AppDispScr_SignOn_0 ;; OSCPUUsage
\ 00000088 90F90000 LDRSB R0,[R0, #+0]
482 AppLCDLine5[12] = (value / 10) + '0';
\ 0000008C 0A21 MOVS R1,#+10
\ 0000008E B0FBF1F1 UDIV R1,R0,R1
\ 00000092 3031 ADDS R1,R1,#+48
\ 00000094 3173 STRB R1,[R6, #+12]
483 AppLCDLine5[13] = (value % 10) + '0';
\ 00000096 0A21 MOVS R1,#+10
\ 00000098 ........ _BLF ??divu32_t,??rT??divu32_t
\ 0000009C 3030 ADDS R0,R0,#+48
\ 0000009E 7073 STRB R0,[R6, #+13]
484
485 Str_Copy(AppLCDLine6, " CPU Speed:xx MHz ");
\ 000000A0 .... LDR.N R7,??DataTable9 ;; AppLCDLine6
\ 000000A2 2900 MOVS R1,R5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -