📄 app.lst
字号:
130 (void)p_arg;
131
132 BSP_Init(); /* Initialize BSP functions */
\ 00000008 ........ _BLF BSP_Init,??BSP_Init??rA
133
134 #if OS_TASK_STAT_EN > 0
135 OSStatInit(); /* Determine CPU capacity */
\ 0000000C ........ _BLF OSStatInit,??OSStatInit??rA
136 #endif
137
138 #if OS_VIEW_MODULE > 0
139 OSView_Init(115200); /* OSView Init, baud rate = 115200 */
\ 00000010 400BA0E3 MOV R0,#+65536
\ 00000014 C20C80E3 ORR R0,R0,#0xC200
\ 00000018 ........ _BLF OSView_Init,??OSView_Init??rA
140 OSView_TerminalRxSetCallback(AppTerminalRx);
\ 0000001C C8019FE5 LDR R0,??AppTaskStart_0 ;; AppTerminalRx
\ 00000020 ........ _BLF OSView_TerminalRxSetCallback,??OSView_TerminalRxSetCallback??rA
141 OSView_RxIntEn(); /* Enable Rx Interrupts */
\ 00000024 ........ _BLF OSView_RxIntEn,??OSView_RxIntEn??rA
142 #endif
143
144 LED_Off(0); /* Turn OFF all the LEDs */
\ 00000028 0000A0E3 MOV R0,#+0
\ 0000002C ........ _BLF LED_Off,??LED_Off??rA
145
146
147 AppKbdQ = OSQCreate(AppKbdQStorage, 16); /* Create Q for communication between Kbd and Ser */
\ 00000030 1010A0E3 MOV R1,#+16
\ 00000034 B4019FE5 LDR R0,??AppTaskStart_0+0x4 ;; AppKbdQStorage
\ 00000038 ........ _BLF OSQCreate,??OSQCreate??rA
\ 0000003C ........ LDR R1,??DataTable5 ;; AppKbdQ
\ 00000040 000081E5 STR R0,[R1, #+0]
148 AppTaskCreate(); /* Create application tasks */
\ 00000044 ........ BL AppTaskCreate
149
150
151 while (DEF_TRUE) { /* Task body, always written as an infinite loop. */
152
153 for (i = 1; i <= 4; i++) { /* Turn on each LED, one by one, delaying between */
\ ??AppTaskStart_1:
\ 00000048 0150A0E3 MOV R5,#+1
\ 0000004C 140000EA B ??AppTaskStart_2
154 LED_On(i);
\ ??AppTaskStart_3:
\ 00000050 0500B0E1 MOVS R0,R5
\ 00000054 FF0010E2 ANDS R0,R0,#0xFF ;; Zero extend
\ 00000058 ........ _BLF LED_On,??LED_On??rA
155 delay0 = ADC_GetStatus(0) + 32;
\ 0000005C 0000A0E3 MOV R0,#+0
\ 00000060 ........ _BLF ADC_GetStatus,??ADC_GetStatus??rA
\ 00000064 202090E2 ADDS R2,R0,#+32
156 OSTimeDlyHMSM(0, 0, delay0 / 1000, delay0 % 1000);
\ 00000068 0200B0E1 MOVS R0,R2
\ 0000006C FA1FA0E3 MOV R1,#+1000
\ 00000070 ........ _BLF ??divu32_a,??rA??divu32_a
\ 00000074 0030B0E1 MOVS R3,R0
\ 00000078 0338A0E1 MOV R3,R3, LSL #+16
\ 0000007C 2338B0E1 MOVS R3,R3, LSR #+16
\ 00000080 0200B0E1 MOVS R0,R2
\ 00000084 FA1FA0E3 MOV R1,#+1000
\ 00000088 ........ _BLF ??divu32_a,??rA??divu32_a
\ 0000008C 0120B0E1 MOVS R2,R1
\ 00000090 FF2012E2 ANDS R2,R2,#0xFF ;; Zero extend
\ 00000094 0010A0E3 MOV R1,#+0
\ 00000098 0000A0E3 MOV R0,#+0
\ 0000009C ........ _BLF OSTimeDlyHMSM,??OSTimeDlyHMSM??rA
157 }
\ 000000A0 015095E2 ADDS R5,R5,#+1
\ ??AppTaskStart_2:
\ 000000A4 FF5015E2 ANDS R5,R5,#0xFF ;; Zero extend
\ 000000A8 050055E3 CMP R5,#+5
\ 000000AC E7FFFF3A BCC ??AppTaskStart_3
158
159 LED_Off(0); /* Turn off all LEDs */
\ 000000B0 0000A0E3 MOV R0,#+0
\ 000000B4 ........ _BLF LED_Off,??LED_Off??rA
160 delay0 = ADC_GetStatus(0) + 32;
\ 000000B8 0000A0E3 MOV R0,#+0
\ 000000BC ........ _BLF ADC_GetStatus,??ADC_GetStatus??rA
\ 000000C0 202090E2 ADDS R2,R0,#+32
161 OSTimeDlyHMSM(0, 0, delay0 / 1000, delay0 % 1000); /* Delay */
\ 000000C4 0200B0E1 MOVS R0,R2
\ 000000C8 FA1FA0E3 MOV R1,#+1000
\ 000000CC ........ _BLF ??divu32_a,??rA??divu32_a
\ 000000D0 0030B0E1 MOVS R3,R0
\ 000000D4 0338A0E1 MOV R3,R3, LSL #+16
\ 000000D8 2338B0E1 MOVS R3,R3, LSR #+16
\ 000000DC 0200B0E1 MOVS R0,R2
\ 000000E0 FA1FA0E3 MOV R1,#+1000
\ 000000E4 ........ _BLF ??divu32_a,??rA??divu32_a
\ 000000E8 0120B0E1 MOVS R2,R1
\ 000000EC FF2012E2 ANDS R2,R2,#0xFF ;; Zero extend
\ 000000F0 0010A0E3 MOV R1,#+0
\ 000000F4 0000A0E3 MOV R0,#+0
\ 000000F8 ........ _BLF OSTimeDlyHMSM,??OSTimeDlyHMSM??rA
162
163 /* Determine what buttons have been pressed */
164 leds = 0;
\ 000000FC 0040A0E3 MOV R4,#+0
\ 00000100 010000EA B ??AppTaskStart_4
165 while (1) {
166 msg = OSQAccept(AppKbdQ, &err);
167
168 if (err == OS_Q_EMPTY || msg == (void *)0) {
169 break;
170 }
171
172 led = (CPU_INT32U)msg;
173
174 if (led > 4) {
175 break;
176 }
177
178 leds |= (1 << led);
\ ??AppTaskStart_5:
\ 00000104 0110A0E3 MOV R1,#+1
\ 00000108 114094E1 ORRS R4,R4,R1, LSL R0
\ ??AppTaskStart_4:
\ 0000010C 0D10B0E1 MOVS R1,SP
\ 00000110 ........ LDR R0,??DataTable5 ;; AppKbdQ
\ 00000114 000090E5 LDR R0,[R0, #+0]
\ 00000118 ........ _BLF OSQAccept,??OSQAccept??rA
\ 0000011C 0010DDE5 LDRB R1,[SP, #+0]
\ 00000120 1F0051E3 CMP R1,#+31
\ 00000124 0400000A BEQ ??AppTaskStart_6
\ 00000128 000050E3 CMP R0,#+0
\ 0000012C 0200000A BEQ ??AppTaskStart_6
\ 00000130 FF0010E2 ANDS R0,R0,#0xFF ;; Zero extend
\ 00000134 050050E3 CMP R0,#+5
\ 00000138 F1FFFF3A BCC ??AppTaskStart_5
179 }
180
181 /* If no buttons have been pressed, continue at beginning */
182 if (leds == 0) {
\ ??AppTaskStart_6:
\ 0000013C 000054E3 CMP R4,#+0
\ 00000140 C0FFFF0A BEQ ??AppTaskStart_1
183 continue;
184 }
185
186 /* Otherwise, blink LEDs that were pressed 20 times */
187 for (j = 0; j < 20; j++) {
\ 00000144 0060A0E3 MOV R6,#+0
\ 00000148 220000EA B ??AppTaskStart_7
188 for (i = 1; i <= 4; i++) {
189 if ((leds & (1 << i)) == (1 << i)) {
\ ??AppTaskStart_8:
\ 0000014C 0100A0E3 MOV R0,#+1
\ 00000150 100514E0 ANDS R0,R4,R0, LSL R5
\ 00000154 0110A0E3 MOV R1,#+1
\ 00000158 110550E1 CMP R0,R1, LSL R5
\ 0000015C 0200001A BNE ??AppTaskStart_9
190 LED_Toggle(i);
\ 00000160 0500B0E1 MOVS R0,R5
\ 00000164 FF0010E2 ANDS R0,R0,#0xFF ;; Zero extend
\ 00000168 ........ _BLF LED_Toggle,??LED_Toggle??rA
191 }
192 }
\ ??AppTaskStart_9:
\ 0000016C 015095E2 ADDS R5,R5,#+1
\ ??AppTaskStart_10:
\ 00000170 FF5015E2 ANDS R5,R5,#0xFF ;; Zero extend
\ 00000174 050055E3 CMP R5,#+5
\ 00000178 F3FFFF3A BCC ??AppTaskStart_8
193 delay1 = (ADC_GetStatus(1) >> 2) + 32;
\ 0000017C 0100A0E3 MOV R0,#+1
\ 00000180 ........ _BLF ADC_GetStatus,??ADC_GetStatus??rA
\ 00000184 0008A0E1 MOV R0,R0, LSL #+16
\ 00000188 2008B0E1 MOVS R0,R0, LSR #+16
\ 0000018C 2001B0E1 LSRS R0,R0,#+2
\ 00000190 0008A0E1 MOV R0,R0, LSL #+16
\ 00000194 2008B0E1 MOVS R0,R0, LSR #+16
\ 00000198 202090E2 ADDS R2,R0,#+32
194 OSTimeDlyHMSM(0, 0, delay1 / 1000, delay1 % 1000);
\ 0000019C 0200B0E1 MOVS R0,R2
\ 000001A0 FA1FA0E3 MOV R1,#+1000
\ 000001A4 ........ _BLF ??divu32_a,??rA??divu32_a
\ 000001A8 0030B0E1 MOVS R3,R0
\ 000001AC 0338A0E1 MOV R3,R3, LSL #+16
\ 000001B0 2338B0E1 MOVS R3,R3, LSR #+16
\ 000001B4 0200B0E1 MOVS R0,R2
\ 000001B8 FA1FA0E3 MOV R1,#+1000
\ 000001BC ........ _BLF ??divu32_a,??rA??divu32_a
\ 000001C0 0120B0E1 MOVS R2,R1
\ 000001C4 FF2012E2 ANDS R2,R2,#0xFF ;; Zero extend
\ 000001C8 0010A0E3 MOV R1,#+0
\ 000001CC 0000A0E3 MOV R0,#+0
\ 000001D0 ........ _BLF OSTimeDlyHMSM,??OSTimeDlyHMSM??rA
\ 000001D4 016096E2 ADDS R6,R6,#+1
\ ??AppTaskStart_7:
\ 000001D8 FF6016E2 ANDS R6,R6,#0xFF ;; Zero extend
\ 000001DC 140056E3 CMP R6,#+20
\ 000001E0 98FFFF2A BCS ??AppTaskStart_1
\ 000001E4 0150A0E3 MOV R5,#+1
\ 000001E8 E0FFFFEA B ??AppTaskStart_10
\ ??AppTaskStart_0:
\ 000001EC ........ DC32 AppTerminalRx
\ 000001F0 ........ DC32 AppKbdQStorage
195 }
196 }
197 }
198
199 /*
200 *********************************************************************************************************
201 * KEYBOARD RESPONSE TASK
202 *
203 * Description : This task monitors the state of the push buttons and passes messages to AppTaskStart()
204 *
205 * Arguments : p_arg is the argument passed to 'AppStartKbd()' by 'OSTaskCreate()'.
206 *
207 * Returns : none
208 *********************************************************************************************************
209 */
210
\ In segment CODE, align 4, keep-with-next
211 static void AppTaskKbd (void *p_arg)
212 {
\ AppTaskKbd:
\ 00000000 F04F2DE9 PUSH {R4-R11,LR}
213 CPU_BOOLEAN b1; /* State of Push Button #1 */
214 CPU_BOOLEAN b1_prev;
215 CPU_BOOLEAN b2; /* State of Push Button #2 */
216 CPU_BOOLEAN b2_prev;
217 CPU_BOOLEAN b3; /* State of Push Button #3 */
218 CPU_BOOLEAN b3_prev;
219 CPU_BOOLEAN b4; /* State of Push Button #4 */
220 CPU_BOOLEAN b4_prev;
221
222
223 (void)p_arg;
224
225 b1_prev = DEF_FALSE;
\ 00000004 00B0A0E3 MOV R11,#+0
226 b2_prev = DEF_FALSE;
\ 00000008 0040A0E3 MOV R4,#+0
227 b3_prev = DEF_FALSE;
\ 0000000C 0050A0E3 MOV R5,#+0
228 b4_prev = DEF_FALSE;
\ 00000010 0060A0E3 MOV R6,#+0
229
230 while (DEF_TRUE) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -