📄 app.txt
字号:
0001ac e1a0a82a LSR r10,r10,#16
0001b0 e3a01ffa MOV r1,#0x3e8
0001b4 e59d0000 LDR r0,[sp,#0]
0001b8 ebfffffe BL __aeabi_uidivmod
0001bc e200b0ff AND r11,r0,#0xff
0001c0 e1a0300a MOV r3,r10
0001c4 e1a0200b MOV r2,r11
0001c8 e3a01000 MOV r1,#0
0001cc e1a00001 MOV r0,r1
0001d0 ebfffffe BL OSTimeDlyHMSM
0001d4 e2840001 ADD r0,r4,#1
0001d8 e20040ff AND r4,r0,#0xff
|L1.476|
0001dc e3540004 CMP r4,#4
0001e0 daffffe7 BLE |L1.388|
;;;159 }
;;;160
;;;161 LED_Off(0); /* Turn off all LEDs */
0001e4 e3a00000 MOV r0,#0
0001e8 ebfffffe BL LED_Off
;;;162 delay0 = ADC_GetStatus(0) + 32;
0001ec e3a00000 MOV r0,#0
0001f0 ebfffffe BL ADC_GetStatus
0001f4 e2800020 ADD r0,r0,#0x20
0001f8 e58d0000 STR r0,[sp,#0]
;;;163 OSTimeDlyHMSM(0, 0, delay0 / 1000, delay0 % 1000); /* Delay */
0001fc e3a01ffa MOV r1,#0x3e8
000200 e59d0000 LDR r0,[sp,#0]
000204 ebfffffe BL __aeabi_uidivmod
000208 e1a0a801 LSL r10,r1,#16
00020c e1a0a82a LSR r10,r10,#16
000210 e3a01ffa MOV r1,#0x3e8
000214 e59d0000 LDR r0,[sp,#0]
000218 ebfffffe BL __aeabi_uidivmod
00021c e200b0ff AND r11,r0,#0xff
000220 e1a0300a MOV r3,r10
000224 e1a0200b MOV r2,r11
000228 e3a01000 MOV r1,#0
00022c e1a00001 MOV r0,r1
000230 ebfffffe BL OSTimeDlyHMSM
;;;164
;;;165 /* Determine what buttons have been pressed */
;;;166 leds = 0;
000234 e3a08000 MOV r8,#0
;;;167 while (1) {
000238 ea000010 B |L1.640|
|L1.572|
;;;168 msg = OSQAccept(AppKbdQ, &err);
00023c e28d1004 ADD r1,sp,#4
000240 e59f00ec LDR r0,|L1.820|
000244 e5900000 LDR r0,[r0,#0] ; AppKbdQ
000248 ebfffffe BL OSQAccept
00024c e1a06000 MOV r6,r0
;;;169
;;;170 if (err == OS_Q_EMPTY || msg == (void *)0) {
000250 e5dd0004 LDRB r0,[sp,#4]
000254 e350001f CMP r0,#0x1f
000258 0a000001 BEQ |L1.612|
00025c e3560000 CMP r6,#0
000260 1a000000 BNE |L1.616|
|L1.612|
;;;171 break;
000264 ea000006 B |L1.644|
|L1.616|
;;;172 }
;;;173
;;;174 led = (CPU_INT32U)msg;
000268 e20670ff AND r7,r6,#0xff
;;;175
;;;176 if (led > 4) {
00026c e3570004 CMP r7,#4
000270 da000000 BLE |L1.632|
;;;177 break;
000274 ea000002 B |L1.644|
|L1.632|
;;;178 }
;;;179
;;;180 leds |= (1 << led);
000278 e3a00001 MOV r0,#1
00027c e1888710 ORR r8,r8,r0,LSL r7
|L1.640|
000280 eaffffed B |L1.572|
|L1.644|
000284 e1a00000 MOV r0,r0
;;;181 }
;;;182
;;;183 /* If no buttons have been pressed, continue at beginning */
;;;184 if (leds == 0) {
000288 e3580000 CMP r8,#0
00028c 1a000000 BNE |L1.660|
;;;185 continue;
000290 ea000026 B |L1.816|
|L1.660|
;;;186 }
;;;187
;;;188 /* Otherwise, blink LEDs that were pressed 20 times */
;;;189 for (j = 0; j < 20; j++) {
000294 e3a05000 MOV r5,#0
000298 ea000021 B |L1.804|
|L1.668|
;;;190 for (i = 1; i <= 4; i++) {
00029c e3a04001 MOV r4,#1
0002a0 ea000009 B |L1.716|
|L1.676|
;;;191 if ((leds & (1 << i)) == (1 << i)) {
0002a4 e3a00001 MOV r0,#1
0002a8 e0080410 AND r0,r8,r0,LSL r4
0002ac e3a01001 MOV r1,#1
0002b0 e1a01411 LSL r1,r1,r4
0002b4 e1500001 CMP r0,r1
0002b8 1a000001 BNE |L1.708|
;;;192 LED_Toggle(i);
0002bc e1a00004 MOV r0,r4
0002c0 ebfffffe BL LED_Toggle
|L1.708|
0002c4 e2840001 ADD r0,r4,#1
0002c8 e20040ff AND r4,r0,#0xff
|L1.716|
0002cc e3540004 CMP r4,#4
0002d0 dafffff3 BLE |L1.676|
;;;193 }
;;;194 }
;;;195 delay1 = (ADC_GetStatus(1) >> 2) + 32;
0002d4 e3a00001 MOV r0,#1
0002d8 ebfffffe BL ADC_GetStatus
0002dc e3a01020 MOV r1,#0x20
0002e0 e0819140 ADD r9,r1,r0,ASR #2
;;;196 OSTimeDlyHMSM(0, 0, delay1 / 1000, delay1 % 1000);
0002e4 e3a01ffa MOV r1,#0x3e8
0002e8 e1a00009 MOV r0,r9
0002ec ebfffffe BL __aeabi_uidivmod
0002f0 e1a0a801 LSL r10,r1,#16
0002f4 e1a0a82a LSR r10,r10,#16
0002f8 e3a01ffa MOV r1,#0x3e8
0002fc e1a00009 MOV r0,r9
000300 ebfffffe BL __aeabi_uidivmod
000304 e200b0ff AND r11,r0,#0xff
000308 e1a0300a MOV r3,r10
00030c e1a0200b MOV r2,r11
000310 e3a01000 MOV r1,#0
000314 e1a00001 MOV r0,r1
000318 ebfffffe BL OSTimeDlyHMSM
00031c e2850001 ADD r0,r5,#1
000320 e20050ff AND r5,r0,#0xff
|L1.804|
000324 e3550014 CMP r5,#0x14
000328 baffffdb BLT |L1.668|
00032c e1a00000 MOV r0,r0
|L1.816|
000330 eaffff91 B |L1.380|
|L1.820|
000334 00000000 DCD ||.data||
|L1.824|
000338 00000800 DCD ||.bss||+0x800
|L1.828|
00033c 00000ffc DCD ||.bss||+0xffc
|L1.832|
000340 4b657962 DCB "Keyb"
000344 6f617264 DCB "oard"
000348 00000000 DCB "\0\0\0\0"
|L1.844|
00034c 0001c200 DCD 0x0001c200
|L1.848|
000350 00001000 DCD ||.bss||+0x1000
ENDP
main PROC
;;;76 int main (void)
;;;77 {
000354 e52de004 PUSH {lr}
000358 e24dd01c SUB sp,sp,#0x1c
;;;78 CPU_INT08U err;
;;;79
;;;80
;;;81 BSP_IntDisAll(); /* Disable all interrupts until we are ready to accept them */
00035c ebfffffe BL BSP_IntDisAll
;;;82
;;;83 OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
000360 ebfffffe BL OSInit
;;;84
;;;85 OSTaskCreateExt(AppTaskStart, /* Create the start task */
000364 e3a03003 MOV r3,#3
000368 e3a02000 MOV r2,#0
00036c e3a01c02 MOV r1,#0x200
000370 e59f003c LDR r0,|L1.948|
000374 e98d000f STMIB sp,{r0-r3}
000378 e3a03001 MOV r3,#1
00037c e59f2034 LDR r2,|L1.952|
000380 e3a01000 MOV r1,#0
000384 e24f0f95 ADR r0,AppTaskStart
000388 e58d3000 STR r3,[sp,#0]
00038c ebfffffe BL OSTaskCreateExt
;;;86 (void *)0,
;;;87 (OS_STK *)&AppTaskStartStk[APP_TASK_START_STK_SIZE - 1],
;;;88 APP_TASK_START_PRIO,
;;;89 APP_TASK_START_PRIO,
;;;90 (OS_STK *)&AppTaskStartStk[0],
;;;91 APP_TASK_START_STK_SIZE,
;;;92 (void *)0,
;;;93 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
;;;94
;;;95
;;;96
;;;97 #if OS_TASK_NAME_SIZE > 13
;;;98 OSTaskNameSet(APP_TASK_START_PRIO, "Start Task", &err);
000390 e28d2018 ADD r2,sp,#0x18
000394 e28f1020 ADR r1,|L1.956|
000398 e3a00001 MOV r0,#1
00039c ebfffffe BL OSTaskNameSet
;;;99 #endif
;;;100
;;;101 OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
0003a0 ebfffffe BL OSStart
;;;102 }
0003a4 e3a00000 MOV r0,#0
0003a8 e28dd01c ADD sp,sp,#0x1c
0003ac e49de004 POP {lr}
0003b0 e12fff1e BX lr
ENDP
|L1.948|
0003b4 00000000 DCD ||.bss||
|L1.952|
0003b8 000007fc DCD ||.bss||+0x7fc
|L1.956|
0003bc 53746172 DCB "Star"
0003c0 74205461 DCB "t Ta"
0003c4 736b0000 DCB "sk\0\0"
AREA ||.data||, DATA, ALIGN=2
AppKbdQ
000000 00000000 DCD 0x00000000
AREA ||.bss||, DATA, NOINIT, ALIGN=2
AppTaskStartStk
% 2048
AppTaskKbdStk
% 2048
AppKbdQStorage
% 64
__ARM_use_no_argv EQU 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -