F203/Debug/F203 VER 1.list

30173 lines
1.2 MiB
Raw Blame History

F203 VER 1.elf: file format elf32-littlearm
Sections:
Idx Name Size VMA LMA File off Algn
0 .isr_vector 000001f8 08000000 08000000 00010000 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .text 0000cca0 080001f8 080001f8 000101f8 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .rodata 00017dec 0800ce98 0800ce98 0001ce98 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .ARM 00000008 08024c84 08024c84 00034c84 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .init_array 00000004 08024c8c 08024c8c 00034c8c 2**2
CONTENTS, ALLOC, LOAD, DATA
5 .fini_array 00000004 08024c90 08024c90 00034c90 2**2
CONTENTS, ALLOC, LOAD, DATA
6 .data 00000118 20020000 08024c94 00040000 2**2
CONTENTS, ALLOC, LOAD, DATA
7 .dtcmram 00000000 20000000 20000000 00040118 2**0
CONTENTS
8 .sram2 00000000 2007c000 2007c000 00040118 2**0
CONTENTS
9 .bss 0004bcb8 20020118 20020118 00040118 2**2
ALLOC
10 ._user_heap_stack 00000600 2006bdd0 2006bdd0 00040118 2**0
ALLOC
11 .ARM.attributes 0000002e 00000000 00000000 00040118 2**0
CONTENTS, READONLY
12 .debug_info 0002ec97 00000000 00000000 00040146 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_abbrev 00004080 00000000 00000000 0006eddd 2**0
CONTENTS, READONLY, DEBUGGING
14 .debug_aranges 000014d0 00000000 00000000 00072e60 2**3
CONTENTS, READONLY, DEBUGGING
15 .debug_ranges 00001320 00000000 00000000 00074330 2**3
CONTENTS, READONLY, DEBUGGING
16 .debug_line 0000d4ec 00000000 00000000 00075650 2**0
CONTENTS, READONLY, DEBUGGING
17 .debug_str 00008b60 00000000 00000000 00082b3c 2**0
CONTENTS, READONLY, DEBUGGING
18 .comment 0000007c 00000000 00000000 0008b69c 2**0
CONTENTS, READONLY
19 .debug_frame 000055c4 00000000 00000000 0008b718 2**2
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
080001f8 <__do_global_dtors_aux>:
80001f8: b510 push {r4, lr}
80001fa: 4c05 ldr r4, [pc, #20] ; (8000210 <_isr_vector_flash_end+0x18>)
80001fc: 7823 ldrb r3, [r4, #0]
80001fe: b933 cbnz r3, 800020e <__do_global_dtors_aux+0x16>
8000200: 4b04 ldr r3, [pc, #16] ; (8000214 <_isr_vector_flash_end+0x1c>)
8000202: b113 cbz r3, 800020a <__do_global_dtors_aux+0x12>
8000204: 4804 ldr r0, [pc, #16] ; (8000218 <_isr_vector_flash_end+0x20>)
8000206: f3af 8000 nop.w
800020a: 2301 movs r3, #1
800020c: 7023 strb r3, [r4, #0]
800020e: bd10 pop {r4, pc}
8000210: 20020118 .word 0x20020118
8000214: 00000000 .word 0x00000000
8000218: 0800ce80 .word 0x0800ce80
0800021c <frame_dummy>:
800021c: b508 push {r3, lr}
800021e: 4b03 ldr r3, [pc, #12] ; (800022c <frame_dummy+0x10>)
8000220: b11b cbz r3, 800022a <frame_dummy+0xe>
8000222: 4903 ldr r1, [pc, #12] ; (8000230 <frame_dummy+0x14>)
8000224: 4803 ldr r0, [pc, #12] ; (8000234 <frame_dummy+0x18>)
8000226: f3af 8000 nop.w
800022a: bd08 pop {r3, pc}
800022c: 00000000 .word 0x00000000
8000230: 2002011c .word 0x2002011c
8000234: 0800ce80 .word 0x0800ce80
08000238 <__aeabi_uldivmod>:
8000238: b953 cbnz r3, 8000250 <__aeabi_uldivmod+0x18>
800023a: b94a cbnz r2, 8000250 <__aeabi_uldivmod+0x18>
800023c: 2900 cmp r1, #0
800023e: bf08 it eq
8000240: 2800 cmpeq r0, #0
8000242: bf1c itt ne
8000244: f04f 31ff movne.w r1, #4294967295
8000248: f04f 30ff movne.w r0, #4294967295
800024c: f000 b97a b.w 8000544 <__aeabi_idiv0>
8000250: f1ad 0c08 sub.w ip, sp, #8
8000254: e96d ce04 strd ip, lr, [sp, #-16]!
8000258: f000 f806 bl 8000268 <__udivmoddi4>
800025c: f8dd e004 ldr.w lr, [sp, #4]
8000260: e9dd 2302 ldrd r2, r3, [sp, #8]
8000264: b004 add sp, #16
8000266: 4770 bx lr
08000268 <__udivmoddi4>:
8000268: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
800026c: 468c mov ip, r1
800026e: 460d mov r5, r1
8000270: 4604 mov r4, r0
8000272: 9e08 ldr r6, [sp, #32]
8000274: 2b00 cmp r3, #0
8000276: d151 bne.n 800031c <__udivmoddi4+0xb4>
8000278: 428a cmp r2, r1
800027a: 4617 mov r7, r2
800027c: d96d bls.n 800035a <__udivmoddi4+0xf2>
800027e: fab2 fe82 clz lr, r2
8000282: f1be 0f00 cmp.w lr, #0
8000286: d00b beq.n 80002a0 <__udivmoddi4+0x38>
8000288: f1ce 0c20 rsb ip, lr, #32
800028c: fa01 f50e lsl.w r5, r1, lr
8000290: fa20 fc0c lsr.w ip, r0, ip
8000294: fa02 f70e lsl.w r7, r2, lr
8000298: ea4c 0c05 orr.w ip, ip, r5
800029c: fa00 f40e lsl.w r4, r0, lr
80002a0: ea4f 4a17 mov.w sl, r7, lsr #16
80002a4: 0c25 lsrs r5, r4, #16
80002a6: fbbc f8fa udiv r8, ip, sl
80002aa: fa1f f987 uxth.w r9, r7
80002ae: fb0a cc18 mls ip, sl, r8, ip
80002b2: ea45 450c orr.w r5, r5, ip, lsl #16
80002b6: fb08 f309 mul.w r3, r8, r9
80002ba: 42ab cmp r3, r5
80002bc: d90a bls.n 80002d4 <__udivmoddi4+0x6c>
80002be: 19ed adds r5, r5, r7
80002c0: f108 32ff add.w r2, r8, #4294967295
80002c4: f080 8123 bcs.w 800050e <__udivmoddi4+0x2a6>
80002c8: 42ab cmp r3, r5
80002ca: f240 8120 bls.w 800050e <__udivmoddi4+0x2a6>
80002ce: f1a8 0802 sub.w r8, r8, #2
80002d2: 443d add r5, r7
80002d4: 1aed subs r5, r5, r3
80002d6: b2a4 uxth r4, r4
80002d8: fbb5 f0fa udiv r0, r5, sl
80002dc: fb0a 5510 mls r5, sl, r0, r5
80002e0: ea44 4405 orr.w r4, r4, r5, lsl #16
80002e4: fb00 f909 mul.w r9, r0, r9
80002e8: 45a1 cmp r9, r4
80002ea: d909 bls.n 8000300 <__udivmoddi4+0x98>
80002ec: 19e4 adds r4, r4, r7
80002ee: f100 33ff add.w r3, r0, #4294967295
80002f2: f080 810a bcs.w 800050a <__udivmoddi4+0x2a2>
80002f6: 45a1 cmp r9, r4
80002f8: f240 8107 bls.w 800050a <__udivmoddi4+0x2a2>
80002fc: 3802 subs r0, #2
80002fe: 443c add r4, r7
8000300: eba4 0409 sub.w r4, r4, r9
8000304: ea40 4008 orr.w r0, r0, r8, lsl #16
8000308: 2100 movs r1, #0
800030a: 2e00 cmp r6, #0
800030c: d061 beq.n 80003d2 <__udivmoddi4+0x16a>
800030e: fa24 f40e lsr.w r4, r4, lr
8000312: 2300 movs r3, #0
8000314: 6034 str r4, [r6, #0]
8000316: 6073 str r3, [r6, #4]
8000318: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
800031c: 428b cmp r3, r1
800031e: d907 bls.n 8000330 <__udivmoddi4+0xc8>
8000320: 2e00 cmp r6, #0
8000322: d054 beq.n 80003ce <__udivmoddi4+0x166>
8000324: 2100 movs r1, #0
8000326: e886 0021 stmia.w r6, {r0, r5}
800032a: 4608 mov r0, r1
800032c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
8000330: fab3 f183 clz r1, r3
8000334: 2900 cmp r1, #0
8000336: f040 808e bne.w 8000456 <__udivmoddi4+0x1ee>
800033a: 42ab cmp r3, r5
800033c: d302 bcc.n 8000344 <__udivmoddi4+0xdc>
800033e: 4282 cmp r2, r0
8000340: f200 80fa bhi.w 8000538 <__udivmoddi4+0x2d0>
8000344: 1a84 subs r4, r0, r2
8000346: eb65 0503 sbc.w r5, r5, r3
800034a: 2001 movs r0, #1
800034c: 46ac mov ip, r5
800034e: 2e00 cmp r6, #0
8000350: d03f beq.n 80003d2 <__udivmoddi4+0x16a>
8000352: e886 1010 stmia.w r6, {r4, ip}
8000356: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
800035a: b912 cbnz r2, 8000362 <__udivmoddi4+0xfa>
800035c: 2701 movs r7, #1
800035e: fbb7 f7f2 udiv r7, r7, r2
8000362: fab7 fe87 clz lr, r7
8000366: f1be 0f00 cmp.w lr, #0
800036a: d134 bne.n 80003d6 <__udivmoddi4+0x16e>
800036c: 1beb subs r3, r5, r7
800036e: 0c3a lsrs r2, r7, #16
8000370: fa1f fc87 uxth.w ip, r7
8000374: 2101 movs r1, #1
8000376: fbb3 f8f2 udiv r8, r3, r2
800037a: 0c25 lsrs r5, r4, #16
800037c: fb02 3318 mls r3, r2, r8, r3
8000380: ea45 4503 orr.w r5, r5, r3, lsl #16
8000384: fb0c f308 mul.w r3, ip, r8
8000388: 42ab cmp r3, r5
800038a: d907 bls.n 800039c <__udivmoddi4+0x134>
800038c: 19ed adds r5, r5, r7
800038e: f108 30ff add.w r0, r8, #4294967295
8000392: d202 bcs.n 800039a <__udivmoddi4+0x132>
8000394: 42ab cmp r3, r5
8000396: f200 80d1 bhi.w 800053c <__udivmoddi4+0x2d4>
800039a: 4680 mov r8, r0
800039c: 1aed subs r5, r5, r3
800039e: b2a3 uxth r3, r4
80003a0: fbb5 f0f2 udiv r0, r5, r2
80003a4: fb02 5510 mls r5, r2, r0, r5
80003a8: ea43 4405 orr.w r4, r3, r5, lsl #16
80003ac: fb0c fc00 mul.w ip, ip, r0
80003b0: 45a4 cmp ip, r4
80003b2: d907 bls.n 80003c4 <__udivmoddi4+0x15c>
80003b4: 19e4 adds r4, r4, r7
80003b6: f100 33ff add.w r3, r0, #4294967295
80003ba: d202 bcs.n 80003c2 <__udivmoddi4+0x15a>
80003bc: 45a4 cmp ip, r4
80003be: f200 80b8 bhi.w 8000532 <__udivmoddi4+0x2ca>
80003c2: 4618 mov r0, r3
80003c4: eba4 040c sub.w r4, r4, ip
80003c8: ea40 4008 orr.w r0, r0, r8, lsl #16
80003cc: e79d b.n 800030a <__udivmoddi4+0xa2>
80003ce: 4631 mov r1, r6
80003d0: 4630 mov r0, r6
80003d2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
80003d6: f1ce 0420 rsb r4, lr, #32
80003da: fa05 f30e lsl.w r3, r5, lr
80003de: fa07 f70e lsl.w r7, r7, lr
80003e2: fa20 f804 lsr.w r8, r0, r4
80003e6: 0c3a lsrs r2, r7, #16
80003e8: fa25 f404 lsr.w r4, r5, r4
80003ec: ea48 0803 orr.w r8, r8, r3
80003f0: fbb4 f1f2 udiv r1, r4, r2
80003f4: ea4f 4518 mov.w r5, r8, lsr #16
80003f8: fb02 4411 mls r4, r2, r1, r4
80003fc: fa1f fc87 uxth.w ip, r7
8000400: ea45 4504 orr.w r5, r5, r4, lsl #16
8000404: fb01 f30c mul.w r3, r1, ip
8000408: 42ab cmp r3, r5
800040a: fa00 f40e lsl.w r4, r0, lr
800040e: d909 bls.n 8000424 <__udivmoddi4+0x1bc>
8000410: 19ed adds r5, r5, r7
8000412: f101 30ff add.w r0, r1, #4294967295
8000416: f080 808a bcs.w 800052e <__udivmoddi4+0x2c6>
800041a: 42ab cmp r3, r5
800041c: f240 8087 bls.w 800052e <__udivmoddi4+0x2c6>
8000420: 3902 subs r1, #2
8000422: 443d add r5, r7
8000424: 1aeb subs r3, r5, r3
8000426: fa1f f588 uxth.w r5, r8
800042a: fbb3 f0f2 udiv r0, r3, r2
800042e: fb02 3310 mls r3, r2, r0, r3
8000432: ea45 4503 orr.w r5, r5, r3, lsl #16
8000436: fb00 f30c mul.w r3, r0, ip
800043a: 42ab cmp r3, r5
800043c: d907 bls.n 800044e <__udivmoddi4+0x1e6>
800043e: 19ed adds r5, r5, r7
8000440: f100 38ff add.w r8, r0, #4294967295
8000444: d26f bcs.n 8000526 <__udivmoddi4+0x2be>
8000446: 42ab cmp r3, r5
8000448: d96d bls.n 8000526 <__udivmoddi4+0x2be>
800044a: 3802 subs r0, #2
800044c: 443d add r5, r7
800044e: 1aeb subs r3, r5, r3
8000450: ea40 4101 orr.w r1, r0, r1, lsl #16
8000454: e78f b.n 8000376 <__udivmoddi4+0x10e>
8000456: f1c1 0720 rsb r7, r1, #32
800045a: fa22 f807 lsr.w r8, r2, r7
800045e: 408b lsls r3, r1
8000460: fa05 f401 lsl.w r4, r5, r1
8000464: ea48 0303 orr.w r3, r8, r3
8000468: fa20 fe07 lsr.w lr, r0, r7
800046c: ea4f 4c13 mov.w ip, r3, lsr #16
8000470: 40fd lsrs r5, r7
8000472: ea4e 0e04 orr.w lr, lr, r4
8000476: fbb5 f9fc udiv r9, r5, ip
800047a: ea4f 441e mov.w r4, lr, lsr #16
800047e: fb0c 5519 mls r5, ip, r9, r5
8000482: fa1f f883 uxth.w r8, r3
8000486: ea44 4505 orr.w r5, r4, r5, lsl #16
800048a: fb09 f408 mul.w r4, r9, r8
800048e: 42ac cmp r4, r5
8000490: fa02 f201 lsl.w r2, r2, r1
8000494: fa00 fa01 lsl.w sl, r0, r1
8000498: d908 bls.n 80004ac <__udivmoddi4+0x244>
800049a: 18ed adds r5, r5, r3
800049c: f109 30ff add.w r0, r9, #4294967295
80004a0: d243 bcs.n 800052a <__udivmoddi4+0x2c2>
80004a2: 42ac cmp r4, r5
80004a4: d941 bls.n 800052a <__udivmoddi4+0x2c2>
80004a6: f1a9 0902 sub.w r9, r9, #2
80004aa: 441d add r5, r3
80004ac: 1b2d subs r5, r5, r4
80004ae: fa1f fe8e uxth.w lr, lr
80004b2: fbb5 f0fc udiv r0, r5, ip
80004b6: fb0c 5510 mls r5, ip, r0, r5
80004ba: ea4e 4405 orr.w r4, lr, r5, lsl #16
80004be: fb00 f808 mul.w r8, r0, r8
80004c2: 45a0 cmp r8, r4
80004c4: d907 bls.n 80004d6 <__udivmoddi4+0x26e>
80004c6: 18e4 adds r4, r4, r3
80004c8: f100 35ff add.w r5, r0, #4294967295
80004cc: d229 bcs.n 8000522 <__udivmoddi4+0x2ba>
80004ce: 45a0 cmp r8, r4
80004d0: d927 bls.n 8000522 <__udivmoddi4+0x2ba>
80004d2: 3802 subs r0, #2
80004d4: 441c add r4, r3
80004d6: ea40 4009 orr.w r0, r0, r9, lsl #16
80004da: eba4 0408 sub.w r4, r4, r8
80004de: fba0 8902 umull r8, r9, r0, r2
80004e2: 454c cmp r4, r9
80004e4: 46c6 mov lr, r8
80004e6: 464d mov r5, r9
80004e8: d315 bcc.n 8000516 <__udivmoddi4+0x2ae>
80004ea: d012 beq.n 8000512 <__udivmoddi4+0x2aa>
80004ec: b156 cbz r6, 8000504 <__udivmoddi4+0x29c>
80004ee: ebba 030e subs.w r3, sl, lr
80004f2: eb64 0405 sbc.w r4, r4, r5
80004f6: fa04 f707 lsl.w r7, r4, r7
80004fa: 40cb lsrs r3, r1
80004fc: 431f orrs r7, r3
80004fe: 40cc lsrs r4, r1
8000500: 6037 str r7, [r6, #0]
8000502: 6074 str r4, [r6, #4]
8000504: 2100 movs r1, #0
8000506: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
800050a: 4618 mov r0, r3
800050c: e6f8 b.n 8000300 <__udivmoddi4+0x98>
800050e: 4690 mov r8, r2
8000510: e6e0 b.n 80002d4 <__udivmoddi4+0x6c>
8000512: 45c2 cmp sl, r8
8000514: d2ea bcs.n 80004ec <__udivmoddi4+0x284>
8000516: ebb8 0e02 subs.w lr, r8, r2
800051a: eb69 0503 sbc.w r5, r9, r3
800051e: 3801 subs r0, #1
8000520: e7e4 b.n 80004ec <__udivmoddi4+0x284>
8000522: 4628 mov r0, r5
8000524: e7d7 b.n 80004d6 <__udivmoddi4+0x26e>
8000526: 4640 mov r0, r8
8000528: e791 b.n 800044e <__udivmoddi4+0x1e6>
800052a: 4681 mov r9, r0
800052c: e7be b.n 80004ac <__udivmoddi4+0x244>
800052e: 4601 mov r1, r0
8000530: e778 b.n 8000424 <__udivmoddi4+0x1bc>
8000532: 3802 subs r0, #2
8000534: 443c add r4, r7
8000536: e745 b.n 80003c4 <__udivmoddi4+0x15c>
8000538: 4608 mov r0, r1
800053a: e708 b.n 800034e <__udivmoddi4+0xe6>
800053c: f1a8 0802 sub.w r8, r8, #2
8000540: 443d add r5, r7
8000542: e72b b.n 800039c <__udivmoddi4+0x134>
08000544 <__aeabi_idiv0>:
8000544: 4770 bx lr
8000546: bf00 nop
08000548 <Off>:
void Off(void)
{
8000548: b580 push {r7, lr}
800054a: af00 add r7, sp, #0
NeedOff = false;
800054c: 4b11 ldr r3, [pc, #68] ; (8000594 <Off+0x4c>)
800054e: 2200 movs r2, #0
8000550: 701a strb r2, [r3, #0]
BSP_LCD_DisplayOff();
8000552: f001 fcf7 bl 8001f44 <BSP_LCD_DisplayOff>
HAL_GPIO_WritePin(DISP_ON_GPIO_Port, DISP_ON_Pin, GPIO_PIN_SET); // BACKLIGHT_OFF
8000556: 2201 movs r2, #1
8000558: f44f 7180 mov.w r1, #256 ; 0x100
800055c: 480e ldr r0, [pc, #56] ; (8000598 <Off+0x50>)
800055e: f009 f899 bl 8009694 <HAL_GPIO_WritePin>
while(HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_SET);
8000562: bf00 nop
8000564: 2101 movs r1, #1
8000566: 480c ldr r0, [pc, #48] ; (8000598 <Off+0x50>)
8000568: f009 f87c bl 8009664 <HAL_GPIO_ReadPin>
800056c: 4603 mov r3, r0
800056e: 2b01 cmp r3, #1
8000570: d0f8 beq.n 8000564 <Off+0x1c>
HAL_GPIO_WritePin(ON_GPIO_Port, ON_Pin, GPIO_PIN_RESET);
8000572: 2200 movs r2, #0
8000574: f44f 7180 mov.w r1, #256 ; 0x100
8000578: 4808 ldr r0, [pc, #32] ; (800059c <Off+0x54>)
800057a: f009 f88b bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(ON1_GPIO_Port, ON1_Pin, GPIO_PIN_RESET);
800057e: 2200 movs r2, #0
8000580: 2120 movs r1, #32
8000582: 4806 ldr r0, [pc, #24] ; (800059c <Off+0x54>)
8000584: f009 f886 bl 8009694 <HAL_GPIO_WritePin>
HAL_Delay(300);
8000588: f44f 7096 mov.w r0, #300 ; 0x12c
800058c: f008 f89c bl 80086c8 <HAL_Delay>
while(1);
8000590: e7fe b.n 8000590 <Off+0x48>
8000592: bf00 nop
8000594: 20020135 .word 0x20020135
8000598: 40020000 .word 0x40020000
800059c: 40021400 .word 0x40021400
080005a0 <MX_DMA2D_Init>:
DMA2D_HandleTypeDef hdma2d;
/* DMA2D init function */
void MX_DMA2D_Init(void)
{
80005a0: b580 push {r7, lr}
80005a2: af00 add r7, sp, #0
hdma2d.Instance = DMA2D;
80005a4: 4b18 ldr r3, [pc, #96] ; (8000608 <MX_DMA2D_Init+0x68>)
80005a6: 4a19 ldr r2, [pc, #100] ; (800060c <MX_DMA2D_Init+0x6c>)
80005a8: 601a str r2, [r3, #0]
hdma2d.Init.Mode = DMA2D_M2M;
80005aa: 4b17 ldr r3, [pc, #92] ; (8000608 <MX_DMA2D_Init+0x68>)
80005ac: 2200 movs r2, #0
80005ae: 605a str r2, [r3, #4]
hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB565;
80005b0: 4b15 ldr r3, [pc, #84] ; (8000608 <MX_DMA2D_Init+0x68>)
80005b2: 2202 movs r2, #2
80005b4: 609a str r2, [r3, #8]
hdma2d.Init.OutputOffset = 0;
80005b6: 4b14 ldr r3, [pc, #80] ; (8000608 <MX_DMA2D_Init+0x68>)
80005b8: 2200 movs r2, #0
80005ba: 60da str r2, [r3, #12]
hdma2d.LayerCfg[1].InputOffset = 0;
80005bc: 4b12 ldr r3, [pc, #72] ; (8000608 <MX_DMA2D_Init+0x68>)
80005be: 2200 movs r2, #0
80005c0: 639a str r2, [r3, #56] ; 0x38
hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_RGB565;
80005c2: 4b11 ldr r3, [pc, #68] ; (8000608 <MX_DMA2D_Init+0x68>)
80005c4: 2202 movs r2, #2
80005c6: 63da str r2, [r3, #60] ; 0x3c
hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
80005c8: 4b0f ldr r3, [pc, #60] ; (8000608 <MX_DMA2D_Init+0x68>)
80005ca: 2200 movs r2, #0
80005cc: 641a str r2, [r3, #64] ; 0x40
hdma2d.LayerCfg[1].InputAlpha = 0;
80005ce: 4b0e ldr r3, [pc, #56] ; (8000608 <MX_DMA2D_Init+0x68>)
80005d0: 2200 movs r2, #0
80005d2: 645a str r2, [r3, #68] ; 0x44
hdma2d.LayerCfg[1].AlphaInverted = DMA2D_REGULAR_ALPHA;
80005d4: 4b0c ldr r3, [pc, #48] ; (8000608 <MX_DMA2D_Init+0x68>)
80005d6: 2200 movs r2, #0
80005d8: 649a str r2, [r3, #72] ; 0x48
hdma2d.LayerCfg[1].RedBlueSwap = DMA2D_RB_REGULAR;
80005da: 4b0b ldr r3, [pc, #44] ; (8000608 <MX_DMA2D_Init+0x68>)
80005dc: 2200 movs r2, #0
80005de: 64da str r2, [r3, #76] ; 0x4c
if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
80005e0: 4809 ldr r0, [pc, #36] ; (8000608 <MX_DMA2D_Init+0x68>)
80005e2: f008 fbef bl 8008dc4 <HAL_DMA2D_Init>
80005e6: 4603 mov r3, r0
80005e8: 2b00 cmp r3, #0
80005ea: d001 beq.n 80005f0 <MX_DMA2D_Init+0x50>
{
Error_Handler();
80005ec: f002 fe52 bl 8003294 <Error_Handler>
}
if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK)
80005f0: 2101 movs r1, #1
80005f2: 4805 ldr r0, [pc, #20] ; (8000608 <MX_DMA2D_Init+0x68>)
80005f4: f008 fd54 bl 80090a0 <HAL_DMA2D_ConfigLayer>
80005f8: 4603 mov r3, r0
80005fa: 2b00 cmp r3, #0
80005fc: d001 beq.n 8000602 <MX_DMA2D_Init+0x62>
{
Error_Handler();
80005fe: f002 fe49 bl 8003294 <Error_Handler>
}
}
8000602: bf00 nop
8000604: bd80 pop {r7, pc}
8000606: bf00 nop
8000608: 2006b380 .word 0x2006b380
800060c: 4002b000 .word 0x4002b000
08000610 <HAL_DMA2D_MspInit>:
void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef* dma2dHandle)
{
8000610: b480 push {r7}
8000612: b085 sub sp, #20
8000614: af00 add r7, sp, #0
8000616: 6078 str r0, [r7, #4]
if(dma2dHandle->Instance==DMA2D)
8000618: 687b ldr r3, [r7, #4]
800061a: 681b ldr r3, [r3, #0]
800061c: 4a0a ldr r2, [pc, #40] ; (8000648 <HAL_DMA2D_MspInit+0x38>)
800061e: 4293 cmp r3, r2
8000620: d10b bne.n 800063a <HAL_DMA2D_MspInit+0x2a>
{
/* USER CODE BEGIN DMA2D_MspInit 0 */
/* USER CODE END DMA2D_MspInit 0 */
/* DMA2D clock enable */
__HAL_RCC_DMA2D_CLK_ENABLE();
8000622: 4a0a ldr r2, [pc, #40] ; (800064c <HAL_DMA2D_MspInit+0x3c>)
8000624: 4b09 ldr r3, [pc, #36] ; (800064c <HAL_DMA2D_MspInit+0x3c>)
8000626: 6b1b ldr r3, [r3, #48] ; 0x30
8000628: f443 0300 orr.w r3, r3, #8388608 ; 0x800000
800062c: 6313 str r3, [r2, #48] ; 0x30
800062e: 4b07 ldr r3, [pc, #28] ; (800064c <HAL_DMA2D_MspInit+0x3c>)
8000630: 6b1b ldr r3, [r3, #48] ; 0x30
8000632: f403 0300 and.w r3, r3, #8388608 ; 0x800000
8000636: 60fb str r3, [r7, #12]
8000638: 68fb ldr r3, [r7, #12]
/* USER CODE BEGIN DMA2D_MspInit 1 */
/* USER CODE END DMA2D_MspInit 1 */
}
}
800063a: bf00 nop
800063c: 3714 adds r7, #20
800063e: 46bd mov sp, r7
8000640: f85d 7b04 ldr.w r7, [sp], #4
8000644: 4770 bx lr
8000646: bf00 nop
8000648: 4002b000 .word 0x4002b000
800064c: 40023800 .word 0x40023800
08000650 <MX_GPIO_Init>:
* EXTI
* Free pins are configured automatically as Analog (this feature is enabled through
* the Code Generation settings)
*/
void MX_GPIO_Init(void)
{
8000650: b580 push {r7, lr}
8000652: b08e sub sp, #56 ; 0x38
8000654: af00 add r7, sp, #0
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOE_CLK_ENABLE();
8000656: 4a73 ldr r2, [pc, #460] ; (8000824 <MX_GPIO_Init+0x1d4>)
8000658: 4b72 ldr r3, [pc, #456] ; (8000824 <MX_GPIO_Init+0x1d4>)
800065a: 6b1b ldr r3, [r3, #48] ; 0x30
800065c: f043 0310 orr.w r3, r3, #16
8000660: 6313 str r3, [r2, #48] ; 0x30
8000662: 4b70 ldr r3, [pc, #448] ; (8000824 <MX_GPIO_Init+0x1d4>)
8000664: 6b1b ldr r3, [r3, #48] ; 0x30
8000666: f003 0310 and.w r3, r3, #16
800066a: 623b str r3, [r7, #32]
800066c: 6a3b ldr r3, [r7, #32]
__HAL_RCC_GPIOC_CLK_ENABLE();
800066e: 4a6d ldr r2, [pc, #436] ; (8000824 <MX_GPIO_Init+0x1d4>)
8000670: 4b6c ldr r3, [pc, #432] ; (8000824 <MX_GPIO_Init+0x1d4>)
8000672: 6b1b ldr r3, [r3, #48] ; 0x30
8000674: f043 0304 orr.w r3, r3, #4
8000678: 6313 str r3, [r2, #48] ; 0x30
800067a: 4b6a ldr r3, [pc, #424] ; (8000824 <MX_GPIO_Init+0x1d4>)
800067c: 6b1b ldr r3, [r3, #48] ; 0x30
800067e: f003 0304 and.w r3, r3, #4
8000682: 61fb str r3, [r7, #28]
8000684: 69fb ldr r3, [r7, #28]
__HAL_RCC_GPIOF_CLK_ENABLE();
8000686: 4a67 ldr r2, [pc, #412] ; (8000824 <MX_GPIO_Init+0x1d4>)
8000688: 4b66 ldr r3, [pc, #408] ; (8000824 <MX_GPIO_Init+0x1d4>)
800068a: 6b1b ldr r3, [r3, #48] ; 0x30
800068c: f043 0320 orr.w r3, r3, #32
8000690: 6313 str r3, [r2, #48] ; 0x30
8000692: 4b64 ldr r3, [pc, #400] ; (8000824 <MX_GPIO_Init+0x1d4>)
8000694: 6b1b ldr r3, [r3, #48] ; 0x30
8000696: f003 0320 and.w r3, r3, #32
800069a: 61bb str r3, [r7, #24]
800069c: 69bb ldr r3, [r7, #24]
__HAL_RCC_GPIOH_CLK_ENABLE();
800069e: 4a61 ldr r2, [pc, #388] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006a0: 4b60 ldr r3, [pc, #384] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006a2: 6b1b ldr r3, [r3, #48] ; 0x30
80006a4: f043 0380 orr.w r3, r3, #128 ; 0x80
80006a8: 6313 str r3, [r2, #48] ; 0x30
80006aa: 4b5e ldr r3, [pc, #376] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006ac: 6b1b ldr r3, [r3, #48] ; 0x30
80006ae: f003 0380 and.w r3, r3, #128 ; 0x80
80006b2: 617b str r3, [r7, #20]
80006b4: 697b ldr r3, [r7, #20]
__HAL_RCC_GPIOA_CLK_ENABLE();
80006b6: 4a5b ldr r2, [pc, #364] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006b8: 4b5a ldr r3, [pc, #360] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006ba: 6b1b ldr r3, [r3, #48] ; 0x30
80006bc: f043 0301 orr.w r3, r3, #1
80006c0: 6313 str r3, [r2, #48] ; 0x30
80006c2: 4b58 ldr r3, [pc, #352] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006c4: 6b1b ldr r3, [r3, #48] ; 0x30
80006c6: f003 0301 and.w r3, r3, #1
80006ca: 613b str r3, [r7, #16]
80006cc: 693b ldr r3, [r7, #16]
__HAL_RCC_GPIOB_CLK_ENABLE();
80006ce: 4a55 ldr r2, [pc, #340] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006d0: 4b54 ldr r3, [pc, #336] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006d2: 6b1b ldr r3, [r3, #48] ; 0x30
80006d4: f043 0302 orr.w r3, r3, #2
80006d8: 6313 str r3, [r2, #48] ; 0x30
80006da: 4b52 ldr r3, [pc, #328] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006dc: 6b1b ldr r3, [r3, #48] ; 0x30
80006de: f003 0302 and.w r3, r3, #2
80006e2: 60fb str r3, [r7, #12]
80006e4: 68fb ldr r3, [r7, #12]
__HAL_RCC_GPIOG_CLK_ENABLE();
80006e6: 4a4f ldr r2, [pc, #316] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006e8: 4b4e ldr r3, [pc, #312] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006ea: 6b1b ldr r3, [r3, #48] ; 0x30
80006ec: f043 0340 orr.w r3, r3, #64 ; 0x40
80006f0: 6313 str r3, [r2, #48] ; 0x30
80006f2: 4b4c ldr r3, [pc, #304] ; (8000824 <MX_GPIO_Init+0x1d4>)
80006f4: 6b1b ldr r3, [r3, #48] ; 0x30
80006f6: f003 0340 and.w r3, r3, #64 ; 0x40
80006fa: 60bb str r3, [r7, #8]
80006fc: 68bb ldr r3, [r7, #8]
__HAL_RCC_GPIOD_CLK_ENABLE();
80006fe: 4a49 ldr r2, [pc, #292] ; (8000824 <MX_GPIO_Init+0x1d4>)
8000700: 4b48 ldr r3, [pc, #288] ; (8000824 <MX_GPIO_Init+0x1d4>)
8000702: 6b1b ldr r3, [r3, #48] ; 0x30
8000704: f043 0308 orr.w r3, r3, #8
8000708: 6313 str r3, [r2, #48] ; 0x30
800070a: 4b46 ldr r3, [pc, #280] ; (8000824 <MX_GPIO_Init+0x1d4>)
800070c: 6b1b ldr r3, [r3, #48] ; 0x30
800070e: f003 0308 and.w r3, r3, #8
8000712: 607b str r3, [r7, #4]
8000714: 687b ldr r3, [r7, #4]
HAL_GPIO_WritePin(GPIOE, (U1_Pin | U2_Pin | U3_Pin), GPIO_PIN_SET);
8000716: 2201 movs r2, #1
8000718: 2138 movs r1, #56 ; 0x38
800071a: 4843 ldr r0, [pc, #268] ; (8000828 <MX_GPIO_Init+0x1d8>)
800071c: f008 ffba bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(ON_GPIO_Port, ON_Pin, GPIO_PIN_SET);
8000720: 2201 movs r2, #1
8000722: f44f 7180 mov.w r1, #256 ; 0x100
8000726: 4841 ldr r0, [pc, #260] ; (800082c <MX_GPIO_Init+0x1dc>)
8000728: f008 ffb4 bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(RESET_GPIO_Port, RESET_Pin, GPIO_PIN_SET);
800072c: 2201 movs r2, #1
800072e: 2140 movs r1, #64 ; 0x40
8000730: 483f ldr r0, [pc, #252] ; (8000830 <MX_GPIO_Init+0x1e0>)
8000732: f008 ffaf bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(DISP_ON_GPIO_Port, DISP_ON_Pin, GPIO_PIN_SET);
8000736: 2201 movs r2, #1
8000738: f44f 7180 mov.w r1, #256 ; 0x100
800073c: 483d ldr r0, [pc, #244] ; (8000834 <MX_GPIO_Init+0x1e4>)
800073e: f008 ffa9 bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8000742: 2200 movs r2, #0
8000744: f44f 7100 mov.w r1, #512 ; 0x200
8000748: 4838 ldr r0, [pc, #224] ; (800082c <MX_GPIO_Init+0x1dc>)
800074a: f008 ffa3 bl 8009694 <HAL_GPIO_WritePin>
/*Configure GPIO pins : PEPin PEPin PEPin */
GPIO_InitStruct.Pin = U1_Pin|U2_Pin|U3_Pin;
800074e: 2338 movs r3, #56 ; 0x38
8000750: 627b str r3, [r7, #36] ; 0x24
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
8000752: 2301 movs r3, #1
8000754: 62bb str r3, [r7, #40] ; 0x28
GPIO_InitStruct.Pull = GPIO_PULLUP;
8000756: 2301 movs r3, #1
8000758: 62fb str r3, [r7, #44] ; 0x2c
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
800075a: 2303 movs r3, #3
800075c: 633b str r3, [r7, #48] ; 0x30
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
800075e: f107 0324 add.w r3, r7, #36 ; 0x24
8000762: 4619 mov r1, r3
8000764: 4830 ldr r0, [pc, #192] ; (8000828 <MX_GPIO_Init+0x1d8>)
8000766: f008 fdd3 bl 8009310 <HAL_GPIO_Init>
/*Configure GPIO pins : PAPin PAPin */
GPIO_InitStruct.Pin = K1_Pin;
800076a: f44f 7300 mov.w r3, #512 ; 0x200
800076e: 627b str r3, [r7, #36] ; 0x24
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
8000770: 2300 movs r3, #0
8000772: 62bb str r3, [r7, #40] ; 0x28
GPIO_InitStruct.Pull = GPIO_PULLUP;
8000774: 2301 movs r3, #1
8000776: 62fb str r3, [r7, #44] ; 0x2c
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
8000778: 2302 movs r3, #2
800077a: 633b str r3, [r7, #48] ; 0x30
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
800077c: f107 0324 add.w r3, r7, #36 ; 0x24
8000780: 4619 mov r1, r3
8000782: 482c ldr r0, [pc, #176] ; (8000834 <MX_GPIO_Init+0x1e4>)
8000784: f008 fdc4 bl 8009310 <HAL_GPIO_Init>
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = ON_Pin | ON1_Pin | RE_Pin;
8000788: f44f 7348 mov.w r3, #800 ; 0x320
800078c: 627b str r3, [r7, #36] ; 0x24
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
800078e: 2301 movs r3, #1
8000790: 62bb str r3, [r7, #40] ; 0x28
GPIO_InitStruct.Pull = GPIO_NOPULL;
8000792: 2300 movs r3, #0
8000794: 62fb str r3, [r7, #44] ; 0x2c
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
8000796: 2302 movs r3, #2
8000798: 633b str r3, [r7, #48] ; 0x30
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
800079a: f107 0324 add.w r3, r7, #36 ; 0x24
800079e: 4619 mov r1, r3
80007a0: 4822 ldr r0, [pc, #136] ; (800082c <MX_GPIO_Init+0x1dc>)
80007a2: f008 fdb5 bl 8009310 <HAL_GPIO_Init>
GPIO_InitStruct.Pin = DISP_ON_Pin;
80007a6: f44f 7380 mov.w r3, #256 ; 0x100
80007aa: 627b str r3, [r7, #36] ; 0x24
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
80007ac: 2301 movs r3, #1
80007ae: 62bb str r3, [r7, #40] ; 0x28
GPIO_InitStruct.Pull = GPIO_NOPULL;
80007b0: 2300 movs r3, #0
80007b2: 62fb str r3, [r7, #44] ; 0x2c
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
80007b4: 2302 movs r3, #2
80007b6: 633b str r3, [r7, #48] ; 0x30
HAL_GPIO_Init(DISP_ON_GPIO_Port, &GPIO_InitStruct);
80007b8: f107 0324 add.w r3, r7, #36 ; 0x24
80007bc: 4619 mov r1, r3
80007be: 481d ldr r0, [pc, #116] ; (8000834 <MX_GPIO_Init+0x1e4>)
80007c0: f008 fda6 bl 8009310 <HAL_GPIO_Init>
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = OFF_Pin;
80007c4: 2301 movs r3, #1
80007c6: 627b str r3, [r7, #36] ; 0x24
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
80007c8: 2300 movs r3, #0
80007ca: 62bb str r3, [r7, #40] ; 0x28
GPIO_InitStruct.Pull = GPIO_NOPULL;
80007cc: 2300 movs r3, #0
80007ce: 62fb str r3, [r7, #44] ; 0x2c
HAL_GPIO_Init(OFF_GPIO_Port, &GPIO_InitStruct);
80007d0: f107 0324 add.w r3, r7, #36 ; 0x24
80007d4: 4619 mov r1, r3
80007d6: 4817 ldr r0, [pc, #92] ; (8000834 <MX_GPIO_Init+0x1e4>)
80007d8: f008 fd9a bl 8009310 <HAL_GPIO_Init>
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = RESET_Pin;
80007dc: 2340 movs r3, #64 ; 0x40
80007de: 627b str r3, [r7, #36] ; 0x24
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
80007e0: 2301 movs r3, #1
80007e2: 62bb str r3, [r7, #40] ; 0x28
GPIO_InitStruct.Pull = GPIO_NOPULL;
80007e4: 2300 movs r3, #0
80007e6: 62fb str r3, [r7, #44] ; 0x2c
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
80007e8: 2302 movs r3, #2
80007ea: 633b str r3, [r7, #48] ; 0x30
HAL_GPIO_Init(RESET_GPIO_Port, &GPIO_InitStruct);
80007ec: f107 0324 add.w r3, r7, #36 ; 0x24
80007f0: 4619 mov r1, r3
80007f2: 480f ldr r0, [pc, #60] ; (8000830 <MX_GPIO_Init+0x1e0>)
80007f4: f008 fd8c bl 8009310 <HAL_GPIO_Init>
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(RE_GPIO_Port, &GPIO_InitStruct);*/
HAL_GPIO_WritePin(ON_GPIO_Port, ON_Pin, GPIO_PIN_SET);
80007f8: 2201 movs r2, #1
80007fa: f44f 7180 mov.w r1, #256 ; 0x100
80007fe: 480b ldr r0, [pc, #44] ; (800082c <MX_GPIO_Init+0x1dc>)
8000800: f008 ff48 bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(ON1_GPIO_Port, ON1_Pin, GPIO_PIN_SET);
8000804: 2201 movs r2, #1
8000806: 2120 movs r1, #32
8000808: 4808 ldr r0, [pc, #32] ; (800082c <MX_GPIO_Init+0x1dc>)
800080a: f008 ff43 bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(DISP_ON_GPIO_Port, DISP_ON_Pin, GPIO_PIN_SET); // BACKLIGHT IS OFF
800080e: 2201 movs r2, #1
8000810: f44f 7180 mov.w r1, #256 ; 0x100
8000814: 4807 ldr r0, [pc, #28] ; (8000834 <MX_GPIO_Init+0x1e4>)
8000816: f008 ff3d bl 8009694 <HAL_GPIO_WritePin>
}
800081a: bf00 nop
800081c: 3738 adds r7, #56 ; 0x38
800081e: 46bd mov sp, r7
8000820: bd80 pop {r7, pc}
8000822: bf00 nop
8000824: 40023800 .word 0x40023800
8000828: 40021000 .word 0x40021000
800082c: 40021400 .word 0x40021400
8000830: 40020c00 .word 0x40020c00
8000834: 40020000 .word 0x40020000
08000838 <initKeys>:
void initKeys(void)
{
8000838: b580 push {r7, lr}
800083a: af00 add r7, sp, #0
KeysIsReady = false;
800083c: 4b09 ldr r3, [pc, #36] ; (8000864 <initKeys+0x2c>)
800083e: 2200 movs r2, #0
8000840: 701a strb r2, [r3, #0]
HAL_GPIO_WritePin(U1_GPIO_Port, U1_Pin, GPIO_PIN_SET);
8000842: 2201 movs r2, #1
8000844: 2108 movs r1, #8
8000846: 4808 ldr r0, [pc, #32] ; (8000868 <initKeys+0x30>)
8000848: f008 ff24 bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(U2_GPIO_Port, U2_Pin, GPIO_PIN_SET);
800084c: 2201 movs r2, #1
800084e: 2110 movs r1, #16
8000850: 4805 ldr r0, [pc, #20] ; (8000868 <initKeys+0x30>)
8000852: f008 ff1f bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(U3_GPIO_Port, U3_Pin, GPIO_PIN_SET);
8000856: 2201 movs r2, #1
8000858: 2120 movs r1, #32
800085a: 4803 ldr r0, [pc, #12] ; (8000868 <initKeys+0x30>)
800085c: f008 ff1a bl 8009694 <HAL_GPIO_WritePin>
}
8000860: bf00 nop
8000862: bd80 pop {r7, pc}
8000864: 2002013a .word 0x2002013a
8000868: 40021000 .word 0x40021000
0800086c <readkey>:
uint32_t readkey(void)
{
800086c: b580 push {r7, lr}
800086e: b082 sub sp, #8
8000870: af00 add r7, sp, #0
uint32_t key = 0;
8000872: 2300 movs r3, #0
8000874: 607b str r3, [r7, #4]
if(KeysIsReady == false){
8000876: 4b34 ldr r3, [pc, #208] ; (8000948 <readkey+0xdc>)
8000878: 781b ldrb r3, [r3, #0]
800087a: b2db uxtb r3, r3
800087c: f083 0301 eor.w r3, r3, #1
8000880: b2db uxtb r3, r3
8000882: 2b00 cmp r3, #0
8000884: d001 beq.n 800088a <readkey+0x1e>
return 0;
8000886: 2300 movs r3, #0
8000888: e05a b.n 8000940 <readkey+0xd4>
}
if(HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_SET) {
800088a: 2101 movs r1, #1
800088c: 482f ldr r0, [pc, #188] ; (800094c <readkey+0xe0>)
800088e: f008 fee9 bl 8009664 <HAL_GPIO_ReadPin>
8000892: 4603 mov r3, r0
8000894: 2b01 cmp r3, #1
8000896: d101 bne.n 800089c <readkey+0x30>
key = KEY_PW;
8000898: 2301 movs r3, #1
800089a: 607b str r3, [r7, #4]
}
HAL_GPIO_WritePin(U1_GPIO_Port, U1_Pin, GPIO_PIN_SET);
800089c: 2201 movs r2, #1
800089e: 2108 movs r1, #8
80008a0: 482b ldr r0, [pc, #172] ; (8000950 <readkey+0xe4>)
80008a2: f008 fef7 bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(U2_GPIO_Port, U2_Pin, GPIO_PIN_SET);
80008a6: 2201 movs r2, #1
80008a8: 2110 movs r1, #16
80008aa: 4829 ldr r0, [pc, #164] ; (8000950 <readkey+0xe4>)
80008ac: f008 fef2 bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(U3_GPIO_Port, U3_Pin, GPIO_PIN_SET);
80008b0: 2201 movs r2, #1
80008b2: 2120 movs r1, #32
80008b4: 4826 ldr r0, [pc, #152] ; (8000950 <readkey+0xe4>)
80008b6: f008 feed bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(U1_GPIO_Port, U1_Pin, GPIO_PIN_RESET);
80008ba: 2200 movs r2, #0
80008bc: 2108 movs r1, #8
80008be: 4824 ldr r0, [pc, #144] ; (8000950 <readkey+0xe4>)
80008c0: f008 fee8 bl 8009694 <HAL_GPIO_WritePin>
if(HAL_GPIO_ReadPin(K1_GPIO_Port, K1_Pin) == GPIO_PIN_RESET) {
80008c4: f44f 7100 mov.w r1, #512 ; 0x200
80008c8: 4820 ldr r0, [pc, #128] ; (800094c <readkey+0xe0>)
80008ca: f008 fecb bl 8009664 <HAL_GPIO_ReadPin>
80008ce: 4603 mov r3, r0
80008d0: 2b00 cmp r3, #0
80008d2: d103 bne.n 80008dc <readkey+0x70>
key |= KEY_DN;
80008d4: 687b ldr r3, [r7, #4]
80008d6: f043 0304 orr.w r3, r3, #4
80008da: 607b str r3, [r7, #4]
}
HAL_GPIO_WritePin(U1_GPIO_Port, U1_Pin, GPIO_PIN_SET);
80008dc: 2201 movs r2, #1
80008de: 2108 movs r1, #8
80008e0: 481b ldr r0, [pc, #108] ; (8000950 <readkey+0xe4>)
80008e2: f008 fed7 bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(U2_GPIO_Port, U2_Pin, GPIO_PIN_RESET);
80008e6: 2200 movs r2, #0
80008e8: 2110 movs r1, #16
80008ea: 4819 ldr r0, [pc, #100] ; (8000950 <readkey+0xe4>)
80008ec: f008 fed2 bl 8009694 <HAL_GPIO_WritePin>
if(HAL_GPIO_ReadPin(K1_GPIO_Port, K1_Pin) == GPIO_PIN_RESET) {
80008f0: f44f 7100 mov.w r1, #512 ; 0x200
80008f4: 4815 ldr r0, [pc, #84] ; (800094c <readkey+0xe0>)
80008f6: f008 feb5 bl 8009664 <HAL_GPIO_ReadPin>
80008fa: 4603 mov r3, r0
80008fc: 2b00 cmp r3, #0
80008fe: d103 bne.n 8000908 <readkey+0x9c>
key |= KEY_OK;
8000900: 687b ldr r3, [r7, #4]
8000902: f043 0320 orr.w r3, r3, #32
8000906: 607b str r3, [r7, #4]
}
HAL_GPIO_WritePin(U2_GPIO_Port, U2_Pin, GPIO_PIN_SET);
8000908: 2201 movs r2, #1
800090a: 2110 movs r1, #16
800090c: 4810 ldr r0, [pc, #64] ; (8000950 <readkey+0xe4>)
800090e: f008 fec1 bl 8009694 <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(U3_GPIO_Port, U3_Pin, GPIO_PIN_RESET);
8000912: 2200 movs r2, #0
8000914: 2120 movs r1, #32
8000916: 480e ldr r0, [pc, #56] ; (8000950 <readkey+0xe4>)
8000918: f008 febc bl 8009694 <HAL_GPIO_WritePin>
if(HAL_GPIO_ReadPin(K1_GPIO_Port, K1_Pin) == GPIO_PIN_RESET) {
800091c: f44f 7100 mov.w r1, #512 ; 0x200
8000920: 480a ldr r0, [pc, #40] ; (800094c <readkey+0xe0>)
8000922: f008 fe9f bl 8009664 <HAL_GPIO_ReadPin>
8000926: 4603 mov r3, r0
8000928: 2b00 cmp r3, #0
800092a: d103 bne.n 8000934 <readkey+0xc8>
key |= KEY_UP;
800092c: 687b ldr r3, [r7, #4]
800092e: f043 0302 orr.w r3, r3, #2
8000932: 607b str r3, [r7, #4]
}
HAL_GPIO_WritePin(U3_GPIO_Port, U3_Pin, GPIO_PIN_SET);
8000934: 2201 movs r2, #1
8000936: 2120 movs r1, #32
8000938: 4805 ldr r0, [pc, #20] ; (8000950 <readkey+0xe4>)
800093a: f008 feab bl 8009694 <HAL_GPIO_WritePin>
return key;
800093e: 687b ldr r3, [r7, #4]
}
8000940: 4618 mov r0, r3
8000942: 3708 adds r7, #8
8000944: 46bd mov sp, r7
8000946: bd80 pop {r7, pc}
8000948: 2002013a .word 0x2002013a
800094c: 40020000 .word 0x40020000
8000950: 40021000 .word 0x40021000
08000954 <kbhit>:
uint32_t kbhit(void)
{
8000954: b580 push {r7, lr}
8000956: b082 sub sp, #8
8000958: af00 add r7, sp, #0
volatile uint32_t key = 0;;
800095a: 2300 movs r3, #0
800095c: 607b str r3, [r7, #4]
static uint16_t rep = 50;
do
{
key = readkey();
800095e: f7ff ff85 bl 800086c <readkey>
8000962: 4603 mov r3, r0
8000964: 607b str r3, [r7, #4]
if(!key)
8000966: 687b ldr r3, [r7, #4]
8000968: 2b00 cmp r3, #0
800096a: d10d bne.n 8000988 <kbhit+0x34>
{
if(dreb) dreb--;
800096c: 4b43 ldr r3, [pc, #268] ; (8000a7c <kbhit+0x128>)
800096e: 681b ldr r3, [r3, #0]
8000970: 2b00 cmp r3, #0
8000972: d005 beq.n 8000980 <kbhit+0x2c>
8000974: 4b41 ldr r3, [pc, #260] ; (8000a7c <kbhit+0x128>)
8000976: 681b ldr r3, [r3, #0]
8000978: 3b01 subs r3, #1
800097a: 4a40 ldr r2, [pc, #256] ; (8000a7c <kbhit+0x128>)
800097c: 6013 str r3, [r2, #0]
800097e: e00c b.n 800099a <kbhit+0x46>
else first = 1;
8000980: 4b3f ldr r3, [pc, #252] ; (8000a80 <kbhit+0x12c>)
8000982: 2201 movs r2, #1
8000984: 701a strb r2, [r3, #0]
8000986: e008 b.n 800099a <kbhit+0x46>
}
else
{
if(dreb < KEY_DBZ)
8000988: 4b3c ldr r3, [pc, #240] ; (8000a7c <kbhit+0x128>)
800098a: 681b ldr r3, [r3, #0]
800098c: 2b01 cmp r3, #1
800098e: d804 bhi.n 800099a <kbhit+0x46>
dreb++;
8000990: 4b3a ldr r3, [pc, #232] ; (8000a7c <kbhit+0x128>)
8000992: 681b ldr r3, [r3, #0]
8000994: 3301 adds r3, #1
8000996: 4a39 ldr r2, [pc, #228] ; (8000a7c <kbhit+0x128>)
8000998: 6013 str r3, [r2, #0]
}
}
while((dreb > 0) && (dreb < KEY_DBZ));
800099a: 4b38 ldr r3, [pc, #224] ; (8000a7c <kbhit+0x128>)
800099c: 681b ldr r3, [r3, #0]
800099e: 2b00 cmp r3, #0
80009a0: d003 beq.n 80009aa <kbhit+0x56>
80009a2: 4b36 ldr r3, [pc, #216] ; (8000a7c <kbhit+0x128>)
80009a4: 681b ldr r3, [r3, #0]
80009a6: 2b01 cmp r3, #1
80009a8: d9d9 bls.n 800095e <kbhit+0xa>
if(key == KEY_PW)
80009aa: 687b ldr r3, [r7, #4]
80009ac: 2b01 cmp r3, #1
80009ae: d129 bne.n 8000a04 <kbhit+0xb0>
{
do
{
key = readkey();
80009b0: f7ff ff5c bl 800086c <readkey>
80009b4: 4603 mov r3, r0
80009b6: 607b str r3, [r7, #4]
if(!key)
80009b8: 687b ldr r3, [r7, #4]
80009ba: 2b00 cmp r3, #0
80009bc: d10d bne.n 80009da <kbhit+0x86>
{
if(dreb) dreb--;
80009be: 4b2f ldr r3, [pc, #188] ; (8000a7c <kbhit+0x128>)
80009c0: 681b ldr r3, [r3, #0]
80009c2: 2b00 cmp r3, #0
80009c4: d005 beq.n 80009d2 <kbhit+0x7e>
80009c6: 4b2d ldr r3, [pc, #180] ; (8000a7c <kbhit+0x128>)
80009c8: 681b ldr r3, [r3, #0]
80009ca: 3b01 subs r3, #1
80009cc: 4a2b ldr r2, [pc, #172] ; (8000a7c <kbhit+0x128>)
80009ce: 6013 str r3, [r2, #0]
80009d0: e00e b.n 80009f0 <kbhit+0x9c>
else first = 1;
80009d2: 4b2b ldr r3, [pc, #172] ; (8000a80 <kbhit+0x12c>)
80009d4: 2201 movs r2, #1
80009d6: 701a strb r2, [r3, #0]
80009d8: e00a b.n 80009f0 <kbhit+0x9c>
}
else
{
if(dreb < 50000)
80009da: 4b28 ldr r3, [pc, #160] ; (8000a7c <kbhit+0x128>)
80009dc: 681b ldr r3, [r3, #0]
80009de: f24c 324f movw r2, #49999 ; 0xc34f
80009e2: 4293 cmp r3, r2
80009e4: d804 bhi.n 80009f0 <kbhit+0x9c>
dreb++;
80009e6: 4b25 ldr r3, [pc, #148] ; (8000a7c <kbhit+0x128>)
80009e8: 681b ldr r3, [r3, #0]
80009ea: 3301 adds r3, #1
80009ec: 4a23 ldr r2, [pc, #140] ; (8000a7c <kbhit+0x128>)
80009ee: 6013 str r3, [r2, #0]
}
}
while((dreb > 0) && (dreb < 50000));
80009f0: 4b22 ldr r3, [pc, #136] ; (8000a7c <kbhit+0x128>)
80009f2: 681b ldr r3, [r3, #0]
80009f4: 2b00 cmp r3, #0
80009f6: d005 beq.n 8000a04 <kbhit+0xb0>
80009f8: 4b20 ldr r3, [pc, #128] ; (8000a7c <kbhit+0x128>)
80009fa: 681b ldr r3, [r3, #0]
80009fc: f24c 324f movw r2, #49999 ; 0xc34f
8000a00: 4293 cmp r3, r2
8000a02: d9d5 bls.n 80009b0 <kbhit+0x5c>
if(!key) //<2F><><E5><F1> <20><><EA><ED><EE><EF> <20><><EE><F2><EF><F3><F9><E5>
8000a04: 687b ldr r3, [r7, #4]
8000a06: 2b00 cmp r3, #0
8000a08: d104 bne.n 8000a14 <kbhit+0xc0>
{
first = 1; //<2F><><E4><EE><F1><F2><EE><E2><E5><F0> <20><><EA><ED><EE><EF> <20><><EE><F2><EF><F3><F9><E5>
8000a0a: 4b1d ldr r3, [pc, #116] ; (8000a80 <kbhit+0x12c>)
8000a0c: 2201 movs r2, #1
8000a0e: 701a strb r2, [r3, #0]
return 0; //<2F><><E2><E5><F0><ED><F3> 0
8000a10: 2300 movs r3, #0
8000a12: e02f b.n 8000a74 <kbhit+0x120>
}
else //<2F><><E8><ED><E0>
{
if(first) //<2F><><EE><EF><F0><E5><E4><E5><EB><E8> <20><><EA><ED><EE><EF>
8000a14: 4b1a ldr r3, [pc, #104] ; (8000a80 <kbhit+0x12c>)
8000a16: 781b ldrb r3, [r3, #0]
8000a18: 2b00 cmp r3, #0
8000a1a: d00c beq.n 8000a36 <kbhit+0xe2>
{ //<2F><><F2><EE><EB><FC> <20><><EE><E4> <20><><F0>
first = 0; //<2F><> <20><><ED><E0><E6><E0><F2>
8000a1c: 4b18 ldr r3, [pc, #96] ; (8000a80 <kbhit+0x12c>)
8000a1e: 2200 movs r2, #0
8000a20: 701a strb r2, [r3, #0]
repeat = rep = 2000;
8000a22: 4b18 ldr r3, [pc, #96] ; (8000a84 <kbhit+0x130>)
8000a24: f44f 62fa mov.w r2, #2000 ; 0x7d0
8000a28: 801a strh r2, [r3, #0]
8000a2a: 4b16 ldr r3, [pc, #88] ; (8000a84 <kbhit+0x130>)
8000a2c: 881a ldrh r2, [r3, #0]
8000a2e: 4b16 ldr r3, [pc, #88] ; (8000a88 <kbhit+0x134>)
8000a30: 801a strh r2, [r3, #0]
return key; //<2F><><E2><E5><F0><ED><F3> <20> <20><><E3><EB><E0><E2><ED> <20><><F4><F3><ED><EA><F6> <20><><F1><EE><F1><F2><EE><FF><ED> <20><><EA><EB><E0><E2><E8><E0><F2><F3>
8000a32: 687b ldr r3, [r7, #4]
8000a34: e01e b.n 8000a74 <kbhit+0x120>
}
else
{
if(repeat)
8000a36: 4b14 ldr r3, [pc, #80] ; (8000a88 <kbhit+0x134>)
8000a38: 881b ldrh r3, [r3, #0]
8000a3a: b29b uxth r3, r3
8000a3c: 2b00 cmp r3, #0
8000a3e: d001 beq.n 8000a44 <kbhit+0xf0>
return 0; //<2F><><E8><EC><E8><F2><E0><F6> <20><><F1><E2><EE><E1><EE><E4><ED> <20><><EA><EB><E0><E2><E8><E0><F2><F3>
8000a40: 2300 movs r3, #0
8000a42: e017 b.n 8000a74 <kbhit+0x120>
else
{
if(rep > 0)
8000a44: 4b0f ldr r3, [pc, #60] ; (8000a84 <kbhit+0x130>)
8000a46: 881b ldrh r3, [r3, #0]
8000a48: 2b00 cmp r3, #0
8000a4a: d006 beq.n 8000a5a <kbhit+0x106>
rep >>= 1;
8000a4c: 4b0d ldr r3, [pc, #52] ; (8000a84 <kbhit+0x130>)
8000a4e: 881b ldrh r3, [r3, #0]
8000a50: 085b lsrs r3, r3, #1
8000a52: b29a uxth r2, r3
8000a54: 4b0b ldr r3, [pc, #44] ; (8000a84 <kbhit+0x130>)
8000a56: 801a strh r2, [r3, #0]
8000a58: e002 b.n 8000a60 <kbhit+0x10c>
else rep = 100;
8000a5a: 4b0a ldr r3, [pc, #40] ; (8000a84 <kbhit+0x130>)
8000a5c: 2264 movs r2, #100 ; 0x64
8000a5e: 801a strh r2, [r3, #0]
repeat = rep;
8000a60: 4b08 ldr r3, [pc, #32] ; (8000a84 <kbhit+0x130>)
8000a62: 881a ldrh r2, [r3, #0]
8000a64: 4b08 ldr r3, [pc, #32] ; (8000a88 <kbhit+0x134>)
8000a66: 801a strh r2, [r3, #0]
if(key == KEY_PW)
8000a68: 687b ldr r3, [r7, #4]
8000a6a: 2b01 cmp r3, #1
8000a6c: d101 bne.n 8000a72 <kbhit+0x11e>
return 0;
8000a6e: 2300 movs r3, #0
8000a70: e000 b.n 8000a74 <kbhit+0x120>
return key;
8000a72: 687b ldr r3, [r7, #4]
}
}
}
}
8000a74: 4618 mov r0, r3
8000a76: 3708 adds r7, #8
8000a78: 46bd mov sp, r7
8000a7a: bd80 pop {r7, pc}
8000a7c: 20020144 .word 0x20020144
8000a80: 20020011 .word 0x20020011
8000a84: 20020012 .word 0x20020012
8000a88: 20020138 .word 0x20020138
08000a8c <keyIns>:
void keyIns(void)
{
8000a8c: b580 push {r7, lr}
8000a8e: b09e sub sp, #120 ; 0x78
8000a90: af00 add r7, sp, #0
volatile uint8_t idt, iet, ies, ied, iee, ikd, iks, ikt;
uint16_t multA_u16, multB_u16, dX, dXold, MaxLevel;
char string[40], str[40];
float32_t f, fl;
uint32_t Year, Month, Day, Hour, Min, Sec;
float32_t fa[3] = {0, 0, 0};
8000a92: f04f 0300 mov.w r3, #0
8000a96: 613b str r3, [r7, #16]
8000a98: f04f 0300 mov.w r3, #0
8000a9c: 617b str r3, [r7, #20]
8000a9e: f04f 0300 mov.w r3, #0
8000aa2: 61bb str r3, [r7, #24]
float32_t ff[3] = {0, 0, 0};
8000aa4: f04f 0300 mov.w r3, #0
8000aa8: 607b str r3, [r7, #4]
8000aaa: f04f 0300 mov.w r3, #0
8000aae: 60bb str r3, [r7, #8]
8000ab0: f04f 0300 mov.w r3, #0
8000ab4: 60fb str r3, [r7, #12]
float64_t f64;
uint8_t tmp8;
key = KEY_STATE;
8000ab6: 4bac ldr r3, [pc, #688] ; (8000d68 <keyIns+0x2dc>)
8000ab8: 681b ldr r3, [r3, #0]
8000aba: 677b str r3, [r7, #116] ; 0x74
KEY_STATE = 0;
8000abc: 4baa ldr r3, [pc, #680] ; (8000d68 <keyIns+0x2dc>)
8000abe: 2200 movs r2, #0
8000ac0: 601a str r2, [r3, #0]
if(key)
8000ac2: 6f7b ldr r3, [r7, #116] ; 0x74
8000ac4: 2b00 cmp r3, #0
8000ac6: f000 8533 beq.w 8001530 <keyIns+0xaa4>
{
if(DrawStatus)
8000aca: 4ba8 ldr r3, [pc, #672] ; (8000d6c <keyIns+0x2e0>)
8000acc: 781b ldrb r3, [r3, #0]
8000ace: b2db uxtb r3, r3
8000ad0: 2b00 cmp r3, #0
8000ad2: d00a beq.n 8000aea <keyIns+0x5e>
{
DrawStatus = false;
8000ad4: 4ba5 ldr r3, [pc, #660] ; (8000d6c <keyIns+0x2e0>)
8000ad6: 2200 movs r2, #0
8000ad8: 701a strb r2, [r3, #0]
timerStatus = 0;
8000ada: 4ba5 ldr r3, [pc, #660] ; (8000d70 <keyIns+0x2e4>)
8000adc: 2200 movs r2, #0
8000ade: 801a strh r2, [r3, #0]
STATUS = AP_OK;
8000ae0: 4ba4 ldr r3, [pc, #656] ; (8000d74 <keyIns+0x2e8>)
8000ae2: 2200 movs r2, #0
8000ae4: 601a str r2, [r3, #0]
8000ae6: f000 bd23 b.w 8001530 <keyIns+0xaa4>
return;
}
switch(key)
8000aea: 6f7b ldr r3, [r7, #116] ; 0x74
8000aec: 3b01 subs r3, #1
8000aee: 2b1f cmp r3, #31
8000af0: f200 851e bhi.w 8001530 <keyIns+0xaa4>
8000af4: a201 add r2, pc, #4 ; (adr r2, 8000afc <keyIns+0x70>)
8000af6: f852 f023 ldr.w pc, [r2, r3, lsl #2]
8000afa: bf00 nop
8000afc: 0800151f .word 0x0800151f
8000b00: 08000b7d .word 0x08000b7d
8000b04: 08001531 .word 0x08001531
8000b08: 08001029 .word 0x08001029
8000b0c: 08001531 .word 0x08001531
8000b10: 08001531 .word 0x08001531
8000b14: 08001531 .word 0x08001531
8000b18: 08001531 .word 0x08001531
8000b1c: 08001531 .word 0x08001531
8000b20: 08001531 .word 0x08001531
8000b24: 08001531 .word 0x08001531
8000b28: 08001531 .word 0x08001531
8000b2c: 08001531 .word 0x08001531
8000b30: 08001531 .word 0x08001531
8000b34: 08001531 .word 0x08001531
8000b38: 08001531 .word 0x08001531
8000b3c: 08001531 .word 0x08001531
8000b40: 08001531 .word 0x08001531
8000b44: 08001531 .word 0x08001531
8000b48: 08001531 .word 0x08001531
8000b4c: 08001531 .word 0x08001531
8000b50: 08001531 .word 0x08001531
8000b54: 08001531 .word 0x08001531
8000b58: 08001531 .word 0x08001531
8000b5c: 08001531 .word 0x08001531
8000b60: 08001531 .word 0x08001531
8000b64: 08001531 .word 0x08001531
8000b68: 08001531 .word 0x08001531
8000b6c: 08001531 .word 0x08001531
8000b70: 08001531 .word 0x08001531
8000b74: 08001531 .word 0x08001531
8000b78: 0800131d .word 0x0800131d
{
case KEY_UP://TODO KEY UP
if(menu == MAIN)
8000b7c: 4b7e ldr r3, [pc, #504] ; (8000d78 <keyIns+0x2ec>)
8000b7e: 781b ldrb r3, [r3, #0]
8000b80: b2db uxtb r3, r3
8000b82: 2b00 cmp r3, #0
8000b84: f040 81ed bne.w 8000f62 <keyIns+0x4d6>
{
if(CNT_CHANNELS < 5)
8000b88: 4b7c ldr r3, [pc, #496] ; (8000d7c <keyIns+0x2f0>)
8000b8a: 681b ldr r3, [r3, #0]
8000b8c: 2b04 cmp r3, #4
8000b8e: f200 84ca bhi.w 8001526 <keyIns+0xa9a>
{
if(ACTIVE_CHANNEL == Ch1)
8000b92: 4b7b ldr r3, [pc, #492] ; (8000d80 <keyIns+0x2f4>)
8000b94: 681b ldr r3, [r3, #0]
8000b96: 2b00 cmp r3, #0
8000b98: d171 bne.n 8000c7e <keyIns+0x1f2>
{
if(menupos == Input)
8000b9a: 4b7a ldr r3, [pc, #488] ; (8000d84 <keyIns+0x2f8>)
8000b9c: 781b ldrb r3, [r3, #0]
8000b9e: b2db uxtb r3, r3
8000ba0: 2b00 cmp r3, #0
8000ba2: d168 bne.n 8000c76 <keyIns+0x1ea>
{
if(focused)
8000ba4: 4b78 ldr r3, [pc, #480] ; (8000d88 <keyIns+0x2fc>)
8000ba6: 781b ldrb r3, [r3, #0]
8000ba8: b2db uxtb r3, r3
8000baa: 2b00 cmp r3, #0
8000bac: d031 beq.n 8000c12 <keyIns+0x186>
{
if(pardata.amplif[ACTIVE_CHANNEL].IIN < ICP)
8000bae: 4b74 ldr r3, [pc, #464] ; (8000d80 <keyIns+0x2f4>)
8000bb0: 681b ldr r3, [r3, #0]
8000bb2: 4a76 ldr r2, [pc, #472] ; (8000d8c <keyIns+0x300>)
8000bb4: 015b lsls r3, r3, #5
8000bb6: 4413 add r3, r2
8000bb8: 881b ldrh r3, [r3, #0]
8000bba: b29b uxth r3, r3
8000bbc: 2b00 cmp r3, #0
8000bbe: f040 84b2 bne.w 8001526 <keyIns+0xa9a>
{
pardata.amplif[ACTIVE_CHANNEL].IIN++;
8000bc2: 4b6f ldr r3, [pc, #444] ; (8000d80 <keyIns+0x2f4>)
8000bc4: 681b ldr r3, [r3, #0]
8000bc6: 4971 ldr r1, [pc, #452] ; (8000d8c <keyIns+0x300>)
8000bc8: 015a lsls r2, r3, #5
8000bca: 440a add r2, r1
8000bcc: 8812 ldrh r2, [r2, #0]
8000bce: b292 uxth r2, r2
8000bd0: 3201 adds r2, #1
8000bd2: b291 uxth r1, r2
8000bd4: 4a6d ldr r2, [pc, #436] ; (8000d8c <keyIns+0x300>)
8000bd6: 015b lsls r3, r3, #5
8000bd8: 4413 add r3, r2
8000bda: 460a mov r2, r1
8000bdc: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8000bde: 4b68 ldr r3, [pc, #416] ; (8000d80 <keyIns+0x2f4>)
8000be0: 681b ldr r3, [r3, #0]
8000be2: b2db uxtb r3, r3
8000be4: 4618 mov r0, r3
8000be6: f007 f817 bl 8007c18 <WriteChannel>
8000bea: 4603 mov r3, r0
8000bec: 2b00 cmp r3, #0
8000bee: f000 849a beq.w 8001526 <keyIns+0xa9a>
{
pardata.amplif[ACTIVE_CHANNEL].IIN--;
8000bf2: 4b63 ldr r3, [pc, #396] ; (8000d80 <keyIns+0x2f4>)
8000bf4: 681b ldr r3, [r3, #0]
8000bf6: 4965 ldr r1, [pc, #404] ; (8000d8c <keyIns+0x300>)
8000bf8: 015a lsls r2, r3, #5
8000bfa: 440a add r2, r1
8000bfc: 8812 ldrh r2, [r2, #0]
8000bfe: b292 uxth r2, r2
8000c00: 3a01 subs r2, #1
8000c02: b291 uxth r1, r2
8000c04: 4a61 ldr r2, [pc, #388] ; (8000d8c <keyIns+0x300>)
8000c06: 015b lsls r3, r3, #5
8000c08: 4413 add r3, r2
8000c0a: 460a mov r2, r1
8000c0c: 801a strh r2, [r3, #0]
else
if(menupos == Set_100)
menupos = Set100;
}
}
break;
8000c0e: f000 bc8a b.w 8001526 <keyIns+0xa9a>
ACTIVE_CHANNEL = Ch4;
8000c12: 4b5b ldr r3, [pc, #364] ; (8000d80 <keyIns+0x2f4>)
8000c14: 2203 movs r2, #3
8000c16: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000c18: 4b59 ldr r3, [pc, #356] ; (8000d80 <keyIns+0x2f4>)
8000c1a: 681b ldr r3, [r3, #0]
8000c1c: 2201 movs r2, #1
8000c1e: fa02 f303 lsl.w r3, r2, r3
8000c22: 461a mov r2, r3
8000c24: 4b5a ldr r3, [pc, #360] ; (8000d90 <keyIns+0x304>)
8000c26: 681b ldr r3, [r3, #0]
8000c28: 4013 ands r3, r2
8000c2a: 2b00 cmp r3, #0
8000c2c: d11e bne.n 8000c6c <keyIns+0x1e0>
ACTIVE_CHANNEL = Ch3;
8000c2e: 4b54 ldr r3, [pc, #336] ; (8000d80 <keyIns+0x2f4>)
8000c30: 2202 movs r2, #2
8000c32: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000c34: 4b52 ldr r3, [pc, #328] ; (8000d80 <keyIns+0x2f4>)
8000c36: 681b ldr r3, [r3, #0]
8000c38: 2201 movs r2, #1
8000c3a: fa02 f303 lsl.w r3, r2, r3
8000c3e: 461a mov r2, r3
8000c40: 4b53 ldr r3, [pc, #332] ; (8000d90 <keyIns+0x304>)
8000c42: 681b ldr r3, [r3, #0]
8000c44: 4013 ands r3, r2
8000c46: 2b00 cmp r3, #0
8000c48: d110 bne.n 8000c6c <keyIns+0x1e0>
ACTIVE_CHANNEL = Ch2;
8000c4a: 4b4d ldr r3, [pc, #308] ; (8000d80 <keyIns+0x2f4>)
8000c4c: 2201 movs r2, #1
8000c4e: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000c50: 4b4b ldr r3, [pc, #300] ; (8000d80 <keyIns+0x2f4>)
8000c52: 681b ldr r3, [r3, #0]
8000c54: 2201 movs r2, #1
8000c56: fa02 f303 lsl.w r3, r2, r3
8000c5a: 461a mov r2, r3
8000c5c: 4b4c ldr r3, [pc, #304] ; (8000d90 <keyIns+0x304>)
8000c5e: 681b ldr r3, [r3, #0]
8000c60: 4013 ands r3, r2
8000c62: 2b00 cmp r3, #0
8000c64: d102 bne.n 8000c6c <keyIns+0x1e0>
ACTIVE_CHANNEL = Ch1;
8000c66: 4b46 ldr r3, [pc, #280] ; (8000d80 <keyIns+0x2f4>)
8000c68: 2200 movs r2, #0
8000c6a: 601a str r2, [r3, #0]
menupos = Kn;
8000c6c: 4b45 ldr r3, [pc, #276] ; (8000d84 <keyIns+0x2f8>)
8000c6e: 2204 movs r2, #4
8000c70: 701a strb r2, [r3, #0]
break;
8000c72: f000 bc58 b.w 8001526 <keyIns+0xa9a>
DoKeyUP();
8000c76: f000 fc67 bl 8001548 <DoKeyUP>
break;
8000c7a: f000 bc54 b.w 8001526 <keyIns+0xa9a>
if(ACTIVE_CHANNEL == Ch2)
8000c7e: 4b40 ldr r3, [pc, #256] ; (8000d80 <keyIns+0x2f4>)
8000c80: 681b ldr r3, [r3, #0]
8000c82: 2b01 cmp r3, #1
8000c84: f040 8086 bne.w 8000d94 <keyIns+0x308>
if(menupos == Input)
8000c88: 4b3e ldr r3, [pc, #248] ; (8000d84 <keyIns+0x2f8>)
8000c8a: 781b ldrb r3, [r3, #0]
8000c8c: b2db uxtb r3, r3
8000c8e: 2b00 cmp r3, #0
8000c90: d167 bne.n 8000d62 <keyIns+0x2d6>
if(focused)
8000c92: 4b3d ldr r3, [pc, #244] ; (8000d88 <keyIns+0x2fc>)
8000c94: 781b ldrb r3, [r3, #0]
8000c96: b2db uxtb r3, r3
8000c98: 2b00 cmp r3, #0
8000c9a: d031 beq.n 8000d00 <keyIns+0x274>
if(pardata.amplif[ACTIVE_CHANNEL].IIN < ICP)
8000c9c: 4b38 ldr r3, [pc, #224] ; (8000d80 <keyIns+0x2f4>)
8000c9e: 681b ldr r3, [r3, #0]
8000ca0: 4a3a ldr r2, [pc, #232] ; (8000d8c <keyIns+0x300>)
8000ca2: 015b lsls r3, r3, #5
8000ca4: 4413 add r3, r2
8000ca6: 881b ldrh r3, [r3, #0]
8000ca8: b29b uxth r3, r3
8000caa: 2b00 cmp r3, #0
8000cac: f040 843b bne.w 8001526 <keyIns+0xa9a>
pardata.amplif[ACTIVE_CHANNEL].IIN++;
8000cb0: 4b33 ldr r3, [pc, #204] ; (8000d80 <keyIns+0x2f4>)
8000cb2: 681b ldr r3, [r3, #0]
8000cb4: 4935 ldr r1, [pc, #212] ; (8000d8c <keyIns+0x300>)
8000cb6: 015a lsls r2, r3, #5
8000cb8: 440a add r2, r1
8000cba: 8812 ldrh r2, [r2, #0]
8000cbc: b292 uxth r2, r2
8000cbe: 3201 adds r2, #1
8000cc0: b291 uxth r1, r2
8000cc2: 4a32 ldr r2, [pc, #200] ; (8000d8c <keyIns+0x300>)
8000cc4: 015b lsls r3, r3, #5
8000cc6: 4413 add r3, r2
8000cc8: 460a mov r2, r1
8000cca: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8000ccc: 4b2c ldr r3, [pc, #176] ; (8000d80 <keyIns+0x2f4>)
8000cce: 681b ldr r3, [r3, #0]
8000cd0: b2db uxtb r3, r3
8000cd2: 4618 mov r0, r3
8000cd4: f006 ffa0 bl 8007c18 <WriteChannel>
8000cd8: 4603 mov r3, r0
8000cda: 2b00 cmp r3, #0
8000cdc: f000 8423 beq.w 8001526 <keyIns+0xa9a>
pardata.amplif[ACTIVE_CHANNEL].IIN--;
8000ce0: 4b27 ldr r3, [pc, #156] ; (8000d80 <keyIns+0x2f4>)
8000ce2: 681b ldr r3, [r3, #0]
8000ce4: 4929 ldr r1, [pc, #164] ; (8000d8c <keyIns+0x300>)
8000ce6: 015a lsls r2, r3, #5
8000ce8: 440a add r2, r1
8000cea: 8812 ldrh r2, [r2, #0]
8000cec: b292 uxth r2, r2
8000cee: 3a01 subs r2, #1
8000cf0: b291 uxth r1, r2
8000cf2: 4a26 ldr r2, [pc, #152] ; (8000d8c <keyIns+0x300>)
8000cf4: 015b lsls r3, r3, #5
8000cf6: 4413 add r3, r2
8000cf8: 460a mov r2, r1
8000cfa: 801a strh r2, [r3, #0]
break;
8000cfc: f000 bc13 b.w 8001526 <keyIns+0xa9a>
ACTIVE_CHANNEL = Ch1;
8000d00: 4b1f ldr r3, [pc, #124] ; (8000d80 <keyIns+0x2f4>)
8000d02: 2200 movs r2, #0
8000d04: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000d06: 4b1e ldr r3, [pc, #120] ; (8000d80 <keyIns+0x2f4>)
8000d08: 681b ldr r3, [r3, #0]
8000d0a: 2201 movs r2, #1
8000d0c: fa02 f303 lsl.w r3, r2, r3
8000d10: 461a mov r2, r3
8000d12: 4b1f ldr r3, [pc, #124] ; (8000d90 <keyIns+0x304>)
8000d14: 681b ldr r3, [r3, #0]
8000d16: 4013 ands r3, r2
8000d18: 2b00 cmp r3, #0
8000d1a: d11e bne.n 8000d5a <keyIns+0x2ce>
ACTIVE_CHANNEL = Ch4;
8000d1c: 4b18 ldr r3, [pc, #96] ; (8000d80 <keyIns+0x2f4>)
8000d1e: 2203 movs r2, #3
8000d20: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000d22: 4b17 ldr r3, [pc, #92] ; (8000d80 <keyIns+0x2f4>)
8000d24: 681b ldr r3, [r3, #0]
8000d26: 2201 movs r2, #1
8000d28: fa02 f303 lsl.w r3, r2, r3
8000d2c: 461a mov r2, r3
8000d2e: 4b18 ldr r3, [pc, #96] ; (8000d90 <keyIns+0x304>)
8000d30: 681b ldr r3, [r3, #0]
8000d32: 4013 ands r3, r2
8000d34: 2b00 cmp r3, #0
8000d36: d110 bne.n 8000d5a <keyIns+0x2ce>
ACTIVE_CHANNEL = Ch3;
8000d38: 4b11 ldr r3, [pc, #68] ; (8000d80 <keyIns+0x2f4>)
8000d3a: 2202 movs r2, #2
8000d3c: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000d3e: 4b10 ldr r3, [pc, #64] ; (8000d80 <keyIns+0x2f4>)
8000d40: 681b ldr r3, [r3, #0]
8000d42: 2201 movs r2, #1
8000d44: fa02 f303 lsl.w r3, r2, r3
8000d48: 461a mov r2, r3
8000d4a: 4b11 ldr r3, [pc, #68] ; (8000d90 <keyIns+0x304>)
8000d4c: 681b ldr r3, [r3, #0]
8000d4e: 4013 ands r3, r2
8000d50: 2b00 cmp r3, #0
8000d52: d102 bne.n 8000d5a <keyIns+0x2ce>
ACTIVE_CHANNEL = Ch2;
8000d54: 4b0a ldr r3, [pc, #40] ; (8000d80 <keyIns+0x2f4>)
8000d56: 2201 movs r2, #1
8000d58: 601a str r2, [r3, #0]
menupos = Kn;
8000d5a: 4b0a ldr r3, [pc, #40] ; (8000d84 <keyIns+0x2f8>)
8000d5c: 2204 movs r2, #4
8000d5e: 701a strb r2, [r3, #0]
break;
8000d60: e3e1 b.n 8001526 <keyIns+0xa9a>
DoKeyUP();
8000d62: f000 fbf1 bl 8001548 <DoKeyUP>
break;
8000d66: e3de b.n 8001526 <keyIns+0xa9a>
8000d68: 2002013c .word 0x2002013c
8000d6c: 2006b8b4 .word 0x2006b8b4
8000d70: 2006b1e0 .word 0x2006b1e0
8000d74: 2006b8a4 .word 0x2006b8a4
8000d78: 20020136 .word 0x20020136
8000d7c: 2006b1c4 .word 0x2006b1c4
8000d80: 2006b1c0 .word 0x2006b1c0
8000d84: 20020010 .word 0x20020010
8000d88: 20020140 .word 0x20020140
8000d8c: 2006b3f8 .word 0x2006b3f8
8000d90: 20020028 .word 0x20020028
if(ACTIVE_CHANNEL == Ch3)
8000d94: 4b9e ldr r3, [pc, #632] ; (8001010 <keyIns+0x584>)
8000d96: 681b ldr r3, [r3, #0]
8000d98: 2b02 cmp r3, #2
8000d9a: d16e bne.n 8000e7a <keyIns+0x3ee>
if(menupos == Input)
8000d9c: 4b9d ldr r3, [pc, #628] ; (8001014 <keyIns+0x588>)
8000d9e: 781b ldrb r3, [r3, #0]
8000da0: b2db uxtb r3, r3
8000da2: 2b00 cmp r3, #0
8000da4: d166 bne.n 8000e74 <keyIns+0x3e8>
if(focused)
8000da6: 4b9c ldr r3, [pc, #624] ; (8001018 <keyIns+0x58c>)
8000da8: 781b ldrb r3, [r3, #0]
8000daa: b2db uxtb r3, r3
8000dac: 2b00 cmp r3, #0
8000dae: d030 beq.n 8000e12 <keyIns+0x386>
if(pardata.amplif[ACTIVE_CHANNEL].IIN < ICP)
8000db0: 4b97 ldr r3, [pc, #604] ; (8001010 <keyIns+0x584>)
8000db2: 681b ldr r3, [r3, #0]
8000db4: 4a99 ldr r2, [pc, #612] ; (800101c <keyIns+0x590>)
8000db6: 015b lsls r3, r3, #5
8000db8: 4413 add r3, r2
8000dba: 881b ldrh r3, [r3, #0]
8000dbc: b29b uxth r3, r3
8000dbe: 2b00 cmp r3, #0
8000dc0: f040 83b1 bne.w 8001526 <keyIns+0xa9a>
pardata.amplif[ACTIVE_CHANNEL].IIN++;
8000dc4: 4b92 ldr r3, [pc, #584] ; (8001010 <keyIns+0x584>)
8000dc6: 681b ldr r3, [r3, #0]
8000dc8: 4994 ldr r1, [pc, #592] ; (800101c <keyIns+0x590>)
8000dca: 015a lsls r2, r3, #5
8000dcc: 440a add r2, r1
8000dce: 8812 ldrh r2, [r2, #0]
8000dd0: b292 uxth r2, r2
8000dd2: 3201 adds r2, #1
8000dd4: b291 uxth r1, r2
8000dd6: 4a91 ldr r2, [pc, #580] ; (800101c <keyIns+0x590>)
8000dd8: 015b lsls r3, r3, #5
8000dda: 4413 add r3, r2
8000ddc: 460a mov r2, r1
8000dde: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8000de0: 4b8b ldr r3, [pc, #556] ; (8001010 <keyIns+0x584>)
8000de2: 681b ldr r3, [r3, #0]
8000de4: b2db uxtb r3, r3
8000de6: 4618 mov r0, r3
8000de8: f006 ff16 bl 8007c18 <WriteChannel>
8000dec: 4603 mov r3, r0
8000dee: 2b00 cmp r3, #0
8000df0: f000 8399 beq.w 8001526 <keyIns+0xa9a>
pardata.amplif[ACTIVE_CHANNEL].IIN--;
8000df4: 4b86 ldr r3, [pc, #536] ; (8001010 <keyIns+0x584>)
8000df6: 681b ldr r3, [r3, #0]
8000df8: 4988 ldr r1, [pc, #544] ; (800101c <keyIns+0x590>)
8000dfa: 015a lsls r2, r3, #5
8000dfc: 440a add r2, r1
8000dfe: 8812 ldrh r2, [r2, #0]
8000e00: b292 uxth r2, r2
8000e02: 3a01 subs r2, #1
8000e04: b291 uxth r1, r2
8000e06: 4a85 ldr r2, [pc, #532] ; (800101c <keyIns+0x590>)
8000e08: 015b lsls r3, r3, #5
8000e0a: 4413 add r3, r2
8000e0c: 460a mov r2, r1
8000e0e: 801a strh r2, [r3, #0]
break;
8000e10: e389 b.n 8001526 <keyIns+0xa9a>
ACTIVE_CHANNEL = Ch2;
8000e12: 4b7f ldr r3, [pc, #508] ; (8001010 <keyIns+0x584>)
8000e14: 2201 movs r2, #1
8000e16: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000e18: 4b7d ldr r3, [pc, #500] ; (8001010 <keyIns+0x584>)
8000e1a: 681b ldr r3, [r3, #0]
8000e1c: 2201 movs r2, #1
8000e1e: fa02 f303 lsl.w r3, r2, r3
8000e22: 461a mov r2, r3
8000e24: 4b7e ldr r3, [pc, #504] ; (8001020 <keyIns+0x594>)
8000e26: 681b ldr r3, [r3, #0]
8000e28: 4013 ands r3, r2
8000e2a: 2b00 cmp r3, #0
8000e2c: d11e bne.n 8000e6c <keyIns+0x3e0>
ACTIVE_CHANNEL = Ch1;
8000e2e: 4b78 ldr r3, [pc, #480] ; (8001010 <keyIns+0x584>)
8000e30: 2200 movs r2, #0
8000e32: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000e34: 4b76 ldr r3, [pc, #472] ; (8001010 <keyIns+0x584>)
8000e36: 681b ldr r3, [r3, #0]
8000e38: 2201 movs r2, #1
8000e3a: fa02 f303 lsl.w r3, r2, r3
8000e3e: 461a mov r2, r3
8000e40: 4b77 ldr r3, [pc, #476] ; (8001020 <keyIns+0x594>)
8000e42: 681b ldr r3, [r3, #0]
8000e44: 4013 ands r3, r2
8000e46: 2b00 cmp r3, #0
8000e48: d110 bne.n 8000e6c <keyIns+0x3e0>
ACTIVE_CHANNEL = Ch4;
8000e4a: 4b71 ldr r3, [pc, #452] ; (8001010 <keyIns+0x584>)
8000e4c: 2203 movs r2, #3
8000e4e: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000e50: 4b6f ldr r3, [pc, #444] ; (8001010 <keyIns+0x584>)
8000e52: 681b ldr r3, [r3, #0]
8000e54: 2201 movs r2, #1
8000e56: fa02 f303 lsl.w r3, r2, r3
8000e5a: 461a mov r2, r3
8000e5c: 4b70 ldr r3, [pc, #448] ; (8001020 <keyIns+0x594>)
8000e5e: 681b ldr r3, [r3, #0]
8000e60: 4013 ands r3, r2
8000e62: 2b00 cmp r3, #0
8000e64: d102 bne.n 8000e6c <keyIns+0x3e0>
ACTIVE_CHANNEL = Ch3;
8000e66: 4b6a ldr r3, [pc, #424] ; (8001010 <keyIns+0x584>)
8000e68: 2202 movs r2, #2
8000e6a: 601a str r2, [r3, #0]
menupos = Kn;
8000e6c: 4b69 ldr r3, [pc, #420] ; (8001014 <keyIns+0x588>)
8000e6e: 2204 movs r2, #4
8000e70: 701a strb r2, [r3, #0]
break;
8000e72: e358 b.n 8001526 <keyIns+0xa9a>
DoKeyUP();
8000e74: f000 fb68 bl 8001548 <DoKeyUP>
break;
8000e78: e355 b.n 8001526 <keyIns+0xa9a>
if(ACTIVE_CHANNEL == Ch4)
8000e7a: 4b65 ldr r3, [pc, #404] ; (8001010 <keyIns+0x584>)
8000e7c: 681b ldr r3, [r3, #0]
8000e7e: 2b03 cmp r3, #3
8000e80: f040 8351 bne.w 8001526 <keyIns+0xa9a>
if(menupos == Input)
8000e84: 4b63 ldr r3, [pc, #396] ; (8001014 <keyIns+0x588>)
8000e86: 781b ldrb r3, [r3, #0]
8000e88: b2db uxtb r3, r3
8000e8a: 2b00 cmp r3, #0
8000e8c: d166 bne.n 8000f5c <keyIns+0x4d0>
if(focused)
8000e8e: 4b62 ldr r3, [pc, #392] ; (8001018 <keyIns+0x58c>)
8000e90: 781b ldrb r3, [r3, #0]
8000e92: b2db uxtb r3, r3
8000e94: 2b00 cmp r3, #0
8000e96: d030 beq.n 8000efa <keyIns+0x46e>
if(pardata.amplif[ACTIVE_CHANNEL].IIN < ICP)
8000e98: 4b5d ldr r3, [pc, #372] ; (8001010 <keyIns+0x584>)
8000e9a: 681b ldr r3, [r3, #0]
8000e9c: 4a5f ldr r2, [pc, #380] ; (800101c <keyIns+0x590>)
8000e9e: 015b lsls r3, r3, #5
8000ea0: 4413 add r3, r2
8000ea2: 881b ldrh r3, [r3, #0]
8000ea4: b29b uxth r3, r3
8000ea6: 2b00 cmp r3, #0
8000ea8: f040 833d bne.w 8001526 <keyIns+0xa9a>
pardata.amplif[ACTIVE_CHANNEL].IIN++;
8000eac: 4b58 ldr r3, [pc, #352] ; (8001010 <keyIns+0x584>)
8000eae: 681b ldr r3, [r3, #0]
8000eb0: 495a ldr r1, [pc, #360] ; (800101c <keyIns+0x590>)
8000eb2: 015a lsls r2, r3, #5
8000eb4: 440a add r2, r1
8000eb6: 8812 ldrh r2, [r2, #0]
8000eb8: b292 uxth r2, r2
8000eba: 3201 adds r2, #1
8000ebc: b291 uxth r1, r2
8000ebe: 4a57 ldr r2, [pc, #348] ; (800101c <keyIns+0x590>)
8000ec0: 015b lsls r3, r3, #5
8000ec2: 4413 add r3, r2
8000ec4: 460a mov r2, r1
8000ec6: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8000ec8: 4b51 ldr r3, [pc, #324] ; (8001010 <keyIns+0x584>)
8000eca: 681b ldr r3, [r3, #0]
8000ecc: b2db uxtb r3, r3
8000ece: 4618 mov r0, r3
8000ed0: f006 fea2 bl 8007c18 <WriteChannel>
8000ed4: 4603 mov r3, r0
8000ed6: 2b00 cmp r3, #0
8000ed8: f000 8325 beq.w 8001526 <keyIns+0xa9a>
pardata.amplif[ACTIVE_CHANNEL].IIN--;
8000edc: 4b4c ldr r3, [pc, #304] ; (8001010 <keyIns+0x584>)
8000ede: 681b ldr r3, [r3, #0]
8000ee0: 494e ldr r1, [pc, #312] ; (800101c <keyIns+0x590>)
8000ee2: 015a lsls r2, r3, #5
8000ee4: 440a add r2, r1
8000ee6: 8812 ldrh r2, [r2, #0]
8000ee8: b292 uxth r2, r2
8000eea: 3a01 subs r2, #1
8000eec: b291 uxth r1, r2
8000eee: 4a4b ldr r2, [pc, #300] ; (800101c <keyIns+0x590>)
8000ef0: 015b lsls r3, r3, #5
8000ef2: 4413 add r3, r2
8000ef4: 460a mov r2, r1
8000ef6: 801a strh r2, [r3, #0]
break;
8000ef8: e315 b.n 8001526 <keyIns+0xa9a>
ACTIVE_CHANNEL = Ch3;
8000efa: 4b45 ldr r3, [pc, #276] ; (8001010 <keyIns+0x584>)
8000efc: 2202 movs r2, #2
8000efe: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000f00: 4b43 ldr r3, [pc, #268] ; (8001010 <keyIns+0x584>)
8000f02: 681b ldr r3, [r3, #0]
8000f04: 2201 movs r2, #1
8000f06: fa02 f303 lsl.w r3, r2, r3
8000f0a: 461a mov r2, r3
8000f0c: 4b44 ldr r3, [pc, #272] ; (8001020 <keyIns+0x594>)
8000f0e: 681b ldr r3, [r3, #0]
8000f10: 4013 ands r3, r2
8000f12: 2b00 cmp r3, #0
8000f14: d11e bne.n 8000f54 <keyIns+0x4c8>
ACTIVE_CHANNEL = Ch2;
8000f16: 4b3e ldr r3, [pc, #248] ; (8001010 <keyIns+0x584>)
8000f18: 2201 movs r2, #1
8000f1a: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000f1c: 4b3c ldr r3, [pc, #240] ; (8001010 <keyIns+0x584>)
8000f1e: 681b ldr r3, [r3, #0]
8000f20: 2201 movs r2, #1
8000f22: fa02 f303 lsl.w r3, r2, r3
8000f26: 461a mov r2, r3
8000f28: 4b3d ldr r3, [pc, #244] ; (8001020 <keyIns+0x594>)
8000f2a: 681b ldr r3, [r3, #0]
8000f2c: 4013 ands r3, r2
8000f2e: 2b00 cmp r3, #0
8000f30: d110 bne.n 8000f54 <keyIns+0x4c8>
ACTIVE_CHANNEL = Ch1;
8000f32: 4b37 ldr r3, [pc, #220] ; (8001010 <keyIns+0x584>)
8000f34: 2200 movs r2, #0
8000f36: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8000f38: 4b35 ldr r3, [pc, #212] ; (8001010 <keyIns+0x584>)
8000f3a: 681b ldr r3, [r3, #0]
8000f3c: 2201 movs r2, #1
8000f3e: fa02 f303 lsl.w r3, r2, r3
8000f42: 461a mov r2, r3
8000f44: 4b36 ldr r3, [pc, #216] ; (8001020 <keyIns+0x594>)
8000f46: 681b ldr r3, [r3, #0]
8000f48: 4013 ands r3, r2
8000f4a: 2b00 cmp r3, #0
8000f4c: d102 bne.n 8000f54 <keyIns+0x4c8>
ACTIVE_CHANNEL = Ch4;
8000f4e: 4b30 ldr r3, [pc, #192] ; (8001010 <keyIns+0x584>)
8000f50: 2203 movs r2, #3
8000f52: 601a str r2, [r3, #0]
menupos = Kn;
8000f54: 4b2f ldr r3, [pc, #188] ; (8001014 <keyIns+0x588>)
8000f56: 2204 movs r2, #4
8000f58: 701a strb r2, [r3, #0]
break;
8000f5a: e2e4 b.n 8001526 <keyIns+0xa9a>
DoKeyUP();
8000f5c: f000 faf4 bl 8001548 <DoKeyUP>
break;
8000f60: e2e1 b.n 8001526 <keyIns+0xa9a>
if(menu == CALIBR_00)
8000f62: 4b30 ldr r3, [pc, #192] ; (8001024 <keyIns+0x598>)
8000f64: 781b ldrb r3, [r3, #0]
8000f66: b2db uxtb r3, r3
8000f68: 2b01 cmp r3, #1
8000f6a: d10d bne.n 8000f88 <keyIns+0x4fc>
if(menupos > Ch1) menupos--;
8000f6c: 4b29 ldr r3, [pc, #164] ; (8001014 <keyIns+0x588>)
8000f6e: 781b ldrb r3, [r3, #0]
8000f70: b2db uxtb r3, r3
8000f72: 2b00 cmp r3, #0
8000f74: f000 82d7 beq.w 8001526 <keyIns+0xa9a>
8000f78: 4b26 ldr r3, [pc, #152] ; (8001014 <keyIns+0x588>)
8000f7a: 781b ldrb r3, [r3, #0]
8000f7c: b2db uxtb r3, r3
8000f7e: 3b01 subs r3, #1
8000f80: b2da uxtb r2, r3
8000f82: 4b24 ldr r3, [pc, #144] ; (8001014 <keyIns+0x588>)
8000f84: 701a strb r2, [r3, #0]
break;
8000f86: e2ce b.n 8001526 <keyIns+0xa9a>
if(menu >= CALIBR_0 && menu <= CALIBR_22)
8000f88: 4b26 ldr r3, [pc, #152] ; (8001024 <keyIns+0x598>)
8000f8a: 781b ldrb r3, [r3, #0]
8000f8c: b2db uxtb r3, r3
8000f8e: 2b01 cmp r3, #1
8000f90: f240 82c9 bls.w 8001526 <keyIns+0xa9a>
8000f94: 4b23 ldr r3, [pc, #140] ; (8001024 <keyIns+0x598>)
8000f96: 781b ldrb r3, [r3, #0]
8000f98: b2db uxtb r3, r3
8000f9a: 2b18 cmp r3, #24
8000f9c: f200 82c3 bhi.w 8001526 <keyIns+0xa9a>
if(menupos == Next)
8000fa0: 4b1c ldr r3, [pc, #112] ; (8001014 <keyIns+0x588>)
8000fa2: 781b ldrb r3, [r3, #0]
8000fa4: b2db uxtb r3, r3
8000fa6: 2b06 cmp r3, #6
8000fa8: d103 bne.n 8000fb2 <keyIns+0x526>
menupos = Set_1;
8000faa: 4b1a ldr r3, [pc, #104] ; (8001014 <keyIns+0x588>)
8000fac: 2205 movs r2, #5
8000fae: 701a strb r2, [r3, #0]
break;
8000fb0: e2b9 b.n 8001526 <keyIns+0xa9a>
if(menupos == Set_1)
8000fb2: 4b18 ldr r3, [pc, #96] ; (8001014 <keyIns+0x588>)
8000fb4: 781b ldrb r3, [r3, #0]
8000fb6: b2db uxtb r3, r3
8000fb8: 2b05 cmp r3, #5
8000fba: d103 bne.n 8000fc4 <keyIns+0x538>
menupos = Set1;
8000fbc: 4b15 ldr r3, [pc, #84] ; (8001014 <keyIns+0x588>)
8000fbe: 2204 movs r2, #4
8000fc0: 701a strb r2, [r3, #0]
break;
8000fc2: e2b0 b.n 8001526 <keyIns+0xa9a>
if(menupos == Set1)
8000fc4: 4b13 ldr r3, [pc, #76] ; (8001014 <keyIns+0x588>)
8000fc6: 781b ldrb r3, [r3, #0]
8000fc8: b2db uxtb r3, r3
8000fca: 2b04 cmp r3, #4
8000fcc: d103 bne.n 8000fd6 <keyIns+0x54a>
menupos = Set_10;
8000fce: 4b11 ldr r3, [pc, #68] ; (8001014 <keyIns+0x588>)
8000fd0: 2203 movs r2, #3
8000fd2: 701a strb r2, [r3, #0]
break;
8000fd4: e2a7 b.n 8001526 <keyIns+0xa9a>
if(menupos == Set_10)
8000fd6: 4b0f ldr r3, [pc, #60] ; (8001014 <keyIns+0x588>)
8000fd8: 781b ldrb r3, [r3, #0]
8000fda: b2db uxtb r3, r3
8000fdc: 2b03 cmp r3, #3
8000fde: d103 bne.n 8000fe8 <keyIns+0x55c>
menupos = Set10;
8000fe0: 4b0c ldr r3, [pc, #48] ; (8001014 <keyIns+0x588>)
8000fe2: 2202 movs r2, #2
8000fe4: 701a strb r2, [r3, #0]
break;
8000fe6: e29e b.n 8001526 <keyIns+0xa9a>
if(menupos == Set10)
8000fe8: 4b0a ldr r3, [pc, #40] ; (8001014 <keyIns+0x588>)
8000fea: 781b ldrb r3, [r3, #0]
8000fec: b2db uxtb r3, r3
8000fee: 2b02 cmp r3, #2
8000ff0: d103 bne.n 8000ffa <keyIns+0x56e>
menupos = Set_100;
8000ff2: 4b08 ldr r3, [pc, #32] ; (8001014 <keyIns+0x588>)
8000ff4: 2201 movs r2, #1
8000ff6: 701a strb r2, [r3, #0]
break;
8000ff8: e295 b.n 8001526 <keyIns+0xa9a>
if(menupos == Set_100)
8000ffa: 4b06 ldr r3, [pc, #24] ; (8001014 <keyIns+0x588>)
8000ffc: 781b ldrb r3, [r3, #0]
8000ffe: b2db uxtb r3, r3
8001000: 2b01 cmp r3, #1
8001002: f040 8290 bne.w 8001526 <keyIns+0xa9a>
menupos = Set100;
8001006: 4b03 ldr r3, [pc, #12] ; (8001014 <keyIns+0x588>)
8001008: 2200 movs r2, #0
800100a: 701a strb r2, [r3, #0]
break;
800100c: e28b b.n 8001526 <keyIns+0xa9a>
800100e: bf00 nop
8001010: 2006b1c0 .word 0x2006b1c0
8001014: 20020010 .word 0x20020010
8001018: 20020140 .word 0x20020140
800101c: 2006b3f8 .word 0x2006b3f8
8001020: 20020028 .word 0x20020028
8001024: 20020136 .word 0x20020136
case KEY_DN://TODO KEY DOWN
if(menu == MAIN)
8001028: 4ba8 ldr r3, [pc, #672] ; (80012cc <keyIns+0x840>)
800102a: 781b ldrb r3, [r3, #0]
800102c: b2db uxtb r3, r3
800102e: 2b00 cmp r3, #0
8001030: f040 8112 bne.w 8001258 <keyIns+0x7cc>
{
if(CNT_CHANNELS < 5)
8001034: 4ba6 ldr r3, [pc, #664] ; (80012d0 <keyIns+0x844>)
8001036: 681b ldr r3, [r3, #0]
8001038: 2b04 cmp r3, #4
800103a: f200 8276 bhi.w 800152a <keyIns+0xa9e>
{
if(ACTIVE_CHANNEL == Ch1)
800103e: 4ba5 ldr r3, [pc, #660] ; (80012d4 <keyIns+0x848>)
8001040: 681b ldr r3, [r3, #0]
8001042: 2b00 cmp r3, #0
8001044: d13e bne.n 80010c4 <keyIns+0x638>
{
if(menupos == Kn)
8001046: 4ba4 ldr r3, [pc, #656] ; (80012d8 <keyIns+0x84c>)
8001048: 781b ldrb r3, [r3, #0]
800104a: b2db uxtb r3, r3
800104c: 2b04 cmp r3, #4
800104e: d136 bne.n 80010be <keyIns+0x632>
{
if(focused)
8001050: 4ba2 ldr r3, [pc, #648] ; (80012dc <keyIns+0x850>)
8001052: 781b ldrb r3, [r3, #0]
8001054: b2db uxtb r3, r3
8001056: 2b00 cmp r3, #0
8001058: f040 8267 bne.w 800152a <keyIns+0xa9e>
{
}
else
{
ACTIVE_CHANNEL = Ch2;
800105c: 4b9d ldr r3, [pc, #628] ; (80012d4 <keyIns+0x848>)
800105e: 2201 movs r2, #1
8001060: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8001062: 4b9c ldr r3, [pc, #624] ; (80012d4 <keyIns+0x848>)
8001064: 681b ldr r3, [r3, #0]
8001066: 2201 movs r2, #1
8001068: fa02 f303 lsl.w r3, r2, r3
800106c: 461a mov r2, r3
800106e: 4b9c ldr r3, [pc, #624] ; (80012e0 <keyIns+0x854>)
8001070: 681b ldr r3, [r3, #0]
8001072: 4013 ands r3, r2
8001074: 2b00 cmp r3, #0
8001076: d11e bne.n 80010b6 <keyIns+0x62a>
{
ACTIVE_CHANNEL = Ch3;
8001078: 4b96 ldr r3, [pc, #600] ; (80012d4 <keyIns+0x848>)
800107a: 2202 movs r2, #2
800107c: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
800107e: 4b95 ldr r3, [pc, #596] ; (80012d4 <keyIns+0x848>)
8001080: 681b ldr r3, [r3, #0]
8001082: 2201 movs r2, #1
8001084: fa02 f303 lsl.w r3, r2, r3
8001088: 461a mov r2, r3
800108a: 4b95 ldr r3, [pc, #596] ; (80012e0 <keyIns+0x854>)
800108c: 681b ldr r3, [r3, #0]
800108e: 4013 ands r3, r2
8001090: 2b00 cmp r3, #0
8001092: d110 bne.n 80010b6 <keyIns+0x62a>
{
ACTIVE_CHANNEL = Ch4;
8001094: 4b8f ldr r3, [pc, #572] ; (80012d4 <keyIns+0x848>)
8001096: 2203 movs r2, #3
8001098: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
800109a: 4b8e ldr r3, [pc, #568] ; (80012d4 <keyIns+0x848>)
800109c: 681b ldr r3, [r3, #0]
800109e: 2201 movs r2, #1
80010a0: fa02 f303 lsl.w r3, r2, r3
80010a4: 461a mov r2, r3
80010a6: 4b8e ldr r3, [pc, #568] ; (80012e0 <keyIns+0x854>)
80010a8: 681b ldr r3, [r3, #0]
80010aa: 4013 ands r3, r2
80010ac: 2b00 cmp r3, #0
80010ae: d102 bne.n 80010b6 <keyIns+0x62a>
{
ACTIVE_CHANNEL = Ch1;
80010b0: 4b88 ldr r3, [pc, #544] ; (80012d4 <keyIns+0x848>)
80010b2: 2200 movs r2, #0
80010b4: 601a str r2, [r3, #0]
}
}
}
menupos = Input;
80010b6: 4b88 ldr r3, [pc, #544] ; (80012d8 <keyIns+0x84c>)
80010b8: 2200 movs r2, #0
80010ba: 701a strb r2, [r3, #0]
else
if(menupos == Set_1)
menupos = Next;
}
}
break;
80010bc: e235 b.n 800152a <keyIns+0xa9e>
DoKeyDN();
80010be: f000 fbd7 bl 8001870 <DoKeyDN>
break;
80010c2: e232 b.n 800152a <keyIns+0xa9e>
if(ACTIVE_CHANNEL == Ch2)
80010c4: 4b83 ldr r3, [pc, #524] ; (80012d4 <keyIns+0x848>)
80010c6: 681b ldr r3, [r3, #0]
80010c8: 2b01 cmp r3, #1
80010ca: d13e bne.n 800114a <keyIns+0x6be>
if(menupos == Kn)
80010cc: 4b82 ldr r3, [pc, #520] ; (80012d8 <keyIns+0x84c>)
80010ce: 781b ldrb r3, [r3, #0]
80010d0: b2db uxtb r3, r3
80010d2: 2b04 cmp r3, #4
80010d4: d136 bne.n 8001144 <keyIns+0x6b8>
if(focused)
80010d6: 4b81 ldr r3, [pc, #516] ; (80012dc <keyIns+0x850>)
80010d8: 781b ldrb r3, [r3, #0]
80010da: b2db uxtb r3, r3
80010dc: 2b00 cmp r3, #0
80010de: f040 8224 bne.w 800152a <keyIns+0xa9e>
ACTIVE_CHANNEL = Ch3;
80010e2: 4b7c ldr r3, [pc, #496] ; (80012d4 <keyIns+0x848>)
80010e4: 2202 movs r2, #2
80010e6: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
80010e8: 4b7a ldr r3, [pc, #488] ; (80012d4 <keyIns+0x848>)
80010ea: 681b ldr r3, [r3, #0]
80010ec: 2201 movs r2, #1
80010ee: fa02 f303 lsl.w r3, r2, r3
80010f2: 461a mov r2, r3
80010f4: 4b7a ldr r3, [pc, #488] ; (80012e0 <keyIns+0x854>)
80010f6: 681b ldr r3, [r3, #0]
80010f8: 4013 ands r3, r2
80010fa: 2b00 cmp r3, #0
80010fc: d11e bne.n 800113c <keyIns+0x6b0>
ACTIVE_CHANNEL = Ch4;
80010fe: 4b75 ldr r3, [pc, #468] ; (80012d4 <keyIns+0x848>)
8001100: 2203 movs r2, #3
8001102: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8001104: 4b73 ldr r3, [pc, #460] ; (80012d4 <keyIns+0x848>)
8001106: 681b ldr r3, [r3, #0]
8001108: 2201 movs r2, #1
800110a: fa02 f303 lsl.w r3, r2, r3
800110e: 461a mov r2, r3
8001110: 4b73 ldr r3, [pc, #460] ; (80012e0 <keyIns+0x854>)
8001112: 681b ldr r3, [r3, #0]
8001114: 4013 ands r3, r2
8001116: 2b00 cmp r3, #0
8001118: d110 bne.n 800113c <keyIns+0x6b0>
ACTIVE_CHANNEL = Ch1;
800111a: 4b6e ldr r3, [pc, #440] ; (80012d4 <keyIns+0x848>)
800111c: 2200 movs r2, #0
800111e: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8001120: 4b6c ldr r3, [pc, #432] ; (80012d4 <keyIns+0x848>)
8001122: 681b ldr r3, [r3, #0]
8001124: 2201 movs r2, #1
8001126: fa02 f303 lsl.w r3, r2, r3
800112a: 461a mov r2, r3
800112c: 4b6c ldr r3, [pc, #432] ; (80012e0 <keyIns+0x854>)
800112e: 681b ldr r3, [r3, #0]
8001130: 4013 ands r3, r2
8001132: 2b00 cmp r3, #0
8001134: d102 bne.n 800113c <keyIns+0x6b0>
ACTIVE_CHANNEL = Ch2;
8001136: 4b67 ldr r3, [pc, #412] ; (80012d4 <keyIns+0x848>)
8001138: 2201 movs r2, #1
800113a: 601a str r2, [r3, #0]
menupos = Input;
800113c: 4b66 ldr r3, [pc, #408] ; (80012d8 <keyIns+0x84c>)
800113e: 2200 movs r2, #0
8001140: 701a strb r2, [r3, #0]
break;
8001142: e1f2 b.n 800152a <keyIns+0xa9e>
DoKeyDN();
8001144: f000 fb94 bl 8001870 <DoKeyDN>
break;
8001148: e1ef b.n 800152a <keyIns+0xa9e>
if(ACTIVE_CHANNEL == Ch3)
800114a: 4b62 ldr r3, [pc, #392] ; (80012d4 <keyIns+0x848>)
800114c: 681b ldr r3, [r3, #0]
800114e: 2b02 cmp r3, #2
8001150: d13e bne.n 80011d0 <keyIns+0x744>
if(menupos == Kn)
8001152: 4b61 ldr r3, [pc, #388] ; (80012d8 <keyIns+0x84c>)
8001154: 781b ldrb r3, [r3, #0]
8001156: b2db uxtb r3, r3
8001158: 2b04 cmp r3, #4
800115a: d136 bne.n 80011ca <keyIns+0x73e>
if(focused)
800115c: 4b5f ldr r3, [pc, #380] ; (80012dc <keyIns+0x850>)
800115e: 781b ldrb r3, [r3, #0]
8001160: b2db uxtb r3, r3
8001162: 2b00 cmp r3, #0
8001164: f040 81e1 bne.w 800152a <keyIns+0xa9e>
ACTIVE_CHANNEL = Ch4;
8001168: 4b5a ldr r3, [pc, #360] ; (80012d4 <keyIns+0x848>)
800116a: 2203 movs r2, #3
800116c: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
800116e: 4b59 ldr r3, [pc, #356] ; (80012d4 <keyIns+0x848>)
8001170: 681b ldr r3, [r3, #0]
8001172: 2201 movs r2, #1
8001174: fa02 f303 lsl.w r3, r2, r3
8001178: 461a mov r2, r3
800117a: 4b59 ldr r3, [pc, #356] ; (80012e0 <keyIns+0x854>)
800117c: 681b ldr r3, [r3, #0]
800117e: 4013 ands r3, r2
8001180: 2b00 cmp r3, #0
8001182: d11e bne.n 80011c2 <keyIns+0x736>
ACTIVE_CHANNEL = Ch1;
8001184: 4b53 ldr r3, [pc, #332] ; (80012d4 <keyIns+0x848>)
8001186: 2200 movs r2, #0
8001188: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
800118a: 4b52 ldr r3, [pc, #328] ; (80012d4 <keyIns+0x848>)
800118c: 681b ldr r3, [r3, #0]
800118e: 2201 movs r2, #1
8001190: fa02 f303 lsl.w r3, r2, r3
8001194: 461a mov r2, r3
8001196: 4b52 ldr r3, [pc, #328] ; (80012e0 <keyIns+0x854>)
8001198: 681b ldr r3, [r3, #0]
800119a: 4013 ands r3, r2
800119c: 2b00 cmp r3, #0
800119e: d110 bne.n 80011c2 <keyIns+0x736>
ACTIVE_CHANNEL = Ch2;
80011a0: 4b4c ldr r3, [pc, #304] ; (80012d4 <keyIns+0x848>)
80011a2: 2201 movs r2, #1
80011a4: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
80011a6: 4b4b ldr r3, [pc, #300] ; (80012d4 <keyIns+0x848>)
80011a8: 681b ldr r3, [r3, #0]
80011aa: 2201 movs r2, #1
80011ac: fa02 f303 lsl.w r3, r2, r3
80011b0: 461a mov r2, r3
80011b2: 4b4b ldr r3, [pc, #300] ; (80012e0 <keyIns+0x854>)
80011b4: 681b ldr r3, [r3, #0]
80011b6: 4013 ands r3, r2
80011b8: 2b00 cmp r3, #0
80011ba: d102 bne.n 80011c2 <keyIns+0x736>
ACTIVE_CHANNEL = Ch3;
80011bc: 4b45 ldr r3, [pc, #276] ; (80012d4 <keyIns+0x848>)
80011be: 2202 movs r2, #2
80011c0: 601a str r2, [r3, #0]
menupos = Input;
80011c2: 4b45 ldr r3, [pc, #276] ; (80012d8 <keyIns+0x84c>)
80011c4: 2200 movs r2, #0
80011c6: 701a strb r2, [r3, #0]
break;
80011c8: e1af b.n 800152a <keyIns+0xa9e>
DoKeyDN();
80011ca: f000 fb51 bl 8001870 <DoKeyDN>
break;
80011ce: e1ac b.n 800152a <keyIns+0xa9e>
if(ACTIVE_CHANNEL == Ch4)
80011d0: 4b40 ldr r3, [pc, #256] ; (80012d4 <keyIns+0x848>)
80011d2: 681b ldr r3, [r3, #0]
80011d4: 2b03 cmp r3, #3
80011d6: f040 81a8 bne.w 800152a <keyIns+0xa9e>
if(menupos == Kn)
80011da: 4b3f ldr r3, [pc, #252] ; (80012d8 <keyIns+0x84c>)
80011dc: 781b ldrb r3, [r3, #0]
80011de: b2db uxtb r3, r3
80011e0: 2b04 cmp r3, #4
80011e2: d136 bne.n 8001252 <keyIns+0x7c6>
if(focused)
80011e4: 4b3d ldr r3, [pc, #244] ; (80012dc <keyIns+0x850>)
80011e6: 781b ldrb r3, [r3, #0]
80011e8: b2db uxtb r3, r3
80011ea: 2b00 cmp r3, #0
80011ec: f040 819d bne.w 800152a <keyIns+0xa9e>
ACTIVE_CHANNEL = Ch1;
80011f0: 4b38 ldr r3, [pc, #224] ; (80012d4 <keyIns+0x848>)
80011f2: 2200 movs r2, #0
80011f4: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
80011f6: 4b37 ldr r3, [pc, #220] ; (80012d4 <keyIns+0x848>)
80011f8: 681b ldr r3, [r3, #0]
80011fa: 2201 movs r2, #1
80011fc: fa02 f303 lsl.w r3, r2, r3
8001200: 461a mov r2, r3
8001202: 4b37 ldr r3, [pc, #220] ; (80012e0 <keyIns+0x854>)
8001204: 681b ldr r3, [r3, #0]
8001206: 4013 ands r3, r2
8001208: 2b00 cmp r3, #0
800120a: d11e bne.n 800124a <keyIns+0x7be>
ACTIVE_CHANNEL = Ch2;
800120c: 4b31 ldr r3, [pc, #196] ; (80012d4 <keyIns+0x848>)
800120e: 2201 movs r2, #1
8001210: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
8001212: 4b30 ldr r3, [pc, #192] ; (80012d4 <keyIns+0x848>)
8001214: 681b ldr r3, [r3, #0]
8001216: 2201 movs r2, #1
8001218: fa02 f303 lsl.w r3, r2, r3
800121c: 461a mov r2, r3
800121e: 4b30 ldr r3, [pc, #192] ; (80012e0 <keyIns+0x854>)
8001220: 681b ldr r3, [r3, #0]
8001222: 4013 ands r3, r2
8001224: 2b00 cmp r3, #0
8001226: d110 bne.n 800124a <keyIns+0x7be>
ACTIVE_CHANNEL = Ch3;
8001228: 4b2a ldr r3, [pc, #168] ; (80012d4 <keyIns+0x848>)
800122a: 2202 movs r2, #2
800122c: 601a str r2, [r3, #0]
if((MASK_CHANNELS & (1 << ACTIVE_CHANNEL)) == 0)
800122e: 4b29 ldr r3, [pc, #164] ; (80012d4 <keyIns+0x848>)
8001230: 681b ldr r3, [r3, #0]
8001232: 2201 movs r2, #1
8001234: fa02 f303 lsl.w r3, r2, r3
8001238: 461a mov r2, r3
800123a: 4b29 ldr r3, [pc, #164] ; (80012e0 <keyIns+0x854>)
800123c: 681b ldr r3, [r3, #0]
800123e: 4013 ands r3, r2
8001240: 2b00 cmp r3, #0
8001242: d102 bne.n 800124a <keyIns+0x7be>
ACTIVE_CHANNEL = Ch4;
8001244: 4b23 ldr r3, [pc, #140] ; (80012d4 <keyIns+0x848>)
8001246: 2203 movs r2, #3
8001248: 601a str r2, [r3, #0]
menupos = Input;
800124a: 4b23 ldr r3, [pc, #140] ; (80012d8 <keyIns+0x84c>)
800124c: 2200 movs r2, #0
800124e: 701a strb r2, [r3, #0]
break;
8001250: e16b b.n 800152a <keyIns+0xa9e>
DoKeyDN();
8001252: f000 fb0d bl 8001870 <DoKeyDN>
break;
8001256: e168 b.n 800152a <keyIns+0xa9e>
if(menu == CALIBR_00)
8001258: 4b1c ldr r3, [pc, #112] ; (80012cc <keyIns+0x840>)
800125a: 781b ldrb r3, [r3, #0]
800125c: b2db uxtb r3, r3
800125e: 2b01 cmp r3, #1
8001260: d10d bne.n 800127e <keyIns+0x7f2>
if(menupos < Ch5) menupos++;
8001262: 4b1d ldr r3, [pc, #116] ; (80012d8 <keyIns+0x84c>)
8001264: 781b ldrb r3, [r3, #0]
8001266: b2db uxtb r3, r3
8001268: 2b03 cmp r3, #3
800126a: f200 815e bhi.w 800152a <keyIns+0xa9e>
800126e: 4b1a ldr r3, [pc, #104] ; (80012d8 <keyIns+0x84c>)
8001270: 781b ldrb r3, [r3, #0]
8001272: b2db uxtb r3, r3
8001274: 3301 adds r3, #1
8001276: b2da uxtb r2, r3
8001278: 4b17 ldr r3, [pc, #92] ; (80012d8 <keyIns+0x84c>)
800127a: 701a strb r2, [r3, #0]
break;
800127c: e155 b.n 800152a <keyIns+0xa9e>
if(menu >= CALIBR_0 && menu <= CALIBR_22)
800127e: 4b13 ldr r3, [pc, #76] ; (80012cc <keyIns+0x840>)
8001280: 781b ldrb r3, [r3, #0]
8001282: b2db uxtb r3, r3
8001284: 2b01 cmp r3, #1
8001286: f240 8150 bls.w 800152a <keyIns+0xa9e>
800128a: 4b10 ldr r3, [pc, #64] ; (80012cc <keyIns+0x840>)
800128c: 781b ldrb r3, [r3, #0]
800128e: b2db uxtb r3, r3
8001290: 2b18 cmp r3, #24
8001292: f200 814a bhi.w 800152a <keyIns+0xa9e>
if(menupos == Set100)
8001296: 4b10 ldr r3, [pc, #64] ; (80012d8 <keyIns+0x84c>)
8001298: 781b ldrb r3, [r3, #0]
800129a: b2db uxtb r3, r3
800129c: 2b00 cmp r3, #0
800129e: d103 bne.n 80012a8 <keyIns+0x81c>
menupos = Set_100;
80012a0: 4b0d ldr r3, [pc, #52] ; (80012d8 <keyIns+0x84c>)
80012a2: 2201 movs r2, #1
80012a4: 701a strb r2, [r3, #0]
break;
80012a6: e140 b.n 800152a <keyIns+0xa9e>
if(menupos == Set_100)
80012a8: 4b0b ldr r3, [pc, #44] ; (80012d8 <keyIns+0x84c>)
80012aa: 781b ldrb r3, [r3, #0]
80012ac: b2db uxtb r3, r3
80012ae: 2b01 cmp r3, #1
80012b0: d103 bne.n 80012ba <keyIns+0x82e>
menupos = Set10;
80012b2: 4b09 ldr r3, [pc, #36] ; (80012d8 <keyIns+0x84c>)
80012b4: 2202 movs r2, #2
80012b6: 701a strb r2, [r3, #0]
break;
80012b8: e137 b.n 800152a <keyIns+0xa9e>
if(menupos == Set10)
80012ba: 4b07 ldr r3, [pc, #28] ; (80012d8 <keyIns+0x84c>)
80012bc: 781b ldrb r3, [r3, #0]
80012be: b2db uxtb r3, r3
80012c0: 2b02 cmp r3, #2
80012c2: d10f bne.n 80012e4 <keyIns+0x858>
menupos = Set_10;
80012c4: 4b04 ldr r3, [pc, #16] ; (80012d8 <keyIns+0x84c>)
80012c6: 2203 movs r2, #3
80012c8: 701a strb r2, [r3, #0]
break;
80012ca: e12e b.n 800152a <keyIns+0xa9e>
80012cc: 20020136 .word 0x20020136
80012d0: 2006b1c4 .word 0x2006b1c4
80012d4: 2006b1c0 .word 0x2006b1c0
80012d8: 20020010 .word 0x20020010
80012dc: 20020140 .word 0x20020140
80012e0: 20020028 .word 0x20020028
if(menupos == Set_10)
80012e4: 4b94 ldr r3, [pc, #592] ; (8001538 <keyIns+0xaac>)
80012e6: 781b ldrb r3, [r3, #0]
80012e8: b2db uxtb r3, r3
80012ea: 2b03 cmp r3, #3
80012ec: d103 bne.n 80012f6 <keyIns+0x86a>
menupos = Set1;
80012ee: 4b92 ldr r3, [pc, #584] ; (8001538 <keyIns+0xaac>)
80012f0: 2204 movs r2, #4
80012f2: 701a strb r2, [r3, #0]
break;
80012f4: e119 b.n 800152a <keyIns+0xa9e>
if(menupos == Set1)
80012f6: 4b90 ldr r3, [pc, #576] ; (8001538 <keyIns+0xaac>)
80012f8: 781b ldrb r3, [r3, #0]
80012fa: b2db uxtb r3, r3
80012fc: 2b04 cmp r3, #4
80012fe: d103 bne.n 8001308 <keyIns+0x87c>
menupos = Set_1;
8001300: 4b8d ldr r3, [pc, #564] ; (8001538 <keyIns+0xaac>)
8001302: 2205 movs r2, #5
8001304: 701a strb r2, [r3, #0]
break;
8001306: e110 b.n 800152a <keyIns+0xa9e>
if(menupos == Set_1)
8001308: 4b8b ldr r3, [pc, #556] ; (8001538 <keyIns+0xaac>)
800130a: 781b ldrb r3, [r3, #0]
800130c: b2db uxtb r3, r3
800130e: 2b05 cmp r3, #5
8001310: f040 810b bne.w 800152a <keyIns+0xa9e>
menupos = Next;
8001314: 4b88 ldr r3, [pc, #544] ; (8001538 <keyIns+0xaac>)
8001316: 2206 movs r2, #6
8001318: 701a strb r2, [r3, #0]
break;
800131a: e106 b.n 800152a <keyIns+0xa9e>
case KEY_OK: // TODO KEY OK
if(menu == MAIN)
800131c: 4b87 ldr r3, [pc, #540] ; (800153c <keyIns+0xab0>)
800131e: 781b ldrb r3, [r3, #0]
8001320: b2db uxtb r3, r3
8001322: 2b00 cmp r3, #0
8001324: d13e bne.n 80013a4 <keyIns+0x918>
{
if(menupos < Kn)
8001326: 4b84 ldr r3, [pc, #528] ; (8001538 <keyIns+0xaac>)
8001328: 781b ldrb r3, [r3, #0]
800132a: b2db uxtb r3, r3
800132c: 2b03 cmp r3, #3
800132e: d80d bhi.n 800134c <keyIns+0x8c0>
{
focused ^= 1;
8001330: 4b83 ldr r3, [pc, #524] ; (8001540 <keyIns+0xab4>)
8001332: 781b ldrb r3, [r3, #0]
8001334: b2db uxtb r3, r3
8001336: f083 0301 eor.w r3, r3, #1
800133a: b2db uxtb r3, r3
800133c: 2b00 cmp r3, #0
800133e: bf14 ite ne
8001340: 2301 movne r3, #1
8001342: 2300 moveq r3, #0
8001344: b2da uxtb r2, r3
8001346: 4b7e ldr r3, [pc, #504] ; (8001540 <keyIns+0xab4>)
8001348: 701a strb r2, [r3, #0]
{
WriteCorr(ACTIVE_CHANNEL, (menu - 2), 100);
}
}
}
break;
800134a: e0f0 b.n 800152e <keyIns+0xaa2>
if(menupos == Kn)
800134c: 4b7a ldr r3, [pc, #488] ; (8001538 <keyIns+0xaac>)
800134e: 781b ldrb r3, [r3, #0]
8001350: b2db uxtb r3, r3
8001352: 2b04 cmp r3, #4
8001354: d106 bne.n 8001364 <keyIns+0x8d8>
focused = true;
8001356: 4b7a ldr r3, [pc, #488] ; (8001540 <keyIns+0xab4>)
8001358: 2201 movs r2, #1
800135a: 701a strb r2, [r3, #0]
menupos = Kiks;
800135c: 4b76 ldr r3, [pc, #472] ; (8001538 <keyIns+0xaac>)
800135e: 2205 movs r2, #5
8001360: 701a strb r2, [r3, #0]
break;
8001362: e0e4 b.n 800152e <keyIns+0xaa2>
if(menupos >= Kiks && menupos <= Kike)
8001364: 4b74 ldr r3, [pc, #464] ; (8001538 <keyIns+0xaac>)
8001366: 781b ldrb r3, [r3, #0]
8001368: b2db uxtb r3, r3
800136a: 2b04 cmp r3, #4
800136c: f240 80df bls.w 800152e <keyIns+0xaa2>
8001370: 4b71 ldr r3, [pc, #452] ; (8001538 <keyIns+0xaac>)
8001372: 781b ldrb r3, [r3, #0]
8001374: b2db uxtb r3, r3
8001376: 2b07 cmp r3, #7
8001378: f200 80d9 bhi.w 800152e <keyIns+0xaa2>
if(menupos < Kike)
800137c: 4b6e ldr r3, [pc, #440] ; (8001538 <keyIns+0xaac>)
800137e: 781b ldrb r3, [r3, #0]
8001380: b2db uxtb r3, r3
8001382: 2b06 cmp r3, #6
8001384: d807 bhi.n 8001396 <keyIns+0x90a>
menupos++;
8001386: 4b6c ldr r3, [pc, #432] ; (8001538 <keyIns+0xaac>)
8001388: 781b ldrb r3, [r3, #0]
800138a: b2db uxtb r3, r3
800138c: 3301 adds r3, #1
800138e: b2da uxtb r2, r3
8001390: 4b69 ldr r3, [pc, #420] ; (8001538 <keyIns+0xaac>)
8001392: 701a strb r2, [r3, #0]
break;
8001394: e0cb b.n 800152e <keyIns+0xaa2>
focused = false;
8001396: 4b6a ldr r3, [pc, #424] ; (8001540 <keyIns+0xab4>)
8001398: 2200 movs r2, #0
800139a: 701a strb r2, [r3, #0]
menupos = Kn;
800139c: 4b66 ldr r3, [pc, #408] ; (8001538 <keyIns+0xaac>)
800139e: 2204 movs r2, #4
80013a0: 701a strb r2, [r3, #0]
break;
80013a2: e0c4 b.n 800152e <keyIns+0xaa2>
if(menu == CALIBR_00)
80013a4: 4b65 ldr r3, [pc, #404] ; (800153c <keyIns+0xab0>)
80013a6: 781b ldrb r3, [r3, #0]
80013a8: b2db uxtb r3, r3
80013aa: 2b01 cmp r3, #1
80013ac: d11d bne.n 80013ea <keyIns+0x95e>
if(menupos <= Ch4)
80013ae: 4b62 ldr r3, [pc, #392] ; (8001538 <keyIns+0xaac>)
80013b0: 781b ldrb r3, [r3, #0]
80013b2: b2db uxtb r3, r3
80013b4: 2b03 cmp r3, #3
80013b6: d813 bhi.n 80013e0 <keyIns+0x954>
ACTIVE_CHANNEL = menupos;
80013b8: 4b5f ldr r3, [pc, #380] ; (8001538 <keyIns+0xaac>)
80013ba: 781b ldrb r3, [r3, #0]
80013bc: b2db uxtb r3, r3
80013be: 461a mov r2, r3
80013c0: 4b60 ldr r3, [pc, #384] ; (8001544 <keyIns+0xab8>)
80013c2: 601a str r2, [r3, #0]
menu = CALIBR_0;
80013c4: 4b5d ldr r3, [pc, #372] ; (800153c <keyIns+0xab0>)
80013c6: 2202 movs r2, #2
80013c8: 701a strb r2, [r3, #0]
menupos = Next;
80013ca: 4b5b ldr r3, [pc, #364] ; (8001538 <keyIns+0xaac>)
80013cc: 2206 movs r2, #6
80013ce: 701a strb r2, [r3, #0]
Calibr(ACTIVE_CHANNEL, 1);
80013d0: 4b5c ldr r3, [pc, #368] ; (8001544 <keyIns+0xab8>)
80013d2: 681b ldr r3, [r3, #0]
80013d4: b2db uxtb r3, r3
80013d6: 2101 movs r1, #1
80013d8: 4618 mov r0, r3
80013da: f006 fdfd bl 8007fd8 <Calibr>
break;
80013de: e0a6 b.n 800152e <keyIns+0xaa2>
CalibrOFF();
80013e0: f007 f868 bl 80084b4 <CalibrOFF>
Off();
80013e4: f7ff f8b0 bl 8000548 <Off>
break;
80013e8: e0a1 b.n 800152e <keyIns+0xaa2>
if(menu >= CALIBR_0 && menu <= CALIBR_22)
80013ea: 4b54 ldr r3, [pc, #336] ; (800153c <keyIns+0xab0>)
80013ec: 781b ldrb r3, [r3, #0]
80013ee: b2db uxtb r3, r3
80013f0: 2b01 cmp r3, #1
80013f2: f240 809c bls.w 800152e <keyIns+0xaa2>
80013f6: 4b51 ldr r3, [pc, #324] ; (800153c <keyIns+0xab0>)
80013f8: 781b ldrb r3, [r3, #0]
80013fa: b2db uxtb r3, r3
80013fc: 2b18 cmp r3, #24
80013fe: f200 8096 bhi.w 800152e <keyIns+0xaa2>
if(menupos == Next)
8001402: 4b4d ldr r3, [pc, #308] ; (8001538 <keyIns+0xaac>)
8001404: 781b ldrb r3, [r3, #0]
8001406: b2db uxtb r3, r3
8001408: 2b06 cmp r3, #6
800140a: d11c bne.n 8001446 <keyIns+0x9ba>
if(menu == CALIBR_22)
800140c: 4b4b ldr r3, [pc, #300] ; (800153c <keyIns+0xab0>)
800140e: 781b ldrb r3, [r3, #0]
8001410: b2db uxtb r3, r3
8001412: 2b18 cmp r3, #24
8001414: d108 bne.n 8001428 <keyIns+0x99c>
menu = CALIBR_00;
8001416: 4b49 ldr r3, [pc, #292] ; (800153c <keyIns+0xab0>)
8001418: 2201 movs r2, #1
800141a: 701a strb r2, [r3, #0]
menupos = ACTIVE_CHANNEL;
800141c: 4b49 ldr r3, [pc, #292] ; (8001544 <keyIns+0xab8>)
800141e: 681b ldr r3, [r3, #0]
8001420: b2da uxtb r2, r3
8001422: 4b45 ldr r3, [pc, #276] ; (8001538 <keyIns+0xaac>)
8001424: 701a strb r2, [r3, #0]
break;
8001426: e082 b.n 800152e <keyIns+0xaa2>
menu++;
8001428: 4b44 ldr r3, [pc, #272] ; (800153c <keyIns+0xab0>)
800142a: 781b ldrb r3, [r3, #0]
800142c: b2db uxtb r3, r3
800142e: 3301 adds r3, #1
8001430: b2da uxtb r2, r3
8001432: 4b42 ldr r3, [pc, #264] ; (800153c <keyIns+0xab0>)
8001434: 701a strb r2, [r3, #0]
Calibr(ACTIVE_CHANNEL, 1);
8001436: 4b43 ldr r3, [pc, #268] ; (8001544 <keyIns+0xab8>)
8001438: 681b ldr r3, [r3, #0]
800143a: b2db uxtb r3, r3
800143c: 2101 movs r1, #1
800143e: 4618 mov r0, r3
8001440: f006 fdca bl 8007fd8 <Calibr>
break;
8001444: e073 b.n 800152e <keyIns+0xaa2>
if(menupos == Set_1)
8001446: 4b3c ldr r3, [pc, #240] ; (8001538 <keyIns+0xaac>)
8001448: 781b ldrb r3, [r3, #0]
800144a: b2db uxtb r3, r3
800144c: 2b05 cmp r3, #5
800144e: d10c bne.n 800146a <keyIns+0x9de>
WriteCorr(ACTIVE_CHANNEL, (menu - 2), (0x01 | 0x80));
8001450: 4b3c ldr r3, [pc, #240] ; (8001544 <keyIns+0xab8>)
8001452: 681b ldr r3, [r3, #0]
8001454: b2d8 uxtb r0, r3
8001456: 4b39 ldr r3, [pc, #228] ; (800153c <keyIns+0xab0>)
8001458: 781b ldrb r3, [r3, #0]
800145a: b2db uxtb r3, r3
800145c: 3b02 subs r3, #2
800145e: b2db uxtb r3, r3
8001460: 2281 movs r2, #129 ; 0x81
8001462: 4619 mov r1, r3
8001464: f006 fef4 bl 8008250 <WriteCorr>
break;
8001468: e061 b.n 800152e <keyIns+0xaa2>
if(menupos == Set1)
800146a: 4b33 ldr r3, [pc, #204] ; (8001538 <keyIns+0xaac>)
800146c: 781b ldrb r3, [r3, #0]
800146e: b2db uxtb r3, r3
8001470: 2b04 cmp r3, #4
8001472: d10c bne.n 800148e <keyIns+0xa02>
WriteCorr(ACTIVE_CHANNEL, (menu - 2), 0x01);
8001474: 4b33 ldr r3, [pc, #204] ; (8001544 <keyIns+0xab8>)
8001476: 681b ldr r3, [r3, #0]
8001478: b2d8 uxtb r0, r3
800147a: 4b30 ldr r3, [pc, #192] ; (800153c <keyIns+0xab0>)
800147c: 781b ldrb r3, [r3, #0]
800147e: b2db uxtb r3, r3
8001480: 3b02 subs r3, #2
8001482: b2db uxtb r3, r3
8001484: 2201 movs r2, #1
8001486: 4619 mov r1, r3
8001488: f006 fee2 bl 8008250 <WriteCorr>
break;
800148c: e04f b.n 800152e <keyIns+0xaa2>
if(menupos == Set_10)
800148e: 4b2a ldr r3, [pc, #168] ; (8001538 <keyIns+0xaac>)
8001490: 781b ldrb r3, [r3, #0]
8001492: b2db uxtb r3, r3
8001494: 2b03 cmp r3, #3
8001496: d10c bne.n 80014b2 <keyIns+0xa26>
WriteCorr(ACTIVE_CHANNEL, (menu - 2), (10 | 0x80));
8001498: 4b2a ldr r3, [pc, #168] ; (8001544 <keyIns+0xab8>)
800149a: 681b ldr r3, [r3, #0]
800149c: b2d8 uxtb r0, r3
800149e: 4b27 ldr r3, [pc, #156] ; (800153c <keyIns+0xab0>)
80014a0: 781b ldrb r3, [r3, #0]
80014a2: b2db uxtb r3, r3
80014a4: 3b02 subs r3, #2
80014a6: b2db uxtb r3, r3
80014a8: 228a movs r2, #138 ; 0x8a
80014aa: 4619 mov r1, r3
80014ac: f006 fed0 bl 8008250 <WriteCorr>
break;
80014b0: e03d b.n 800152e <keyIns+0xaa2>
if(menupos == Set10)
80014b2: 4b21 ldr r3, [pc, #132] ; (8001538 <keyIns+0xaac>)
80014b4: 781b ldrb r3, [r3, #0]
80014b6: b2db uxtb r3, r3
80014b8: 2b02 cmp r3, #2
80014ba: d10c bne.n 80014d6 <keyIns+0xa4a>
WriteCorr(ACTIVE_CHANNEL, (menu - 2), 10);
80014bc: 4b21 ldr r3, [pc, #132] ; (8001544 <keyIns+0xab8>)
80014be: 681b ldr r3, [r3, #0]
80014c0: b2d8 uxtb r0, r3
80014c2: 4b1e ldr r3, [pc, #120] ; (800153c <keyIns+0xab0>)
80014c4: 781b ldrb r3, [r3, #0]
80014c6: b2db uxtb r3, r3
80014c8: 3b02 subs r3, #2
80014ca: b2db uxtb r3, r3
80014cc: 220a movs r2, #10
80014ce: 4619 mov r1, r3
80014d0: f006 febe bl 8008250 <WriteCorr>
break;
80014d4: e02b b.n 800152e <keyIns+0xaa2>
if(menupos == Set_100)
80014d6: 4b18 ldr r3, [pc, #96] ; (8001538 <keyIns+0xaac>)
80014d8: 781b ldrb r3, [r3, #0]
80014da: b2db uxtb r3, r3
80014dc: 2b01 cmp r3, #1
80014de: d10c bne.n 80014fa <keyIns+0xa6e>
WriteCorr(ACTIVE_CHANNEL, (menu - 2), (100 | 0x80));
80014e0: 4b18 ldr r3, [pc, #96] ; (8001544 <keyIns+0xab8>)
80014e2: 681b ldr r3, [r3, #0]
80014e4: b2d8 uxtb r0, r3
80014e6: 4b15 ldr r3, [pc, #84] ; (800153c <keyIns+0xab0>)
80014e8: 781b ldrb r3, [r3, #0]
80014ea: b2db uxtb r3, r3
80014ec: 3b02 subs r3, #2
80014ee: b2db uxtb r3, r3
80014f0: 22e4 movs r2, #228 ; 0xe4
80014f2: 4619 mov r1, r3
80014f4: f006 feac bl 8008250 <WriteCorr>
break;
80014f8: e019 b.n 800152e <keyIns+0xaa2>
if(menupos == Set100)
80014fa: 4b0f ldr r3, [pc, #60] ; (8001538 <keyIns+0xaac>)
80014fc: 781b ldrb r3, [r3, #0]
80014fe: b2db uxtb r3, r3
8001500: 2b00 cmp r3, #0
8001502: d114 bne.n 800152e <keyIns+0xaa2>
WriteCorr(ACTIVE_CHANNEL, (menu - 2), 100);
8001504: 4b0f ldr r3, [pc, #60] ; (8001544 <keyIns+0xab8>)
8001506: 681b ldr r3, [r3, #0]
8001508: b2d8 uxtb r0, r3
800150a: 4b0c ldr r3, [pc, #48] ; (800153c <keyIns+0xab0>)
800150c: 781b ldrb r3, [r3, #0]
800150e: b2db uxtb r3, r3
8001510: 3b02 subs r3, #2
8001512: b2db uxtb r3, r3
8001514: 2264 movs r2, #100 ; 0x64
8001516: 4619 mov r1, r3
8001518: f006 fe9a bl 8008250 <WriteCorr>
break;
800151c: e007 b.n 800152e <keyIns+0xaa2>
case KEY_PW:
Off();
800151e: f7ff f813 bl 8000548 <Off>
break;
8001522: bf00 nop
8001524: e004 b.n 8001530 <keyIns+0xaa4>
break;
8001526: bf00 nop
8001528: e002 b.n 8001530 <keyIns+0xaa4>
break;
800152a: bf00 nop
800152c: e000 b.n 8001530 <keyIns+0xaa4>
break;
800152e: bf00 nop
}
}
}
8001530: 3778 adds r7, #120 ; 0x78
8001532: 46bd mov sp, r7
8001534: bd80 pop {r7, pc}
8001536: bf00 nop
8001538: 20020010 .word 0x20020010
800153c: 20020136 .word 0x20020136
8001540: 20020140 .word 0x20020140
8001544: 2006b1c0 .word 0x2006b1c0
08001548 <DoKeyUP>:
void DoKeyUP(void)
{
8001548: b580 push {r7, lr}
800154a: af00 add r7, sp, #0
if(menupos == Hp)
800154c: 4ba4 ldr r3, [pc, #656] ; (80017e0 <DoKeyUP+0x298>)
800154e: 781b ldrb r3, [r3, #0]
8001550: b2db uxtb r3, r3
8001552: 2b01 cmp r3, #1
8001554: d13e bne.n 80015d4 <DoKeyUP+0x8c>
{
if(focused)
8001556: 4ba3 ldr r3, [pc, #652] ; (80017e4 <DoKeyUP+0x29c>)
8001558: 781b ldrb r3, [r3, #0]
800155a: b2db uxtb r3, r3
800155c: 2b00 cmp r3, #0
800155e: d035 beq.n 80015cc <DoKeyUP+0x84>
{
if(pardata.amplif[ACTIVE_CHANNEL].IFV < Hp10)
8001560: 4ba1 ldr r3, [pc, #644] ; (80017e8 <DoKeyUP+0x2a0>)
8001562: 681b ldr r3, [r3, #0]
8001564: 4aa1 ldr r2, [pc, #644] ; (80017ec <DoKeyUP+0x2a4>)
8001566: 015b lsls r3, r3, #5
8001568: 4413 add r3, r2
800156a: 3302 adds r3, #2
800156c: 881b ldrh r3, [r3, #0]
800156e: b29b uxth r3, r3
8001570: 2b03 cmp r3, #3
8001572: f200 8175 bhi.w 8001860 <DoKeyUP+0x318>
{
pardata.amplif[ACTIVE_CHANNEL].IFV++;
8001576: 4b9c ldr r3, [pc, #624] ; (80017e8 <DoKeyUP+0x2a0>)
8001578: 681b ldr r3, [r3, #0]
800157a: 499c ldr r1, [pc, #624] ; (80017ec <DoKeyUP+0x2a4>)
800157c: 015a lsls r2, r3, #5
800157e: 440a add r2, r1
8001580: 3202 adds r2, #2
8001582: 8812 ldrh r2, [r2, #0]
8001584: b292 uxth r2, r2
8001586: 3201 adds r2, #1
8001588: b291 uxth r1, r2
800158a: 4a98 ldr r2, [pc, #608] ; (80017ec <DoKeyUP+0x2a4>)
800158c: 015b lsls r3, r3, #5
800158e: 4413 add r3, r2
8001590: 3302 adds r3, #2
8001592: 460a mov r2, r1
8001594: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8001596: 4b94 ldr r3, [pc, #592] ; (80017e8 <DoKeyUP+0x2a0>)
8001598: 681b ldr r3, [r3, #0]
800159a: b2db uxtb r3, r3
800159c: 4618 mov r0, r3
800159e: f006 fb3b bl 8007c18 <WriteChannel>
80015a2: 4603 mov r3, r0
80015a4: 2b00 cmp r3, #0
80015a6: f000 815b beq.w 8001860 <DoKeyUP+0x318>
{
pardata.amplif[ACTIVE_CHANNEL].IFV--;
80015aa: 4b8f ldr r3, [pc, #572] ; (80017e8 <DoKeyUP+0x2a0>)
80015ac: 681b ldr r3, [r3, #0]
80015ae: 498f ldr r1, [pc, #572] ; (80017ec <DoKeyUP+0x2a4>)
80015b0: 015a lsls r2, r3, #5
80015b2: 440a add r2, r1
80015b4: 3202 adds r2, #2
80015b6: 8812 ldrh r2, [r2, #0]
80015b8: b292 uxth r2, r2
80015ba: 3a01 subs r2, #1
80015bc: b291 uxth r1, r2
80015be: 4a8b ldr r2, [pc, #556] ; (80017ec <DoKeyUP+0x2a4>)
80015c0: 015b lsls r3, r3, #5
80015c2: 4413 add r3, r2
80015c4: 3302 adds r3, #2
80015c6: 460a mov r2, r1
80015c8: 801a strh r2, [r3, #0]
{
pardata.amplif[ACTIVE_CHANNEL].IKE--;
}
}
}
}
80015ca: e149 b.n 8001860 <DoKeyUP+0x318>
menupos = Input;
80015cc: 4b84 ldr r3, [pc, #528] ; (80017e0 <DoKeyUP+0x298>)
80015ce: 2200 movs r2, #0
80015d0: 701a strb r2, [r3, #0]
}
80015d2: e145 b.n 8001860 <DoKeyUP+0x318>
if(menupos == Lp)
80015d4: 4b82 ldr r3, [pc, #520] ; (80017e0 <DoKeyUP+0x298>)
80015d6: 781b ldrb r3, [r3, #0]
80015d8: b2db uxtb r3, r3
80015da: 2b02 cmp r3, #2
80015dc: d13e bne.n 800165c <DoKeyUP+0x114>
if(focused)
80015de: 4b81 ldr r3, [pc, #516] ; (80017e4 <DoKeyUP+0x29c>)
80015e0: 781b ldrb r3, [r3, #0]
80015e2: b2db uxtb r3, r3
80015e4: 2b00 cmp r3, #0
80015e6: d035 beq.n 8001654 <DoKeyUP+0x10c>
if(pardata.amplif[ACTIVE_CHANNEL].IFN < Lp100000)
80015e8: 4b7f ldr r3, [pc, #508] ; (80017e8 <DoKeyUP+0x2a0>)
80015ea: 681b ldr r3, [r3, #0]
80015ec: 4a7f ldr r2, [pc, #508] ; (80017ec <DoKeyUP+0x2a4>)
80015ee: 015b lsls r3, r3, #5
80015f0: 4413 add r3, r2
80015f2: 3304 adds r3, #4
80015f4: 881b ldrh r3, [r3, #0]
80015f6: b29b uxth r3, r3
80015f8: 2b06 cmp r3, #6
80015fa: f200 8131 bhi.w 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IFN++;
80015fe: 4b7a ldr r3, [pc, #488] ; (80017e8 <DoKeyUP+0x2a0>)
8001600: 681b ldr r3, [r3, #0]
8001602: 497a ldr r1, [pc, #488] ; (80017ec <DoKeyUP+0x2a4>)
8001604: 015a lsls r2, r3, #5
8001606: 440a add r2, r1
8001608: 3204 adds r2, #4
800160a: 8812 ldrh r2, [r2, #0]
800160c: b292 uxth r2, r2
800160e: 3201 adds r2, #1
8001610: b291 uxth r1, r2
8001612: 4a76 ldr r2, [pc, #472] ; (80017ec <DoKeyUP+0x2a4>)
8001614: 015b lsls r3, r3, #5
8001616: 4413 add r3, r2
8001618: 3304 adds r3, #4
800161a: 460a mov r2, r1
800161c: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
800161e: 4b72 ldr r3, [pc, #456] ; (80017e8 <DoKeyUP+0x2a0>)
8001620: 681b ldr r3, [r3, #0]
8001622: b2db uxtb r3, r3
8001624: 4618 mov r0, r3
8001626: f006 faf7 bl 8007c18 <WriteChannel>
800162a: 4603 mov r3, r0
800162c: 2b00 cmp r3, #0
800162e: f000 8117 beq.w 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IFN--;
8001632: 4b6d ldr r3, [pc, #436] ; (80017e8 <DoKeyUP+0x2a0>)
8001634: 681b ldr r3, [r3, #0]
8001636: 496d ldr r1, [pc, #436] ; (80017ec <DoKeyUP+0x2a4>)
8001638: 015a lsls r2, r3, #5
800163a: 440a add r2, r1
800163c: 3204 adds r2, #4
800163e: 8812 ldrh r2, [r2, #0]
8001640: b292 uxth r2, r2
8001642: 3a01 subs r2, #1
8001644: b291 uxth r1, r2
8001646: 4a69 ldr r2, [pc, #420] ; (80017ec <DoKeyUP+0x2a4>)
8001648: 015b lsls r3, r3, #5
800164a: 4413 add r3, r2
800164c: 3304 adds r3, #4
800164e: 460a mov r2, r1
8001650: 801a strh r2, [r3, #0]
}
8001652: e105 b.n 8001860 <DoKeyUP+0x318>
menupos = Hp;
8001654: 4b62 ldr r3, [pc, #392] ; (80017e0 <DoKeyUP+0x298>)
8001656: 2201 movs r2, #1
8001658: 701a strb r2, [r3, #0]
}
800165a: e101 b.n 8001860 <DoKeyUP+0x318>
if(menupos == Km)
800165c: 4b60 ldr r3, [pc, #384] ; (80017e0 <DoKeyUP+0x298>)
800165e: 781b ldrb r3, [r3, #0]
8001660: b2db uxtb r3, r3
8001662: 2b03 cmp r3, #3
8001664: d13e bne.n 80016e4 <DoKeyUP+0x19c>
if(focused)
8001666: 4b5f ldr r3, [pc, #380] ; (80017e4 <DoKeyUP+0x29c>)
8001668: 781b ldrb r3, [r3, #0]
800166a: b2db uxtb r3, r3
800166c: 2b00 cmp r3, #0
800166e: d035 beq.n 80016dc <DoKeyUP+0x194>
if(pardata.amplif[ACTIVE_CHANNEL].IKU < Ku1000)
8001670: 4b5d ldr r3, [pc, #372] ; (80017e8 <DoKeyUP+0x2a0>)
8001672: 681b ldr r3, [r3, #0]
8001674: 4a5d ldr r2, [pc, #372] ; (80017ec <DoKeyUP+0x2a4>)
8001676: 015b lsls r3, r3, #5
8001678: 4413 add r3, r2
800167a: 3306 adds r3, #6
800167c: 881b ldrh r3, [r3, #0]
800167e: b29b uxth r3, r3
8001680: 2b0b cmp r3, #11
8001682: f200 80ed bhi.w 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IKU++;
8001686: 4b58 ldr r3, [pc, #352] ; (80017e8 <DoKeyUP+0x2a0>)
8001688: 681b ldr r3, [r3, #0]
800168a: 4958 ldr r1, [pc, #352] ; (80017ec <DoKeyUP+0x2a4>)
800168c: 015a lsls r2, r3, #5
800168e: 440a add r2, r1
8001690: 3206 adds r2, #6
8001692: 8812 ldrh r2, [r2, #0]
8001694: b292 uxth r2, r2
8001696: 3201 adds r2, #1
8001698: b291 uxth r1, r2
800169a: 4a54 ldr r2, [pc, #336] ; (80017ec <DoKeyUP+0x2a4>)
800169c: 015b lsls r3, r3, #5
800169e: 4413 add r3, r2
80016a0: 3306 adds r3, #6
80016a2: 460a mov r2, r1
80016a4: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
80016a6: 4b50 ldr r3, [pc, #320] ; (80017e8 <DoKeyUP+0x2a0>)
80016a8: 681b ldr r3, [r3, #0]
80016aa: b2db uxtb r3, r3
80016ac: 4618 mov r0, r3
80016ae: f006 fab3 bl 8007c18 <WriteChannel>
80016b2: 4603 mov r3, r0
80016b4: 2b00 cmp r3, #0
80016b6: f000 80d3 beq.w 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IKU--;
80016ba: 4b4b ldr r3, [pc, #300] ; (80017e8 <DoKeyUP+0x2a0>)
80016bc: 681b ldr r3, [r3, #0]
80016be: 494b ldr r1, [pc, #300] ; (80017ec <DoKeyUP+0x2a4>)
80016c0: 015a lsls r2, r3, #5
80016c2: 440a add r2, r1
80016c4: 3206 adds r2, #6
80016c6: 8812 ldrh r2, [r2, #0]
80016c8: b292 uxth r2, r2
80016ca: 3a01 subs r2, #1
80016cc: b291 uxth r1, r2
80016ce: 4a47 ldr r2, [pc, #284] ; (80017ec <DoKeyUP+0x2a4>)
80016d0: 015b lsls r3, r3, #5
80016d2: 4413 add r3, r2
80016d4: 3306 adds r3, #6
80016d6: 460a mov r2, r1
80016d8: 801a strh r2, [r3, #0]
}
80016da: e0c1 b.n 8001860 <DoKeyUP+0x318>
menupos = Lp;
80016dc: 4b40 ldr r3, [pc, #256] ; (80017e0 <DoKeyUP+0x298>)
80016de: 2202 movs r2, #2
80016e0: 701a strb r2, [r3, #0]
}
80016e2: e0bd b.n 8001860 <DoKeyUP+0x318>
if(menupos == Kn)
80016e4: 4b3e ldr r3, [pc, #248] ; (80017e0 <DoKeyUP+0x298>)
80016e6: 781b ldrb r3, [r3, #0]
80016e8: b2db uxtb r3, r3
80016ea: 2b04 cmp r3, #4
80016ec: d103 bne.n 80016f6 <DoKeyUP+0x1ae>
menupos = Km;
80016ee: 4b3c ldr r3, [pc, #240] ; (80017e0 <DoKeyUP+0x298>)
80016f0: 2203 movs r2, #3
80016f2: 701a strb r2, [r3, #0]
}
80016f4: e0b4 b.n 8001860 <DoKeyUP+0x318>
if(menupos == Kiks)
80016f6: 4b3a ldr r3, [pc, #232] ; (80017e0 <DoKeyUP+0x298>)
80016f8: 781b ldrb r3, [r3, #0]
80016fa: b2db uxtb r3, r3
80016fc: 2b05 cmp r3, #5
80016fe: d135 bne.n 800176c <DoKeyUP+0x224>
if(pardata.amplif[ACTIVE_CHANNEL].IKS < 9)
8001700: 4b39 ldr r3, [pc, #228] ; (80017e8 <DoKeyUP+0x2a0>)
8001702: 681b ldr r3, [r3, #0]
8001704: 4a39 ldr r2, [pc, #228] ; (80017ec <DoKeyUP+0x2a4>)
8001706: 015b lsls r3, r3, #5
8001708: 4413 add r3, r2
800170a: 330c adds r3, #12
800170c: 881b ldrh r3, [r3, #0]
800170e: b29b uxth r3, r3
8001710: 2b08 cmp r3, #8
8001712: f200 80a5 bhi.w 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IKS++;
8001716: 4b34 ldr r3, [pc, #208] ; (80017e8 <DoKeyUP+0x2a0>)
8001718: 681b ldr r3, [r3, #0]
800171a: 4934 ldr r1, [pc, #208] ; (80017ec <DoKeyUP+0x2a4>)
800171c: 015a lsls r2, r3, #5
800171e: 440a add r2, r1
8001720: 320c adds r2, #12
8001722: 8812 ldrh r2, [r2, #0]
8001724: b292 uxth r2, r2
8001726: 3201 adds r2, #1
8001728: b291 uxth r1, r2
800172a: 4a30 ldr r2, [pc, #192] ; (80017ec <DoKeyUP+0x2a4>)
800172c: 015b lsls r3, r3, #5
800172e: 4413 add r3, r2
8001730: 330c adds r3, #12
8001732: 460a mov r2, r1
8001734: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8001736: 4b2c ldr r3, [pc, #176] ; (80017e8 <DoKeyUP+0x2a0>)
8001738: 681b ldr r3, [r3, #0]
800173a: b2db uxtb r3, r3
800173c: 4618 mov r0, r3
800173e: f006 fa6b bl 8007c18 <WriteChannel>
8001742: 4603 mov r3, r0
8001744: 2b00 cmp r3, #0
8001746: f000 808b beq.w 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IKS--;
800174a: 4b27 ldr r3, [pc, #156] ; (80017e8 <DoKeyUP+0x2a0>)
800174c: 681b ldr r3, [r3, #0]
800174e: 4927 ldr r1, [pc, #156] ; (80017ec <DoKeyUP+0x2a4>)
8001750: 015a lsls r2, r3, #5
8001752: 440a add r2, r1
8001754: 320c adds r2, #12
8001756: 8812 ldrh r2, [r2, #0]
8001758: b292 uxth r2, r2
800175a: 3a01 subs r2, #1
800175c: b291 uxth r1, r2
800175e: 4a23 ldr r2, [pc, #140] ; (80017ec <DoKeyUP+0x2a4>)
8001760: 015b lsls r3, r3, #5
8001762: 4413 add r3, r2
8001764: 330c adds r3, #12
8001766: 460a mov r2, r1
8001768: 801a strh r2, [r3, #0]
}
800176a: e079 b.n 8001860 <DoKeyUP+0x318>
if(menupos == Kikd)
800176c: 4b1c ldr r3, [pc, #112] ; (80017e0 <DoKeyUP+0x298>)
800176e: 781b ldrb r3, [r3, #0]
8001770: b2db uxtb r3, r3
8001772: 2b06 cmp r3, #6
8001774: d13c bne.n 80017f0 <DoKeyUP+0x2a8>
if(pardata.amplif[ACTIVE_CHANNEL].IKD < 9)
8001776: 4b1c ldr r3, [pc, #112] ; (80017e8 <DoKeyUP+0x2a0>)
8001778: 681b ldr r3, [r3, #0]
800177a: 4a1c ldr r2, [pc, #112] ; (80017ec <DoKeyUP+0x2a4>)
800177c: 015b lsls r3, r3, #5
800177e: 4413 add r3, r2
8001780: 330a adds r3, #10
8001782: 881b ldrh r3, [r3, #0]
8001784: b29b uxth r3, r3
8001786: 2b08 cmp r3, #8
8001788: d86a bhi.n 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IKD++;
800178a: 4b17 ldr r3, [pc, #92] ; (80017e8 <DoKeyUP+0x2a0>)
800178c: 681b ldr r3, [r3, #0]
800178e: 4917 ldr r1, [pc, #92] ; (80017ec <DoKeyUP+0x2a4>)
8001790: 015a lsls r2, r3, #5
8001792: 440a add r2, r1
8001794: 320a adds r2, #10
8001796: 8812 ldrh r2, [r2, #0]
8001798: b292 uxth r2, r2
800179a: 3201 adds r2, #1
800179c: b291 uxth r1, r2
800179e: 4a13 ldr r2, [pc, #76] ; (80017ec <DoKeyUP+0x2a4>)
80017a0: 015b lsls r3, r3, #5
80017a2: 4413 add r3, r2
80017a4: 330a adds r3, #10
80017a6: 460a mov r2, r1
80017a8: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
80017aa: 4b0f ldr r3, [pc, #60] ; (80017e8 <DoKeyUP+0x2a0>)
80017ac: 681b ldr r3, [r3, #0]
80017ae: b2db uxtb r3, r3
80017b0: 4618 mov r0, r3
80017b2: f006 fa31 bl 8007c18 <WriteChannel>
80017b6: 4603 mov r3, r0
80017b8: 2b00 cmp r3, #0
80017ba: d051 beq.n 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IKD--;
80017bc: 4b0a ldr r3, [pc, #40] ; (80017e8 <DoKeyUP+0x2a0>)
80017be: 681b ldr r3, [r3, #0]
80017c0: 490a ldr r1, [pc, #40] ; (80017ec <DoKeyUP+0x2a4>)
80017c2: 015a lsls r2, r3, #5
80017c4: 440a add r2, r1
80017c6: 320a adds r2, #10
80017c8: 8812 ldrh r2, [r2, #0]
80017ca: b292 uxth r2, r2
80017cc: 3a01 subs r2, #1
80017ce: b291 uxth r1, r2
80017d0: 4a06 ldr r2, [pc, #24] ; (80017ec <DoKeyUP+0x2a4>)
80017d2: 015b lsls r3, r3, #5
80017d4: 4413 add r3, r2
80017d6: 330a adds r3, #10
80017d8: 460a mov r2, r1
80017da: 801a strh r2, [r3, #0]
}
80017dc: e040 b.n 8001860 <DoKeyUP+0x318>
80017de: bf00 nop
80017e0: 20020010 .word 0x20020010
80017e4: 20020140 .word 0x20020140
80017e8: 2006b1c0 .word 0x2006b1c0
80017ec: 2006b3f8 .word 0x2006b3f8
if(menupos == Kike)
80017f0: 4b1c ldr r3, [pc, #112] ; (8001864 <DoKeyUP+0x31c>)
80017f2: 781b ldrb r3, [r3, #0]
80017f4: b2db uxtb r3, r3
80017f6: 2b07 cmp r3, #7
80017f8: d132 bne.n 8001860 <DoKeyUP+0x318>
if(pardata.amplif[ACTIVE_CHANNEL].IKE < 9)
80017fa: 4b1b ldr r3, [pc, #108] ; (8001868 <DoKeyUP+0x320>)
80017fc: 681b ldr r3, [r3, #0]
80017fe: 4a1b ldr r2, [pc, #108] ; (800186c <DoKeyUP+0x324>)
8001800: 015b lsls r3, r3, #5
8001802: 4413 add r3, r2
8001804: 3308 adds r3, #8
8001806: 881b ldrh r3, [r3, #0]
8001808: b29b uxth r3, r3
800180a: 2b08 cmp r3, #8
800180c: d828 bhi.n 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IKE++;
800180e: 4b16 ldr r3, [pc, #88] ; (8001868 <DoKeyUP+0x320>)
8001810: 681b ldr r3, [r3, #0]
8001812: 4916 ldr r1, [pc, #88] ; (800186c <DoKeyUP+0x324>)
8001814: 015a lsls r2, r3, #5
8001816: 440a add r2, r1
8001818: 3208 adds r2, #8
800181a: 8812 ldrh r2, [r2, #0]
800181c: b292 uxth r2, r2
800181e: 3201 adds r2, #1
8001820: b291 uxth r1, r2
8001822: 4a12 ldr r2, [pc, #72] ; (800186c <DoKeyUP+0x324>)
8001824: 015b lsls r3, r3, #5
8001826: 4413 add r3, r2
8001828: 3308 adds r3, #8
800182a: 460a mov r2, r1
800182c: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
800182e: 4b0e ldr r3, [pc, #56] ; (8001868 <DoKeyUP+0x320>)
8001830: 681b ldr r3, [r3, #0]
8001832: b2db uxtb r3, r3
8001834: 4618 mov r0, r3
8001836: f006 f9ef bl 8007c18 <WriteChannel>
800183a: 4603 mov r3, r0
800183c: 2b00 cmp r3, #0
800183e: d00f beq.n 8001860 <DoKeyUP+0x318>
pardata.amplif[ACTIVE_CHANNEL].IKE--;
8001840: 4b09 ldr r3, [pc, #36] ; (8001868 <DoKeyUP+0x320>)
8001842: 681b ldr r3, [r3, #0]
8001844: 4909 ldr r1, [pc, #36] ; (800186c <DoKeyUP+0x324>)
8001846: 015a lsls r2, r3, #5
8001848: 440a add r2, r1
800184a: 3208 adds r2, #8
800184c: 8812 ldrh r2, [r2, #0]
800184e: b292 uxth r2, r2
8001850: 3a01 subs r2, #1
8001852: b291 uxth r1, r2
8001854: 4a05 ldr r2, [pc, #20] ; (800186c <DoKeyUP+0x324>)
8001856: 015b lsls r3, r3, #5
8001858: 4413 add r3, r2
800185a: 3308 adds r3, #8
800185c: 460a mov r2, r1
800185e: 801a strh r2, [r3, #0]
}
8001860: bf00 nop
8001862: bd80 pop {r7, pc}
8001864: 20020010 .word 0x20020010
8001868: 2006b1c0 .word 0x2006b1c0
800186c: 2006b3f8 .word 0x2006b3f8
08001870 <DoKeyDN>:
void DoKeyDN(void)
{
8001870: b580 push {r7, lr}
8001872: af00 add r7, sp, #0
if(menupos == Input)
8001874: 4ba5 ldr r3, [pc, #660] ; (8001b0c <DoKeyDN+0x29c>)
8001876: 781b ldrb r3, [r3, #0]
8001878: b2db uxtb r3, r3
800187a: 2b00 cmp r3, #0
800187c: d139 bne.n 80018f2 <DoKeyDN+0x82>
{
if(focused)
800187e: 4ba4 ldr r3, [pc, #656] ; (8001b10 <DoKeyDN+0x2a0>)
8001880: 781b ldrb r3, [r3, #0]
8001882: b2db uxtb r3, r3
8001884: 2b00 cmp r3, #0
8001886: d030 beq.n 80018ea <DoKeyDN+0x7a>
{
if(pardata.amplif[ACTIVE_CHANNEL].IIN > CHARGE)
8001888: 4ba2 ldr r3, [pc, #648] ; (8001b14 <DoKeyDN+0x2a4>)
800188a: 681b ldr r3, [r3, #0]
800188c: 4aa2 ldr r2, [pc, #648] ; (8001b18 <DoKeyDN+0x2a8>)
800188e: 015b lsls r3, r3, #5
8001890: 4413 add r3, r2
8001892: 881b ldrh r3, [r3, #0]
8001894: b29b uxth r3, r3
8001896: 2b00 cmp r3, #0
8001898: f000 81ec beq.w 8001c74 <DoKeyDN+0x404>
{
pardata.amplif[ACTIVE_CHANNEL].IIN--;
800189c: 4b9d ldr r3, [pc, #628] ; (8001b14 <DoKeyDN+0x2a4>)
800189e: 681b ldr r3, [r3, #0]
80018a0: 499d ldr r1, [pc, #628] ; (8001b18 <DoKeyDN+0x2a8>)
80018a2: 015a lsls r2, r3, #5
80018a4: 440a add r2, r1
80018a6: 8812 ldrh r2, [r2, #0]
80018a8: b292 uxth r2, r2
80018aa: 3a01 subs r2, #1
80018ac: b291 uxth r1, r2
80018ae: 4a9a ldr r2, [pc, #616] ; (8001b18 <DoKeyDN+0x2a8>)
80018b0: 015b lsls r3, r3, #5
80018b2: 4413 add r3, r2
80018b4: 460a mov r2, r1
80018b6: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
80018b8: 4b96 ldr r3, [pc, #600] ; (8001b14 <DoKeyDN+0x2a4>)
80018ba: 681b ldr r3, [r3, #0]
80018bc: b2db uxtb r3, r3
80018be: 4618 mov r0, r3
80018c0: f006 f9aa bl 8007c18 <WriteChannel>
80018c4: 4603 mov r3, r0
80018c6: 2b00 cmp r3, #0
80018c8: f000 81d4 beq.w 8001c74 <DoKeyDN+0x404>
{
pardata.amplif[ACTIVE_CHANNEL].IIN++;
80018cc: 4b91 ldr r3, [pc, #580] ; (8001b14 <DoKeyDN+0x2a4>)
80018ce: 681b ldr r3, [r3, #0]
80018d0: 4991 ldr r1, [pc, #580] ; (8001b18 <DoKeyDN+0x2a8>)
80018d2: 015a lsls r2, r3, #5
80018d4: 440a add r2, r1
80018d6: 8812 ldrh r2, [r2, #0]
80018d8: b292 uxth r2, r2
80018da: 3201 adds r2, #1
80018dc: b291 uxth r1, r2
80018de: 4a8e ldr r2, [pc, #568] ; (8001b18 <DoKeyDN+0x2a8>)
80018e0: 015b lsls r3, r3, #5
80018e2: 4413 add r3, r2
80018e4: 460a mov r2, r1
80018e6: 801a strh r2, [r3, #0]
{
pardata.amplif[ACTIVE_CHANNEL].IKE++;
}
}
}
}
80018e8: e1c4 b.n 8001c74 <DoKeyDN+0x404>
menupos = Hp;
80018ea: 4b88 ldr r3, [pc, #544] ; (8001b0c <DoKeyDN+0x29c>)
80018ec: 2201 movs r2, #1
80018ee: 701a strb r2, [r3, #0]
}
80018f0: e1c0 b.n 8001c74 <DoKeyDN+0x404>
if(menupos == Hp)
80018f2: 4b86 ldr r3, [pc, #536] ; (8001b0c <DoKeyDN+0x29c>)
80018f4: 781b ldrb r3, [r3, #0]
80018f6: b2db uxtb r3, r3
80018f8: 2b01 cmp r3, #1
80018fa: d13e bne.n 800197a <DoKeyDN+0x10a>
if(focused)
80018fc: 4b84 ldr r3, [pc, #528] ; (8001b10 <DoKeyDN+0x2a0>)
80018fe: 781b ldrb r3, [r3, #0]
8001900: b2db uxtb r3, r3
8001902: 2b00 cmp r3, #0
8001904: d035 beq.n 8001972 <DoKeyDN+0x102>
if(pardata.amplif[ACTIVE_CHANNEL].IFV > Hp0_2)
8001906: 4b83 ldr r3, [pc, #524] ; (8001b14 <DoKeyDN+0x2a4>)
8001908: 681b ldr r3, [r3, #0]
800190a: 4a83 ldr r2, [pc, #524] ; (8001b18 <DoKeyDN+0x2a8>)
800190c: 015b lsls r3, r3, #5
800190e: 4413 add r3, r2
8001910: 3302 adds r3, #2
8001912: 881b ldrh r3, [r3, #0]
8001914: b29b uxth r3, r3
8001916: 2b00 cmp r3, #0
8001918: f000 81ac beq.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IFV--;
800191c: 4b7d ldr r3, [pc, #500] ; (8001b14 <DoKeyDN+0x2a4>)
800191e: 681b ldr r3, [r3, #0]
8001920: 497d ldr r1, [pc, #500] ; (8001b18 <DoKeyDN+0x2a8>)
8001922: 015a lsls r2, r3, #5
8001924: 440a add r2, r1
8001926: 3202 adds r2, #2
8001928: 8812 ldrh r2, [r2, #0]
800192a: b292 uxth r2, r2
800192c: 3a01 subs r2, #1
800192e: b291 uxth r1, r2
8001930: 4a79 ldr r2, [pc, #484] ; (8001b18 <DoKeyDN+0x2a8>)
8001932: 015b lsls r3, r3, #5
8001934: 4413 add r3, r2
8001936: 3302 adds r3, #2
8001938: 460a mov r2, r1
800193a: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
800193c: 4b75 ldr r3, [pc, #468] ; (8001b14 <DoKeyDN+0x2a4>)
800193e: 681b ldr r3, [r3, #0]
8001940: b2db uxtb r3, r3
8001942: 4618 mov r0, r3
8001944: f006 f968 bl 8007c18 <WriteChannel>
8001948: 4603 mov r3, r0
800194a: 2b00 cmp r3, #0
800194c: f000 8192 beq.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IFV++;
8001950: 4b70 ldr r3, [pc, #448] ; (8001b14 <DoKeyDN+0x2a4>)
8001952: 681b ldr r3, [r3, #0]
8001954: 4970 ldr r1, [pc, #448] ; (8001b18 <DoKeyDN+0x2a8>)
8001956: 015a lsls r2, r3, #5
8001958: 440a add r2, r1
800195a: 3202 adds r2, #2
800195c: 8812 ldrh r2, [r2, #0]
800195e: b292 uxth r2, r2
8001960: 3201 adds r2, #1
8001962: b291 uxth r1, r2
8001964: 4a6c ldr r2, [pc, #432] ; (8001b18 <DoKeyDN+0x2a8>)
8001966: 015b lsls r3, r3, #5
8001968: 4413 add r3, r2
800196a: 3302 adds r3, #2
800196c: 460a mov r2, r1
800196e: 801a strh r2, [r3, #0]
}
8001970: e180 b.n 8001c74 <DoKeyDN+0x404>
menupos = Lp;
8001972: 4b66 ldr r3, [pc, #408] ; (8001b0c <DoKeyDN+0x29c>)
8001974: 2202 movs r2, #2
8001976: 701a strb r2, [r3, #0]
}
8001978: e17c b.n 8001c74 <DoKeyDN+0x404>
if(menupos == Lp)
800197a: 4b64 ldr r3, [pc, #400] ; (8001b0c <DoKeyDN+0x29c>)
800197c: 781b ldrb r3, [r3, #0]
800197e: b2db uxtb r3, r3
8001980: 2b02 cmp r3, #2
8001982: d13e bne.n 8001a02 <DoKeyDN+0x192>
if(focused)
8001984: 4b62 ldr r3, [pc, #392] ; (8001b10 <DoKeyDN+0x2a0>)
8001986: 781b ldrb r3, [r3, #0]
8001988: b2db uxtb r3, r3
800198a: 2b00 cmp r3, #0
800198c: d035 beq.n 80019fa <DoKeyDN+0x18a>
if(pardata.amplif[ACTIVE_CHANNEL].IFN > Lp200)
800198e: 4b61 ldr r3, [pc, #388] ; (8001b14 <DoKeyDN+0x2a4>)
8001990: 681b ldr r3, [r3, #0]
8001992: 4a61 ldr r2, [pc, #388] ; (8001b18 <DoKeyDN+0x2a8>)
8001994: 015b lsls r3, r3, #5
8001996: 4413 add r3, r2
8001998: 3304 adds r3, #4
800199a: 881b ldrh r3, [r3, #0]
800199c: b29b uxth r3, r3
800199e: 2b00 cmp r3, #0
80019a0: f000 8168 beq.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IFN--;
80019a4: 4b5b ldr r3, [pc, #364] ; (8001b14 <DoKeyDN+0x2a4>)
80019a6: 681b ldr r3, [r3, #0]
80019a8: 495b ldr r1, [pc, #364] ; (8001b18 <DoKeyDN+0x2a8>)
80019aa: 015a lsls r2, r3, #5
80019ac: 440a add r2, r1
80019ae: 3204 adds r2, #4
80019b0: 8812 ldrh r2, [r2, #0]
80019b2: b292 uxth r2, r2
80019b4: 3a01 subs r2, #1
80019b6: b291 uxth r1, r2
80019b8: 4a57 ldr r2, [pc, #348] ; (8001b18 <DoKeyDN+0x2a8>)
80019ba: 015b lsls r3, r3, #5
80019bc: 4413 add r3, r2
80019be: 3304 adds r3, #4
80019c0: 460a mov r2, r1
80019c2: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
80019c4: 4b53 ldr r3, [pc, #332] ; (8001b14 <DoKeyDN+0x2a4>)
80019c6: 681b ldr r3, [r3, #0]
80019c8: b2db uxtb r3, r3
80019ca: 4618 mov r0, r3
80019cc: f006 f924 bl 8007c18 <WriteChannel>
80019d0: 4603 mov r3, r0
80019d2: 2b00 cmp r3, #0
80019d4: f000 814e beq.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IFN++;
80019d8: 4b4e ldr r3, [pc, #312] ; (8001b14 <DoKeyDN+0x2a4>)
80019da: 681b ldr r3, [r3, #0]
80019dc: 494e ldr r1, [pc, #312] ; (8001b18 <DoKeyDN+0x2a8>)
80019de: 015a lsls r2, r3, #5
80019e0: 440a add r2, r1
80019e2: 3204 adds r2, #4
80019e4: 8812 ldrh r2, [r2, #0]
80019e6: b292 uxth r2, r2
80019e8: 3201 adds r2, #1
80019ea: b291 uxth r1, r2
80019ec: 4a4a ldr r2, [pc, #296] ; (8001b18 <DoKeyDN+0x2a8>)
80019ee: 015b lsls r3, r3, #5
80019f0: 4413 add r3, r2
80019f2: 3304 adds r3, #4
80019f4: 460a mov r2, r1
80019f6: 801a strh r2, [r3, #0]
}
80019f8: e13c b.n 8001c74 <DoKeyDN+0x404>
menupos = Km;
80019fa: 4b44 ldr r3, [pc, #272] ; (8001b0c <DoKeyDN+0x29c>)
80019fc: 2203 movs r2, #3
80019fe: 701a strb r2, [r3, #0]
}
8001a00: e138 b.n 8001c74 <DoKeyDN+0x404>
if(menupos == Km)
8001a02: 4b42 ldr r3, [pc, #264] ; (8001b0c <DoKeyDN+0x29c>)
8001a04: 781b ldrb r3, [r3, #0]
8001a06: b2db uxtb r3, r3
8001a08: 2b03 cmp r3, #3
8001a0a: f040 8087 bne.w 8001b1c <DoKeyDN+0x2ac>
if(focused)
8001a0e: 4b40 ldr r3, [pc, #256] ; (8001b10 <DoKeyDN+0x2a0>)
8001a10: 781b ldrb r3, [r3, #0]
8001a12: b2db uxtb r3, r3
8001a14: 2b00 cmp r3, #0
8001a16: d074 beq.n 8001b02 <DoKeyDN+0x292>
if(pardata.amplif[ACTIVE_CHANNEL].IIN == CHARGE)
8001a18: 4b3e ldr r3, [pc, #248] ; (8001b14 <DoKeyDN+0x2a4>)
8001a1a: 681b ldr r3, [r3, #0]
8001a1c: 4a3e ldr r2, [pc, #248] ; (8001b18 <DoKeyDN+0x2a8>)
8001a1e: 015b lsls r3, r3, #5
8001a20: 4413 add r3, r2
8001a22: 881b ldrh r3, [r3, #0]
8001a24: b29b uxth r3, r3
8001a26: 2b00 cmp r3, #0
8001a28: d135 bne.n 8001a96 <DoKeyDN+0x226>
if(pardata.amplif[ACTIVE_CHANNEL].IKU > Ku0_1)
8001a2a: 4b3a ldr r3, [pc, #232] ; (8001b14 <DoKeyDN+0x2a4>)
8001a2c: 681b ldr r3, [r3, #0]
8001a2e: 4a3a ldr r2, [pc, #232] ; (8001b18 <DoKeyDN+0x2a8>)
8001a30: 015b lsls r3, r3, #5
8001a32: 4413 add r3, r2
8001a34: 3306 adds r3, #6
8001a36: 881b ldrh r3, [r3, #0]
8001a38: b29b uxth r3, r3
8001a3a: 2b00 cmp r3, #0
8001a3c: f000 811a beq.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKU--;
8001a40: 4b34 ldr r3, [pc, #208] ; (8001b14 <DoKeyDN+0x2a4>)
8001a42: 681b ldr r3, [r3, #0]
8001a44: 4934 ldr r1, [pc, #208] ; (8001b18 <DoKeyDN+0x2a8>)
8001a46: 015a lsls r2, r3, #5
8001a48: 440a add r2, r1
8001a4a: 3206 adds r2, #6
8001a4c: 8812 ldrh r2, [r2, #0]
8001a4e: b292 uxth r2, r2
8001a50: 3a01 subs r2, #1
8001a52: b291 uxth r1, r2
8001a54: 4a30 ldr r2, [pc, #192] ; (8001b18 <DoKeyDN+0x2a8>)
8001a56: 015b lsls r3, r3, #5
8001a58: 4413 add r3, r2
8001a5a: 3306 adds r3, #6
8001a5c: 460a mov r2, r1
8001a5e: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8001a60: 4b2c ldr r3, [pc, #176] ; (8001b14 <DoKeyDN+0x2a4>)
8001a62: 681b ldr r3, [r3, #0]
8001a64: b2db uxtb r3, r3
8001a66: 4618 mov r0, r3
8001a68: f006 f8d6 bl 8007c18 <WriteChannel>
8001a6c: 4603 mov r3, r0
8001a6e: 2b00 cmp r3, #0
8001a70: f000 8100 beq.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKU++;
8001a74: 4b27 ldr r3, [pc, #156] ; (8001b14 <DoKeyDN+0x2a4>)
8001a76: 681b ldr r3, [r3, #0]
8001a78: 4927 ldr r1, [pc, #156] ; (8001b18 <DoKeyDN+0x2a8>)
8001a7a: 015a lsls r2, r3, #5
8001a7c: 440a add r2, r1
8001a7e: 3206 adds r2, #6
8001a80: 8812 ldrh r2, [r2, #0]
8001a82: b292 uxth r2, r2
8001a84: 3201 adds r2, #1
8001a86: b291 uxth r1, r2
8001a88: 4a23 ldr r2, [pc, #140] ; (8001b18 <DoKeyDN+0x2a8>)
8001a8a: 015b lsls r3, r3, #5
8001a8c: 4413 add r3, r2
8001a8e: 3306 adds r3, #6
8001a90: 460a mov r2, r1
8001a92: 801a strh r2, [r3, #0]
}
8001a94: e0ee b.n 8001c74 <DoKeyDN+0x404>
if(pardata.amplif[ACTIVE_CHANNEL].IKU > Ku1)
8001a96: 4b1f ldr r3, [pc, #124] ; (8001b14 <DoKeyDN+0x2a4>)
8001a98: 681b ldr r3, [r3, #0]
8001a9a: 4a1f ldr r2, [pc, #124] ; (8001b18 <DoKeyDN+0x2a8>)
8001a9c: 015b lsls r3, r3, #5
8001a9e: 4413 add r3, r2
8001aa0: 3306 adds r3, #6
8001aa2: 881b ldrh r3, [r3, #0]
8001aa4: b29b uxth r3, r3
8001aa6: 2b03 cmp r3, #3
8001aa8: f240 80e4 bls.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKU--;
8001aac: 4b19 ldr r3, [pc, #100] ; (8001b14 <DoKeyDN+0x2a4>)
8001aae: 681b ldr r3, [r3, #0]
8001ab0: 4919 ldr r1, [pc, #100] ; (8001b18 <DoKeyDN+0x2a8>)
8001ab2: 015a lsls r2, r3, #5
8001ab4: 440a add r2, r1
8001ab6: 3206 adds r2, #6
8001ab8: 8812 ldrh r2, [r2, #0]
8001aba: b292 uxth r2, r2
8001abc: 3a01 subs r2, #1
8001abe: b291 uxth r1, r2
8001ac0: 4a15 ldr r2, [pc, #84] ; (8001b18 <DoKeyDN+0x2a8>)
8001ac2: 015b lsls r3, r3, #5
8001ac4: 4413 add r3, r2
8001ac6: 3306 adds r3, #6
8001ac8: 460a mov r2, r1
8001aca: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8001acc: 4b11 ldr r3, [pc, #68] ; (8001b14 <DoKeyDN+0x2a4>)
8001ace: 681b ldr r3, [r3, #0]
8001ad0: b2db uxtb r3, r3
8001ad2: 4618 mov r0, r3
8001ad4: f006 f8a0 bl 8007c18 <WriteChannel>
8001ad8: 4603 mov r3, r0
8001ada: 2b00 cmp r3, #0
8001adc: f000 80ca beq.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKU++;
8001ae0: 4b0c ldr r3, [pc, #48] ; (8001b14 <DoKeyDN+0x2a4>)
8001ae2: 681b ldr r3, [r3, #0]
8001ae4: 490c ldr r1, [pc, #48] ; (8001b18 <DoKeyDN+0x2a8>)
8001ae6: 015a lsls r2, r3, #5
8001ae8: 440a add r2, r1
8001aea: 3206 adds r2, #6
8001aec: 8812 ldrh r2, [r2, #0]
8001aee: b292 uxth r2, r2
8001af0: 3201 adds r2, #1
8001af2: b291 uxth r1, r2
8001af4: 4a08 ldr r2, [pc, #32] ; (8001b18 <DoKeyDN+0x2a8>)
8001af6: 015b lsls r3, r3, #5
8001af8: 4413 add r3, r2
8001afa: 3306 adds r3, #6
8001afc: 460a mov r2, r1
8001afe: 801a strh r2, [r3, #0]
}
8001b00: e0b8 b.n 8001c74 <DoKeyDN+0x404>
menupos = Kn;
8001b02: 4b02 ldr r3, [pc, #8] ; (8001b0c <DoKeyDN+0x29c>)
8001b04: 2204 movs r2, #4
8001b06: 701a strb r2, [r3, #0]
}
8001b08: e0b4 b.n 8001c74 <DoKeyDN+0x404>
8001b0a: bf00 nop
8001b0c: 20020010 .word 0x20020010
8001b10: 20020140 .word 0x20020140
8001b14: 2006b1c0 .word 0x2006b1c0
8001b18: 2006b3f8 .word 0x2006b3f8
if(menupos == Kiks)
8001b1c: 4b56 ldr r3, [pc, #344] ; (8001c78 <DoKeyDN+0x408>)
8001b1e: 781b ldrb r3, [r3, #0]
8001b20: b2db uxtb r3, r3
8001b22: 2b05 cmp r3, #5
8001b24: d135 bne.n 8001b92 <DoKeyDN+0x322>
if(pardata.amplif[ACTIVE_CHANNEL].IKS > 1)
8001b26: 4b55 ldr r3, [pc, #340] ; (8001c7c <DoKeyDN+0x40c>)
8001b28: 681b ldr r3, [r3, #0]
8001b2a: 4a55 ldr r2, [pc, #340] ; (8001c80 <DoKeyDN+0x410>)
8001b2c: 015b lsls r3, r3, #5
8001b2e: 4413 add r3, r2
8001b30: 330c adds r3, #12
8001b32: 881b ldrh r3, [r3, #0]
8001b34: b29b uxth r3, r3
8001b36: 2b01 cmp r3, #1
8001b38: f240 809c bls.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKS--;
8001b3c: 4b4f ldr r3, [pc, #316] ; (8001c7c <DoKeyDN+0x40c>)
8001b3e: 681b ldr r3, [r3, #0]
8001b40: 494f ldr r1, [pc, #316] ; (8001c80 <DoKeyDN+0x410>)
8001b42: 015a lsls r2, r3, #5
8001b44: 440a add r2, r1
8001b46: 320c adds r2, #12
8001b48: 8812 ldrh r2, [r2, #0]
8001b4a: b292 uxth r2, r2
8001b4c: 3a01 subs r2, #1
8001b4e: b291 uxth r1, r2
8001b50: 4a4b ldr r2, [pc, #300] ; (8001c80 <DoKeyDN+0x410>)
8001b52: 015b lsls r3, r3, #5
8001b54: 4413 add r3, r2
8001b56: 330c adds r3, #12
8001b58: 460a mov r2, r1
8001b5a: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8001b5c: 4b47 ldr r3, [pc, #284] ; (8001c7c <DoKeyDN+0x40c>)
8001b5e: 681b ldr r3, [r3, #0]
8001b60: b2db uxtb r3, r3
8001b62: 4618 mov r0, r3
8001b64: f006 f858 bl 8007c18 <WriteChannel>
8001b68: 4603 mov r3, r0
8001b6a: 2b00 cmp r3, #0
8001b6c: f000 8082 beq.w 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKS++;
8001b70: 4b42 ldr r3, [pc, #264] ; (8001c7c <DoKeyDN+0x40c>)
8001b72: 681b ldr r3, [r3, #0]
8001b74: 4942 ldr r1, [pc, #264] ; (8001c80 <DoKeyDN+0x410>)
8001b76: 015a lsls r2, r3, #5
8001b78: 440a add r2, r1
8001b7a: 320c adds r2, #12
8001b7c: 8812 ldrh r2, [r2, #0]
8001b7e: b292 uxth r2, r2
8001b80: 3201 adds r2, #1
8001b82: b291 uxth r1, r2
8001b84: 4a3e ldr r2, [pc, #248] ; (8001c80 <DoKeyDN+0x410>)
8001b86: 015b lsls r3, r3, #5
8001b88: 4413 add r3, r2
8001b8a: 330c adds r3, #12
8001b8c: 460a mov r2, r1
8001b8e: 801a strh r2, [r3, #0]
}
8001b90: e070 b.n 8001c74 <DoKeyDN+0x404>
if(menupos == Kikd)
8001b92: 4b39 ldr r3, [pc, #228] ; (8001c78 <DoKeyDN+0x408>)
8001b94: 781b ldrb r3, [r3, #0]
8001b96: b2db uxtb r3, r3
8001b98: 2b06 cmp r3, #6
8001b9a: d133 bne.n 8001c04 <DoKeyDN+0x394>
if(pardata.amplif[ACTIVE_CHANNEL].IKD > 0)
8001b9c: 4b37 ldr r3, [pc, #220] ; (8001c7c <DoKeyDN+0x40c>)
8001b9e: 681b ldr r3, [r3, #0]
8001ba0: 4a37 ldr r2, [pc, #220] ; (8001c80 <DoKeyDN+0x410>)
8001ba2: 015b lsls r3, r3, #5
8001ba4: 4413 add r3, r2
8001ba6: 330a adds r3, #10
8001ba8: 881b ldrh r3, [r3, #0]
8001baa: b29b uxth r3, r3
8001bac: 2b00 cmp r3, #0
8001bae: d061 beq.n 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKD--;
8001bb0: 4b32 ldr r3, [pc, #200] ; (8001c7c <DoKeyDN+0x40c>)
8001bb2: 681b ldr r3, [r3, #0]
8001bb4: 4932 ldr r1, [pc, #200] ; (8001c80 <DoKeyDN+0x410>)
8001bb6: 015a lsls r2, r3, #5
8001bb8: 440a add r2, r1
8001bba: 320a adds r2, #10
8001bbc: 8812 ldrh r2, [r2, #0]
8001bbe: b292 uxth r2, r2
8001bc0: 3a01 subs r2, #1
8001bc2: b291 uxth r1, r2
8001bc4: 4a2e ldr r2, [pc, #184] ; (8001c80 <DoKeyDN+0x410>)
8001bc6: 015b lsls r3, r3, #5
8001bc8: 4413 add r3, r2
8001bca: 330a adds r3, #10
8001bcc: 460a mov r2, r1
8001bce: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8001bd0: 4b2a ldr r3, [pc, #168] ; (8001c7c <DoKeyDN+0x40c>)
8001bd2: 681b ldr r3, [r3, #0]
8001bd4: b2db uxtb r3, r3
8001bd6: 4618 mov r0, r3
8001bd8: f006 f81e bl 8007c18 <WriteChannel>
8001bdc: 4603 mov r3, r0
8001bde: 2b00 cmp r3, #0
8001be0: d048 beq.n 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKD++;
8001be2: 4b26 ldr r3, [pc, #152] ; (8001c7c <DoKeyDN+0x40c>)
8001be4: 681b ldr r3, [r3, #0]
8001be6: 4926 ldr r1, [pc, #152] ; (8001c80 <DoKeyDN+0x410>)
8001be8: 015a lsls r2, r3, #5
8001bea: 440a add r2, r1
8001bec: 320a adds r2, #10
8001bee: 8812 ldrh r2, [r2, #0]
8001bf0: b292 uxth r2, r2
8001bf2: 3201 adds r2, #1
8001bf4: b291 uxth r1, r2
8001bf6: 4a22 ldr r2, [pc, #136] ; (8001c80 <DoKeyDN+0x410>)
8001bf8: 015b lsls r3, r3, #5
8001bfa: 4413 add r3, r2
8001bfc: 330a adds r3, #10
8001bfe: 460a mov r2, r1
8001c00: 801a strh r2, [r3, #0]
}
8001c02: e037 b.n 8001c74 <DoKeyDN+0x404>
if(menupos == Kike)
8001c04: 4b1c ldr r3, [pc, #112] ; (8001c78 <DoKeyDN+0x408>)
8001c06: 781b ldrb r3, [r3, #0]
8001c08: b2db uxtb r3, r3
8001c0a: 2b07 cmp r3, #7
8001c0c: d132 bne.n 8001c74 <DoKeyDN+0x404>
if(pardata.amplif[ACTIVE_CHANNEL].IKE > 0)
8001c0e: 4b1b ldr r3, [pc, #108] ; (8001c7c <DoKeyDN+0x40c>)
8001c10: 681b ldr r3, [r3, #0]
8001c12: 4a1b ldr r2, [pc, #108] ; (8001c80 <DoKeyDN+0x410>)
8001c14: 015b lsls r3, r3, #5
8001c16: 4413 add r3, r2
8001c18: 3308 adds r3, #8
8001c1a: 881b ldrh r3, [r3, #0]
8001c1c: b29b uxth r3, r3
8001c1e: 2b00 cmp r3, #0
8001c20: d028 beq.n 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKE--;
8001c22: 4b16 ldr r3, [pc, #88] ; (8001c7c <DoKeyDN+0x40c>)
8001c24: 681b ldr r3, [r3, #0]
8001c26: 4916 ldr r1, [pc, #88] ; (8001c80 <DoKeyDN+0x410>)
8001c28: 015a lsls r2, r3, #5
8001c2a: 440a add r2, r1
8001c2c: 3208 adds r2, #8
8001c2e: 8812 ldrh r2, [r2, #0]
8001c30: b292 uxth r2, r2
8001c32: 3a01 subs r2, #1
8001c34: b291 uxth r1, r2
8001c36: 4a12 ldr r2, [pc, #72] ; (8001c80 <DoKeyDN+0x410>)
8001c38: 015b lsls r3, r3, #5
8001c3a: 4413 add r3, r2
8001c3c: 3308 adds r3, #8
8001c3e: 460a mov r2, r1
8001c40: 801a strh r2, [r3, #0]
if(WriteChannel(ACTIVE_CHANNEL))
8001c42: 4b0e ldr r3, [pc, #56] ; (8001c7c <DoKeyDN+0x40c>)
8001c44: 681b ldr r3, [r3, #0]
8001c46: b2db uxtb r3, r3
8001c48: 4618 mov r0, r3
8001c4a: f005 ffe5 bl 8007c18 <WriteChannel>
8001c4e: 4603 mov r3, r0
8001c50: 2b00 cmp r3, #0
8001c52: d00f beq.n 8001c74 <DoKeyDN+0x404>
pardata.amplif[ACTIVE_CHANNEL].IKE++;
8001c54: 4b09 ldr r3, [pc, #36] ; (8001c7c <DoKeyDN+0x40c>)
8001c56: 681b ldr r3, [r3, #0]
8001c58: 4909 ldr r1, [pc, #36] ; (8001c80 <DoKeyDN+0x410>)
8001c5a: 015a lsls r2, r3, #5
8001c5c: 440a add r2, r1
8001c5e: 3208 adds r2, #8
8001c60: 8812 ldrh r2, [r2, #0]
8001c62: b292 uxth r2, r2
8001c64: 3201 adds r2, #1
8001c66: b291 uxth r1, r2
8001c68: 4a05 ldr r2, [pc, #20] ; (8001c80 <DoKeyDN+0x410>)
8001c6a: 015b lsls r3, r3, #5
8001c6c: 4413 add r3, r2
8001c6e: 3308 adds r3, #8
8001c70: 460a mov r2, r1
8001c72: 801a strh r2, [r3, #0]
}
8001c74: bf00 nop
8001c76: bd80 pop {r7, pc}
8001c78: 20020010 .word 0x20020010
8001c7c: 2006b1c0 .word 0x2006b1c0
8001c80: 2006b3f8 .word 0x2006b3f8
08001c84 <LTDC_Reset>:
}
void LTDC_Reset(void)
{
8001c84: b580 push {r7, lr}
8001c86: af00 add r7, sp, #0
HAL_GPIO_WritePin(RESET_GPIO_Port, RESET_Pin, GPIO_PIN_SET); HAL_Delay(100);
8001c88: 2201 movs r2, #1
8001c8a: 2140 movs r1, #64 ; 0x40
8001c8c: 480b ldr r0, [pc, #44] ; (8001cbc <LTDC_Reset+0x38>)
8001c8e: f007 fd01 bl 8009694 <HAL_GPIO_WritePin>
8001c92: 2064 movs r0, #100 ; 0x64
8001c94: f006 fd18 bl 80086c8 <HAL_Delay>
HAL_GPIO_WritePin(RESET_GPIO_Port, RESET_Pin, GPIO_PIN_RESET); HAL_Delay(100);
8001c98: 2200 movs r2, #0
8001c9a: 2140 movs r1, #64 ; 0x40
8001c9c: 4807 ldr r0, [pc, #28] ; (8001cbc <LTDC_Reset+0x38>)
8001c9e: f007 fcf9 bl 8009694 <HAL_GPIO_WritePin>
8001ca2: 2064 movs r0, #100 ; 0x64
8001ca4: f006 fd10 bl 80086c8 <HAL_Delay>
HAL_GPIO_WritePin(RESET_GPIO_Port, RESET_Pin, GPIO_PIN_SET); HAL_Delay(100);
8001ca8: 2201 movs r2, #1
8001caa: 2140 movs r1, #64 ; 0x40
8001cac: 4803 ldr r0, [pc, #12] ; (8001cbc <LTDC_Reset+0x38>)
8001cae: f007 fcf1 bl 8009694 <HAL_GPIO_WritePin>
8001cb2: 2064 movs r0, #100 ; 0x64
8001cb4: f006 fd08 bl 80086c8 <HAL_Delay>
}
8001cb8: bf00 nop
8001cba: bd80 pop {r7, pc}
8001cbc: 40020c00 .word 0x40020c00
08001cc0 <MX_LTDC_Init>:
/* LTDC init function */
void MX_LTDC_Init(void)
{
8001cc0: b580 push {r7, lr}
8001cc2: b09c sub sp, #112 ; 0x70
8001cc4: af00 add r7, sp, #0
__IO uint32_t tickstart;
// SET_BIT(RCC->CR, RCC_CR_PLLSAION);
// HAL_Delay(100);
LTDC_Reset();
8001cc6: f7ff ffdd bl 8001c84 <LTDC_Reset>
__HAL_RCC_PLLSAI_ENABLE();
8001cca: 4a8c ldr r2, [pc, #560] ; (8001efc <MX_LTDC_Init+0x23c>)
8001ccc: 4b8b ldr r3, [pc, #556] ; (8001efc <MX_LTDC_Init+0x23c>)
8001cce: 681b ldr r3, [r3, #0]
8001cd0: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
8001cd4: 6013 str r3, [r2, #0]
tickstart = HAL_GetTick();
8001cd6: f006 fceb bl 80086b0 <HAL_GetTick>
8001cda: 4603 mov r3, r0
8001cdc: 607b str r3, [r7, #4]
while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
8001cde: e008 b.n 8001cf2 <MX_LTDC_Init+0x32>
{
if((HAL_GetTick() - tickstart) >= PLLSAI_TIMEOUT_VALUE) {
8001ce0: f006 fce6 bl 80086b0 <HAL_GetTick>
8001ce4: 4602 mov r2, r0
8001ce6: 687b ldr r3, [r7, #4]
8001ce8: 1ad3 subs r3, r2, r3
8001cea: 2b63 cmp r3, #99 ; 0x63
8001cec: d901 bls.n 8001cf2 <MX_LTDC_Init+0x32>
Error_Handler();
8001cee: f001 fad1 bl 8003294 <Error_Handler>
while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
8001cf2: 4b82 ldr r3, [pc, #520] ; (8001efc <MX_LTDC_Init+0x23c>)
8001cf4: 681b ldr r3, [r3, #0]
8001cf6: f003 5300 and.w r3, r3, #536870912 ; 0x20000000
8001cfa: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000
8001cfe: d1ef bne.n 8001ce0 <MX_LTDC_Init+0x20>
}
}
hLtdcHandler.Instance = LTDC;
8001d00: 4b7f ldr r3, [pc, #508] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d02: 4a80 ldr r2, [pc, #512] ; (8001f04 <MX_LTDC_Init+0x244>)
8001d04: 601a str r2, [r3, #0]
hLtdcHandler.Init.HSPolarity = LTDC_HSPOLARITY_AL;
8001d06: 4b7e ldr r3, [pc, #504] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d08: 2200 movs r2, #0
8001d0a: 605a str r2, [r3, #4]
hLtdcHandler.Init.VSPolarity = LTDC_VSPOLARITY_AL;
8001d0c: 4b7c ldr r3, [pc, #496] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d0e: 2200 movs r2, #0
8001d10: 609a str r2, [r3, #8]
hLtdcHandler.Init.DEPolarity = LTDC_DEPOLARITY_AH;
8001d12: 4b7b ldr r3, [pc, #492] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d14: f04f 5200 mov.w r2, #536870912 ; 0x20000000
8001d18: 60da str r2, [r3, #12]
hLtdcHandler.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
8001d1a: 4b79 ldr r3, [pc, #484] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d1c: 2200 movs r2, #0
8001d1e: 611a str r2, [r3, #16]
hLtdcHandler.Init.HorizontalSync = 38;
8001d20: 4b77 ldr r3, [pc, #476] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d22: 2226 movs r2, #38 ; 0x26
8001d24: 615a str r2, [r3, #20]
hLtdcHandler.Init.VerticalSync = 4;
8001d26: 4b76 ldr r3, [pc, #472] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d28: 2204 movs r2, #4
8001d2a: 619a str r2, [r3, #24]
hLtdcHandler.Init.AccumulatedHBP = 68;
8001d2c: 4b74 ldr r3, [pc, #464] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d2e: 2244 movs r2, #68 ; 0x44
8001d30: 61da str r2, [r3, #28]
hLtdcHandler.Init.AccumulatedVBP = 18;
8001d32: 4b73 ldr r3, [pc, #460] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d34: 2212 movs r2, #18
8001d36: 621a str r2, [r3, #32]
hLtdcHandler.Init.AccumulatedActiveW = 388;
8001d38: 4b71 ldr r3, [pc, #452] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d3a: f44f 72c2 mov.w r2, #388 ; 0x184
8001d3e: 625a str r2, [r3, #36] ; 0x24
hLtdcHandler.Init.AccumulatedActiveH = 262;
8001d40: 4b6f ldr r3, [pc, #444] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d42: f44f 7283 mov.w r2, #262 ; 0x106
8001d46: 629a str r2, [r3, #40] ; 0x28
hLtdcHandler.Init.TotalWidth = 408;
8001d48: 4b6d ldr r3, [pc, #436] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d4a: f44f 72cc mov.w r2, #408 ; 0x198
8001d4e: 62da str r2, [r3, #44] ; 0x2c
hLtdcHandler.Init.TotalHeigh = 263;
8001d50: 4b6b ldr r3, [pc, #428] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d52: f240 1207 movw r2, #263 ; 0x107
8001d56: 631a str r2, [r3, #48] ; 0x30
hLtdcHandler.Init.Backcolor.Blue = 0;
8001d58: 4b69 ldr r3, [pc, #420] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d5a: 2200 movs r2, #0
8001d5c: f883 2034 strb.w r2, [r3, #52] ; 0x34
hLtdcHandler.Init.Backcolor.Green = 0;
8001d60: 4b67 ldr r3, [pc, #412] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d62: 2200 movs r2, #0
8001d64: f883 2035 strb.w r2, [r3, #53] ; 0x35
hLtdcHandler.Init.Backcolor.Red = 0;
8001d68: 4b65 ldr r3, [pc, #404] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d6a: 2200 movs r2, #0
8001d6c: f883 2036 strb.w r2, [r3, #54] ; 0x36
if (HAL_LTDC_Init(&hLtdcHandler) != HAL_OK) {
8001d70: 4863 ldr r0, [pc, #396] ; (8001f00 <MX_LTDC_Init+0x240>)
8001d72: f007 fcc1 bl 80096f8 <HAL_LTDC_Init>
8001d76: 4603 mov r3, r0
8001d78: 2b00 cmp r3, #0
8001d7a: d001 beq.n 8001d80 <MX_LTDC_Init+0xc0>
Error_Handler();
8001d7c: f001 fa8a bl 8003294 <Error_Handler>
}
pLayerCfg.WindowX0 = 0;
8001d80: 2300 movs r3, #0
8001d82: 63fb str r3, [r7, #60] ; 0x3c
pLayerCfg.WindowX1 = 320;
8001d84: f44f 73a0 mov.w r3, #320 ; 0x140
8001d88: 643b str r3, [r7, #64] ; 0x40
pLayerCfg.WindowY0 = 0;
8001d8a: 2300 movs r3, #0
8001d8c: 647b str r3, [r7, #68] ; 0x44
pLayerCfg.WindowY1 = 240;
8001d8e: 23f0 movs r3, #240 ; 0xf0
8001d90: 64bb str r3, [r7, #72] ; 0x48
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
8001d92: 2302 movs r3, #2
8001d94: 64fb str r3, [r7, #76] ; 0x4c
pLayerCfg.Alpha = 255;
8001d96: 23ff movs r3, #255 ; 0xff
8001d98: 653b str r3, [r7, #80] ; 0x50
pLayerCfg.Alpha0 = 0;
8001d9a: 2300 movs r3, #0
8001d9c: 657b str r3, [r7, #84] ; 0x54
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
8001d9e: f44f 63c0 mov.w r3, #1536 ; 0x600
8001da2: 65bb str r3, [r7, #88] ; 0x58
pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
8001da4: 2307 movs r3, #7
8001da6: 65fb str r3, [r7, #92] ; 0x5c
pLayerCfg.FBStartAdress = (uint32_t) &LAYER_1[0];
8001da8: 4b57 ldr r3, [pc, #348] ; (8001f08 <MX_LTDC_Init+0x248>)
8001daa: 663b str r3, [r7, #96] ; 0x60
pLayerCfg.ImageWidth = 320;
8001dac: f44f 73a0 mov.w r3, #320 ; 0x140
8001db0: 667b str r3, [r7, #100] ; 0x64
pLayerCfg.ImageHeight = 240;
8001db2: 23f0 movs r3, #240 ; 0xf0
8001db4: 66bb str r3, [r7, #104] ; 0x68
pLayerCfg.Backcolor.Blue = 0;
8001db6: 2300 movs r3, #0
8001db8: f887 306c strb.w r3, [r7, #108] ; 0x6c
pLayerCfg.Backcolor.Green = 0;
8001dbc: 2300 movs r3, #0
8001dbe: f887 306d strb.w r3, [r7, #109] ; 0x6d
pLayerCfg.Backcolor.Red = 0;
8001dc2: 2300 movs r3, #0
8001dc4: f887 306e strb.w r3, [r7, #110] ; 0x6e
if(HAL_LTDC_ConfigLayer(&hLtdcHandler, &pLayerCfg, 0) != HAL_OK) {
8001dc8: f107 033c add.w r3, r7, #60 ; 0x3c
8001dcc: 2200 movs r2, #0
8001dce: 4619 mov r1, r3
8001dd0: 484b ldr r0, [pc, #300] ; (8001f00 <MX_LTDC_Init+0x240>)
8001dd2: f007 fe19 bl 8009a08 <HAL_LTDC_ConfigLayer>
8001dd6: 4603 mov r3, r0
8001dd8: 2b00 cmp r3, #0
8001dda: d001 beq.n 8001de0 <MX_LTDC_Init+0x120>
Error_Handler();
8001ddc: f001 fa5a bl 8003294 <Error_Handler>
}
pLayerCfg1.WindowX0 = 0;
8001de0: 2300 movs r3, #0
8001de2: 60bb str r3, [r7, #8]
pLayerCfg1.WindowX1 = 320;
8001de4: f44f 73a0 mov.w r3, #320 ; 0x140
8001de8: 60fb str r3, [r7, #12]
pLayerCfg1.WindowY0 = 0;
8001dea: 2300 movs r3, #0
8001dec: 613b str r3, [r7, #16]
pLayerCfg1.WindowY1 = 240;
8001dee: 23f0 movs r3, #240 ; 0xf0
8001df0: 617b str r3, [r7, #20]
pLayerCfg1.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
8001df2: 2302 movs r3, #2
8001df4: 61bb str r3, [r7, #24]
pLayerCfg1.Alpha = 255;
8001df6: 23ff movs r3, #255 ; 0xff
8001df8: 61fb str r3, [r7, #28]
pLayerCfg1.Alpha0 = 0;
8001dfa: 2300 movs r3, #0
8001dfc: 623b str r3, [r7, #32]
pLayerCfg1.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
8001dfe: f44f 63c0 mov.w r3, #1536 ; 0x600
8001e02: 627b str r3, [r7, #36] ; 0x24
pLayerCfg1.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
8001e04: 2307 movs r3, #7
8001e06: 62bb str r3, [r7, #40] ; 0x28
pLayerCfg1.FBStartAdress = (uint32_t) &LAYER_2[0];
8001e08: 4b40 ldr r3, [pc, #256] ; (8001f0c <MX_LTDC_Init+0x24c>)
8001e0a: 62fb str r3, [r7, #44] ; 0x2c
pLayerCfg1.ImageWidth = 320;
8001e0c: f44f 73a0 mov.w r3, #320 ; 0x140
8001e10: 633b str r3, [r7, #48] ; 0x30
pLayerCfg1.ImageHeight = 240;
8001e12: 23f0 movs r3, #240 ; 0xf0
8001e14: 637b str r3, [r7, #52] ; 0x34
pLayerCfg1.Backcolor.Blue = 0;
8001e16: 2300 movs r3, #0
8001e18: f887 3038 strb.w r3, [r7, #56] ; 0x38
pLayerCfg1.Backcolor.Green = 0;
8001e1c: 2300 movs r3, #0
8001e1e: f887 3039 strb.w r3, [r7, #57] ; 0x39
pLayerCfg1.Backcolor.Red = 0;
8001e22: 2300 movs r3, #0
8001e24: f887 303a strb.w r3, [r7, #58] ; 0x3a
if(HAL_LTDC_ConfigLayer(&hLtdcHandler, &pLayerCfg1, 1) != HAL_OK) {
8001e28: f107 0308 add.w r3, r7, #8
8001e2c: 2201 movs r2, #1
8001e2e: 4619 mov r1, r3
8001e30: 4833 ldr r0, [pc, #204] ; (8001f00 <MX_LTDC_Init+0x240>)
8001e32: f007 fde9 bl 8009a08 <HAL_LTDC_ConfigLayer>
8001e36: 4603 mov r3, r0
8001e38: 2b00 cmp r3, #0
8001e3a: d001 beq.n 8001e40 <MX_LTDC_Init+0x180>
Error_Handler();
8001e3c: f001 fa2a bl 8003294 <Error_Handler>
}
//HAL_LTDC_EnableCLUT(&hLtdcHandler, 0);
//HAL_LTDC_EnableCLUT(&hLtdcHandler, 1);
ActiveLayer = 1;
8001e40: 4b33 ldr r3, [pc, #204] ; (8001f10 <MX_LTDC_Init+0x250>)
8001e42: 2201 movs r2, #1
8001e44: 601a str r2, [r3, #0]
RenderingLayer = 0;
8001e46: 4b33 ldr r3, [pc, #204] ; (8001f14 <MX_LTDC_Init+0x254>)
8001e48: 2200 movs r2, #0
8001e4a: 601a str r2, [r3, #0]
BSP_LCD_DisplayOff();
8001e4c: f000 f87a bl 8001f44 <BSP_LCD_DisplayOff>
BSP_LCD_SelectLayer(0);
8001e50: 2000 movs r0, #0
8001e52: f000 f961 bl 8002118 <BSP_LCD_SelectLayer>
BSP_LCD_Clear(0xFF000000);
8001e56: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8001e5a: f000 fa3f bl 80022dc <BSP_LCD_Clear>
BSP_LCD_SelectLayer(1);
8001e5e: 2001 movs r0, #1
8001e60: f000 f95a bl 8002118 <BSP_LCD_SelectLayer>
BSP_LCD_Clear(0xFF000000);
8001e64: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8001e68: f000 fa38 bl 80022dc <BSP_LCD_Clear>
BSP_LCD_SetLayerVisible(RenderingLayer, DISABLE);
8001e6c: 4b29 ldr r3, [pc, #164] ; (8001f14 <MX_LTDC_Init+0x254>)
8001e6e: 681b ldr r3, [r3, #0]
8001e70: 2100 movs r1, #0
8001e72: 4618 mov r0, r3
8001e74: f000 f960 bl 8002138 <BSP_LCD_SetLayerVisible>
BSP_LCD_SetLayerVisible(ActiveLayer, DISABLE);
8001e78: 4b25 ldr r3, [pc, #148] ; (8001f10 <MX_LTDC_Init+0x250>)
8001e7a: 681b ldr r3, [r3, #0]
8001e7c: 2100 movs r1, #0
8001e7e: 4618 mov r0, r3
8001e80: f000 f95a bl 8002138 <BSP_LCD_SetLayerVisible>
HAL_LTDC_Reload(&hLtdcHandler, LTDC_RELOAD_IMMEDIATE);
8001e84: 2101 movs r1, #1
8001e86: 481e ldr r0, [pc, #120] ; (8001f00 <MX_LTDC_Init+0x240>)
8001e88: f007 fe34 bl 8009af4 <HAL_LTDC_Reload>
DrawProp[0].BackColor = LCD_COLOR_BLACK;
8001e8c: 4b22 ldr r3, [pc, #136] ; (8001f18 <MX_LTDC_Init+0x258>)
8001e8e: f04f 427f mov.w r2, #4278190080 ; 0xff000000
8001e92: 605a str r2, [r3, #4]
DrawProp[0].pFont = &Font17;
8001e94: 4b20 ldr r3, [pc, #128] ; (8001f18 <MX_LTDC_Init+0x258>)
8001e96: 4a21 ldr r2, [pc, #132] ; (8001f1c <MX_LTDC_Init+0x25c>)
8001e98: 609a str r2, [r3, #8]
DrawProp[0].TextColor = LCD_COLOR_WHITE;
8001e9a: 4b1f ldr r3, [pc, #124] ; (8001f18 <MX_LTDC_Init+0x258>)
8001e9c: f04f 32ff mov.w r2, #4294967295
8001ea0: 601a str r2, [r3, #0]
DrawProp[1].BackColor = LCD_COLOR_BLACK;
8001ea2: 4b1d ldr r3, [pc, #116] ; (8001f18 <MX_LTDC_Init+0x258>)
8001ea4: f04f 427f mov.w r2, #4278190080 ; 0xff000000
8001ea8: 611a str r2, [r3, #16]
DrawProp[1].pFont = &Font17;
8001eaa: 4b1b ldr r3, [pc, #108] ; (8001f18 <MX_LTDC_Init+0x258>)
8001eac: 4a1b ldr r2, [pc, #108] ; (8001f1c <MX_LTDC_Init+0x25c>)
8001eae: 615a str r2, [r3, #20]
DrawProp[1].TextColor = LCD_COLOR_WHITE;
8001eb0: 4b19 ldr r3, [pc, #100] ; (8001f18 <MX_LTDC_Init+0x258>)
8001eb2: f04f 32ff mov.w r2, #4294967295
8001eb6: 60da str r2, [r3, #12]
CurrentFont = &Font17;
8001eb8: 4b19 ldr r3, [pc, #100] ; (8001f20 <MX_LTDC_Init+0x260>)
8001eba: 4a18 ldr r2, [pc, #96] ; (8001f1c <MX_LTDC_Init+0x25c>)
8001ebc: 601a str r2, [r3, #0]
BSP_LCD_DisplayOn();
8001ebe: f000 f835 bl 8001f2c <BSP_LCD_DisplayOn>
HAL_GPIO_WritePin(DISP_ON_GPIO_Port, DISP_ON_Pin, GPIO_PIN_SET); // BACKLIGHT IS OFF
8001ec2: 2201 movs r2, #1
8001ec4: f44f 7180 mov.w r1, #256 ; 0x100
8001ec8: 4816 ldr r0, [pc, #88] ; (8001f24 <MX_LTDC_Init+0x264>)
8001eca: f007 fbe3 bl 8009694 <HAL_GPIO_WritePin>
RefreshScreen = true;
8001ece: 4b16 ldr r3, [pc, #88] ; (8001f28 <MX_LTDC_Init+0x268>)
8001ed0: 2201 movs r2, #1
8001ed2: 701a strb r2, [r3, #0]
HAL_LTDC_ProgramLineEvent(&hLtdcHandler, 255);
8001ed4: 21ff movs r1, #255 ; 0xff
8001ed6: 480a ldr r0, [pc, #40] ; (8001f00 <MX_LTDC_Init+0x240>)
8001ed8: f007 fdd4 bl 8009a84 <HAL_LTDC_ProgramLineEvent>
while(RefreshScreen);
8001edc: bf00 nop
8001ede: 4b12 ldr r3, [pc, #72] ; (8001f28 <MX_LTDC_Init+0x268>)
8001ee0: 781b ldrb r3, [r3, #0]
8001ee2: b2db uxtb r3, r3
8001ee4: 2b00 cmp r3, #0
8001ee6: d1fa bne.n 8001ede <MX_LTDC_Init+0x21e>
BSP_LCD_SetLayerVisible(RenderingLayer, ENABLE);
8001ee8: 4b0a ldr r3, [pc, #40] ; (8001f14 <MX_LTDC_Init+0x254>)
8001eea: 681b ldr r3, [r3, #0]
8001eec: 2101 movs r1, #1
8001eee: 4618 mov r0, r3
8001ef0: f000 f922 bl 8002138 <BSP_LCD_SetLayerVisible>
}
8001ef4: bf00 nop
8001ef6: 3770 adds r7, #112 ; 0x70
8001ef8: 46bd mov sp, r7
8001efa: bd80 pop {r7, pc}
8001efc: 40023800 .word 0x40023800
8001f00: 2006b8c4 .word 0x2006b8c4
8001f04: 40016800 .word 0x40016800
8001f08: 20020148 .word 0x20020148
8001f0c: 20045948 .word 0x20045948
8001f10: 20020014 .word 0x20020014
8001f14: 2006b1b8 .word 0x2006b1b8
8001f18: 2006b1a0 .word 0x2006b1a0
8001f1c: 20020008 .word 0x20020008
8001f20: 2006b8c0 .word 0x2006b8c0
8001f24: 40020000 .word 0x40020000
8001f28: 2006b1bc .word 0x2006b1bc
08001f2c <BSP_LCD_DisplayOn>:
void BSP_LCD_DisplayOn(void)
{
8001f2c: b580 push {r7, lr}
8001f2e: af00 add r7, sp, #0
//__HAL_LTDC_ENABLE(&hLtdcHandler);
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET); // DISPLAY_ON
8001f30: 2201 movs r2, #1
8001f32: f44f 6180 mov.w r1, #1024 ; 0x400
8001f36: 4802 ldr r0, [pc, #8] ; (8001f40 <BSP_LCD_DisplayOn+0x14>)
8001f38: f007 fbac bl 8009694 <HAL_GPIO_WritePin>
}
8001f3c: bf00 nop
8001f3e: bd80 pop {r7, pc}
8001f40: 40021400 .word 0x40021400
08001f44 <BSP_LCD_DisplayOff>:
/**
* @brief Disables the display.
* @retval None
*/
void BSP_LCD_DisplayOff(void)
{
8001f44: b580 push {r7, lr}
8001f46: af00 add r7, sp, #0
//__HAL_LTDC_DISABLE(&hLtdcHandler);
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET); // DISPLAY_OFF
8001f48: 2200 movs r2, #0
8001f4a: f44f 6180 mov.w r1, #1024 ; 0x400
8001f4e: 4802 ldr r0, [pc, #8] ; (8001f58 <BSP_LCD_DisplayOff+0x14>)
8001f50: f007 fba0 bl 8009694 <HAL_GPIO_WritePin>
}
8001f54: bf00 nop
8001f56: bd80 pop {r7, pc}
8001f58: 40021400 .word 0x40021400
08001f5c <HAL_LTDC_MspInit>:
void HAL_LTDC_MspInit(LTDC_HandleTypeDef* ltdcHandle)
{
8001f5c: b580 push {r7, lr}
8001f5e: b088 sub sp, #32
8001f60: af00 add r7, sp, #0
8001f62: 6078 str r0, [r7, #4]
GPIO_InitTypeDef GPIO_InitStruct;
if(ltdcHandle->Instance == LTDC)
8001f64: 687b ldr r3, [r7, #4]
8001f66: 681b ldr r3, [r3, #0]
8001f68: 4a4f ldr r2, [pc, #316] ; (80020a8 <HAL_LTDC_MspInit+0x14c>)
8001f6a: 4293 cmp r3, r2
8001f6c: f040 8097 bne.w 800209e <HAL_LTDC_MspInit+0x142>
{
__HAL_RCC_LTDC_CLK_ENABLE();
8001f70: 4a4e ldr r2, [pc, #312] ; (80020ac <HAL_LTDC_MspInit+0x150>)
8001f72: 4b4e ldr r3, [pc, #312] ; (80020ac <HAL_LTDC_MspInit+0x150>)
8001f74: 6c5b ldr r3, [r3, #68] ; 0x44
8001f76: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000
8001f7a: 6453 str r3, [r2, #68] ; 0x44
8001f7c: 4b4b ldr r3, [pc, #300] ; (80020ac <HAL_LTDC_MspInit+0x150>)
8001f7e: 6c5b ldr r3, [r3, #68] ; 0x44
8001f80: f003 6380 and.w r3, r3, #67108864 ; 0x4000000
8001f84: 60bb str r3, [r7, #8]
8001f86: 68bb ldr r3, [r7, #8]
PG7 ------> LTDC_CLK
PG10 ------> LTDC_G3
PG11 ------> LTDC_B3
PG12 ------> LTDC_B4 */
GPIO_InitStruct.Pin = GPIO_PIN_10;
8001f88: f44f 6380 mov.w r3, #1024 ; 0x400
8001f8c: 60fb str r3, [r7, #12]
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
8001f8e: 2301 movs r3, #1
8001f90: 613b str r3, [r7, #16]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8001f92: 2300 movs r3, #0
8001f94: 617b str r3, [r7, #20]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
8001f96: 2303 movs r3, #3
8001f98: 61bb str r3, [r7, #24]
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
8001f9a: f107 030c add.w r3, r7, #12
8001f9e: 4619 mov r1, r3
8001fa0: 4843 ldr r0, [pc, #268] ; (80020b0 <HAL_LTDC_MspInit+0x154>)
8001fa2: f007 f9b5 bl 8009310 <HAL_GPIO_Init>
GPIO_InitStruct.Pin = GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_11 |GPIO_PIN_12;
8001fa6: f641 0358 movw r3, #6232 ; 0x1858
8001faa: 60fb str r3, [r7, #12]
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
8001fac: 2302 movs r3, #2
8001fae: 613b str r3, [r7, #16]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8001fb0: 2300 movs r3, #0
8001fb2: 617b str r3, [r7, #20]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
8001fb4: 2303 movs r3, #3
8001fb6: 61bb str r3, [r7, #24]
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
8001fb8: 230e movs r3, #14
8001fba: 61fb str r3, [r7, #28]
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
8001fbc: f107 030c add.w r3, r7, #12
8001fc0: 4619 mov r1, r3
8001fc2: 483c ldr r0, [pc, #240] ; (80020b4 <HAL_LTDC_MspInit+0x158>)
8001fc4: f007 f9a4 bl 8009310 <HAL_GPIO_Init>
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
8001fc8: 2303 movs r3, #3
8001fca: 60fb str r3, [r7, #12]
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
8001fcc: 2302 movs r3, #2
8001fce: 613b str r3, [r7, #16]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8001fd0: 2300 movs r3, #0
8001fd2: 617b str r3, [r7, #20]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
8001fd4: 2303 movs r3, #3
8001fd6: 61bb str r3, [r7, #24]
GPIO_InitStruct.Alternate = GPIO_AF9_LTDC;
8001fd8: 2309 movs r3, #9
8001fda: 61fb str r3, [r7, #28]
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
8001fdc: f107 030c add.w r3, r7, #12
8001fe0: 4619 mov r1, r3
8001fe2: 4835 ldr r0, [pc, #212] ; (80020b8 <HAL_LTDC_MspInit+0x15c>)
8001fe4: f007 f994 bl 8009310 <HAL_GPIO_Init>
GPIO_InitStruct.Pin = GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_8 | GPIO_PIN_9;
8001fe8: f44f 6370 mov.w r3, #3840 ; 0xf00
8001fec: 60fb str r3, [r7, #12]
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
8001fee: 2302 movs r3, #2
8001ff0: 613b str r3, [r7, #16]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8001ff2: 2300 movs r3, #0
8001ff4: 617b str r3, [r7, #20]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
8001ff6: 2303 movs r3, #3
8001ff8: 61bb str r3, [r7, #24]
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
8001ffa: 230e movs r3, #14
8001ffc: 61fb str r3, [r7, #28]
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
8001ffe: f107 030c add.w r3, r7, #12
8002002: 4619 mov r1, r3
8002004: 482c ldr r0, [pc, #176] ; (80020b8 <HAL_LTDC_MspInit+0x15c>)
8002006: f007 f983 bl 8009310 <HAL_GPIO_Init>
GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_11;
800200a: f44f 630c mov.w r3, #2240 ; 0x8c0
800200e: 60fb str r3, [r7, #12]
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
8002010: 2302 movs r3, #2
8002012: 613b str r3, [r7, #16]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8002014: 2300 movs r3, #0
8002016: 617b str r3, [r7, #20]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
8002018: 2303 movs r3, #3
800201a: 61bb str r3, [r7, #24]
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
800201c: 230e movs r3, #14
800201e: 61fb str r3, [r7, #28]
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
8002020: f107 030c add.w r3, r7, #12
8002024: 4619 mov r1, r3
8002026: 4825 ldr r0, [pc, #148] ; (80020bc <HAL_LTDC_MspInit+0x160>)
8002028: f007 f972 bl 8009310 <HAL_GPIO_Init>
GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;
800202c: 23c0 movs r3, #192 ; 0xc0
800202e: 60fb str r3, [r7, #12]
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
8002030: 2302 movs r3, #2
8002032: 613b str r3, [r7, #16]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8002034: 2300 movs r3, #0
8002036: 617b str r3, [r7, #20]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
8002038: 2303 movs r3, #3
800203a: 61bb str r3, [r7, #24]
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
800203c: 230e movs r3, #14
800203e: 61fb str r3, [r7, #28]
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
8002040: f107 030c add.w r3, r7, #12
8002044: 4619 mov r1, r3
8002046: 481e ldr r0, [pc, #120] ; (80020c0 <HAL_LTDC_MspInit+0x164>)
8002048: f007 f962 bl 8009310 <HAL_GPIO_Init>
GPIO_InitStruct.Pin = GPIO_PIN_3;
800204c: 2308 movs r3, #8
800204e: 60fb str r3, [r7, #12]
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
8002050: 2302 movs r3, #2
8002052: 613b str r3, [r7, #16]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8002054: 2300 movs r3, #0
8002056: 617b str r3, [r7, #20]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
8002058: 2303 movs r3, #3
800205a: 61bb str r3, [r7, #24]
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
800205c: 230e movs r3, #14
800205e: 61fb str r3, [r7, #28]
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
8002060: f107 030c add.w r3, r7, #12
8002064: 4619 mov r1, r3
8002066: 4817 ldr r0, [pc, #92] ; (80020c4 <HAL_LTDC_MspInit+0x168>)
8002068: f007 f952 bl 8009310 <HAL_GPIO_Init>
GPIO_InitStruct.Pin = GPIO_PIN_10 | GPIO_PIN_12;
800206c: f44f 53a0 mov.w r3, #5120 ; 0x1400
8002070: 60fb str r3, [r7, #12]
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
8002072: 2302 movs r3, #2
8002074: 613b str r3, [r7, #16]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8002076: 2300 movs r3, #0
8002078: 617b str r3, [r7, #20]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
800207a: 2303 movs r3, #3
800207c: 61bb str r3, [r7, #24]
GPIO_InitStruct.Alternate = GPIO_AF9_LTDC;
800207e: 2309 movs r3, #9
8002080: 61fb str r3, [r7, #28]
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
8002082: f107 030c add.w r3, r7, #12
8002086: 4619 mov r1, r3
8002088: 480c ldr r0, [pc, #48] ; (80020bc <HAL_LTDC_MspInit+0x160>)
800208a: f007 f941 bl 8009310 <HAL_GPIO_Init>
HAL_NVIC_SetPriority(LTDC_IRQn, 6, 0);
800208e: 2200 movs r2, #0
8002090: 2106 movs r1, #6
8002092: 2058 movs r0, #88 ; 0x58
8002094: f006 fc35 bl 8008902 <HAL_NVIC_SetPriority>
HAL_NVIC_EnableIRQ(LTDC_IRQn);
8002098: 2058 movs r0, #88 ; 0x58
800209a: f006 fc4e bl 800893a <HAL_NVIC_EnableIRQ>
}
}
800209e: bf00 nop
80020a0: 3720 adds r7, #32
80020a2: 46bd mov sp, r7
80020a4: bd80 pop {r7, pc}
80020a6: bf00 nop
80020a8: 40016800 .word 0x40016800
80020ac: 40023800 .word 0x40023800
80020b0: 40021400 .word 0x40021400
80020b4: 40020000 .word 0x40020000
80020b8: 40020400 .word 0x40020400
80020bc: 40021800 .word 0x40021800
80020c0: 40020800 .word 0x40020800
80020c4: 40020c00 .word 0x40020c00
080020c8 <BSP_LCD_GetXSize>:
HAL_NVIC_DisableIRQ(LTDC_IRQn);
}
}
uint32_t BSP_LCD_GetXSize(void)
{
80020c8: b480 push {r7}
80020ca: af00 add r7, sp, #0
return hLtdcHandler.LayerCfg[ActiveLayer].ImageWidth;
80020cc: 4b06 ldr r3, [pc, #24] ; (80020e8 <BSP_LCD_GetXSize+0x20>)
80020ce: 681b ldr r3, [r3, #0]
80020d0: 4a06 ldr r2, [pc, #24] ; (80020ec <BSP_LCD_GetXSize+0x24>)
80020d2: 2134 movs r1, #52 ; 0x34
80020d4: fb01 f303 mul.w r3, r1, r3
80020d8: 4413 add r3, r2
80020da: 3360 adds r3, #96 ; 0x60
80020dc: 681b ldr r3, [r3, #0]
}
80020de: 4618 mov r0, r3
80020e0: 46bd mov sp, r7
80020e2: f85d 7b04 ldr.w r7, [sp], #4
80020e6: 4770 bx lr
80020e8: 20020014 .word 0x20020014
80020ec: 2006b8c4 .word 0x2006b8c4
080020f0 <BSP_LCD_GetYSize>:
/**
* @brief Gets the LCD Y size.
* @retval Used LCD Y size
*/
uint32_t BSP_LCD_GetYSize(void)
{
80020f0: b480 push {r7}
80020f2: af00 add r7, sp, #0
return hLtdcHandler.LayerCfg[ActiveLayer].ImageHeight;
80020f4: 4b06 ldr r3, [pc, #24] ; (8002110 <BSP_LCD_GetYSize+0x20>)
80020f6: 681b ldr r3, [r3, #0]
80020f8: 4a06 ldr r2, [pc, #24] ; (8002114 <BSP_LCD_GetYSize+0x24>)
80020fa: 2134 movs r1, #52 ; 0x34
80020fc: fb01 f303 mul.w r3, r1, r3
8002100: 4413 add r3, r2
8002102: 3364 adds r3, #100 ; 0x64
8002104: 681b ldr r3, [r3, #0]
}
8002106: 4618 mov r0, r3
8002108: 46bd mov sp, r7
800210a: f85d 7b04 ldr.w r7, [sp], #4
800210e: 4770 bx lr
8002110: 20020014 .word 0x20020014
8002114: 2006b8c4 .word 0x2006b8c4
08002118 <BSP_LCD_SelectLayer>:
{
hLtdcHandler.LayerCfg[ActiveLayer].ImageHeight = imageHeightPixels;
}
void BSP_LCD_SelectLayer(uint32_t LayerIndex)
{
8002118: b480 push {r7}
800211a: b083 sub sp, #12
800211c: af00 add r7, sp, #0
800211e: 6078 str r0, [r7, #4]
ActiveLayer = LayerIndex;
8002120: 4a04 ldr r2, [pc, #16] ; (8002134 <BSP_LCD_SelectLayer+0x1c>)
8002122: 687b ldr r3, [r7, #4]
8002124: 6013 str r3, [r2, #0]
}
8002126: bf00 nop
8002128: 370c adds r7, #12
800212a: 46bd mov sp, r7
800212c: f85d 7b04 ldr.w r7, [sp], #4
8002130: 4770 bx lr
8002132: bf00 nop
8002134: 20020014 .word 0x20020014
08002138 <BSP_LCD_SetLayerVisible>:
* @arg ENABLE
* @arg DISABLE
* @retval None
*/
void BSP_LCD_SetLayerVisible(uint32_t LayerIndex, FunctionalState State)
{
8002138: b480 push {r7}
800213a: b083 sub sp, #12
800213c: af00 add r7, sp, #0
800213e: 6078 str r0, [r7, #4]
8002140: 460b mov r3, r1
8002142: 70fb strb r3, [r7, #3]
if(State == ENABLE)
8002144: 78fb ldrb r3, [r7, #3]
8002146: 2b01 cmp r3, #1
8002148: d113 bne.n 8002172 <BSP_LCD_SetLayerVisible+0x3a>
__HAL_LTDC_LAYER_ENABLE(&hLtdcHandler, LayerIndex);
800214a: 4b1a ldr r3, [pc, #104] ; (80021b4 <BSP_LCD_SetLayerVisible+0x7c>)
800214c: 681b ldr r3, [r3, #0]
800214e: 461a mov r2, r3
8002150: 687b ldr r3, [r7, #4]
8002152: 01db lsls r3, r3, #7
8002154: 4413 add r3, r2
8002156: 3384 adds r3, #132 ; 0x84
8002158: 461a mov r2, r3
800215a: 4b16 ldr r3, [pc, #88] ; (80021b4 <BSP_LCD_SetLayerVisible+0x7c>)
800215c: 681b ldr r3, [r3, #0]
800215e: 4619 mov r1, r3
8002160: 687b ldr r3, [r7, #4]
8002162: 01db lsls r3, r3, #7
8002164: 440b add r3, r1
8002166: 3384 adds r3, #132 ; 0x84
8002168: 681b ldr r3, [r3, #0]
800216a: f043 0301 orr.w r3, r3, #1
800216e: 6013 str r3, [r2, #0]
8002170: e012 b.n 8002198 <BSP_LCD_SetLayerVisible+0x60>
else __HAL_LTDC_LAYER_DISABLE(&hLtdcHandler, LayerIndex);
8002172: 4b10 ldr r3, [pc, #64] ; (80021b4 <BSP_LCD_SetLayerVisible+0x7c>)
8002174: 681b ldr r3, [r3, #0]
8002176: 461a mov r2, r3
8002178: 687b ldr r3, [r7, #4]
800217a: 01db lsls r3, r3, #7
800217c: 4413 add r3, r2
800217e: 3384 adds r3, #132 ; 0x84
8002180: 461a mov r2, r3
8002182: 4b0c ldr r3, [pc, #48] ; (80021b4 <BSP_LCD_SetLayerVisible+0x7c>)
8002184: 681b ldr r3, [r3, #0]
8002186: 4619 mov r1, r3
8002188: 687b ldr r3, [r7, #4]
800218a: 01db lsls r3, r3, #7
800218c: 440b add r3, r1
800218e: 3384 adds r3, #132 ; 0x84
8002190: 681b ldr r3, [r3, #0]
8002192: f023 0301 bic.w r3, r3, #1
8002196: 6013 str r3, [r2, #0]
__HAL_LTDC_RELOAD_CONFIG(&hLtdcHandler);
8002198: 4b06 ldr r3, [pc, #24] ; (80021b4 <BSP_LCD_SetLayerVisible+0x7c>)
800219a: 681b ldr r3, [r3, #0]
800219c: 4a05 ldr r2, [pc, #20] ; (80021b4 <BSP_LCD_SetLayerVisible+0x7c>)
800219e: 6812 ldr r2, [r2, #0]
80021a0: 6a52 ldr r2, [r2, #36] ; 0x24
80021a2: f042 0201 orr.w r2, r2, #1
80021a6: 625a str r2, [r3, #36] ; 0x24
}
80021a8: bf00 nop
80021aa: 370c adds r7, #12
80021ac: 46bd mov sp, r7
80021ae: f85d 7b04 ldr.w r7, [sp], #4
80021b2: 4770 bx lr
80021b4: 2006b8c4 .word 0x2006b8c4
080021b8 <BSP_LCD_SetLayerVisible_NoReload>:
* @arg ENABLE
* @arg DISABLE
* @retval None
*/
void BSP_LCD_SetLayerVisible_NoReload(uint32_t LayerIndex, FunctionalState State)
{
80021b8: b480 push {r7}
80021ba: b083 sub sp, #12
80021bc: af00 add r7, sp, #0
80021be: 6078 str r0, [r7, #4]
80021c0: 460b mov r3, r1
80021c2: 70fb strb r3, [r7, #3]
if(State == ENABLE)
80021c4: 78fb ldrb r3, [r7, #3]
80021c6: 2b01 cmp r3, #1
80021c8: d113 bne.n 80021f2 <BSP_LCD_SetLayerVisible_NoReload+0x3a>
__HAL_LTDC_LAYER_ENABLE(&hLtdcHandler, LayerIndex);
80021ca: 4b16 ldr r3, [pc, #88] ; (8002224 <BSP_LCD_SetLayerVisible_NoReload+0x6c>)
80021cc: 681b ldr r3, [r3, #0]
80021ce: 461a mov r2, r3
80021d0: 687b ldr r3, [r7, #4]
80021d2: 01db lsls r3, r3, #7
80021d4: 4413 add r3, r2
80021d6: 3384 adds r3, #132 ; 0x84
80021d8: 461a mov r2, r3
80021da: 4b12 ldr r3, [pc, #72] ; (8002224 <BSP_LCD_SetLayerVisible_NoReload+0x6c>)
80021dc: 681b ldr r3, [r3, #0]
80021de: 4619 mov r1, r3
80021e0: 687b ldr r3, [r7, #4]
80021e2: 01db lsls r3, r3, #7
80021e4: 440b add r3, r1
80021e6: 3384 adds r3, #132 ; 0x84
80021e8: 681b ldr r3, [r3, #0]
80021ea: f043 0301 orr.w r3, r3, #1
80021ee: 6013 str r3, [r2, #0]
else __HAL_LTDC_LAYER_DISABLE(&hLtdcHandler, LayerIndex);
}
80021f0: e012 b.n 8002218 <BSP_LCD_SetLayerVisible_NoReload+0x60>
else __HAL_LTDC_LAYER_DISABLE(&hLtdcHandler, LayerIndex);
80021f2: 4b0c ldr r3, [pc, #48] ; (8002224 <BSP_LCD_SetLayerVisible_NoReload+0x6c>)
80021f4: 681b ldr r3, [r3, #0]
80021f6: 461a mov r2, r3
80021f8: 687b ldr r3, [r7, #4]
80021fa: 01db lsls r3, r3, #7
80021fc: 4413 add r3, r2
80021fe: 3384 adds r3, #132 ; 0x84
8002200: 461a mov r2, r3
8002202: 4b08 ldr r3, [pc, #32] ; (8002224 <BSP_LCD_SetLayerVisible_NoReload+0x6c>)
8002204: 681b ldr r3, [r3, #0]
8002206: 4619 mov r1, r3
8002208: 687b ldr r3, [r7, #4]
800220a: 01db lsls r3, r3, #7
800220c: 440b add r3, r1
800220e: 3384 adds r3, #132 ; 0x84
8002210: 681b ldr r3, [r3, #0]
8002212: f023 0301 bic.w r3, r3, #1
8002216: 6013 str r3, [r2, #0]
}
8002218: bf00 nop
800221a: 370c adds r7, #12
800221c: 46bd mov sp, r7
800221e: f85d 7b04 ldr.w r7, [sp], #4
8002222: 4770 bx lr
8002224: 2006b8c4 .word 0x2006b8c4
08002228 <LCD_SetColors>:
* @brief Sets the LCD text color.
* @param Color: Text color code ARGB(8-8-8-8)
* @retval None
*/
void LCD_SetColors(uint32_t ColorUp, uint32_t ColorDn)
{
8002228: b480 push {r7}
800222a: b083 sub sp, #12
800222c: af00 add r7, sp, #0
800222e: 6078 str r0, [r7, #4]
8002230: 6039 str r1, [r7, #0]
DrawProp[ActiveLayer].TextColor = ColorUp;
8002232: 4b0d ldr r3, [pc, #52] ; (8002268 <LCD_SetColors+0x40>)
8002234: 681a ldr r2, [r3, #0]
8002236: 490d ldr r1, [pc, #52] ; (800226c <LCD_SetColors+0x44>)
8002238: 4613 mov r3, r2
800223a: 005b lsls r3, r3, #1
800223c: 4413 add r3, r2
800223e: 009b lsls r3, r3, #2
8002240: 440b add r3, r1
8002242: 687a ldr r2, [r7, #4]
8002244: 601a str r2, [r3, #0]
DrawProp[ActiveLayer].BackColor = ColorDn;
8002246: 4b08 ldr r3, [pc, #32] ; (8002268 <LCD_SetColors+0x40>)
8002248: 681a ldr r2, [r3, #0]
800224a: 4908 ldr r1, [pc, #32] ; (800226c <LCD_SetColors+0x44>)
800224c: 4613 mov r3, r2
800224e: 005b lsls r3, r3, #1
8002250: 4413 add r3, r2
8002252: 009b lsls r3, r3, #2
8002254: 440b add r3, r1
8002256: 3304 adds r3, #4
8002258: 683a ldr r2, [r7, #0]
800225a: 601a str r2, [r3, #0]
}
800225c: bf00 nop
800225e: 370c adds r7, #12
8002260: 46bd mov sp, r7
8002262: f85d 7b04 ldr.w r7, [sp], #4
8002266: 4770 bx lr
8002268: 20020014 .word 0x20020014
800226c: 2006b1a0 .word 0x2006b1a0
08002270 <BSP_LCD_SetTextColor>:
void BSP_LCD_SetTextColor(uint32_t Color)
{
8002270: b480 push {r7}
8002272: b083 sub sp, #12
8002274: af00 add r7, sp, #0
8002276: 6078 str r0, [r7, #4]
DrawProp[ActiveLayer].TextColor = Color;
8002278: 4b07 ldr r3, [pc, #28] ; (8002298 <BSP_LCD_SetTextColor+0x28>)
800227a: 681a ldr r2, [r3, #0]
800227c: 4907 ldr r1, [pc, #28] ; (800229c <BSP_LCD_SetTextColor+0x2c>)
800227e: 4613 mov r3, r2
8002280: 005b lsls r3, r3, #1
8002282: 4413 add r3, r2
8002284: 009b lsls r3, r3, #2
8002286: 440b add r3, r1
8002288: 687a ldr r2, [r7, #4]
800228a: 601a str r2, [r3, #0]
}
800228c: bf00 nop
800228e: 370c adds r7, #12
8002290: 46bd mov sp, r7
8002292: f85d 7b04 ldr.w r7, [sp], #4
8002296: 4770 bx lr
8002298: 20020014 .word 0x20020014
800229c: 2006b1a0 .word 0x2006b1a0
080022a0 <BSP_LCD_SetFont>:
* @brief Sets the LCD text font.
* @param fonts: Layer font to be used
* @retval None
*/
void BSP_LCD_SetFont(sFONT *fonts)
{
80022a0: b480 push {r7}
80022a2: b083 sub sp, #12
80022a4: af00 add r7, sp, #0
80022a6: 6078 str r0, [r7, #4]
DrawProp[ActiveLayer].pFont = fonts;
80022a8: 4b09 ldr r3, [pc, #36] ; (80022d0 <BSP_LCD_SetFont+0x30>)
80022aa: 681a ldr r2, [r3, #0]
80022ac: 4909 ldr r1, [pc, #36] ; (80022d4 <BSP_LCD_SetFont+0x34>)
80022ae: 4613 mov r3, r2
80022b0: 005b lsls r3, r3, #1
80022b2: 4413 add r3, r2
80022b4: 009b lsls r3, r3, #2
80022b6: 440b add r3, r1
80022b8: 3308 adds r3, #8
80022ba: 687a ldr r2, [r7, #4]
80022bc: 601a str r2, [r3, #0]
CurrentFont = fonts;
80022be: 4a06 ldr r2, [pc, #24] ; (80022d8 <BSP_LCD_SetFont+0x38>)
80022c0: 687b ldr r3, [r7, #4]
80022c2: 6013 str r3, [r2, #0]
}
80022c4: bf00 nop
80022c6: 370c adds r7, #12
80022c8: 46bd mov sp, r7
80022ca: f85d 7b04 ldr.w r7, [sp], #4
80022ce: 4770 bx lr
80022d0: 20020014 .word 0x20020014
80022d4: 2006b1a0 .word 0x2006b1a0
80022d8: 2006b8c0 .word 0x2006b8c0
080022dc <BSP_LCD_Clear>:
* @brief Clears the hole LCD.
* @param Color: Color of the background
* @retval None
*/
void BSP_LCD_Clear(uint32_t Color)
{
80022dc: b5f0 push {r4, r5, r6, r7, lr}
80022de: b085 sub sp, #20
80022e0: af02 add r7, sp, #8
80022e2: 6078 str r0, [r7, #4]
LL_FillBuffer(ActiveLayer, (uint32_t *)(hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress), BSP_LCD_GetXSize(), BSP_LCD_GetYSize(), 0, Color);
80022e4: 4b0f ldr r3, [pc, #60] ; (8002324 <BSP_LCD_Clear+0x48>)
80022e6: 681c ldr r4, [r3, #0]
80022e8: 4b0e ldr r3, [pc, #56] ; (8002324 <BSP_LCD_Clear+0x48>)
80022ea: 681b ldr r3, [r3, #0]
80022ec: 4a0e ldr r2, [pc, #56] ; (8002328 <BSP_LCD_Clear+0x4c>)
80022ee: 2134 movs r1, #52 ; 0x34
80022f0: fb01 f303 mul.w r3, r1, r3
80022f4: 4413 add r3, r2
80022f6: 335c adds r3, #92 ; 0x5c
80022f8: 681b ldr r3, [r3, #0]
80022fa: 461d mov r5, r3
80022fc: f7ff fee4 bl 80020c8 <BSP_LCD_GetXSize>
8002300: 4606 mov r6, r0
8002302: f7ff fef5 bl 80020f0 <BSP_LCD_GetYSize>
8002306: 4602 mov r2, r0
8002308: 687b ldr r3, [r7, #4]
800230a: 9301 str r3, [sp, #4]
800230c: 2300 movs r3, #0
800230e: 9300 str r3, [sp, #0]
8002310: 4613 mov r3, r2
8002312: 4632 mov r2, r6
8002314: 4629 mov r1, r5
8002316: 4620 mov r0, r4
8002318: f000 fd1a bl 8002d50 <LL_FillBuffer>
}
800231c: bf00 nop
800231e: 370c adds r7, #12
8002320: 46bd mov sp, r7
8002322: bdf0 pop {r4, r5, r6, r7, pc}
8002324: 20020014 .word 0x20020014
8002328: 2006b8c4 .word 0x2006b8c4
0800232c <BSP_LCD_DisplayChar>:
* @param Ascii: Character ascii code
* This parameter must be a number between Min_Data = 0x20 and Max_Data = 0x7E
* @retval None
*/
void BSP_LCD_DisplayChar(uint16_t Xpos, uint16_t Ypos, uint8_t Ascii)
{
800232c: b590 push {r4, r7, lr}
800232e: b083 sub sp, #12
8002330: af00 add r7, sp, #0
8002332: 4603 mov r3, r0
8002334: 80fb strh r3, [r7, #6]
8002336: 460b mov r3, r1
8002338: 80bb strh r3, [r7, #4]
800233a: 4613 mov r3, r2
800233c: 70fb strb r3, [r7, #3]
DrawChar( Xpos, Ypos, &DrawProp[ActiveLayer].pFont->table[(Ascii - ' ') * DrawProp[ActiveLayer].pFont->Height * ((DrawProp[ActiveLayer].pFont->Width + 7) / 8)] );
800233e: 4b1b ldr r3, [pc, #108] ; (80023ac <BSP_LCD_DisplayChar+0x80>)
8002340: 681a ldr r2, [r3, #0]
8002342: 491b ldr r1, [pc, #108] ; (80023b0 <BSP_LCD_DisplayChar+0x84>)
8002344: 4613 mov r3, r2
8002346: 005b lsls r3, r3, #1
8002348: 4413 add r3, r2
800234a: 009b lsls r3, r3, #2
800234c: 440b add r3, r1
800234e: 3308 adds r3, #8
8002350: 681b ldr r3, [r3, #0]
8002352: 6819 ldr r1, [r3, #0]
8002354: 78fb ldrb r3, [r7, #3]
8002356: f1a3 0020 sub.w r0, r3, #32
800235a: 4b14 ldr r3, [pc, #80] ; (80023ac <BSP_LCD_DisplayChar+0x80>)
800235c: 681a ldr r2, [r3, #0]
800235e: 4c14 ldr r4, [pc, #80] ; (80023b0 <BSP_LCD_DisplayChar+0x84>)
8002360: 4613 mov r3, r2
8002362: 005b lsls r3, r3, #1
8002364: 4413 add r3, r2
8002366: 009b lsls r3, r3, #2
8002368: 4423 add r3, r4
800236a: 3308 adds r3, #8
800236c: 681b ldr r3, [r3, #0]
800236e: 88db ldrh r3, [r3, #6]
8002370: fb03 f000 mul.w r0, r3, r0
8002374: 4b0d ldr r3, [pc, #52] ; (80023ac <BSP_LCD_DisplayChar+0x80>)
8002376: 681a ldr r2, [r3, #0]
8002378: 4c0d ldr r4, [pc, #52] ; (80023b0 <BSP_LCD_DisplayChar+0x84>)
800237a: 4613 mov r3, r2
800237c: 005b lsls r3, r3, #1
800237e: 4413 add r3, r2
8002380: 009b lsls r3, r3, #2
8002382: 4423 add r3, r4
8002384: 3308 adds r3, #8
8002386: 681b ldr r3, [r3, #0]
8002388: 889b ldrh r3, [r3, #4]
800238a: 3307 adds r3, #7
800238c: 2b00 cmp r3, #0
800238e: da00 bge.n 8002392 <BSP_LCD_DisplayChar+0x66>
8002390: 3307 adds r3, #7
8002392: 10db asrs r3, r3, #3
8002394: fb03 f300 mul.w r3, r3, r0
8002398: 18ca adds r2, r1, r3
800239a: 88b9 ldrh r1, [r7, #4]
800239c: 88fb ldrh r3, [r7, #6]
800239e: 4618 mov r0, r3
80023a0: f000 fc1e bl 8002be0 <DrawChar>
}
80023a4: bf00 nop
80023a6: 370c adds r7, #12
80023a8: 46bd mov sp, r7
80023aa: bd90 pop {r4, r7, pc}
80023ac: 20020014 .word 0x20020014
80023b0: 2006b1a0 .word 0x2006b1a0
080023b4 <BSP_LCD_DisplayStringAt>:
* @arg RIGHT_MODE
* @arg LEFT_MODE
* @retval None
*/
void BSP_LCD_DisplayStringAt(uint16_t Xpos, uint16_t Ypos, char *Text, Text_AlignModeTypdef Mode)
{
80023b4: b5b0 push {r4, r5, r7, lr}
80023b6: b088 sub sp, #32
80023b8: af00 add r7, sp, #0
80023ba: 60ba str r2, [r7, #8]
80023bc: 461a mov r2, r3
80023be: 4603 mov r3, r0
80023c0: 81fb strh r3, [r7, #14]
80023c2: 460b mov r3, r1
80023c4: 81bb strh r3, [r7, #12]
80023c6: 4613 mov r3, r2
80023c8: 71fb strb r3, [r7, #7]
uint16_t ref_column = 1, i = 0, ll = 0;
80023ca: 2301 movs r3, #1
80023cc: 83fb strh r3, [r7, #30]
80023ce: 2300 movs r3, #0
80023d0: 83bb strh r3, [r7, #28]
80023d2: 2300 movs r3, #0
80023d4: 827b strh r3, [r7, #18]
uint32_t size = 0;
80023d6: 2300 movs r3, #0
80023d8: 61bb str r3, [r7, #24]
uint8_t *ptr;
ptr = (uint8_t *) Text;
80023da: 68bb ldr r3, [r7, #8]
80023dc: 617b str r3, [r7, #20]
/* Get the text size */
while (*ptr++) size++ ;
80023de: e002 b.n 80023e6 <BSP_LCD_DisplayStringAt+0x32>
80023e0: 69bb ldr r3, [r7, #24]
80023e2: 3301 adds r3, #1
80023e4: 61bb str r3, [r7, #24]
80023e6: 697b ldr r3, [r7, #20]
80023e8: 1c5a adds r2, r3, #1
80023ea: 617a str r2, [r7, #20]
80023ec: 781b ldrb r3, [r3, #0]
80023ee: 2b00 cmp r3, #0
80023f0: d1f6 bne.n 80023e0 <BSP_LCD_DisplayStringAt+0x2c>
/* Characters number per line */
// xsize = (BSP_LCD_GetXSize() / DrawProp[ActiveLayer].pFont->Width);
switch (Mode)
80023f2: 79fb ldrb r3, [r7, #7]
80023f4: 2b02 cmp r3, #2
80023f6: d01d beq.n 8002434 <BSP_LCD_DisplayStringAt+0x80>
80023f8: 2b03 cmp r3, #3
80023fa: d018 beq.n 800242e <BSP_LCD_DisplayStringAt+0x7a>
80023fc: 2b01 cmp r3, #1
80023fe: d12e bne.n 800245e <BSP_LCD_DisplayStringAt+0xaa>
{
case CENTER_MODE:
{
ll = DrawProp[ActiveLayer].pFont->Width * size;
8002400: 4b44 ldr r3, [pc, #272] ; (8002514 <BSP_LCD_DisplayStringAt+0x160>)
8002402: 681a ldr r2, [r3, #0]
8002404: 4944 ldr r1, [pc, #272] ; (8002518 <BSP_LCD_DisplayStringAt+0x164>)
8002406: 4613 mov r3, r2
8002408: 005b lsls r3, r3, #1
800240a: 4413 add r3, r2
800240c: 009b lsls r3, r3, #2
800240e: 440b add r3, r1
8002410: 3308 adds r3, #8
8002412: 681b ldr r3, [r3, #0]
8002414: 889a ldrh r2, [r3, #4]
8002416: 69bb ldr r3, [r7, #24]
8002418: b29b uxth r3, r3
800241a: fb12 f303 smulbb r3, r2, r3
800241e: 827b strh r3, [r7, #18]
ref_column = Xpos - (ll >> 1);
8002420: 8a7b ldrh r3, [r7, #18]
8002422: 085b lsrs r3, r3, #1
8002424: b29b uxth r3, r3
8002426: 89fa ldrh r2, [r7, #14]
8002428: 1ad3 subs r3, r2, r3
800242a: 83fb strh r3, [r7, #30]
//if((ref_column + ll > 319) || (ref_column > 319))
// ref_column = Xpos + ((xsize - size)* DrawProp[ActiveLayer].pFont->Width) / 2;
break;
800242c: e01a b.n 8002464 <BSP_LCD_DisplayStringAt+0xb0>
}
case LEFT_MODE:
{
ref_column = Xpos;
800242e: 89fb ldrh r3, [r7, #14]
8002430: 83fb strh r3, [r7, #30]
break;
8002432: e017 b.n 8002464 <BSP_LCD_DisplayStringAt+0xb0>
}
case RIGHT_MODE:
{
ll = DrawProp[ActiveLayer].pFont->Width * size;
8002434: 4b37 ldr r3, [pc, #220] ; (8002514 <BSP_LCD_DisplayStringAt+0x160>)
8002436: 681a ldr r2, [r3, #0]
8002438: 4937 ldr r1, [pc, #220] ; (8002518 <BSP_LCD_DisplayStringAt+0x164>)
800243a: 4613 mov r3, r2
800243c: 005b lsls r3, r3, #1
800243e: 4413 add r3, r2
8002440: 009b lsls r3, r3, #2
8002442: 440b add r3, r1
8002444: 3308 adds r3, #8
8002446: 681b ldr r3, [r3, #0]
8002448: 889a ldrh r2, [r3, #4]
800244a: 69bb ldr r3, [r7, #24]
800244c: b29b uxth r3, r3
800244e: fb12 f303 smulbb r3, r2, r3
8002452: 827b strh r3, [r7, #18]
ref_column = Xpos - ll;
8002454: 89fa ldrh r2, [r7, #14]
8002456: 8a7b ldrh r3, [r7, #18]
8002458: 1ad3 subs r3, r2, r3
800245a: 83fb strh r3, [r7, #30]
// ref_column = - Xpos + ((xsize - size)*DrawProp[ActiveLayer].pFont->Width);
break;
800245c: e002 b.n 8002464 <BSP_LCD_DisplayStringAt+0xb0>
}
default:
{
ref_column = Xpos;
800245e: 89fb ldrh r3, [r7, #14]
8002460: 83fb strh r3, [r7, #30]
break;
8002462: bf00 nop
}
}
/* Check that the Start column is located in the screen */
if ((ref_column < 1) || (ref_column >= 0x8000))
8002464: 8bfb ldrh r3, [r7, #30]
8002466: 2b00 cmp r3, #0
8002468: d003 beq.n 8002472 <BSP_LCD_DisplayStringAt+0xbe>
800246a: f9b7 301e ldrsh.w r3, [r7, #30]
800246e: 2b00 cmp r3, #0
8002470: da1d bge.n 80024ae <BSP_LCD_DisplayStringAt+0xfa>
{
ref_column = 1;
8002472: 2301 movs r3, #1
8002474: 83fb strh r3, [r7, #30]
}
/* Send the string character by character on LCD */
while ((*Text != 0) & (((BSP_LCD_GetXSize() - (i*DrawProp[ActiveLayer].pFont->Width)) & 0xFFFF) >= DrawProp[ActiveLayer].pFont->Width))
8002476: e01a b.n 80024ae <BSP_LCD_DisplayStringAt+0xfa>
{
/* Display one character on LCD */
BSP_LCD_DisplayChar(ref_column, Ypos, *Text);
8002478: 68bb ldr r3, [r7, #8]
800247a: 781a ldrb r2, [r3, #0]
800247c: 89b9 ldrh r1, [r7, #12]
800247e: 8bfb ldrh r3, [r7, #30]
8002480: 4618 mov r0, r3
8002482: f7ff ff53 bl 800232c <BSP_LCD_DisplayChar>
/* Decrement the column position by 16 */
ref_column += DrawProp[ActiveLayer].pFont->Width;
8002486: 4b23 ldr r3, [pc, #140] ; (8002514 <BSP_LCD_DisplayStringAt+0x160>)
8002488: 681a ldr r2, [r3, #0]
800248a: 4923 ldr r1, [pc, #140] ; (8002518 <BSP_LCD_DisplayStringAt+0x164>)
800248c: 4613 mov r3, r2
800248e: 005b lsls r3, r3, #1
8002490: 4413 add r3, r2
8002492: 009b lsls r3, r3, #2
8002494: 440b add r3, r1
8002496: 3308 adds r3, #8
8002498: 681b ldr r3, [r3, #0]
800249a: 889a ldrh r2, [r3, #4]
800249c: 8bfb ldrh r3, [r7, #30]
800249e: 4413 add r3, r2
80024a0: 83fb strh r3, [r7, #30]
/* Point on the next character */
Text++;
80024a2: 68bb ldr r3, [r7, #8]
80024a4: 3301 adds r3, #1
80024a6: 60bb str r3, [r7, #8]
i++;
80024a8: 8bbb ldrh r3, [r7, #28]
80024aa: 3301 adds r3, #1
80024ac: 83bb strh r3, [r7, #28]
while ((*Text != 0) & (((BSP_LCD_GetXSize() - (i*DrawProp[ActiveLayer].pFont->Width)) & 0xFFFF) >= DrawProp[ActiveLayer].pFont->Width))
80024ae: 68bb ldr r3, [r7, #8]
80024b0: 781b ldrb r3, [r3, #0]
80024b2: 2b00 cmp r3, #0
80024b4: bf14 ite ne
80024b6: 2301 movne r3, #1
80024b8: 2300 moveq r3, #0
80024ba: b2dc uxtb r4, r3
80024bc: f7ff fe04 bl 80020c8 <BSP_LCD_GetXSize>
80024c0: 4605 mov r5, r0
80024c2: 8bb9 ldrh r1, [r7, #28]
80024c4: 4b13 ldr r3, [pc, #76] ; (8002514 <BSP_LCD_DisplayStringAt+0x160>)
80024c6: 681a ldr r2, [r3, #0]
80024c8: 4813 ldr r0, [pc, #76] ; (8002518 <BSP_LCD_DisplayStringAt+0x164>)
80024ca: 4613 mov r3, r2
80024cc: 005b lsls r3, r3, #1
80024ce: 4413 add r3, r2
80024d0: 009b lsls r3, r3, #2
80024d2: 4403 add r3, r0
80024d4: 3308 adds r3, #8
80024d6: 681b ldr r3, [r3, #0]
80024d8: 889b ldrh r3, [r3, #4]
80024da: fb03 f301 mul.w r3, r3, r1
80024de: 1aeb subs r3, r5, r3
80024e0: b299 uxth r1, r3
80024e2: 4b0c ldr r3, [pc, #48] ; (8002514 <BSP_LCD_DisplayStringAt+0x160>)
80024e4: 681a ldr r2, [r3, #0]
80024e6: 480c ldr r0, [pc, #48] ; (8002518 <BSP_LCD_DisplayStringAt+0x164>)
80024e8: 4613 mov r3, r2
80024ea: 005b lsls r3, r3, #1
80024ec: 4413 add r3, r2
80024ee: 009b lsls r3, r3, #2
80024f0: 4403 add r3, r0
80024f2: 3308 adds r3, #8
80024f4: 681b ldr r3, [r3, #0]
80024f6: 889b ldrh r3, [r3, #4]
80024f8: 4299 cmp r1, r3
80024fa: bf2c ite cs
80024fc: 2301 movcs r3, #1
80024fe: 2300 movcc r3, #0
8002500: b2db uxtb r3, r3
8002502: 4023 ands r3, r4
8002504: b2db uxtb r3, r3
8002506: 2b00 cmp r3, #0
8002508: d1b6 bne.n 8002478 <BSP_LCD_DisplayStringAt+0xc4>
}
}
800250a: bf00 nop
800250c: 3720 adds r7, #32
800250e: 46bd mov sp, r7
8002510: bdb0 pop {r4, r5, r7, pc}
8002512: bf00 nop
8002514: 20020014 .word 0x20020014
8002518: 2006b1a0 .word 0x2006b1a0
0800251c <BSP_LCD_DrawHLine>:
* @param Ypos: Y position
* @param Length: Line length
* @retval None
*/
void BSP_LCD_DrawHLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length)
{
800251c: b5b0 push {r4, r5, r7, lr}
800251e: b086 sub sp, #24
8002520: af02 add r7, sp, #8
8002522: 4603 mov r3, r0
8002524: 80fb strh r3, [r7, #6]
8002526: 460b mov r3, r1
8002528: 80bb strh r3, [r7, #4]
800252a: 4613 mov r3, r2
800252c: 807b strh r3, [r7, #2]
uint32_t Xaddress = 0;
800252e: 2300 movs r3, #0
8002530: 60fb str r3, [r7, #12]
/* Get the line address */
if(hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565)
8002532: 4b26 ldr r3, [pc, #152] ; (80025cc <BSP_LCD_DrawHLine+0xb0>)
8002534: 681b ldr r3, [r3, #0]
8002536: 4a26 ldr r2, [pc, #152] ; (80025d0 <BSP_LCD_DrawHLine+0xb4>)
8002538: 2134 movs r1, #52 ; 0x34
800253a: fb01 f303 mul.w r3, r1, r3
800253e: 4413 add r3, r2
8002540: 3348 adds r3, #72 ; 0x48
8002542: 681b ldr r3, [r3, #0]
8002544: 2b02 cmp r3, #2
8002546: d114 bne.n 8002572 <BSP_LCD_DrawHLine+0x56>
{ /* RGB565 format */
Xaddress = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 2*(BSP_LCD_GetXSize()*Ypos + Xpos);
8002548: 4b20 ldr r3, [pc, #128] ; (80025cc <BSP_LCD_DrawHLine+0xb0>)
800254a: 681b ldr r3, [r3, #0]
800254c: 4a20 ldr r2, [pc, #128] ; (80025d0 <BSP_LCD_DrawHLine+0xb4>)
800254e: 2134 movs r1, #52 ; 0x34
8002550: fb01 f303 mul.w r3, r1, r3
8002554: 4413 add r3, r2
8002556: 335c adds r3, #92 ; 0x5c
8002558: 681c ldr r4, [r3, #0]
800255a: f7ff fdb5 bl 80020c8 <BSP_LCD_GetXSize>
800255e: 4602 mov r2, r0
8002560: 88bb ldrh r3, [r7, #4]
8002562: fb03 f202 mul.w r2, r3, r2
8002566: 88fb ldrh r3, [r7, #6]
8002568: 4413 add r3, r2
800256a: 005b lsls r3, r3, #1
800256c: 4423 add r3, r4
800256e: 60fb str r3, [r7, #12]
8002570: e013 b.n 800259a <BSP_LCD_DrawHLine+0x7e>
}
else
{ /* ARGB8888 format */
Xaddress = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos);
8002572: 4b16 ldr r3, [pc, #88] ; (80025cc <BSP_LCD_DrawHLine+0xb0>)
8002574: 681b ldr r3, [r3, #0]
8002576: 4a16 ldr r2, [pc, #88] ; (80025d0 <BSP_LCD_DrawHLine+0xb4>)
8002578: 2134 movs r1, #52 ; 0x34
800257a: fb01 f303 mul.w r3, r1, r3
800257e: 4413 add r3, r2
8002580: 335c adds r3, #92 ; 0x5c
8002582: 681c ldr r4, [r3, #0]
8002584: f7ff fda0 bl 80020c8 <BSP_LCD_GetXSize>
8002588: 4602 mov r2, r0
800258a: 88bb ldrh r3, [r7, #4]
800258c: fb03 f202 mul.w r2, r3, r2
8002590: 88fb ldrh r3, [r7, #6]
8002592: 4413 add r3, r2
8002594: 009b lsls r3, r3, #2
8002596: 4423 add r3, r4
8002598: 60fb str r3, [r7, #12]
}
/* Write line */
LL_FillBuffer(ActiveLayer, (uint32_t *)Xaddress, Length, 1, 0, DrawProp[ActiveLayer].TextColor);
800259a: 4b0c ldr r3, [pc, #48] ; (80025cc <BSP_LCD_DrawHLine+0xb0>)
800259c: 6818 ldr r0, [r3, #0]
800259e: 68fc ldr r4, [r7, #12]
80025a0: 887d ldrh r5, [r7, #2]
80025a2: 4b0a ldr r3, [pc, #40] ; (80025cc <BSP_LCD_DrawHLine+0xb0>)
80025a4: 681a ldr r2, [r3, #0]
80025a6: 490b ldr r1, [pc, #44] ; (80025d4 <BSP_LCD_DrawHLine+0xb8>)
80025a8: 4613 mov r3, r2
80025aa: 005b lsls r3, r3, #1
80025ac: 4413 add r3, r2
80025ae: 009b lsls r3, r3, #2
80025b0: 440b add r3, r1
80025b2: 681b ldr r3, [r3, #0]
80025b4: 9301 str r3, [sp, #4]
80025b6: 2300 movs r3, #0
80025b8: 9300 str r3, [sp, #0]
80025ba: 2301 movs r3, #1
80025bc: 462a mov r2, r5
80025be: 4621 mov r1, r4
80025c0: f000 fbc6 bl 8002d50 <LL_FillBuffer>
}
80025c4: bf00 nop
80025c6: 3710 adds r7, #16
80025c8: 46bd mov sp, r7
80025ca: bdb0 pop {r4, r5, r7, pc}
80025cc: 20020014 .word 0x20020014
80025d0: 2006b8c4 .word 0x2006b8c4
80025d4: 2006b1a0 .word 0x2006b1a0
080025d8 <BSP_LCD_DrawVLine>:
* @param Ypos: Y position
* @param Length: Line length
* @retval None
*/
void BSP_LCD_DrawVLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length)
{
80025d8: b5f0 push {r4, r5, r6, r7, lr}
80025da: b087 sub sp, #28
80025dc: af02 add r7, sp, #8
80025de: 4603 mov r3, r0
80025e0: 80fb strh r3, [r7, #6]
80025e2: 460b mov r3, r1
80025e4: 80bb strh r3, [r7, #4]
80025e6: 4613 mov r3, r2
80025e8: 807b strh r3, [r7, #2]
uint32_t Xaddress = 0;
80025ea: 2300 movs r3, #0
80025ec: 60fb str r3, [r7, #12]
/* Get the line address */
if(hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565)
80025ee: 4b28 ldr r3, [pc, #160] ; (8002690 <BSP_LCD_DrawVLine+0xb8>)
80025f0: 681b ldr r3, [r3, #0]
80025f2: 4a28 ldr r2, [pc, #160] ; (8002694 <BSP_LCD_DrawVLine+0xbc>)
80025f4: 2134 movs r1, #52 ; 0x34
80025f6: fb01 f303 mul.w r3, r1, r3
80025fa: 4413 add r3, r2
80025fc: 3348 adds r3, #72 ; 0x48
80025fe: 681b ldr r3, [r3, #0]
8002600: 2b02 cmp r3, #2
8002602: d114 bne.n 800262e <BSP_LCD_DrawVLine+0x56>
{ /* RGB565 format */
Xaddress = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 2*(BSP_LCD_GetXSize()*Ypos + Xpos);
8002604: 4b22 ldr r3, [pc, #136] ; (8002690 <BSP_LCD_DrawVLine+0xb8>)
8002606: 681b ldr r3, [r3, #0]
8002608: 4a22 ldr r2, [pc, #136] ; (8002694 <BSP_LCD_DrawVLine+0xbc>)
800260a: 2134 movs r1, #52 ; 0x34
800260c: fb01 f303 mul.w r3, r1, r3
8002610: 4413 add r3, r2
8002612: 335c adds r3, #92 ; 0x5c
8002614: 681c ldr r4, [r3, #0]
8002616: f7ff fd57 bl 80020c8 <BSP_LCD_GetXSize>
800261a: 4602 mov r2, r0
800261c: 88bb ldrh r3, [r7, #4]
800261e: fb03 f202 mul.w r2, r3, r2
8002622: 88fb ldrh r3, [r7, #6]
8002624: 4413 add r3, r2
8002626: 005b lsls r3, r3, #1
8002628: 4423 add r3, r4
800262a: 60fb str r3, [r7, #12]
800262c: e013 b.n 8002656 <BSP_LCD_DrawVLine+0x7e>
}
else
{ /* ARGB8888 format */
Xaddress = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos);
800262e: 4b18 ldr r3, [pc, #96] ; (8002690 <BSP_LCD_DrawVLine+0xb8>)
8002630: 681b ldr r3, [r3, #0]
8002632: 4a18 ldr r2, [pc, #96] ; (8002694 <BSP_LCD_DrawVLine+0xbc>)
8002634: 2134 movs r1, #52 ; 0x34
8002636: fb01 f303 mul.w r3, r1, r3
800263a: 4413 add r3, r2
800263c: 335c adds r3, #92 ; 0x5c
800263e: 681c ldr r4, [r3, #0]
8002640: f7ff fd42 bl 80020c8 <BSP_LCD_GetXSize>
8002644: 4602 mov r2, r0
8002646: 88bb ldrh r3, [r7, #4]
8002648: fb03 f202 mul.w r2, r3, r2
800264c: 88fb ldrh r3, [r7, #6]
800264e: 4413 add r3, r2
8002650: 009b lsls r3, r3, #2
8002652: 4423 add r3, r4
8002654: 60fb str r3, [r7, #12]
}
/* Write line */
LL_FillBuffer(ActiveLayer, (uint32_t *)Xaddress, 1, Length, (BSP_LCD_GetXSize() - 1), DrawProp[ActiveLayer].TextColor);
8002656: 4b0e ldr r3, [pc, #56] ; (8002690 <BSP_LCD_DrawVLine+0xb8>)
8002658: 681c ldr r4, [r3, #0]
800265a: 68fd ldr r5, [r7, #12]
800265c: 887e ldrh r6, [r7, #2]
800265e: f7ff fd33 bl 80020c8 <BSP_LCD_GetXSize>
8002662: 4603 mov r3, r0
8002664: 1e59 subs r1, r3, #1
8002666: 4b0a ldr r3, [pc, #40] ; (8002690 <BSP_LCD_DrawVLine+0xb8>)
8002668: 681a ldr r2, [r3, #0]
800266a: 480b ldr r0, [pc, #44] ; (8002698 <BSP_LCD_DrawVLine+0xc0>)
800266c: 4613 mov r3, r2
800266e: 005b lsls r3, r3, #1
8002670: 4413 add r3, r2
8002672: 009b lsls r3, r3, #2
8002674: 4403 add r3, r0
8002676: 681b ldr r3, [r3, #0]
8002678: 9301 str r3, [sp, #4]
800267a: 9100 str r1, [sp, #0]
800267c: 4633 mov r3, r6
800267e: 2201 movs r2, #1
8002680: 4629 mov r1, r5
8002682: 4620 mov r0, r4
8002684: f000 fb64 bl 8002d50 <LL_FillBuffer>
}
8002688: bf00 nop
800268a: 3714 adds r7, #20
800268c: 46bd mov sp, r7
800268e: bdf0 pop {r4, r5, r6, r7, pc}
8002690: 20020014 .word 0x20020014
8002694: 2006b8c4 .word 0x2006b8c4
8002698: 2006b1a0 .word 0x2006b1a0
0800269c <BSP_LCD_DrawRect>:
* @param Width: Rectangle width
* @param Height: Rectangle height
* @retval None
*/
void BSP_LCD_DrawRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
{
800269c: b590 push {r4, r7, lr}
800269e: b083 sub sp, #12
80026a0: af00 add r7, sp, #0
80026a2: 4604 mov r4, r0
80026a4: 4608 mov r0, r1
80026a6: 4611 mov r1, r2
80026a8: 461a mov r2, r3
80026aa: 4623 mov r3, r4
80026ac: 80fb strh r3, [r7, #6]
80026ae: 4603 mov r3, r0
80026b0: 80bb strh r3, [r7, #4]
80026b2: 460b mov r3, r1
80026b4: 807b strh r3, [r7, #2]
80026b6: 4613 mov r3, r2
80026b8: 803b strh r3, [r7, #0]
BSP_LCD_DrawHLine(Xpos, Ypos, Width);
80026ba: 887a ldrh r2, [r7, #2]
80026bc: 88b9 ldrh r1, [r7, #4]
80026be: 88fb ldrh r3, [r7, #6]
80026c0: 4618 mov r0, r3
80026c2: f7ff ff2b bl 800251c <BSP_LCD_DrawHLine>
BSP_LCD_DrawVLine(Xpos, Ypos, Height);
80026c6: 883a ldrh r2, [r7, #0]
80026c8: 88b9 ldrh r1, [r7, #4]
80026ca: 88fb ldrh r3, [r7, #6]
80026cc: 4618 mov r0, r3
80026ce: f7ff ff83 bl 80025d8 <BSP_LCD_DrawVLine>
BSP_LCD_DrawHLine(Xpos, (Ypos + Height), Width);
80026d2: 88ba ldrh r2, [r7, #4]
80026d4: 883b ldrh r3, [r7, #0]
80026d6: 4413 add r3, r2
80026d8: b299 uxth r1, r3
80026da: 887a ldrh r2, [r7, #2]
80026dc: 88fb ldrh r3, [r7, #6]
80026de: 4618 mov r0, r3
80026e0: f7ff ff1c bl 800251c <BSP_LCD_DrawHLine>
BSP_LCD_DrawVLine((Xpos + Width), Ypos, Height + 1);
80026e4: 88fa ldrh r2, [r7, #6]
80026e6: 887b ldrh r3, [r7, #2]
80026e8: 4413 add r3, r2
80026ea: b298 uxth r0, r3
80026ec: 883b ldrh r3, [r7, #0]
80026ee: 3301 adds r3, #1
80026f0: b29a uxth r2, r3
80026f2: 88bb ldrh r3, [r7, #4]
80026f4: 4619 mov r1, r3
80026f6: f7ff ff6f bl 80025d8 <BSP_LCD_DrawVLine>
}
80026fa: bf00 nop
80026fc: 370c adds r7, #12
80026fe: 46bd mov sp, r7
8002700: bd90 pop {r4, r7, pc}
...
08002704 <BSP_LCD_DrawCircle>:
* @param Ypos: Y position
* @param Radius: Circle radius
* @retval None
*/
void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
{
8002704: b590 push {r4, r7, lr}
8002706: b087 sub sp, #28
8002708: af00 add r7, sp, #0
800270a: 4603 mov r3, r0
800270c: 80fb strh r3, [r7, #6]
800270e: 460b mov r3, r1
8002710: 80bb strh r3, [r7, #4]
8002712: 4613 mov r3, r2
8002714: 807b strh r3, [r7, #2]
int32_t decision; /* Decision Variable */
uint32_t current_x; /* Current X Value */
uint32_t current_y; /* Current Y Value */
decision = 3 - (Radius << 1);
8002716: 887b ldrh r3, [r7, #2]
8002718: 005b lsls r3, r3, #1
800271a: f1c3 0303 rsb r3, r3, #3
800271e: 617b str r3, [r7, #20]
current_x = 0;
8002720: 2300 movs r3, #0
8002722: 613b str r3, [r7, #16]
current_y = Radius;
8002724: 887b ldrh r3, [r7, #2]
8002726: 60fb str r3, [r7, #12]
while (current_x <= current_y)
8002728: e0cf b.n 80028ca <BSP_LCD_DrawCircle+0x1c6>
{
BSP_LCD_DrawPixel((Xpos + current_x), (Ypos - current_y), DrawProp[ActiveLayer].TextColor);
800272a: 693b ldr r3, [r7, #16]
800272c: b29a uxth r2, r3
800272e: 88fb ldrh r3, [r7, #6]
8002730: 4413 add r3, r2
8002732: b298 uxth r0, r3
8002734: 68fb ldr r3, [r7, #12]
8002736: b29b uxth r3, r3
8002738: 88ba ldrh r2, [r7, #4]
800273a: 1ad3 subs r3, r2, r3
800273c: b29c uxth r4, r3
800273e: 4b67 ldr r3, [pc, #412] ; (80028dc <BSP_LCD_DrawCircle+0x1d8>)
8002740: 681a ldr r2, [r3, #0]
8002742: 4967 ldr r1, [pc, #412] ; (80028e0 <BSP_LCD_DrawCircle+0x1dc>)
8002744: 4613 mov r3, r2
8002746: 005b lsls r3, r3, #1
8002748: 4413 add r3, r2
800274a: 009b lsls r3, r3, #2
800274c: 440b add r3, r1
800274e: 681b ldr r3, [r3, #0]
8002750: 461a mov r2, r3
8002752: 4621 mov r1, r4
8002754: f000 f8c6 bl 80028e4 <BSP_LCD_DrawPixel>
BSP_LCD_DrawPixel((Xpos - current_x), (Ypos - current_y), DrawProp[ActiveLayer].TextColor);
8002758: 693b ldr r3, [r7, #16]
800275a: b29b uxth r3, r3
800275c: 88fa ldrh r2, [r7, #6]
800275e: 1ad3 subs r3, r2, r3
8002760: b298 uxth r0, r3
8002762: 68fb ldr r3, [r7, #12]
8002764: b29b uxth r3, r3
8002766: 88ba ldrh r2, [r7, #4]
8002768: 1ad3 subs r3, r2, r3
800276a: b29c uxth r4, r3
800276c: 4b5b ldr r3, [pc, #364] ; (80028dc <BSP_LCD_DrawCircle+0x1d8>)
800276e: 681a ldr r2, [r3, #0]
8002770: 495b ldr r1, [pc, #364] ; (80028e0 <BSP_LCD_DrawCircle+0x1dc>)
8002772: 4613 mov r3, r2
8002774: 005b lsls r3, r3, #1
8002776: 4413 add r3, r2
8002778: 009b lsls r3, r3, #2
800277a: 440b add r3, r1
800277c: 681b ldr r3, [r3, #0]
800277e: 461a mov r2, r3
8002780: 4621 mov r1, r4
8002782: f000 f8af bl 80028e4 <BSP_LCD_DrawPixel>
BSP_LCD_DrawPixel((Xpos + current_y), (Ypos - current_x), DrawProp[ActiveLayer].TextColor);
8002786: 68fb ldr r3, [r7, #12]
8002788: b29a uxth r2, r3
800278a: 88fb ldrh r3, [r7, #6]
800278c: 4413 add r3, r2
800278e: b298 uxth r0, r3
8002790: 693b ldr r3, [r7, #16]
8002792: b29b uxth r3, r3
8002794: 88ba ldrh r2, [r7, #4]
8002796: 1ad3 subs r3, r2, r3
8002798: b29c uxth r4, r3
800279a: 4b50 ldr r3, [pc, #320] ; (80028dc <BSP_LCD_DrawCircle+0x1d8>)
800279c: 681a ldr r2, [r3, #0]
800279e: 4950 ldr r1, [pc, #320] ; (80028e0 <BSP_LCD_DrawCircle+0x1dc>)
80027a0: 4613 mov r3, r2
80027a2: 005b lsls r3, r3, #1
80027a4: 4413 add r3, r2
80027a6: 009b lsls r3, r3, #2
80027a8: 440b add r3, r1
80027aa: 681b ldr r3, [r3, #0]
80027ac: 461a mov r2, r3
80027ae: 4621 mov r1, r4
80027b0: f000 f898 bl 80028e4 <BSP_LCD_DrawPixel>
BSP_LCD_DrawPixel((Xpos - current_y), (Ypos - current_x), DrawProp[ActiveLayer].TextColor);
80027b4: 68fb ldr r3, [r7, #12]
80027b6: b29b uxth r3, r3
80027b8: 88fa ldrh r2, [r7, #6]
80027ba: 1ad3 subs r3, r2, r3
80027bc: b298 uxth r0, r3
80027be: 693b ldr r3, [r7, #16]
80027c0: b29b uxth r3, r3
80027c2: 88ba ldrh r2, [r7, #4]
80027c4: 1ad3 subs r3, r2, r3
80027c6: b29c uxth r4, r3
80027c8: 4b44 ldr r3, [pc, #272] ; (80028dc <BSP_LCD_DrawCircle+0x1d8>)
80027ca: 681a ldr r2, [r3, #0]
80027cc: 4944 ldr r1, [pc, #272] ; (80028e0 <BSP_LCD_DrawCircle+0x1dc>)
80027ce: 4613 mov r3, r2
80027d0: 005b lsls r3, r3, #1
80027d2: 4413 add r3, r2
80027d4: 009b lsls r3, r3, #2
80027d6: 440b add r3, r1
80027d8: 681b ldr r3, [r3, #0]
80027da: 461a mov r2, r3
80027dc: 4621 mov r1, r4
80027de: f000 f881 bl 80028e4 <BSP_LCD_DrawPixel>
BSP_LCD_DrawPixel((Xpos + current_x), (Ypos + current_y), DrawProp[ActiveLayer].TextColor);
80027e2: 693b ldr r3, [r7, #16]
80027e4: b29a uxth r2, r3
80027e6: 88fb ldrh r3, [r7, #6]
80027e8: 4413 add r3, r2
80027ea: b298 uxth r0, r3
80027ec: 68fb ldr r3, [r7, #12]
80027ee: b29a uxth r2, r3
80027f0: 88bb ldrh r3, [r7, #4]
80027f2: 4413 add r3, r2
80027f4: b29c uxth r4, r3
80027f6: 4b39 ldr r3, [pc, #228] ; (80028dc <BSP_LCD_DrawCircle+0x1d8>)
80027f8: 681a ldr r2, [r3, #0]
80027fa: 4939 ldr r1, [pc, #228] ; (80028e0 <BSP_LCD_DrawCircle+0x1dc>)
80027fc: 4613 mov r3, r2
80027fe: 005b lsls r3, r3, #1
8002800: 4413 add r3, r2
8002802: 009b lsls r3, r3, #2
8002804: 440b add r3, r1
8002806: 681b ldr r3, [r3, #0]
8002808: 461a mov r2, r3
800280a: 4621 mov r1, r4
800280c: f000 f86a bl 80028e4 <BSP_LCD_DrawPixel>
BSP_LCD_DrawPixel((Xpos - current_x), (Ypos + current_y), DrawProp[ActiveLayer].TextColor);
8002810: 693b ldr r3, [r7, #16]
8002812: b29b uxth r3, r3
8002814: 88fa ldrh r2, [r7, #6]
8002816: 1ad3 subs r3, r2, r3
8002818: b298 uxth r0, r3
800281a: 68fb ldr r3, [r7, #12]
800281c: b29a uxth r2, r3
800281e: 88bb ldrh r3, [r7, #4]
8002820: 4413 add r3, r2
8002822: b29c uxth r4, r3
8002824: 4b2d ldr r3, [pc, #180] ; (80028dc <BSP_LCD_DrawCircle+0x1d8>)
8002826: 681a ldr r2, [r3, #0]
8002828: 492d ldr r1, [pc, #180] ; (80028e0 <BSP_LCD_DrawCircle+0x1dc>)
800282a: 4613 mov r3, r2
800282c: 005b lsls r3, r3, #1
800282e: 4413 add r3, r2
8002830: 009b lsls r3, r3, #2
8002832: 440b add r3, r1
8002834: 681b ldr r3, [r3, #0]
8002836: 461a mov r2, r3
8002838: 4621 mov r1, r4
800283a: f000 f853 bl 80028e4 <BSP_LCD_DrawPixel>
BSP_LCD_DrawPixel((Xpos + current_y), (Ypos + current_x), DrawProp[ActiveLayer].TextColor);
800283e: 68fb ldr r3, [r7, #12]
8002840: b29a uxth r2, r3
8002842: 88fb ldrh r3, [r7, #6]
8002844: 4413 add r3, r2
8002846: b298 uxth r0, r3
8002848: 693b ldr r3, [r7, #16]
800284a: b29a uxth r2, r3
800284c: 88bb ldrh r3, [r7, #4]
800284e: 4413 add r3, r2
8002850: b29c uxth r4, r3
8002852: 4b22 ldr r3, [pc, #136] ; (80028dc <BSP_LCD_DrawCircle+0x1d8>)
8002854: 681a ldr r2, [r3, #0]
8002856: 4922 ldr r1, [pc, #136] ; (80028e0 <BSP_LCD_DrawCircle+0x1dc>)
8002858: 4613 mov r3, r2
800285a: 005b lsls r3, r3, #1
800285c: 4413 add r3, r2
800285e: 009b lsls r3, r3, #2
8002860: 440b add r3, r1
8002862: 681b ldr r3, [r3, #0]
8002864: 461a mov r2, r3
8002866: 4621 mov r1, r4
8002868: f000 f83c bl 80028e4 <BSP_LCD_DrawPixel>
BSP_LCD_DrawPixel((Xpos - current_y), (Ypos + current_x), DrawProp[ActiveLayer].TextColor);
800286c: 68fb ldr r3, [r7, #12]
800286e: b29b uxth r3, r3
8002870: 88fa ldrh r2, [r7, #6]
8002872: 1ad3 subs r3, r2, r3
8002874: b298 uxth r0, r3
8002876: 693b ldr r3, [r7, #16]
8002878: b29a uxth r2, r3
800287a: 88bb ldrh r3, [r7, #4]
800287c: 4413 add r3, r2
800287e: b29c uxth r4, r3
8002880: 4b16 ldr r3, [pc, #88] ; (80028dc <BSP_LCD_DrawCircle+0x1d8>)
8002882: 681a ldr r2, [r3, #0]
8002884: 4916 ldr r1, [pc, #88] ; (80028e0 <BSP_LCD_DrawCircle+0x1dc>)
8002886: 4613 mov r3, r2
8002888: 005b lsls r3, r3, #1
800288a: 4413 add r3, r2
800288c: 009b lsls r3, r3, #2
800288e: 440b add r3, r1
8002890: 681b ldr r3, [r3, #0]
8002892: 461a mov r2, r3
8002894: 4621 mov r1, r4
8002896: f000 f825 bl 80028e4 <BSP_LCD_DrawPixel>
if (decision < 0)
800289a: 697b ldr r3, [r7, #20]
800289c: 2b00 cmp r3, #0
800289e: da06 bge.n 80028ae <BSP_LCD_DrawCircle+0x1aa>
{
decision += (current_x << 2) + 6;
80028a0: 693b ldr r3, [r7, #16]
80028a2: 009a lsls r2, r3, #2
80028a4: 697b ldr r3, [r7, #20]
80028a6: 4413 add r3, r2
80028a8: 3306 adds r3, #6
80028aa: 617b str r3, [r7, #20]
80028ac: e00a b.n 80028c4 <BSP_LCD_DrawCircle+0x1c0>
}
else
{
decision += ((current_x - current_y) << 2) + 10;
80028ae: 693a ldr r2, [r7, #16]
80028b0: 68fb ldr r3, [r7, #12]
80028b2: 1ad3 subs r3, r2, r3
80028b4: 009a lsls r2, r3, #2
80028b6: 697b ldr r3, [r7, #20]
80028b8: 4413 add r3, r2
80028ba: 330a adds r3, #10
80028bc: 617b str r3, [r7, #20]
current_y--;
80028be: 68fb ldr r3, [r7, #12]
80028c0: 3b01 subs r3, #1
80028c2: 60fb str r3, [r7, #12]
}
current_x++;
80028c4: 693b ldr r3, [r7, #16]
80028c6: 3301 adds r3, #1
80028c8: 613b str r3, [r7, #16]
while (current_x <= current_y)
80028ca: 693a ldr r2, [r7, #16]
80028cc: 68fb ldr r3, [r7, #12]
80028ce: 429a cmp r2, r3
80028d0: f67f af2b bls.w 800272a <BSP_LCD_DrawCircle+0x26>
}
}
80028d4: bf00 nop
80028d6: 371c adds r7, #28
80028d8: 46bd mov sp, r7
80028da: bd90 pop {r4, r7, pc}
80028dc: 20020014 .word 0x20020014
80028e0: 2006b1a0 .word 0x2006b1a0
080028e4 <BSP_LCD_DrawPixel>:
* @param Ypos: Y position
* @param RGB_Code: Pixel color in ARGB mode (8-8-8-8)
* @retval None
*/
void BSP_LCD_DrawPixel(uint16_t Xpos, uint16_t Ypos, uint32_t RGB_Code)
{
80028e4: b5b0 push {r4, r5, r7, lr}
80028e6: b082 sub sp, #8
80028e8: af00 add r7, sp, #0
80028ea: 4603 mov r3, r0
80028ec: 603a str r2, [r7, #0]
80028ee: 80fb strh r3, [r7, #6]
80028f0: 460b mov r3, r1
80028f2: 80bb strh r3, [r7, #4]
/* Write data value to all SDRAM memory */
if(hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565)
80028f4: 4b2a ldr r3, [pc, #168] ; (80029a0 <BSP_LCD_DrawPixel+0xbc>)
80028f6: 681b ldr r3, [r3, #0]
80028f8: 4a2a ldr r2, [pc, #168] ; (80029a4 <BSP_LCD_DrawPixel+0xc0>)
80028fa: 2134 movs r1, #52 ; 0x34
80028fc: fb01 f303 mul.w r3, r1, r3
8002900: 4413 add r3, r2
8002902: 3348 adds r3, #72 ; 0x48
8002904: 681b ldr r3, [r3, #0]
8002906: 2b02 cmp r3, #2
8002908: d12f bne.n 800296a <BSP_LCD_DrawPixel+0x86>
{ /* RGB565 format */
*(__IO uint16_t*) (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress + (2*(Ypos*BSP_LCD_GetXSize() + Xpos))) = COLOR24TO16(RGB_Code);
800290a: 4b25 ldr r3, [pc, #148] ; (80029a0 <BSP_LCD_DrawPixel+0xbc>)
800290c: 681b ldr r3, [r3, #0]
800290e: 4a25 ldr r2, [pc, #148] ; (80029a4 <BSP_LCD_DrawPixel+0xc0>)
8002910: 2134 movs r1, #52 ; 0x34
8002912: fb01 f303 mul.w r3, r1, r3
8002916: 4413 add r3, r2
8002918: 335c adds r3, #92 ; 0x5c
800291a: 681c ldr r4, [r3, #0]
800291c: 88bd ldrh r5, [r7, #4]
800291e: f7ff fbd3 bl 80020c8 <BSP_LCD_GetXSize>
8002922: 4603 mov r3, r0
8002924: fb03 f205 mul.w r2, r3, r5
8002928: 88fb ldrh r3, [r7, #6]
800292a: 4413 add r3, r2
800292c: 005b lsls r3, r3, #1
800292e: 4423 add r3, r4
8002930: 4619 mov r1, r3
8002932: 683b ldr r3, [r7, #0]
8002934: 0c1b lsrs r3, r3, #16
8002936: b29b uxth r3, r3
8002938: 021b lsls r3, r3, #8
800293a: b29a uxth r2, r3
800293c: 4b1a ldr r3, [pc, #104] ; (80029a8 <BSP_LCD_DrawPixel+0xc4>)
800293e: 4013 ands r3, r2
8002940: b29a uxth r2, r3
8002942: 683b ldr r3, [r7, #0]
8002944: 0a1b lsrs r3, r3, #8
8002946: b29b uxth r3, r3
8002948: 00db lsls r3, r3, #3
800294a: b29b uxth r3, r3
800294c: f403 63fc and.w r3, r3, #2016 ; 0x7e0
8002950: b29b uxth r3, r3
8002952: 4313 orrs r3, r2
8002954: b29a uxth r2, r3
8002956: 683b ldr r3, [r7, #0]
8002958: 08db lsrs r3, r3, #3
800295a: b29b uxth r3, r3
800295c: f003 031f and.w r3, r3, #31
8002960: b29b uxth r3, r3
8002962: 4313 orrs r3, r2
8002964: b29b uxth r3, r3
8002966: 800b strh r3, [r1, #0]
}
else
{ /* ARGB8888 format */
*(__IO uint32_t*) (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress + (4*(Ypos*BSP_LCD_GetXSize() + Xpos))) = RGB_Code;
}
}
8002968: e015 b.n 8002996 <BSP_LCD_DrawPixel+0xb2>
*(__IO uint32_t*) (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress + (4*(Ypos*BSP_LCD_GetXSize() + Xpos))) = RGB_Code;
800296a: 4b0d ldr r3, [pc, #52] ; (80029a0 <BSP_LCD_DrawPixel+0xbc>)
800296c: 681b ldr r3, [r3, #0]
800296e: 4a0d ldr r2, [pc, #52] ; (80029a4 <BSP_LCD_DrawPixel+0xc0>)
8002970: 2134 movs r1, #52 ; 0x34
8002972: fb01 f303 mul.w r3, r1, r3
8002976: 4413 add r3, r2
8002978: 335c adds r3, #92 ; 0x5c
800297a: 681c ldr r4, [r3, #0]
800297c: 88bd ldrh r5, [r7, #4]
800297e: f7ff fba3 bl 80020c8 <BSP_LCD_GetXSize>
8002982: 4603 mov r3, r0
8002984: fb03 f205 mul.w r2, r3, r5
8002988: 88fb ldrh r3, [r7, #6]
800298a: 4413 add r3, r2
800298c: 009b lsls r3, r3, #2
800298e: 4423 add r3, r4
8002990: 461a mov r2, r3
8002992: 683b ldr r3, [r7, #0]
8002994: 6013 str r3, [r2, #0]
}
8002996: bf00 nop
8002998: 3708 adds r7, #8
800299a: 46bd mov sp, r7
800299c: bdb0 pop {r4, r5, r7, pc}
800299e: bf00 nop
80029a0: 20020014 .word 0x20020014
80029a4: 2006b8c4 .word 0x2006b8c4
80029a8: fffff800 .word 0xfffff800
080029ac <BSP_LCD_FillRect>:
* @param Width: Rectangle width
* @param Height: Rectangle height
* @retval None
*/
void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
{
80029ac: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
80029b0: b086 sub sp, #24
80029b2: af02 add r7, sp, #8
80029b4: 4604 mov r4, r0
80029b6: 4608 mov r0, r1
80029b8: 4611 mov r1, r2
80029ba: 461a mov r2, r3
80029bc: 4623 mov r3, r4
80029be: 80fb strh r3, [r7, #6]
80029c0: 4603 mov r3, r0
80029c2: 80bb strh r3, [r7, #4]
80029c4: 460b mov r3, r1
80029c6: 807b strh r3, [r7, #2]
80029c8: 4613 mov r3, r2
80029ca: 803b strh r3, [r7, #0]
uint32_t x_address = 0;
80029cc: 2300 movs r3, #0
80029ce: 60fb str r3, [r7, #12]
/* Set the text color */
BSP_LCD_SetTextColor(DrawProp[ActiveLayer].TextColor);
80029d0: 4b30 ldr r3, [pc, #192] ; (8002a94 <BSP_LCD_FillRect+0xe8>)
80029d2: 681a ldr r2, [r3, #0]
80029d4: 4930 ldr r1, [pc, #192] ; (8002a98 <BSP_LCD_FillRect+0xec>)
80029d6: 4613 mov r3, r2
80029d8: 005b lsls r3, r3, #1
80029da: 4413 add r3, r2
80029dc: 009b lsls r3, r3, #2
80029de: 440b add r3, r1
80029e0: 681b ldr r3, [r3, #0]
80029e2: 4618 mov r0, r3
80029e4: f7ff fc44 bl 8002270 <BSP_LCD_SetTextColor>
/* Get the rectangle start address */
if(hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565)
80029e8: 4b2a ldr r3, [pc, #168] ; (8002a94 <BSP_LCD_FillRect+0xe8>)
80029ea: 681b ldr r3, [r3, #0]
80029ec: 4a2b ldr r2, [pc, #172] ; (8002a9c <BSP_LCD_FillRect+0xf0>)
80029ee: 2134 movs r1, #52 ; 0x34
80029f0: fb01 f303 mul.w r3, r1, r3
80029f4: 4413 add r3, r2
80029f6: 3348 adds r3, #72 ; 0x48
80029f8: 681b ldr r3, [r3, #0]
80029fa: 2b02 cmp r3, #2
80029fc: d114 bne.n 8002a28 <BSP_LCD_FillRect+0x7c>
{ /* RGB565 format */
x_address = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 2*(BSP_LCD_GetXSize()*Ypos + Xpos);
80029fe: 4b25 ldr r3, [pc, #148] ; (8002a94 <BSP_LCD_FillRect+0xe8>)
8002a00: 681b ldr r3, [r3, #0]
8002a02: 4a26 ldr r2, [pc, #152] ; (8002a9c <BSP_LCD_FillRect+0xf0>)
8002a04: 2134 movs r1, #52 ; 0x34
8002a06: fb01 f303 mul.w r3, r1, r3
8002a0a: 4413 add r3, r2
8002a0c: 335c adds r3, #92 ; 0x5c
8002a0e: 681c ldr r4, [r3, #0]
8002a10: f7ff fb5a bl 80020c8 <BSP_LCD_GetXSize>
8002a14: 4602 mov r2, r0
8002a16: 88bb ldrh r3, [r7, #4]
8002a18: fb03 f202 mul.w r2, r3, r2
8002a1c: 88fb ldrh r3, [r7, #6]
8002a1e: 4413 add r3, r2
8002a20: 005b lsls r3, r3, #1
8002a22: 4423 add r3, r4
8002a24: 60fb str r3, [r7, #12]
8002a26: e013 b.n 8002a50 <BSP_LCD_FillRect+0xa4>
}
else
{ /* ARGB8888 format */
x_address = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos);
8002a28: 4b1a ldr r3, [pc, #104] ; (8002a94 <BSP_LCD_FillRect+0xe8>)
8002a2a: 681b ldr r3, [r3, #0]
8002a2c: 4a1b ldr r2, [pc, #108] ; (8002a9c <BSP_LCD_FillRect+0xf0>)
8002a2e: 2134 movs r1, #52 ; 0x34
8002a30: fb01 f303 mul.w r3, r1, r3
8002a34: 4413 add r3, r2
8002a36: 335c adds r3, #92 ; 0x5c
8002a38: 681c ldr r4, [r3, #0]
8002a3a: f7ff fb45 bl 80020c8 <BSP_LCD_GetXSize>
8002a3e: 4602 mov r2, r0
8002a40: 88bb ldrh r3, [r7, #4]
8002a42: fb03 f202 mul.w r2, r3, r2
8002a46: 88fb ldrh r3, [r7, #6]
8002a48: 4413 add r3, r2
8002a4a: 009b lsls r3, r3, #2
8002a4c: 4423 add r3, r4
8002a4e: 60fb str r3, [r7, #12]
}
/* Fill the rectangle */
LL_FillBuffer(ActiveLayer, (uint32_t *)x_address, Width, Height, (BSP_LCD_GetXSize() - Width), DrawProp[ActiveLayer].TextColor);
8002a50: 4b10 ldr r3, [pc, #64] ; (8002a94 <BSP_LCD_FillRect+0xe8>)
8002a52: 681c ldr r4, [r3, #0]
8002a54: 68fd ldr r5, [r7, #12]
8002a56: 887e ldrh r6, [r7, #2]
8002a58: f8b7 8000 ldrh.w r8, [r7]
8002a5c: f7ff fb34 bl 80020c8 <BSP_LCD_GetXSize>
8002a60: 4602 mov r2, r0
8002a62: 887b ldrh r3, [r7, #2]
8002a64: 1ad1 subs r1, r2, r3
8002a66: 4b0b ldr r3, [pc, #44] ; (8002a94 <BSP_LCD_FillRect+0xe8>)
8002a68: 681a ldr r2, [r3, #0]
8002a6a: 480b ldr r0, [pc, #44] ; (8002a98 <BSP_LCD_FillRect+0xec>)
8002a6c: 4613 mov r3, r2
8002a6e: 005b lsls r3, r3, #1
8002a70: 4413 add r3, r2
8002a72: 009b lsls r3, r3, #2
8002a74: 4403 add r3, r0
8002a76: 681b ldr r3, [r3, #0]
8002a78: 9301 str r3, [sp, #4]
8002a7a: 9100 str r1, [sp, #0]
8002a7c: 4643 mov r3, r8
8002a7e: 4632 mov r2, r6
8002a80: 4629 mov r1, r5
8002a82: 4620 mov r0, r4
8002a84: f000 f964 bl 8002d50 <LL_FillBuffer>
}
8002a88: bf00 nop
8002a8a: 3710 adds r7, #16
8002a8c: 46bd mov sp, r7
8002a8e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
8002a92: bf00 nop
8002a94: 20020014 .word 0x20020014
8002a98: 2006b1a0 .word 0x2006b1a0
8002a9c: 2006b8c4 .word 0x2006b8c4
08002aa0 <BSP_LCD_FillCircle>:
* @param Ypos: Y position
* @param Radius: Circle radius
* @retval None
*/
void BSP_LCD_FillCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
{
8002aa0: b580 push {r7, lr}
8002aa2: b086 sub sp, #24
8002aa4: af00 add r7, sp, #0
8002aa6: 4603 mov r3, r0
8002aa8: 80fb strh r3, [r7, #6]
8002aaa: 460b mov r3, r1
8002aac: 80bb strh r3, [r7, #4]
8002aae: 4613 mov r3, r2
8002ab0: 807b strh r3, [r7, #2]
int32_t decision; /* Decision Variable */
uint32_t current_x; /* Current X Value */
uint32_t current_y; /* Current Y Value */
decision = 3 - (Radius << 1);
8002ab2: 887b ldrh r3, [r7, #2]
8002ab4: 005b lsls r3, r3, #1
8002ab6: f1c3 0303 rsb r3, r3, #3
8002aba: 617b str r3, [r7, #20]
current_x = 0;
8002abc: 2300 movs r3, #0
8002abe: 613b str r3, [r7, #16]
current_y = Radius;
8002ac0: 887b ldrh r3, [r7, #2]
8002ac2: 60fb str r3, [r7, #12]
BSP_LCD_SetTextColor(DrawProp[ActiveLayer].TextColor);
8002ac4: 4b44 ldr r3, [pc, #272] ; (8002bd8 <BSP_LCD_FillCircle+0x138>)
8002ac6: 681a ldr r2, [r3, #0]
8002ac8: 4944 ldr r1, [pc, #272] ; (8002bdc <BSP_LCD_FillCircle+0x13c>)
8002aca: 4613 mov r3, r2
8002acc: 005b lsls r3, r3, #1
8002ace: 4413 add r3, r2
8002ad0: 009b lsls r3, r3, #2
8002ad2: 440b add r3, r1
8002ad4: 681b ldr r3, [r3, #0]
8002ad6: 4618 mov r0, r3
8002ad8: f7ff fbca bl 8002270 <BSP_LCD_SetTextColor>
while (current_x <= current_y)
8002adc: e061 b.n 8002ba2 <BSP_LCD_FillCircle+0x102>
{
if(current_y > 0)
8002ade: 68fb ldr r3, [r7, #12]
8002ae0: 2b00 cmp r3, #0
8002ae2: d021 beq.n 8002b28 <BSP_LCD_FillCircle+0x88>
{
BSP_LCD_DrawHLine(Xpos - current_y, Ypos + current_x, 2*current_y);
8002ae4: 68fb ldr r3, [r7, #12]
8002ae6: b29b uxth r3, r3
8002ae8: 88fa ldrh r2, [r7, #6]
8002aea: 1ad3 subs r3, r2, r3
8002aec: b298 uxth r0, r3
8002aee: 693b ldr r3, [r7, #16]
8002af0: b29a uxth r2, r3
8002af2: 88bb ldrh r3, [r7, #4]
8002af4: 4413 add r3, r2
8002af6: b299 uxth r1, r3
8002af8: 68fb ldr r3, [r7, #12]
8002afa: b29b uxth r3, r3
8002afc: 005b lsls r3, r3, #1
8002afe: b29b uxth r3, r3
8002b00: 461a mov r2, r3
8002b02: f7ff fd0b bl 800251c <BSP_LCD_DrawHLine>
BSP_LCD_DrawHLine(Xpos - current_y, Ypos - current_x, 2*current_y);
8002b06: 68fb ldr r3, [r7, #12]
8002b08: b29b uxth r3, r3
8002b0a: 88fa ldrh r2, [r7, #6]
8002b0c: 1ad3 subs r3, r2, r3
8002b0e: b298 uxth r0, r3
8002b10: 693b ldr r3, [r7, #16]
8002b12: b29b uxth r3, r3
8002b14: 88ba ldrh r2, [r7, #4]
8002b16: 1ad3 subs r3, r2, r3
8002b18: b299 uxth r1, r3
8002b1a: 68fb ldr r3, [r7, #12]
8002b1c: b29b uxth r3, r3
8002b1e: 005b lsls r3, r3, #1
8002b20: b29b uxth r3, r3
8002b22: 461a mov r2, r3
8002b24: f7ff fcfa bl 800251c <BSP_LCD_DrawHLine>
}
if(current_x > 0)
8002b28: 693b ldr r3, [r7, #16]
8002b2a: 2b00 cmp r3, #0
8002b2c: d021 beq.n 8002b72 <BSP_LCD_FillCircle+0xd2>
{
BSP_LCD_DrawHLine(Xpos - current_x, Ypos - current_y, 2*current_x);
8002b2e: 693b ldr r3, [r7, #16]
8002b30: b29b uxth r3, r3
8002b32: 88fa ldrh r2, [r7, #6]
8002b34: 1ad3 subs r3, r2, r3
8002b36: b298 uxth r0, r3
8002b38: 68fb ldr r3, [r7, #12]
8002b3a: b29b uxth r3, r3
8002b3c: 88ba ldrh r2, [r7, #4]
8002b3e: 1ad3 subs r3, r2, r3
8002b40: b299 uxth r1, r3
8002b42: 693b ldr r3, [r7, #16]
8002b44: b29b uxth r3, r3
8002b46: 005b lsls r3, r3, #1
8002b48: b29b uxth r3, r3
8002b4a: 461a mov r2, r3
8002b4c: f7ff fce6 bl 800251c <BSP_LCD_DrawHLine>
BSP_LCD_DrawHLine(Xpos - current_x, Ypos + current_y, 2*current_x);
8002b50: 693b ldr r3, [r7, #16]
8002b52: b29b uxth r3, r3
8002b54: 88fa ldrh r2, [r7, #6]
8002b56: 1ad3 subs r3, r2, r3
8002b58: b298 uxth r0, r3
8002b5a: 68fb ldr r3, [r7, #12]
8002b5c: b29a uxth r2, r3
8002b5e: 88bb ldrh r3, [r7, #4]
8002b60: 4413 add r3, r2
8002b62: b299 uxth r1, r3
8002b64: 693b ldr r3, [r7, #16]
8002b66: b29b uxth r3, r3
8002b68: 005b lsls r3, r3, #1
8002b6a: b29b uxth r3, r3
8002b6c: 461a mov r2, r3
8002b6e: f7ff fcd5 bl 800251c <BSP_LCD_DrawHLine>
}
if (decision < 0)
8002b72: 697b ldr r3, [r7, #20]
8002b74: 2b00 cmp r3, #0
8002b76: da06 bge.n 8002b86 <BSP_LCD_FillCircle+0xe6>
{
decision += (current_x << 2) + 6;
8002b78: 693b ldr r3, [r7, #16]
8002b7a: 009a lsls r2, r3, #2
8002b7c: 697b ldr r3, [r7, #20]
8002b7e: 4413 add r3, r2
8002b80: 3306 adds r3, #6
8002b82: 617b str r3, [r7, #20]
8002b84: e00a b.n 8002b9c <BSP_LCD_FillCircle+0xfc>
}
else
{
decision += ((current_x - current_y) << 2) + 10;
8002b86: 693a ldr r2, [r7, #16]
8002b88: 68fb ldr r3, [r7, #12]
8002b8a: 1ad3 subs r3, r2, r3
8002b8c: 009a lsls r2, r3, #2
8002b8e: 697b ldr r3, [r7, #20]
8002b90: 4413 add r3, r2
8002b92: 330a adds r3, #10
8002b94: 617b str r3, [r7, #20]
current_y--;
8002b96: 68fb ldr r3, [r7, #12]
8002b98: 3b01 subs r3, #1
8002b9a: 60fb str r3, [r7, #12]
}
current_x++;
8002b9c: 693b ldr r3, [r7, #16]
8002b9e: 3301 adds r3, #1
8002ba0: 613b str r3, [r7, #16]
while (current_x <= current_y)
8002ba2: 693a ldr r2, [r7, #16]
8002ba4: 68fb ldr r3, [r7, #12]
8002ba6: 429a cmp r2, r3
8002ba8: d999 bls.n 8002ade <BSP_LCD_FillCircle+0x3e>
}
BSP_LCD_SetTextColor(DrawProp[ActiveLayer].TextColor);
8002baa: 4b0b ldr r3, [pc, #44] ; (8002bd8 <BSP_LCD_FillCircle+0x138>)
8002bac: 681a ldr r2, [r3, #0]
8002bae: 490b ldr r1, [pc, #44] ; (8002bdc <BSP_LCD_FillCircle+0x13c>)
8002bb0: 4613 mov r3, r2
8002bb2: 005b lsls r3, r3, #1
8002bb4: 4413 add r3, r2
8002bb6: 009b lsls r3, r3, #2
8002bb8: 440b add r3, r1
8002bba: 681b ldr r3, [r3, #0]
8002bbc: 4618 mov r0, r3
8002bbe: f7ff fb57 bl 8002270 <BSP_LCD_SetTextColor>
BSP_LCD_DrawCircle(Xpos, Ypos, Radius);
8002bc2: 887a ldrh r2, [r7, #2]
8002bc4: 88b9 ldrh r1, [r7, #4]
8002bc6: 88fb ldrh r3, [r7, #6]
8002bc8: 4618 mov r0, r3
8002bca: f7ff fd9b bl 8002704 <BSP_LCD_DrawCircle>
}
8002bce: bf00 nop
8002bd0: 3718 adds r7, #24
8002bd2: 46bd mov sp, r7
8002bd4: bd80 pop {r7, pc}
8002bd6: bf00 nop
8002bd8: 20020014 .word 0x20020014
8002bdc: 2006b1a0 .word 0x2006b1a0
08002be0 <DrawChar>:
* @param Ypos: Start column address
* @param c: Pointer to the character data
* @retval None
*/
static void DrawChar(uint16_t Xpos, uint16_t Ypos, const uint8_t *c)
{
8002be0: b580 push {r7, lr}
8002be2: b088 sub sp, #32
8002be4: af00 add r7, sp, #0
8002be6: 4603 mov r3, r0
8002be8: 603a str r2, [r7, #0]
8002bea: 80fb strh r3, [r7, #6]
8002bec: 460b mov r3, r1
8002bee: 80bb strh r3, [r7, #4]
uint32_t i = 0, j = 0;
8002bf0: 2300 movs r3, #0
8002bf2: 61fb str r3, [r7, #28]
8002bf4: 2300 movs r3, #0
8002bf6: 61bb str r3, [r7, #24]
uint8_t offset;
uint8_t *pchar;
uint32_t line;
//uint16_t b;
height = DrawProp[ActiveLayer].pFont->Height;
8002bf8: 4b53 ldr r3, [pc, #332] ; (8002d48 <DrawChar+0x168>)
8002bfa: 681a ldr r2, [r3, #0]
8002bfc: 4953 ldr r1, [pc, #332] ; (8002d4c <DrawChar+0x16c>)
8002bfe: 4613 mov r3, r2
8002c00: 005b lsls r3, r3, #1
8002c02: 4413 add r3, r2
8002c04: 009b lsls r3, r3, #2
8002c06: 440b add r3, r1
8002c08: 3308 adds r3, #8
8002c0a: 681b ldr r3, [r3, #0]
8002c0c: 88db ldrh r3, [r3, #6]
8002c0e: 827b strh r3, [r7, #18]
width = DrawProp[ActiveLayer].pFont->Width;
8002c10: 4b4d ldr r3, [pc, #308] ; (8002d48 <DrawChar+0x168>)
8002c12: 681a ldr r2, [r3, #0]
8002c14: 494d ldr r1, [pc, #308] ; (8002d4c <DrawChar+0x16c>)
8002c16: 4613 mov r3, r2
8002c18: 005b lsls r3, r3, #1
8002c1a: 4413 add r3, r2
8002c1c: 009b lsls r3, r3, #2
8002c1e: 440b add r3, r1
8002c20: 3308 adds r3, #8
8002c22: 681b ldr r3, [r3, #0]
8002c24: 889b ldrh r3, [r3, #4]
8002c26: 823b strh r3, [r7, #16]
offset = 8 *((width + 7)/8) - width ;
8002c28: 8a3b ldrh r3, [r7, #16]
8002c2a: 3307 adds r3, #7
8002c2c: 2b00 cmp r3, #0
8002c2e: da00 bge.n 8002c32 <DrawChar+0x52>
8002c30: 3307 adds r3, #7
8002c32: 10db asrs r3, r3, #3
8002c34: b2db uxtb r3, r3
8002c36: 00db lsls r3, r3, #3
8002c38: b2da uxtb r2, r3
8002c3a: 8a3b ldrh r3, [r7, #16]
8002c3c: b2db uxtb r3, r3
8002c3e: 1ad3 subs r3, r2, r3
8002c40: 73fb strb r3, [r7, #15]
for(i = 0; i < height; i++)
8002c42: 2300 movs r3, #0
8002c44: 61fb str r3, [r7, #28]
8002c46: e076 b.n 8002d36 <DrawChar+0x156>
{
pchar = ((uint8_t *)c + (width + 7)/8 * i);
8002c48: 8a3b ldrh r3, [r7, #16]
8002c4a: 3307 adds r3, #7
8002c4c: 2b00 cmp r3, #0
8002c4e: da00 bge.n 8002c52 <DrawChar+0x72>
8002c50: 3307 adds r3, #7
8002c52: 10db asrs r3, r3, #3
8002c54: 461a mov r2, r3
8002c56: 69fb ldr r3, [r7, #28]
8002c58: fb03 f302 mul.w r3, r3, r2
8002c5c: 683a ldr r2, [r7, #0]
8002c5e: 4413 add r3, r2
8002c60: 60bb str r3, [r7, #8]
switch(((width + 7)/8))
8002c62: 8a3b ldrh r3, [r7, #16]
8002c64: 3307 adds r3, #7
8002c66: 2b00 cmp r3, #0
8002c68: da00 bge.n 8002c6c <DrawChar+0x8c>
8002c6a: 3307 adds r3, #7
8002c6c: 10db asrs r3, r3, #3
8002c6e: 2b01 cmp r3, #1
8002c70: d002 beq.n 8002c78 <DrawChar+0x98>
8002c72: 2b02 cmp r3, #2
8002c74: d004 beq.n 8002c80 <DrawChar+0xa0>
8002c76: e00c b.n 8002c92 <DrawChar+0xb2>
{
case 1:
line = pchar[0];
8002c78: 68bb ldr r3, [r7, #8]
8002c7a: 781b ldrb r3, [r3, #0]
8002c7c: 617b str r3, [r7, #20]
break;
8002c7e: e016 b.n 8002cae <DrawChar+0xce>
case 2:
line = (pchar[0]<< 8) | pchar[1];
8002c80: 68bb ldr r3, [r7, #8]
8002c82: 781b ldrb r3, [r3, #0]
8002c84: 021b lsls r3, r3, #8
8002c86: 68ba ldr r2, [r7, #8]
8002c88: 3201 adds r2, #1
8002c8a: 7812 ldrb r2, [r2, #0]
8002c8c: 4313 orrs r3, r2
8002c8e: 617b str r3, [r7, #20]
break;
8002c90: e00d b.n 8002cae <DrawChar+0xce>
case 3:
default:
line = (pchar[0]<< 16) | (pchar[1]<< 8) | pchar[2];
8002c92: 68bb ldr r3, [r7, #8]
8002c94: 781b ldrb r3, [r3, #0]
8002c96: 041a lsls r2, r3, #16
8002c98: 68bb ldr r3, [r7, #8]
8002c9a: 3301 adds r3, #1
8002c9c: 781b ldrb r3, [r3, #0]
8002c9e: 021b lsls r3, r3, #8
8002ca0: 4313 orrs r3, r2
8002ca2: 68ba ldr r2, [r7, #8]
8002ca4: 3202 adds r2, #2
8002ca6: 7812 ldrb r2, [r2, #0]
8002ca8: 4313 orrs r3, r2
8002caa: 617b str r3, [r7, #20]
break;
8002cac: bf00 nop
}
for (j = 0; j < width; j++)
8002cae: 2300 movs r3, #0
8002cb0: 61bb str r3, [r7, #24]
8002cb2: e036 b.n 8002d22 <DrawChar+0x142>
{
if(line & (1 << (width- j + offset- 1)))
8002cb4: 8a3a ldrh r2, [r7, #16]
8002cb6: 69bb ldr r3, [r7, #24]
8002cb8: 1ad2 subs r2, r2, r3
8002cba: 7bfb ldrb r3, [r7, #15]
8002cbc: 4413 add r3, r2
8002cbe: 3b01 subs r3, #1
8002cc0: 2201 movs r2, #1
8002cc2: fa02 f303 lsl.w r3, r2, r3
8002cc6: 461a mov r2, r3
8002cc8: 697b ldr r3, [r7, #20]
8002cca: 4013 ands r3, r2
8002ccc: 2b00 cmp r3, #0
8002cce: d012 beq.n 8002cf6 <DrawChar+0x116>
{
BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp[ActiveLayer].TextColor);
8002cd0: 69bb ldr r3, [r7, #24]
8002cd2: b29a uxth r2, r3
8002cd4: 88fb ldrh r3, [r7, #6]
8002cd6: 4413 add r3, r2
8002cd8: b298 uxth r0, r3
8002cda: 4b1b ldr r3, [pc, #108] ; (8002d48 <DrawChar+0x168>)
8002cdc: 681a ldr r2, [r3, #0]
8002cde: 491b ldr r1, [pc, #108] ; (8002d4c <DrawChar+0x16c>)
8002ce0: 4613 mov r3, r2
8002ce2: 005b lsls r3, r3, #1
8002ce4: 4413 add r3, r2
8002ce6: 009b lsls r3, r3, #2
8002ce8: 440b add r3, r1
8002cea: 681a ldr r2, [r3, #0]
8002cec: 88bb ldrh r3, [r7, #4]
8002cee: 4619 mov r1, r3
8002cf0: f7ff fdf8 bl 80028e4 <BSP_LCD_DrawPixel>
8002cf4: e012 b.n 8002d1c <DrawChar+0x13c>
}
else
{
BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp[ActiveLayer].BackColor);
8002cf6: 69bb ldr r3, [r7, #24]
8002cf8: b29a uxth r2, r3
8002cfa: 88fb ldrh r3, [r7, #6]
8002cfc: 4413 add r3, r2
8002cfe: b298 uxth r0, r3
8002d00: 4b11 ldr r3, [pc, #68] ; (8002d48 <DrawChar+0x168>)
8002d02: 681a ldr r2, [r3, #0]
8002d04: 4911 ldr r1, [pc, #68] ; (8002d4c <DrawChar+0x16c>)
8002d06: 4613 mov r3, r2
8002d08: 005b lsls r3, r3, #1
8002d0a: 4413 add r3, r2
8002d0c: 009b lsls r3, r3, #2
8002d0e: 440b add r3, r1
8002d10: 3304 adds r3, #4
8002d12: 681a ldr r2, [r3, #0]
8002d14: 88bb ldrh r3, [r7, #4]
8002d16: 4619 mov r1, r3
8002d18: f7ff fde4 bl 80028e4 <BSP_LCD_DrawPixel>
for (j = 0; j < width; j++)
8002d1c: 69bb ldr r3, [r7, #24]
8002d1e: 3301 adds r3, #1
8002d20: 61bb str r3, [r7, #24]
8002d22: 8a3a ldrh r2, [r7, #16]
8002d24: 69bb ldr r3, [r7, #24]
8002d26: 429a cmp r2, r3
8002d28: d8c4 bhi.n 8002cb4 <DrawChar+0xd4>
}
}
Ypos++;
8002d2a: 88bb ldrh r3, [r7, #4]
8002d2c: 3301 adds r3, #1
8002d2e: 80bb strh r3, [r7, #4]
for(i = 0; i < height; i++)
8002d30: 69fb ldr r3, [r7, #28]
8002d32: 3301 adds r3, #1
8002d34: 61fb str r3, [r7, #28]
8002d36: 8a7a ldrh r2, [r7, #18]
8002d38: 69fb ldr r3, [r7, #28]
8002d3a: 429a cmp r2, r3
8002d3c: d884 bhi.n 8002c48 <DrawChar+0x68>
}
}
8002d3e: bf00 nop
8002d40: 3720 adds r7, #32
8002d42: 46bd mov sp, r7
8002d44: bd80 pop {r7, pc}
8002d46: bf00 nop
8002d48: 20020014 .word 0x20020014
8002d4c: 2006b1a0 .word 0x2006b1a0
08002d50 <LL_FillBuffer>:
* @param OffLine: Offset
* @param ColorIndex: Color index
* @retval None
*/
static void LL_FillBuffer(uint32_t LayerIndex, void *pDst, uint32_t xSize, uint32_t ySize, uint32_t OffLine, uint32_t ColorIndex)
{
8002d50: b580 push {r7, lr}
8002d52: b086 sub sp, #24
8002d54: af02 add r7, sp, #8
8002d56: 60f8 str r0, [r7, #12]
8002d58: 60b9 str r1, [r7, #8]
8002d5a: 607a str r2, [r7, #4]
8002d5c: 603b str r3, [r7, #0]
/* Register to memory mode with ARGB8888 as color Mode */
hDma2dHandler.Init.Mode = DMA2D_R2M;
8002d5e: 4b1e ldr r3, [pc, #120] ; (8002dd8 <LL_FillBuffer+0x88>)
8002d60: f44f 3240 mov.w r2, #196608 ; 0x30000
8002d64: 605a str r2, [r3, #4]
if(hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565)
8002d66: 4b1d ldr r3, [pc, #116] ; (8002ddc <LL_FillBuffer+0x8c>)
8002d68: 681b ldr r3, [r3, #0]
8002d6a: 4a1d ldr r2, [pc, #116] ; (8002de0 <LL_FillBuffer+0x90>)
8002d6c: 2134 movs r1, #52 ; 0x34
8002d6e: fb01 f303 mul.w r3, r1, r3
8002d72: 4413 add r3, r2
8002d74: 3348 adds r3, #72 ; 0x48
8002d76: 681b ldr r3, [r3, #0]
8002d78: 2b02 cmp r3, #2
8002d7a: d103 bne.n 8002d84 <LL_FillBuffer+0x34>
hDma2dHandler.Init.ColorMode = DMA2D_RGB565;
8002d7c: 4b16 ldr r3, [pc, #88] ; (8002dd8 <LL_FillBuffer+0x88>)
8002d7e: 2202 movs r2, #2
8002d80: 609a str r2, [r3, #8]
8002d82: e002 b.n 8002d8a <LL_FillBuffer+0x3a>
else hDma2dHandler.Init.ColorMode = DMA2D_ARGB8888;
8002d84: 4b14 ldr r3, [pc, #80] ; (8002dd8 <LL_FillBuffer+0x88>)
8002d86: 2200 movs r2, #0
8002d88: 609a str r2, [r3, #8]
hDma2dHandler.Init.OutputOffset = OffLine;
8002d8a: 4a13 ldr r2, [pc, #76] ; (8002dd8 <LL_FillBuffer+0x88>)
8002d8c: 69bb ldr r3, [r7, #24]
8002d8e: 60d3 str r3, [r2, #12]
hDma2dHandler.Instance = DMA2D;
8002d90: 4b11 ldr r3, [pc, #68] ; (8002dd8 <LL_FillBuffer+0x88>)
8002d92: 4a14 ldr r2, [pc, #80] ; (8002de4 <LL_FillBuffer+0x94>)
8002d94: 601a str r2, [r3, #0]
if(HAL_DMA2D_Init(&hDma2dHandler) == HAL_OK)
8002d96: 4810 ldr r0, [pc, #64] ; (8002dd8 <LL_FillBuffer+0x88>)
8002d98: f006 f814 bl 8008dc4 <HAL_DMA2D_Init>
8002d9c: 4603 mov r3, r0
8002d9e: 2b00 cmp r3, #0
8002da0: d115 bne.n 8002dce <LL_FillBuffer+0x7e>
{
if(HAL_DMA2D_ConfigLayer(&hDma2dHandler, LayerIndex) == HAL_OK)
8002da2: 68f9 ldr r1, [r7, #12]
8002da4: 480c ldr r0, [pc, #48] ; (8002dd8 <LL_FillBuffer+0x88>)
8002da6: f006 f97b bl 80090a0 <HAL_DMA2D_ConfigLayer>
8002daa: 4603 mov r3, r0
8002dac: 2b00 cmp r3, #0
8002dae: d10e bne.n 8002dce <LL_FillBuffer+0x7e>
{
if (HAL_DMA2D_Start(&hDma2dHandler, ColorIndex, (uint32_t)pDst, xSize, ySize) == HAL_OK)
8002db0: 68ba ldr r2, [r7, #8]
8002db2: 683b ldr r3, [r7, #0]
8002db4: 9300 str r3, [sp, #0]
8002db6: 687b ldr r3, [r7, #4]
8002db8: 69f9 ldr r1, [r7, #28]
8002dba: 4807 ldr r0, [pc, #28] ; (8002dd8 <LL_FillBuffer+0x88>)
8002dbc: f006 f85c bl 8008e78 <HAL_DMA2D_Start>
8002dc0: 4603 mov r3, r0
8002dc2: 2b00 cmp r3, #0
8002dc4: d103 bne.n 8002dce <LL_FillBuffer+0x7e>
{
HAL_DMA2D_PollForTransfer(&hDma2dHandler, 30);
8002dc6: 211e movs r1, #30
8002dc8: 4803 ldr r0, [pc, #12] ; (8002dd8 <LL_FillBuffer+0x88>)
8002dca: f006 f880 bl 8008ece <HAL_DMA2D_PollForTransfer>
}
}
}
}
8002dce: bf00 nop
8002dd0: 3710 adds r7, #16
8002dd2: 46bd mov sp, r7
8002dd4: bd80 pop {r7, pc}
8002dd6: bf00 nop
8002dd8: 2006b148 .word 0x2006b148
8002ddc: 20020014 .word 0x20020014
8002de0: 2006b8c4 .word 0x2006b8c4
8002de4: 4002b000 .word 0x4002b000
08002de8 <DrawImage>:
}
}
void DrawImage(const GUI_BITMAP * pBM, uint16_t x0, uint16_t y0)
{
8002de8: b580 push {r7, lr}
8002dea: b088 sub sp, #32
8002dec: af02 add r7, sp, #8
8002dee: 6078 str r0, [r7, #4]
8002df0: 460b mov r3, r1
8002df2: 807b strh r3, [r7, #2]
8002df4: 4613 mov r3, r2
8002df6: 803b strh r3, [r7, #0]
//HAL_StatusTypeDef hal_status = HAL_OK;
uint32_t Xaddress = 0;
8002df8: 2300 movs r3, #0
8002dfa: 617b str r3, [r7, #20]
uint8_t * p;
uint16_t xSize = pBM->XSize;
8002dfc: 687b ldr r3, [r7, #4]
8002dfe: 881b ldrh r3, [r3, #0]
8002e00: 827b strh r3, [r7, #18]
uint16_t ySize = pBM->YSize;
8002e02: 687b ldr r3, [r7, #4]
8002e04: 885b ldrh r3, [r3, #2]
8002e06: 823b strh r3, [r7, #16]
//uint16_t BytesPerLine = pBM->BytesPerLine;
p = (uint8_t *) pBM->pData;
8002e08: 687b ldr r3, [r7, #4]
8002e0a: 689b ldr r3, [r3, #8]
8002e0c: 60fb str r3, [r7, #12]
Xaddress = hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress + ((320 * y0 + x0) << 1);
8002e0e: 4b39 ldr r3, [pc, #228] ; (8002ef4 <DrawImage+0x10c>)
8002e10: 681b ldr r3, [r3, #0]
8002e12: 4a39 ldr r2, [pc, #228] ; (8002ef8 <DrawImage+0x110>)
8002e14: 2134 movs r1, #52 ; 0x34
8002e16: fb01 f303 mul.w r3, r1, r3
8002e1a: 4413 add r3, r2
8002e1c: 335c adds r3, #92 ; 0x5c
8002e1e: 6819 ldr r1, [r3, #0]
8002e20: 883a ldrh r2, [r7, #0]
8002e22: 4613 mov r3, r2
8002e24: 009b lsls r3, r3, #2
8002e26: 4413 add r3, r2
8002e28: 019b lsls r3, r3, #6
8002e2a: 461a mov r2, r3
8002e2c: 887b ldrh r3, [r7, #2]
8002e2e: 4413 add r3, r2
8002e30: 005b lsls r3, r3, #1
8002e32: 440b add r3, r1
8002e34: 617b str r3, [r7, #20]
hDma2dHandler.Init.Mode = DMA2D_M2M;
8002e36: 4b31 ldr r3, [pc, #196] ; (8002efc <DrawImage+0x114>)
8002e38: 2200 movs r2, #0
8002e3a: 605a str r2, [r3, #4]
hDma2dHandler.Init.ColorMode = DMA2D_RGB565;
8002e3c: 4b2f ldr r3, [pc, #188] ; (8002efc <DrawImage+0x114>)
8002e3e: 2202 movs r2, #2
8002e40: 609a str r2, [r3, #8]
hDma2dHandler.Init.OutputOffset = 320 - xSize;
8002e42: 8a7b ldrh r3, [r7, #18]
8002e44: f5c3 73a0 rsb r3, r3, #320 ; 0x140
8002e48: 461a mov r2, r3
8002e4a: 4b2c ldr r3, [pc, #176] ; (8002efc <DrawImage+0x114>)
8002e4c: 60da str r2, [r3, #12]
/* DMA2D Callbacks Configuration */
hDma2dHandler.XferCpltCallback = TransferComplete;
8002e4e: 4b2b ldr r3, [pc, #172] ; (8002efc <DrawImage+0x114>)
8002e50: 4a2b ldr r2, [pc, #172] ; (8002f00 <DrawImage+0x118>)
8002e52: 619a str r2, [r3, #24]
hDma2dHandler.XferErrorCallback = TransferError;
8002e54: 4b29 ldr r3, [pc, #164] ; (8002efc <DrawImage+0x114>)
8002e56: 4a2b ldr r2, [pc, #172] ; (8002f04 <DrawImage+0x11c>)
8002e58: 61da str r2, [r3, #28]
/* Foreground layer Configuration : layer 1 */
hDma2dHandler.LayerCfg[ActiveLayer].AlphaMode = DMA2D_NO_MODIF_ALPHA;
8002e5a: 4b26 ldr r3, [pc, #152] ; (8002ef4 <DrawImage+0x10c>)
8002e5c: 681a ldr r2, [r3, #0]
8002e5e: 4927 ldr r1, [pc, #156] ; (8002efc <DrawImage+0x114>)
8002e60: 4613 mov r3, r2
8002e62: 005b lsls r3, r3, #1
8002e64: 4413 add r3, r2
8002e66: 00db lsls r3, r3, #3
8002e68: 440b add r3, r1
8002e6a: 3328 adds r3, #40 ; 0x28
8002e6c: 2200 movs r2, #0
8002e6e: 601a str r2, [r3, #0]
hDma2dHandler.LayerCfg[ActiveLayer].InputAlpha = 255; /* Alpha fully opaque */
8002e70: 4b20 ldr r3, [pc, #128] ; (8002ef4 <DrawImage+0x10c>)
8002e72: 681a ldr r2, [r3, #0]
8002e74: 4921 ldr r1, [pc, #132] ; (8002efc <DrawImage+0x114>)
8002e76: 4613 mov r3, r2
8002e78: 005b lsls r3, r3, #1
8002e7a: 4413 add r3, r2
8002e7c: 00db lsls r3, r3, #3
8002e7e: 440b add r3, r1
8002e80: 332c adds r3, #44 ; 0x2c
8002e82: 22ff movs r2, #255 ; 0xff
8002e84: 601a str r2, [r3, #0]
hDma2dHandler.LayerCfg[ActiveLayer].InputColorMode = DMA2D_INPUT_RGB565; /* Layer 1 input format is ARGB8888 (32 bpp) */
8002e86: 4b1b ldr r3, [pc, #108] ; (8002ef4 <DrawImage+0x10c>)
8002e88: 681a ldr r2, [r3, #0]
8002e8a: 491c ldr r1, [pc, #112] ; (8002efc <DrawImage+0x114>)
8002e8c: 4613 mov r3, r2
8002e8e: 005b lsls r3, r3, #1
8002e90: 4413 add r3, r2
8002e92: 00db lsls r3, r3, #3
8002e94: 440b add r3, r1
8002e96: 3324 adds r3, #36 ; 0x24
8002e98: 2202 movs r2, #2
8002e9a: 601a str r2, [r3, #0]
hDma2dHandler.LayerCfg[ActiveLayer].InputOffset = 0; /* No offset in input */
8002e9c: 4b15 ldr r3, [pc, #84] ; (8002ef4 <DrawImage+0x10c>)
8002e9e: 681a ldr r2, [r3, #0]
8002ea0: 4916 ldr r1, [pc, #88] ; (8002efc <DrawImage+0x114>)
8002ea2: 4613 mov r3, r2
8002ea4: 005b lsls r3, r3, #1
8002ea6: 4413 add r3, r2
8002ea8: 00db lsls r3, r3, #3
8002eaa: 440b add r3, r1
8002eac: 3320 adds r3, #32
8002eae: 2200 movs r2, #0
8002eb0: 601a str r2, [r3, #0]
hDma2dHandler.Instance = DMA2D;
8002eb2: 4b12 ldr r3, [pc, #72] ; (8002efc <DrawImage+0x114>)
8002eb4: 4a14 ldr r2, [pc, #80] ; (8002f08 <DrawImage+0x120>)
8002eb6: 601a str r2, [r3, #0]
/* DMA2D Initialization */
HAL_DMA2D_Init(&hDma2dHandler);
8002eb8: 4810 ldr r0, [pc, #64] ; (8002efc <DrawImage+0x114>)
8002eba: f005 ff83 bl 8008dc4 <HAL_DMA2D_Init>
HAL_DMA2D_ConfigLayer(&hDma2dHandler, ActiveLayer);
8002ebe: 4b0d ldr r3, [pc, #52] ; (8002ef4 <DrawImage+0x10c>)
8002ec0: 681b ldr r3, [r3, #0]
8002ec2: 4619 mov r1, r3
8002ec4: 480d ldr r0, [pc, #52] ; (8002efc <DrawImage+0x114>)
8002ec6: f006 f8eb bl 80090a0 <HAL_DMA2D_ConfigLayer>
DMA2D_TransferOk = 0;
8002eca: 4b10 ldr r3, [pc, #64] ; (8002f0c <DrawImage+0x124>)
8002ecc: 2200 movs r2, #0
8002ece: 601a str r2, [r3, #0]
HAL_DMA2D_Start(&hDma2dHandler, (uint32_t) p, Xaddress, xSize, ySize);
8002ed0: 68f9 ldr r1, [r7, #12]
8002ed2: 8a7a ldrh r2, [r7, #18]
8002ed4: 8a3b ldrh r3, [r7, #16]
8002ed6: 9300 str r3, [sp, #0]
8002ed8: 4613 mov r3, r2
8002eda: 697a ldr r2, [r7, #20]
8002edc: 4807 ldr r0, [pc, #28] ; (8002efc <DrawImage+0x114>)
8002ede: f005 ffcb bl 8008e78 <HAL_DMA2D_Start>
HAL_DMA2D_PollForTransfer(&hDma2dHandler, 30);
8002ee2: 211e movs r1, #30
8002ee4: 4805 ldr r0, [pc, #20] ; (8002efc <DrawImage+0x114>)
8002ee6: f005 fff2 bl 8008ece <HAL_DMA2D_PollForTransfer>
//SCB_CleanInvalidateDCache();
}
8002eea: bf00 nop
8002eec: 3718 adds r7, #24
8002eee: 46bd mov sp, r7
8002ef0: bd80 pop {r7, pc}
8002ef2: bf00 nop
8002ef4: 20020014 .word 0x20020014
8002ef8: 2006b8c4 .word 0x2006b8c4
8002efc: 2006b148 .word 0x2006b148
8002f00: 08002f11 .word 0x08002f11
8002f04: 08002f31 .word 0x08002f31
8002f08: 4002b000 .word 0x4002b000
8002f0c: 20020018 .word 0x20020018
08002f10 <TransferComplete>:
static void TransferComplete(DMA2D_HandleTypeDef *hdma2d)
{
8002f10: b480 push {r7}
8002f12: b083 sub sp, #12
8002f14: af00 add r7, sp, #0
8002f16: 6078 str r0, [r7, #4]
DMA2D_TransferOk = 1;
8002f18: 4b04 ldr r3, [pc, #16] ; (8002f2c <TransferComplete+0x1c>)
8002f1a: 2201 movs r2, #1
8002f1c: 601a str r2, [r3, #0]
}
8002f1e: bf00 nop
8002f20: 370c adds r7, #12
8002f22: 46bd mov sp, r7
8002f24: f85d 7b04 ldr.w r7, [sp], #4
8002f28: 4770 bx lr
8002f2a: bf00 nop
8002f2c: 20020018 .word 0x20020018
08002f30 <TransferError>:
static void TransferError(DMA2D_HandleTypeDef *hdma2d)
{
8002f30: b480 push {r7}
8002f32: b083 sub sp, #12
8002f34: af00 add r7, sp, #0
8002f36: 6078 str r0, [r7, #4]
}
8002f38: bf00 nop
8002f3a: 370c adds r7, #12
8002f3c: 46bd mov sp, r7
8002f3e: f85d 7b04 ldr.w r7, [sp], #4
8002f42: 4770 bx lr
08002f44 <LCD_Refresh>:
void LCD_Refresh(void)
{
8002f44: b580 push {r7, lr}
8002f46: af00 add r7, sp, #0
ActiveLayer ^= 1;
8002f48: 4b0e ldr r3, [pc, #56] ; (8002f84 <LCD_Refresh+0x40>)
8002f4a: 681b ldr r3, [r3, #0]
8002f4c: f083 0301 eor.w r3, r3, #1
8002f50: 4a0c ldr r2, [pc, #48] ; (8002f84 <LCD_Refresh+0x40>)
8002f52: 6013 str r3, [r2, #0]
RenderingLayer ^= 1;
8002f54: 4b0c ldr r3, [pc, #48] ; (8002f88 <LCD_Refresh+0x44>)
8002f56: 681b ldr r3, [r3, #0]
8002f58: f083 0301 eor.w r3, r3, #1
8002f5c: 4a0a ldr r2, [pc, #40] ; (8002f88 <LCD_Refresh+0x44>)
8002f5e: 6013 str r3, [r2, #0]
BSP_LCD_SetLayerVisible_NoReload(ActiveLayer, DISABLE);
8002f60: 4b08 ldr r3, [pc, #32] ; (8002f84 <LCD_Refresh+0x40>)
8002f62: 681b ldr r3, [r3, #0]
8002f64: 2100 movs r1, #0
8002f66: 4618 mov r0, r3
8002f68: f7ff f926 bl 80021b8 <BSP_LCD_SetLayerVisible_NoReload>
BSP_LCD_SetLayerVisible_NoReload(RenderingLayer, ENABLE);
8002f6c: 4b06 ldr r3, [pc, #24] ; (8002f88 <LCD_Refresh+0x44>)
8002f6e: 681b ldr r3, [r3, #0]
8002f70: 2101 movs r1, #1
8002f72: 4618 mov r0, r3
8002f74: f7ff f920 bl 80021b8 <BSP_LCD_SetLayerVisible_NoReload>
HAL_LTDC_Reload(&hLtdcHandler, LTDC_RELOAD_IMMEDIATE);
8002f78: 2101 movs r1, #1
8002f7a: 4804 ldr r0, [pc, #16] ; (8002f8c <LCD_Refresh+0x48>)
8002f7c: f006 fdba bl 8009af4 <HAL_LTDC_Reload>
//BSP_LCD_Reload(LCD_RELOAD_VERTICAL_BLANKING);
}
8002f80: bf00 nop
8002f82: bd80 pop {r7, pc}
8002f84: 20020014 .word 0x20020014
8002f88: 2006b1b8 .word 0x2006b1b8
8002f8c: 2006b8c4 .word 0x2006b8c4
08002f90 <HAL_LTDC_LineEventCallback>:
void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc)
{
8002f90: b580 push {r7, lr}
8002f92: b082 sub sp, #8
8002f94: af00 add r7, sp, #0
8002f96: 6078 str r0, [r7, #4]
if(RefreshScreen)
8002f98: 4b06 ldr r3, [pc, #24] ; (8002fb4 <HAL_LTDC_LineEventCallback+0x24>)
8002f9a: 781b ldrb r3, [r3, #0]
8002f9c: b2db uxtb r3, r3
8002f9e: 2b00 cmp r3, #0
8002fa0: d004 beq.n 8002fac <HAL_LTDC_LineEventCallback+0x1c>
{
LCD_Refresh();
8002fa2: f7ff ffcf bl 8002f44 <LCD_Refresh>
RefreshScreen = false;
8002fa6: 4b03 ldr r3, [pc, #12] ; (8002fb4 <HAL_LTDC_LineEventCallback+0x24>)
8002fa8: 2200 movs r2, #0
8002faa: 701a strb r2, [r3, #0]
}
}
8002fac: bf00 nop
8002fae: 3708 adds r7, #8
8002fb0: 46bd mov sp, r7
8002fb2: bd80 pop {r7, pc}
8002fb4: 2006b1bc .word 0x2006b1bc
08002fb8 <main>:
const char _VERSION[] = "VER 1.203.0\0";
volatile char _SERIAL_DRAW[10] = {'S', 'N', ' ', '2', '3', '0', '0', '1', 0, 0};
int main(void)
{
8002fb8: b580 push {r7, lr}
8002fba: b092 sub sp, #72 ; 0x48
8002fbc: af00 add r7, sp, #0
uint32_t cnt = 0, i, j, k, l;
8002fbe: 2300 movs r3, #0
8002fc0: 63fb str r3, [r7, #60] ; 0x3c
float32_t f;
char str[50];
uint32_t keys = 0;
8002fc2: 2300 movs r3, #0
8002fc4: 63bb str r3, [r7, #56] ; 0x38
HAL_Init();
8002fc6: f005 fb13 bl 80085f0 <HAL_Init>
SystemClock_Config();
8002fca: f000 f8c7 bl 800315c <SystemClock_Config>
MX_GPIO_Init();
8002fce: f7fd fb3f bl 8000650 <MX_GPIO_Init>
MX_DMA2D_Init();
8002fd2: f7fd fae5 bl 80005a0 <MX_DMA2D_Init>
MX_TIM7_Init();
8002fd6: f004 f98f bl 80072f8 <MX_TIM7_Init>
MX_LTDC_Init();
8002fda: f7fe fe71 bl 8001cc0 <MX_LTDC_Init>
initKeys();
8002fde: f7fd fc2b bl 8000838 <initKeys>
/////////////////////////////// todo
CNT_CHANNELS = 4;
8002fe2: 4b55 ldr r3, [pc, #340] ; (8003138 <main+0x180>)
8002fe4: 2204 movs r2, #4
8002fe6: 601a str r2, [r3, #0]
ACTIVE_CHANNEL = Ch1;
8002fe8: 4b54 ldr r3, [pc, #336] ; (800313c <main+0x184>)
8002fea: 2200 movs r2, #0
8002fec: 601a str r2, [r3, #0]
menupos = Input;
8002fee: 4b54 ldr r3, [pc, #336] ; (8003140 <main+0x188>)
8002ff0: 2200 movs r2, #0
8002ff2: 701a strb r2, [r3, #0]
for(i = 0; i < 16; i++)
8002ff4: 2300 movs r3, #0
8002ff6: 647b str r3, [r7, #68] ; 0x44
8002ff8: e056 b.n 80030a8 <main+0xf0>
{
pardata.amplif[i].IIN = CHARGE;
8002ffa: 4a52 ldr r2, [pc, #328] ; (8003144 <main+0x18c>)
8002ffc: 6c7b ldr r3, [r7, #68] ; 0x44
8002ffe: 015b lsls r3, r3, #5
8003000: 4413 add r3, r2
8003002: 2200 movs r2, #0
8003004: 801a strh r2, [r3, #0]
pardata.amplif[i].IFV = Hp0_2;
8003006: 4a4f ldr r2, [pc, #316] ; (8003144 <main+0x18c>)
8003008: 6c7b ldr r3, [r7, #68] ; 0x44
800300a: 015b lsls r3, r3, #5
800300c: 4413 add r3, r2
800300e: 3302 adds r3, #2
8003010: 2200 movs r2, #0
8003012: 801a strh r2, [r3, #0]
pardata.amplif[i].IFN = Lp100000;
8003014: 4a4b ldr r2, [pc, #300] ; (8003144 <main+0x18c>)
8003016: 6c7b ldr r3, [r7, #68] ; 0x44
8003018: 015b lsls r3, r3, #5
800301a: 4413 add r3, r2
800301c: 3304 adds r3, #4
800301e: 2207 movs r2, #7
8003020: 801a strh r2, [r3, #0]
pardata.amplif[i].IKU = Ku1000;
8003022: 4a48 ldr r2, [pc, #288] ; (8003144 <main+0x18c>)
8003024: 6c7b ldr r3, [r7, #68] ; 0x44
8003026: 015b lsls r3, r3, #5
8003028: 4413 add r3, r2
800302a: 3306 adds r3, #6
800302c: 220c movs r2, #12
800302e: 801a strh r2, [r3, #0]
pardata.amplif[i].IKS = 1;
8003030: 4a44 ldr r2, [pc, #272] ; (8003144 <main+0x18c>)
8003032: 6c7b ldr r3, [r7, #68] ; 0x44
8003034: 015b lsls r3, r3, #5
8003036: 4413 add r3, r2
8003038: 330c adds r3, #12
800303a: 2201 movs r2, #1
800303c: 801a strh r2, [r3, #0]
pardata.amplif[i].IKD = 0;
800303e: 4a41 ldr r2, [pc, #260] ; (8003144 <main+0x18c>)
8003040: 6c7b ldr r3, [r7, #68] ; 0x44
8003042: 015b lsls r3, r3, #5
8003044: 4413 add r3, r2
8003046: 330a adds r3, #10
8003048: 2200 movs r2, #0
800304a: 801a strh r2, [r3, #0]
pardata.amplif[i].IKE = 0;
800304c: 4a3d ldr r2, [pc, #244] ; (8003144 <main+0x18c>)
800304e: 6c7b ldr r3, [r7, #68] ; 0x44
8003050: 015b lsls r3, r3, #5
8003052: 4413 add r3, r2
8003054: 3308 adds r3, #8
8003056: 2200 movs r2, #0
8003058: 801a strh r2, [r3, #0]
pardata.amplif[i].IPZ = 0;
800305a: 4a3a ldr r2, [pc, #232] ; (8003144 <main+0x18c>)
800305c: 6c7b ldr r3, [r7, #68] ; 0x44
800305e: 015b lsls r3, r3, #5
8003060: 4413 add r3, r2
8003062: 330e adds r3, #14
8003064: 2200 movs r2, #0
8003066: 801a strh r2, [r3, #0]
pardata.amplif[i].OPZ = 0;
8003068: 4a36 ldr r2, [pc, #216] ; (8003144 <main+0x18c>)
800306a: 6c7b ldr r3, [r7, #68] ; 0x44
800306c: 015b lsls r3, r3, #5
800306e: 4413 add r3, r2
8003070: 3310 adds r3, #16
8003072: 2200 movs r2, #0
8003074: 801a strh r2, [r3, #0]
pardata.amplif[i].KCOND = 1.00f;
8003076: 4a33 ldr r2, [pc, #204] ; (8003144 <main+0x18c>)
8003078: 6c7b ldr r3, [r7, #68] ; 0x44
800307a: 015b lsls r3, r3, #5
800307c: 4413 add r3, r2
800307e: 3314 adds r3, #20
8003080: f04f 527e mov.w r2, #1065353216 ; 0x3f800000
8003084: 601a str r2, [r3, #0]
pardata.amplif[i].SENS = 10.00f;
8003086: 4a2f ldr r2, [pc, #188] ; (8003144 <main+0x18c>)
8003088: 6c7b ldr r3, [r7, #68] ; 0x44
800308a: 015b lsls r3, r3, #5
800308c: 4413 add r3, r2
800308e: 3318 adds r3, #24
8003090: 4a2d ldr r2, [pc, #180] ; (8003148 <main+0x190>)
8003092: 601a str r2, [r3, #0]
pardata.amplif[i].ACCEL = 100.00f;
8003094: 4a2b ldr r2, [pc, #172] ; (8003144 <main+0x18c>)
8003096: 6c7b ldr r3, [r7, #68] ; 0x44
8003098: 015b lsls r3, r3, #5
800309a: 4413 add r3, r2
800309c: 331c adds r3, #28
800309e: 4a2b ldr r2, [pc, #172] ; (800314c <main+0x194>)
80030a0: 601a str r2, [r3, #0]
for(i = 0; i < 16; i++)
80030a2: 6c7b ldr r3, [r7, #68] ; 0x44
80030a4: 3301 adds r3, #1
80030a6: 647b str r3, [r7, #68] ; 0x44
80030a8: 6c7b ldr r3, [r7, #68] ; 0x44
80030aa: 2b0f cmp r3, #15
80030ac: d9a5 bls.n 8002ffa <main+0x42>
}
pardata.OWN = 18;
80030ae: 4b25 ldr r3, [pc, #148] ; (8003144 <main+0x18c>)
80030b0: 2212 movs r2, #18
80030b2: f8a3 2200 strh.w r2, [r3, #512] ; 0x200
pardata.BAUD = 7;
80030b6: 4b23 ldr r3, [pc, #140] ; (8003144 <main+0x18c>)
80030b8: 2207 movs r2, #7
80030ba: f8a3 2202 strh.w r2, [r3, #514] ; 0x202
pardata.INFB = 0;
80030be: 4b21 ldr r3, [pc, #132] ; (8003144 <main+0x18c>)
80030c0: 2200 movs r2, #0
80030c2: f8a3 2204 strh.w r2, [r3, #516] ; 0x204
pardata.LANG = RUS;
80030c6: 4b1f ldr r3, [pc, #124] ; (8003144 <main+0x18c>)
80030c8: 2200 movs r2, #0
80030ca: f8a3 2206 strh.w r2, [r3, #518] ; 0x206
/////////////////////////////
MX_UART7_Init();
80030ce: f004 fa19 bl 8007504 <MX_UART7_Init>
EXTI_Config();
80030d2: f000 f8e3 bl 800329c <EXTI_Config>
Logo();
80030d6: f000 f945 bl 8003364 <Logo>
while(HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_SET) {
80030da: e001 b.n 80030e0 <main+0x128>
RedrawScreen();
80030dc: f000 f932 bl 8003344 <RedrawScreen>
while(HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_SET) {
80030e0: 2101 movs r1, #1
80030e2: 481b ldr r0, [pc, #108] ; (8003150 <main+0x198>)
80030e4: f006 fabe bl 8009664 <HAL_GPIO_ReadPin>
80030e8: 4603 mov r3, r0
80030ea: 2b01 cmp r3, #1
80030ec: d0f6 beq.n 80030dc <main+0x124>
}
KeysIsReady = true;
80030ee: 4b19 ldr r3, [pc, #100] ; (8003154 <main+0x19c>)
80030f0: 2201 movs r2, #1
80030f2: 701a strb r2, [r3, #0]
for(k = 0; k < 30; k++)
80030f4: 2300 movs r3, #0
80030f6: 643b str r3, [r7, #64] ; 0x40
80030f8: e00f b.n 800311a <main+0x162>
{
keys = kbhit();
80030fa: f7fd fc2b bl 8000954 <kbhit>
80030fe: 63b8 str r0, [r7, #56] ; 0x38
if((keys == KEY_UP) || (keys == (KEY_UP + KEY_OK)))
8003100: 6bbb ldr r3, [r7, #56] ; 0x38
8003102: 2b02 cmp r3, #2
8003104: d002 beq.n 800310c <main+0x154>
8003106: 6bbb ldr r3, [r7, #56] ; 0x38
8003108: 2b22 cmp r3, #34 ; 0x22
800310a: d103 bne.n 8003114 <main+0x15c>
{
clbr = true;
800310c: 4b12 ldr r3, [pc, #72] ; (8003158 <main+0x1a0>)
800310e: 2201 movs r2, #1
8003110: 701a strb r2, [r3, #0]
break;
8003112: e005 b.n 8003120 <main+0x168>
for(k = 0; k < 30; k++)
8003114: 6c3b ldr r3, [r7, #64] ; 0x40
8003116: 3301 adds r3, #1
8003118: 643b str r3, [r7, #64] ; 0x40
800311a: 6c3b ldr r3, [r7, #64] ; 0x40
800311c: 2b1d cmp r3, #29
800311e: d9ec bls.n 80030fa <main+0x142>
}
}
HAL_Delay(1000);
8003120: f44f 707a mov.w r0, #1000 ; 0x3e8
8003124: f005 fad0 bl 80086c8 <HAL_Delay>
AskChannels();
8003128: f005 f9f6 bl 8008518 <AskChannels>
//menu = MAIN; //todo
while(1)
{
RedrawScreen();
800312c: f000 f90a bl 8003344 <RedrawScreen>
keyIns();
8003130: f7fd fcac bl 8000a8c <keyIns>
RedrawScreen();
8003134: e7fa b.n 800312c <main+0x174>
8003136: bf00 nop
8003138: 2006b1c4 .word 0x2006b1c4
800313c: 2006b1c0 .word 0x2006b1c0
8003140: 20020010 .word 0x20020010
8003144: 2006b3f8 .word 0x2006b3f8
8003148: 41200000 .word 0x41200000
800314c: 42c80000 .word 0x42c80000
8003150: 40020000 .word 0x40020000
8003154: 2002013a .word 0x2002013a
8003158: 2006b96c .word 0x2006b96c
0800315c <SystemClock_Config>:
/**
* @brief System Clock Configuration
* @retval None
*/
void SystemClock_Config(void)
{
800315c: b580 push {r7, lr}
800315e: b0b8 sub sp, #224 ; 0xe0
8003160: af00 add r7, sp, #0
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
8003162: f107 03ac add.w r3, r7, #172 ; 0xac
8003166: 2234 movs r2, #52 ; 0x34
8003168: 2100 movs r1, #0
800316a: 4618 mov r0, r3
800316c: f009 fe80 bl 800ce70 <memset>
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
8003170: f107 0398 add.w r3, r7, #152 ; 0x98
8003174: 2200 movs r2, #0
8003176: 601a str r2, [r3, #0]
8003178: 605a str r2, [r3, #4]
800317a: 609a str r2, [r3, #8]
800317c: 60da str r2, [r3, #12]
800317e: 611a str r2, [r3, #16]
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
8003180: f107 0308 add.w r3, r7, #8
8003184: 2290 movs r2, #144 ; 0x90
8003186: 2100 movs r1, #0
8003188: 4618 mov r0, r3
800318a: f009 fe71 bl 800ce70 <memset>
__HAL_RCC_PWR_CLK_ENABLE();
800318e: 4a3f ldr r2, [pc, #252] ; (800328c <SystemClock_Config+0x130>)
8003190: 4b3e ldr r3, [pc, #248] ; (800328c <SystemClock_Config+0x130>)
8003192: 6c1b ldr r3, [r3, #64] ; 0x40
8003194: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
8003198: 6413 str r3, [r2, #64] ; 0x40
800319a: 4b3c ldr r3, [pc, #240] ; (800328c <SystemClock_Config+0x130>)
800319c: 6c1b ldr r3, [r3, #64] ; 0x40
800319e: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
80031a2: 607b str r3, [r7, #4]
80031a4: 687b ldr r3, [r7, #4]
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
80031a6: 4a3a ldr r2, [pc, #232] ; (8003290 <SystemClock_Config+0x134>)
80031a8: 4b39 ldr r3, [pc, #228] ; (8003290 <SystemClock_Config+0x134>)
80031aa: 681b ldr r3, [r3, #0]
80031ac: f423 4340 bic.w r3, r3, #49152 ; 0xc000
80031b0: f443 4380 orr.w r3, r3, #16384 ; 0x4000
80031b4: 6013 str r3, [r2, #0]
80031b6: 4b36 ldr r3, [pc, #216] ; (8003290 <SystemClock_Config+0x134>)
80031b8: 681b ldr r3, [r3, #0]
80031ba: f403 4340 and.w r3, r3, #49152 ; 0xc000
80031be: 603b str r3, [r7, #0]
80031c0: 683b ldr r3, [r7, #0]
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
80031c2: 2302 movs r3, #2
80031c4: f8c7 30ac str.w r3, [r7, #172] ; 0xac
RCC_OscInitStruct.LSEState = RCC_LSE_BYPASS;
80031c8: 2305 movs r3, #5
80031ca: f8c7 30b4 str.w r3, [r7, #180] ; 0xb4
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
80031ce: 2301 movs r3, #1
80031d0: f8c7 30b8 str.w r3, [r7, #184] ; 0xb8
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
80031d4: 2310 movs r3, #16
80031d6: f8c7 30bc str.w r3, [r7, #188] ; 0xbc
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
80031da: 2302 movs r3, #2
80031dc: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
80031e0: 2300 movs r3, #0
80031e2: f8c7 30c8 str.w r3, [r7, #200] ; 0xc8
RCC_OscInitStruct.PLL.PLLM = 16;
80031e6: 2310 movs r3, #16
80031e8: f8c7 30cc str.w r3, [r7, #204] ; 0xcc
RCC_OscInitStruct.PLL.PLLN = 432;
80031ec: f44f 73d8 mov.w r3, #432 ; 0x1b0
80031f0: f8c7 30d0 str.w r3, [r7, #208] ; 0xd0
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV8;
80031f4: 2308 movs r3, #8
80031f6: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4
RCC_OscInitStruct.PLL.PLLQ = 9;
80031fa: 2309 movs r3, #9
80031fc: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
8003200: f107 03ac add.w r3, r7, #172 ; 0xac
8003204: 4618 mov r0, r3
8003206: f006 fe47 bl 8009e98 <HAL_RCC_OscConfig>
800320a: 4603 mov r3, r0
800320c: 2b00 cmp r3, #0
800320e: d001 beq.n 8003214 <SystemClock_Config+0xb8>
{
Error_Handler();
8003210: f000 f840 bl 8003294 <Error_Handler>
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
8003214: 230f movs r3, #15
8003216: f8c7 3098 str.w r3, [r7, #152] ; 0x98
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
800321a: 2302 movs r3, #2
800321c: f8c7 309c str.w r3, [r7, #156] ; 0x9c
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
8003220: 2300 movs r3, #0
8003222: f8c7 30a0 str.w r3, [r7, #160] ; 0xa0
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
8003226: 2300 movs r3, #0
8003228: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
800322c: 2300 movs r3, #0
800322e: f8c7 30a8 str.w r3, [r7, #168] ; 0xa8
if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
8003232: f107 0398 add.w r3, r7, #152 ; 0x98
8003236: 2101 movs r1, #1
8003238: 4618 mov r0, r3
800323a: f007 f8db bl 800a3f4 <HAL_RCC_ClockConfig>
800323e: 4603 mov r3, r0
8003240: 2b00 cmp r3, #0
8003242: d001 beq.n 8003248 <SystemClock_Config+0xec>
{
Error_Handler();
8003244: f000 f826 bl 8003294 <Error_Handler>
}
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC |RCC_PERIPHCLK_UART7;
8003248: f241 0308 movw r3, #4104 ; 0x1008
800324c: 60bb str r3, [r7, #8]
PeriphClkInitStruct.PLLSAI.PLLSAIN = 192;
800324e: 23c0 movs r3, #192 ; 0xc0
8003250: 61fb str r3, [r7, #28]
PeriphClkInitStruct.PLLSAI.PLLSAIR = 4;
8003252: 2304 movs r3, #4
8003254: 627b str r3, [r7, #36] ; 0x24
PeriphClkInitStruct.PLLSAI.PLLSAIQ = 2;
8003256: 2302 movs r3, #2
8003258: 623b str r3, [r7, #32]
PeriphClkInitStruct.PLLSAI.PLLSAIP = RCC_PLLSAIP_DIV4;
800325a: 2301 movs r3, #1
800325c: 62bb str r3, [r7, #40] ; 0x28
PeriphClkInitStruct.PLLSAIDivQ = 1;
800325e: 2301 movs r3, #1
8003260: 633b str r3, [r7, #48] ; 0x30
PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_2;
8003262: 2300 movs r3, #0
8003264: 637b str r3, [r7, #52] ; 0x34
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
8003266: f44f 7380 mov.w r3, #256 ; 0x100
800326a: 63bb str r3, [r7, #56] ; 0x38
PeriphClkInitStruct.Uart7ClockSelection = RCC_UART7CLKSOURCE_PCLK1;
800326c: 2300 movs r3, #0
800326e: 667b str r3, [r7, #100] ; 0x64
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
8003270: f107 0308 add.w r3, r7, #8
8003274: 4618 mov r0, r3
8003276: f007 fa93 bl 800a7a0 <HAL_RCCEx_PeriphCLKConfig>
800327a: 4603 mov r3, r0
800327c: 2b00 cmp r3, #0
800327e: d001 beq.n 8003284 <SystemClock_Config+0x128>
{
Error_Handler();
8003280: f000 f808 bl 8003294 <Error_Handler>
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_CLK48;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}*/
}
8003284: bf00 nop
8003286: 37e0 adds r7, #224 ; 0xe0
8003288: 46bd mov sp, r7
800328a: bd80 pop {r7, pc}
800328c: 40023800 .word 0x40023800
8003290: 40007000 .word 0x40007000
08003294 <Error_Handler>:
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void Error_Handler(void)
{
8003294: b480 push {r7}
8003296: af00 add r7, sp, #0
\details Disables IRQ interrupts by setting the I-bit in the CPSR.
Can only be executed in Privileged modes.
*/
__STATIC_FORCEINLINE void __disable_irq(void)
{
__ASM volatile ("cpsid i" : : : "memory");
8003298: b672 cpsid i
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
__disable_irq();
while (1)
800329a: e7fe b.n 800329a <Error_Handler+0x6>
0800329c <EXTI_Config>:
void EXTI_Config(void)
{
800329c: b580 push {r7, lr}
800329e: b086 sub sp, #24
80032a0: af00 add r7, sp, #0
GPIO_InitTypeDef EXTILineStruct;
__HAL_RCC_SYSCFG_CLK_ENABLE();
80032a2: 4a12 ldr r2, [pc, #72] ; (80032ec <EXTI_Config+0x50>)
80032a4: 4b11 ldr r3, [pc, #68] ; (80032ec <EXTI_Config+0x50>)
80032a6: 6c5b ldr r3, [r3, #68] ; 0x44
80032a8: f443 4380 orr.w r3, r3, #16384 ; 0x4000
80032ac: 6453 str r3, [r2, #68] ; 0x44
80032ae: 4b0f ldr r3, [pc, #60] ; (80032ec <EXTI_Config+0x50>)
80032b0: 6c5b ldr r3, [r3, #68] ; 0x44
80032b2: f403 4380 and.w r3, r3, #16384 ; 0x4000
80032b6: 603b str r3, [r7, #0]
80032b8: 683b ldr r3, [r7, #0]
EXTILineStruct.Pin = GPIO_PIN_2;
80032ba: 2304 movs r3, #4
80032bc: 607b str r3, [r7, #4]
EXTILineStruct.Mode = GPIO_MODE_IT_RISING;
80032be: f44f 1388 mov.w r3, #1114112 ; 0x110000
80032c2: 60bb str r3, [r7, #8]
EXTILineStruct.Pull = GPIO_NOPULL;
80032c4: 2300 movs r3, #0
80032c6: 60fb str r3, [r7, #12]
HAL_GPIO_Init(GPIOC, &EXTILineStruct);
80032c8: 1d3b adds r3, r7, #4
80032ca: 4619 mov r1, r3
80032cc: 4808 ldr r0, [pc, #32] ; (80032f0 <EXTI_Config+0x54>)
80032ce: f006 f81f bl 8009310 <HAL_GPIO_Init>
HAL_NVIC_SetPriority(EXTI2_IRQn, 12, 0);
80032d2: 2200 movs r2, #0
80032d4: 210c movs r1, #12
80032d6: 2008 movs r0, #8
80032d8: f005 fb13 bl 8008902 <HAL_NVIC_SetPriority>
HAL_NVIC_EnableIRQ(EXTI2_IRQn);
80032dc: 2008 movs r0, #8
80032de: f005 fb2c bl 800893a <HAL_NVIC_EnableIRQ>
}
80032e2: bf00 nop
80032e4: 3718 adds r7, #24
80032e6: 46bd mov sp, r7
80032e8: bd80 pop {r7, pc}
80032ea: bf00 nop
80032ec: 40023800 .word 0x40023800
80032f0: 40020800 .word 0x40020800
080032f4 <HAL_GPIO_EXTI_Callback>:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
80032f4: b580 push {r7, lr}
80032f6: b082 sub sp, #8
80032f8: af00 add r7, sp, #0
80032fa: 4603 mov r3, r0
80032fc: 80fb strh r3, [r7, #6]
if(GPIO_Pin == GPIO_PIN_2)
80032fe: 88fb ldrh r3, [r7, #6]
8003300: 2b04 cmp r3, #4
8003302: d114 bne.n 800332e <HAL_GPIO_EXTI_Callback+0x3a>
{
__HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_2);
8003304: 4b0c ldr r3, [pc, #48] ; (8003338 <HAL_GPIO_EXTI_Callback+0x44>)
8003306: 2204 movs r2, #4
8003308: 615a str r2, [r3, #20]
if((RefreshScreen == false) && (screen == true))
800330a: 4b0c ldr r3, [pc, #48] ; (800333c <HAL_GPIO_EXTI_Callback+0x48>)
800330c: 781b ldrb r3, [r3, #0]
800330e: b2db uxtb r3, r3
8003310: f083 0301 eor.w r3, r3, #1
8003314: b2db uxtb r3, r3
8003316: 2b00 cmp r3, #0
8003318: d009 beq.n 800332e <HAL_GPIO_EXTI_Callback+0x3a>
800331a: 4b09 ldr r3, [pc, #36] ; (8003340 <HAL_GPIO_EXTI_Callback+0x4c>)
800331c: 781b ldrb r3, [r3, #0]
800331e: b2db uxtb r3, r3
8003320: 2b00 cmp r3, #0
8003322: d004 beq.n 800332e <HAL_GPIO_EXTI_Callback+0x3a>
{
screen = false;
8003324: 4b06 ldr r3, [pc, #24] ; (8003340 <HAL_GPIO_EXTI_Callback+0x4c>)
8003326: 2200 movs r2, #0
8003328: 701a strb r2, [r3, #0]
Display();
800332a: f000 f8b9 bl 80034a0 <Display>
}
//ReadChannel(Ch1);
}
}
800332e: bf00 nop
8003330: 3708 adds r7, #8
8003332: 46bd mov sp, r7
8003334: bd80 pop {r7, pc}
8003336: bf00 nop
8003338: 40013c00 .word 0x40013c00
800333c: 2006b1bc .word 0x2006b1bc
8003340: 2002002c .word 0x2002002c
08003344 <RedrawScreen>:
void RedrawScreen(void)
{
8003344: b480 push {r7}
8003346: af00 add r7, sp, #0
__HAL_GPIO_EXTI_GENERATE_SWIT(GPIO_PIN_2);
8003348: 4a05 ldr r2, [pc, #20] ; (8003360 <RedrawScreen+0x1c>)
800334a: 4b05 ldr r3, [pc, #20] ; (8003360 <RedrawScreen+0x1c>)
800334c: 691b ldr r3, [r3, #16]
800334e: f043 0304 orr.w r3, r3, #4
8003352: 6113 str r3, [r2, #16]
{
screen = false;
Display();
}*/
}
8003354: bf00 nop
8003356: 46bd mov sp, r7
8003358: f85d 7b04 ldr.w r7, [sp], #4
800335c: 4770 bx lr
800335e: bf00 nop
8003360: 40013c00 .word 0x40013c00
08003364 <Logo>:
void Logo(void)
{
8003364: b580 push {r7, lr}
8003366: b082 sub sp, #8
8003368: af00 add r7, sp, #0
uint32_t i;
uint32_t color = LCD_COLOR_BLACK; //0xFF212829;
800336a: f04f 437f mov.w r3, #4278190080 ; 0xff000000
800336e: 603b str r3, [r7, #0]
#ifdef DRAW_LOGO
BSP_LCD_DisplayOn();
8003370: f7fe fddc bl 8001f2c <BSP_LCD_DisplayOn>
HAL_NVIC_DisableIRQ(EXTI2_IRQn);
8003374: 2008 movs r0, #8
8003376: f005 faee bl 8008956 <HAL_NVIC_DisableIRQ>
//*********************************************************
BSP_LCD_SetFont(&Font12);
800337a: 4843 ldr r0, [pc, #268] ; (8003488 <Logo+0x124>)
800337c: f7fe ff90 bl 80022a0 <BSP_LCD_SetFont>
for(i = 0; i < 3; i++)
8003380: 2300 movs r3, #0
8003382: 607b str r3, [r7, #4]
8003384: e032 b.n 80033ec <Logo+0x88>
{
BSP_LCD_Clear(color);
8003386: 6838 ldr r0, [r7, #0]
8003388: f7fe ffa8 bl 80022dc <BSP_LCD_Clear>
DrawImage(&bmLOGO_NEW, 0, 54);
800338c: 2236 movs r2, #54 ; 0x36
800338e: 2100 movs r1, #0
8003390: 483e ldr r0, [pc, #248] ; (800348c <Logo+0x128>)
8003392: f7ff fd29 bl 8002de8 <DrawImage>
RefreshScreen = true;
8003396: 4b3e ldr r3, [pc, #248] ; (8003490 <Logo+0x12c>)
8003398: 2201 movs r2, #1
800339a: 701a strb r2, [r3, #0]
HAL_LTDC_ProgramLineEvent(&hLtdcHandler, 0);
800339c: 2100 movs r1, #0
800339e: 483d ldr r0, [pc, #244] ; (8003494 <Logo+0x130>)
80033a0: f006 fb70 bl 8009a84 <HAL_LTDC_ProgramLineEvent>
while(RefreshScreen);
80033a4: bf00 nop
80033a6: 4b3a ldr r3, [pc, #232] ; (8003490 <Logo+0x12c>)
80033a8: 781b ldrb r3, [r3, #0]
80033aa: b2db uxtb r3, r3
80033ac: 2b00 cmp r3, #0
80033ae: d1fa bne.n 80033a6 <Logo+0x42>
HAL_Delay(50);
80033b0: 2032 movs r0, #50 ; 0x32
80033b2: f005 f989 bl 80086c8 <HAL_Delay>
BSP_LCD_Clear(color);
80033b6: 6838 ldr r0, [r7, #0]
80033b8: f7fe ff90 bl 80022dc <BSP_LCD_Clear>
DrawImage(&bmLOGO_NEW, 0, 54);
80033bc: 2236 movs r2, #54 ; 0x36
80033be: 2100 movs r1, #0
80033c0: 4832 ldr r0, [pc, #200] ; (800348c <Logo+0x128>)
80033c2: f7ff fd11 bl 8002de8 <DrawImage>
RefreshScreen = true;
80033c6: 4b32 ldr r3, [pc, #200] ; (8003490 <Logo+0x12c>)
80033c8: 2201 movs r2, #1
80033ca: 701a strb r2, [r3, #0]
HAL_LTDC_ProgramLineEvent(&hLtdcHandler, 0);
80033cc: 2100 movs r1, #0
80033ce: 4831 ldr r0, [pc, #196] ; (8003494 <Logo+0x130>)
80033d0: f006 fb58 bl 8009a84 <HAL_LTDC_ProgramLineEvent>
while(RefreshScreen);
80033d4: bf00 nop
80033d6: 4b2e ldr r3, [pc, #184] ; (8003490 <Logo+0x12c>)
80033d8: 781b ldrb r3, [r3, #0]
80033da: b2db uxtb r3, r3
80033dc: 2b00 cmp r3, #0
80033de: d1fa bne.n 80033d6 <Logo+0x72>
HAL_Delay(50);
80033e0: 2032 movs r0, #50 ; 0x32
80033e2: f005 f971 bl 80086c8 <HAL_Delay>
for(i = 0; i < 3; i++)
80033e6: 687b ldr r3, [r7, #4]
80033e8: 3301 adds r3, #1
80033ea: 607b str r3, [r7, #4]
80033ec: 687b ldr r3, [r7, #4]
80033ee: 2b02 cmp r3, #2
80033f0: d9c9 bls.n 8003386 <Logo+0x22>
}
HAL_GPIO_WritePin(DISP_ON_GPIO_Port, DISP_ON_Pin, GPIO_PIN_RESET); // BACKLIGHT_ON
80033f2: 2200 movs r2, #0
80033f4: f44f 7180 mov.w r1, #256 ; 0x100
80033f8: 4827 ldr r0, [pc, #156] ; (8003498 <Logo+0x134>)
80033fa: f006 f94b bl 8009694 <HAL_GPIO_WritePin>
//*********************************************************
BSP_LCD_Clear(color);
80033fe: 6838 ldr r0, [r7, #0]
8003400: f7fe ff6c bl 80022dc <BSP_LCD_Clear>
DrawImage(&bmLOGO_NEW, 0, 54);
8003404: 2236 movs r2, #54 ; 0x36
8003406: 2100 movs r1, #0
8003408: 4820 ldr r0, [pc, #128] ; (800348c <Logo+0x128>)
800340a: f7ff fced bl 8002de8 <DrawImage>
RefreshScreen = true;
800340e: 4b20 ldr r3, [pc, #128] ; (8003490 <Logo+0x12c>)
8003410: 2201 movs r2, #1
8003412: 701a strb r2, [r3, #0]
HAL_LTDC_ProgramLineEvent(&hLtdcHandler, 0);
8003414: 2100 movs r1, #0
8003416: 481f ldr r0, [pc, #124] ; (8003494 <Logo+0x130>)
8003418: f006 fb34 bl 8009a84 <HAL_LTDC_ProgramLineEvent>
while(RefreshScreen);
800341c: bf00 nop
800341e: 4b1c ldr r3, [pc, #112] ; (8003490 <Logo+0x12c>)
8003420: 781b ldrb r3, [r3, #0]
8003422: b2db uxtb r3, r3
8003424: 2b00 cmp r3, #0
8003426: d1fa bne.n 800341e <Logo+0xba>
HAL_Delay(50);
8003428: 2032 movs r0, #50 ; 0x32
800342a: f005 f94d bl 80086c8 <HAL_Delay>
BSP_LCD_Clear(color);
800342e: 6838 ldr r0, [r7, #0]
8003430: f7fe ff54 bl 80022dc <BSP_LCD_Clear>
DrawImage(&bmLOGO_NEW, 0, 54);
8003434: 2236 movs r2, #54 ; 0x36
8003436: 2100 movs r1, #0
8003438: 4814 ldr r0, [pc, #80] ; (800348c <Logo+0x128>)
800343a: f7ff fcd5 bl 8002de8 <DrawImage>
RefreshScreen = true;
800343e: 4b14 ldr r3, [pc, #80] ; (8003490 <Logo+0x12c>)
8003440: 2201 movs r2, #1
8003442: 701a strb r2, [r3, #0]
HAL_LTDC_ProgramLineEvent(&hLtdcHandler, 0);
8003444: 2100 movs r1, #0
8003446: 4813 ldr r0, [pc, #76] ; (8003494 <Logo+0x130>)
8003448: f006 fb1c bl 8009a84 <HAL_LTDC_ProgramLineEvent>
while(RefreshScreen);
800344c: bf00 nop
800344e: 4b10 ldr r3, [pc, #64] ; (8003490 <Logo+0x12c>)
8003450: 781b ldrb r3, [r3, #0]
8003452: b2db uxtb r3, r3
8003454: 2b00 cmp r3, #0
8003456: d1fa bne.n 800344e <Logo+0xea>
HAL_Delay(50);
8003458: 2032 movs r0, #50 ; 0x32
800345a: f005 f935 bl 80086c8 <HAL_Delay>
HAL_GPIO_WritePin(DISP_ON_GPIO_Port, DISP_ON_Pin, GPIO_PIN_RESET); // BACKLIGHT_ON
800345e: 2200 movs r2, #0
8003460: f44f 7180 mov.w r1, #256 ; 0x100
8003464: 480c ldr r0, [pc, #48] ; (8003498 <Logo+0x134>)
8003466: f006 f915 bl 8009694 <HAL_GPIO_WritePin>
HAL_Delay(500);
800346a: f44f 70fa mov.w r0, #500 ; 0x1f4
800346e: f005 f92b bl 80086c8 <HAL_Delay>
menu = LOGO;
8003472: 4b0a ldr r3, [pc, #40] ; (800349c <Logo+0x138>)
8003474: 221e movs r2, #30
8003476: 701a strb r2, [r3, #0]
HAL_NVIC_EnableIRQ(EXTI2_IRQn);
8003478: 2008 movs r0, #8
800347a: f005 fa5e bl 800893a <HAL_NVIC_EnableIRQ>
#endif
}
800347e: bf00 nop
8003480: 3708 adds r7, #8
8003482: 46bd mov sp, r7
8003484: bd80 pop {r7, pc}
8003486: bf00 nop
8003488: 20020000 .word 0x20020000
800348c: 08024c78 .word 0x08024c78
8003490: 2006b1bc .word 0x2006b1bc
8003494: 2006b8c4 .word 0x2006b8c4
8003498: 40020000 .word 0x40020000
800349c: 20020136 .word 0x20020136
080034a0 <Display>:
void Display(void)
{
80034a0: b580 push {r7, lr}
80034a2: f5ad 6d80 sub.w sp, sp, #1024 ; 0x400
80034a6: af00 add r7, sp, #0
char *p8;
TimeDate_TypeDef FatTime;
float32_t f, fs;
uint32_t cl1, cl2;
static uint32_t blink = 0;
bool bl = false;
80034a8: 2300 movs r3, #0
80034aa: f887 33ff strb.w r3, [r7, #1023] ; 0x3ff
static uint32_t blk = 0;
static uint8_t tt = 0;
static uint32_t tme = 0;
bool bll = false;
80034ae: 2300 movs r3, #0
80034b0: f887 33fe strb.w r3, [r7, #1022] ; 0x3fe
uint32_t old_DateTime;
uint32_t lx, ly;
uint32_t Year, Month, Day, Hour, Min, Sec;
blk++;
80034b4: 4bbe ldr r3, [pc, #760] ; (80037b0 <Display+0x310>)
80034b6: 681b ldr r3, [r3, #0]
80034b8: 3301 adds r3, #1
80034ba: 4abd ldr r2, [pc, #756] ; (80037b0 <Display+0x310>)
80034bc: 6013 str r3, [r2, #0]
if(blk > 3)
80034be: 4bbc ldr r3, [pc, #752] ; (80037b0 <Display+0x310>)
80034c0: 681b ldr r3, [r3, #0]
80034c2: 2b03 cmp r3, #3
80034c4: d905 bls.n 80034d2 <Display+0x32>
{
blk = 0;
80034c6: 4bba ldr r3, [pc, #744] ; (80037b0 <Display+0x310>)
80034c8: 2200 movs r2, #0
80034ca: 601a str r2, [r3, #0]
bll = true;
80034cc: 2301 movs r3, #1
80034ce: f887 33fe strb.w r3, [r7, #1022] ; 0x3fe
}
blink++;
80034d2: 4bb8 ldr r3, [pc, #736] ; (80037b4 <Display+0x314>)
80034d4: 681b ldr r3, [r3, #0]
80034d6: 3301 adds r3, #1
80034d8: 4ab6 ldr r2, [pc, #728] ; (80037b4 <Display+0x314>)
80034da: 6013 str r3, [r2, #0]
if(blink > 8)
80034dc: 4bb5 ldr r3, [pc, #724] ; (80037b4 <Display+0x314>)
80034de: 681b ldr r3, [r3, #0]
80034e0: 2b08 cmp r3, #8
80034e2: d905 bls.n 80034f0 <Display+0x50>
{
blink = 0;
80034e4: 4bb3 ldr r3, [pc, #716] ; (80037b4 <Display+0x314>)
80034e6: 2200 movs r2, #0
80034e8: 601a str r2, [r3, #0]
bl = true;
80034ea: 2301 movs r3, #1
80034ec: f887 33ff strb.w r3, [r7, #1023] ; 0x3ff
}
Redrawing = true;
80034f0: 4bb1 ldr r3, [pc, #708] ; (80037b8 <Display+0x318>)
80034f2: 2201 movs r2, #1
80034f4: 701a strb r2, [r3, #0]
BSP_LCD_Clear(LCD_COLOR_BLACK);
80034f6: f04f 407f mov.w r0, #4278190080 ; 0xff000000
80034fa: f7fe feef bl 80022dc <BSP_LCD_Clear>
//*************************************************** <20><><CE><D2><D0><C8><D1><CE><C2> <20><><D1><D2><D0><CE> <20><><D1><D2><C0><D2><D3> (<28><><C2><C5> <20><><C4><C8><D1><CF><CB> <20> <20><><D7><C0><D1><C0> <20> <20><><C1><C0><D2><C0><D0><C5>) **************************************************************//
//==========================================================================================================================//
//--------------------------------------------------------------------------------------------------------------------------//
//==========================================================================================================================//
switch(menu)
80034fe: 4baf ldr r3, [pc, #700] ; (80037bc <Display+0x31c>)
8003500: 781b ldrb r3, [r3, #0]
8003502: b2db uxtb r3, r3
8003504: 2b4e cmp r3, #78 ; 0x4e
8003506: f200 868c bhi.w 8004222 <Display+0xd82>
800350a: a201 add r2, pc, #4 ; (adr r2, 8003510 <Display+0x70>)
800350c: f852 f023 ldr.w pc, [r2, r3, lsl #2]
8003510: 08003743 .word 0x08003743
8003514: 08003c5b .word 0x08003c5b
8003518: 08003d6b .word 0x08003d6b
800351c: 08003d9b .word 0x08003d9b
8003520: 08003dcb .word 0x08003dcb
8003524: 08003dfb .word 0x08003dfb
8003528: 08003e2b .word 0x08003e2b
800352c: 08003e5b .word 0x08003e5b
8003530: 08003ef1 .word 0x08003ef1
8003534: 08003f21 .word 0x08003f21
8003538: 08003f51 .word 0x08003f51
800353c: 08003f81 .word 0x08003f81
8003540: 08003fb1 .word 0x08003fb1
8003544: 08003fe1 .word 0x08003fe1
8003548: 08004011 .word 0x08004011
800354c: 08004041 .word 0x08004041
8003550: 08004071 .word 0x08004071
8003554: 080040a1 .word 0x080040a1
8003558: 080040d1 .word 0x080040d1
800355c: 08004101 .word 0x08004101
8003560: 08004131 .word 0x08004131
8003564: 08004161 .word 0x08004161
8003568: 08004191 .word 0x08004191
800356c: 080041c1 .word 0x080041c1
8003570: 080041f1 .word 0x080041f1
8003574: 08004223 .word 0x08004223
8003578: 08004223 .word 0x08004223
800357c: 08004223 .word 0x08004223
8003580: 08004223 .word 0x08004223
8003584: 08004223 .word 0x08004223
8003588: 0800364d .word 0x0800364d
800358c: 08004223 .word 0x08004223
8003590: 08004223 .word 0x08004223
8003594: 08004223 .word 0x08004223
8003598: 08004223 .word 0x08004223
800359c: 08004223 .word 0x08004223
80035a0: 08004223 .word 0x08004223
80035a4: 08004223 .word 0x08004223
80035a8: 08004223 .word 0x08004223
80035ac: 08004223 .word 0x08004223
80035b0: 08004223 .word 0x08004223
80035b4: 08004223 .word 0x08004223
80035b8: 08004223 .word 0x08004223
80035bc: 08004223 .word 0x08004223
80035c0: 08004223 .word 0x08004223
80035c4: 08004223 .word 0x08004223
80035c8: 08004223 .word 0x08004223
80035cc: 08004223 .word 0x08004223
80035d0: 08004223 .word 0x08004223
80035d4: 08004223 .word 0x08004223
80035d8: 08004223 .word 0x08004223
80035dc: 08004223 .word 0x08004223
80035e0: 08004223 .word 0x08004223
80035e4: 08004223 .word 0x08004223
80035e8: 08004223 .word 0x08004223
80035ec: 08004223 .word 0x08004223
80035f0: 08004223 .word 0x08004223
80035f4: 08004223 .word 0x08004223
80035f8: 08004223 .word 0x08004223
80035fc: 08004223 .word 0x08004223
8003600: 08004223 .word 0x08004223
8003604: 08004223 .word 0x08004223
8003608: 08004223 .word 0x08004223
800360c: 08004223 .word 0x08004223
8003610: 08004223 .word 0x08004223
8003614: 08004223 .word 0x08004223
8003618: 08004223 .word 0x08004223
800361c: 08004223 .word 0x08004223
8003620: 08004223 .word 0x08004223
8003624: 08004223 .word 0x08004223
8003628: 08004223 .word 0x08004223
800362c: 08004223 .word 0x08004223
8003630: 08004223 .word 0x08004223
8003634: 08004223 .word 0x08004223
8003638: 08004223 .word 0x08004223
800363c: 08004223 .word 0x08004223
8003640: 08004223 .word 0x08004223
8003644: 08004223 .word 0x08004223
8003648: 08004223 .word 0x08004223
{
case LOGO:
//*********************************************************
DrawImage(&bmLOGO_NEW, 0, 54);
800364c: 2236 movs r2, #54 ; 0x36
800364e: 2100 movs r1, #0
8003650: 485b ldr r0, [pc, #364] ; (80037c0 <Display+0x320>)
8003652: f7ff fbc9 bl 8002de8 <DrawImage>
timesLOGO++;
8003656: 4b5b ldr r3, [pc, #364] ; (80037c4 <Display+0x324>)
8003658: 681b ldr r3, [r3, #0]
800365a: 3301 adds r3, #1
800365c: 4a59 ldr r2, [pc, #356] ; (80037c4 <Display+0x324>)
800365e: 6013 str r3, [r2, #0]
if(timesLOGO >= 2)
8003660: 4b58 ldr r3, [pc, #352] ; (80037c4 <Display+0x324>)
8003662: 681b ldr r3, [r3, #0]
8003664: 2b01 cmp r3, #1
8003666: f240 85db bls.w 8004220 <Display+0xd80>
{
LCD_SetColors(0xFFFFFFFF, 0);
800366a: 2100 movs r1, #0
800366c: f04f 30ff mov.w r0, #4294967295
8003670: f7fe fdda bl 8002228 <LCD_SetColors>
BSP_LCD_SetFont(&Font12);
8003674: 4854 ldr r0, [pc, #336] ; (80037c8 <Display+0x328>)
8003676: f7fe fe13 bl 80022a0 <BSP_LCD_SetFont>
if(pardata.LANG == RUS)
800367a: 4b54 ldr r3, [pc, #336] ; (80037cc <Display+0x32c>)
800367c: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8003680: b29b uxth r3, r3
8003682: 2b00 cmp r3, #0
8003684: d10c bne.n 80036a0 <Display+0x200>
{
BSP_LCD_DisplayStringAt(165, 195, "<22>141", CENTER_MODE);
8003686: 2301 movs r3, #1
8003688: 4a51 ldr r2, [pc, #324] ; (80037d0 <Display+0x330>)
800368a: 21c3 movs r1, #195 ; 0xc3
800368c: 20a5 movs r0, #165 ; 0xa5
800368e: f7fe fe91 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(165, 206, "<22><><D3><F1><E8><EB><E8><F2><E5> <20><><E7><E0><F0><FF> <20> <20><><ED><E0><EF><F0><FF><E6><E5><ED>", CENTER_MODE);
8003692: 2301 movs r3, #1
8003694: 4a4f ldr r2, [pc, #316] ; (80037d4 <Display+0x334>)
8003696: 21ce movs r1, #206 ; 0xce
8003698: 20a5 movs r0, #165 ; 0xa5
800369a: f7fe fe8b bl 80023b4 <BSP_LCD_DisplayStringAt>
800369e: e005 b.n 80036ac <Display+0x20c>
}
else
BSP_LCD_DisplayStringAt(165, 206, "Amplifier A141", CENTER_MODE);
80036a0: 2301 movs r3, #1
80036a2: 4a4d ldr r2, [pc, #308] ; (80037d8 <Display+0x338>)
80036a4: 21ce movs r1, #206 ; 0xce
80036a6: 20a5 movs r0, #165 ; 0xa5
80036a8: f7fe fe84 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 224, (char *) _VERSION, CENTER_MODE);
80036ac: 2301 movs r3, #1
80036ae: 4a4b ldr r2, [pc, #300] ; (80037dc <Display+0x33c>)
80036b0: 21e0 movs r1, #224 ; 0xe0
80036b2: 20a0 movs r0, #160 ; 0xa0
80036b4: f7fe fe7e bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 4, (char *) _SERIAL_DRAW, CENTER_MODE);
80036b8: 2301 movs r3, #1
80036ba: 4a49 ldr r2, [pc, #292] ; (80037e0 <Display+0x340>)
80036bc: 2104 movs r1, #4
80036be: 20a0 movs r0, #160 ; 0xa0
80036c0: f7fe fe78 bl 80023b4 <BSP_LCD_DisplayStringAt>
if(CORRECTION == false) {
80036c4: 4b47 ldr r3, [pc, #284] ; (80037e4 <Display+0x344>)
80036c6: 781b ldrb r3, [r3, #0]
80036c8: b2db uxtb r3, r3
80036ca: f083 0301 eor.w r3, r3, #1
80036ce: b2db uxtb r3, r3
80036d0: 2b00 cmp r3, #0
80036d2: d005 beq.n 80036e0 <Display+0x240>
BSP_LCD_DisplayStringAt(0, 4, ".", LEFT_MODE);
80036d4: 2303 movs r3, #3
80036d6: 4a44 ldr r2, [pc, #272] ; (80037e8 <Display+0x348>)
80036d8: 2104 movs r1, #4
80036da: 2000 movs r0, #0
80036dc: f7fe fe6a bl 80023b4 <BSP_LCD_DisplayStringAt>
}
DrawSpinner(300, 20);
80036e0: 2114 movs r1, #20
80036e2: f44f 7096 mov.w r0, #300 ; 0x12c
80036e6: f001 f91f bl 8004928 <DrawSpinner>
if(clbr)
80036ea: 4b40 ldr r3, [pc, #256] ; (80037ec <Display+0x34c>)
80036ec: 781b ldrb r3, [r3, #0]
80036ee: b2db uxtb r3, r3
80036f0: 2b00 cmp r3, #0
80036f2: d00b beq.n 800370c <Display+0x26c>
{
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
80036f4: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80036f8: f04f 30ff mov.w r0, #4294967295
80036fc: f7fe fd94 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 18, "<22><><C7><C0><CF><D3> <20><><CA><C0><CB><C8><C1><D0><CE><C2>", CENTER_MODE);
8003700: 2301 movs r3, #1
8003702: 4a3b ldr r2, [pc, #236] ; (80037f0 <Display+0x350>)
8003704: 2112 movs r1, #18
8003706: 20a0 movs r0, #160 ; 0xa0
8003708: f7fe fe54 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
if(ASK_COMPLETE)
800370c: 4b39 ldr r3, [pc, #228] ; (80037f4 <Display+0x354>)
800370e: 781b ldrb r3, [r3, #0]
8003710: b2db uxtb r3, r3
8003712: 2b00 cmp r3, #0
8003714: f000 8584 beq.w 8004220 <Display+0xd80>
{
timesLOGO = 0;
8003718: 4b2a ldr r3, [pc, #168] ; (80037c4 <Display+0x324>)
800371a: 2200 movs r2, #0
800371c: 601a str r2, [r3, #0]
if(clbr)
800371e: 4b33 ldr r3, [pc, #204] ; (80037ec <Display+0x34c>)
8003720: 781b ldrb r3, [r3, #0]
8003722: b2db uxtb r3, r3
8003724: 2b00 cmp r3, #0
8003726: d007 beq.n 8003738 <Display+0x298>
{
menu = CALIBR_00;
8003728: 4b24 ldr r3, [pc, #144] ; (80037bc <Display+0x31c>)
800372a: 2201 movs r2, #1
800372c: 701a strb r2, [r3, #0]
menupos = Ch1;
800372e: 4b32 ldr r3, [pc, #200] ; (80037f8 <Display+0x358>)
8003730: 2200 movs r2, #0
8003732: 701a strb r2, [r3, #0]
}
else
menu = MAIN;
}
}
break;
8003734: f000 bd74 b.w 8004220 <Display+0xd80>
menu = MAIN;
8003738: 4b20 ldr r3, [pc, #128] ; (80037bc <Display+0x31c>)
800373a: 2200 movs r2, #0
800373c: 701a strb r2, [r3, #0]
break;
800373e: f000 bd6f b.w 8004220 <Display+0xd80>
case MAIN:
BSP_LCD_SetFont(&Font12);
8003742: 4821 ldr r0, [pc, #132] ; (80037c8 <Display+0x328>)
8003744: f7fe fdac bl 80022a0 <BSP_LCD_SetFont>
if(CNT_CHANNELS < 5) //todo
8003748: 4b2c ldr r3, [pc, #176] ; (80037fc <Display+0x35c>)
800374a: 681b ldr r3, [r3, #0]
800374c: 2b04 cmp r3, #4
800374e: f200 814e bhi.w 80039ee <Display+0x54e>
{
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8003752: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003756: f04f 30ff mov.w r0, #4294967295
800375a: f7fe fd65 bl 8002228 <LCD_SetColors>
BSP_LCD_FillRect(0, 0, 158, 24);
800375e: 2318 movs r3, #24
8003760: 229e movs r2, #158 ; 0x9e
8003762: 2100 movs r1, #0
8003764: 2000 movs r0, #0
8003766: f7ff f921 bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(0, 120, 158, 24);
800376a: 2318 movs r3, #24
800376c: 229e movs r2, #158 ; 0x9e
800376e: 2178 movs r1, #120 ; 0x78
8003770: 2000 movs r0, #0
8003772: f7ff f91b bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(161, 0, 158, 24);
8003776: 2318 movs r3, #24
8003778: 229e movs r2, #158 ; 0x9e
800377a: 2100 movs r1, #0
800377c: 20a1 movs r0, #161 ; 0xa1
800377e: f7ff f915 bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(161, 120, 158, 24);
8003782: 2318 movs r3, #24
8003784: 229e movs r2, #158 ; 0x9e
8003786: 2178 movs r1, #120 ; 0x78
8003788: 20a1 movs r0, #161 ; 0xa1
800378a: f7ff f90f bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_DrawRect(0, 0, 318, 238);
800378e: 23ee movs r3, #238 ; 0xee
8003790: f44f 729f mov.w r2, #318 ; 0x13e
8003794: 2100 movs r1, #0
8003796: 2000 movs r0, #0
8003798: f7fe ff80 bl 800269c <BSP_LCD_DrawRect>
BSP_LCD_DrawVLine(159, 0, 239);
800379c: 22ef movs r2, #239 ; 0xef
800379e: 2100 movs r1, #0
80037a0: 209f movs r0, #159 ; 0x9f
80037a2: f7fe ff19 bl 80025d8 <BSP_LCD_DrawVLine>
// 1-2 //
for(i = 0; i < 2; i++)
80037a6: 2300 movs r3, #0
80037a8: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
80037ac: e07d b.n 80038aa <Display+0x40a>
80037ae: bf00 nop
80037b0: 2006b1d0 .word 0x2006b1d0
80037b4: 2006b1d4 .word 0x2006b1d4
80037b8: 2006b1cc .word 0x2006b1cc
80037bc: 20020136 .word 0x20020136
80037c0: 08024c78 .word 0x08024c78
80037c4: 2006b1c8 .word 0x2006b1c8
80037c8: 20020000 .word 0x20020000
80037cc: 2006b3f8 .word 0x2006b3f8
80037d0: 0800d08c .word 0x0800d08c
80037d4: 0800d094 .word 0x0800d094
80037d8: 0800d0b4 .word 0x0800d0b4
80037dc: 0800fcb8 .word 0x0800fcb8
80037e0: 2002001c .word 0x2002001c
80037e4: 20020134 .word 0x20020134
80037e8: 0800d0c4 .word 0x0800d0c4
80037ec: 2006b96c .word 0x2006b96c
80037f0: 0800d0c8 .word 0x0800d0c8
80037f4: 2006b1e2 .word 0x2006b1e2
80037f8: 20020010 .word 0x20020010
80037fc: 2006b1c4 .word 0x2006b1c4
{
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
8003800: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003804: 48cb ldr r0, [pc, #812] ; (8003b34 <Display+0x694>)
8003806: f7fe fd0f bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(4, 27 + 120*i, "<22><><C2><D5>:", LEFT_MODE);
800380a: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
800380e: b29b uxth r3, r3
8003810: 461a mov r2, r3
8003812: 0112 lsls r2, r2, #4
8003814: 1ad3 subs r3, r2, r3
8003816: 00db lsls r3, r3, #3
8003818: b29b uxth r3, r3
800381a: 331b adds r3, #27
800381c: b299 uxth r1, r3
800381e: 2303 movs r3, #3
8003820: 4ac5 ldr r2, [pc, #788] ; (8003b38 <Display+0x698>)
8003822: 2004 movs r0, #4
8003824: f7fe fdc6 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(3, 46 + 120*i, "<22><><D4>:", LEFT_MODE);
8003828: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
800382c: b29b uxth r3, r3
800382e: 461a mov r2, r3
8003830: 0112 lsls r2, r2, #4
8003832: 1ad3 subs r3, r2, r3
8003834: 00db lsls r3, r3, #3
8003836: b29b uxth r3, r3
8003838: 332e adds r3, #46 ; 0x2e
800383a: b299 uxth r1, r3
800383c: 2303 movs r3, #3
800383e: 4abf ldr r2, [pc, #764] ; (8003b3c <Display+0x69c>)
8003840: 2003 movs r0, #3
8003842: f7fe fdb7 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(3, 65 + 120*i, "<22><><D4>:", LEFT_MODE);
8003846: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
800384a: b29b uxth r3, r3
800384c: 461a mov r2, r3
800384e: 0112 lsls r2, r2, #4
8003850: 1ad3 subs r3, r2, r3
8003852: 00db lsls r3, r3, #3
8003854: b29b uxth r3, r3
8003856: 3341 adds r3, #65 ; 0x41
8003858: b299 uxth r1, r3
800385a: 2303 movs r3, #3
800385c: 4ab8 ldr r2, [pc, #736] ; (8003b40 <Display+0x6a0>)
800385e: 2003 movs r0, #3
8003860: f7fe fda8 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(4, 84 + 120*i, "<22><>:", LEFT_MODE);
8003864: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003868: b29b uxth r3, r3
800386a: 461a mov r2, r3
800386c: 0112 lsls r2, r2, #4
800386e: 1ad3 subs r3, r2, r3
8003870: 00db lsls r3, r3, #3
8003872: b29b uxth r3, r3
8003874: 3354 adds r3, #84 ; 0x54
8003876: b299 uxth r1, r3
8003878: 2303 movs r3, #3
800387a: 4ab2 ldr r2, [pc, #712] ; (8003b44 <Display+0x6a4>)
800387c: 2004 movs r0, #4
800387e: f7fe fd99 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(4, 103 + 120*i, "<22><>:", LEFT_MODE);
8003882: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003886: b29b uxth r3, r3
8003888: 461a mov r2, r3
800388a: 0112 lsls r2, r2, #4
800388c: 1ad3 subs r3, r2, r3
800388e: 00db lsls r3, r3, #3
8003890: b29b uxth r3, r3
8003892: 3367 adds r3, #103 ; 0x67
8003894: b299 uxth r1, r3
8003896: 2303 movs r3, #3
8003898: 4aab ldr r2, [pc, #684] ; (8003b48 <Display+0x6a8>)
800389a: 2004 movs r0, #4
800389c: f7fe fd8a bl 80023b4 <BSP_LCD_DisplayStringAt>
for(i = 0; i < 2; i++)
80038a0: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
80038a4: 3301 adds r3, #1
80038a6: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
80038aa: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
80038ae: 2b01 cmp r3, #1
80038b0: d9a6 bls.n 8003800 <Display+0x360>
}
// 3-4 //
for(i = 0; i < 2; i++)
80038b2: 2300 movs r3, #0
80038b4: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
80038b8: e054 b.n 8003964 <Display+0x4c4>
{
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
80038ba: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80038be: 489d ldr r0, [pc, #628] ; (8003b34 <Display+0x694>)
80038c0: f7fe fcb2 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(164, 27 + 120*i, "<22><><C2><D5>:", LEFT_MODE);
80038c4: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
80038c8: b29b uxth r3, r3
80038ca: 461a mov r2, r3
80038cc: 0112 lsls r2, r2, #4
80038ce: 1ad3 subs r3, r2, r3
80038d0: 00db lsls r3, r3, #3
80038d2: b29b uxth r3, r3
80038d4: 331b adds r3, #27
80038d6: b299 uxth r1, r3
80038d8: 2303 movs r3, #3
80038da: 4a97 ldr r2, [pc, #604] ; (8003b38 <Display+0x698>)
80038dc: 20a4 movs r0, #164 ; 0xa4
80038de: f7fe fd69 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(163, 46 + 120*i, "<22><><D4>:", LEFT_MODE);
80038e2: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
80038e6: b29b uxth r3, r3
80038e8: 461a mov r2, r3
80038ea: 0112 lsls r2, r2, #4
80038ec: 1ad3 subs r3, r2, r3
80038ee: 00db lsls r3, r3, #3
80038f0: b29b uxth r3, r3
80038f2: 332e adds r3, #46 ; 0x2e
80038f4: b299 uxth r1, r3
80038f6: 2303 movs r3, #3
80038f8: 4a90 ldr r2, [pc, #576] ; (8003b3c <Display+0x69c>)
80038fa: 20a3 movs r0, #163 ; 0xa3
80038fc: f7fe fd5a bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(163, 65 + 120*i, "<22><><D4>:", LEFT_MODE);
8003900: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003904: b29b uxth r3, r3
8003906: 461a mov r2, r3
8003908: 0112 lsls r2, r2, #4
800390a: 1ad3 subs r3, r2, r3
800390c: 00db lsls r3, r3, #3
800390e: b29b uxth r3, r3
8003910: 3341 adds r3, #65 ; 0x41
8003912: b299 uxth r1, r3
8003914: 2303 movs r3, #3
8003916: 4a8a ldr r2, [pc, #552] ; (8003b40 <Display+0x6a0>)
8003918: 20a3 movs r0, #163 ; 0xa3
800391a: f7fe fd4b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(164, 84 + 120*i, "<22><>:", LEFT_MODE);
800391e: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003922: b29b uxth r3, r3
8003924: 461a mov r2, r3
8003926: 0112 lsls r2, r2, #4
8003928: 1ad3 subs r3, r2, r3
800392a: 00db lsls r3, r3, #3
800392c: b29b uxth r3, r3
800392e: 3354 adds r3, #84 ; 0x54
8003930: b299 uxth r1, r3
8003932: 2303 movs r3, #3
8003934: 4a83 ldr r2, [pc, #524] ; (8003b44 <Display+0x6a4>)
8003936: 20a4 movs r0, #164 ; 0xa4
8003938: f7fe fd3c bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(164, 103 + 120*i, "<22><>:", LEFT_MODE);
800393c: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003940: b29b uxth r3, r3
8003942: 461a mov r2, r3
8003944: 0112 lsls r2, r2, #4
8003946: 1ad3 subs r3, r2, r3
8003948: 00db lsls r3, r3, #3
800394a: b29b uxth r3, r3
800394c: 3367 adds r3, #103 ; 0x67
800394e: b299 uxth r1, r3
8003950: 2303 movs r3, #3
8003952: 4a7d ldr r2, [pc, #500] ; (8003b48 <Display+0x6a8>)
8003954: 20a4 movs r0, #164 ; 0xa4
8003956: f7fe fd2d bl 80023b4 <BSP_LCD_DisplayStringAt>
for(i = 0; i < 2; i++)
800395a: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
800395e: 3301 adds r3, #1
8003960: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
8003964: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003968: 2b01 cmp r3, #1
800396a: d9a6 bls.n 80038ba <Display+0x41a>
}
LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_WHITE);
800396c: f04f 31ff mov.w r1, #4294967295
8003970: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8003974: f7fe fc58 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(79, 8, "<22><><CA><C0><CD> 1", CENTER_MODE);
8003978: 2301 movs r3, #1
800397a: 4a74 ldr r2, [pc, #464] ; (8003b4c <Display+0x6ac>)
800397c: 2108 movs r1, #8
800397e: 204f movs r0, #79 ; 0x4f
8003980: f7fe fd18 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(79, 128, "<22><><CA><C0><CD> 2", CENTER_MODE);
8003984: 2301 movs r3, #1
8003986: 4a72 ldr r2, [pc, #456] ; (8003b50 <Display+0x6b0>)
8003988: 2180 movs r1, #128 ; 0x80
800398a: 204f movs r0, #79 ; 0x4f
800398c: f7fe fd12 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(239, 8, "<22><><CA><C0><CD> 3", CENTER_MODE);
8003990: 2301 movs r3, #1
8003992: 4a70 ldr r2, [pc, #448] ; (8003b54 <Display+0x6b4>)
8003994: 2108 movs r1, #8
8003996: 20ef movs r0, #239 ; 0xef
8003998: f7fe fd0c bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(239, 128, "<22><><CA><C0><CD> 4", CENTER_MODE);
800399c: 2301 movs r3, #1
800399e: 4a6e ldr r2, [pc, #440] ; (8003b58 <Display+0x6b8>)
80039a0: 2180 movs r1, #128 ; 0x80
80039a2: 20ef movs r0, #239 ; 0xef
80039a4: f7fe fd06 bl 80023b4 <BSP_LCD_DisplayStringAt>
for(i = 0; i < 4; i++)
80039a8: 2300 movs r3, #0
80039aa: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
80039ae: e018 b.n 80039e2 <Display+0x542>
{
if(MASK_CHANNELS & (1 << i)) {
80039b0: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
80039b4: 2201 movs r2, #1
80039b6: fa02 f303 lsl.w r3, r2, r3
80039ba: 461a mov r2, r3
80039bc: 4b67 ldr r3, [pc, #412] ; (8003b5c <Display+0x6bc>)
80039be: 681b ldr r3, [r3, #0]
80039c0: 4013 ands r3, r2
80039c2: 2b00 cmp r3, #0
80039c4: d008 beq.n 80039d8 <Display+0x538>
DrawChannel_4(i, blk);
80039c6: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
80039ca: b2da uxtb r2, r3
80039cc: 4b64 ldr r3, [pc, #400] ; (8003b60 <Display+0x6c0>)
80039ce: 681b ldr r3, [r3, #0]
80039d0: 4619 mov r1, r3
80039d2: 4610 mov r0, r2
80039d4: f000 ffca bl 800496c <DrawChannel_4>
for(i = 0; i < 4; i++)
80039d8: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
80039dc: 3301 adds r3, #1
80039de: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
80039e2: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
80039e6: 2b03 cmp r3, #3
80039e8: d9e2 bls.n 80039b0 <Display+0x510>
if(MASK_CHANNELS & (1 << i)) {
DrawChannel_8(i, blk);
}
}
}
break;
80039ea: f000 bc1a b.w 8004222 <Display+0xd82>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
80039ee: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80039f2: f04f 30ff mov.w r0, #4294967295
80039f6: f7fe fc17 bl 8002228 <LCD_SetColors>
BSP_LCD_FillRect(0, 0, 158, 12);
80039fa: 230c movs r3, #12
80039fc: 229e movs r2, #158 ; 0x9e
80039fe: 2100 movs r1, #0
8003a00: 2000 movs r0, #0
8003a02: f7fe ffd3 bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(0, 60, 158, 12);
8003a06: 230c movs r3, #12
8003a08: 229e movs r2, #158 ; 0x9e
8003a0a: 213c movs r1, #60 ; 0x3c
8003a0c: 2000 movs r0, #0
8003a0e: f7fe ffcd bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(0, 120, 158, 12);
8003a12: 230c movs r3, #12
8003a14: 229e movs r2, #158 ; 0x9e
8003a16: 2178 movs r1, #120 ; 0x78
8003a18: 2000 movs r0, #0
8003a1a: f7fe ffc7 bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(0, 180, 158, 12);
8003a1e: 230c movs r3, #12
8003a20: 229e movs r2, #158 ; 0x9e
8003a22: 21b4 movs r1, #180 ; 0xb4
8003a24: 2000 movs r0, #0
8003a26: f7fe ffc1 bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(161, 0, 158, 12);
8003a2a: 230c movs r3, #12
8003a2c: 229e movs r2, #158 ; 0x9e
8003a2e: 2100 movs r1, #0
8003a30: 20a1 movs r0, #161 ; 0xa1
8003a32: f7fe ffbb bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(161, 60, 158, 12);
8003a36: 230c movs r3, #12
8003a38: 229e movs r2, #158 ; 0x9e
8003a3a: 213c movs r1, #60 ; 0x3c
8003a3c: 20a1 movs r0, #161 ; 0xa1
8003a3e: f7fe ffb5 bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(161, 120, 158, 12);
8003a42: 230c movs r3, #12
8003a44: 229e movs r2, #158 ; 0x9e
8003a46: 2178 movs r1, #120 ; 0x78
8003a48: 20a1 movs r0, #161 ; 0xa1
8003a4a: f7fe ffaf bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_FillRect(161, 180, 158, 12);
8003a4e: 230c movs r3, #12
8003a50: 229e movs r2, #158 ; 0x9e
8003a52: 21b4 movs r1, #180 ; 0xb4
8003a54: 20a1 movs r0, #161 ; 0xa1
8003a56: f7fe ffa9 bl 80029ac <BSP_LCD_FillRect>
BSP_LCD_DrawRect(0, 0, 318, 238);
8003a5a: 23ee movs r3, #238 ; 0xee
8003a5c: f44f 729f mov.w r2, #318 ; 0x13e
8003a60: 2100 movs r1, #0
8003a62: 2000 movs r0, #0
8003a64: f7fe fe1a bl 800269c <BSP_LCD_DrawRect>
BSP_LCD_DrawVLine(159, 0, 239);
8003a68: 22ef movs r2, #239 ; 0xef
8003a6a: 2100 movs r1, #0
8003a6c: 209f movs r0, #159 ; 0x9f
8003a6e: f7fe fdb3 bl 80025d8 <BSP_LCD_DrawVLine>
for(i = 0; i < 4; i++)
8003a72: 2300 movs r3, #0
8003a74: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
8003a78: e054 b.n 8003b24 <Display+0x684>
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
8003a7a: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003a7e: 482d ldr r0, [pc, #180] ; (8003b34 <Display+0x694>)
8003a80: f7fe fbd2 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(0, 16 + 60*i, "<22><><C2><D5>:", LEFT_MODE);
8003a84: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003a88: b29b uxth r3, r3
8003a8a: 461a mov r2, r3
8003a8c: 0112 lsls r2, r2, #4
8003a8e: 1ad3 subs r3, r2, r3
8003a90: 009b lsls r3, r3, #2
8003a92: b29b uxth r3, r3
8003a94: 3310 adds r3, #16
8003a96: b299 uxth r1, r3
8003a98: 2303 movs r3, #3
8003a9a: 4a27 ldr r2, [pc, #156] ; (8003b38 <Display+0x698>)
8003a9c: 2000 movs r0, #0
8003a9e: f7fe fc89 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(0, 31 + 60*i, "<22><><D4>:", LEFT_MODE);
8003aa2: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003aa6: b29b uxth r3, r3
8003aa8: 461a mov r2, r3
8003aaa: 0112 lsls r2, r2, #4
8003aac: 1ad3 subs r3, r2, r3
8003aae: 009b lsls r3, r3, #2
8003ab0: b29b uxth r3, r3
8003ab2: 331f adds r3, #31
8003ab4: b299 uxth r1, r3
8003ab6: 2303 movs r3, #3
8003ab8: 4a20 ldr r2, [pc, #128] ; (8003b3c <Display+0x69c>)
8003aba: 2000 movs r0, #0
8003abc: f7fe fc7a bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(80, 31 + 60*i, "<22><><D4>:", LEFT_MODE);
8003ac0: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003ac4: b29b uxth r3, r3
8003ac6: 461a mov r2, r3
8003ac8: 0112 lsls r2, r2, #4
8003aca: 1ad3 subs r3, r2, r3
8003acc: 009b lsls r3, r3, #2
8003ace: b29b uxth r3, r3
8003ad0: 331f adds r3, #31
8003ad2: b299 uxth r1, r3
8003ad4: 2303 movs r3, #3
8003ad6: 4a1a ldr r2, [pc, #104] ; (8003b40 <Display+0x6a0>)
8003ad8: 2050 movs r0, #80 ; 0x50
8003ada: f7fe fc6b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(0, 46 + 60*i, "<22><>:", LEFT_MODE);
8003ade: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003ae2: b29b uxth r3, r3
8003ae4: 461a mov r2, r3
8003ae6: 0112 lsls r2, r2, #4
8003ae8: 1ad3 subs r3, r2, r3
8003aea: 009b lsls r3, r3, #2
8003aec: b29b uxth r3, r3
8003aee: 332e adds r3, #46 ; 0x2e
8003af0: b299 uxth r1, r3
8003af2: 2303 movs r3, #3
8003af4: 4a13 ldr r2, [pc, #76] ; (8003b44 <Display+0x6a4>)
8003af6: 2000 movs r0, #0
8003af8: f7fe fc5c bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(80, 46 + 60*i, "<22><>:", LEFT_MODE);
8003afc: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003b00: b29b uxth r3, r3
8003b02: 461a mov r2, r3
8003b04: 0112 lsls r2, r2, #4
8003b06: 1ad3 subs r3, r2, r3
8003b08: 009b lsls r3, r3, #2
8003b0a: b29b uxth r3, r3
8003b0c: 332e adds r3, #46 ; 0x2e
8003b0e: b299 uxth r1, r3
8003b10: 2303 movs r3, #3
8003b12: 4a0d ldr r2, [pc, #52] ; (8003b48 <Display+0x6a8>)
8003b14: 2050 movs r0, #80 ; 0x50
8003b16: f7fe fc4d bl 80023b4 <BSP_LCD_DisplayStringAt>
for(i = 0; i < 4; i++)
8003b1a: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003b1e: 3301 adds r3, #1
8003b20: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
8003b24: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003b28: 2b03 cmp r3, #3
8003b2a: d9a6 bls.n 8003a7a <Display+0x5da>
for(i = 0; i < 4; i++)
8003b2c: 2300 movs r3, #0
8003b2e: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
8003b32: e06c b.n 8003c0e <Display+0x76e>
8003b34: ffd3d3d3 .word 0xffd3d3d3
8003b38: 0800d0dc .word 0x0800d0dc
8003b3c: 0800d0e4 .word 0x0800d0e4
8003b40: 0800d0ec .word 0x0800d0ec
8003b44: 0800d0f4 .word 0x0800d0f4
8003b48: 0800d0f8 .word 0x0800d0f8
8003b4c: 0800d0fc .word 0x0800d0fc
8003b50: 0800d104 .word 0x0800d104
8003b54: 0800d10c .word 0x0800d10c
8003b58: 0800d114 .word 0x0800d114
8003b5c: 20020028 .word 0x20020028
8003b60: 2006b1d0 .word 0x2006b1d0
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
8003b64: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003b68: 48c8 ldr r0, [pc, #800] ; (8003e8c <Display+0x9ec>)
8003b6a: f7fe fb5d bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 16 + 60*i, "<22><><C2><D5>:", LEFT_MODE);
8003b6e: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003b72: b29b uxth r3, r3
8003b74: 461a mov r2, r3
8003b76: 0112 lsls r2, r2, #4
8003b78: 1ad3 subs r3, r2, r3
8003b7a: 009b lsls r3, r3, #2
8003b7c: b29b uxth r3, r3
8003b7e: 3310 adds r3, #16
8003b80: b299 uxth r1, r3
8003b82: 2303 movs r3, #3
8003b84: 4ac2 ldr r2, [pc, #776] ; (8003e90 <Display+0x9f0>)
8003b86: 20a0 movs r0, #160 ; 0xa0
8003b88: f7fe fc14 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 31 + 60*i, "<22><><D4>:", LEFT_MODE);
8003b8c: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003b90: b29b uxth r3, r3
8003b92: 461a mov r2, r3
8003b94: 0112 lsls r2, r2, #4
8003b96: 1ad3 subs r3, r2, r3
8003b98: 009b lsls r3, r3, #2
8003b9a: b29b uxth r3, r3
8003b9c: 331f adds r3, #31
8003b9e: b299 uxth r1, r3
8003ba0: 2303 movs r3, #3
8003ba2: 4abc ldr r2, [pc, #752] ; (8003e94 <Display+0x9f4>)
8003ba4: 20a0 movs r0, #160 ; 0xa0
8003ba6: f7fe fc05 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(240, 31 + 60*i, "<22><><D4>:", LEFT_MODE);
8003baa: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003bae: b29b uxth r3, r3
8003bb0: 461a mov r2, r3
8003bb2: 0112 lsls r2, r2, #4
8003bb4: 1ad3 subs r3, r2, r3
8003bb6: 009b lsls r3, r3, #2
8003bb8: b29b uxth r3, r3
8003bba: 331f adds r3, #31
8003bbc: b299 uxth r1, r3
8003bbe: 2303 movs r3, #3
8003bc0: 4ab5 ldr r2, [pc, #724] ; (8003e98 <Display+0x9f8>)
8003bc2: 20f0 movs r0, #240 ; 0xf0
8003bc4: f7fe fbf6 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 46 + 60*i, "<22><>:", LEFT_MODE);
8003bc8: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003bcc: b29b uxth r3, r3
8003bce: 461a mov r2, r3
8003bd0: 0112 lsls r2, r2, #4
8003bd2: 1ad3 subs r3, r2, r3
8003bd4: 009b lsls r3, r3, #2
8003bd6: b29b uxth r3, r3
8003bd8: 332e adds r3, #46 ; 0x2e
8003bda: b299 uxth r1, r3
8003bdc: 2303 movs r3, #3
8003bde: 4aaf ldr r2, [pc, #700] ; (8003e9c <Display+0x9fc>)
8003be0: 20a0 movs r0, #160 ; 0xa0
8003be2: f7fe fbe7 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(240, 46 + 60*i, "<22><>:", LEFT_MODE);
8003be6: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003bea: b29b uxth r3, r3
8003bec: 461a mov r2, r3
8003bee: 0112 lsls r2, r2, #4
8003bf0: 1ad3 subs r3, r2, r3
8003bf2: 009b lsls r3, r3, #2
8003bf4: b29b uxth r3, r3
8003bf6: 332e adds r3, #46 ; 0x2e
8003bf8: b299 uxth r1, r3
8003bfa: 2303 movs r3, #3
8003bfc: 4aa8 ldr r2, [pc, #672] ; (8003ea0 <Display+0xa00>)
8003bfe: 20f0 movs r0, #240 ; 0xf0
8003c00: f7fe fbd8 bl 80023b4 <BSP_LCD_DisplayStringAt>
for(i = 0; i < 4; i++)
8003c04: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003c08: 3301 adds r3, #1
8003c0a: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
8003c0e: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003c12: 2b03 cmp r3, #3
8003c14: d9a6 bls.n 8003b64 <Display+0x6c4>
for(i = 0; i < 8; i++)
8003c16: 2300 movs r3, #0
8003c18: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
8003c1c: e018 b.n 8003c50 <Display+0x7b0>
if(MASK_CHANNELS & (1 << i)) {
8003c1e: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003c22: 2201 movs r2, #1
8003c24: fa02 f303 lsl.w r3, r2, r3
8003c28: 461a mov r2, r3
8003c2a: 4b9e ldr r3, [pc, #632] ; (8003ea4 <Display+0xa04>)
8003c2c: 681b ldr r3, [r3, #0]
8003c2e: 4013 ands r3, r2
8003c30: 2b00 cmp r3, #0
8003c32: d008 beq.n 8003c46 <Display+0x7a6>
DrawChannel_8(i, blk);
8003c34: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003c38: b2da uxtb r2, r3
8003c3a: 4b9b ldr r3, [pc, #620] ; (8003ea8 <Display+0xa08>)
8003c3c: 681b ldr r3, [r3, #0]
8003c3e: 4619 mov r1, r3
8003c40: 4610 mov r0, r2
8003c42: f002 fa35 bl 80060b0 <DrawChannel_8>
for(i = 0; i < 8; i++)
8003c46: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003c4a: 3301 adds r3, #1
8003c4c: f8c7 33f0 str.w r3, [r7, #1008] ; 0x3f0
8003c50: f8d7 33f0 ldr.w r3, [r7, #1008] ; 0x3f0
8003c54: 2b07 cmp r3, #7
8003c56: d9e2 bls.n 8003c1e <Display+0x77e>
break;
8003c58: e2e3 b.n 8004222 <Display+0xd82>
case CALIBR_00:
BSP_LCD_SetFont(&Font12);
8003c5a: 4894 ldr r0, [pc, #592] ; (8003eac <Display+0xa0c>)
8003c5c: f7fe fb20 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003c60: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003c64: f06f 00ff mvn.w r0, #255 ; 0xff
8003c68: f7fe fade bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 24, "<22><><C2><FB><E1><E5><F0><E8> <20><><EA><E0><ED> <20><><E4> <20><><EA><E0><EB><E8><E1><F0><EE><E2>:", CENTER_MODE);
8003c6c: 2301 movs r3, #1
8003c6e: 4a90 ldr r2, [pc, #576] ; (8003eb0 <Display+0xa10>)
8003c70: 2118 movs r1, #24
8003c72: 20a0 movs r0, #160 ; 0xa0
8003c74: f7fe fb9e bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos != Ch1)
8003c78: 4b8e ldr r3, [pc, #568] ; (8003eb4 <Display+0xa14>)
8003c7a: 781b ldrb r3, [r3, #0]
8003c7c: b2db uxtb r3, r3
8003c7e: 2b00 cmp r3, #0
8003c80: d006 beq.n 8003c90 <Display+0x7f0>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8003c82: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003c86: f04f 30ff mov.w r0, #4294967295
8003c8a: f7fe facd bl 8002228 <LCD_SetColors>
8003c8e: e005 b.n 8003c9c <Display+0x7fc>
else LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8003c90: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003c94: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8003c98: f7fe fac6 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 48+64, "<22><><CA><C0><CD> 1", CENTER_MODE);
8003c9c: 2301 movs r3, #1
8003c9e: 4a86 ldr r2, [pc, #536] ; (8003eb8 <Display+0xa18>)
8003ca0: 2170 movs r1, #112 ; 0x70
8003ca2: 20a0 movs r0, #160 ; 0xa0
8003ca4: f7fe fb86 bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos != Ch2)
8003ca8: 4b82 ldr r3, [pc, #520] ; (8003eb4 <Display+0xa14>)
8003caa: 781b ldrb r3, [r3, #0]
8003cac: b2db uxtb r3, r3
8003cae: 2b01 cmp r3, #1
8003cb0: d006 beq.n 8003cc0 <Display+0x820>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8003cb2: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003cb6: f04f 30ff mov.w r0, #4294967295
8003cba: f7fe fab5 bl 8002228 <LCD_SetColors>
8003cbe: e005 b.n 8003ccc <Display+0x82c>
else LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8003cc0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003cc4: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8003cc8: f7fe faae bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 72+64, "<22><><CA><C0><CD> 2", CENTER_MODE);
8003ccc: 2301 movs r3, #1
8003cce: 4a7b ldr r2, [pc, #492] ; (8003ebc <Display+0xa1c>)
8003cd0: 2188 movs r1, #136 ; 0x88
8003cd2: 20a0 movs r0, #160 ; 0xa0
8003cd4: f7fe fb6e bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos != Ch3)
8003cd8: 4b76 ldr r3, [pc, #472] ; (8003eb4 <Display+0xa14>)
8003cda: 781b ldrb r3, [r3, #0]
8003cdc: b2db uxtb r3, r3
8003cde: 2b02 cmp r3, #2
8003ce0: d006 beq.n 8003cf0 <Display+0x850>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8003ce2: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003ce6: f04f 30ff mov.w r0, #4294967295
8003cea: f7fe fa9d bl 8002228 <LCD_SetColors>
8003cee: e005 b.n 8003cfc <Display+0x85c>
else LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8003cf0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003cf4: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8003cf8: f7fe fa96 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 96+64, "<22><><CA><C0><CD> 3", CENTER_MODE);
8003cfc: 2301 movs r3, #1
8003cfe: 4a70 ldr r2, [pc, #448] ; (8003ec0 <Display+0xa20>)
8003d00: 21a0 movs r1, #160 ; 0xa0
8003d02: 20a0 movs r0, #160 ; 0xa0
8003d04: f7fe fb56 bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos != Ch4)
8003d08: 4b6a ldr r3, [pc, #424] ; (8003eb4 <Display+0xa14>)
8003d0a: 781b ldrb r3, [r3, #0]
8003d0c: b2db uxtb r3, r3
8003d0e: 2b03 cmp r3, #3
8003d10: d006 beq.n 8003d20 <Display+0x880>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8003d12: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003d16: f04f 30ff mov.w r0, #4294967295
8003d1a: f7fe fa85 bl 8002228 <LCD_SetColors>
8003d1e: e005 b.n 8003d2c <Display+0x88c>
else LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8003d20: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003d24: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8003d28: f7fe fa7e bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 120+64, "<22><><CA><C0><CD> 4", CENTER_MODE);
8003d2c: 2301 movs r3, #1
8003d2e: 4a65 ldr r2, [pc, #404] ; (8003ec4 <Display+0xa24>)
8003d30: 21b8 movs r1, #184 ; 0xb8
8003d32: 20a0 movs r0, #160 ; 0xa0
8003d34: f7fe fb3e bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos != Ch5)
8003d38: 4b5e ldr r3, [pc, #376] ; (8003eb4 <Display+0xa14>)
8003d3a: 781b ldrb r3, [r3, #0]
8003d3c: b2db uxtb r3, r3
8003d3e: 2b04 cmp r3, #4
8003d40: d006 beq.n 8003d50 <Display+0x8b0>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8003d42: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003d46: f04f 30ff mov.w r0, #4294967295
8003d4a: f7fe fa6d bl 8002228 <LCD_SetColors>
8003d4e: e005 b.n 8003d5c <Display+0x8bc>
else LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8003d50: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003d54: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8003d58: f7fe fa66 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 144+64, "<22><><C2><DB><D5>", CENTER_MODE);
8003d5c: 2301 movs r3, #1
8003d5e: 4a5a ldr r2, [pc, #360] ; (8003ec8 <Display+0xa28>)
8003d60: 21d0 movs r1, #208 ; 0xd0
8003d62: 20a0 movs r0, #160 ; 0xa0
8003d64: f7fe fb26 bl 80023b4 <BSP_LCD_DisplayStringAt>
break;
8003d68: e25b b.n 8004222 <Display+0xd82>
case CALIBR_0: // [CHARGE x1] + KU_1
BSP_LCD_SetFont(&Font12);
8003d6a: 4850 ldr r0, [pc, #320] ; (8003eac <Display+0xa0c>)
8003d6c: f7fe fa98 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003d70: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003d74: f06f 00ff mvn.w r0, #255 ; 0xff
8003d78: f7fe fa56 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x0.1]:", CENTER_MODE);
8003d7c: 2301 movs r3, #1
8003d7e: 4a53 ldr r2, [pc, #332] ; (8003ecc <Display+0xa2c>)
8003d80: 210a movs r1, #10
8003d82: 20a0 movs r0, #160 ; 0xa0
8003d84: f7fe fb16 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 5000<30><30>", CENTER_MODE);
8003d88: 2301 movs r3, #1
8003d8a: 4a51 ldr r2, [pc, #324] ; (8003ed0 <Display+0xa30>)
8003d8c: 2118 movs r1, #24
8003d8e: 20a0 movs r0, #160 ; 0xa0
8003d90: f7fe fb10 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003d94: f003 f8b8 bl 8006f08 <DrawButtons>
break;
8003d98: e243 b.n 8004222 <Display+0xd82>
case CALIBR_1: // CHARGE x1 + [KU_2]
BSP_LCD_SetFont(&Font12);
8003d9a: 4844 ldr r0, [pc, #272] ; (8003eac <Display+0xa0c>)
8003d9c: f7fe fa80 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003da0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003da4: f06f 00ff mvn.w r0, #255 ; 0xff
8003da8: f7fe fa3e bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x0.2]:", CENTER_MODE);
8003dac: 2301 movs r3, #1
8003dae: 4a49 ldr r2, [pc, #292] ; (8003ed4 <Display+0xa34>)
8003db0: 210a movs r1, #10
8003db2: 20a0 movs r0, #160 ; 0xa0
8003db4: f7fe fafe bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 5000<30><30>", CENTER_MODE);
8003db8: 2301 movs r3, #1
8003dba: 4a45 ldr r2, [pc, #276] ; (8003ed0 <Display+0xa30>)
8003dbc: 2118 movs r1, #24
8003dbe: 20a0 movs r0, #160 ; 0xa0
8003dc0: f7fe faf8 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003dc4: f003 f8a0 bl 8006f08 <DrawButtons>
break;
8003dc8: e22b b.n 8004222 <Display+0xd82>
case CALIBR_2: // CHARGE x1 + [KU_5]
BSP_LCD_SetFont(&Font12);
8003dca: 4838 ldr r0, [pc, #224] ; (8003eac <Display+0xa0c>)
8003dcc: f7fe fa68 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003dd0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003dd4: f06f 00ff mvn.w r0, #255 ; 0xff
8003dd8: f7fe fa26 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x0.5]:", CENTER_MODE);
8003ddc: 2301 movs r3, #1
8003dde: 4a3e ldr r2, [pc, #248] ; (8003ed8 <Display+0xa38>)
8003de0: 210a movs r1, #10
8003de2: 20a0 movs r0, #160 ; 0xa0
8003de4: f7fe fae6 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 5000<30><30>", CENTER_MODE);
8003de8: 2301 movs r3, #1
8003dea: 4a39 ldr r2, [pc, #228] ; (8003ed0 <Display+0xa30>)
8003dec: 2118 movs r1, #24
8003dee: 20a0 movs r0, #160 ; 0xa0
8003df0: f7fe fae0 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003df4: f003 f888 bl 8006f08 <DrawButtons>
break;
8003df8: e213 b.n 8004222 <Display+0xd82>
case CALIBR_3: // CHARGE x1 + [KU_10]
BSP_LCD_SetFont(&Font12);
8003dfa: 482c ldr r0, [pc, #176] ; (8003eac <Display+0xa0c>)
8003dfc: f7fe fa50 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003e00: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003e04: f06f 00ff mvn.w r0, #255 ; 0xff
8003e08: f7fe fa0e bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x1]:", CENTER_MODE);
8003e0c: 2301 movs r3, #1
8003e0e: 4a33 ldr r2, [pc, #204] ; (8003edc <Display+0xa3c>)
8003e10: 210a movs r1, #10
8003e12: 20a0 movs r0, #160 ; 0xa0
8003e14: f7fe face bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 5000<30><30>", CENTER_MODE);
8003e18: 2301 movs r3, #1
8003e1a: 4a2d ldr r2, [pc, #180] ; (8003ed0 <Display+0xa30>)
8003e1c: 2118 movs r1, #24
8003e1e: 20a0 movs r0, #160 ; 0xa0
8003e20: f7fe fac8 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003e24: f003 f870 bl 8006f08 <DrawButtons>
break;
8003e28: e1fb b.n 8004222 <Display+0xd82>
case CALIBR_4: // CHARGE x1 + [KU_x10]
BSP_LCD_SetFont(&Font12);
8003e2a: 4820 ldr r0, [pc, #128] ; (8003eac <Display+0xa0c>)
8003e2c: f7fe fa38 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003e30: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003e34: f06f 00ff mvn.w r0, #255 ; 0xff
8003e38: f7fe f9f6 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x2]:", CENTER_MODE);
8003e3c: 2301 movs r3, #1
8003e3e: 4a28 ldr r2, [pc, #160] ; (8003ee0 <Display+0xa40>)
8003e40: 210a movs r1, #10
8003e42: 20a0 movs r0, #160 ; 0xa0
8003e44: f7fe fab6 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 2500<30><30>", CENTER_MODE);
8003e48: 2301 movs r3, #1
8003e4a: 4a26 ldr r2, [pc, #152] ; (8003ee4 <Display+0xa44>)
8003e4c: 2118 movs r1, #24
8003e4e: 20a0 movs r0, #160 ; 0xa0
8003e50: f7fe fab0 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003e54: f003 f858 bl 8006f08 <DrawButtons>
break;
8003e58: e1e3 b.n 8004222 <Display+0xd82>
case CALIBR_5: // [CHARGE x10] + KU_1
BSP_LCD_SetFont(&Font12);
8003e5a: 4814 ldr r0, [pc, #80] ; (8003eac <Display+0xa0c>)
8003e5c: f7fe fa20 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003e60: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003e64: f06f 00ff mvn.w r0, #255 ; 0xff
8003e68: f7fe f9de bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x5]:", CENTER_MODE);
8003e6c: 2301 movs r3, #1
8003e6e: 4a1e ldr r2, [pc, #120] ; (8003ee8 <Display+0xa48>)
8003e70: 210a movs r1, #10
8003e72: 20a0 movs r0, #160 ; 0xa0
8003e74: f7fe fa9e bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 1000<30><30>", CENTER_MODE);
8003e78: 2301 movs r3, #1
8003e7a: 4a1c ldr r2, [pc, #112] ; (8003eec <Display+0xa4c>)
8003e7c: 2118 movs r1, #24
8003e7e: 20a0 movs r0, #160 ; 0xa0
8003e80: f7fe fa98 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003e84: f003 f840 bl 8006f08 <DrawButtons>
break;
8003e88: e1cb b.n 8004222 <Display+0xd82>
8003e8a: bf00 nop
8003e8c: ffd3d3d3 .word 0xffd3d3d3
8003e90: 0800d0dc .word 0x0800d0dc
8003e94: 0800d0e4 .word 0x0800d0e4
8003e98: 0800d0ec .word 0x0800d0ec
8003e9c: 0800d0f4 .word 0x0800d0f4
8003ea0: 0800d0f8 .word 0x0800d0f8
8003ea4: 20020028 .word 0x20020028
8003ea8: 2006b1d0 .word 0x2006b1d0
8003eac: 20020000 .word 0x20020000
8003eb0: 0800d11c .word 0x0800d11c
8003eb4: 20020010 .word 0x20020010
8003eb8: 0800d0fc .word 0x0800d0fc
8003ebc: 0800d104 .word 0x0800d104
8003ec0: 0800d10c .word 0x0800d10c
8003ec4: 0800d114 .word 0x0800d114
8003ec8: 0800d13c .word 0x0800d13c
8003ecc: 0800d144 .word 0x0800d144
8003ed0: 0800d15c .word 0x0800d15c
8003ed4: 0800d174 .word 0x0800d174
8003ed8: 0800d18c .word 0x0800d18c
8003edc: 0800d1a4 .word 0x0800d1a4
8003ee0: 0800d1bc .word 0x0800d1bc
8003ee4: 0800d1d4 .word 0x0800d1d4
8003ee8: 0800d1ec .word 0x0800d1ec
8003eec: 0800d204 .word 0x0800d204
case CALIBR_6: // [CHARGE x0.1] + KU_1
BSP_LCD_SetFont(&Font12);
8003ef0: 48d3 ldr r0, [pc, #844] ; (8004240 <Display+0xda0>)
8003ef2: f7fe f9d5 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003ef6: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003efa: f06f 00ff mvn.w r0, #255 ; 0xff
8003efe: f7fe f993 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x10]:", CENTER_MODE);
8003f02: 2301 movs r3, #1
8003f04: 4acf ldr r2, [pc, #828] ; (8004244 <Display+0xda4>)
8003f06: 210a movs r1, #10
8003f08: 20a0 movs r0, #160 ; 0xa0
8003f0a: f7fe fa53 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 500<30><30>", CENTER_MODE);
8003f0e: 2301 movs r3, #1
8003f10: 4acd ldr r2, [pc, #820] ; (8004248 <Display+0xda8>)
8003f12: 2118 movs r1, #24
8003f14: 20a0 movs r0, #160 ; 0xa0
8003f16: f7fe fa4d bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003f1a: f002 fff5 bl 8006f08 <DrawButtons>
break;
8003f1e: e180 b.n 8004222 <Display+0xd82>
case CALIBR_7: // [ICP x1] + KU_1
BSP_LCD_SetFont(&Font12);
8003f20: 48c7 ldr r0, [pc, #796] ; (8004240 <Display+0xda0>)
8003f22: f7fe f9bd bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003f26: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003f2a: f06f 00ff mvn.w r0, #255 ; 0xff
8003f2e: f7fe f97b bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x20]:", CENTER_MODE);
8003f32: 2301 movs r3, #1
8003f34: 4ac5 ldr r2, [pc, #788] ; (800424c <Display+0xdac>)
8003f36: 210a movs r1, #10
8003f38: 20a0 movs r0, #160 ; 0xa0
8003f3a: f7fe fa3b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 250<35><30>", CENTER_MODE);
8003f3e: 2301 movs r3, #1
8003f40: 4ac3 ldr r2, [pc, #780] ; (8004250 <Display+0xdb0>)
8003f42: 2118 movs r1, #24
8003f44: 20a0 movs r0, #160 ; 0xa0
8003f46: f7fe fa35 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003f4a: f002 ffdd bl 8006f08 <DrawButtons>
break;
8003f4e: e168 b.n 8004222 <Display+0xd82>
case CALIBR_8: // [ICP x10] + KU_1
BSP_LCD_SetFont(&Font12);
8003f50: 48bb ldr r0, [pc, #748] ; (8004240 <Display+0xda0>)
8003f52: f7fe f9a5 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003f56: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003f5a: f06f 00ff mvn.w r0, #255 ; 0xff
8003f5e: f7fe f963 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x50]:", CENTER_MODE);
8003f62: 2301 movs r3, #1
8003f64: 4abb ldr r2, [pc, #748] ; (8004254 <Display+0xdb4>)
8003f66: 210a movs r1, #10
8003f68: 20a0 movs r0, #160 ; 0xa0
8003f6a: f7fe fa23 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 100<30><30>", CENTER_MODE);
8003f6e: 2301 movs r3, #1
8003f70: 4ab9 ldr r2, [pc, #740] ; (8004258 <Display+0xdb8>)
8003f72: 2118 movs r1, #24
8003f74: 20a0 movs r0, #160 ; 0xa0
8003f76: f7fe fa1d bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003f7a: f002 ffc5 bl 8006f08 <DrawButtons>
break;
8003f7e: e150 b.n 8004222 <Display+0xd82>
case CALIBR_9: // [CHARGE x10 + KU_2 + KU_x10]
BSP_LCD_SetFont(&Font12);
8003f80: 48af ldr r0, [pc, #700] ; (8004240 <Display+0xda0>)
8003f82: f7fe f98d bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003f86: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003f8a: f06f 00ff mvn.w r0, #255 ; 0xff
8003f8e: f7fe f94b bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x100]:", CENTER_MODE);
8003f92: 2301 movs r3, #1
8003f94: 4ab1 ldr r2, [pc, #708] ; (800425c <Display+0xdbc>)
8003f96: 210a movs r1, #10
8003f98: 20a0 movs r0, #160 ; 0xa0
8003f9a: f7fe fa0b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 50<35><30>", CENTER_MODE);
8003f9e: 2301 movs r3, #1
8003fa0: 4aaf ldr r2, [pc, #700] ; (8004260 <Display+0xdc0>)
8003fa2: 2118 movs r1, #24
8003fa4: 20a0 movs r0, #160 ; 0xa0
8003fa6: f7fe fa05 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003faa: f002 ffad bl 8006f08 <DrawButtons>
break;
8003fae: e138 b.n 8004222 <Display+0xd82>
case CALIBR_10: // [CHARGE x10 + KU_5 + KU_x10]
BSP_LCD_SetFont(&Font12);
8003fb0: 48a3 ldr r0, [pc, #652] ; (8004240 <Display+0xda0>)
8003fb2: f7fe f975 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003fb6: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003fba: f06f 00ff mvn.w r0, #255 ; 0xff
8003fbe: f7fe f933 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x200]:", CENTER_MODE);
8003fc2: 2301 movs r3, #1
8003fc4: 4aa7 ldr r2, [pc, #668] ; (8004264 <Display+0xdc4>)
8003fc6: 210a movs r1, #10
8003fc8: 20a0 movs r0, #160 ; 0xa0
8003fca: f7fe f9f3 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 25<32><35>", CENTER_MODE);
8003fce: 2301 movs r3, #1
8003fd0: 4aa5 ldr r2, [pc, #660] ; (8004268 <Display+0xdc8>)
8003fd2: 2118 movs r1, #24
8003fd4: 20a0 movs r0, #160 ; 0xa0
8003fd6: f7fe f9ed bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
8003fda: f002 ff95 bl 8006f08 <DrawButtons>
break;
8003fde: e120 b.n 8004222 <Display+0xd82>
case CALIBR_11: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
8003fe0: 4897 ldr r0, [pc, #604] ; (8004240 <Display+0xda0>)
8003fe2: f7fe f95d bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8003fe6: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8003fea: f06f 00ff mvn.w r0, #255 ; 0xff
8003fee: f7fe f91b bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x500]:", CENTER_MODE);
8003ff2: 2301 movs r3, #1
8003ff4: 4a9d ldr r2, [pc, #628] ; (800426c <Display+0xdcc>)
8003ff6: 210a movs r1, #10
8003ff8: 20a0 movs r0, #160 ; 0xa0
8003ffa: f7fe f9db bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 10<31><30>", CENTER_MODE);
8003ffe: 2301 movs r3, #1
8004000: 4a9b ldr r2, [pc, #620] ; (8004270 <Display+0xdd0>)
8004002: 2118 movs r1, #24
8004004: 20a0 movs r0, #160 ; 0xa0
8004006: f7fe f9d5 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
800400a: f002 ff7d bl 8006f08 <DrawButtons>
break;
800400e: e108 b.n 8004222 <Display+0xd82>
case CALIBR_12: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
8004010: 488b ldr r0, [pc, #556] ; (8004240 <Display+0xda0>)
8004012: f7fe f945 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8004016: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800401a: f06f 00ff mvn.w r0, #255 ; 0xff
800401e: f7fe f903 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [<5B><><C7><C0><D0>x1000]:", CENTER_MODE);
8004022: 2301 movs r3, #1
8004024: 4a93 ldr r2, [pc, #588] ; (8004274 <Display+0xdd4>)
8004026: 210a movs r1, #10
8004028: 20a0 movs r0, #160 ; 0xa0
800402a: f7fe f9c3 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 5<><35>", CENTER_MODE);
800402e: 2301 movs r3, #1
8004030: 4a91 ldr r2, [pc, #580] ; (8004278 <Display+0xdd8>)
8004032: 2118 movs r1, #24
8004034: 20a0 movs r0, #160 ; 0xa0
8004036: f7fe f9bd bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
800403a: f002 ff65 bl 8006f08 <DrawButtons>
break;
800403e: e0f0 b.n 8004222 <Display+0xd82>
case CALIBR_13: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
8004040: 487f ldr r0, [pc, #508] ; (8004240 <Display+0xda0>)
8004042: f7fe f92d bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8004046: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800404a: f06f 00ff mvn.w r0, #255 ; 0xff
800404e: f7fe f8eb bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx1]:", CENTER_MODE);
8004052: 2301 movs r3, #1
8004054: 4a89 ldr r2, [pc, #548] ; (800427c <Display+0xddc>)
8004056: 210a movs r1, #10
8004058: 20a0 movs r0, #160 ; 0xa0
800405a: f7fe f9ab bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 5000<30><30>", CENTER_MODE);
800405e: 2301 movs r3, #1
8004060: 4a87 ldr r2, [pc, #540] ; (8004280 <Display+0xde0>)
8004062: 2118 movs r1, #24
8004064: 20a0 movs r0, #160 ; 0xa0
8004066: f7fe f9a5 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
800406a: f002 ff4d bl 8006f08 <DrawButtons>
break;
800406e: e0d8 b.n 8004222 <Display+0xd82>
case CALIBR_14: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
8004070: 4873 ldr r0, [pc, #460] ; (8004240 <Display+0xda0>)
8004072: f7fe f915 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8004076: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800407a: f06f 00ff mvn.w r0, #255 ; 0xff
800407e: f7fe f8d3 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx2]:", CENTER_MODE);
8004082: 2301 movs r3, #1
8004084: 4a7f ldr r2, [pc, #508] ; (8004284 <Display+0xde4>)
8004086: 210a movs r1, #10
8004088: 20a0 movs r0, #160 ; 0xa0
800408a: f7fe f993 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 2500<30><30>", CENTER_MODE);
800408e: 2301 movs r3, #1
8004090: 4a7d ldr r2, [pc, #500] ; (8004288 <Display+0xde8>)
8004092: 2118 movs r1, #24
8004094: 20a0 movs r0, #160 ; 0xa0
8004096: f7fe f98d bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
800409a: f002 ff35 bl 8006f08 <DrawButtons>
break;
800409e: e0c0 b.n 8004222 <Display+0xd82>
case CALIBR_15: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
80040a0: 4867 ldr r0, [pc, #412] ; (8004240 <Display+0xda0>)
80040a2: f7fe f8fd bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
80040a6: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80040aa: f06f 00ff mvn.w r0, #255 ; 0xff
80040ae: f7fe f8bb bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx5]:", CENTER_MODE);
80040b2: 2301 movs r3, #1
80040b4: 4a75 ldr r2, [pc, #468] ; (800428c <Display+0xdec>)
80040b6: 210a movs r1, #10
80040b8: 20a0 movs r0, #160 ; 0xa0
80040ba: f7fe f97b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 1000<30><30>", CENTER_MODE);
80040be: 2301 movs r3, #1
80040c0: 4a73 ldr r2, [pc, #460] ; (8004290 <Display+0xdf0>)
80040c2: 2118 movs r1, #24
80040c4: 20a0 movs r0, #160 ; 0xa0
80040c6: f7fe f975 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
80040ca: f002 ff1d bl 8006f08 <DrawButtons>
break;
80040ce: e0a8 b.n 8004222 <Display+0xd82>
case CALIBR_16: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
80040d0: 485b ldr r0, [pc, #364] ; (8004240 <Display+0xda0>)
80040d2: f7fe f8e5 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
80040d6: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80040da: f06f 00ff mvn.w r0, #255 ; 0xff
80040de: f7fe f8a3 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx10]:", CENTER_MODE);
80040e2: 2301 movs r3, #1
80040e4: 4a6b ldr r2, [pc, #428] ; (8004294 <Display+0xdf4>)
80040e6: 210a movs r1, #10
80040e8: 20a0 movs r0, #160 ; 0xa0
80040ea: f7fe f963 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 500<30><30>", CENTER_MODE);
80040ee: 2301 movs r3, #1
80040f0: 4a55 ldr r2, [pc, #340] ; (8004248 <Display+0xda8>)
80040f2: 2118 movs r1, #24
80040f4: 20a0 movs r0, #160 ; 0xa0
80040f6: f7fe f95d bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
80040fa: f002 ff05 bl 8006f08 <DrawButtons>
break;
80040fe: e090 b.n 8004222 <Display+0xd82>
case CALIBR_17: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
8004100: 484f ldr r0, [pc, #316] ; (8004240 <Display+0xda0>)
8004102: f7fe f8cd bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8004106: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800410a: f06f 00ff mvn.w r0, #255 ; 0xff
800410e: f7fe f88b bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx20]:", CENTER_MODE);
8004112: 2301 movs r3, #1
8004114: 4a60 ldr r2, [pc, #384] ; (8004298 <Display+0xdf8>)
8004116: 210a movs r1, #10
8004118: 20a0 movs r0, #160 ; 0xa0
800411a: f7fe f94b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 250<35><30>", CENTER_MODE);
800411e: 2301 movs r3, #1
8004120: 4a4b ldr r2, [pc, #300] ; (8004250 <Display+0xdb0>)
8004122: 2118 movs r1, #24
8004124: 20a0 movs r0, #160 ; 0xa0
8004126: f7fe f945 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
800412a: f002 feed bl 8006f08 <DrawButtons>
break;
800412e: e078 b.n 8004222 <Display+0xd82>
case CALIBR_18: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
8004130: 4843 ldr r0, [pc, #268] ; (8004240 <Display+0xda0>)
8004132: f7fe f8b5 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8004136: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800413a: f06f 00ff mvn.w r0, #255 ; 0xff
800413e: f7fe f873 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx50]:", CENTER_MODE);
8004142: 2301 movs r3, #1
8004144: 4a55 ldr r2, [pc, #340] ; (800429c <Display+0xdfc>)
8004146: 210a movs r1, #10
8004148: 20a0 movs r0, #160 ; 0xa0
800414a: f7fe f933 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 100<30><30>", CENTER_MODE);
800414e: 2301 movs r3, #1
8004150: 4a41 ldr r2, [pc, #260] ; (8004258 <Display+0xdb8>)
8004152: 2118 movs r1, #24
8004154: 20a0 movs r0, #160 ; 0xa0
8004156: f7fe f92d bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
800415a: f002 fed5 bl 8006f08 <DrawButtons>
break;
800415e: e060 b.n 8004222 <Display+0xd82>
case CALIBR_19: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
8004160: 4837 ldr r0, [pc, #220] ; (8004240 <Display+0xda0>)
8004162: f7fe f89d bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8004166: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800416a: f06f 00ff mvn.w r0, #255 ; 0xff
800416e: f7fe f85b bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx100]:", CENTER_MODE);
8004172: 2301 movs r3, #1
8004174: 4a4a ldr r2, [pc, #296] ; (80042a0 <Display+0xe00>)
8004176: 210a movs r1, #10
8004178: 20a0 movs r0, #160 ; 0xa0
800417a: f7fe f91b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 50<35><30>", CENTER_MODE);
800417e: 2301 movs r3, #1
8004180: 4a37 ldr r2, [pc, #220] ; (8004260 <Display+0xdc0>)
8004182: 2118 movs r1, #24
8004184: 20a0 movs r0, #160 ; 0xa0
8004186: f7fe f915 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
800418a: f002 febd bl 8006f08 <DrawButtons>
break;
800418e: e048 b.n 8004222 <Display+0xd82>
case CALIBR_20: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
8004190: 482b ldr r0, [pc, #172] ; (8004240 <Display+0xda0>)
8004192: f7fe f885 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
8004196: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800419a: f06f 00ff mvn.w r0, #255 ; 0xff
800419e: f7fe f843 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx200]:", CENTER_MODE);
80041a2: 2301 movs r3, #1
80041a4: 4a3f ldr r2, [pc, #252] ; (80042a4 <Display+0xe04>)
80041a6: 210a movs r1, #10
80041a8: 20a0 movs r0, #160 ; 0xa0
80041aa: f7fe f903 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 25<32><35>", CENTER_MODE);
80041ae: 2301 movs r3, #1
80041b0: 4a2d ldr r2, [pc, #180] ; (8004268 <Display+0xdc8>)
80041b2: 2118 movs r1, #24
80041b4: 20a0 movs r0, #160 ; 0xa0
80041b6: f7fe f8fd bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
80041ba: f002 fea5 bl 8006f08 <DrawButtons>
break;
80041be: e030 b.n 8004222 <Display+0xd82>
case CALIBR_21: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
80041c0: 481f ldr r0, [pc, #124] ; (8004240 <Display+0xda0>)
80041c2: f7fe f86d bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
80041c6: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80041ca: f06f 00ff mvn.w r0, #255 ; 0xff
80041ce: f7fe f82b bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx500]:", CENTER_MODE);
80041d2: 2301 movs r3, #1
80041d4: 4a34 ldr r2, [pc, #208] ; (80042a8 <Display+0xe08>)
80041d6: 210a movs r1, #10
80041d8: 20a0 movs r0, #160 ; 0xa0
80041da: f7fe f8eb bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 10<31><30>", CENTER_MODE);
80041de: 2301 movs r3, #1
80041e0: 4a23 ldr r2, [pc, #140] ; (8004270 <Display+0xdd0>)
80041e2: 2118 movs r1, #24
80041e4: 20a0 movs r0, #160 ; 0xa0
80041e6: f7fe f8e5 bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
80041ea: f002 fe8d bl 8006f08 <DrawButtons>
break;
80041ee: e018 b.n 8004222 <Display+0xd82>
case CALIBR_22: // [CHARGE x10 + KU_10 + KU_x10]
BSP_LCD_SetFont(&Font12);
80041f0: 4813 ldr r0, [pc, #76] ; (8004240 <Display+0xda0>)
80041f2: f7fe f855 bl 80022a0 <BSP_LCD_SetFont>
LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_BLACK);
80041f6: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80041fa: f06f 00ff mvn.w r0, #255 ; 0xff
80041fe: f7fe f813 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 10, "<22><><CA><EE>e<F0><65><EA><F6> [IEPEx1000]:", CENTER_MODE);
8004202: 2301 movs r3, #1
8004204: 4a29 ldr r2, [pc, #164] ; (80042ac <Display+0xe0c>)
8004206: 210a movs r1, #10
8004208: 20a0 movs r0, #160 ; 0xa0
800420a: f7fe f8d3 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(160, 24, "<22><><D3><F1><F2><E0><ED><EE><E2><E8> Uin = 5<><35>", CENTER_MODE);
800420e: 2301 movs r3, #1
8004210: 4a19 ldr r2, [pc, #100] ; (8004278 <Display+0xdd8>)
8004212: 2118 movs r1, #24
8004214: 20a0 movs r0, #160 ; 0xa0
8004216: f7fe f8cd bl 80023b4 <BSP_LCD_DisplayStringAt>
DrawButtons();
800421a: f002 fe75 bl 8006f08 <DrawButtons>
break;
800421e: e000 b.n 8004222 <Display+0xd82>
break;
8004220: bf00 nop
Redrawing = false;
8004222: 4b23 ldr r3, [pc, #140] ; (80042b0 <Display+0xe10>)
8004224: 2200 movs r2, #0
8004226: 701a strb r2, [r3, #0]
RefreshScreen = true;
8004228: 4b22 ldr r3, [pc, #136] ; (80042b4 <Display+0xe14>)
800422a: 2201 movs r2, #1
800422c: 701a strb r2, [r3, #0]
HAL_LTDC_ProgramLineEvent(&hLtdcHandler, 0);
800422e: 2100 movs r1, #0
8004230: 4821 ldr r0, [pc, #132] ; (80042b8 <Display+0xe18>)
8004232: f005 fc27 bl 8009a84 <HAL_LTDC_ProgramLineEvent>
//**************************************************************************************************************
//**************************************************************************************************************
}
8004236: bf00 nop
8004238: f507 6780 add.w r7, r7, #1024 ; 0x400
800423c: 46bd mov sp, r7
800423e: bd80 pop {r7, pc}
8004240: 20020000 .word 0x20020000
8004244: 0800d21c .word 0x0800d21c
8004248: 0800d234 .word 0x0800d234
800424c: 0800d24c .word 0x0800d24c
8004250: 0800d264 .word 0x0800d264
8004254: 0800d27c .word 0x0800d27c
8004258: 0800d294 .word 0x0800d294
800425c: 0800d2ac .word 0x0800d2ac
8004260: 0800d2c4 .word 0x0800d2c4
8004264: 0800d2dc .word 0x0800d2dc
8004268: 0800d2f4 .word 0x0800d2f4
800426c: 0800d30c .word 0x0800d30c
8004270: 0800d324 .word 0x0800d324
8004274: 0800d33c .word 0x0800d33c
8004278: 0800d354 .word 0x0800d354
800427c: 0800d36c .word 0x0800d36c
8004280: 0800d15c .word 0x0800d15c
8004284: 0800d380 .word 0x0800d380
8004288: 0800d1d4 .word 0x0800d1d4
800428c: 0800d394 .word 0x0800d394
8004290: 0800d204 .word 0x0800d204
8004294: 0800d3a8 .word 0x0800d3a8
8004298: 0800d3c0 .word 0x0800d3c0
800429c: 0800d3d8 .word 0x0800d3d8
80042a0: 0800d3f0 .word 0x0800d3f0
80042a4: 0800d408 .word 0x0800d408
80042a8: 0800d420 .word 0x0800d420
80042ac: 0800d438 .word 0x0800d438
80042b0: 2006b1cc .word 0x2006b1cc
80042b4: 2006b1bc .word 0x2006b1bc
80042b8: 2006b8c4 .word 0x2006b8c4
080042bc <DrawMySpinner>:
void DrawMySpinner(uint16_t x, uint16_t y) //
{
80042bc: b580 push {r7, lr}
80042be: b082 sub sp, #8
80042c0: af00 add r7, sp, #0
80042c2: 4603 mov r3, r0
80042c4: 460a mov r2, r1
80042c6: 80fb strh r3, [r7, #6]
80042c8: 4613 mov r3, r2
80042ca: 80bb strh r3, [r7, #4]
static uint32_t rotate = 0;
switch(rotate)
80042cc: 4b98 ldr r3, [pc, #608] ; (8004530 <DrawMySpinner+0x274>)
80042ce: 681b ldr r3, [r3, #0]
80042d0: 2b07 cmp r3, #7
80042d2: f200 8311 bhi.w 80048f8 <DrawMySpinner+0x63c>
80042d6: a201 add r2, pc, #4 ; (adr r2, 80042dc <DrawMySpinner+0x20>)
80042d8: f852 f023 ldr.w pc, [r2, r3, lsl #2]
80042dc: 080042fd .word 0x080042fd
80042e0: 080043b9 .word 0x080043b9
80042e4: 08004475 .word 0x08004475
80042e8: 08004541 .word 0x08004541
80042ec: 080045fd .word 0x080045fd
80042f0: 080046b9 .word 0x080046b9
80042f4: 08004775 .word 0x08004775
80042f8: 0800483d .word 0x0800483d
{
case 0:
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
80042fc: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004300: f04f 30ff mov.w r0, #4294967295
8004304: f7fd ff90 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 0, y + 10, 3);//2
8004308: 88bb ldrh r3, [r7, #4]
800430a: 330a adds r3, #10
800430c: b299 uxth r1, r3
800430e: 88fb ldrh r3, [r7, #6]
8004310: 2203 movs r2, #3
8004312: 4618 mov r0, r3
8004314: f7fe fbc4 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
8004318: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800431c: 4885 ldr r0, [pc, #532] ; (8004534 <DrawMySpinner+0x278>)
800431e: f7fd ff83 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 7, y + 7, 3);//1
8004322: 88fb ldrh r3, [r7, #6]
8004324: 3307 adds r3, #7
8004326: b298 uxth r0, r3
8004328: 88bb ldrh r3, [r7, #4]
800432a: 3307 adds r3, #7
800432c: b29b uxth r3, r3
800432e: 2203 movs r2, #3
8004330: 4619 mov r1, r3
8004332: f7fe fbb5 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
8004336: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800433a: 487f ldr r0, [pc, #508] ; (8004538 <DrawMySpinner+0x27c>)
800433c: f7fd ff74 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 10, y + 0, 3);//0
8004340: 88fb ldrh r3, [r7, #6]
8004342: 330a adds r3, #10
8004344: b29b uxth r3, r3
8004346: 88b9 ldrh r1, [r7, #4]
8004348: 2203 movs r2, #3
800434a: 4618 mov r0, r3
800434c: f7fe fba8 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK);
8004350: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004354: 4879 ldr r0, [pc, #484] ; (800453c <DrawMySpinner+0x280>)
8004356: f7fd ff67 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 7, y + 7, 3);//3
800435a: 88fb ldrh r3, [r7, #6]
800435c: 3b07 subs r3, #7
800435e: b298 uxth r0, r3
8004360: 88bb ldrh r3, [r7, #4]
8004362: 3307 adds r3, #7
8004364: b29b uxth r3, r3
8004366: 2203 movs r2, #3
8004368: 4619 mov r1, r3
800436a: f7fe fb99 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 10, y + 0, 3);//4
800436e: 88fb ldrh r3, [r7, #6]
8004370: 3b0a subs r3, #10
8004372: b29b uxth r3, r3
8004374: 88b9 ldrh r1, [r7, #4]
8004376: 2203 movs r2, #3
8004378: 4618 mov r0, r3
800437a: f7fe fb91 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 7, y - 7, 3);//5
800437e: 88fb ldrh r3, [r7, #6]
8004380: 3b07 subs r3, #7
8004382: b298 uxth r0, r3
8004384: 88bb ldrh r3, [r7, #4]
8004386: 3b07 subs r3, #7
8004388: b29b uxth r3, r3
800438a: 2203 movs r2, #3
800438c: 4619 mov r1, r3
800438e: f7fe fb87 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 0, y - 10, 3);//6
8004392: 88bb ldrh r3, [r7, #4]
8004394: 3b0a subs r3, #10
8004396: b299 uxth r1, r3
8004398: 88fb ldrh r3, [r7, #6]
800439a: 2203 movs r2, #3
800439c: 4618 mov r0, r3
800439e: f7fe fb7f bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 7, y - 7, 3);//7
80043a2: 88fb ldrh r3, [r7, #6]
80043a4: 3307 adds r3, #7
80043a6: b298 uxth r0, r3
80043a8: 88bb ldrh r3, [r7, #4]
80043aa: 3b07 subs r3, #7
80043ac: b29b uxth r3, r3
80043ae: 2203 movs r2, #3
80043b0: 4619 mov r1, r3
80043b2: f7fe fb75 bl 8002aa0 <BSP_LCD_FillCircle>
break;
80043b6: e29f b.n 80048f8 <DrawMySpinner+0x63c>
case 1:
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
80043b8: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80043bc: f04f 30ff mov.w r0, #4294967295
80043c0: f7fd ff32 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 7, y + 7, 3);//3
80043c4: 88fb ldrh r3, [r7, #6]
80043c6: 3b07 subs r3, #7
80043c8: b298 uxth r0, r3
80043ca: 88bb ldrh r3, [r7, #4]
80043cc: 3307 adds r3, #7
80043ce: b29b uxth r3, r3
80043d0: 2203 movs r2, #3
80043d2: 4619 mov r1, r3
80043d4: f7fe fb64 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
80043d8: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80043dc: 4855 ldr r0, [pc, #340] ; (8004534 <DrawMySpinner+0x278>)
80043de: f7fd ff23 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 0, y + 10, 3);//2
80043e2: 88bb ldrh r3, [r7, #4]
80043e4: 330a adds r3, #10
80043e6: b299 uxth r1, r3
80043e8: 88fb ldrh r3, [r7, #6]
80043ea: 2203 movs r2, #3
80043ec: 4618 mov r0, r3
80043ee: f7fe fb57 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
80043f2: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80043f6: 4850 ldr r0, [pc, #320] ; (8004538 <DrawMySpinner+0x27c>)
80043f8: f7fd ff16 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 7, y + 7, 3);//1
80043fc: 88fb ldrh r3, [r7, #6]
80043fe: 3307 adds r3, #7
8004400: b298 uxth r0, r3
8004402: 88bb ldrh r3, [r7, #4]
8004404: 3307 adds r3, #7
8004406: b29b uxth r3, r3
8004408: 2203 movs r2, #3
800440a: 4619 mov r1, r3
800440c: f7fe fb48 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK);
8004410: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004414: 4849 ldr r0, [pc, #292] ; (800453c <DrawMySpinner+0x280>)
8004416: f7fd ff07 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 10, y + 0, 3);//4
800441a: 88fb ldrh r3, [r7, #6]
800441c: 3b0a subs r3, #10
800441e: b29b uxth r3, r3
8004420: 88b9 ldrh r1, [r7, #4]
8004422: 2203 movs r2, #3
8004424: 4618 mov r0, r3
8004426: f7fe fb3b bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 7, y - 7, 3);//5
800442a: 88fb ldrh r3, [r7, #6]
800442c: 3b07 subs r3, #7
800442e: b298 uxth r0, r3
8004430: 88bb ldrh r3, [r7, #4]
8004432: 3b07 subs r3, #7
8004434: b29b uxth r3, r3
8004436: 2203 movs r2, #3
8004438: 4619 mov r1, r3
800443a: f7fe fb31 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 0, y - 10, 3);//6
800443e: 88bb ldrh r3, [r7, #4]
8004440: 3b0a subs r3, #10
8004442: b299 uxth r1, r3
8004444: 88fb ldrh r3, [r7, #6]
8004446: 2203 movs r2, #3
8004448: 4618 mov r0, r3
800444a: f7fe fb29 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 7, y - 7, 3);//7
800444e: 88fb ldrh r3, [r7, #6]
8004450: 3307 adds r3, #7
8004452: b298 uxth r0, r3
8004454: 88bb ldrh r3, [r7, #4]
8004456: 3b07 subs r3, #7
8004458: b29b uxth r3, r3
800445a: 2203 movs r2, #3
800445c: 4619 mov r1, r3
800445e: f7fe fb1f bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 10, y + 0, 3);//0
8004462: 88fb ldrh r3, [r7, #6]
8004464: 330a adds r3, #10
8004466: b29b uxth r3, r3
8004468: 88b9 ldrh r1, [r7, #4]
800446a: 2203 movs r2, #3
800446c: 4618 mov r0, r3
800446e: f7fe fb17 bl 8002aa0 <BSP_LCD_FillCircle>
break;
8004472: e241 b.n 80048f8 <DrawMySpinner+0x63c>
case 2:
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8004474: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004478: f04f 30ff mov.w r0, #4294967295
800447c: f7fd fed4 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 10, y + 0, 3);//4
8004480: 88fb ldrh r3, [r7, #6]
8004482: 3b0a subs r3, #10
8004484: b29b uxth r3, r3
8004486: 88b9 ldrh r1, [r7, #4]
8004488: 2203 movs r2, #3
800448a: 4618 mov r0, r3
800448c: f7fe fb08 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
8004490: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004494: 4827 ldr r0, [pc, #156] ; (8004534 <DrawMySpinner+0x278>)
8004496: f7fd fec7 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 7, y + 7, 3);//3
800449a: 88fb ldrh r3, [r7, #6]
800449c: 3b07 subs r3, #7
800449e: b298 uxth r0, r3
80044a0: 88bb ldrh r3, [r7, #4]
80044a2: 3307 adds r3, #7
80044a4: b29b uxth r3, r3
80044a6: 2203 movs r2, #3
80044a8: 4619 mov r1, r3
80044aa: f7fe faf9 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
80044ae: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80044b2: 4821 ldr r0, [pc, #132] ; (8004538 <DrawMySpinner+0x27c>)
80044b4: f7fd feb8 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 0, y + 10, 3);//2
80044b8: 88bb ldrh r3, [r7, #4]
80044ba: 330a adds r3, #10
80044bc: b299 uxth r1, r3
80044be: 88fb ldrh r3, [r7, #6]
80044c0: 2203 movs r2, #3
80044c2: 4618 mov r0, r3
80044c4: f7fe faec bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK);
80044c8: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80044cc: 481b ldr r0, [pc, #108] ; (800453c <DrawMySpinner+0x280>)
80044ce: f7fd feab bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 7, y - 7, 3);//5
80044d2: 88fb ldrh r3, [r7, #6]
80044d4: 3b07 subs r3, #7
80044d6: b298 uxth r0, r3
80044d8: 88bb ldrh r3, [r7, #4]
80044da: 3b07 subs r3, #7
80044dc: b29b uxth r3, r3
80044de: 2203 movs r2, #3
80044e0: 4619 mov r1, r3
80044e2: f7fe fadd bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 0, y - 10, 3);//6
80044e6: 88bb ldrh r3, [r7, #4]
80044e8: 3b0a subs r3, #10
80044ea: b299 uxth r1, r3
80044ec: 88fb ldrh r3, [r7, #6]
80044ee: 2203 movs r2, #3
80044f0: 4618 mov r0, r3
80044f2: f7fe fad5 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 7, y - 7, 3);//7
80044f6: 88fb ldrh r3, [r7, #6]
80044f8: 3307 adds r3, #7
80044fa: b298 uxth r0, r3
80044fc: 88bb ldrh r3, [r7, #4]
80044fe: 3b07 subs r3, #7
8004500: b29b uxth r3, r3
8004502: 2203 movs r2, #3
8004504: 4619 mov r1, r3
8004506: f7fe facb bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 10, y + 0, 3);//0
800450a: 88fb ldrh r3, [r7, #6]
800450c: 330a adds r3, #10
800450e: b29b uxth r3, r3
8004510: 88b9 ldrh r1, [r7, #4]
8004512: 2203 movs r2, #3
8004514: 4618 mov r0, r3
8004516: f7fe fac3 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 7, y + 7, 3);//1
800451a: 88fb ldrh r3, [r7, #6]
800451c: 3307 adds r3, #7
800451e: b298 uxth r0, r3
8004520: 88bb ldrh r3, [r7, #4]
8004522: 3307 adds r3, #7
8004524: b29b uxth r3, r3
8004526: 2203 movs r2, #3
8004528: 4619 mov r1, r3
800452a: f7fe fab9 bl 8002aa0 <BSP_LCD_FillCircle>
break;
800452e: e1e3 b.n 80048f8 <DrawMySpinner+0x63c>
8004530: 2006b1d8 .word 0x2006b1d8
8004534: ffd3d3d3 .word 0xffd3d3d3
8004538: ff808080 .word 0xff808080
800453c: ff404040 .word 0xff404040
case 3:
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8004540: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004544: f04f 30ff mov.w r0, #4294967295
8004548: f7fd fe6e bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 7, y - 7, 3);//5
800454c: 88fb ldrh r3, [r7, #6]
800454e: 3b07 subs r3, #7
8004550: b298 uxth r0, r3
8004552: 88bb ldrh r3, [r7, #4]
8004554: 3b07 subs r3, #7
8004556: b29b uxth r3, r3
8004558: 2203 movs r2, #3
800455a: 4619 mov r1, r3
800455c: f7fe faa0 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
8004560: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004564: 48b2 ldr r0, [pc, #712] ; (8004830 <DrawMySpinner+0x574>)
8004566: f7fd fe5f bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 10, y + 0, 3);//4
800456a: 88fb ldrh r3, [r7, #6]
800456c: 3b0a subs r3, #10
800456e: b29b uxth r3, r3
8004570: 88b9 ldrh r1, [r7, #4]
8004572: 2203 movs r2, #3
8004574: 4618 mov r0, r3
8004576: f7fe fa93 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
800457a: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800457e: 48ad ldr r0, [pc, #692] ; (8004834 <DrawMySpinner+0x578>)
8004580: f7fd fe52 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 7, y + 7, 3);//3
8004584: 88fb ldrh r3, [r7, #6]
8004586: 3b07 subs r3, #7
8004588: b298 uxth r0, r3
800458a: 88bb ldrh r3, [r7, #4]
800458c: 3307 adds r3, #7
800458e: b29b uxth r3, r3
8004590: 2203 movs r2, #3
8004592: 4619 mov r1, r3
8004594: f7fe fa84 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK);
8004598: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800459c: 48a6 ldr r0, [pc, #664] ; (8004838 <DrawMySpinner+0x57c>)
800459e: f7fd fe43 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 0, y - 10, 3);//6
80045a2: 88bb ldrh r3, [r7, #4]
80045a4: 3b0a subs r3, #10
80045a6: b299 uxth r1, r3
80045a8: 88fb ldrh r3, [r7, #6]
80045aa: 2203 movs r2, #3
80045ac: 4618 mov r0, r3
80045ae: f7fe fa77 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 7, y - 7, 3);//7
80045b2: 88fb ldrh r3, [r7, #6]
80045b4: 3307 adds r3, #7
80045b6: b298 uxth r0, r3
80045b8: 88bb ldrh r3, [r7, #4]
80045ba: 3b07 subs r3, #7
80045bc: b29b uxth r3, r3
80045be: 2203 movs r2, #3
80045c0: 4619 mov r1, r3
80045c2: f7fe fa6d bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 10, y + 0, 3);//0
80045c6: 88fb ldrh r3, [r7, #6]
80045c8: 330a adds r3, #10
80045ca: b29b uxth r3, r3
80045cc: 88b9 ldrh r1, [r7, #4]
80045ce: 2203 movs r2, #3
80045d0: 4618 mov r0, r3
80045d2: f7fe fa65 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 7, y + 7, 3);//1
80045d6: 88fb ldrh r3, [r7, #6]
80045d8: 3307 adds r3, #7
80045da: b298 uxth r0, r3
80045dc: 88bb ldrh r3, [r7, #4]
80045de: 3307 adds r3, #7
80045e0: b29b uxth r3, r3
80045e2: 2203 movs r2, #3
80045e4: 4619 mov r1, r3
80045e6: f7fe fa5b bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 0, y + 10, 3);//2
80045ea: 88bb ldrh r3, [r7, #4]
80045ec: 330a adds r3, #10
80045ee: b299 uxth r1, r3
80045f0: 88fb ldrh r3, [r7, #6]
80045f2: 2203 movs r2, #3
80045f4: 4618 mov r0, r3
80045f6: f7fe fa53 bl 8002aa0 <BSP_LCD_FillCircle>
break;
80045fa: e17d b.n 80048f8 <DrawMySpinner+0x63c>
case 4:
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
80045fc: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004600: f04f 30ff mov.w r0, #4294967295
8004604: f7fd fe10 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 0, y - 10, 3);//6
8004608: 88bb ldrh r3, [r7, #4]
800460a: 3b0a subs r3, #10
800460c: b299 uxth r1, r3
800460e: 88fb ldrh r3, [r7, #6]
8004610: 2203 movs r2, #3
8004612: 4618 mov r0, r3
8004614: f7fe fa44 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
8004618: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800461c: 4884 ldr r0, [pc, #528] ; (8004830 <DrawMySpinner+0x574>)
800461e: f7fd fe03 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 7, y - 7, 3);//5
8004622: 88fb ldrh r3, [r7, #6]
8004624: 3b07 subs r3, #7
8004626: b298 uxth r0, r3
8004628: 88bb ldrh r3, [r7, #4]
800462a: 3b07 subs r3, #7
800462c: b29b uxth r3, r3
800462e: 2203 movs r2, #3
8004630: 4619 mov r1, r3
8004632: f7fe fa35 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
8004636: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800463a: 487e ldr r0, [pc, #504] ; (8004834 <DrawMySpinner+0x578>)
800463c: f7fd fdf4 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 10, y + 0, 3);//4
8004640: 88fb ldrh r3, [r7, #6]
8004642: 3b0a subs r3, #10
8004644: b29b uxth r3, r3
8004646: 88b9 ldrh r1, [r7, #4]
8004648: 2203 movs r2, #3
800464a: 4618 mov r0, r3
800464c: f7fe fa28 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK);
8004650: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004654: 4878 ldr r0, [pc, #480] ; (8004838 <DrawMySpinner+0x57c>)
8004656: f7fd fde7 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 7, y - 7, 3);//7
800465a: 88fb ldrh r3, [r7, #6]
800465c: 3307 adds r3, #7
800465e: b298 uxth r0, r3
8004660: 88bb ldrh r3, [r7, #4]
8004662: 3b07 subs r3, #7
8004664: b29b uxth r3, r3
8004666: 2203 movs r2, #3
8004668: 4619 mov r1, r3
800466a: f7fe fa19 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 10, y + 0, 3);//0
800466e: 88fb ldrh r3, [r7, #6]
8004670: 330a adds r3, #10
8004672: b29b uxth r3, r3
8004674: 88b9 ldrh r1, [r7, #4]
8004676: 2203 movs r2, #3
8004678: 4618 mov r0, r3
800467a: f7fe fa11 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 7, y + 7, 3);//1
800467e: 88fb ldrh r3, [r7, #6]
8004680: 3307 adds r3, #7
8004682: b298 uxth r0, r3
8004684: 88bb ldrh r3, [r7, #4]
8004686: 3307 adds r3, #7
8004688: b29b uxth r3, r3
800468a: 2203 movs r2, #3
800468c: 4619 mov r1, r3
800468e: f7fe fa07 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 0, y + 10, 3);//2
8004692: 88bb ldrh r3, [r7, #4]
8004694: 330a adds r3, #10
8004696: b299 uxth r1, r3
8004698: 88fb ldrh r3, [r7, #6]
800469a: 2203 movs r2, #3
800469c: 4618 mov r0, r3
800469e: f7fe f9ff bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 7, y + 7, 3);//3
80046a2: 88fb ldrh r3, [r7, #6]
80046a4: 3b07 subs r3, #7
80046a6: b298 uxth r0, r3
80046a8: 88bb ldrh r3, [r7, #4]
80046aa: 3307 adds r3, #7
80046ac: b29b uxth r3, r3
80046ae: 2203 movs r2, #3
80046b0: 4619 mov r1, r3
80046b2: f7fe f9f5 bl 8002aa0 <BSP_LCD_FillCircle>
break;
80046b6: e11f b.n 80048f8 <DrawMySpinner+0x63c>
case 5:
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
80046b8: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80046bc: f04f 30ff mov.w r0, #4294967295
80046c0: f7fd fdb2 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 7, y - 7, 3);//7
80046c4: 88fb ldrh r3, [r7, #6]
80046c6: 3307 adds r3, #7
80046c8: b298 uxth r0, r3
80046ca: 88bb ldrh r3, [r7, #4]
80046cc: 3b07 subs r3, #7
80046ce: b29b uxth r3, r3
80046d0: 2203 movs r2, #3
80046d2: 4619 mov r1, r3
80046d4: f7fe f9e4 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
80046d8: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80046dc: 4854 ldr r0, [pc, #336] ; (8004830 <DrawMySpinner+0x574>)
80046de: f7fd fda3 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 0, y - 10, 3);//6
80046e2: 88bb ldrh r3, [r7, #4]
80046e4: 3b0a subs r3, #10
80046e6: b299 uxth r1, r3
80046e8: 88fb ldrh r3, [r7, #6]
80046ea: 2203 movs r2, #3
80046ec: 4618 mov r0, r3
80046ee: f7fe f9d7 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
80046f2: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80046f6: 484f ldr r0, [pc, #316] ; (8004834 <DrawMySpinner+0x578>)
80046f8: f7fd fd96 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x - 7, y - 7, 3);//5
80046fc: 88fb ldrh r3, [r7, #6]
80046fe: 3b07 subs r3, #7
8004700: b298 uxth r0, r3
8004702: 88bb ldrh r3, [r7, #4]
8004704: 3b07 subs r3, #7
8004706: b29b uxth r3, r3
8004708: 2203 movs r2, #3
800470a: 4619 mov r1, r3
800470c: f7fe f9c8 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK);
8004710: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004714: 4848 ldr r0, [pc, #288] ; (8004838 <DrawMySpinner+0x57c>)
8004716: f7fd fd87 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 10, y + 0, 3);//0
800471a: 88fb ldrh r3, [r7, #6]
800471c: 330a adds r3, #10
800471e: b29b uxth r3, r3
8004720: 88b9 ldrh r1, [r7, #4]
8004722: 2203 movs r2, #3
8004724: 4618 mov r0, r3
8004726: f7fe f9bb bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 7, y + 7, 3);//1
800472a: 88fb ldrh r3, [r7, #6]
800472c: 3307 adds r3, #7
800472e: b298 uxth r0, r3
8004730: 88bb ldrh r3, [r7, #4]
8004732: 3307 adds r3, #7
8004734: b29b uxth r3, r3
8004736: 2203 movs r2, #3
8004738: 4619 mov r1, r3
800473a: f7fe f9b1 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 0, y + 10, 3);//2
800473e: 88bb ldrh r3, [r7, #4]
8004740: 330a adds r3, #10
8004742: b299 uxth r1, r3
8004744: 88fb ldrh r3, [r7, #6]
8004746: 2203 movs r2, #3
8004748: 4618 mov r0, r3
800474a: f7fe f9a9 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 7, y + 7, 3);//3
800474e: 88fb ldrh r3, [r7, #6]
8004750: 3b07 subs r3, #7
8004752: b298 uxth r0, r3
8004754: 88bb ldrh r3, [r7, #4]
8004756: 3307 adds r3, #7
8004758: b29b uxth r3, r3
800475a: 2203 movs r2, #3
800475c: 4619 mov r1, r3
800475e: f7fe f99f bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 10, y + 0, 3);//4
8004762: 88fb ldrh r3, [r7, #6]
8004764: 3b0a subs r3, #10
8004766: b29b uxth r3, r3
8004768: 88b9 ldrh r1, [r7, #4]
800476a: 2203 movs r2, #3
800476c: 4618 mov r0, r3
800476e: f7fe f997 bl 8002aa0 <BSP_LCD_FillCircle>
break;
8004772: e0c1 b.n 80048f8 <DrawMySpinner+0x63c>
case 6:
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8004774: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004778: f04f 30ff mov.w r0, #4294967295
800477c: f7fd fd54 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 10, y + 0, 3);//0
8004780: 88fb ldrh r3, [r7, #6]
8004782: 330a adds r3, #10
8004784: b29b uxth r3, r3
8004786: 88b9 ldrh r1, [r7, #4]
8004788: 2203 movs r2, #3
800478a: 4618 mov r0, r3
800478c: f7fe f988 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
8004790: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004794: 4826 ldr r0, [pc, #152] ; (8004830 <DrawMySpinner+0x574>)
8004796: f7fd fd47 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 7, y - 7, 3);//7
800479a: 88fb ldrh r3, [r7, #6]
800479c: 3307 adds r3, #7
800479e: b298 uxth r0, r3
80047a0: 88bb ldrh r3, [r7, #4]
80047a2: 3b07 subs r3, #7
80047a4: b29b uxth r3, r3
80047a6: 2203 movs r2, #3
80047a8: 4619 mov r1, r3
80047aa: f7fe f979 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
80047ae: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80047b2: 4820 ldr r0, [pc, #128] ; (8004834 <DrawMySpinner+0x578>)
80047b4: f7fd fd38 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 0, y - 10, 3);//6
80047b8: 88bb ldrh r3, [r7, #4]
80047ba: 3b0a subs r3, #10
80047bc: b299 uxth r1, r3
80047be: 88fb ldrh r3, [r7, #6]
80047c0: 2203 movs r2, #3
80047c2: 4618 mov r0, r3
80047c4: f7fe f96c bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK);
80047c8: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80047cc: 481a ldr r0, [pc, #104] ; (8004838 <DrawMySpinner+0x57c>)
80047ce: f7fd fd2b bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 7, y + 7, 3);//1
80047d2: 88fb ldrh r3, [r7, #6]
80047d4: 3307 adds r3, #7
80047d6: b298 uxth r0, r3
80047d8: 88bb ldrh r3, [r7, #4]
80047da: 3307 adds r3, #7
80047dc: b29b uxth r3, r3
80047de: 2203 movs r2, #3
80047e0: 4619 mov r1, r3
80047e2: f7fe f95d bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 0, y + 10, 3);//2
80047e6: 88bb ldrh r3, [r7, #4]
80047e8: 330a adds r3, #10
80047ea: b299 uxth r1, r3
80047ec: 88fb ldrh r3, [r7, #6]
80047ee: 2203 movs r2, #3
80047f0: 4618 mov r0, r3
80047f2: f7fe f955 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 7, y + 7, 3);//3
80047f6: 88fb ldrh r3, [r7, #6]
80047f8: 3b07 subs r3, #7
80047fa: b298 uxth r0, r3
80047fc: 88bb ldrh r3, [r7, #4]
80047fe: 3307 adds r3, #7
8004800: b29b uxth r3, r3
8004802: 2203 movs r2, #3
8004804: 4619 mov r1, r3
8004806: f7fe f94b bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 10, y + 0, 3);//4
800480a: 88fb ldrh r3, [r7, #6]
800480c: 3b0a subs r3, #10
800480e: b29b uxth r3, r3
8004810: 88b9 ldrh r1, [r7, #4]
8004812: 2203 movs r2, #3
8004814: 4618 mov r0, r3
8004816: f7fe f943 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 7, y - 7, 3);//5
800481a: 88fb ldrh r3, [r7, #6]
800481c: 3b07 subs r3, #7
800481e: b298 uxth r0, r3
8004820: 88bb ldrh r3, [r7, #4]
8004822: 3b07 subs r3, #7
8004824: b29b uxth r3, r3
8004826: 2203 movs r2, #3
8004828: 4619 mov r1, r3
800482a: f7fe f939 bl 8002aa0 <BSP_LCD_FillCircle>
break;
800482e: e063 b.n 80048f8 <DrawMySpinner+0x63c>
8004830: ffd3d3d3 .word 0xffd3d3d3
8004834: ff808080 .word 0xff808080
8004838: ff404040 .word 0xff404040
case 7:
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
800483c: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004840: f04f 30ff mov.w r0, #4294967295
8004844: f7fd fcf0 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 7, y + 7, 3);//1
8004848: 88fb ldrh r3, [r7, #6]
800484a: 3307 adds r3, #7
800484c: b298 uxth r0, r3
800484e: 88bb ldrh r3, [r7, #4]
8004850: 3307 adds r3, #7
8004852: b29b uxth r3, r3
8004854: 2203 movs r2, #3
8004856: 4619 mov r1, r3
8004858: f7fe f922 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK);
800485c: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004860: 482d ldr r0, [pc, #180] ; (8004918 <DrawMySpinner+0x65c>)
8004862: f7fd fce1 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 10, y + 0, 3);//0
8004866: 88fb ldrh r3, [r7, #6]
8004868: 330a adds r3, #10
800486a: b29b uxth r3, r3
800486c: 88b9 ldrh r1, [r7, #4]
800486e: 2203 movs r2, #3
8004870: 4618 mov r0, r3
8004872: f7fe f915 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
8004876: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800487a: 4828 ldr r0, [pc, #160] ; (800491c <DrawMySpinner+0x660>)
800487c: f7fd fcd4 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 7, y - 7, 3);//7
8004880: 88fb ldrh r3, [r7, #6]
8004882: 3307 adds r3, #7
8004884: b298 uxth r0, r3
8004886: 88bb ldrh r3, [r7, #4]
8004888: 3b07 subs r3, #7
800488a: b29b uxth r3, r3
800488c: 2203 movs r2, #3
800488e: 4619 mov r1, r3
8004890: f7fe f906 bl 8002aa0 <BSP_LCD_FillCircle>
LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK);
8004894: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004898: 4821 ldr r0, [pc, #132] ; (8004920 <DrawMySpinner+0x664>)
800489a: f7fd fcc5 bl 8002228 <LCD_SetColors>
BSP_LCD_FillCircle(x + 0, y + 10, 3);//2
800489e: 88bb ldrh r3, [r7, #4]
80048a0: 330a adds r3, #10
80048a2: b299 uxth r1, r3
80048a4: 88fb ldrh r3, [r7, #6]
80048a6: 2203 movs r2, #3
80048a8: 4618 mov r0, r3
80048aa: f7fe f8f9 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 7, y + 7, 3);//3
80048ae: 88fb ldrh r3, [r7, #6]
80048b0: 3b07 subs r3, #7
80048b2: b298 uxth r0, r3
80048b4: 88bb ldrh r3, [r7, #4]
80048b6: 3307 adds r3, #7
80048b8: b29b uxth r3, r3
80048ba: 2203 movs r2, #3
80048bc: 4619 mov r1, r3
80048be: f7fe f8ef bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 10, y + 0, 3);//4
80048c2: 88fb ldrh r3, [r7, #6]
80048c4: 3b0a subs r3, #10
80048c6: b29b uxth r3, r3
80048c8: 88b9 ldrh r1, [r7, #4]
80048ca: 2203 movs r2, #3
80048cc: 4618 mov r0, r3
80048ce: f7fe f8e7 bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x - 7, y - 7, 3);//5
80048d2: 88fb ldrh r3, [r7, #6]
80048d4: 3b07 subs r3, #7
80048d6: b298 uxth r0, r3
80048d8: 88bb ldrh r3, [r7, #4]
80048da: 3b07 subs r3, #7
80048dc: b29b uxth r3, r3
80048de: 2203 movs r2, #3
80048e0: 4619 mov r1, r3
80048e2: f7fe f8dd bl 8002aa0 <BSP_LCD_FillCircle>
BSP_LCD_FillCircle(x + 0, y - 10, 3);//6
80048e6: 88bb ldrh r3, [r7, #4]
80048e8: 3b0a subs r3, #10
80048ea: b299 uxth r1, r3
80048ec: 88fb ldrh r3, [r7, #6]
80048ee: 2203 movs r2, #3
80048f0: 4618 mov r0, r3
80048f2: f7fe f8d5 bl 8002aa0 <BSP_LCD_FillCircle>
break;
80048f6: bf00 nop
}
rotate++;
80048f8: 4b0a ldr r3, [pc, #40] ; (8004924 <DrawMySpinner+0x668>)
80048fa: 681b ldr r3, [r3, #0]
80048fc: 3301 adds r3, #1
80048fe: 4a09 ldr r2, [pc, #36] ; (8004924 <DrawMySpinner+0x668>)
8004900: 6013 str r3, [r2, #0]
if(rotate >= 8)
8004902: 4b08 ldr r3, [pc, #32] ; (8004924 <DrawMySpinner+0x668>)
8004904: 681b ldr r3, [r3, #0]
8004906: 2b07 cmp r3, #7
8004908: d902 bls.n 8004910 <DrawMySpinner+0x654>
rotate = 0;
800490a: 4b06 ldr r3, [pc, #24] ; (8004924 <DrawMySpinner+0x668>)
800490c: 2200 movs r2, #0
800490e: 601a str r2, [r3, #0]
}
8004910: bf00 nop
8004912: 3708 adds r7, #8
8004914: 46bd mov sp, r7
8004916: bd80 pop {r7, pc}
8004918: ffd3d3d3 .word 0xffd3d3d3
800491c: ff808080 .word 0xff808080
8004920: ff404040 .word 0xff404040
8004924: 2006b1d8 .word 0x2006b1d8
08004928 <DrawSpinner>:
void DrawSpinner(uint16_t x, uint16_t y)
{
8004928: b580 push {r7, lr}
800492a: b082 sub sp, #8
800492c: af00 add r7, sp, #0
800492e: 4603 mov r3, r0
8004930: 460a mov r2, r1
8004932: 80fb strh r3, [r7, #6]
8004934: 4613 mov r3, r2
8004936: 80bb strh r3, [r7, #4]
//if(!clbr)
//{
spinner++;
8004938: 4b0b ldr r3, [pc, #44] ; (8004968 <DrawSpinner+0x40>)
800493a: 781b ldrb r3, [r3, #0]
800493c: 3301 adds r3, #1
800493e: b2da uxtb r2, r3
8004940: 4b09 ldr r3, [pc, #36] ; (8004968 <DrawSpinner+0x40>)
8004942: 701a strb r2, [r3, #0]
if(spinner >= 10)
8004944: 4b08 ldr r3, [pc, #32] ; (8004968 <DrawSpinner+0x40>)
8004946: 781b ldrb r3, [r3, #0]
8004948: 2b09 cmp r3, #9
800494a: d902 bls.n 8004952 <DrawSpinner+0x2a>
spinner = 0;
800494c: 4b06 ldr r3, [pc, #24] ; (8004968 <DrawSpinner+0x40>)
800494e: 2200 movs r2, #0
8004950: 701a strb r2, [r3, #0]
DrawMySpinner(x, y);
8004952: 88ba ldrh r2, [r7, #4]
8004954: 88fb ldrh r3, [r7, #6]
8004956: 4611 mov r1, r2
8004958: 4618 mov r0, r3
800495a: f7ff fcaf bl 80042bc <DrawMySpinner>
//}
}
800495e: bf00 nop
8004960: 3708 adds r7, #8
8004962: 46bd mov sp, r7
8004964: bd80 pop {r7, pc}
8004966: bf00 nop
8004968: 2006b1cd .word 0x2006b1cd
0800496c <DrawChannel_4>:
}
void DrawChannel_4(uint8_t ch, uint32_t blk)
{
800496c: b5b0 push {r4, r5, r7, lr}
800496e: b086 sub sp, #24
8004970: af00 add r7, sp, #0
8004972: 4603 mov r3, r0
8004974: 6039 str r1, [r7, #0]
8004976: 71fb strb r3, [r7, #7]
uint32_t i, j, k;
uint16_t x, y;
char str[10];
str[0] = (char) (pardata.amplif[ch].IKS + 48);
8004978: 79fb ldrb r3, [r7, #7]
800497a: 4ab0 ldr r2, [pc, #704] ; (8004c3c <DrawChannel_4+0x2d0>)
800497c: 015b lsls r3, r3, #5
800497e: 4413 add r3, r2
8004980: 330c adds r3, #12
8004982: 881b ldrh r3, [r3, #0]
8004984: b29b uxth r3, r3
8004986: b2db uxtb r3, r3
8004988: 3330 adds r3, #48 ; 0x30
800498a: b2db uxtb r3, r3
800498c: 733b strb r3, [r7, #12]
str[1] = '.';
800498e: 232e movs r3, #46 ; 0x2e
8004990: 737b strb r3, [r7, #13]
str[2] = (char) (pardata.amplif[ch].IKD + 48);
8004992: 79fb ldrb r3, [r7, #7]
8004994: 4aa9 ldr r2, [pc, #676] ; (8004c3c <DrawChannel_4+0x2d0>)
8004996: 015b lsls r3, r3, #5
8004998: 4413 add r3, r2
800499a: 330a adds r3, #10
800499c: 881b ldrh r3, [r3, #0]
800499e: b29b uxth r3, r3
80049a0: b2db uxtb r3, r3
80049a2: 3330 adds r3, #48 ; 0x30
80049a4: b2db uxtb r3, r3
80049a6: 73bb strb r3, [r7, #14]
str[3] = (char) (pardata.amplif[ch].IKE + 48);
80049a8: 79fb ldrb r3, [r7, #7]
80049aa: 4aa4 ldr r2, [pc, #656] ; (8004c3c <DrawChannel_4+0x2d0>)
80049ac: 015b lsls r3, r3, #5
80049ae: 4413 add r3, r2
80049b0: 3308 adds r3, #8
80049b2: 881b ldrh r3, [r3, #0]
80049b4: b29b uxth r3, r3
80049b6: b2db uxtb r3, r3
80049b8: 3330 adds r3, #48 ; 0x30
80049ba: b2db uxtb r3, r3
80049bc: 73fb strb r3, [r7, #15]
str[4] = '\0';
80049be: 2300 movs r3, #0
80049c0: 743b strb r3, [r7, #16]
if(menupos == Input)
80049c2: 4b9f ldr r3, [pc, #636] ; (8004c40 <DrawChannel_4+0x2d4>)
80049c4: 781b ldrb r3, [r3, #0]
80049c6: b2db uxtb r3, r3
80049c8: 2b00 cmp r3, #0
80049ca: f040 815d bne.w 8004c88 <DrawChannel_4+0x31c>
{
if(ACTIVE_CHANNEL == ch)
80049ce: 79fa ldrb r2, [r7, #7]
80049d0: 4b9c ldr r3, [pc, #624] ; (8004c44 <DrawChannel_4+0x2d8>)
80049d2: 681b ldr r3, [r3, #0]
80049d4: 429a cmp r2, r3
80049d6: f040 80ae bne.w 8004b36 <DrawChannel_4+0x1ca>
{
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
80049da: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80049de: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
80049e2: f7fd fc21 bl 8002228 <LCD_SetColors>
if(focused)
80049e6: 4b98 ldr r3, [pc, #608] ; (8004c48 <DrawChannel_4+0x2dc>)
80049e8: 781b ldrb r3, [r3, #0]
80049ea: b2db uxtb r3, r3
80049ec: 2b00 cmp r3, #0
80049ee: d01f beq.n 8004a30 <DrawChannel_4+0xc4>
{
if(blk)
80049f0: 683b ldr r3, [r7, #0]
80049f2: 2b00 cmp r3, #0
80049f4: d038 beq.n 8004a68 <DrawChannel_4+0xfc>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
80049f6: 79fb ldrb r3, [r7, #7]
80049f8: 4a94 ldr r2, [pc, #592] ; (8004c4c <DrawChannel_4+0x2e0>)
80049fa: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80049fe: 79fb ldrb r3, [r7, #7]
8004a00: 4a93 ldr r2, [pc, #588] ; (8004c50 <DrawChannel_4+0x2e4>)
8004a02: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004a06: 4b8d ldr r3, [pc, #564] ; (8004c3c <DrawChannel_4+0x2d0>)
8004a08: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004a0c: b29b uxth r3, r3
8004a0e: 461d mov r5, r3
8004a10: 79fb ldrb r3, [r7, #7]
8004a12: 4a8a ldr r2, [pc, #552] ; (8004c3c <DrawChannel_4+0x2d0>)
8004a14: 015b lsls r3, r3, #5
8004a16: 4413 add r3, r2
8004a18: 881b ldrh r3, [r3, #0]
8004a1a: b29b uxth r3, r3
8004a1c: 461c mov r4, r3
8004a1e: 4a8d ldr r2, [pc, #564] ; (8004c54 <DrawChannel_4+0x2e8>)
8004a20: 006b lsls r3, r5, #1
8004a22: 4423 add r3, r4
8004a24: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004a28: 2303 movs r3, #3
8004a2a: f7fd fcc3 bl 80023b4 <BSP_LCD_DisplayStringAt>
8004a2e: e01b b.n 8004a68 <DrawChannel_4+0xfc>
}
else
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8004a30: 79fb ldrb r3, [r7, #7]
8004a32: 4a86 ldr r2, [pc, #536] ; (8004c4c <DrawChannel_4+0x2e0>)
8004a34: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004a38: 79fb ldrb r3, [r7, #7]
8004a3a: 4a85 ldr r2, [pc, #532] ; (8004c50 <DrawChannel_4+0x2e4>)
8004a3c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004a40: 4b7e ldr r3, [pc, #504] ; (8004c3c <DrawChannel_4+0x2d0>)
8004a42: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004a46: b29b uxth r3, r3
8004a48: 461d mov r5, r3
8004a4a: 79fb ldrb r3, [r7, #7]
8004a4c: 4a7b ldr r2, [pc, #492] ; (8004c3c <DrawChannel_4+0x2d0>)
8004a4e: 015b lsls r3, r3, #5
8004a50: 4413 add r3, r2
8004a52: 881b ldrh r3, [r3, #0]
8004a54: b29b uxth r3, r3
8004a56: 461c mov r4, r3
8004a58: 4a7e ldr r2, [pc, #504] ; (8004c54 <DrawChannel_4+0x2e8>)
8004a5a: 006b lsls r3, r5, #1
8004a5c: 4423 add r3, r4
8004a5e: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004a62: 2303 movs r3, #3
8004a64: f7fd fca6 bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8004a68: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004a6c: 487a ldr r0, [pc, #488] ; (8004c58 <DrawChannel_4+0x2ec>)
8004a6e: f7fd fbdb bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8004a72: 79fb ldrb r3, [r7, #7]
8004a74: 4a79 ldr r2, [pc, #484] ; (8004c5c <DrawChannel_4+0x2f0>)
8004a76: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004a7a: 79fb ldrb r3, [r7, #7]
8004a7c: 4a78 ldr r2, [pc, #480] ; (8004c60 <DrawChannel_4+0x2f4>)
8004a7e: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8004a82: 4b6e ldr r3, [pc, #440] ; (8004c3c <DrawChannel_4+0x2d0>)
8004a84: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004a88: b29b uxth r3, r3
8004a8a: 4619 mov r1, r3
8004a8c: 79fb ldrb r3, [r7, #7]
8004a8e: 4a6b ldr r2, [pc, #428] ; (8004c3c <DrawChannel_4+0x2d0>)
8004a90: 015b lsls r3, r3, #5
8004a92: 4413 add r3, r2
8004a94: 3302 adds r3, #2
8004a96: 881b ldrh r3, [r3, #0]
8004a98: b29b uxth r3, r3
8004a9a: 461d mov r5, r3
8004a9c: 4a71 ldr r2, [pc, #452] ; (8004c64 <DrawChannel_4+0x2f8>)
8004a9e: 460b mov r3, r1
8004aa0: 009b lsls r3, r3, #2
8004aa2: 440b add r3, r1
8004aa4: 442b add r3, r5
8004aa6: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004aaa: 2303 movs r3, #3
8004aac: 4621 mov r1, r4
8004aae: f7fd fc81 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8004ab2: 79fb ldrb r3, [r7, #7]
8004ab4: 4a6c ldr r2, [pc, #432] ; (8004c68 <DrawChannel_4+0x2fc>)
8004ab6: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004aba: 79fb ldrb r3, [r7, #7]
8004abc: 4a6b ldr r2, [pc, #428] ; (8004c6c <DrawChannel_4+0x300>)
8004abe: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004ac2: 4b5e ldr r3, [pc, #376] ; (8004c3c <DrawChannel_4+0x2d0>)
8004ac4: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004ac8: b29b uxth r3, r3
8004aca: 461d mov r5, r3
8004acc: 79fb ldrb r3, [r7, #7]
8004ace: 4a5b ldr r2, [pc, #364] ; (8004c3c <DrawChannel_4+0x2d0>)
8004ad0: 015b lsls r3, r3, #5
8004ad2: 4413 add r3, r2
8004ad4: 3304 adds r3, #4
8004ad6: 881b ldrh r3, [r3, #0]
8004ad8: b29b uxth r3, r3
8004ada: 461c mov r4, r3
8004adc: 4a64 ldr r2, [pc, #400] ; (8004c70 <DrawChannel_4+0x304>)
8004ade: 00eb lsls r3, r5, #3
8004ae0: 4423 add r3, r4
8004ae2: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004ae6: 2303 movs r3, #3
8004ae8: f7fd fc64 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8004aec: 79fb ldrb r3, [r7, #7]
8004aee: 4a61 ldr r2, [pc, #388] ; (8004c74 <DrawChannel_4+0x308>)
8004af0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004af4: 79fb ldrb r3, [r7, #7]
8004af6: 4a60 ldr r2, [pc, #384] ; (8004c78 <DrawChannel_4+0x30c>)
8004af8: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004afc: 79fb ldrb r3, [r7, #7]
8004afe: 4a4f ldr r2, [pc, #316] ; (8004c3c <DrawChannel_4+0x2d0>)
8004b00: 015b lsls r3, r3, #5
8004b02: 4413 add r3, r2
8004b04: 3306 adds r3, #6
8004b06: 881b ldrh r3, [r3, #0]
8004b08: b29b uxth r3, r3
8004b0a: 461a mov r2, r3
8004b0c: 4b5b ldr r3, [pc, #364] ; (8004c7c <DrawChannel_4+0x310>)
8004b0e: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8004b12: 2303 movs r3, #3
8004b14: f7fd fc4e bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
8004b18: 79fb ldrb r3, [r7, #7]
8004b1a: 4a59 ldr r2, [pc, #356] ; (8004c80 <DrawChannel_4+0x314>)
8004b1c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004b20: 79fb ldrb r3, [r7, #7]
8004b22: 4a58 ldr r2, [pc, #352] ; (8004c84 <DrawChannel_4+0x318>)
8004b24: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004b28: f107 020c add.w r2, r7, #12
8004b2c: 2303 movs r3, #3
8004b2e: f7fd fc41 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
}
}
}
8004b32: f001 ba90 b.w 8006056 <DrawChannel_4+0x16ea>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8004b36: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004b3a: 4847 ldr r0, [pc, #284] ; (8004c58 <DrawChannel_4+0x2ec>)
8004b3c: f7fd fb74 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8004b40: 79fb ldrb r3, [r7, #7]
8004b42: 4a42 ldr r2, [pc, #264] ; (8004c4c <DrawChannel_4+0x2e0>)
8004b44: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004b48: 79fb ldrb r3, [r7, #7]
8004b4a: 4a41 ldr r2, [pc, #260] ; (8004c50 <DrawChannel_4+0x2e4>)
8004b4c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004b50: 4b3a ldr r3, [pc, #232] ; (8004c3c <DrawChannel_4+0x2d0>)
8004b52: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004b56: b29b uxth r3, r3
8004b58: 461d mov r5, r3
8004b5a: 79fb ldrb r3, [r7, #7]
8004b5c: 4a37 ldr r2, [pc, #220] ; (8004c3c <DrawChannel_4+0x2d0>)
8004b5e: 015b lsls r3, r3, #5
8004b60: 4413 add r3, r2
8004b62: 881b ldrh r3, [r3, #0]
8004b64: b29b uxth r3, r3
8004b66: 461c mov r4, r3
8004b68: 4a3a ldr r2, [pc, #232] ; (8004c54 <DrawChannel_4+0x2e8>)
8004b6a: 006b lsls r3, r5, #1
8004b6c: 4423 add r3, r4
8004b6e: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004b72: 2303 movs r3, #3
8004b74: f7fd fc1e bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8004b78: 79fb ldrb r3, [r7, #7]
8004b7a: 4a38 ldr r2, [pc, #224] ; (8004c5c <DrawChannel_4+0x2f0>)
8004b7c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004b80: 79fb ldrb r3, [r7, #7]
8004b82: 4a37 ldr r2, [pc, #220] ; (8004c60 <DrawChannel_4+0x2f4>)
8004b84: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8004b88: 4b2c ldr r3, [pc, #176] ; (8004c3c <DrawChannel_4+0x2d0>)
8004b8a: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004b8e: b29b uxth r3, r3
8004b90: 4619 mov r1, r3
8004b92: 79fb ldrb r3, [r7, #7]
8004b94: 4a29 ldr r2, [pc, #164] ; (8004c3c <DrawChannel_4+0x2d0>)
8004b96: 015b lsls r3, r3, #5
8004b98: 4413 add r3, r2
8004b9a: 3302 adds r3, #2
8004b9c: 881b ldrh r3, [r3, #0]
8004b9e: b29b uxth r3, r3
8004ba0: 461d mov r5, r3
8004ba2: 4a30 ldr r2, [pc, #192] ; (8004c64 <DrawChannel_4+0x2f8>)
8004ba4: 460b mov r3, r1
8004ba6: 009b lsls r3, r3, #2
8004ba8: 440b add r3, r1
8004baa: 442b add r3, r5
8004bac: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004bb0: 2303 movs r3, #3
8004bb2: 4621 mov r1, r4
8004bb4: f7fd fbfe bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8004bb8: 79fb ldrb r3, [r7, #7]
8004bba: 4a2b ldr r2, [pc, #172] ; (8004c68 <DrawChannel_4+0x2fc>)
8004bbc: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004bc0: 79fb ldrb r3, [r7, #7]
8004bc2: 4a2a ldr r2, [pc, #168] ; (8004c6c <DrawChannel_4+0x300>)
8004bc4: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004bc8: 4b1c ldr r3, [pc, #112] ; (8004c3c <DrawChannel_4+0x2d0>)
8004bca: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004bce: b29b uxth r3, r3
8004bd0: 461d mov r5, r3
8004bd2: 79fb ldrb r3, [r7, #7]
8004bd4: 4a19 ldr r2, [pc, #100] ; (8004c3c <DrawChannel_4+0x2d0>)
8004bd6: 015b lsls r3, r3, #5
8004bd8: 4413 add r3, r2
8004bda: 3304 adds r3, #4
8004bdc: 881b ldrh r3, [r3, #0]
8004bde: b29b uxth r3, r3
8004be0: 461c mov r4, r3
8004be2: 4a23 ldr r2, [pc, #140] ; (8004c70 <DrawChannel_4+0x304>)
8004be4: 00eb lsls r3, r5, #3
8004be6: 4423 add r3, r4
8004be8: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004bec: 2303 movs r3, #3
8004bee: f7fd fbe1 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8004bf2: 79fb ldrb r3, [r7, #7]
8004bf4: 4a1f ldr r2, [pc, #124] ; (8004c74 <DrawChannel_4+0x308>)
8004bf6: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004bfa: 79fb ldrb r3, [r7, #7]
8004bfc: 4a1e ldr r2, [pc, #120] ; (8004c78 <DrawChannel_4+0x30c>)
8004bfe: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004c02: 79fb ldrb r3, [r7, #7]
8004c04: 4a0d ldr r2, [pc, #52] ; (8004c3c <DrawChannel_4+0x2d0>)
8004c06: 015b lsls r3, r3, #5
8004c08: 4413 add r3, r2
8004c0a: 3306 adds r3, #6
8004c0c: 881b ldrh r3, [r3, #0]
8004c0e: b29b uxth r3, r3
8004c10: 461a mov r2, r3
8004c12: 4b1a ldr r3, [pc, #104] ; (8004c7c <DrawChannel_4+0x310>)
8004c14: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8004c18: 2303 movs r3, #3
8004c1a: f7fd fbcb bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
8004c1e: 79fb ldrb r3, [r7, #7]
8004c20: 4a17 ldr r2, [pc, #92] ; (8004c80 <DrawChannel_4+0x314>)
8004c22: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004c26: 79fb ldrb r3, [r7, #7]
8004c28: 4a16 ldr r2, [pc, #88] ; (8004c84 <DrawChannel_4+0x318>)
8004c2a: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004c2e: f107 020c add.w r2, r7, #12
8004c32: 2303 movs r3, #3
8004c34: f7fd fbbe bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8004c38: f001 ba0d b.w 8006056 <DrawChannel_4+0x16ea>
8004c3c: 2006b3f8 .word 0x2006b3f8
8004c40: 20020010 .word 0x20020010
8004c44: 2006b1c0 .word 0x2006b1c0
8004c48: 20020140 .word 0x20020140
8004c4c: 0800fcc8 .word 0x0800fcc8
8004c50: 0800fcd0 .word 0x0800fcd0
8004c54: 20020030 .word 0x20020030
8004c58: ffd8aa57 .word 0xffd8aa57
8004c5c: 0800fcd8 .word 0x0800fcd8
8004c60: 0800fce0 .word 0x0800fce0
8004c64: 20020074 .word 0x20020074
8004c68: 0800fce8 .word 0x0800fce8
8004c6c: 0800fcf0 .word 0x0800fcf0
8004c70: 2002009c .word 0x2002009c
8004c74: 0800fcf8 .word 0x0800fcf8
8004c78: 0800fd00 .word 0x0800fd00
8004c7c: 20020040 .word 0x20020040
8004c80: 0800fd08 .word 0x0800fd08
8004c84: 0800fd10 .word 0x0800fd10
if(menupos == Hp)
8004c88: 4ba0 ldr r3, [pc, #640] ; (8004f0c <DrawChannel_4+0x5a0>)
8004c8a: 781b ldrb r3, [r3, #0]
8004c8c: b2db uxtb r3, r3
8004c8e: 2b01 cmp r3, #1
8004c90: f040 8162 bne.w 8004f58 <DrawChannel_4+0x5ec>
if(ACTIVE_CHANNEL == ch)
8004c94: 79fa ldrb r2, [r7, #7]
8004c96: 4b9e ldr r3, [pc, #632] ; (8004f10 <DrawChannel_4+0x5a4>)
8004c98: 681b ldr r3, [r3, #0]
8004c9a: 429a cmp r2, r3
8004c9c: f040 80b2 bne.w 8004e04 <DrawChannel_4+0x498>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8004ca0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004ca4: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8004ca8: f7fd fabe bl 8002228 <LCD_SetColors>
if(focused)
8004cac: 4b99 ldr r3, [pc, #612] ; (8004f14 <DrawChannel_4+0x5a8>)
8004cae: 781b ldrb r3, [r3, #0]
8004cb0: b2db uxtb r3, r3
8004cb2: 2b00 cmp r3, #0
8004cb4: d023 beq.n 8004cfe <DrawChannel_4+0x392>
if(blk)
8004cb6: 683b ldr r3, [r7, #0]
8004cb8: 2b00 cmp r3, #0
8004cba: d040 beq.n 8004d3e <DrawChannel_4+0x3d2>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8004cbc: 79fb ldrb r3, [r7, #7]
8004cbe: 4a96 ldr r2, [pc, #600] ; (8004f18 <DrawChannel_4+0x5ac>)
8004cc0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004cc4: 79fb ldrb r3, [r7, #7]
8004cc6: 4a95 ldr r2, [pc, #596] ; (8004f1c <DrawChannel_4+0x5b0>)
8004cc8: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8004ccc: 4b94 ldr r3, [pc, #592] ; (8004f20 <DrawChannel_4+0x5b4>)
8004cce: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004cd2: b29b uxth r3, r3
8004cd4: 4619 mov r1, r3
8004cd6: 79fb ldrb r3, [r7, #7]
8004cd8: 4a91 ldr r2, [pc, #580] ; (8004f20 <DrawChannel_4+0x5b4>)
8004cda: 015b lsls r3, r3, #5
8004cdc: 4413 add r3, r2
8004cde: 3302 adds r3, #2
8004ce0: 881b ldrh r3, [r3, #0]
8004ce2: b29b uxth r3, r3
8004ce4: 461d mov r5, r3
8004ce6: 4a8f ldr r2, [pc, #572] ; (8004f24 <DrawChannel_4+0x5b8>)
8004ce8: 460b mov r3, r1
8004cea: 009b lsls r3, r3, #2
8004cec: 440b add r3, r1
8004cee: 442b add r3, r5
8004cf0: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004cf4: 2303 movs r3, #3
8004cf6: 4621 mov r1, r4
8004cf8: f7fd fb5c bl 80023b4 <BSP_LCD_DisplayStringAt>
8004cfc: e01f b.n 8004d3e <DrawChannel_4+0x3d2>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8004cfe: 79fb ldrb r3, [r7, #7]
8004d00: 4a85 ldr r2, [pc, #532] ; (8004f18 <DrawChannel_4+0x5ac>)
8004d02: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004d06: 79fb ldrb r3, [r7, #7]
8004d08: 4a84 ldr r2, [pc, #528] ; (8004f1c <DrawChannel_4+0x5b0>)
8004d0a: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8004d0e: 4b84 ldr r3, [pc, #528] ; (8004f20 <DrawChannel_4+0x5b4>)
8004d10: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004d14: b29b uxth r3, r3
8004d16: 4619 mov r1, r3
8004d18: 79fb ldrb r3, [r7, #7]
8004d1a: 4a81 ldr r2, [pc, #516] ; (8004f20 <DrawChannel_4+0x5b4>)
8004d1c: 015b lsls r3, r3, #5
8004d1e: 4413 add r3, r2
8004d20: 3302 adds r3, #2
8004d22: 881b ldrh r3, [r3, #0]
8004d24: b29b uxth r3, r3
8004d26: 461d mov r5, r3
8004d28: 4a7e ldr r2, [pc, #504] ; (8004f24 <DrawChannel_4+0x5b8>)
8004d2a: 460b mov r3, r1
8004d2c: 009b lsls r3, r3, #2
8004d2e: 440b add r3, r1
8004d30: 442b add r3, r5
8004d32: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004d36: 2303 movs r3, #3
8004d38: 4621 mov r1, r4
8004d3a: f7fd fb3b bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8004d3e: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004d42: 4879 ldr r0, [pc, #484] ; (8004f28 <DrawChannel_4+0x5bc>)
8004d44: f7fd fa70 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8004d48: 79fb ldrb r3, [r7, #7]
8004d4a: 4a78 ldr r2, [pc, #480] ; (8004f2c <DrawChannel_4+0x5c0>)
8004d4c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004d50: 79fb ldrb r3, [r7, #7]
8004d52: 4a77 ldr r2, [pc, #476] ; (8004f30 <DrawChannel_4+0x5c4>)
8004d54: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004d58: 4b71 ldr r3, [pc, #452] ; (8004f20 <DrawChannel_4+0x5b4>)
8004d5a: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004d5e: b29b uxth r3, r3
8004d60: 461d mov r5, r3
8004d62: 79fb ldrb r3, [r7, #7]
8004d64: 4a6e ldr r2, [pc, #440] ; (8004f20 <DrawChannel_4+0x5b4>)
8004d66: 015b lsls r3, r3, #5
8004d68: 4413 add r3, r2
8004d6a: 881b ldrh r3, [r3, #0]
8004d6c: b29b uxth r3, r3
8004d6e: 461c mov r4, r3
8004d70: 4a70 ldr r2, [pc, #448] ; (8004f34 <DrawChannel_4+0x5c8>)
8004d72: 006b lsls r3, r5, #1
8004d74: 4423 add r3, r4
8004d76: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004d7a: 2303 movs r3, #3
8004d7c: f7fd fb1a bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8004d80: 79fb ldrb r3, [r7, #7]
8004d82: 4a6d ldr r2, [pc, #436] ; (8004f38 <DrawChannel_4+0x5cc>)
8004d84: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004d88: 79fb ldrb r3, [r7, #7]
8004d8a: 4a6c ldr r2, [pc, #432] ; (8004f3c <DrawChannel_4+0x5d0>)
8004d8c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004d90: 4b63 ldr r3, [pc, #396] ; (8004f20 <DrawChannel_4+0x5b4>)
8004d92: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004d96: b29b uxth r3, r3
8004d98: 461d mov r5, r3
8004d9a: 79fb ldrb r3, [r7, #7]
8004d9c: 4a60 ldr r2, [pc, #384] ; (8004f20 <DrawChannel_4+0x5b4>)
8004d9e: 015b lsls r3, r3, #5
8004da0: 4413 add r3, r2
8004da2: 3304 adds r3, #4
8004da4: 881b ldrh r3, [r3, #0]
8004da6: b29b uxth r3, r3
8004da8: 461c mov r4, r3
8004daa: 4a65 ldr r2, [pc, #404] ; (8004f40 <DrawChannel_4+0x5d4>)
8004dac: 00eb lsls r3, r5, #3
8004dae: 4423 add r3, r4
8004db0: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004db4: 2303 movs r3, #3
8004db6: f7fd fafd bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8004dba: 79fb ldrb r3, [r7, #7]
8004dbc: 4a61 ldr r2, [pc, #388] ; (8004f44 <DrawChannel_4+0x5d8>)
8004dbe: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004dc2: 79fb ldrb r3, [r7, #7]
8004dc4: 4a60 ldr r2, [pc, #384] ; (8004f48 <DrawChannel_4+0x5dc>)
8004dc6: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004dca: 79fb ldrb r3, [r7, #7]
8004dcc: 4a54 ldr r2, [pc, #336] ; (8004f20 <DrawChannel_4+0x5b4>)
8004dce: 015b lsls r3, r3, #5
8004dd0: 4413 add r3, r2
8004dd2: 3306 adds r3, #6
8004dd4: 881b ldrh r3, [r3, #0]
8004dd6: b29b uxth r3, r3
8004dd8: 461a mov r2, r3
8004dda: 4b5c ldr r3, [pc, #368] ; (8004f4c <DrawChannel_4+0x5e0>)
8004ddc: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8004de0: 2303 movs r3, #3
8004de2: f7fd fae7 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
8004de6: 79fb ldrb r3, [r7, #7]
8004de8: 4a59 ldr r2, [pc, #356] ; (8004f50 <DrawChannel_4+0x5e4>)
8004dea: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004dee: 79fb ldrb r3, [r7, #7]
8004df0: 4a58 ldr r2, [pc, #352] ; (8004f54 <DrawChannel_4+0x5e8>)
8004df2: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004df6: f107 020c add.w r2, r7, #12
8004dfa: 2303 movs r3, #3
8004dfc: f7fd fada bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8004e00: f001 b929 b.w 8006056 <DrawChannel_4+0x16ea>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8004e04: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004e08: 4847 ldr r0, [pc, #284] ; (8004f28 <DrawChannel_4+0x5bc>)
8004e0a: f7fd fa0d bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8004e0e: 79fb ldrb r3, [r7, #7]
8004e10: 4a46 ldr r2, [pc, #280] ; (8004f2c <DrawChannel_4+0x5c0>)
8004e12: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004e16: 79fb ldrb r3, [r7, #7]
8004e18: 4a45 ldr r2, [pc, #276] ; (8004f30 <DrawChannel_4+0x5c4>)
8004e1a: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004e1e: 4b40 ldr r3, [pc, #256] ; (8004f20 <DrawChannel_4+0x5b4>)
8004e20: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004e24: b29b uxth r3, r3
8004e26: 461d mov r5, r3
8004e28: 79fb ldrb r3, [r7, #7]
8004e2a: 4a3d ldr r2, [pc, #244] ; (8004f20 <DrawChannel_4+0x5b4>)
8004e2c: 015b lsls r3, r3, #5
8004e2e: 4413 add r3, r2
8004e30: 881b ldrh r3, [r3, #0]
8004e32: b29b uxth r3, r3
8004e34: 461c mov r4, r3
8004e36: 4a3f ldr r2, [pc, #252] ; (8004f34 <DrawChannel_4+0x5c8>)
8004e38: 006b lsls r3, r5, #1
8004e3a: 4423 add r3, r4
8004e3c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004e40: 2303 movs r3, #3
8004e42: f7fd fab7 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8004e46: 79fb ldrb r3, [r7, #7]
8004e48: 4a33 ldr r2, [pc, #204] ; (8004f18 <DrawChannel_4+0x5ac>)
8004e4a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004e4e: 79fb ldrb r3, [r7, #7]
8004e50: 4a32 ldr r2, [pc, #200] ; (8004f1c <DrawChannel_4+0x5b0>)
8004e52: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8004e56: 4b32 ldr r3, [pc, #200] ; (8004f20 <DrawChannel_4+0x5b4>)
8004e58: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004e5c: b29b uxth r3, r3
8004e5e: 4619 mov r1, r3
8004e60: 79fb ldrb r3, [r7, #7]
8004e62: 4a2f ldr r2, [pc, #188] ; (8004f20 <DrawChannel_4+0x5b4>)
8004e64: 015b lsls r3, r3, #5
8004e66: 4413 add r3, r2
8004e68: 3302 adds r3, #2
8004e6a: 881b ldrh r3, [r3, #0]
8004e6c: b29b uxth r3, r3
8004e6e: 461d mov r5, r3
8004e70: 4a2c ldr r2, [pc, #176] ; (8004f24 <DrawChannel_4+0x5b8>)
8004e72: 460b mov r3, r1
8004e74: 009b lsls r3, r3, #2
8004e76: 440b add r3, r1
8004e78: 442b add r3, r5
8004e7a: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004e7e: 2303 movs r3, #3
8004e80: 4621 mov r1, r4
8004e82: f7fd fa97 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8004e86: 79fb ldrb r3, [r7, #7]
8004e88: 4a2b ldr r2, [pc, #172] ; (8004f38 <DrawChannel_4+0x5cc>)
8004e8a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004e8e: 79fb ldrb r3, [r7, #7]
8004e90: 4a2a ldr r2, [pc, #168] ; (8004f3c <DrawChannel_4+0x5d0>)
8004e92: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004e96: 4b22 ldr r3, [pc, #136] ; (8004f20 <DrawChannel_4+0x5b4>)
8004e98: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004e9c: b29b uxth r3, r3
8004e9e: 461d mov r5, r3
8004ea0: 79fb ldrb r3, [r7, #7]
8004ea2: 4a1f ldr r2, [pc, #124] ; (8004f20 <DrawChannel_4+0x5b4>)
8004ea4: 015b lsls r3, r3, #5
8004ea6: 4413 add r3, r2
8004ea8: 3304 adds r3, #4
8004eaa: 881b ldrh r3, [r3, #0]
8004eac: b29b uxth r3, r3
8004eae: 461c mov r4, r3
8004eb0: 4a23 ldr r2, [pc, #140] ; (8004f40 <DrawChannel_4+0x5d4>)
8004eb2: 00eb lsls r3, r5, #3
8004eb4: 4423 add r3, r4
8004eb6: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004eba: 2303 movs r3, #3
8004ebc: f7fd fa7a bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8004ec0: 79fb ldrb r3, [r7, #7]
8004ec2: 4a20 ldr r2, [pc, #128] ; (8004f44 <DrawChannel_4+0x5d8>)
8004ec4: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004ec8: 79fb ldrb r3, [r7, #7]
8004eca: 4a1f ldr r2, [pc, #124] ; (8004f48 <DrawChannel_4+0x5dc>)
8004ecc: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004ed0: 79fb ldrb r3, [r7, #7]
8004ed2: 4a13 ldr r2, [pc, #76] ; (8004f20 <DrawChannel_4+0x5b4>)
8004ed4: 015b lsls r3, r3, #5
8004ed6: 4413 add r3, r2
8004ed8: 3306 adds r3, #6
8004eda: 881b ldrh r3, [r3, #0]
8004edc: b29b uxth r3, r3
8004ede: 461a mov r2, r3
8004ee0: 4b1a ldr r3, [pc, #104] ; (8004f4c <DrawChannel_4+0x5e0>)
8004ee2: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8004ee6: 2303 movs r3, #3
8004ee8: f7fd fa64 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
8004eec: 79fb ldrb r3, [r7, #7]
8004eee: 4a18 ldr r2, [pc, #96] ; (8004f50 <DrawChannel_4+0x5e4>)
8004ef0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004ef4: 79fb ldrb r3, [r7, #7]
8004ef6: 4a17 ldr r2, [pc, #92] ; (8004f54 <DrawChannel_4+0x5e8>)
8004ef8: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004efc: f107 020c add.w r2, r7, #12
8004f00: 2303 movs r3, #3
8004f02: f7fd fa57 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8004f06: f001 b8a6 b.w 8006056 <DrawChannel_4+0x16ea>
8004f0a: bf00 nop
8004f0c: 20020010 .word 0x20020010
8004f10: 2006b1c0 .word 0x2006b1c0
8004f14: 20020140 .word 0x20020140
8004f18: 0800fcd8 .word 0x0800fcd8
8004f1c: 0800fce0 .word 0x0800fce0
8004f20: 2006b3f8 .word 0x2006b3f8
8004f24: 20020074 .word 0x20020074
8004f28: ffd8aa57 .word 0xffd8aa57
8004f2c: 0800fcc8 .word 0x0800fcc8
8004f30: 0800fcd0 .word 0x0800fcd0
8004f34: 20020030 .word 0x20020030
8004f38: 0800fce8 .word 0x0800fce8
8004f3c: 0800fcf0 .word 0x0800fcf0
8004f40: 2002009c .word 0x2002009c
8004f44: 0800fcf8 .word 0x0800fcf8
8004f48: 0800fd00 .word 0x0800fd00
8004f4c: 20020040 .word 0x20020040
8004f50: 0800fd08 .word 0x0800fd08
8004f54: 0800fd10 .word 0x0800fd10
if(menupos == Lp)
8004f58: 4bb7 ldr r3, [pc, #732] ; (8005238 <DrawChannel_4+0x8cc>)
8004f5a: 781b ldrb r3, [r3, #0]
8004f5c: b2db uxtb r3, r3
8004f5e: 2b02 cmp r3, #2
8004f60: f040 8138 bne.w 80051d4 <DrawChannel_4+0x868>
if(ACTIVE_CHANNEL == ch)
8004f64: 79fa ldrb r2, [r7, #7]
8004f66: 4bb5 ldr r3, [pc, #724] ; (800523c <DrawChannel_4+0x8d0>)
8004f68: 681b ldr r3, [r3, #0]
8004f6a: 429a cmp r2, r3
8004f6c: f040 80af bne.w 80050ce <DrawChannel_4+0x762>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8004f70: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8004f74: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8004f78: f7fd f956 bl 8002228 <LCD_SetColors>
if(focused)
8004f7c: 4bb0 ldr r3, [pc, #704] ; (8005240 <DrawChannel_4+0x8d4>)
8004f7e: 781b ldrb r3, [r3, #0]
8004f80: b2db uxtb r3, r3
8004f82: 2b00 cmp r3, #0
8004f84: d020 beq.n 8004fc8 <DrawChannel_4+0x65c>
if(blk)
8004f86: 683b ldr r3, [r7, #0]
8004f88: 2b00 cmp r3, #0
8004f8a: d03a beq.n 8005002 <DrawChannel_4+0x696>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8004f8c: 79fb ldrb r3, [r7, #7]
8004f8e: 4aad ldr r2, [pc, #692] ; (8005244 <DrawChannel_4+0x8d8>)
8004f90: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004f94: 79fb ldrb r3, [r7, #7]
8004f96: 4aac ldr r2, [pc, #688] ; (8005248 <DrawChannel_4+0x8dc>)
8004f98: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004f9c: 4bab ldr r3, [pc, #684] ; (800524c <DrawChannel_4+0x8e0>)
8004f9e: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004fa2: b29b uxth r3, r3
8004fa4: 461d mov r5, r3
8004fa6: 79fb ldrb r3, [r7, #7]
8004fa8: 4aa8 ldr r2, [pc, #672] ; (800524c <DrawChannel_4+0x8e0>)
8004faa: 015b lsls r3, r3, #5
8004fac: 4413 add r3, r2
8004fae: 3304 adds r3, #4
8004fb0: 881b ldrh r3, [r3, #0]
8004fb2: b29b uxth r3, r3
8004fb4: 461c mov r4, r3
8004fb6: 4aa6 ldr r2, [pc, #664] ; (8005250 <DrawChannel_4+0x8e4>)
8004fb8: 00eb lsls r3, r5, #3
8004fba: 4423 add r3, r4
8004fbc: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004fc0: 2303 movs r3, #3
8004fc2: f7fd f9f7 bl 80023b4 <BSP_LCD_DisplayStringAt>
8004fc6: e01c b.n 8005002 <DrawChannel_4+0x696>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8004fc8: 79fb ldrb r3, [r7, #7]
8004fca: 4a9e ldr r2, [pc, #632] ; (8005244 <DrawChannel_4+0x8d8>)
8004fcc: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8004fd0: 79fb ldrb r3, [r7, #7]
8004fd2: 4a9d ldr r2, [pc, #628] ; (8005248 <DrawChannel_4+0x8dc>)
8004fd4: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8004fd8: 4b9c ldr r3, [pc, #624] ; (800524c <DrawChannel_4+0x8e0>)
8004fda: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8004fde: b29b uxth r3, r3
8004fe0: 461d mov r5, r3
8004fe2: 79fb ldrb r3, [r7, #7]
8004fe4: 4a99 ldr r2, [pc, #612] ; (800524c <DrawChannel_4+0x8e0>)
8004fe6: 015b lsls r3, r3, #5
8004fe8: 4413 add r3, r2
8004fea: 3304 adds r3, #4
8004fec: 881b ldrh r3, [r3, #0]
8004fee: b29b uxth r3, r3
8004ff0: 461c mov r4, r3
8004ff2: 4a97 ldr r2, [pc, #604] ; (8005250 <DrawChannel_4+0x8e4>)
8004ff4: 00eb lsls r3, r5, #3
8004ff6: 4423 add r3, r4
8004ff8: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8004ffc: 2303 movs r3, #3
8004ffe: f7fd f9d9 bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8005002: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005006: 4893 ldr r0, [pc, #588] ; (8005254 <DrawChannel_4+0x8e8>)
8005008: f7fd f90e bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
800500c: 79fb ldrb r3, [r7, #7]
800500e: 4a92 ldr r2, [pc, #584] ; (8005258 <DrawChannel_4+0x8ec>)
8005010: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005014: 79fb ldrb r3, [r7, #7]
8005016: 4a91 ldr r2, [pc, #580] ; (800525c <DrawChannel_4+0x8f0>)
8005018: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800501c: 4b8b ldr r3, [pc, #556] ; (800524c <DrawChannel_4+0x8e0>)
800501e: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005022: b29b uxth r3, r3
8005024: 461d mov r5, r3
8005026: 79fb ldrb r3, [r7, #7]
8005028: 4a88 ldr r2, [pc, #544] ; (800524c <DrawChannel_4+0x8e0>)
800502a: 015b lsls r3, r3, #5
800502c: 4413 add r3, r2
800502e: 881b ldrh r3, [r3, #0]
8005030: b29b uxth r3, r3
8005032: 461c mov r4, r3
8005034: 4a8a ldr r2, [pc, #552] ; (8005260 <DrawChannel_4+0x8f4>)
8005036: 006b lsls r3, r5, #1
8005038: 4423 add r3, r4
800503a: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800503e: 2303 movs r3, #3
8005040: f7fd f9b8 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8005044: 79fb ldrb r3, [r7, #7]
8005046: 4a87 ldr r2, [pc, #540] ; (8005264 <DrawChannel_4+0x8f8>)
8005048: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800504c: 79fb ldrb r3, [r7, #7]
800504e: 4a86 ldr r2, [pc, #536] ; (8005268 <DrawChannel_4+0x8fc>)
8005050: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005054: 4b7d ldr r3, [pc, #500] ; (800524c <DrawChannel_4+0x8e0>)
8005056: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800505a: b29b uxth r3, r3
800505c: 4619 mov r1, r3
800505e: 79fb ldrb r3, [r7, #7]
8005060: 4a7a ldr r2, [pc, #488] ; (800524c <DrawChannel_4+0x8e0>)
8005062: 015b lsls r3, r3, #5
8005064: 4413 add r3, r2
8005066: 3302 adds r3, #2
8005068: 881b ldrh r3, [r3, #0]
800506a: b29b uxth r3, r3
800506c: 461d mov r5, r3
800506e: 4a7f ldr r2, [pc, #508] ; (800526c <DrawChannel_4+0x900>)
8005070: 460b mov r3, r1
8005072: 009b lsls r3, r3, #2
8005074: 440b add r3, r1
8005076: 442b add r3, r5
8005078: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800507c: 2303 movs r3, #3
800507e: 4621 mov r1, r4
8005080: f7fd f998 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8005084: 79fb ldrb r3, [r7, #7]
8005086: 4a7a ldr r2, [pc, #488] ; (8005270 <DrawChannel_4+0x904>)
8005088: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800508c: 79fb ldrb r3, [r7, #7]
800508e: 4a79 ldr r2, [pc, #484] ; (8005274 <DrawChannel_4+0x908>)
8005090: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005094: 79fb ldrb r3, [r7, #7]
8005096: 4a6d ldr r2, [pc, #436] ; (800524c <DrawChannel_4+0x8e0>)
8005098: 015b lsls r3, r3, #5
800509a: 4413 add r3, r2
800509c: 3306 adds r3, #6
800509e: 881b ldrh r3, [r3, #0]
80050a0: b29b uxth r3, r3
80050a2: 461a mov r2, r3
80050a4: 4b74 ldr r3, [pc, #464] ; (8005278 <DrawChannel_4+0x90c>)
80050a6: f853 2022 ldr.w r2, [r3, r2, lsl #2]
80050aa: 2303 movs r3, #3
80050ac: f7fd f982 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
80050b0: 79fb ldrb r3, [r7, #7]
80050b2: 4a72 ldr r2, [pc, #456] ; (800527c <DrawChannel_4+0x910>)
80050b4: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80050b8: 79fb ldrb r3, [r7, #7]
80050ba: 4a71 ldr r2, [pc, #452] ; (8005280 <DrawChannel_4+0x914>)
80050bc: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80050c0: f107 020c add.w r2, r7, #12
80050c4: 2303 movs r3, #3
80050c6: f7fd f975 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
80050ca: f000 bfc4 b.w 8006056 <DrawChannel_4+0x16ea>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
80050ce: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80050d2: 4860 ldr r0, [pc, #384] ; (8005254 <DrawChannel_4+0x8e8>)
80050d4: f7fd f8a8 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
80050d8: 79fb ldrb r3, [r7, #7]
80050da: 4a5f ldr r2, [pc, #380] ; (8005258 <DrawChannel_4+0x8ec>)
80050dc: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80050e0: 79fb ldrb r3, [r7, #7]
80050e2: 4a5e ldr r2, [pc, #376] ; (800525c <DrawChannel_4+0x8f0>)
80050e4: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80050e8: 4b58 ldr r3, [pc, #352] ; (800524c <DrawChannel_4+0x8e0>)
80050ea: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80050ee: b29b uxth r3, r3
80050f0: 461d mov r5, r3
80050f2: 79fb ldrb r3, [r7, #7]
80050f4: 4a55 ldr r2, [pc, #340] ; (800524c <DrawChannel_4+0x8e0>)
80050f6: 015b lsls r3, r3, #5
80050f8: 4413 add r3, r2
80050fa: 881b ldrh r3, [r3, #0]
80050fc: b29b uxth r3, r3
80050fe: 461c mov r4, r3
8005100: 4a57 ldr r2, [pc, #348] ; (8005260 <DrawChannel_4+0x8f4>)
8005102: 006b lsls r3, r5, #1
8005104: 4423 add r3, r4
8005106: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800510a: 2303 movs r3, #3
800510c: f7fd f952 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8005110: 79fb ldrb r3, [r7, #7]
8005112: 4a54 ldr r2, [pc, #336] ; (8005264 <DrawChannel_4+0x8f8>)
8005114: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005118: 79fb ldrb r3, [r7, #7]
800511a: 4a53 ldr r2, [pc, #332] ; (8005268 <DrawChannel_4+0x8fc>)
800511c: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005120: 4b4a ldr r3, [pc, #296] ; (800524c <DrawChannel_4+0x8e0>)
8005122: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005126: b29b uxth r3, r3
8005128: 4619 mov r1, r3
800512a: 79fb ldrb r3, [r7, #7]
800512c: 4a47 ldr r2, [pc, #284] ; (800524c <DrawChannel_4+0x8e0>)
800512e: 015b lsls r3, r3, #5
8005130: 4413 add r3, r2
8005132: 3302 adds r3, #2
8005134: 881b ldrh r3, [r3, #0]
8005136: b29b uxth r3, r3
8005138: 461d mov r5, r3
800513a: 4a4c ldr r2, [pc, #304] ; (800526c <DrawChannel_4+0x900>)
800513c: 460b mov r3, r1
800513e: 009b lsls r3, r3, #2
8005140: 440b add r3, r1
8005142: 442b add r3, r5
8005144: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005148: 2303 movs r3, #3
800514a: 4621 mov r1, r4
800514c: f7fd f932 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8005150: 79fb ldrb r3, [r7, #7]
8005152: 4a3c ldr r2, [pc, #240] ; (8005244 <DrawChannel_4+0x8d8>)
8005154: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005158: 79fb ldrb r3, [r7, #7]
800515a: 4a3b ldr r2, [pc, #236] ; (8005248 <DrawChannel_4+0x8dc>)
800515c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005160: 4b3a ldr r3, [pc, #232] ; (800524c <DrawChannel_4+0x8e0>)
8005162: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005166: b29b uxth r3, r3
8005168: 461d mov r5, r3
800516a: 79fb ldrb r3, [r7, #7]
800516c: 4a37 ldr r2, [pc, #220] ; (800524c <DrawChannel_4+0x8e0>)
800516e: 015b lsls r3, r3, #5
8005170: 4413 add r3, r2
8005172: 3304 adds r3, #4
8005174: 881b ldrh r3, [r3, #0]
8005176: b29b uxth r3, r3
8005178: 461c mov r4, r3
800517a: 4a35 ldr r2, [pc, #212] ; (8005250 <DrawChannel_4+0x8e4>)
800517c: 00eb lsls r3, r5, #3
800517e: 4423 add r3, r4
8005180: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005184: 2303 movs r3, #3
8005186: f7fd f915 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
800518a: 79fb ldrb r3, [r7, #7]
800518c: 4a38 ldr r2, [pc, #224] ; (8005270 <DrawChannel_4+0x904>)
800518e: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005192: 79fb ldrb r3, [r7, #7]
8005194: 4a37 ldr r2, [pc, #220] ; (8005274 <DrawChannel_4+0x908>)
8005196: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800519a: 79fb ldrb r3, [r7, #7]
800519c: 4a2b ldr r2, [pc, #172] ; (800524c <DrawChannel_4+0x8e0>)
800519e: 015b lsls r3, r3, #5
80051a0: 4413 add r3, r2
80051a2: 3306 adds r3, #6
80051a4: 881b ldrh r3, [r3, #0]
80051a6: b29b uxth r3, r3
80051a8: 461a mov r2, r3
80051aa: 4b33 ldr r3, [pc, #204] ; (8005278 <DrawChannel_4+0x90c>)
80051ac: f853 2022 ldr.w r2, [r3, r2, lsl #2]
80051b0: 2303 movs r3, #3
80051b2: f7fd f8ff bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
80051b6: 79fb ldrb r3, [r7, #7]
80051b8: 4a30 ldr r2, [pc, #192] ; (800527c <DrawChannel_4+0x910>)
80051ba: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80051be: 79fb ldrb r3, [r7, #7]
80051c0: 4a2f ldr r2, [pc, #188] ; (8005280 <DrawChannel_4+0x914>)
80051c2: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80051c6: f107 020c add.w r2, r7, #12
80051ca: 2303 movs r3, #3
80051cc: f7fd f8f2 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
80051d0: f000 bf41 b.w 8006056 <DrawChannel_4+0x16ea>
if(menupos == Km)
80051d4: 4b18 ldr r3, [pc, #96] ; (8005238 <DrawChannel_4+0x8cc>)
80051d6: 781b ldrb r3, [r3, #0]
80051d8: b2db uxtb r3, r3
80051da: 2b03 cmp r3, #3
80051dc: f040 8158 bne.w 8005490 <DrawChannel_4+0xb24>
if(ACTIVE_CHANNEL == ch)
80051e0: 79fa ldrb r2, [r7, #7]
80051e2: 4b16 ldr r3, [pc, #88] ; (800523c <DrawChannel_4+0x8d0>)
80051e4: 681b ldr r3, [r3, #0]
80051e6: 429a cmp r2, r3
80051e8: f040 80cf bne.w 800538a <DrawChannel_4+0xa1e>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
80051ec: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80051f0: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
80051f4: f7fd f818 bl 8002228 <LCD_SetColors>
if(focused)
80051f8: 4b11 ldr r3, [pc, #68] ; (8005240 <DrawChannel_4+0x8d4>)
80051fa: 781b ldrb r3, [r3, #0]
80051fc: b2db uxtb r3, r3
80051fe: 2b00 cmp r3, #0
8005200: d040 beq.n 8005284 <DrawChannel_4+0x918>
if(blk)
8005202: 683b ldr r3, [r7, #0]
8005204: 2b00 cmp r3, #0
8005206: d053 beq.n 80052b0 <DrawChannel_4+0x944>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8005208: 79fb ldrb r3, [r7, #7]
800520a: 4a19 ldr r2, [pc, #100] ; (8005270 <DrawChannel_4+0x904>)
800520c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005210: 79fb ldrb r3, [r7, #7]
8005212: 4a18 ldr r2, [pc, #96] ; (8005274 <DrawChannel_4+0x908>)
8005214: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005218: 79fb ldrb r3, [r7, #7]
800521a: 4a0c ldr r2, [pc, #48] ; (800524c <DrawChannel_4+0x8e0>)
800521c: 015b lsls r3, r3, #5
800521e: 4413 add r3, r2
8005220: 3306 adds r3, #6
8005222: 881b ldrh r3, [r3, #0]
8005224: b29b uxth r3, r3
8005226: 461a mov r2, r3
8005228: 4b13 ldr r3, [pc, #76] ; (8005278 <DrawChannel_4+0x90c>)
800522a: f853 2022 ldr.w r2, [r3, r2, lsl #2]
800522e: 2303 movs r3, #3
8005230: f7fd f8c0 bl 80023b4 <BSP_LCD_DisplayStringAt>
8005234: e03c b.n 80052b0 <DrawChannel_4+0x944>
8005236: bf00 nop
8005238: 20020010 .word 0x20020010
800523c: 2006b1c0 .word 0x2006b1c0
8005240: 20020140 .word 0x20020140
8005244: 0800fce8 .word 0x0800fce8
8005248: 0800fcf0 .word 0x0800fcf0
800524c: 2006b3f8 .word 0x2006b3f8
8005250: 2002009c .word 0x2002009c
8005254: ffd8aa57 .word 0xffd8aa57
8005258: 0800fcc8 .word 0x0800fcc8
800525c: 0800fcd0 .word 0x0800fcd0
8005260: 20020030 .word 0x20020030
8005264: 0800fcd8 .word 0x0800fcd8
8005268: 0800fce0 .word 0x0800fce0
800526c: 20020074 .word 0x20020074
8005270: 0800fcf8 .word 0x0800fcf8
8005274: 0800fd00 .word 0x0800fd00
8005278: 20020040 .word 0x20020040
800527c: 0800fd08 .word 0x0800fd08
8005280: 0800fd10 .word 0x0800fd10
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8005284: 79fb ldrb r3, [r7, #7]
8005286: 4a96 ldr r2, [pc, #600] ; (80054e0 <DrawChannel_4+0xb74>)
8005288: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800528c: 79fb ldrb r3, [r7, #7]
800528e: 4a95 ldr r2, [pc, #596] ; (80054e4 <DrawChannel_4+0xb78>)
8005290: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005294: 79fb ldrb r3, [r7, #7]
8005296: 4a94 ldr r2, [pc, #592] ; (80054e8 <DrawChannel_4+0xb7c>)
8005298: 015b lsls r3, r3, #5
800529a: 4413 add r3, r2
800529c: 3306 adds r3, #6
800529e: 881b ldrh r3, [r3, #0]
80052a0: b29b uxth r3, r3
80052a2: 461a mov r2, r3
80052a4: 4b91 ldr r3, [pc, #580] ; (80054ec <DrawChannel_4+0xb80>)
80052a6: f853 2022 ldr.w r2, [r3, r2, lsl #2]
80052aa: 2303 movs r3, #3
80052ac: f7fd f882 bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
80052b0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80052b4: 488e ldr r0, [pc, #568] ; (80054f0 <DrawChannel_4+0xb84>)
80052b6: f7fc ffb7 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
80052ba: 79fb ldrb r3, [r7, #7]
80052bc: 4a8d ldr r2, [pc, #564] ; (80054f4 <DrawChannel_4+0xb88>)
80052be: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80052c2: 79fb ldrb r3, [r7, #7]
80052c4: 4a8c ldr r2, [pc, #560] ; (80054f8 <DrawChannel_4+0xb8c>)
80052c6: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80052ca: 4b87 ldr r3, [pc, #540] ; (80054e8 <DrawChannel_4+0xb7c>)
80052cc: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80052d0: b29b uxth r3, r3
80052d2: 461d mov r5, r3
80052d4: 79fb ldrb r3, [r7, #7]
80052d6: 4a84 ldr r2, [pc, #528] ; (80054e8 <DrawChannel_4+0xb7c>)
80052d8: 015b lsls r3, r3, #5
80052da: 4413 add r3, r2
80052dc: 881b ldrh r3, [r3, #0]
80052de: b29b uxth r3, r3
80052e0: 461c mov r4, r3
80052e2: 4a86 ldr r2, [pc, #536] ; (80054fc <DrawChannel_4+0xb90>)
80052e4: 006b lsls r3, r5, #1
80052e6: 4423 add r3, r4
80052e8: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80052ec: 2303 movs r3, #3
80052ee: f7fd f861 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
80052f2: 79fb ldrb r3, [r7, #7]
80052f4: 4a82 ldr r2, [pc, #520] ; (8005500 <DrawChannel_4+0xb94>)
80052f6: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80052fa: 79fb ldrb r3, [r7, #7]
80052fc: 4a81 ldr r2, [pc, #516] ; (8005504 <DrawChannel_4+0xb98>)
80052fe: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005302: 4b79 ldr r3, [pc, #484] ; (80054e8 <DrawChannel_4+0xb7c>)
8005304: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005308: b29b uxth r3, r3
800530a: 4619 mov r1, r3
800530c: 79fb ldrb r3, [r7, #7]
800530e: 4a76 ldr r2, [pc, #472] ; (80054e8 <DrawChannel_4+0xb7c>)
8005310: 015b lsls r3, r3, #5
8005312: 4413 add r3, r2
8005314: 3302 adds r3, #2
8005316: 881b ldrh r3, [r3, #0]
8005318: b29b uxth r3, r3
800531a: 461d mov r5, r3
800531c: 4a7a ldr r2, [pc, #488] ; (8005508 <DrawChannel_4+0xb9c>)
800531e: 460b mov r3, r1
8005320: 009b lsls r3, r3, #2
8005322: 440b add r3, r1
8005324: 442b add r3, r5
8005326: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800532a: 2303 movs r3, #3
800532c: 4621 mov r1, r4
800532e: f7fd f841 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8005332: 79fb ldrb r3, [r7, #7]
8005334: 4a75 ldr r2, [pc, #468] ; (800550c <DrawChannel_4+0xba0>)
8005336: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800533a: 79fb ldrb r3, [r7, #7]
800533c: 4a74 ldr r2, [pc, #464] ; (8005510 <DrawChannel_4+0xba4>)
800533e: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005342: 4b69 ldr r3, [pc, #420] ; (80054e8 <DrawChannel_4+0xb7c>)
8005344: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005348: b29b uxth r3, r3
800534a: 461d mov r5, r3
800534c: 79fb ldrb r3, [r7, #7]
800534e: 4a66 ldr r2, [pc, #408] ; (80054e8 <DrawChannel_4+0xb7c>)
8005350: 015b lsls r3, r3, #5
8005352: 4413 add r3, r2
8005354: 3304 adds r3, #4
8005356: 881b ldrh r3, [r3, #0]
8005358: b29b uxth r3, r3
800535a: 461c mov r4, r3
800535c: 4a6d ldr r2, [pc, #436] ; (8005514 <DrawChannel_4+0xba8>)
800535e: 00eb lsls r3, r5, #3
8005360: 4423 add r3, r4
8005362: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005366: 2303 movs r3, #3
8005368: f7fd f824 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
800536c: 79fb ldrb r3, [r7, #7]
800536e: 4a6a ldr r2, [pc, #424] ; (8005518 <DrawChannel_4+0xbac>)
8005370: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005374: 79fb ldrb r3, [r7, #7]
8005376: 4a69 ldr r2, [pc, #420] ; (800551c <DrawChannel_4+0xbb0>)
8005378: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800537c: f107 020c add.w r2, r7, #12
8005380: 2303 movs r3, #3
8005382: f7fd f817 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8005386: f000 be66 b.w 8006056 <DrawChannel_4+0x16ea>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
800538a: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800538e: 4858 ldr r0, [pc, #352] ; (80054f0 <DrawChannel_4+0xb84>)
8005390: f7fc ff4a bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8005394: 79fb ldrb r3, [r7, #7]
8005396: 4a57 ldr r2, [pc, #348] ; (80054f4 <DrawChannel_4+0xb88>)
8005398: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800539c: 79fb ldrb r3, [r7, #7]
800539e: 4a56 ldr r2, [pc, #344] ; (80054f8 <DrawChannel_4+0xb8c>)
80053a0: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80053a4: 4b50 ldr r3, [pc, #320] ; (80054e8 <DrawChannel_4+0xb7c>)
80053a6: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80053aa: b29b uxth r3, r3
80053ac: 461d mov r5, r3
80053ae: 79fb ldrb r3, [r7, #7]
80053b0: 4a4d ldr r2, [pc, #308] ; (80054e8 <DrawChannel_4+0xb7c>)
80053b2: 015b lsls r3, r3, #5
80053b4: 4413 add r3, r2
80053b6: 881b ldrh r3, [r3, #0]
80053b8: b29b uxth r3, r3
80053ba: 461c mov r4, r3
80053bc: 4a4f ldr r2, [pc, #316] ; (80054fc <DrawChannel_4+0xb90>)
80053be: 006b lsls r3, r5, #1
80053c0: 4423 add r3, r4
80053c2: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80053c6: 2303 movs r3, #3
80053c8: f7fc fff4 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
80053cc: 79fb ldrb r3, [r7, #7]
80053ce: 4a4c ldr r2, [pc, #304] ; (8005500 <DrawChannel_4+0xb94>)
80053d0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80053d4: 79fb ldrb r3, [r7, #7]
80053d6: 4a4b ldr r2, [pc, #300] ; (8005504 <DrawChannel_4+0xb98>)
80053d8: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
80053dc: 4b42 ldr r3, [pc, #264] ; (80054e8 <DrawChannel_4+0xb7c>)
80053de: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80053e2: b29b uxth r3, r3
80053e4: 4619 mov r1, r3
80053e6: 79fb ldrb r3, [r7, #7]
80053e8: 4a3f ldr r2, [pc, #252] ; (80054e8 <DrawChannel_4+0xb7c>)
80053ea: 015b lsls r3, r3, #5
80053ec: 4413 add r3, r2
80053ee: 3302 adds r3, #2
80053f0: 881b ldrh r3, [r3, #0]
80053f2: b29b uxth r3, r3
80053f4: 461d mov r5, r3
80053f6: 4a44 ldr r2, [pc, #272] ; (8005508 <DrawChannel_4+0xb9c>)
80053f8: 460b mov r3, r1
80053fa: 009b lsls r3, r3, #2
80053fc: 440b add r3, r1
80053fe: 442b add r3, r5
8005400: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005404: 2303 movs r3, #3
8005406: 4621 mov r1, r4
8005408: f7fc ffd4 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
800540c: 79fb ldrb r3, [r7, #7]
800540e: 4a3f ldr r2, [pc, #252] ; (800550c <DrawChannel_4+0xba0>)
8005410: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005414: 79fb ldrb r3, [r7, #7]
8005416: 4a3e ldr r2, [pc, #248] ; (8005510 <DrawChannel_4+0xba4>)
8005418: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800541c: 4b32 ldr r3, [pc, #200] ; (80054e8 <DrawChannel_4+0xb7c>)
800541e: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005422: b29b uxth r3, r3
8005424: 461d mov r5, r3
8005426: 79fb ldrb r3, [r7, #7]
8005428: 4a2f ldr r2, [pc, #188] ; (80054e8 <DrawChannel_4+0xb7c>)
800542a: 015b lsls r3, r3, #5
800542c: 4413 add r3, r2
800542e: 3304 adds r3, #4
8005430: 881b ldrh r3, [r3, #0]
8005432: b29b uxth r3, r3
8005434: 461c mov r4, r3
8005436: 4a37 ldr r2, [pc, #220] ; (8005514 <DrawChannel_4+0xba8>)
8005438: 00eb lsls r3, r5, #3
800543a: 4423 add r3, r4
800543c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005440: 2303 movs r3, #3
8005442: f7fc ffb7 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8005446: 79fb ldrb r3, [r7, #7]
8005448: 4a25 ldr r2, [pc, #148] ; (80054e0 <DrawChannel_4+0xb74>)
800544a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800544e: 79fb ldrb r3, [r7, #7]
8005450: 4a24 ldr r2, [pc, #144] ; (80054e4 <DrawChannel_4+0xb78>)
8005452: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005456: 79fb ldrb r3, [r7, #7]
8005458: 4a23 ldr r2, [pc, #140] ; (80054e8 <DrawChannel_4+0xb7c>)
800545a: 015b lsls r3, r3, #5
800545c: 4413 add r3, r2
800545e: 3306 adds r3, #6
8005460: 881b ldrh r3, [r3, #0]
8005462: b29b uxth r3, r3
8005464: 461a mov r2, r3
8005466: 4b21 ldr r3, [pc, #132] ; (80054ec <DrawChannel_4+0xb80>)
8005468: f853 2022 ldr.w r2, [r3, r2, lsl #2]
800546c: 2303 movs r3, #3
800546e: f7fc ffa1 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
8005472: 79fb ldrb r3, [r7, #7]
8005474: 4a28 ldr r2, [pc, #160] ; (8005518 <DrawChannel_4+0xbac>)
8005476: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800547a: 79fb ldrb r3, [r7, #7]
800547c: 4a27 ldr r2, [pc, #156] ; (800551c <DrawChannel_4+0xbb0>)
800547e: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005482: f107 020c add.w r2, r7, #12
8005486: 2303 movs r3, #3
8005488: f7fc ff94 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
800548c: f000 bde3 b.w 8006056 <DrawChannel_4+0x16ea>
if(menupos == Kn)
8005490: 4b23 ldr r3, [pc, #140] ; (8005520 <DrawChannel_4+0xbb4>)
8005492: 781b ldrb r3, [r3, #0]
8005494: b2db uxtb r3, r3
8005496: 2b04 cmp r3, #4
8005498: f040 816e bne.w 8005778 <DrawChannel_4+0xe0c>
if(ACTIVE_CHANNEL == ch)
800549c: 79fa ldrb r2, [r7, #7]
800549e: 4b21 ldr r3, [pc, #132] ; (8005524 <DrawChannel_4+0xbb8>)
80054a0: 681b ldr r3, [r3, #0]
80054a2: 429a cmp r2, r3
80054a4: f040 80c5 bne.w 8005632 <DrawChannel_4+0xcc6>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
80054a8: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80054ac: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
80054b0: f7fc feba bl 8002228 <LCD_SetColors>
if(focused)
80054b4: 4b1c ldr r3, [pc, #112] ; (8005528 <DrawChannel_4+0xbbc>)
80054b6: 781b ldrb r3, [r3, #0]
80054b8: b2db uxtb r3, r3
80054ba: 2b00 cmp r3, #0
80054bc: d036 beq.n 800552c <DrawChannel_4+0xbc0>
if(blk)
80054be: 683b ldr r3, [r7, #0]
80054c0: 2b00 cmp r3, #0
80054c2: d040 beq.n 8005546 <DrawChannel_4+0xbda>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
80054c4: 79fb ldrb r3, [r7, #7]
80054c6: 4a14 ldr r2, [pc, #80] ; (8005518 <DrawChannel_4+0xbac>)
80054c8: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80054cc: 79fb ldrb r3, [r7, #7]
80054ce: 4a13 ldr r2, [pc, #76] ; (800551c <DrawChannel_4+0xbb0>)
80054d0: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80054d4: f107 020c add.w r2, r7, #12
80054d8: 2303 movs r3, #3
80054da: f7fc ff6b bl 80023b4 <BSP_LCD_DisplayStringAt>
80054de: e032 b.n 8005546 <DrawChannel_4+0xbda>
80054e0: 0800fcf8 .word 0x0800fcf8
80054e4: 0800fd00 .word 0x0800fd00
80054e8: 2006b3f8 .word 0x2006b3f8
80054ec: 20020040 .word 0x20020040
80054f0: ffd8aa57 .word 0xffd8aa57
80054f4: 0800fcc8 .word 0x0800fcc8
80054f8: 0800fcd0 .word 0x0800fcd0
80054fc: 20020030 .word 0x20020030
8005500: 0800fcd8 .word 0x0800fcd8
8005504: 0800fce0 .word 0x0800fce0
8005508: 20020074 .word 0x20020074
800550c: 0800fce8 .word 0x0800fce8
8005510: 0800fcf0 .word 0x0800fcf0
8005514: 2002009c .word 0x2002009c
8005518: 0800fd08 .word 0x0800fd08
800551c: 0800fd10 .word 0x0800fd10
8005520: 20020010 .word 0x20020010
8005524: 2006b1c0 .word 0x2006b1c0
8005528: 20020140 .word 0x20020140
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
800552c: 79fb ldrb r3, [r7, #7]
800552e: 4a82 ldr r2, [pc, #520] ; (8005738 <DrawChannel_4+0xdcc>)
8005530: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005534: 79fb ldrb r3, [r7, #7]
8005536: 4a81 ldr r2, [pc, #516] ; (800573c <DrawChannel_4+0xdd0>)
8005538: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800553c: f107 020c add.w r2, r7, #12
8005540: 2303 movs r3, #3
8005542: f7fc ff37 bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8005546: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800554a: 487d ldr r0, [pc, #500] ; (8005740 <DrawChannel_4+0xdd4>)
800554c: f7fc fe6c bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8005550: 79fb ldrb r3, [r7, #7]
8005552: 4a7c ldr r2, [pc, #496] ; (8005744 <DrawChannel_4+0xdd8>)
8005554: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005558: 79fb ldrb r3, [r7, #7]
800555a: 4a7b ldr r2, [pc, #492] ; (8005748 <DrawChannel_4+0xddc>)
800555c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005560: 4b7a ldr r3, [pc, #488] ; (800574c <DrawChannel_4+0xde0>)
8005562: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005566: b29b uxth r3, r3
8005568: 461d mov r5, r3
800556a: 79fb ldrb r3, [r7, #7]
800556c: 4a77 ldr r2, [pc, #476] ; (800574c <DrawChannel_4+0xde0>)
800556e: 015b lsls r3, r3, #5
8005570: 4413 add r3, r2
8005572: 881b ldrh r3, [r3, #0]
8005574: b29b uxth r3, r3
8005576: 461c mov r4, r3
8005578: 4a75 ldr r2, [pc, #468] ; (8005750 <DrawChannel_4+0xde4>)
800557a: 006b lsls r3, r5, #1
800557c: 4423 add r3, r4
800557e: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005582: 2303 movs r3, #3
8005584: f7fc ff16 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8005588: 79fb ldrb r3, [r7, #7]
800558a: 4a72 ldr r2, [pc, #456] ; (8005754 <DrawChannel_4+0xde8>)
800558c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005590: 79fb ldrb r3, [r7, #7]
8005592: 4a71 ldr r2, [pc, #452] ; (8005758 <DrawChannel_4+0xdec>)
8005594: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005598: 4b6c ldr r3, [pc, #432] ; (800574c <DrawChannel_4+0xde0>)
800559a: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800559e: b29b uxth r3, r3
80055a0: 4619 mov r1, r3
80055a2: 79fb ldrb r3, [r7, #7]
80055a4: 4a69 ldr r2, [pc, #420] ; (800574c <DrawChannel_4+0xde0>)
80055a6: 015b lsls r3, r3, #5
80055a8: 4413 add r3, r2
80055aa: 3302 adds r3, #2
80055ac: 881b ldrh r3, [r3, #0]
80055ae: b29b uxth r3, r3
80055b0: 461d mov r5, r3
80055b2: 4a6a ldr r2, [pc, #424] ; (800575c <DrawChannel_4+0xdf0>)
80055b4: 460b mov r3, r1
80055b6: 009b lsls r3, r3, #2
80055b8: 440b add r3, r1
80055ba: 442b add r3, r5
80055bc: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80055c0: 2303 movs r3, #3
80055c2: 4621 mov r1, r4
80055c4: f7fc fef6 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
80055c8: 79fb ldrb r3, [r7, #7]
80055ca: 4a65 ldr r2, [pc, #404] ; (8005760 <DrawChannel_4+0xdf4>)
80055cc: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80055d0: 79fb ldrb r3, [r7, #7]
80055d2: 4a64 ldr r2, [pc, #400] ; (8005764 <DrawChannel_4+0xdf8>)
80055d4: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80055d8: 4b5c ldr r3, [pc, #368] ; (800574c <DrawChannel_4+0xde0>)
80055da: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80055de: b29b uxth r3, r3
80055e0: 461d mov r5, r3
80055e2: 79fb ldrb r3, [r7, #7]
80055e4: 4a59 ldr r2, [pc, #356] ; (800574c <DrawChannel_4+0xde0>)
80055e6: 015b lsls r3, r3, #5
80055e8: 4413 add r3, r2
80055ea: 3304 adds r3, #4
80055ec: 881b ldrh r3, [r3, #0]
80055ee: b29b uxth r3, r3
80055f0: 461c mov r4, r3
80055f2: 4a5d ldr r2, [pc, #372] ; (8005768 <DrawChannel_4+0xdfc>)
80055f4: 00eb lsls r3, r5, #3
80055f6: 4423 add r3, r4
80055f8: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80055fc: 2303 movs r3, #3
80055fe: f7fc fed9 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8005602: 79fb ldrb r3, [r7, #7]
8005604: 4a59 ldr r2, [pc, #356] ; (800576c <DrawChannel_4+0xe00>)
8005606: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800560a: 79fb ldrb r3, [r7, #7]
800560c: 4a58 ldr r2, [pc, #352] ; (8005770 <DrawChannel_4+0xe04>)
800560e: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005612: 79fb ldrb r3, [r7, #7]
8005614: 4a4d ldr r2, [pc, #308] ; (800574c <DrawChannel_4+0xde0>)
8005616: 015b lsls r3, r3, #5
8005618: 4413 add r3, r2
800561a: 3306 adds r3, #6
800561c: 881b ldrh r3, [r3, #0]
800561e: b29b uxth r3, r3
8005620: 461a mov r2, r3
8005622: 4b54 ldr r3, [pc, #336] ; (8005774 <DrawChannel_4+0xe08>)
8005624: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005628: 2303 movs r3, #3
800562a: f7fc fec3 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
800562e: f000 bd12 b.w 8006056 <DrawChannel_4+0x16ea>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8005632: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005636: 4842 ldr r0, [pc, #264] ; (8005740 <DrawChannel_4+0xdd4>)
8005638: f7fc fdf6 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
800563c: 79fb ldrb r3, [r7, #7]
800563e: 4a41 ldr r2, [pc, #260] ; (8005744 <DrawChannel_4+0xdd8>)
8005640: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005644: 79fb ldrb r3, [r7, #7]
8005646: 4a40 ldr r2, [pc, #256] ; (8005748 <DrawChannel_4+0xddc>)
8005648: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800564c: 4b3f ldr r3, [pc, #252] ; (800574c <DrawChannel_4+0xde0>)
800564e: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005652: b29b uxth r3, r3
8005654: 461d mov r5, r3
8005656: 79fb ldrb r3, [r7, #7]
8005658: 4a3c ldr r2, [pc, #240] ; (800574c <DrawChannel_4+0xde0>)
800565a: 015b lsls r3, r3, #5
800565c: 4413 add r3, r2
800565e: 881b ldrh r3, [r3, #0]
8005660: b29b uxth r3, r3
8005662: 461c mov r4, r3
8005664: 4a3a ldr r2, [pc, #232] ; (8005750 <DrawChannel_4+0xde4>)
8005666: 006b lsls r3, r5, #1
8005668: 4423 add r3, r4
800566a: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800566e: 2303 movs r3, #3
8005670: f7fc fea0 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8005674: 79fb ldrb r3, [r7, #7]
8005676: 4a37 ldr r2, [pc, #220] ; (8005754 <DrawChannel_4+0xde8>)
8005678: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800567c: 79fb ldrb r3, [r7, #7]
800567e: 4a36 ldr r2, [pc, #216] ; (8005758 <DrawChannel_4+0xdec>)
8005680: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005684: 4b31 ldr r3, [pc, #196] ; (800574c <DrawChannel_4+0xde0>)
8005686: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800568a: b29b uxth r3, r3
800568c: 4619 mov r1, r3
800568e: 79fb ldrb r3, [r7, #7]
8005690: 4a2e ldr r2, [pc, #184] ; (800574c <DrawChannel_4+0xde0>)
8005692: 015b lsls r3, r3, #5
8005694: 4413 add r3, r2
8005696: 3302 adds r3, #2
8005698: 881b ldrh r3, [r3, #0]
800569a: b29b uxth r3, r3
800569c: 461d mov r5, r3
800569e: 4a2f ldr r2, [pc, #188] ; (800575c <DrawChannel_4+0xdf0>)
80056a0: 460b mov r3, r1
80056a2: 009b lsls r3, r3, #2
80056a4: 440b add r3, r1
80056a6: 442b add r3, r5
80056a8: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80056ac: 2303 movs r3, #3
80056ae: 4621 mov r1, r4
80056b0: f7fc fe80 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
80056b4: 79fb ldrb r3, [r7, #7]
80056b6: 4a2a ldr r2, [pc, #168] ; (8005760 <DrawChannel_4+0xdf4>)
80056b8: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80056bc: 79fb ldrb r3, [r7, #7]
80056be: 4a29 ldr r2, [pc, #164] ; (8005764 <DrawChannel_4+0xdf8>)
80056c0: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80056c4: 4b21 ldr r3, [pc, #132] ; (800574c <DrawChannel_4+0xde0>)
80056c6: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80056ca: b29b uxth r3, r3
80056cc: 461d mov r5, r3
80056ce: 79fb ldrb r3, [r7, #7]
80056d0: 4a1e ldr r2, [pc, #120] ; (800574c <DrawChannel_4+0xde0>)
80056d2: 015b lsls r3, r3, #5
80056d4: 4413 add r3, r2
80056d6: 3304 adds r3, #4
80056d8: 881b ldrh r3, [r3, #0]
80056da: b29b uxth r3, r3
80056dc: 461c mov r4, r3
80056de: 4a22 ldr r2, [pc, #136] ; (8005768 <DrawChannel_4+0xdfc>)
80056e0: 00eb lsls r3, r5, #3
80056e2: 4423 add r3, r4
80056e4: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80056e8: 2303 movs r3, #3
80056ea: f7fc fe63 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
80056ee: 79fb ldrb r3, [r7, #7]
80056f0: 4a1e ldr r2, [pc, #120] ; (800576c <DrawChannel_4+0xe00>)
80056f2: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80056f6: 79fb ldrb r3, [r7, #7]
80056f8: 4a1d ldr r2, [pc, #116] ; (8005770 <DrawChannel_4+0xe04>)
80056fa: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80056fe: 79fb ldrb r3, [r7, #7]
8005700: 4a12 ldr r2, [pc, #72] ; (800574c <DrawChannel_4+0xde0>)
8005702: 015b lsls r3, r3, #5
8005704: 4413 add r3, r2
8005706: 3306 adds r3, #6
8005708: 881b ldrh r3, [r3, #0]
800570a: b29b uxth r3, r3
800570c: 461a mov r2, r3
800570e: 4b19 ldr r3, [pc, #100] ; (8005774 <DrawChannel_4+0xe08>)
8005710: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005714: 2303 movs r3, #3
8005716: f7fc fe4d bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
800571a: 79fb ldrb r3, [r7, #7]
800571c: 4a06 ldr r2, [pc, #24] ; (8005738 <DrawChannel_4+0xdcc>)
800571e: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005722: 79fb ldrb r3, [r7, #7]
8005724: 4a05 ldr r2, [pc, #20] ; (800573c <DrawChannel_4+0xdd0>)
8005726: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800572a: f107 020c add.w r2, r7, #12
800572e: 2303 movs r3, #3
8005730: f7fc fe40 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8005734: f000 bc8f b.w 8006056 <DrawChannel_4+0x16ea>
8005738: 0800fd08 .word 0x0800fd08
800573c: 0800fd10 .word 0x0800fd10
8005740: ffd8aa57 .word 0xffd8aa57
8005744: 0800fcc8 .word 0x0800fcc8
8005748: 0800fcd0 .word 0x0800fcd0
800574c: 2006b3f8 .word 0x2006b3f8
8005750: 20020030 .word 0x20020030
8005754: 0800fcd8 .word 0x0800fcd8
8005758: 0800fce0 .word 0x0800fce0
800575c: 20020074 .word 0x20020074
8005760: 0800fce8 .word 0x0800fce8
8005764: 0800fcf0 .word 0x0800fcf0
8005768: 2002009c .word 0x2002009c
800576c: 0800fcf8 .word 0x0800fcf8
8005770: 0800fd00 .word 0x0800fd00
8005774: 20020040 .word 0x20020040
if(menupos == Kiks)
8005778: 4baf ldr r3, [pc, #700] ; (8005a38 <DrawChannel_4+0x10cc>)
800577a: 781b ldrb r3, [r3, #0]
800577c: b2db uxtb r3, r3
800577e: 2b05 cmp r3, #5
8005780: f040 8182 bne.w 8005a88 <DrawChannel_4+0x111c>
if(ACTIVE_CHANNEL == ch)
8005784: 79fa ldrb r2, [r7, #7]
8005786: 4bad ldr r3, [pc, #692] ; (8005a3c <DrawChannel_4+0x10d0>)
8005788: 681b ldr r3, [r3, #0]
800578a: 429a cmp r2, r3
800578c: f040 80d2 bne.w 8005934 <DrawChannel_4+0xfc8>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8005790: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005794: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8005798: f7fc fd46 bl 8002228 <LCD_SetColors>
if(blk)
800579c: 683b ldr r3, [r7, #0]
800579e: 2b00 cmp r3, #0
80057a0: d015 beq.n 80057ce <DrawChannel_4+0xe62>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], (char *) pNUMS[pardata.amplif[ch].IKS], LEFT_MODE);
80057a2: 79fb ldrb r3, [r7, #7]
80057a4: 4aa6 ldr r2, [pc, #664] ; (8005a40 <DrawChannel_4+0x10d4>)
80057a6: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80057aa: 79fb ldrb r3, [r7, #7]
80057ac: 4aa5 ldr r2, [pc, #660] ; (8005a44 <DrawChannel_4+0x10d8>)
80057ae: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80057b2: 79fb ldrb r3, [r7, #7]
80057b4: 4aa4 ldr r2, [pc, #656] ; (8005a48 <DrawChannel_4+0x10dc>)
80057b6: 015b lsls r3, r3, #5
80057b8: 4413 add r3, r2
80057ba: 330c adds r3, #12
80057bc: 881b ldrh r3, [r3, #0]
80057be: b29b uxth r3, r3
80057c0: 461a mov r2, r3
80057c2: 4ba2 ldr r3, [pc, #648] ; (8005a4c <DrawChannel_4+0x10e0>)
80057c4: f853 2022 ldr.w r2, [r3, r2, lsl #2]
80057c8: 2303 movs r3, #3
80057ca: f7fc fdf3 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch]+7, YPOS_KN_4[ch], ".", LEFT_MODE);
80057ce: 79fb ldrb r3, [r7, #7]
80057d0: 4a9b ldr r2, [pc, #620] ; (8005a40 <DrawChannel_4+0x10d4>)
80057d2: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
80057d6: 3307 adds r3, #7
80057d8: b298 uxth r0, r3
80057da: 79fb ldrb r3, [r7, #7]
80057dc: 4a99 ldr r2, [pc, #612] ; (8005a44 <DrawChannel_4+0x10d8>)
80057de: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80057e2: 2303 movs r3, #3
80057e4: 4a9a ldr r2, [pc, #616] ; (8005a50 <DrawChannel_4+0x10e4>)
80057e6: f7fc fde5 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch]+14, YPOS_KN_4[ch], (char *) pNUMS[pardata.amplif[ch].IKD], LEFT_MODE);
80057ea: 79fb ldrb r3, [r7, #7]
80057ec: 4a94 ldr r2, [pc, #592] ; (8005a40 <DrawChannel_4+0x10d4>)
80057ee: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
80057f2: 330e adds r3, #14
80057f4: b298 uxth r0, r3
80057f6: 79fb ldrb r3, [r7, #7]
80057f8: 4a92 ldr r2, [pc, #584] ; (8005a44 <DrawChannel_4+0x10d8>)
80057fa: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80057fe: 79fb ldrb r3, [r7, #7]
8005800: 4a91 ldr r2, [pc, #580] ; (8005a48 <DrawChannel_4+0x10dc>)
8005802: 015b lsls r3, r3, #5
8005804: 4413 add r3, r2
8005806: 330a adds r3, #10
8005808: 881b ldrh r3, [r3, #0]
800580a: b29b uxth r3, r3
800580c: 461a mov r2, r3
800580e: 4b8f ldr r3, [pc, #572] ; (8005a4c <DrawChannel_4+0x10e0>)
8005810: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005814: 2303 movs r3, #3
8005816: f7fc fdcd bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch]+21, YPOS_KN_4[ch], (char *) pNUMS[pardata.amplif[ch].IKE], LEFT_MODE);
800581a: 79fb ldrb r3, [r7, #7]
800581c: 4a88 ldr r2, [pc, #544] ; (8005a40 <DrawChannel_4+0x10d4>)
800581e: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
8005822: 3315 adds r3, #21
8005824: b298 uxth r0, r3
8005826: 79fb ldrb r3, [r7, #7]
8005828: 4a86 ldr r2, [pc, #536] ; (8005a44 <DrawChannel_4+0x10d8>)
800582a: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800582e: 79fb ldrb r3, [r7, #7]
8005830: 4a85 ldr r2, [pc, #532] ; (8005a48 <DrawChannel_4+0x10dc>)
8005832: 015b lsls r3, r3, #5
8005834: 4413 add r3, r2
8005836: 3308 adds r3, #8
8005838: 881b ldrh r3, [r3, #0]
800583a: b29b uxth r3, r3
800583c: 461a mov r2, r3
800583e: 4b83 ldr r3, [pc, #524] ; (8005a4c <DrawChannel_4+0x10e0>)
8005840: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005844: 2303 movs r3, #3
8005846: f7fc fdb5 bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
800584a: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800584e: 4881 ldr r0, [pc, #516] ; (8005a54 <DrawChannel_4+0x10e8>)
8005850: f7fc fcea bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8005854: 79fb ldrb r3, [r7, #7]
8005856: 4a80 ldr r2, [pc, #512] ; (8005a58 <DrawChannel_4+0x10ec>)
8005858: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800585c: 79fb ldrb r3, [r7, #7]
800585e: 4a7f ldr r2, [pc, #508] ; (8005a5c <DrawChannel_4+0x10f0>)
8005860: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005864: 4b78 ldr r3, [pc, #480] ; (8005a48 <DrawChannel_4+0x10dc>)
8005866: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800586a: b29b uxth r3, r3
800586c: 461d mov r5, r3
800586e: 79fb ldrb r3, [r7, #7]
8005870: 4a75 ldr r2, [pc, #468] ; (8005a48 <DrawChannel_4+0x10dc>)
8005872: 015b lsls r3, r3, #5
8005874: 4413 add r3, r2
8005876: 881b ldrh r3, [r3, #0]
8005878: b29b uxth r3, r3
800587a: 461c mov r4, r3
800587c: 4a78 ldr r2, [pc, #480] ; (8005a60 <DrawChannel_4+0x10f4>)
800587e: 006b lsls r3, r5, #1
8005880: 4423 add r3, r4
8005882: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005886: 2303 movs r3, #3
8005888: f7fc fd94 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
800588c: 79fb ldrb r3, [r7, #7]
800588e: 4a75 ldr r2, [pc, #468] ; (8005a64 <DrawChannel_4+0x10f8>)
8005890: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005894: 79fb ldrb r3, [r7, #7]
8005896: 4a74 ldr r2, [pc, #464] ; (8005a68 <DrawChannel_4+0x10fc>)
8005898: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
800589c: 4b6a ldr r3, [pc, #424] ; (8005a48 <DrawChannel_4+0x10dc>)
800589e: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80058a2: b29b uxth r3, r3
80058a4: 4619 mov r1, r3
80058a6: 79fb ldrb r3, [r7, #7]
80058a8: 4a67 ldr r2, [pc, #412] ; (8005a48 <DrawChannel_4+0x10dc>)
80058aa: 015b lsls r3, r3, #5
80058ac: 4413 add r3, r2
80058ae: 3302 adds r3, #2
80058b0: 881b ldrh r3, [r3, #0]
80058b2: b29b uxth r3, r3
80058b4: 461d mov r5, r3
80058b6: 4a6d ldr r2, [pc, #436] ; (8005a6c <DrawChannel_4+0x1100>)
80058b8: 460b mov r3, r1
80058ba: 009b lsls r3, r3, #2
80058bc: 440b add r3, r1
80058be: 442b add r3, r5
80058c0: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80058c4: 2303 movs r3, #3
80058c6: 4621 mov r1, r4
80058c8: f7fc fd74 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
80058cc: 79fb ldrb r3, [r7, #7]
80058ce: 4a68 ldr r2, [pc, #416] ; (8005a70 <DrawChannel_4+0x1104>)
80058d0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80058d4: 79fb ldrb r3, [r7, #7]
80058d6: 4a67 ldr r2, [pc, #412] ; (8005a74 <DrawChannel_4+0x1108>)
80058d8: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80058dc: 4b5a ldr r3, [pc, #360] ; (8005a48 <DrawChannel_4+0x10dc>)
80058de: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80058e2: b29b uxth r3, r3
80058e4: 461d mov r5, r3
80058e6: 79fb ldrb r3, [r7, #7]
80058e8: 4a57 ldr r2, [pc, #348] ; (8005a48 <DrawChannel_4+0x10dc>)
80058ea: 015b lsls r3, r3, #5
80058ec: 4413 add r3, r2
80058ee: 3304 adds r3, #4
80058f0: 881b ldrh r3, [r3, #0]
80058f2: b29b uxth r3, r3
80058f4: 461c mov r4, r3
80058f6: 4a60 ldr r2, [pc, #384] ; (8005a78 <DrawChannel_4+0x110c>)
80058f8: 00eb lsls r3, r5, #3
80058fa: 4423 add r3, r4
80058fc: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005900: 2303 movs r3, #3
8005902: f7fc fd57 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8005906: 79fb ldrb r3, [r7, #7]
8005908: 4a5c ldr r2, [pc, #368] ; (8005a7c <DrawChannel_4+0x1110>)
800590a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800590e: 79fb ldrb r3, [r7, #7]
8005910: 4a5b ldr r2, [pc, #364] ; (8005a80 <DrawChannel_4+0x1114>)
8005912: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005916: 79fb ldrb r3, [r7, #7]
8005918: 4a4b ldr r2, [pc, #300] ; (8005a48 <DrawChannel_4+0x10dc>)
800591a: 015b lsls r3, r3, #5
800591c: 4413 add r3, r2
800591e: 3306 adds r3, #6
8005920: 881b ldrh r3, [r3, #0]
8005922: b29b uxth r3, r3
8005924: 461a mov r2, r3
8005926: 4b57 ldr r3, [pc, #348] ; (8005a84 <DrawChannel_4+0x1118>)
8005928: f853 2022 ldr.w r2, [r3, r2, lsl #2]
800592c: 2303 movs r3, #3
800592e: f7fc fd41 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8005932: e390 b.n 8006056 <DrawChannel_4+0x16ea>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8005934: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005938: 4846 ldr r0, [pc, #280] ; (8005a54 <DrawChannel_4+0x10e8>)
800593a: f7fc fc75 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
800593e: 79fb ldrb r3, [r7, #7]
8005940: 4a45 ldr r2, [pc, #276] ; (8005a58 <DrawChannel_4+0x10ec>)
8005942: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005946: 79fb ldrb r3, [r7, #7]
8005948: 4a44 ldr r2, [pc, #272] ; (8005a5c <DrawChannel_4+0x10f0>)
800594a: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800594e: 4b3e ldr r3, [pc, #248] ; (8005a48 <DrawChannel_4+0x10dc>)
8005950: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005954: b29b uxth r3, r3
8005956: 461d mov r5, r3
8005958: 79fb ldrb r3, [r7, #7]
800595a: 4a3b ldr r2, [pc, #236] ; (8005a48 <DrawChannel_4+0x10dc>)
800595c: 015b lsls r3, r3, #5
800595e: 4413 add r3, r2
8005960: 881b ldrh r3, [r3, #0]
8005962: b29b uxth r3, r3
8005964: 461c mov r4, r3
8005966: 4a3e ldr r2, [pc, #248] ; (8005a60 <DrawChannel_4+0x10f4>)
8005968: 006b lsls r3, r5, #1
800596a: 4423 add r3, r4
800596c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005970: 2303 movs r3, #3
8005972: f7fc fd1f bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8005976: 79fb ldrb r3, [r7, #7]
8005978: 4a3a ldr r2, [pc, #232] ; (8005a64 <DrawChannel_4+0x10f8>)
800597a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800597e: 79fb ldrb r3, [r7, #7]
8005980: 4a39 ldr r2, [pc, #228] ; (8005a68 <DrawChannel_4+0x10fc>)
8005982: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005986: 4b30 ldr r3, [pc, #192] ; (8005a48 <DrawChannel_4+0x10dc>)
8005988: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800598c: b29b uxth r3, r3
800598e: 4619 mov r1, r3
8005990: 79fb ldrb r3, [r7, #7]
8005992: 4a2d ldr r2, [pc, #180] ; (8005a48 <DrawChannel_4+0x10dc>)
8005994: 015b lsls r3, r3, #5
8005996: 4413 add r3, r2
8005998: 3302 adds r3, #2
800599a: 881b ldrh r3, [r3, #0]
800599c: b29b uxth r3, r3
800599e: 461d mov r5, r3
80059a0: 4a32 ldr r2, [pc, #200] ; (8005a6c <DrawChannel_4+0x1100>)
80059a2: 460b mov r3, r1
80059a4: 009b lsls r3, r3, #2
80059a6: 440b add r3, r1
80059a8: 442b add r3, r5
80059aa: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80059ae: 2303 movs r3, #3
80059b0: 4621 mov r1, r4
80059b2: f7fc fcff bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
80059b6: 79fb ldrb r3, [r7, #7]
80059b8: 4a2d ldr r2, [pc, #180] ; (8005a70 <DrawChannel_4+0x1104>)
80059ba: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80059be: 79fb ldrb r3, [r7, #7]
80059c0: 4a2c ldr r2, [pc, #176] ; (8005a74 <DrawChannel_4+0x1108>)
80059c2: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80059c6: 4b20 ldr r3, [pc, #128] ; (8005a48 <DrawChannel_4+0x10dc>)
80059c8: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80059cc: b29b uxth r3, r3
80059ce: 461d mov r5, r3
80059d0: 79fb ldrb r3, [r7, #7]
80059d2: 4a1d ldr r2, [pc, #116] ; (8005a48 <DrawChannel_4+0x10dc>)
80059d4: 015b lsls r3, r3, #5
80059d6: 4413 add r3, r2
80059d8: 3304 adds r3, #4
80059da: 881b ldrh r3, [r3, #0]
80059dc: b29b uxth r3, r3
80059de: 461c mov r4, r3
80059e0: 4a25 ldr r2, [pc, #148] ; (8005a78 <DrawChannel_4+0x110c>)
80059e2: 00eb lsls r3, r5, #3
80059e4: 4423 add r3, r4
80059e6: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80059ea: 2303 movs r3, #3
80059ec: f7fc fce2 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
80059f0: 79fb ldrb r3, [r7, #7]
80059f2: 4a22 ldr r2, [pc, #136] ; (8005a7c <DrawChannel_4+0x1110>)
80059f4: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80059f8: 79fb ldrb r3, [r7, #7]
80059fa: 4a21 ldr r2, [pc, #132] ; (8005a80 <DrawChannel_4+0x1114>)
80059fc: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005a00: 79fb ldrb r3, [r7, #7]
8005a02: 4a11 ldr r2, [pc, #68] ; (8005a48 <DrawChannel_4+0x10dc>)
8005a04: 015b lsls r3, r3, #5
8005a06: 4413 add r3, r2
8005a08: 3306 adds r3, #6
8005a0a: 881b ldrh r3, [r3, #0]
8005a0c: b29b uxth r3, r3
8005a0e: 461a mov r2, r3
8005a10: 4b1c ldr r3, [pc, #112] ; (8005a84 <DrawChannel_4+0x1118>)
8005a12: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005a16: 2303 movs r3, #3
8005a18: f7fc fccc bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
8005a1c: 79fb ldrb r3, [r7, #7]
8005a1e: 4a08 ldr r2, [pc, #32] ; (8005a40 <DrawChannel_4+0x10d4>)
8005a20: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005a24: 79fb ldrb r3, [r7, #7]
8005a26: 4a07 ldr r2, [pc, #28] ; (8005a44 <DrawChannel_4+0x10d8>)
8005a28: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005a2c: f107 020c add.w r2, r7, #12
8005a30: 2303 movs r3, #3
8005a32: f7fc fcbf bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8005a36: e30e b.n 8006056 <DrawChannel_4+0x16ea>
8005a38: 20020010 .word 0x20020010
8005a3c: 2006b1c0 .word 0x2006b1c0
8005a40: 0800fd08 .word 0x0800fd08
8005a44: 0800fd10 .word 0x0800fd10
8005a48: 2006b3f8 .word 0x2006b3f8
8005a4c: 200200dc .word 0x200200dc
8005a50: 0800d0c4 .word 0x0800d0c4
8005a54: ffd8aa57 .word 0xffd8aa57
8005a58: 0800fcc8 .word 0x0800fcc8
8005a5c: 0800fcd0 .word 0x0800fcd0
8005a60: 20020030 .word 0x20020030
8005a64: 0800fcd8 .word 0x0800fcd8
8005a68: 0800fce0 .word 0x0800fce0
8005a6c: 20020074 .word 0x20020074
8005a70: 0800fce8 .word 0x0800fce8
8005a74: 0800fcf0 .word 0x0800fcf0
8005a78: 2002009c .word 0x2002009c
8005a7c: 0800fcf8 .word 0x0800fcf8
8005a80: 0800fd00 .word 0x0800fd00
8005a84: 20020040 .word 0x20020040
if(menupos == Kikd)
8005a88: 4baf ldr r3, [pc, #700] ; (8005d48 <DrawChannel_4+0x13dc>)
8005a8a: 781b ldrb r3, [r3, #0]
8005a8c: b2db uxtb r3, r3
8005a8e: 2b06 cmp r3, #6
8005a90: f040 8182 bne.w 8005d98 <DrawChannel_4+0x142c>
if(ACTIVE_CHANNEL == ch)
8005a94: 79fa ldrb r2, [r7, #7]
8005a96: 4bad ldr r3, [pc, #692] ; (8005d4c <DrawChannel_4+0x13e0>)
8005a98: 681b ldr r3, [r3, #0]
8005a9a: 429a cmp r2, r3
8005a9c: f040 80d2 bne.w 8005c44 <DrawChannel_4+0x12d8>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8005aa0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005aa4: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8005aa8: f7fc fbbe bl 8002228 <LCD_SetColors>
if(blk)
8005aac: 683b ldr r3, [r7, #0]
8005aae: 2b00 cmp r3, #0
8005ab0: d017 beq.n 8005ae2 <DrawChannel_4+0x1176>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch]+14, YPOS_KN_4[ch], (char *) pNUMS[pardata.amplif[ch].IKD], LEFT_MODE);
8005ab2: 79fb ldrb r3, [r7, #7]
8005ab4: 4aa6 ldr r2, [pc, #664] ; (8005d50 <DrawChannel_4+0x13e4>)
8005ab6: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
8005aba: 330e adds r3, #14
8005abc: b298 uxth r0, r3
8005abe: 79fb ldrb r3, [r7, #7]
8005ac0: 4aa4 ldr r2, [pc, #656] ; (8005d54 <DrawChannel_4+0x13e8>)
8005ac2: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005ac6: 79fb ldrb r3, [r7, #7]
8005ac8: 4aa3 ldr r2, [pc, #652] ; (8005d58 <DrawChannel_4+0x13ec>)
8005aca: 015b lsls r3, r3, #5
8005acc: 4413 add r3, r2
8005ace: 330a adds r3, #10
8005ad0: 881b ldrh r3, [r3, #0]
8005ad2: b29b uxth r3, r3
8005ad4: 461a mov r2, r3
8005ad6: 4ba1 ldr r3, [pc, #644] ; (8005d5c <DrawChannel_4+0x13f0>)
8005ad8: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005adc: 2303 movs r3, #3
8005ade: f7fc fc69 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], (char *) pNUMS[pardata.amplif[ch].IKS], LEFT_MODE);
8005ae2: 79fb ldrb r3, [r7, #7]
8005ae4: 4a9a ldr r2, [pc, #616] ; (8005d50 <DrawChannel_4+0x13e4>)
8005ae6: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005aea: 79fb ldrb r3, [r7, #7]
8005aec: 4a99 ldr r2, [pc, #612] ; (8005d54 <DrawChannel_4+0x13e8>)
8005aee: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005af2: 79fb ldrb r3, [r7, #7]
8005af4: 4a98 ldr r2, [pc, #608] ; (8005d58 <DrawChannel_4+0x13ec>)
8005af6: 015b lsls r3, r3, #5
8005af8: 4413 add r3, r2
8005afa: 330c adds r3, #12
8005afc: 881b ldrh r3, [r3, #0]
8005afe: b29b uxth r3, r3
8005b00: 461a mov r2, r3
8005b02: 4b96 ldr r3, [pc, #600] ; (8005d5c <DrawChannel_4+0x13f0>)
8005b04: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005b08: 2303 movs r3, #3
8005b0a: f7fc fc53 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch]+7, YPOS_KN_4[ch], ".", LEFT_MODE);
8005b0e: 79fb ldrb r3, [r7, #7]
8005b10: 4a8f ldr r2, [pc, #572] ; (8005d50 <DrawChannel_4+0x13e4>)
8005b12: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
8005b16: 3307 adds r3, #7
8005b18: b298 uxth r0, r3
8005b1a: 79fb ldrb r3, [r7, #7]
8005b1c: 4a8d ldr r2, [pc, #564] ; (8005d54 <DrawChannel_4+0x13e8>)
8005b1e: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005b22: 2303 movs r3, #3
8005b24: 4a8e ldr r2, [pc, #568] ; (8005d60 <DrawChannel_4+0x13f4>)
8005b26: f7fc fc45 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch]+21, YPOS_KN_4[ch], (char *) pNUMS[pardata.amplif[ch].IKE], LEFT_MODE);
8005b2a: 79fb ldrb r3, [r7, #7]
8005b2c: 4a88 ldr r2, [pc, #544] ; (8005d50 <DrawChannel_4+0x13e4>)
8005b2e: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
8005b32: 3315 adds r3, #21
8005b34: b298 uxth r0, r3
8005b36: 79fb ldrb r3, [r7, #7]
8005b38: 4a86 ldr r2, [pc, #536] ; (8005d54 <DrawChannel_4+0x13e8>)
8005b3a: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005b3e: 79fb ldrb r3, [r7, #7]
8005b40: 4a85 ldr r2, [pc, #532] ; (8005d58 <DrawChannel_4+0x13ec>)
8005b42: 015b lsls r3, r3, #5
8005b44: 4413 add r3, r2
8005b46: 3308 adds r3, #8
8005b48: 881b ldrh r3, [r3, #0]
8005b4a: b29b uxth r3, r3
8005b4c: 461a mov r2, r3
8005b4e: 4b83 ldr r3, [pc, #524] ; (8005d5c <DrawChannel_4+0x13f0>)
8005b50: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005b54: 2303 movs r3, #3
8005b56: f7fc fc2d bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8005b5a: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005b5e: 4881 ldr r0, [pc, #516] ; (8005d64 <DrawChannel_4+0x13f8>)
8005b60: f7fc fb62 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8005b64: 79fb ldrb r3, [r7, #7]
8005b66: 4a80 ldr r2, [pc, #512] ; (8005d68 <DrawChannel_4+0x13fc>)
8005b68: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005b6c: 79fb ldrb r3, [r7, #7]
8005b6e: 4a7f ldr r2, [pc, #508] ; (8005d6c <DrawChannel_4+0x1400>)
8005b70: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005b74: 4b78 ldr r3, [pc, #480] ; (8005d58 <DrawChannel_4+0x13ec>)
8005b76: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005b7a: b29b uxth r3, r3
8005b7c: 461d mov r5, r3
8005b7e: 79fb ldrb r3, [r7, #7]
8005b80: 4a75 ldr r2, [pc, #468] ; (8005d58 <DrawChannel_4+0x13ec>)
8005b82: 015b lsls r3, r3, #5
8005b84: 4413 add r3, r2
8005b86: 881b ldrh r3, [r3, #0]
8005b88: b29b uxth r3, r3
8005b8a: 461c mov r4, r3
8005b8c: 4a78 ldr r2, [pc, #480] ; (8005d70 <DrawChannel_4+0x1404>)
8005b8e: 006b lsls r3, r5, #1
8005b90: 4423 add r3, r4
8005b92: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005b96: 2303 movs r3, #3
8005b98: f7fc fc0c bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8005b9c: 79fb ldrb r3, [r7, #7]
8005b9e: 4a75 ldr r2, [pc, #468] ; (8005d74 <DrawChannel_4+0x1408>)
8005ba0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005ba4: 79fb ldrb r3, [r7, #7]
8005ba6: 4a74 ldr r2, [pc, #464] ; (8005d78 <DrawChannel_4+0x140c>)
8005ba8: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005bac: 4b6a ldr r3, [pc, #424] ; (8005d58 <DrawChannel_4+0x13ec>)
8005bae: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005bb2: b29b uxth r3, r3
8005bb4: 4619 mov r1, r3
8005bb6: 79fb ldrb r3, [r7, #7]
8005bb8: 4a67 ldr r2, [pc, #412] ; (8005d58 <DrawChannel_4+0x13ec>)
8005bba: 015b lsls r3, r3, #5
8005bbc: 4413 add r3, r2
8005bbe: 3302 adds r3, #2
8005bc0: 881b ldrh r3, [r3, #0]
8005bc2: b29b uxth r3, r3
8005bc4: 461d mov r5, r3
8005bc6: 4a6d ldr r2, [pc, #436] ; (8005d7c <DrawChannel_4+0x1410>)
8005bc8: 460b mov r3, r1
8005bca: 009b lsls r3, r3, #2
8005bcc: 440b add r3, r1
8005bce: 442b add r3, r5
8005bd0: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005bd4: 2303 movs r3, #3
8005bd6: 4621 mov r1, r4
8005bd8: f7fc fbec bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8005bdc: 79fb ldrb r3, [r7, #7]
8005bde: 4a68 ldr r2, [pc, #416] ; (8005d80 <DrawChannel_4+0x1414>)
8005be0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005be4: 79fb ldrb r3, [r7, #7]
8005be6: 4a67 ldr r2, [pc, #412] ; (8005d84 <DrawChannel_4+0x1418>)
8005be8: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005bec: 4b5a ldr r3, [pc, #360] ; (8005d58 <DrawChannel_4+0x13ec>)
8005bee: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005bf2: b29b uxth r3, r3
8005bf4: 461d mov r5, r3
8005bf6: 79fb ldrb r3, [r7, #7]
8005bf8: 4a57 ldr r2, [pc, #348] ; (8005d58 <DrawChannel_4+0x13ec>)
8005bfa: 015b lsls r3, r3, #5
8005bfc: 4413 add r3, r2
8005bfe: 3304 adds r3, #4
8005c00: 881b ldrh r3, [r3, #0]
8005c02: b29b uxth r3, r3
8005c04: 461c mov r4, r3
8005c06: 4a60 ldr r2, [pc, #384] ; (8005d88 <DrawChannel_4+0x141c>)
8005c08: 00eb lsls r3, r5, #3
8005c0a: 4423 add r3, r4
8005c0c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005c10: 2303 movs r3, #3
8005c12: f7fc fbcf bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8005c16: 79fb ldrb r3, [r7, #7]
8005c18: 4a5c ldr r2, [pc, #368] ; (8005d8c <DrawChannel_4+0x1420>)
8005c1a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005c1e: 79fb ldrb r3, [r7, #7]
8005c20: 4a5b ldr r2, [pc, #364] ; (8005d90 <DrawChannel_4+0x1424>)
8005c22: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005c26: 79fb ldrb r3, [r7, #7]
8005c28: 4a4b ldr r2, [pc, #300] ; (8005d58 <DrawChannel_4+0x13ec>)
8005c2a: 015b lsls r3, r3, #5
8005c2c: 4413 add r3, r2
8005c2e: 3306 adds r3, #6
8005c30: 881b ldrh r3, [r3, #0]
8005c32: b29b uxth r3, r3
8005c34: 461a mov r2, r3
8005c36: 4b57 ldr r3, [pc, #348] ; (8005d94 <DrawChannel_4+0x1428>)
8005c38: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005c3c: 2303 movs r3, #3
8005c3e: f7fc fbb9 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8005c42: e208 b.n 8006056 <DrawChannel_4+0x16ea>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8005c44: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005c48: 4846 ldr r0, [pc, #280] ; (8005d64 <DrawChannel_4+0x13f8>)
8005c4a: f7fc faed bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8005c4e: 79fb ldrb r3, [r7, #7]
8005c50: 4a45 ldr r2, [pc, #276] ; (8005d68 <DrawChannel_4+0x13fc>)
8005c52: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005c56: 79fb ldrb r3, [r7, #7]
8005c58: 4a44 ldr r2, [pc, #272] ; (8005d6c <DrawChannel_4+0x1400>)
8005c5a: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005c5e: 4b3e ldr r3, [pc, #248] ; (8005d58 <DrawChannel_4+0x13ec>)
8005c60: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005c64: b29b uxth r3, r3
8005c66: 461d mov r5, r3
8005c68: 79fb ldrb r3, [r7, #7]
8005c6a: 4a3b ldr r2, [pc, #236] ; (8005d58 <DrawChannel_4+0x13ec>)
8005c6c: 015b lsls r3, r3, #5
8005c6e: 4413 add r3, r2
8005c70: 881b ldrh r3, [r3, #0]
8005c72: b29b uxth r3, r3
8005c74: 461c mov r4, r3
8005c76: 4a3e ldr r2, [pc, #248] ; (8005d70 <DrawChannel_4+0x1404>)
8005c78: 006b lsls r3, r5, #1
8005c7a: 4423 add r3, r4
8005c7c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005c80: 2303 movs r3, #3
8005c82: f7fc fb97 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8005c86: 79fb ldrb r3, [r7, #7]
8005c88: 4a3a ldr r2, [pc, #232] ; (8005d74 <DrawChannel_4+0x1408>)
8005c8a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005c8e: 79fb ldrb r3, [r7, #7]
8005c90: 4a39 ldr r2, [pc, #228] ; (8005d78 <DrawChannel_4+0x140c>)
8005c92: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005c96: 4b30 ldr r3, [pc, #192] ; (8005d58 <DrawChannel_4+0x13ec>)
8005c98: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005c9c: b29b uxth r3, r3
8005c9e: 4619 mov r1, r3
8005ca0: 79fb ldrb r3, [r7, #7]
8005ca2: 4a2d ldr r2, [pc, #180] ; (8005d58 <DrawChannel_4+0x13ec>)
8005ca4: 015b lsls r3, r3, #5
8005ca6: 4413 add r3, r2
8005ca8: 3302 adds r3, #2
8005caa: 881b ldrh r3, [r3, #0]
8005cac: b29b uxth r3, r3
8005cae: 461d mov r5, r3
8005cb0: 4a32 ldr r2, [pc, #200] ; (8005d7c <DrawChannel_4+0x1410>)
8005cb2: 460b mov r3, r1
8005cb4: 009b lsls r3, r3, #2
8005cb6: 440b add r3, r1
8005cb8: 442b add r3, r5
8005cba: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005cbe: 2303 movs r3, #3
8005cc0: 4621 mov r1, r4
8005cc2: f7fc fb77 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8005cc6: 79fb ldrb r3, [r7, #7]
8005cc8: 4a2d ldr r2, [pc, #180] ; (8005d80 <DrawChannel_4+0x1414>)
8005cca: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005cce: 79fb ldrb r3, [r7, #7]
8005cd0: 4a2c ldr r2, [pc, #176] ; (8005d84 <DrawChannel_4+0x1418>)
8005cd2: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005cd6: 4b20 ldr r3, [pc, #128] ; (8005d58 <DrawChannel_4+0x13ec>)
8005cd8: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005cdc: b29b uxth r3, r3
8005cde: 461d mov r5, r3
8005ce0: 79fb ldrb r3, [r7, #7]
8005ce2: 4a1d ldr r2, [pc, #116] ; (8005d58 <DrawChannel_4+0x13ec>)
8005ce4: 015b lsls r3, r3, #5
8005ce6: 4413 add r3, r2
8005ce8: 3304 adds r3, #4
8005cea: 881b ldrh r3, [r3, #0]
8005cec: b29b uxth r3, r3
8005cee: 461c mov r4, r3
8005cf0: 4a25 ldr r2, [pc, #148] ; (8005d88 <DrawChannel_4+0x141c>)
8005cf2: 00eb lsls r3, r5, #3
8005cf4: 4423 add r3, r4
8005cf6: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005cfa: 2303 movs r3, #3
8005cfc: f7fc fb5a bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8005d00: 79fb ldrb r3, [r7, #7]
8005d02: 4a22 ldr r2, [pc, #136] ; (8005d8c <DrawChannel_4+0x1420>)
8005d04: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005d08: 79fb ldrb r3, [r7, #7]
8005d0a: 4a21 ldr r2, [pc, #132] ; (8005d90 <DrawChannel_4+0x1424>)
8005d0c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005d10: 79fb ldrb r3, [r7, #7]
8005d12: 4a11 ldr r2, [pc, #68] ; (8005d58 <DrawChannel_4+0x13ec>)
8005d14: 015b lsls r3, r3, #5
8005d16: 4413 add r3, r2
8005d18: 3306 adds r3, #6
8005d1a: 881b ldrh r3, [r3, #0]
8005d1c: b29b uxth r3, r3
8005d1e: 461a mov r2, r3
8005d20: 4b1c ldr r3, [pc, #112] ; (8005d94 <DrawChannel_4+0x1428>)
8005d22: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005d26: 2303 movs r3, #3
8005d28: f7fc fb44 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
8005d2c: 79fb ldrb r3, [r7, #7]
8005d2e: 4a08 ldr r2, [pc, #32] ; (8005d50 <DrawChannel_4+0x13e4>)
8005d30: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005d34: 79fb ldrb r3, [r7, #7]
8005d36: 4a07 ldr r2, [pc, #28] ; (8005d54 <DrawChannel_4+0x13e8>)
8005d38: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005d3c: f107 020c add.w r2, r7, #12
8005d40: 2303 movs r3, #3
8005d42: f7fc fb37 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8005d46: e186 b.n 8006056 <DrawChannel_4+0x16ea>
8005d48: 20020010 .word 0x20020010
8005d4c: 2006b1c0 .word 0x2006b1c0
8005d50: 0800fd08 .word 0x0800fd08
8005d54: 0800fd10 .word 0x0800fd10
8005d58: 2006b3f8 .word 0x2006b3f8
8005d5c: 200200dc .word 0x200200dc
8005d60: 0800d0c4 .word 0x0800d0c4
8005d64: ffd8aa57 .word 0xffd8aa57
8005d68: 0800fcc8 .word 0x0800fcc8
8005d6c: 0800fcd0 .word 0x0800fcd0
8005d70: 20020030 .word 0x20020030
8005d74: 0800fcd8 .word 0x0800fcd8
8005d78: 0800fce0 .word 0x0800fce0
8005d7c: 20020074 .word 0x20020074
8005d80: 0800fce8 .word 0x0800fce8
8005d84: 0800fcf0 .word 0x0800fcf0
8005d88: 2002009c .word 0x2002009c
8005d8c: 0800fcf8 .word 0x0800fcf8
8005d90: 0800fd00 .word 0x0800fd00
8005d94: 20020040 .word 0x20020040
if(menupos == Kike)
8005d98: 4bb1 ldr r3, [pc, #708] ; (8006060 <DrawChannel_4+0x16f4>)
8005d9a: 781b ldrb r3, [r3, #0]
8005d9c: b2db uxtb r3, r3
8005d9e: 2b07 cmp r3, #7
8005da0: f040 8159 bne.w 8006056 <DrawChannel_4+0x16ea>
if(ACTIVE_CHANNEL == ch)
8005da4: 79fa ldrb r2, [r7, #7]
8005da6: 4baf ldr r3, [pc, #700] ; (8006064 <DrawChannel_4+0x16f8>)
8005da8: 681b ldr r3, [r3, #0]
8005daa: 429a cmp r2, r3
8005dac: f040 80d2 bne.w 8005f54 <DrawChannel_4+0x15e8>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8005db0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005db4: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8005db8: f7fc fa36 bl 8002228 <LCD_SetColors>
if(blk)
8005dbc: 683b ldr r3, [r7, #0]
8005dbe: 2b00 cmp r3, #0
8005dc0: d017 beq.n 8005df2 <DrawChannel_4+0x1486>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch]+21, YPOS_KN_4[ch], (char *) pNUMS[pardata.amplif[ch].IKE], LEFT_MODE);
8005dc2: 79fb ldrb r3, [r7, #7]
8005dc4: 4aa8 ldr r2, [pc, #672] ; (8006068 <DrawChannel_4+0x16fc>)
8005dc6: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
8005dca: 3315 adds r3, #21
8005dcc: b298 uxth r0, r3
8005dce: 79fb ldrb r3, [r7, #7]
8005dd0: 4aa6 ldr r2, [pc, #664] ; (800606c <DrawChannel_4+0x1700>)
8005dd2: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005dd6: 79fb ldrb r3, [r7, #7]
8005dd8: 4aa5 ldr r2, [pc, #660] ; (8006070 <DrawChannel_4+0x1704>)
8005dda: 015b lsls r3, r3, #5
8005ddc: 4413 add r3, r2
8005dde: 3308 adds r3, #8
8005de0: 881b ldrh r3, [r3, #0]
8005de2: b29b uxth r3, r3
8005de4: 461a mov r2, r3
8005de6: 4ba3 ldr r3, [pc, #652] ; (8006074 <DrawChannel_4+0x1708>)
8005de8: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005dec: 2303 movs r3, #3
8005dee: f7fc fae1 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], (char *) pNUMS[pardata.amplif[ch].IKS], LEFT_MODE);
8005df2: 79fb ldrb r3, [r7, #7]
8005df4: 4a9c ldr r2, [pc, #624] ; (8006068 <DrawChannel_4+0x16fc>)
8005df6: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005dfa: 79fb ldrb r3, [r7, #7]
8005dfc: 4a9b ldr r2, [pc, #620] ; (800606c <DrawChannel_4+0x1700>)
8005dfe: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005e02: 79fb ldrb r3, [r7, #7]
8005e04: 4a9a ldr r2, [pc, #616] ; (8006070 <DrawChannel_4+0x1704>)
8005e06: 015b lsls r3, r3, #5
8005e08: 4413 add r3, r2
8005e0a: 330c adds r3, #12
8005e0c: 881b ldrh r3, [r3, #0]
8005e0e: b29b uxth r3, r3
8005e10: 461a mov r2, r3
8005e12: 4b98 ldr r3, [pc, #608] ; (8006074 <DrawChannel_4+0x1708>)
8005e14: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005e18: 2303 movs r3, #3
8005e1a: f7fc facb bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch]+7, YPOS_KN_4[ch], ".", LEFT_MODE);
8005e1e: 79fb ldrb r3, [r7, #7]
8005e20: 4a91 ldr r2, [pc, #580] ; (8006068 <DrawChannel_4+0x16fc>)
8005e22: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
8005e26: 3307 adds r3, #7
8005e28: b298 uxth r0, r3
8005e2a: 79fb ldrb r3, [r7, #7]
8005e2c: 4a8f ldr r2, [pc, #572] ; (800606c <DrawChannel_4+0x1700>)
8005e2e: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005e32: 2303 movs r3, #3
8005e34: 4a90 ldr r2, [pc, #576] ; (8006078 <DrawChannel_4+0x170c>)
8005e36: f7fc fabd bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch]+14, YPOS_KN_4[ch], (char *) pNUMS[pardata.amplif[ch].IKD], LEFT_MODE);
8005e3a: 79fb ldrb r3, [r7, #7]
8005e3c: 4a8a ldr r2, [pc, #552] ; (8006068 <DrawChannel_4+0x16fc>)
8005e3e: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
8005e42: 330e adds r3, #14
8005e44: b298 uxth r0, r3
8005e46: 79fb ldrb r3, [r7, #7]
8005e48: 4a88 ldr r2, [pc, #544] ; (800606c <DrawChannel_4+0x1700>)
8005e4a: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005e4e: 79fb ldrb r3, [r7, #7]
8005e50: 4a87 ldr r2, [pc, #540] ; (8006070 <DrawChannel_4+0x1704>)
8005e52: 015b lsls r3, r3, #5
8005e54: 4413 add r3, r2
8005e56: 330a adds r3, #10
8005e58: 881b ldrh r3, [r3, #0]
8005e5a: b29b uxth r3, r3
8005e5c: 461a mov r2, r3
8005e5e: 4b85 ldr r3, [pc, #532] ; (8006074 <DrawChannel_4+0x1708>)
8005e60: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005e64: 2303 movs r3, #3
8005e66: f7fc faa5 bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8005e6a: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005e6e: 4883 ldr r0, [pc, #524] ; (800607c <DrawChannel_4+0x1710>)
8005e70: f7fc f9da bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8005e74: 79fb ldrb r3, [r7, #7]
8005e76: 4a82 ldr r2, [pc, #520] ; (8006080 <DrawChannel_4+0x1714>)
8005e78: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005e7c: 79fb ldrb r3, [r7, #7]
8005e7e: 4a81 ldr r2, [pc, #516] ; (8006084 <DrawChannel_4+0x1718>)
8005e80: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005e84: 4b7a ldr r3, [pc, #488] ; (8006070 <DrawChannel_4+0x1704>)
8005e86: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005e8a: b29b uxth r3, r3
8005e8c: 461d mov r5, r3
8005e8e: 79fb ldrb r3, [r7, #7]
8005e90: 4a77 ldr r2, [pc, #476] ; (8006070 <DrawChannel_4+0x1704>)
8005e92: 015b lsls r3, r3, #5
8005e94: 4413 add r3, r2
8005e96: 881b ldrh r3, [r3, #0]
8005e98: b29b uxth r3, r3
8005e9a: 461c mov r4, r3
8005e9c: 4a7a ldr r2, [pc, #488] ; (8006088 <DrawChannel_4+0x171c>)
8005e9e: 006b lsls r3, r5, #1
8005ea0: 4423 add r3, r4
8005ea2: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005ea6: 2303 movs r3, #3
8005ea8: f7fc fa84 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8005eac: 79fb ldrb r3, [r7, #7]
8005eae: 4a77 ldr r2, [pc, #476] ; (800608c <DrawChannel_4+0x1720>)
8005eb0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005eb4: 79fb ldrb r3, [r7, #7]
8005eb6: 4a76 ldr r2, [pc, #472] ; (8006090 <DrawChannel_4+0x1724>)
8005eb8: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005ebc: 4b6c ldr r3, [pc, #432] ; (8006070 <DrawChannel_4+0x1704>)
8005ebe: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005ec2: b29b uxth r3, r3
8005ec4: 4619 mov r1, r3
8005ec6: 79fb ldrb r3, [r7, #7]
8005ec8: 4a69 ldr r2, [pc, #420] ; (8006070 <DrawChannel_4+0x1704>)
8005eca: 015b lsls r3, r3, #5
8005ecc: 4413 add r3, r2
8005ece: 3302 adds r3, #2
8005ed0: 881b ldrh r3, [r3, #0]
8005ed2: b29b uxth r3, r3
8005ed4: 461d mov r5, r3
8005ed6: 4a6f ldr r2, [pc, #444] ; (8006094 <DrawChannel_4+0x1728>)
8005ed8: 460b mov r3, r1
8005eda: 009b lsls r3, r3, #2
8005edc: 440b add r3, r1
8005ede: 442b add r3, r5
8005ee0: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005ee4: 2303 movs r3, #3
8005ee6: 4621 mov r1, r4
8005ee8: f7fc fa64 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8005eec: 79fb ldrb r3, [r7, #7]
8005eee: 4a6a ldr r2, [pc, #424] ; (8006098 <DrawChannel_4+0x172c>)
8005ef0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005ef4: 79fb ldrb r3, [r7, #7]
8005ef6: 4a69 ldr r2, [pc, #420] ; (800609c <DrawChannel_4+0x1730>)
8005ef8: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005efc: 4b5c ldr r3, [pc, #368] ; (8006070 <DrawChannel_4+0x1704>)
8005efe: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005f02: b29b uxth r3, r3
8005f04: 461d mov r5, r3
8005f06: 79fb ldrb r3, [r7, #7]
8005f08: 4a59 ldr r2, [pc, #356] ; (8006070 <DrawChannel_4+0x1704>)
8005f0a: 015b lsls r3, r3, #5
8005f0c: 4413 add r3, r2
8005f0e: 3304 adds r3, #4
8005f10: 881b ldrh r3, [r3, #0]
8005f12: b29b uxth r3, r3
8005f14: 461c mov r4, r3
8005f16: 4a62 ldr r2, [pc, #392] ; (80060a0 <DrawChannel_4+0x1734>)
8005f18: 00eb lsls r3, r5, #3
8005f1a: 4423 add r3, r4
8005f1c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005f20: 2303 movs r3, #3
8005f22: f7fc fa47 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8005f26: 79fb ldrb r3, [r7, #7]
8005f28: 4a5e ldr r2, [pc, #376] ; (80060a4 <DrawChannel_4+0x1738>)
8005f2a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005f2e: 79fb ldrb r3, [r7, #7]
8005f30: 4a5d ldr r2, [pc, #372] ; (80060a8 <DrawChannel_4+0x173c>)
8005f32: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005f36: 79fb ldrb r3, [r7, #7]
8005f38: 4a4d ldr r2, [pc, #308] ; (8006070 <DrawChannel_4+0x1704>)
8005f3a: 015b lsls r3, r3, #5
8005f3c: 4413 add r3, r2
8005f3e: 3306 adds r3, #6
8005f40: 881b ldrh r3, [r3, #0]
8005f42: b29b uxth r3, r3
8005f44: 461a mov r2, r3
8005f46: 4b59 ldr r3, [pc, #356] ; (80060ac <DrawChannel_4+0x1740>)
8005f48: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8005f4c: 2303 movs r3, #3
8005f4e: f7fc fa31 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8005f52: e080 b.n 8006056 <DrawChannel_4+0x16ea>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8005f54: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8005f58: 4848 ldr r0, [pc, #288] ; (800607c <DrawChannel_4+0x1710>)
8005f5a: f7fc f965 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_4[ch], YPOS_INPUT_4[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ch].IIN], LEFT_MODE);
8005f5e: 79fb ldrb r3, [r7, #7]
8005f60: 4a47 ldr r2, [pc, #284] ; (8006080 <DrawChannel_4+0x1714>)
8005f62: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005f66: 79fb ldrb r3, [r7, #7]
8005f68: 4a46 ldr r2, [pc, #280] ; (8006084 <DrawChannel_4+0x1718>)
8005f6a: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005f6e: 4b40 ldr r3, [pc, #256] ; (8006070 <DrawChannel_4+0x1704>)
8005f70: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005f74: b29b uxth r3, r3
8005f76: 461d mov r5, r3
8005f78: 79fb ldrb r3, [r7, #7]
8005f7a: 4a3d ldr r2, [pc, #244] ; (8006070 <DrawChannel_4+0x1704>)
8005f7c: 015b lsls r3, r3, #5
8005f7e: 4413 add r3, r2
8005f80: 881b ldrh r3, [r3, #0]
8005f82: b29b uxth r3, r3
8005f84: 461c mov r4, r3
8005f86: 4a40 ldr r2, [pc, #256] ; (8006088 <DrawChannel_4+0x171c>)
8005f88: 006b lsls r3, r5, #1
8005f8a: 4423 add r3, r4
8005f8c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005f90: 2303 movs r3, #3
8005f92: f7fc fa0f bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_4[ch], YPOS_HP_4[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8005f96: 79fb ldrb r3, [r7, #7]
8005f98: 4a3c ldr r2, [pc, #240] ; (800608c <DrawChannel_4+0x1720>)
8005f9a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005f9e: 79fb ldrb r3, [r7, #7]
8005fa0: 4a3b ldr r2, [pc, #236] ; (8006090 <DrawChannel_4+0x1724>)
8005fa2: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8005fa6: 4b32 ldr r3, [pc, #200] ; (8006070 <DrawChannel_4+0x1704>)
8005fa8: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005fac: b29b uxth r3, r3
8005fae: 4619 mov r1, r3
8005fb0: 79fb ldrb r3, [r7, #7]
8005fb2: 4a2f ldr r2, [pc, #188] ; (8006070 <DrawChannel_4+0x1704>)
8005fb4: 015b lsls r3, r3, #5
8005fb6: 4413 add r3, r2
8005fb8: 3302 adds r3, #2
8005fba: 881b ldrh r3, [r3, #0]
8005fbc: b29b uxth r3, r3
8005fbe: 461d mov r5, r3
8005fc0: 4a34 ldr r2, [pc, #208] ; (8006094 <DrawChannel_4+0x1728>)
8005fc2: 460b mov r3, r1
8005fc4: 009b lsls r3, r3, #2
8005fc6: 440b add r3, r1
8005fc8: 442b add r3, r5
8005fca: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8005fce: 2303 movs r3, #3
8005fd0: 4621 mov r1, r4
8005fd2: f7fc f9ef bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_4[ch], YPOS_LP_4[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8005fd6: 79fb ldrb r3, [r7, #7]
8005fd8: 4a2f ldr r2, [pc, #188] ; (8006098 <DrawChannel_4+0x172c>)
8005fda: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8005fde: 79fb ldrb r3, [r7, #7]
8005fe0: 4a2e ldr r2, [pc, #184] ; (800609c <DrawChannel_4+0x1730>)
8005fe2: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8005fe6: 4b22 ldr r3, [pc, #136] ; (8006070 <DrawChannel_4+0x1704>)
8005fe8: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8005fec: b29b uxth r3, r3
8005fee: 461d mov r5, r3
8005ff0: 79fb ldrb r3, [r7, #7]
8005ff2: 4a1f ldr r2, [pc, #124] ; (8006070 <DrawChannel_4+0x1704>)
8005ff4: 015b lsls r3, r3, #5
8005ff6: 4413 add r3, r2
8005ff8: 3304 adds r3, #4
8005ffa: 881b ldrh r3, [r3, #0]
8005ffc: b29b uxth r3, r3
8005ffe: 461c mov r4, r3
8006000: 4a27 ldr r2, [pc, #156] ; (80060a0 <DrawChannel_4+0x1734>)
8006002: 00eb lsls r3, r5, #3
8006004: 4423 add r3, r4
8006006: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800600a: 2303 movs r3, #3
800600c: f7fc f9d2 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_4[ch], YPOS_KM_4[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8006010: 79fb ldrb r3, [r7, #7]
8006012: 4a24 ldr r2, [pc, #144] ; (80060a4 <DrawChannel_4+0x1738>)
8006014: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006018: 79fb ldrb r3, [r7, #7]
800601a: 4a23 ldr r2, [pc, #140] ; (80060a8 <DrawChannel_4+0x173c>)
800601c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006020: 79fb ldrb r3, [r7, #7]
8006022: 4a13 ldr r2, [pc, #76] ; (8006070 <DrawChannel_4+0x1704>)
8006024: 015b lsls r3, r3, #5
8006026: 4413 add r3, r2
8006028: 3306 adds r3, #6
800602a: 881b ldrh r3, [r3, #0]
800602c: b29b uxth r3, r3
800602e: 461a mov r2, r3
8006030: 4b1e ldr r3, [pc, #120] ; (80060ac <DrawChannel_4+0x1740>)
8006032: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8006036: 2303 movs r3, #3
8006038: f7fc f9bc bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE);
800603c: 79fb ldrb r3, [r7, #7]
800603e: 4a0a ldr r2, [pc, #40] ; (8006068 <DrawChannel_4+0x16fc>)
8006040: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006044: 79fb ldrb r3, [r7, #7]
8006046: 4a09 ldr r2, [pc, #36] ; (800606c <DrawChannel_4+0x1700>)
8006048: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800604c: f107 020c add.w r2, r7, #12
8006050: 2303 movs r3, #3
8006052: f7fc f9af bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8006056: bf00 nop
8006058: 3718 adds r7, #24
800605a: 46bd mov sp, r7
800605c: bdb0 pop {r4, r5, r7, pc}
800605e: bf00 nop
8006060: 20020010 .word 0x20020010
8006064: 2006b1c0 .word 0x2006b1c0
8006068: 0800fd08 .word 0x0800fd08
800606c: 0800fd10 .word 0x0800fd10
8006070: 2006b3f8 .word 0x2006b3f8
8006074: 200200dc .word 0x200200dc
8006078: 0800d0c4 .word 0x0800d0c4
800607c: ffd8aa57 .word 0xffd8aa57
8006080: 0800fcc8 .word 0x0800fcc8
8006084: 0800fcd0 .word 0x0800fcd0
8006088: 20020030 .word 0x20020030
800608c: 0800fcd8 .word 0x0800fcd8
8006090: 0800fce0 .word 0x0800fce0
8006094: 20020074 .word 0x20020074
8006098: 0800fce8 .word 0x0800fce8
800609c: 0800fcf0 .word 0x0800fcf0
80060a0: 2002009c .word 0x2002009c
80060a4: 0800fcf8 .word 0x0800fcf8
80060a8: 0800fd00 .word 0x0800fd00
80060ac: 20020040 .word 0x20020040
080060b0 <DrawChannel_8>:
void DrawChannel_8(uint8_t ch, uint32_t blk)
{
80060b0: b5b0 push {r4, r5, r7, lr}
80060b2: b086 sub sp, #24
80060b4: af00 add r7, sp, #0
80060b6: 4603 mov r3, r0
80060b8: 6039 str r1, [r7, #0]
80060ba: 71fb strb r3, [r7, #7]
uint32_t i, j, k;
uint16_t x, y;
char str[10];
str[0] = (char) (pardata.amplif[ch].IKS + 48);
80060bc: 79fb ldrb r3, [r7, #7]
80060be: 4ab2 ldr r2, [pc, #712] ; (8006388 <DrawChannel_8+0x2d8>)
80060c0: 015b lsls r3, r3, #5
80060c2: 4413 add r3, r2
80060c4: 330c adds r3, #12
80060c6: 881b ldrh r3, [r3, #0]
80060c8: b29b uxth r3, r3
80060ca: b2db uxtb r3, r3
80060cc: 3330 adds r3, #48 ; 0x30
80060ce: b2db uxtb r3, r3
80060d0: 733b strb r3, [r7, #12]
str[1] = '.';
80060d2: 232e movs r3, #46 ; 0x2e
80060d4: 737b strb r3, [r7, #13]
str[2] = (char) (pardata.amplif[ch].IKD + 48);
80060d6: 79fb ldrb r3, [r7, #7]
80060d8: 4aab ldr r2, [pc, #684] ; (8006388 <DrawChannel_8+0x2d8>)
80060da: 015b lsls r3, r3, #5
80060dc: 4413 add r3, r2
80060de: 330a adds r3, #10
80060e0: 881b ldrh r3, [r3, #0]
80060e2: b29b uxth r3, r3
80060e4: b2db uxtb r3, r3
80060e6: 3330 adds r3, #48 ; 0x30
80060e8: b2db uxtb r3, r3
80060ea: 73bb strb r3, [r7, #14]
str[3] = (char) (pardata.amplif[ch].IKE + 48);
80060ec: 79fb ldrb r3, [r7, #7]
80060ee: 4aa6 ldr r2, [pc, #664] ; (8006388 <DrawChannel_8+0x2d8>)
80060f0: 015b lsls r3, r3, #5
80060f2: 4413 add r3, r2
80060f4: 3308 adds r3, #8
80060f6: 881b ldrh r3, [r3, #0]
80060f8: b29b uxth r3, r3
80060fa: b2db uxtb r3, r3
80060fc: 3330 adds r3, #48 ; 0x30
80060fe: b2db uxtb r3, r3
8006100: 73fb strb r3, [r7, #15]
str[4] = '\0';
8006102: 2300 movs r3, #0
8006104: 743b strb r3, [r7, #16]
if(menupos == Input)
8006106: 4ba1 ldr r3, [pc, #644] ; (800638c <DrawChannel_8+0x2dc>)
8006108: 781b ldrb r3, [r3, #0]
800610a: b2db uxtb r3, r3
800610c: 2b00 cmp r3, #0
800610e: f040 8161 bne.w 80063d4 <DrawChannel_8+0x324>
{
if(ACTIVE_CHANNEL == ch)
8006112: 79fa ldrb r2, [r7, #7]
8006114: 4b9e ldr r3, [pc, #632] ; (8006390 <DrawChannel_8+0x2e0>)
8006116: 681b ldr r3, [r3, #0]
8006118: 429a cmp r2, r3
800611a: f040 80b0 bne.w 800627e <DrawChannel_8+0x1ce>
{
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
800611e: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006122: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8006126: f7fc f87f bl 8002228 <LCD_SetColors>
if(focused)
800612a: 4b9a ldr r3, [pc, #616] ; (8006394 <DrawChannel_8+0x2e4>)
800612c: 781b ldrb r3, [r3, #0]
800612e: b2db uxtb r3, r3
8006130: 2b00 cmp r3, #0
8006132: d020 beq.n 8006176 <DrawChannel_8+0xc6>
{
if(blk)
8006134: 683b ldr r3, [r7, #0]
8006136: 2b00 cmp r3, #0
8006138: d03a beq.n 80061b0 <DrawChannel_8+0x100>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
800613a: 79fb ldrb r3, [r7, #7]
800613c: 4a96 ldr r2, [pc, #600] ; (8006398 <DrawChannel_8+0x2e8>)
800613e: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006142: 79fb ldrb r3, [r7, #7]
8006144: 4a95 ldr r2, [pc, #596] ; (800639c <DrawChannel_8+0x2ec>)
8006146: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800614a: 4b8f ldr r3, [pc, #572] ; (8006388 <DrawChannel_8+0x2d8>)
800614c: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006150: b29b uxth r3, r3
8006152: 461d mov r5, r3
8006154: 4b8e ldr r3, [pc, #568] ; (8006390 <DrawChannel_8+0x2e0>)
8006156: 681b ldr r3, [r3, #0]
8006158: 4a8b ldr r2, [pc, #556] ; (8006388 <DrawChannel_8+0x2d8>)
800615a: 015b lsls r3, r3, #5
800615c: 4413 add r3, r2
800615e: 881b ldrh r3, [r3, #0]
8006160: b29b uxth r3, r3
8006162: 461c mov r4, r3
8006164: 4a8e ldr r2, [pc, #568] ; (80063a0 <DrawChannel_8+0x2f0>)
8006166: 006b lsls r3, r5, #1
8006168: 4423 add r3, r4
800616a: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800616e: 2303 movs r3, #3
8006170: f7fc f920 bl 80023b4 <BSP_LCD_DisplayStringAt>
8006174: e01c b.n 80061b0 <DrawChannel_8+0x100>
}
else
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
8006176: 79fb ldrb r3, [r7, #7]
8006178: 4a87 ldr r2, [pc, #540] ; (8006398 <DrawChannel_8+0x2e8>)
800617a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800617e: 79fb ldrb r3, [r7, #7]
8006180: 4a86 ldr r2, [pc, #536] ; (800639c <DrawChannel_8+0x2ec>)
8006182: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006186: 4b80 ldr r3, [pc, #512] ; (8006388 <DrawChannel_8+0x2d8>)
8006188: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800618c: b29b uxth r3, r3
800618e: 461d mov r5, r3
8006190: 4b7f ldr r3, [pc, #508] ; (8006390 <DrawChannel_8+0x2e0>)
8006192: 681b ldr r3, [r3, #0]
8006194: 4a7c ldr r2, [pc, #496] ; (8006388 <DrawChannel_8+0x2d8>)
8006196: 015b lsls r3, r3, #5
8006198: 4413 add r3, r2
800619a: 881b ldrh r3, [r3, #0]
800619c: b29b uxth r3, r3
800619e: 461c mov r4, r3
80061a0: 4a7f ldr r2, [pc, #508] ; (80063a0 <DrawChannel_8+0x2f0>)
80061a2: 006b lsls r3, r5, #1
80061a4: 4423 add r3, r4
80061a6: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80061aa: 2303 movs r3, #3
80061ac: f7fc f902 bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
80061b0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80061b4: 487b ldr r0, [pc, #492] ; (80063a4 <DrawChannel_8+0x2f4>)
80061b6: f7fc f837 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
80061ba: 79fb ldrb r3, [r7, #7]
80061bc: 4a7a ldr r2, [pc, #488] ; (80063a8 <DrawChannel_8+0x2f8>)
80061be: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80061c2: 79fb ldrb r3, [r7, #7]
80061c4: 4a79 ldr r2, [pc, #484] ; (80063ac <DrawChannel_8+0x2fc>)
80061c6: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
80061ca: 4b6f ldr r3, [pc, #444] ; (8006388 <DrawChannel_8+0x2d8>)
80061cc: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80061d0: b29b uxth r3, r3
80061d2: 4619 mov r1, r3
80061d4: 79fb ldrb r3, [r7, #7]
80061d6: 4a6c ldr r2, [pc, #432] ; (8006388 <DrawChannel_8+0x2d8>)
80061d8: 015b lsls r3, r3, #5
80061da: 4413 add r3, r2
80061dc: 3302 adds r3, #2
80061de: 881b ldrh r3, [r3, #0]
80061e0: b29b uxth r3, r3
80061e2: 461d mov r5, r3
80061e4: 4a72 ldr r2, [pc, #456] ; (80063b0 <DrawChannel_8+0x300>)
80061e6: 460b mov r3, r1
80061e8: 009b lsls r3, r3, #2
80061ea: 440b add r3, r1
80061ec: 442b add r3, r5
80061ee: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80061f2: 2303 movs r3, #3
80061f4: 4621 mov r1, r4
80061f6: f7fc f8dd bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
80061fa: 79fb ldrb r3, [r7, #7]
80061fc: 4a6d ldr r2, [pc, #436] ; (80063b4 <DrawChannel_8+0x304>)
80061fe: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006202: 79fb ldrb r3, [r7, #7]
8006204: 4a6c ldr r2, [pc, #432] ; (80063b8 <DrawChannel_8+0x308>)
8006206: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800620a: 4b5f ldr r3, [pc, #380] ; (8006388 <DrawChannel_8+0x2d8>)
800620c: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006210: b29b uxth r3, r3
8006212: 461d mov r5, r3
8006214: 79fb ldrb r3, [r7, #7]
8006216: 4a5c ldr r2, [pc, #368] ; (8006388 <DrawChannel_8+0x2d8>)
8006218: 015b lsls r3, r3, #5
800621a: 4413 add r3, r2
800621c: 3304 adds r3, #4
800621e: 881b ldrh r3, [r3, #0]
8006220: b29b uxth r3, r3
8006222: 461c mov r4, r3
8006224: 4a65 ldr r2, [pc, #404] ; (80063bc <DrawChannel_8+0x30c>)
8006226: 00eb lsls r3, r5, #3
8006228: 4423 add r3, r4
800622a: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800622e: 2303 movs r3, #3
8006230: f7fc f8c0 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8006234: 79fb ldrb r3, [r7, #7]
8006236: 4a62 ldr r2, [pc, #392] ; (80063c0 <DrawChannel_8+0x310>)
8006238: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800623c: 79fb ldrb r3, [r7, #7]
800623e: 4a61 ldr r2, [pc, #388] ; (80063c4 <DrawChannel_8+0x314>)
8006240: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006244: 79fb ldrb r3, [r7, #7]
8006246: 4a50 ldr r2, [pc, #320] ; (8006388 <DrawChannel_8+0x2d8>)
8006248: 015b lsls r3, r3, #5
800624a: 4413 add r3, r2
800624c: 3306 adds r3, #6
800624e: 881b ldrh r3, [r3, #0]
8006250: b29b uxth r3, r3
8006252: 461a mov r2, r3
8006254: 4b5c ldr r3, [pc, #368] ; (80063c8 <DrawChannel_8+0x318>)
8006256: f853 2022 ldr.w r2, [r3, r2, lsl #2]
800625a: 2303 movs r3, #3
800625c: f7fc f8aa bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006260: 79fb ldrb r3, [r7, #7]
8006262: 4a5a ldr r2, [pc, #360] ; (80063cc <DrawChannel_8+0x31c>)
8006264: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006268: 79fb ldrb r3, [r7, #7]
800626a: 4a59 ldr r2, [pc, #356] ; (80063d0 <DrawChannel_8+0x320>)
800626c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006270: f107 020c add.w r2, r7, #12
8006274: 2303 movs r3, #3
8006276: f7fc f89d bl 80023b4 <BSP_LCD_DisplayStringAt>
else
{
}
}
}
800627a: f000 be1c b.w 8006eb6 <DrawChannel_8+0xe06>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
800627e: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006282: 4848 ldr r0, [pc, #288] ; (80063a4 <DrawChannel_8+0x2f4>)
8006284: f7fb ffd0 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
8006288: 79fb ldrb r3, [r7, #7]
800628a: 4a43 ldr r2, [pc, #268] ; (8006398 <DrawChannel_8+0x2e8>)
800628c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006290: 79fb ldrb r3, [r7, #7]
8006292: 4a42 ldr r2, [pc, #264] ; (800639c <DrawChannel_8+0x2ec>)
8006294: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006298: 4b3b ldr r3, [pc, #236] ; (8006388 <DrawChannel_8+0x2d8>)
800629a: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800629e: b29b uxth r3, r3
80062a0: 461d mov r5, r3
80062a2: 4b3b ldr r3, [pc, #236] ; (8006390 <DrawChannel_8+0x2e0>)
80062a4: 681b ldr r3, [r3, #0]
80062a6: 4a38 ldr r2, [pc, #224] ; (8006388 <DrawChannel_8+0x2d8>)
80062a8: 015b lsls r3, r3, #5
80062aa: 4413 add r3, r2
80062ac: 881b ldrh r3, [r3, #0]
80062ae: b29b uxth r3, r3
80062b0: 461c mov r4, r3
80062b2: 4a3b ldr r2, [pc, #236] ; (80063a0 <DrawChannel_8+0x2f0>)
80062b4: 006b lsls r3, r5, #1
80062b6: 4423 add r3, r4
80062b8: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80062bc: 2303 movs r3, #3
80062be: f7fc f879 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
80062c2: 79fb ldrb r3, [r7, #7]
80062c4: 4a38 ldr r2, [pc, #224] ; (80063a8 <DrawChannel_8+0x2f8>)
80062c6: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80062ca: 79fb ldrb r3, [r7, #7]
80062cc: 4a37 ldr r2, [pc, #220] ; (80063ac <DrawChannel_8+0x2fc>)
80062ce: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
80062d2: 4b2d ldr r3, [pc, #180] ; (8006388 <DrawChannel_8+0x2d8>)
80062d4: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80062d8: b29b uxth r3, r3
80062da: 4619 mov r1, r3
80062dc: 79fb ldrb r3, [r7, #7]
80062de: 4a2a ldr r2, [pc, #168] ; (8006388 <DrawChannel_8+0x2d8>)
80062e0: 015b lsls r3, r3, #5
80062e2: 4413 add r3, r2
80062e4: 3302 adds r3, #2
80062e6: 881b ldrh r3, [r3, #0]
80062e8: b29b uxth r3, r3
80062ea: 461d mov r5, r3
80062ec: 4a30 ldr r2, [pc, #192] ; (80063b0 <DrawChannel_8+0x300>)
80062ee: 460b mov r3, r1
80062f0: 009b lsls r3, r3, #2
80062f2: 440b add r3, r1
80062f4: 442b add r3, r5
80062f6: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80062fa: 2303 movs r3, #3
80062fc: 4621 mov r1, r4
80062fe: f7fc f859 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8006302: 79fb ldrb r3, [r7, #7]
8006304: 4a2b ldr r2, [pc, #172] ; (80063b4 <DrawChannel_8+0x304>)
8006306: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800630a: 79fb ldrb r3, [r7, #7]
800630c: 4a2a ldr r2, [pc, #168] ; (80063b8 <DrawChannel_8+0x308>)
800630e: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006312: 4b1d ldr r3, [pc, #116] ; (8006388 <DrawChannel_8+0x2d8>)
8006314: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006318: b29b uxth r3, r3
800631a: 461d mov r5, r3
800631c: 79fb ldrb r3, [r7, #7]
800631e: 4a1a ldr r2, [pc, #104] ; (8006388 <DrawChannel_8+0x2d8>)
8006320: 015b lsls r3, r3, #5
8006322: 4413 add r3, r2
8006324: 3304 adds r3, #4
8006326: 881b ldrh r3, [r3, #0]
8006328: b29b uxth r3, r3
800632a: 461c mov r4, r3
800632c: 4a23 ldr r2, [pc, #140] ; (80063bc <DrawChannel_8+0x30c>)
800632e: 00eb lsls r3, r5, #3
8006330: 4423 add r3, r4
8006332: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006336: 2303 movs r3, #3
8006338: f7fc f83c bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
800633c: 79fb ldrb r3, [r7, #7]
800633e: 4a20 ldr r2, [pc, #128] ; (80063c0 <DrawChannel_8+0x310>)
8006340: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006344: 79fb ldrb r3, [r7, #7]
8006346: 4a1f ldr r2, [pc, #124] ; (80063c4 <DrawChannel_8+0x314>)
8006348: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800634c: 79fb ldrb r3, [r7, #7]
800634e: 4a0e ldr r2, [pc, #56] ; (8006388 <DrawChannel_8+0x2d8>)
8006350: 015b lsls r3, r3, #5
8006352: 4413 add r3, r2
8006354: 3306 adds r3, #6
8006356: 881b ldrh r3, [r3, #0]
8006358: b29b uxth r3, r3
800635a: 461a mov r2, r3
800635c: 4b1a ldr r3, [pc, #104] ; (80063c8 <DrawChannel_8+0x318>)
800635e: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8006362: 2303 movs r3, #3
8006364: f7fc f826 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006368: 79fb ldrb r3, [r7, #7]
800636a: 4a18 ldr r2, [pc, #96] ; (80063cc <DrawChannel_8+0x31c>)
800636c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006370: 79fb ldrb r3, [r7, #7]
8006372: 4a17 ldr r2, [pc, #92] ; (80063d0 <DrawChannel_8+0x320>)
8006374: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006378: f107 020c add.w r2, r7, #12
800637c: 2303 movs r3, #3
800637e: f7fc f819 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8006382: f000 bd98 b.w 8006eb6 <DrawChannel_8+0xe06>
8006386: bf00 nop
8006388: 2006b3f8 .word 0x2006b3f8
800638c: 20020010 .word 0x20020010
8006390: 2006b1c0 .word 0x2006b1c0
8006394: 20020140 .word 0x20020140
8006398: 0800fd18 .word 0x0800fd18
800639c: 0800fd28 .word 0x0800fd28
80063a0: 20020030 .word 0x20020030
80063a4: ffd8aa57 .word 0xffd8aa57
80063a8: 0800fd38 .word 0x0800fd38
80063ac: 0800fd48 .word 0x0800fd48
80063b0: 20020074 .word 0x20020074
80063b4: 0800fd58 .word 0x0800fd58
80063b8: 0800fd68 .word 0x0800fd68
80063bc: 2002009c .word 0x2002009c
80063c0: 0800fd78 .word 0x0800fd78
80063c4: 0800fd88 .word 0x0800fd88
80063c8: 20020040 .word 0x20020040
80063cc: 0800fd98 .word 0x0800fd98
80063d0: 0800fda8 .word 0x0800fda8
if(menupos == Hp)
80063d4: 4ba1 ldr r3, [pc, #644] ; (800665c <DrawChannel_8+0x5ac>)
80063d6: 781b ldrb r3, [r3, #0]
80063d8: b2db uxtb r3, r3
80063da: 2b01 cmp r3, #1
80063dc: f040 8164 bne.w 80066a8 <DrawChannel_8+0x5f8>
if(ACTIVE_CHANNEL == ch)
80063e0: 79fa ldrb r2, [r7, #7]
80063e2: 4b9f ldr r3, [pc, #636] ; (8006660 <DrawChannel_8+0x5b0>)
80063e4: 681b ldr r3, [r3, #0]
80063e6: 429a cmp r2, r3
80063e8: f040 80b3 bne.w 8006552 <DrawChannel_8+0x4a2>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
80063ec: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80063f0: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
80063f4: f7fb ff18 bl 8002228 <LCD_SetColors>
if(focused)
80063f8: 4b9a ldr r3, [pc, #616] ; (8006664 <DrawChannel_8+0x5b4>)
80063fa: 781b ldrb r3, [r3, #0]
80063fc: b2db uxtb r3, r3
80063fe: 2b00 cmp r3, #0
8006400: d023 beq.n 800644a <DrawChannel_8+0x39a>
if(blk)
8006402: 683b ldr r3, [r7, #0]
8006404: 2b00 cmp r3, #0
8006406: d040 beq.n 800648a <DrawChannel_8+0x3da>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8006408: 79fb ldrb r3, [r7, #7]
800640a: 4a97 ldr r2, [pc, #604] ; (8006668 <DrawChannel_8+0x5b8>)
800640c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006410: 79fb ldrb r3, [r7, #7]
8006412: 4a96 ldr r2, [pc, #600] ; (800666c <DrawChannel_8+0x5bc>)
8006414: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8006418: 4b95 ldr r3, [pc, #596] ; (8006670 <DrawChannel_8+0x5c0>)
800641a: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800641e: b29b uxth r3, r3
8006420: 4619 mov r1, r3
8006422: 79fb ldrb r3, [r7, #7]
8006424: 4a92 ldr r2, [pc, #584] ; (8006670 <DrawChannel_8+0x5c0>)
8006426: 015b lsls r3, r3, #5
8006428: 4413 add r3, r2
800642a: 3302 adds r3, #2
800642c: 881b ldrh r3, [r3, #0]
800642e: b29b uxth r3, r3
8006430: 461d mov r5, r3
8006432: 4a90 ldr r2, [pc, #576] ; (8006674 <DrawChannel_8+0x5c4>)
8006434: 460b mov r3, r1
8006436: 009b lsls r3, r3, #2
8006438: 440b add r3, r1
800643a: 442b add r3, r5
800643c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006440: 2303 movs r3, #3
8006442: 4621 mov r1, r4
8006444: f7fb ffb6 bl 80023b4 <BSP_LCD_DisplayStringAt>
8006448: e01f b.n 800648a <DrawChannel_8+0x3da>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
800644a: 79fb ldrb r3, [r7, #7]
800644c: 4a86 ldr r2, [pc, #536] ; (8006668 <DrawChannel_8+0x5b8>)
800644e: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006452: 79fb ldrb r3, [r7, #7]
8006454: 4a85 ldr r2, [pc, #532] ; (800666c <DrawChannel_8+0x5bc>)
8006456: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
800645a: 4b85 ldr r3, [pc, #532] ; (8006670 <DrawChannel_8+0x5c0>)
800645c: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006460: b29b uxth r3, r3
8006462: 4619 mov r1, r3
8006464: 79fb ldrb r3, [r7, #7]
8006466: 4a82 ldr r2, [pc, #520] ; (8006670 <DrawChannel_8+0x5c0>)
8006468: 015b lsls r3, r3, #5
800646a: 4413 add r3, r2
800646c: 3302 adds r3, #2
800646e: 881b ldrh r3, [r3, #0]
8006470: b29b uxth r3, r3
8006472: 461d mov r5, r3
8006474: 4a7f ldr r2, [pc, #508] ; (8006674 <DrawChannel_8+0x5c4>)
8006476: 460b mov r3, r1
8006478: 009b lsls r3, r3, #2
800647a: 440b add r3, r1
800647c: 442b add r3, r5
800647e: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006482: 2303 movs r3, #3
8006484: 4621 mov r1, r4
8006486: f7fb ff95 bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
800648a: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800648e: 487a ldr r0, [pc, #488] ; (8006678 <DrawChannel_8+0x5c8>)
8006490: f7fb feca bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
8006494: 79fb ldrb r3, [r7, #7]
8006496: 4a79 ldr r2, [pc, #484] ; (800667c <DrawChannel_8+0x5cc>)
8006498: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800649c: 79fb ldrb r3, [r7, #7]
800649e: 4a78 ldr r2, [pc, #480] ; (8006680 <DrawChannel_8+0x5d0>)
80064a0: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80064a4: 4b72 ldr r3, [pc, #456] ; (8006670 <DrawChannel_8+0x5c0>)
80064a6: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80064aa: b29b uxth r3, r3
80064ac: 461d mov r5, r3
80064ae: 4b6c ldr r3, [pc, #432] ; (8006660 <DrawChannel_8+0x5b0>)
80064b0: 681b ldr r3, [r3, #0]
80064b2: 4a6f ldr r2, [pc, #444] ; (8006670 <DrawChannel_8+0x5c0>)
80064b4: 015b lsls r3, r3, #5
80064b6: 4413 add r3, r2
80064b8: 881b ldrh r3, [r3, #0]
80064ba: b29b uxth r3, r3
80064bc: 461c mov r4, r3
80064be: 4a71 ldr r2, [pc, #452] ; (8006684 <DrawChannel_8+0x5d4>)
80064c0: 006b lsls r3, r5, #1
80064c2: 4423 add r3, r4
80064c4: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80064c8: 2303 movs r3, #3
80064ca: f7fb ff73 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
80064ce: 79fb ldrb r3, [r7, #7]
80064d0: 4a6d ldr r2, [pc, #436] ; (8006688 <DrawChannel_8+0x5d8>)
80064d2: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80064d6: 79fb ldrb r3, [r7, #7]
80064d8: 4a6c ldr r2, [pc, #432] ; (800668c <DrawChannel_8+0x5dc>)
80064da: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80064de: 4b64 ldr r3, [pc, #400] ; (8006670 <DrawChannel_8+0x5c0>)
80064e0: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80064e4: b29b uxth r3, r3
80064e6: 461d mov r5, r3
80064e8: 79fb ldrb r3, [r7, #7]
80064ea: 4a61 ldr r2, [pc, #388] ; (8006670 <DrawChannel_8+0x5c0>)
80064ec: 015b lsls r3, r3, #5
80064ee: 4413 add r3, r2
80064f0: 3304 adds r3, #4
80064f2: 881b ldrh r3, [r3, #0]
80064f4: b29b uxth r3, r3
80064f6: 461c mov r4, r3
80064f8: 4a65 ldr r2, [pc, #404] ; (8006690 <DrawChannel_8+0x5e0>)
80064fa: 00eb lsls r3, r5, #3
80064fc: 4423 add r3, r4
80064fe: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006502: 2303 movs r3, #3
8006504: f7fb ff56 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8006508: 79fb ldrb r3, [r7, #7]
800650a: 4a62 ldr r2, [pc, #392] ; (8006694 <DrawChannel_8+0x5e4>)
800650c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006510: 79fb ldrb r3, [r7, #7]
8006512: 4a61 ldr r2, [pc, #388] ; (8006698 <DrawChannel_8+0x5e8>)
8006514: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006518: 79fb ldrb r3, [r7, #7]
800651a: 4a55 ldr r2, [pc, #340] ; (8006670 <DrawChannel_8+0x5c0>)
800651c: 015b lsls r3, r3, #5
800651e: 4413 add r3, r2
8006520: 3306 adds r3, #6
8006522: 881b ldrh r3, [r3, #0]
8006524: b29b uxth r3, r3
8006526: 461a mov r2, r3
8006528: 4b5c ldr r3, [pc, #368] ; (800669c <DrawChannel_8+0x5ec>)
800652a: f853 2022 ldr.w r2, [r3, r2, lsl #2]
800652e: 2303 movs r3, #3
8006530: f7fb ff40 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006534: 79fb ldrb r3, [r7, #7]
8006536: 4a5a ldr r2, [pc, #360] ; (80066a0 <DrawChannel_8+0x5f0>)
8006538: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800653c: 79fb ldrb r3, [r7, #7]
800653e: 4a59 ldr r2, [pc, #356] ; (80066a4 <DrawChannel_8+0x5f4>)
8006540: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006544: f107 020c add.w r2, r7, #12
8006548: 2303 movs r3, #3
800654a: f7fb ff33 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
800654e: f000 bcb2 b.w 8006eb6 <DrawChannel_8+0xe06>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8006552: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006556: 4848 ldr r0, [pc, #288] ; (8006678 <DrawChannel_8+0x5c8>)
8006558: f7fb fe66 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
800655c: 79fb ldrb r3, [r7, #7]
800655e: 4a47 ldr r2, [pc, #284] ; (800667c <DrawChannel_8+0x5cc>)
8006560: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006564: 79fb ldrb r3, [r7, #7]
8006566: 4a46 ldr r2, [pc, #280] ; (8006680 <DrawChannel_8+0x5d0>)
8006568: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800656c: 4b40 ldr r3, [pc, #256] ; (8006670 <DrawChannel_8+0x5c0>)
800656e: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006572: b29b uxth r3, r3
8006574: 461d mov r5, r3
8006576: 4b3a ldr r3, [pc, #232] ; (8006660 <DrawChannel_8+0x5b0>)
8006578: 681b ldr r3, [r3, #0]
800657a: 4a3d ldr r2, [pc, #244] ; (8006670 <DrawChannel_8+0x5c0>)
800657c: 015b lsls r3, r3, #5
800657e: 4413 add r3, r2
8006580: 881b ldrh r3, [r3, #0]
8006582: b29b uxth r3, r3
8006584: 461c mov r4, r3
8006586: 4a3f ldr r2, [pc, #252] ; (8006684 <DrawChannel_8+0x5d4>)
8006588: 006b lsls r3, r5, #1
800658a: 4423 add r3, r4
800658c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006590: 2303 movs r3, #3
8006592: f7fb ff0f bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8006596: 79fb ldrb r3, [r7, #7]
8006598: 4a33 ldr r2, [pc, #204] ; (8006668 <DrawChannel_8+0x5b8>)
800659a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800659e: 79fb ldrb r3, [r7, #7]
80065a0: 4a32 ldr r2, [pc, #200] ; (800666c <DrawChannel_8+0x5bc>)
80065a2: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
80065a6: 4b32 ldr r3, [pc, #200] ; (8006670 <DrawChannel_8+0x5c0>)
80065a8: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80065ac: b29b uxth r3, r3
80065ae: 4619 mov r1, r3
80065b0: 79fb ldrb r3, [r7, #7]
80065b2: 4a2f ldr r2, [pc, #188] ; (8006670 <DrawChannel_8+0x5c0>)
80065b4: 015b lsls r3, r3, #5
80065b6: 4413 add r3, r2
80065b8: 3302 adds r3, #2
80065ba: 881b ldrh r3, [r3, #0]
80065bc: b29b uxth r3, r3
80065be: 461d mov r5, r3
80065c0: 4a2c ldr r2, [pc, #176] ; (8006674 <DrawChannel_8+0x5c4>)
80065c2: 460b mov r3, r1
80065c4: 009b lsls r3, r3, #2
80065c6: 440b add r3, r1
80065c8: 442b add r3, r5
80065ca: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80065ce: 2303 movs r3, #3
80065d0: 4621 mov r1, r4
80065d2: f7fb feef bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
80065d6: 79fb ldrb r3, [r7, #7]
80065d8: 4a2b ldr r2, [pc, #172] ; (8006688 <DrawChannel_8+0x5d8>)
80065da: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80065de: 79fb ldrb r3, [r7, #7]
80065e0: 4a2a ldr r2, [pc, #168] ; (800668c <DrawChannel_8+0x5dc>)
80065e2: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80065e6: 4b22 ldr r3, [pc, #136] ; (8006670 <DrawChannel_8+0x5c0>)
80065e8: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80065ec: b29b uxth r3, r3
80065ee: 461d mov r5, r3
80065f0: 79fb ldrb r3, [r7, #7]
80065f2: 4a1f ldr r2, [pc, #124] ; (8006670 <DrawChannel_8+0x5c0>)
80065f4: 015b lsls r3, r3, #5
80065f6: 4413 add r3, r2
80065f8: 3304 adds r3, #4
80065fa: 881b ldrh r3, [r3, #0]
80065fc: b29b uxth r3, r3
80065fe: 461c mov r4, r3
8006600: 4a23 ldr r2, [pc, #140] ; (8006690 <DrawChannel_8+0x5e0>)
8006602: 00eb lsls r3, r5, #3
8006604: 4423 add r3, r4
8006606: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800660a: 2303 movs r3, #3
800660c: f7fb fed2 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8006610: 79fb ldrb r3, [r7, #7]
8006612: 4a20 ldr r2, [pc, #128] ; (8006694 <DrawChannel_8+0x5e4>)
8006614: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006618: 79fb ldrb r3, [r7, #7]
800661a: 4a1f ldr r2, [pc, #124] ; (8006698 <DrawChannel_8+0x5e8>)
800661c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006620: 79fb ldrb r3, [r7, #7]
8006622: 4a13 ldr r2, [pc, #76] ; (8006670 <DrawChannel_8+0x5c0>)
8006624: 015b lsls r3, r3, #5
8006626: 4413 add r3, r2
8006628: 3306 adds r3, #6
800662a: 881b ldrh r3, [r3, #0]
800662c: b29b uxth r3, r3
800662e: 461a mov r2, r3
8006630: 4b1a ldr r3, [pc, #104] ; (800669c <DrawChannel_8+0x5ec>)
8006632: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8006636: 2303 movs r3, #3
8006638: f7fb febc bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
800663c: 79fb ldrb r3, [r7, #7]
800663e: 4a18 ldr r2, [pc, #96] ; (80066a0 <DrawChannel_8+0x5f0>)
8006640: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006644: 79fb ldrb r3, [r7, #7]
8006646: 4a17 ldr r2, [pc, #92] ; (80066a4 <DrawChannel_8+0x5f4>)
8006648: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800664c: f107 020c add.w r2, r7, #12
8006650: 2303 movs r3, #3
8006652: f7fb feaf bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8006656: f000 bc2e b.w 8006eb6 <DrawChannel_8+0xe06>
800665a: bf00 nop
800665c: 20020010 .word 0x20020010
8006660: 2006b1c0 .word 0x2006b1c0
8006664: 20020140 .word 0x20020140
8006668: 0800fd38 .word 0x0800fd38
800666c: 0800fd48 .word 0x0800fd48
8006670: 2006b3f8 .word 0x2006b3f8
8006674: 20020074 .word 0x20020074
8006678: ffd8aa57 .word 0xffd8aa57
800667c: 0800fd18 .word 0x0800fd18
8006680: 0800fd28 .word 0x0800fd28
8006684: 20020030 .word 0x20020030
8006688: 0800fd58 .word 0x0800fd58
800668c: 0800fd68 .word 0x0800fd68
8006690: 2002009c .word 0x2002009c
8006694: 0800fd78 .word 0x0800fd78
8006698: 0800fd88 .word 0x0800fd88
800669c: 20020040 .word 0x20020040
80066a0: 0800fd98 .word 0x0800fd98
80066a4: 0800fda8 .word 0x0800fda8
if(menupos == Lp)
80066a8: 4bb7 ldr r3, [pc, #732] ; (8006988 <DrawChannel_8+0x8d8>)
80066aa: 781b ldrb r3, [r3, #0]
80066ac: b2db uxtb r3, r3
80066ae: 2b02 cmp r3, #2
80066b0: f040 8138 bne.w 8006924 <DrawChannel_8+0x874>
if(ACTIVE_CHANNEL == ch)
80066b4: 79fa ldrb r2, [r7, #7]
80066b6: 4bb5 ldr r3, [pc, #724] ; (800698c <DrawChannel_8+0x8dc>)
80066b8: 681b ldr r3, [r3, #0]
80066ba: 429a cmp r2, r3
80066bc: f040 80af bne.w 800681e <DrawChannel_8+0x76e>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
80066c0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
80066c4: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
80066c8: f7fb fdae bl 8002228 <LCD_SetColors>
if(focused)
80066cc: 4bb0 ldr r3, [pc, #704] ; (8006990 <DrawChannel_8+0x8e0>)
80066ce: 781b ldrb r3, [r3, #0]
80066d0: b2db uxtb r3, r3
80066d2: 2b00 cmp r3, #0
80066d4: d020 beq.n 8006718 <DrawChannel_8+0x668>
if(blk)
80066d6: 683b ldr r3, [r7, #0]
80066d8: 2b00 cmp r3, #0
80066da: d03a beq.n 8006752 <DrawChannel_8+0x6a2>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
80066dc: 79fb ldrb r3, [r7, #7]
80066de: 4aad ldr r2, [pc, #692] ; (8006994 <DrawChannel_8+0x8e4>)
80066e0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80066e4: 79fb ldrb r3, [r7, #7]
80066e6: 4aac ldr r2, [pc, #688] ; (8006998 <DrawChannel_8+0x8e8>)
80066e8: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80066ec: 4bab ldr r3, [pc, #684] ; (800699c <DrawChannel_8+0x8ec>)
80066ee: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80066f2: b29b uxth r3, r3
80066f4: 461d mov r5, r3
80066f6: 79fb ldrb r3, [r7, #7]
80066f8: 4aa8 ldr r2, [pc, #672] ; (800699c <DrawChannel_8+0x8ec>)
80066fa: 015b lsls r3, r3, #5
80066fc: 4413 add r3, r2
80066fe: 3304 adds r3, #4
8006700: 881b ldrh r3, [r3, #0]
8006702: b29b uxth r3, r3
8006704: 461c mov r4, r3
8006706: 4aa6 ldr r2, [pc, #664] ; (80069a0 <DrawChannel_8+0x8f0>)
8006708: 00eb lsls r3, r5, #3
800670a: 4423 add r3, r4
800670c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006710: 2303 movs r3, #3
8006712: f7fb fe4f bl 80023b4 <BSP_LCD_DisplayStringAt>
8006716: e01c b.n 8006752 <DrawChannel_8+0x6a2>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8006718: 79fb ldrb r3, [r7, #7]
800671a: 4a9e ldr r2, [pc, #632] ; (8006994 <DrawChannel_8+0x8e4>)
800671c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006720: 79fb ldrb r3, [r7, #7]
8006722: 4a9d ldr r2, [pc, #628] ; (8006998 <DrawChannel_8+0x8e8>)
8006724: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006728: 4b9c ldr r3, [pc, #624] ; (800699c <DrawChannel_8+0x8ec>)
800672a: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800672e: b29b uxth r3, r3
8006730: 461d mov r5, r3
8006732: 79fb ldrb r3, [r7, #7]
8006734: 4a99 ldr r2, [pc, #612] ; (800699c <DrawChannel_8+0x8ec>)
8006736: 015b lsls r3, r3, #5
8006738: 4413 add r3, r2
800673a: 3304 adds r3, #4
800673c: 881b ldrh r3, [r3, #0]
800673e: b29b uxth r3, r3
8006740: 461c mov r4, r3
8006742: 4a97 ldr r2, [pc, #604] ; (80069a0 <DrawChannel_8+0x8f0>)
8006744: 00eb lsls r3, r5, #3
8006746: 4423 add r3, r4
8006748: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800674c: 2303 movs r3, #3
800674e: f7fb fe31 bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8006752: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006756: 4893 ldr r0, [pc, #588] ; (80069a4 <DrawChannel_8+0x8f4>)
8006758: f7fb fd66 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
800675c: 79fb ldrb r3, [r7, #7]
800675e: 4a92 ldr r2, [pc, #584] ; (80069a8 <DrawChannel_8+0x8f8>)
8006760: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006764: 79fb ldrb r3, [r7, #7]
8006766: 4a91 ldr r2, [pc, #580] ; (80069ac <DrawChannel_8+0x8fc>)
8006768: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
800676c: 4b8b ldr r3, [pc, #556] ; (800699c <DrawChannel_8+0x8ec>)
800676e: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006772: b29b uxth r3, r3
8006774: 461d mov r5, r3
8006776: 4b85 ldr r3, [pc, #532] ; (800698c <DrawChannel_8+0x8dc>)
8006778: 681b ldr r3, [r3, #0]
800677a: 4a88 ldr r2, [pc, #544] ; (800699c <DrawChannel_8+0x8ec>)
800677c: 015b lsls r3, r3, #5
800677e: 4413 add r3, r2
8006780: 881b ldrh r3, [r3, #0]
8006782: b29b uxth r3, r3
8006784: 461c mov r4, r3
8006786: 4a8a ldr r2, [pc, #552] ; (80069b0 <DrawChannel_8+0x900>)
8006788: 006b lsls r3, r5, #1
800678a: 4423 add r3, r4
800678c: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006790: 2303 movs r3, #3
8006792: f7fb fe0f bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8006796: 79fb ldrb r3, [r7, #7]
8006798: 4a86 ldr r2, [pc, #536] ; (80069b4 <DrawChannel_8+0x904>)
800679a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800679e: 79fb ldrb r3, [r7, #7]
80067a0: 4a85 ldr r2, [pc, #532] ; (80069b8 <DrawChannel_8+0x908>)
80067a2: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
80067a6: 4b7d ldr r3, [pc, #500] ; (800699c <DrawChannel_8+0x8ec>)
80067a8: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80067ac: b29b uxth r3, r3
80067ae: 4619 mov r1, r3
80067b0: 79fb ldrb r3, [r7, #7]
80067b2: 4a7a ldr r2, [pc, #488] ; (800699c <DrawChannel_8+0x8ec>)
80067b4: 015b lsls r3, r3, #5
80067b6: 4413 add r3, r2
80067b8: 3302 adds r3, #2
80067ba: 881b ldrh r3, [r3, #0]
80067bc: b29b uxth r3, r3
80067be: 461d mov r5, r3
80067c0: 4a7e ldr r2, [pc, #504] ; (80069bc <DrawChannel_8+0x90c>)
80067c2: 460b mov r3, r1
80067c4: 009b lsls r3, r3, #2
80067c6: 440b add r3, r1
80067c8: 442b add r3, r5
80067ca: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80067ce: 2303 movs r3, #3
80067d0: 4621 mov r1, r4
80067d2: f7fb fdef bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
80067d6: 79fb ldrb r3, [r7, #7]
80067d8: 4a79 ldr r2, [pc, #484] ; (80069c0 <DrawChannel_8+0x910>)
80067da: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80067de: 79fb ldrb r3, [r7, #7]
80067e0: 4a78 ldr r2, [pc, #480] ; (80069c4 <DrawChannel_8+0x914>)
80067e2: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80067e6: 79fb ldrb r3, [r7, #7]
80067e8: 4a6c ldr r2, [pc, #432] ; (800699c <DrawChannel_8+0x8ec>)
80067ea: 015b lsls r3, r3, #5
80067ec: 4413 add r3, r2
80067ee: 3306 adds r3, #6
80067f0: 881b ldrh r3, [r3, #0]
80067f2: b29b uxth r3, r3
80067f4: 461a mov r2, r3
80067f6: 4b74 ldr r3, [pc, #464] ; (80069c8 <DrawChannel_8+0x918>)
80067f8: f853 2022 ldr.w r2, [r3, r2, lsl #2]
80067fc: 2303 movs r3, #3
80067fe: f7fb fdd9 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006802: 79fb ldrb r3, [r7, #7]
8006804: 4a71 ldr r2, [pc, #452] ; (80069cc <DrawChannel_8+0x91c>)
8006806: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800680a: 79fb ldrb r3, [r7, #7]
800680c: 4a70 ldr r2, [pc, #448] ; (80069d0 <DrawChannel_8+0x920>)
800680e: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006812: f107 020c add.w r2, r7, #12
8006816: 2303 movs r3, #3
8006818: f7fb fdcc bl 80023b4 <BSP_LCD_DisplayStringAt>
}
800681c: e34b b.n 8006eb6 <DrawChannel_8+0xe06>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
800681e: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006822: 4860 ldr r0, [pc, #384] ; (80069a4 <DrawChannel_8+0x8f4>)
8006824: f7fb fd00 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
8006828: 79fb ldrb r3, [r7, #7]
800682a: 4a5f ldr r2, [pc, #380] ; (80069a8 <DrawChannel_8+0x8f8>)
800682c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006830: 79fb ldrb r3, [r7, #7]
8006832: 4a5e ldr r2, [pc, #376] ; (80069ac <DrawChannel_8+0x8fc>)
8006834: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006838: 4b58 ldr r3, [pc, #352] ; (800699c <DrawChannel_8+0x8ec>)
800683a: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
800683e: b29b uxth r3, r3
8006840: 461d mov r5, r3
8006842: 4b52 ldr r3, [pc, #328] ; (800698c <DrawChannel_8+0x8dc>)
8006844: 681b ldr r3, [r3, #0]
8006846: 4a55 ldr r2, [pc, #340] ; (800699c <DrawChannel_8+0x8ec>)
8006848: 015b lsls r3, r3, #5
800684a: 4413 add r3, r2
800684c: 881b ldrh r3, [r3, #0]
800684e: b29b uxth r3, r3
8006850: 461c mov r4, r3
8006852: 4a57 ldr r2, [pc, #348] ; (80069b0 <DrawChannel_8+0x900>)
8006854: 006b lsls r3, r5, #1
8006856: 4423 add r3, r4
8006858: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800685c: 2303 movs r3, #3
800685e: f7fb fda9 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8006862: 79fb ldrb r3, [r7, #7]
8006864: 4a53 ldr r2, [pc, #332] ; (80069b4 <DrawChannel_8+0x904>)
8006866: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
800686a: 79fb ldrb r3, [r7, #7]
800686c: 4a52 ldr r2, [pc, #328] ; (80069b8 <DrawChannel_8+0x908>)
800686e: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8006872: 4b4a ldr r3, [pc, #296] ; (800699c <DrawChannel_8+0x8ec>)
8006874: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006878: b29b uxth r3, r3
800687a: 4619 mov r1, r3
800687c: 79fb ldrb r3, [r7, #7]
800687e: 4a47 ldr r2, [pc, #284] ; (800699c <DrawChannel_8+0x8ec>)
8006880: 015b lsls r3, r3, #5
8006882: 4413 add r3, r2
8006884: 3302 adds r3, #2
8006886: 881b ldrh r3, [r3, #0]
8006888: b29b uxth r3, r3
800688a: 461d mov r5, r3
800688c: 4a4b ldr r2, [pc, #300] ; (80069bc <DrawChannel_8+0x90c>)
800688e: 460b mov r3, r1
8006890: 009b lsls r3, r3, #2
8006892: 440b add r3, r1
8006894: 442b add r3, r5
8006896: f852 2023 ldr.w r2, [r2, r3, lsl #2]
800689a: 2303 movs r3, #3
800689c: 4621 mov r1, r4
800689e: f7fb fd89 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
80068a2: 79fb ldrb r3, [r7, #7]
80068a4: 4a3b ldr r2, [pc, #236] ; (8006994 <DrawChannel_8+0x8e4>)
80068a6: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80068aa: 79fb ldrb r3, [r7, #7]
80068ac: 4a3a ldr r2, [pc, #232] ; (8006998 <DrawChannel_8+0x8e8>)
80068ae: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80068b2: 4b3a ldr r3, [pc, #232] ; (800699c <DrawChannel_8+0x8ec>)
80068b4: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
80068b8: b29b uxth r3, r3
80068ba: 461d mov r5, r3
80068bc: 79fb ldrb r3, [r7, #7]
80068be: 4a37 ldr r2, [pc, #220] ; (800699c <DrawChannel_8+0x8ec>)
80068c0: 015b lsls r3, r3, #5
80068c2: 4413 add r3, r2
80068c4: 3304 adds r3, #4
80068c6: 881b ldrh r3, [r3, #0]
80068c8: b29b uxth r3, r3
80068ca: 461c mov r4, r3
80068cc: 4a34 ldr r2, [pc, #208] ; (80069a0 <DrawChannel_8+0x8f0>)
80068ce: 00eb lsls r3, r5, #3
80068d0: 4423 add r3, r4
80068d2: f852 2023 ldr.w r2, [r2, r3, lsl #2]
80068d6: 2303 movs r3, #3
80068d8: f7fb fd6c bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
80068dc: 79fb ldrb r3, [r7, #7]
80068de: 4a38 ldr r2, [pc, #224] ; (80069c0 <DrawChannel_8+0x910>)
80068e0: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80068e4: 79fb ldrb r3, [r7, #7]
80068e6: 4a37 ldr r2, [pc, #220] ; (80069c4 <DrawChannel_8+0x914>)
80068e8: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80068ec: 79fb ldrb r3, [r7, #7]
80068ee: 4a2b ldr r2, [pc, #172] ; (800699c <DrawChannel_8+0x8ec>)
80068f0: 015b lsls r3, r3, #5
80068f2: 4413 add r3, r2
80068f4: 3306 adds r3, #6
80068f6: 881b ldrh r3, [r3, #0]
80068f8: b29b uxth r3, r3
80068fa: 461a mov r2, r3
80068fc: 4b32 ldr r3, [pc, #200] ; (80069c8 <DrawChannel_8+0x918>)
80068fe: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8006902: 2303 movs r3, #3
8006904: f7fb fd56 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006908: 79fb ldrb r3, [r7, #7]
800690a: 4a30 ldr r2, [pc, #192] ; (80069cc <DrawChannel_8+0x91c>)
800690c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006910: 79fb ldrb r3, [r7, #7]
8006912: 4a2f ldr r2, [pc, #188] ; (80069d0 <DrawChannel_8+0x920>)
8006914: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006918: f107 020c add.w r2, r7, #12
800691c: 2303 movs r3, #3
800691e: f7fb fd49 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8006922: e2c8 b.n 8006eb6 <DrawChannel_8+0xe06>
if(menupos == Km)
8006924: 4b18 ldr r3, [pc, #96] ; (8006988 <DrawChannel_8+0x8d8>)
8006926: 781b ldrb r3, [r3, #0]
8006928: b2db uxtb r3, r3
800692a: 2b03 cmp r3, #3
800692c: f040 8158 bne.w 8006be0 <DrawChannel_8+0xb30>
if(ACTIVE_CHANNEL == ch)
8006930: 79fa ldrb r2, [r7, #7]
8006932: 4b16 ldr r3, [pc, #88] ; (800698c <DrawChannel_8+0x8dc>)
8006934: 681b ldr r3, [r3, #0]
8006936: 429a cmp r2, r3
8006938: f040 80cf bne.w 8006ada <DrawChannel_8+0xa2a>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
800693c: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006940: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8006944: f7fb fc70 bl 8002228 <LCD_SetColors>
if(focused)
8006948: 4b11 ldr r3, [pc, #68] ; (8006990 <DrawChannel_8+0x8e0>)
800694a: 781b ldrb r3, [r3, #0]
800694c: b2db uxtb r3, r3
800694e: 2b00 cmp r3, #0
8006950: d040 beq.n 80069d4 <DrawChannel_8+0x924>
if(blk)
8006952: 683b ldr r3, [r7, #0]
8006954: 2b00 cmp r3, #0
8006956: d053 beq.n 8006a00 <DrawChannel_8+0x950>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8006958: 79fb ldrb r3, [r7, #7]
800695a: 4a19 ldr r2, [pc, #100] ; (80069c0 <DrawChannel_8+0x910>)
800695c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006960: 79fb ldrb r3, [r7, #7]
8006962: 4a18 ldr r2, [pc, #96] ; (80069c4 <DrawChannel_8+0x914>)
8006964: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006968: 79fb ldrb r3, [r7, #7]
800696a: 4a0c ldr r2, [pc, #48] ; (800699c <DrawChannel_8+0x8ec>)
800696c: 015b lsls r3, r3, #5
800696e: 4413 add r3, r2
8006970: 3306 adds r3, #6
8006972: 881b ldrh r3, [r3, #0]
8006974: b29b uxth r3, r3
8006976: 461a mov r2, r3
8006978: 4b13 ldr r3, [pc, #76] ; (80069c8 <DrawChannel_8+0x918>)
800697a: f853 2022 ldr.w r2, [r3, r2, lsl #2]
800697e: 2303 movs r3, #3
8006980: f7fb fd18 bl 80023b4 <BSP_LCD_DisplayStringAt>
8006984: e03c b.n 8006a00 <DrawChannel_8+0x950>
8006986: bf00 nop
8006988: 20020010 .word 0x20020010
800698c: 2006b1c0 .word 0x2006b1c0
8006990: 20020140 .word 0x20020140
8006994: 0800fd58 .word 0x0800fd58
8006998: 0800fd68 .word 0x0800fd68
800699c: 2006b3f8 .word 0x2006b3f8
80069a0: 2002009c .word 0x2002009c
80069a4: ffd8aa57 .word 0xffd8aa57
80069a8: 0800fd18 .word 0x0800fd18
80069ac: 0800fd28 .word 0x0800fd28
80069b0: 20020030 .word 0x20020030
80069b4: 0800fd38 .word 0x0800fd38
80069b8: 0800fd48 .word 0x0800fd48
80069bc: 20020074 .word 0x20020074
80069c0: 0800fd78 .word 0x0800fd78
80069c4: 0800fd88 .word 0x0800fd88
80069c8: 20020040 .word 0x20020040
80069cc: 0800fd98 .word 0x0800fd98
80069d0: 0800fda8 .word 0x0800fda8
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
80069d4: 79fb ldrb r3, [r7, #7]
80069d6: 4a96 ldr r2, [pc, #600] ; (8006c30 <DrawChannel_8+0xb80>)
80069d8: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
80069dc: 79fb ldrb r3, [r7, #7]
80069de: 4a95 ldr r2, [pc, #596] ; (8006c34 <DrawChannel_8+0xb84>)
80069e0: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
80069e4: 79fb ldrb r3, [r7, #7]
80069e6: 4a94 ldr r2, [pc, #592] ; (8006c38 <DrawChannel_8+0xb88>)
80069e8: 015b lsls r3, r3, #5
80069ea: 4413 add r3, r2
80069ec: 3306 adds r3, #6
80069ee: 881b ldrh r3, [r3, #0]
80069f0: b29b uxth r3, r3
80069f2: 461a mov r2, r3
80069f4: 4b91 ldr r3, [pc, #580] ; (8006c3c <DrawChannel_8+0xb8c>)
80069f6: f853 2022 ldr.w r2, [r3, r2, lsl #2]
80069fa: 2303 movs r3, #3
80069fc: f7fb fcda bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8006a00: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006a04: 488e ldr r0, [pc, #568] ; (8006c40 <DrawChannel_8+0xb90>)
8006a06: f7fb fc0f bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
8006a0a: 79fb ldrb r3, [r7, #7]
8006a0c: 4a8d ldr r2, [pc, #564] ; (8006c44 <DrawChannel_8+0xb94>)
8006a0e: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006a12: 79fb ldrb r3, [r7, #7]
8006a14: 4a8c ldr r2, [pc, #560] ; (8006c48 <DrawChannel_8+0xb98>)
8006a16: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006a1a: 4b87 ldr r3, [pc, #540] ; (8006c38 <DrawChannel_8+0xb88>)
8006a1c: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006a20: b29b uxth r3, r3
8006a22: 461d mov r5, r3
8006a24: 4b89 ldr r3, [pc, #548] ; (8006c4c <DrawChannel_8+0xb9c>)
8006a26: 681b ldr r3, [r3, #0]
8006a28: 4a83 ldr r2, [pc, #524] ; (8006c38 <DrawChannel_8+0xb88>)
8006a2a: 015b lsls r3, r3, #5
8006a2c: 4413 add r3, r2
8006a2e: 881b ldrh r3, [r3, #0]
8006a30: b29b uxth r3, r3
8006a32: 461c mov r4, r3
8006a34: 4a86 ldr r2, [pc, #536] ; (8006c50 <DrawChannel_8+0xba0>)
8006a36: 006b lsls r3, r5, #1
8006a38: 4423 add r3, r4
8006a3a: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006a3e: 2303 movs r3, #3
8006a40: f7fb fcb8 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8006a44: 79fb ldrb r3, [r7, #7]
8006a46: 4a83 ldr r2, [pc, #524] ; (8006c54 <DrawChannel_8+0xba4>)
8006a48: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006a4c: 79fb ldrb r3, [r7, #7]
8006a4e: 4a82 ldr r2, [pc, #520] ; (8006c58 <DrawChannel_8+0xba8>)
8006a50: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8006a54: 4b78 ldr r3, [pc, #480] ; (8006c38 <DrawChannel_8+0xb88>)
8006a56: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006a5a: b29b uxth r3, r3
8006a5c: 4619 mov r1, r3
8006a5e: 79fb ldrb r3, [r7, #7]
8006a60: 4a75 ldr r2, [pc, #468] ; (8006c38 <DrawChannel_8+0xb88>)
8006a62: 015b lsls r3, r3, #5
8006a64: 4413 add r3, r2
8006a66: 3302 adds r3, #2
8006a68: 881b ldrh r3, [r3, #0]
8006a6a: b29b uxth r3, r3
8006a6c: 461d mov r5, r3
8006a6e: 4a7b ldr r2, [pc, #492] ; (8006c5c <DrawChannel_8+0xbac>)
8006a70: 460b mov r3, r1
8006a72: 009b lsls r3, r3, #2
8006a74: 440b add r3, r1
8006a76: 442b add r3, r5
8006a78: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006a7c: 2303 movs r3, #3
8006a7e: 4621 mov r1, r4
8006a80: f7fb fc98 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8006a84: 79fb ldrb r3, [r7, #7]
8006a86: 4a76 ldr r2, [pc, #472] ; (8006c60 <DrawChannel_8+0xbb0>)
8006a88: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006a8c: 79fb ldrb r3, [r7, #7]
8006a8e: 4a75 ldr r2, [pc, #468] ; (8006c64 <DrawChannel_8+0xbb4>)
8006a90: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006a94: 4b68 ldr r3, [pc, #416] ; (8006c38 <DrawChannel_8+0xb88>)
8006a96: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006a9a: b29b uxth r3, r3
8006a9c: 461d mov r5, r3
8006a9e: 79fb ldrb r3, [r7, #7]
8006aa0: 4a65 ldr r2, [pc, #404] ; (8006c38 <DrawChannel_8+0xb88>)
8006aa2: 015b lsls r3, r3, #5
8006aa4: 4413 add r3, r2
8006aa6: 3304 adds r3, #4
8006aa8: 881b ldrh r3, [r3, #0]
8006aaa: b29b uxth r3, r3
8006aac: 461c mov r4, r3
8006aae: 4a6e ldr r2, [pc, #440] ; (8006c68 <DrawChannel_8+0xbb8>)
8006ab0: 00eb lsls r3, r5, #3
8006ab2: 4423 add r3, r4
8006ab4: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006ab8: 2303 movs r3, #3
8006aba: f7fb fc7b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006abe: 79fb ldrb r3, [r7, #7]
8006ac0: 4a6a ldr r2, [pc, #424] ; (8006c6c <DrawChannel_8+0xbbc>)
8006ac2: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006ac6: 79fb ldrb r3, [r7, #7]
8006ac8: 4a69 ldr r2, [pc, #420] ; (8006c70 <DrawChannel_8+0xbc0>)
8006aca: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006ace: f107 020c add.w r2, r7, #12
8006ad2: 2303 movs r3, #3
8006ad4: f7fb fc6e bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8006ad8: e1ed b.n 8006eb6 <DrawChannel_8+0xe06>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8006ada: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006ade: 4858 ldr r0, [pc, #352] ; (8006c40 <DrawChannel_8+0xb90>)
8006ae0: f7fb fba2 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
8006ae4: 79fb ldrb r3, [r7, #7]
8006ae6: 4a57 ldr r2, [pc, #348] ; (8006c44 <DrawChannel_8+0xb94>)
8006ae8: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006aec: 79fb ldrb r3, [r7, #7]
8006aee: 4a56 ldr r2, [pc, #344] ; (8006c48 <DrawChannel_8+0xb98>)
8006af0: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006af4: 4b50 ldr r3, [pc, #320] ; (8006c38 <DrawChannel_8+0xb88>)
8006af6: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006afa: b29b uxth r3, r3
8006afc: 461d mov r5, r3
8006afe: 4b53 ldr r3, [pc, #332] ; (8006c4c <DrawChannel_8+0xb9c>)
8006b00: 681b ldr r3, [r3, #0]
8006b02: 4a4d ldr r2, [pc, #308] ; (8006c38 <DrawChannel_8+0xb88>)
8006b04: 015b lsls r3, r3, #5
8006b06: 4413 add r3, r2
8006b08: 881b ldrh r3, [r3, #0]
8006b0a: b29b uxth r3, r3
8006b0c: 461c mov r4, r3
8006b0e: 4a50 ldr r2, [pc, #320] ; (8006c50 <DrawChannel_8+0xba0>)
8006b10: 006b lsls r3, r5, #1
8006b12: 4423 add r3, r4
8006b14: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006b18: 2303 movs r3, #3
8006b1a: f7fb fc4b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8006b1e: 79fb ldrb r3, [r7, #7]
8006b20: 4a4c ldr r2, [pc, #304] ; (8006c54 <DrawChannel_8+0xba4>)
8006b22: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006b26: 79fb ldrb r3, [r7, #7]
8006b28: 4a4b ldr r2, [pc, #300] ; (8006c58 <DrawChannel_8+0xba8>)
8006b2a: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8006b2e: 4b42 ldr r3, [pc, #264] ; (8006c38 <DrawChannel_8+0xb88>)
8006b30: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006b34: b29b uxth r3, r3
8006b36: 4619 mov r1, r3
8006b38: 79fb ldrb r3, [r7, #7]
8006b3a: 4a3f ldr r2, [pc, #252] ; (8006c38 <DrawChannel_8+0xb88>)
8006b3c: 015b lsls r3, r3, #5
8006b3e: 4413 add r3, r2
8006b40: 3302 adds r3, #2
8006b42: 881b ldrh r3, [r3, #0]
8006b44: b29b uxth r3, r3
8006b46: 461d mov r5, r3
8006b48: 4a44 ldr r2, [pc, #272] ; (8006c5c <DrawChannel_8+0xbac>)
8006b4a: 460b mov r3, r1
8006b4c: 009b lsls r3, r3, #2
8006b4e: 440b add r3, r1
8006b50: 442b add r3, r5
8006b52: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006b56: 2303 movs r3, #3
8006b58: 4621 mov r1, r4
8006b5a: f7fb fc2b bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8006b5e: 79fb ldrb r3, [r7, #7]
8006b60: 4a3f ldr r2, [pc, #252] ; (8006c60 <DrawChannel_8+0xbb0>)
8006b62: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006b66: 79fb ldrb r3, [r7, #7]
8006b68: 4a3e ldr r2, [pc, #248] ; (8006c64 <DrawChannel_8+0xbb4>)
8006b6a: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006b6e: 4b32 ldr r3, [pc, #200] ; (8006c38 <DrawChannel_8+0xb88>)
8006b70: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006b74: b29b uxth r3, r3
8006b76: 461d mov r5, r3
8006b78: 79fb ldrb r3, [r7, #7]
8006b7a: 4a2f ldr r2, [pc, #188] ; (8006c38 <DrawChannel_8+0xb88>)
8006b7c: 015b lsls r3, r3, #5
8006b7e: 4413 add r3, r2
8006b80: 3304 adds r3, #4
8006b82: 881b ldrh r3, [r3, #0]
8006b84: b29b uxth r3, r3
8006b86: 461c mov r4, r3
8006b88: 4a37 ldr r2, [pc, #220] ; (8006c68 <DrawChannel_8+0xbb8>)
8006b8a: 00eb lsls r3, r5, #3
8006b8c: 4423 add r3, r4
8006b8e: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006b92: 2303 movs r3, #3
8006b94: f7fb fc0e bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8006b98: 79fb ldrb r3, [r7, #7]
8006b9a: 4a25 ldr r2, [pc, #148] ; (8006c30 <DrawChannel_8+0xb80>)
8006b9c: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006ba0: 79fb ldrb r3, [r7, #7]
8006ba2: 4a24 ldr r2, [pc, #144] ; (8006c34 <DrawChannel_8+0xb84>)
8006ba4: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006ba8: 79fb ldrb r3, [r7, #7]
8006baa: 4a23 ldr r2, [pc, #140] ; (8006c38 <DrawChannel_8+0xb88>)
8006bac: 015b lsls r3, r3, #5
8006bae: 4413 add r3, r2
8006bb0: 3306 adds r3, #6
8006bb2: 881b ldrh r3, [r3, #0]
8006bb4: b29b uxth r3, r3
8006bb6: 461a mov r2, r3
8006bb8: 4b20 ldr r3, [pc, #128] ; (8006c3c <DrawChannel_8+0xb8c>)
8006bba: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8006bbe: 2303 movs r3, #3
8006bc0: f7fb fbf8 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006bc4: 79fb ldrb r3, [r7, #7]
8006bc6: 4a29 ldr r2, [pc, #164] ; (8006c6c <DrawChannel_8+0xbbc>)
8006bc8: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006bcc: 79fb ldrb r3, [r7, #7]
8006bce: 4a28 ldr r2, [pc, #160] ; (8006c70 <DrawChannel_8+0xbc0>)
8006bd0: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006bd4: f107 020c add.w r2, r7, #12
8006bd8: 2303 movs r3, #3
8006bda: f7fb fbeb bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8006bde: e16a b.n 8006eb6 <DrawChannel_8+0xe06>
if(menupos == Kn)
8006be0: 4b24 ldr r3, [pc, #144] ; (8006c74 <DrawChannel_8+0xbc4>)
8006be2: 781b ldrb r3, [r3, #0]
8006be4: b2db uxtb r3, r3
8006be6: 2b04 cmp r3, #4
8006be8: f040 814e bne.w 8006e88 <DrawChannel_8+0xdd8>
if(ACTIVE_CHANNEL == ch)
8006bec: 79fa ldrb r2, [r7, #7]
8006bee: 4b17 ldr r3, [pc, #92] ; (8006c4c <DrawChannel_8+0xb9c>)
8006bf0: 681b ldr r3, [r3, #0]
8006bf2: 429a cmp r2, r3
8006bf4: f040 80c5 bne.w 8006d82 <DrawChannel_8+0xcd2>
LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_BLACK);
8006bf8: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006bfc: f04f 20ff mov.w r0, #4278255360 ; 0xff00ff00
8006c00: f7fb fb12 bl 8002228 <LCD_SetColors>
if(focused)
8006c04: 4b1c ldr r3, [pc, #112] ; (8006c78 <DrawChannel_8+0xbc8>)
8006c06: 781b ldrb r3, [r3, #0]
8006c08: b2db uxtb r3, r3
8006c0a: 2b00 cmp r3, #0
8006c0c: d036 beq.n 8006c7c <DrawChannel_8+0xbcc>
if(blk)
8006c0e: 683b ldr r3, [r7, #0]
8006c10: 2b00 cmp r3, #0
8006c12: d040 beq.n 8006c96 <DrawChannel_8+0xbe6>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006c14: 79fb ldrb r3, [r7, #7]
8006c16: 4a15 ldr r2, [pc, #84] ; (8006c6c <DrawChannel_8+0xbbc>)
8006c18: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006c1c: 79fb ldrb r3, [r7, #7]
8006c1e: 4a14 ldr r2, [pc, #80] ; (8006c70 <DrawChannel_8+0xbc0>)
8006c20: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006c24: f107 020c add.w r2, r7, #12
8006c28: 2303 movs r3, #3
8006c2a: f7fb fbc3 bl 80023b4 <BSP_LCD_DisplayStringAt>
8006c2e: e032 b.n 8006c96 <DrawChannel_8+0xbe6>
8006c30: 0800fd78 .word 0x0800fd78
8006c34: 0800fd88 .word 0x0800fd88
8006c38: 2006b3f8 .word 0x2006b3f8
8006c3c: 20020040 .word 0x20020040
8006c40: ffd8aa57 .word 0xffd8aa57
8006c44: 0800fd18 .word 0x0800fd18
8006c48: 0800fd28 .word 0x0800fd28
8006c4c: 2006b1c0 .word 0x2006b1c0
8006c50: 20020030 .word 0x20020030
8006c54: 0800fd38 .word 0x0800fd38
8006c58: 0800fd48 .word 0x0800fd48
8006c5c: 20020074 .word 0x20020074
8006c60: 0800fd58 .word 0x0800fd58
8006c64: 0800fd68 .word 0x0800fd68
8006c68: 2002009c .word 0x2002009c
8006c6c: 0800fd98 .word 0x0800fd98
8006c70: 0800fda8 .word 0x0800fda8
8006c74: 20020010 .word 0x20020010
8006c78: 20020140 .word 0x20020140
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006c7c: 79fb ldrb r3, [r7, #7]
8006c7e: 4a90 ldr r2, [pc, #576] ; (8006ec0 <DrawChannel_8+0xe10>)
8006c80: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006c84: 79fb ldrb r3, [r7, #7]
8006c86: 4a8f ldr r2, [pc, #572] ; (8006ec4 <DrawChannel_8+0xe14>)
8006c88: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006c8c: f107 020c add.w r2, r7, #12
8006c90: 2303 movs r3, #3
8006c92: f7fb fb8f bl 80023b4 <BSP_LCD_DisplayStringAt>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8006c96: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006c9a: 488b ldr r0, [pc, #556] ; (8006ec8 <DrawChannel_8+0xe18>)
8006c9c: f7fb fac4 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
8006ca0: 79fb ldrb r3, [r7, #7]
8006ca2: 4a8a ldr r2, [pc, #552] ; (8006ecc <DrawChannel_8+0xe1c>)
8006ca4: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006ca8: 79fb ldrb r3, [r7, #7]
8006caa: 4a89 ldr r2, [pc, #548] ; (8006ed0 <DrawChannel_8+0xe20>)
8006cac: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006cb0: 4b88 ldr r3, [pc, #544] ; (8006ed4 <DrawChannel_8+0xe24>)
8006cb2: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006cb6: b29b uxth r3, r3
8006cb8: 461d mov r5, r3
8006cba: 4b87 ldr r3, [pc, #540] ; (8006ed8 <DrawChannel_8+0xe28>)
8006cbc: 681b ldr r3, [r3, #0]
8006cbe: 4a85 ldr r2, [pc, #532] ; (8006ed4 <DrawChannel_8+0xe24>)
8006cc0: 015b lsls r3, r3, #5
8006cc2: 4413 add r3, r2
8006cc4: 881b ldrh r3, [r3, #0]
8006cc6: b29b uxth r3, r3
8006cc8: 461c mov r4, r3
8006cca: 4a84 ldr r2, [pc, #528] ; (8006edc <DrawChannel_8+0xe2c>)
8006ccc: 006b lsls r3, r5, #1
8006cce: 4423 add r3, r4
8006cd0: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006cd4: 2303 movs r3, #3
8006cd6: f7fb fb6d bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8006cda: 79fb ldrb r3, [r7, #7]
8006cdc: 4a80 ldr r2, [pc, #512] ; (8006ee0 <DrawChannel_8+0xe30>)
8006cde: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006ce2: 79fb ldrb r3, [r7, #7]
8006ce4: 4a7f ldr r2, [pc, #508] ; (8006ee4 <DrawChannel_8+0xe34>)
8006ce6: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8006cea: 4b7a ldr r3, [pc, #488] ; (8006ed4 <DrawChannel_8+0xe24>)
8006cec: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006cf0: b29b uxth r3, r3
8006cf2: 4619 mov r1, r3
8006cf4: 79fb ldrb r3, [r7, #7]
8006cf6: 4a77 ldr r2, [pc, #476] ; (8006ed4 <DrawChannel_8+0xe24>)
8006cf8: 015b lsls r3, r3, #5
8006cfa: 4413 add r3, r2
8006cfc: 3302 adds r3, #2
8006cfe: 881b ldrh r3, [r3, #0]
8006d00: b29b uxth r3, r3
8006d02: 461d mov r5, r3
8006d04: 4a78 ldr r2, [pc, #480] ; (8006ee8 <DrawChannel_8+0xe38>)
8006d06: 460b mov r3, r1
8006d08: 009b lsls r3, r3, #2
8006d0a: 440b add r3, r1
8006d0c: 442b add r3, r5
8006d0e: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006d12: 2303 movs r3, #3
8006d14: 4621 mov r1, r4
8006d16: f7fb fb4d bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8006d1a: 79fb ldrb r3, [r7, #7]
8006d1c: 4a73 ldr r2, [pc, #460] ; (8006eec <DrawChannel_8+0xe3c>)
8006d1e: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006d22: 79fb ldrb r3, [r7, #7]
8006d24: 4a72 ldr r2, [pc, #456] ; (8006ef0 <DrawChannel_8+0xe40>)
8006d26: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006d2a: 4b6a ldr r3, [pc, #424] ; (8006ed4 <DrawChannel_8+0xe24>)
8006d2c: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006d30: b29b uxth r3, r3
8006d32: 461d mov r5, r3
8006d34: 79fb ldrb r3, [r7, #7]
8006d36: 4a67 ldr r2, [pc, #412] ; (8006ed4 <DrawChannel_8+0xe24>)
8006d38: 015b lsls r3, r3, #5
8006d3a: 4413 add r3, r2
8006d3c: 3304 adds r3, #4
8006d3e: 881b ldrh r3, [r3, #0]
8006d40: b29b uxth r3, r3
8006d42: 461c mov r4, r3
8006d44: 4a6b ldr r2, [pc, #428] ; (8006ef4 <DrawChannel_8+0xe44>)
8006d46: 00eb lsls r3, r5, #3
8006d48: 4423 add r3, r4
8006d4a: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006d4e: 2303 movs r3, #3
8006d50: f7fb fb30 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8006d54: 79fb ldrb r3, [r7, #7]
8006d56: 4a68 ldr r2, [pc, #416] ; (8006ef8 <DrawChannel_8+0xe48>)
8006d58: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006d5c: 79fb ldrb r3, [r7, #7]
8006d5e: 4a67 ldr r2, [pc, #412] ; (8006efc <DrawChannel_8+0xe4c>)
8006d60: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006d64: 79fb ldrb r3, [r7, #7]
8006d66: 4a5b ldr r2, [pc, #364] ; (8006ed4 <DrawChannel_8+0xe24>)
8006d68: 015b lsls r3, r3, #5
8006d6a: 4413 add r3, r2
8006d6c: 3306 adds r3, #6
8006d6e: 881b ldrh r3, [r3, #0]
8006d70: b29b uxth r3, r3
8006d72: 461a mov r2, r3
8006d74: 4b62 ldr r3, [pc, #392] ; (8006f00 <DrawChannel_8+0xe50>)
8006d76: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8006d7a: 2303 movs r3, #3
8006d7c: f7fb fb1a bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8006d80: e099 b.n 8006eb6 <DrawChannel_8+0xe06>
LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK);
8006d82: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006d86: 4850 ldr r0, [pc, #320] ; (8006ec8 <DrawChannel_8+0xe18>)
8006d88: f7fb fa4e bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(XPOS_INPUT_8[ch], YPOS_INPUT_8[ch], (char *) pINPUT[pardata.LANG][pardata.amplif[ACTIVE_CHANNEL].IIN], LEFT_MODE);
8006d8c: 79fb ldrb r3, [r7, #7]
8006d8e: 4a4f ldr r2, [pc, #316] ; (8006ecc <DrawChannel_8+0xe1c>)
8006d90: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006d94: 79fb ldrb r3, [r7, #7]
8006d96: 4a4e ldr r2, [pc, #312] ; (8006ed0 <DrawChannel_8+0xe20>)
8006d98: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006d9c: 4b4d ldr r3, [pc, #308] ; (8006ed4 <DrawChannel_8+0xe24>)
8006d9e: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006da2: b29b uxth r3, r3
8006da4: 461d mov r5, r3
8006da6: 4b4c ldr r3, [pc, #304] ; (8006ed8 <DrawChannel_8+0xe28>)
8006da8: 681b ldr r3, [r3, #0]
8006daa: 4a4a ldr r2, [pc, #296] ; (8006ed4 <DrawChannel_8+0xe24>)
8006dac: 015b lsls r3, r3, #5
8006dae: 4413 add r3, r2
8006db0: 881b ldrh r3, [r3, #0]
8006db2: b29b uxth r3, r3
8006db4: 461c mov r4, r3
8006db6: 4a49 ldr r2, [pc, #292] ; (8006edc <DrawChannel_8+0xe2c>)
8006db8: 006b lsls r3, r5, #1
8006dba: 4423 add r3, r4
8006dbc: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006dc0: 2303 movs r3, #3
8006dc2: f7fb faf7 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_HP_8[ch], YPOS_HP_8[ch], (char *) pHP[pardata.LANG][pardata.amplif[ch].IFV], LEFT_MODE);
8006dc6: 79fb ldrb r3, [r7, #7]
8006dc8: 4a45 ldr r2, [pc, #276] ; (8006ee0 <DrawChannel_8+0xe30>)
8006dca: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006dce: 79fb ldrb r3, [r7, #7]
8006dd0: 4a44 ldr r2, [pc, #272] ; (8006ee4 <DrawChannel_8+0xe34>)
8006dd2: f832 4013 ldrh.w r4, [r2, r3, lsl #1]
8006dd6: 4b3f ldr r3, [pc, #252] ; (8006ed4 <DrawChannel_8+0xe24>)
8006dd8: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006ddc: b29b uxth r3, r3
8006dde: 4619 mov r1, r3
8006de0: 79fb ldrb r3, [r7, #7]
8006de2: 4a3c ldr r2, [pc, #240] ; (8006ed4 <DrawChannel_8+0xe24>)
8006de4: 015b lsls r3, r3, #5
8006de6: 4413 add r3, r2
8006de8: 3302 adds r3, #2
8006dea: 881b ldrh r3, [r3, #0]
8006dec: b29b uxth r3, r3
8006dee: 461d mov r5, r3
8006df0: 4a3d ldr r2, [pc, #244] ; (8006ee8 <DrawChannel_8+0xe38>)
8006df2: 460b mov r3, r1
8006df4: 009b lsls r3, r3, #2
8006df6: 440b add r3, r1
8006df8: 442b add r3, r5
8006dfa: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006dfe: 2303 movs r3, #3
8006e00: 4621 mov r1, r4
8006e02: f7fb fad7 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_LP_8[ch], YPOS_LP_8[ch], (char *) pLP[pardata.LANG][pardata.amplif[ch].IFN], LEFT_MODE);
8006e06: 79fb ldrb r3, [r7, #7]
8006e08: 4a38 ldr r2, [pc, #224] ; (8006eec <DrawChannel_8+0xe3c>)
8006e0a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006e0e: 79fb ldrb r3, [r7, #7]
8006e10: 4a37 ldr r2, [pc, #220] ; (8006ef0 <DrawChannel_8+0xe40>)
8006e12: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006e16: 4b2f ldr r3, [pc, #188] ; (8006ed4 <DrawChannel_8+0xe24>)
8006e18: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206
8006e1c: b29b uxth r3, r3
8006e1e: 461d mov r5, r3
8006e20: 79fb ldrb r3, [r7, #7]
8006e22: 4a2c ldr r2, [pc, #176] ; (8006ed4 <DrawChannel_8+0xe24>)
8006e24: 015b lsls r3, r3, #5
8006e26: 4413 add r3, r2
8006e28: 3304 adds r3, #4
8006e2a: 881b ldrh r3, [r3, #0]
8006e2c: b29b uxth r3, r3
8006e2e: 461c mov r4, r3
8006e30: 4a30 ldr r2, [pc, #192] ; (8006ef4 <DrawChannel_8+0xe44>)
8006e32: 00eb lsls r3, r5, #3
8006e34: 4423 add r3, r4
8006e36: f852 2023 ldr.w r2, [r2, r3, lsl #2]
8006e3a: 2303 movs r3, #3
8006e3c: f7fb faba bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KM_8[ch], YPOS_KM_8[ch], (char *) pKU[pardata.amplif[ch].IKU], LEFT_MODE);
8006e40: 79fb ldrb r3, [r7, #7]
8006e42: 4a2d ldr r2, [pc, #180] ; (8006ef8 <DrawChannel_8+0xe48>)
8006e44: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006e48: 79fb ldrb r3, [r7, #7]
8006e4a: 4a2c ldr r2, [pc, #176] ; (8006efc <DrawChannel_8+0xe4c>)
8006e4c: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006e50: 79fb ldrb r3, [r7, #7]
8006e52: 4a20 ldr r2, [pc, #128] ; (8006ed4 <DrawChannel_8+0xe24>)
8006e54: 015b lsls r3, r3, #5
8006e56: 4413 add r3, r2
8006e58: 3306 adds r3, #6
8006e5a: 881b ldrh r3, [r3, #0]
8006e5c: b29b uxth r3, r3
8006e5e: 461a mov r2, r3
8006e60: 4b27 ldr r3, [pc, #156] ; (8006f00 <DrawChannel_8+0xe50>)
8006e62: f853 2022 ldr.w r2, [r3, r2, lsl #2]
8006e66: 2303 movs r3, #3
8006e68: f7fb faa4 bl 80023b4 <BSP_LCD_DisplayStringAt>
BSP_LCD_DisplayStringAt(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE);
8006e6c: 79fb ldrb r3, [r7, #7]
8006e6e: 4a14 ldr r2, [pc, #80] ; (8006ec0 <DrawChannel_8+0xe10>)
8006e70: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
8006e74: 79fb ldrb r3, [r7, #7]
8006e76: 4a13 ldr r2, [pc, #76] ; (8006ec4 <DrawChannel_8+0xe14>)
8006e78: f832 1013 ldrh.w r1, [r2, r3, lsl #1]
8006e7c: f107 020c add.w r2, r7, #12
8006e80: 2303 movs r3, #3
8006e82: f7fb fa97 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8006e86: e016 b.n 8006eb6 <DrawChannel_8+0xe06>
if(menupos == Kiks)
8006e88: 4b1e ldr r3, [pc, #120] ; (8006f04 <DrawChannel_8+0xe54>)
8006e8a: 781b ldrb r3, [r3, #0]
8006e8c: b2db uxtb r3, r3
8006e8e: 2b05 cmp r3, #5
8006e90: d102 bne.n 8006e98 <DrawChannel_8+0xde8>
if(ACTIVE_CHANNEL == ch)
8006e92: 4b11 ldr r3, [pc, #68] ; (8006ed8 <DrawChannel_8+0xe28>)
8006e94: 681b ldr r3, [r3, #0]
}
8006e96: e00e b.n 8006eb6 <DrawChannel_8+0xe06>
if(menupos == Kikd)
8006e98: 4b1a ldr r3, [pc, #104] ; (8006f04 <DrawChannel_8+0xe54>)
8006e9a: 781b ldrb r3, [r3, #0]
8006e9c: b2db uxtb r3, r3
8006e9e: 2b06 cmp r3, #6
8006ea0: d102 bne.n 8006ea8 <DrawChannel_8+0xdf8>
if(ACTIVE_CHANNEL == ch)
8006ea2: 4b0d ldr r3, [pc, #52] ; (8006ed8 <DrawChannel_8+0xe28>)
8006ea4: 681b ldr r3, [r3, #0]
}
8006ea6: e006 b.n 8006eb6 <DrawChannel_8+0xe06>
if(menupos == Kike)
8006ea8: 4b16 ldr r3, [pc, #88] ; (8006f04 <DrawChannel_8+0xe54>)
8006eaa: 781b ldrb r3, [r3, #0]
8006eac: b2db uxtb r3, r3
8006eae: 2b07 cmp r3, #7
8006eb0: d101 bne.n 8006eb6 <DrawChannel_8+0xe06>
if(ACTIVE_CHANNEL == ch)
8006eb2: 4b09 ldr r3, [pc, #36] ; (8006ed8 <DrawChannel_8+0xe28>)
8006eb4: 681b ldr r3, [r3, #0]
}
8006eb6: bf00 nop
8006eb8: 3718 adds r7, #24
8006eba: 46bd mov sp, r7
8006ebc: bdb0 pop {r4, r5, r7, pc}
8006ebe: bf00 nop
8006ec0: 0800fd98 .word 0x0800fd98
8006ec4: 0800fda8 .word 0x0800fda8
8006ec8: ffd8aa57 .word 0xffd8aa57
8006ecc: 0800fd18 .word 0x0800fd18
8006ed0: 0800fd28 .word 0x0800fd28
8006ed4: 2006b3f8 .word 0x2006b3f8
8006ed8: 2006b1c0 .word 0x2006b1c0
8006edc: 20020030 .word 0x20020030
8006ee0: 0800fd38 .word 0x0800fd38
8006ee4: 0800fd48 .word 0x0800fd48
8006ee8: 20020074 .word 0x20020074
8006eec: 0800fd58 .word 0x0800fd58
8006ef0: 0800fd68 .word 0x0800fd68
8006ef4: 2002009c .word 0x2002009c
8006ef8: 0800fd78 .word 0x0800fd78
8006efc: 0800fd88 .word 0x0800fd88
8006f00: 20020040 .word 0x20020040
8006f04: 20020010 .word 0x20020010
08006f08 <DrawButtons>:
void DrawButtons(void)
{
8006f08: b580 push {r7, lr}
8006f0a: af00 add r7, sp, #0
if(menupos == Set100)
8006f0c: 4ba1 ldr r3, [pc, #644] ; (8007194 <DrawButtons+0x28c>)
8006f0e: 781b ldrb r3, [r3, #0]
8006f10: b2db uxtb r3, r3
8006f12: 2b00 cmp r3, #0
8006f14: d106 bne.n 8006f24 <DrawButtons+0x1c>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8006f16: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006f1a: f04f 30ff mov.w r0, #4294967295
8006f1e: f7fb f983 bl 8002228 <LCD_SetColors>
8006f22: e004 b.n 8006f2e <DrawButtons+0x26>
else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
8006f24: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006f28: 489b ldr r0, [pc, #620] ; (8007198 <DrawButtons+0x290>)
8006f2a: f7fb f97d bl 8002228 <LCD_SetColors>
BSP_LCD_FillRect(120, 40, 80, 20); //+100
8006f2e: 2314 movs r3, #20
8006f30: 2250 movs r2, #80 ; 0x50
8006f32: 2128 movs r1, #40 ; 0x28
8006f34: 2078 movs r0, #120 ; 0x78
8006f36: f7fb fd39 bl 80029ac <BSP_LCD_FillRect>
if(menupos == Set_100)
8006f3a: 4b96 ldr r3, [pc, #600] ; (8007194 <DrawButtons+0x28c>)
8006f3c: 781b ldrb r3, [r3, #0]
8006f3e: b2db uxtb r3, r3
8006f40: 2b01 cmp r3, #1
8006f42: d106 bne.n 8006f52 <DrawButtons+0x4a>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8006f44: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006f48: f04f 30ff mov.w r0, #4294967295
8006f4c: f7fb f96c bl 8002228 <LCD_SetColors>
8006f50: e004 b.n 8006f5c <DrawButtons+0x54>
else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
8006f52: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006f56: 4890 ldr r0, [pc, #576] ; (8007198 <DrawButtons+0x290>)
8006f58: f7fb f966 bl 8002228 <LCD_SetColors>
BSP_LCD_FillRect(120, 65, 80, 20); //-100
8006f5c: 2314 movs r3, #20
8006f5e: 2250 movs r2, #80 ; 0x50
8006f60: 2141 movs r1, #65 ; 0x41
8006f62: 2078 movs r0, #120 ; 0x78
8006f64: f7fb fd22 bl 80029ac <BSP_LCD_FillRect>
if(menupos == Set10)
8006f68: 4b8a ldr r3, [pc, #552] ; (8007194 <DrawButtons+0x28c>)
8006f6a: 781b ldrb r3, [r3, #0]
8006f6c: b2db uxtb r3, r3
8006f6e: 2b02 cmp r3, #2
8006f70: d106 bne.n 8006f80 <DrawButtons+0x78>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8006f72: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006f76: f04f 30ff mov.w r0, #4294967295
8006f7a: f7fb f955 bl 8002228 <LCD_SetColors>
8006f7e: e004 b.n 8006f8a <DrawButtons+0x82>
else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
8006f80: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006f84: 4884 ldr r0, [pc, #528] ; (8007198 <DrawButtons+0x290>)
8006f86: f7fb f94f bl 8002228 <LCD_SetColors>
BSP_LCD_FillRect(120, 90, 80, 20); //+10
8006f8a: 2314 movs r3, #20
8006f8c: 2250 movs r2, #80 ; 0x50
8006f8e: 215a movs r1, #90 ; 0x5a
8006f90: 2078 movs r0, #120 ; 0x78
8006f92: f7fb fd0b bl 80029ac <BSP_LCD_FillRect>
if(menupos == Set_10)
8006f96: 4b7f ldr r3, [pc, #508] ; (8007194 <DrawButtons+0x28c>)
8006f98: 781b ldrb r3, [r3, #0]
8006f9a: b2db uxtb r3, r3
8006f9c: 2b03 cmp r3, #3
8006f9e: d106 bne.n 8006fae <DrawButtons+0xa6>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8006fa0: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006fa4: f04f 30ff mov.w r0, #4294967295
8006fa8: f7fb f93e bl 8002228 <LCD_SetColors>
8006fac: e004 b.n 8006fb8 <DrawButtons+0xb0>
else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
8006fae: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006fb2: 4879 ldr r0, [pc, #484] ; (8007198 <DrawButtons+0x290>)
8006fb4: f7fb f938 bl 8002228 <LCD_SetColors>
BSP_LCD_FillRect(120, 115, 80, 20); //-10
8006fb8: 2314 movs r3, #20
8006fba: 2250 movs r2, #80 ; 0x50
8006fbc: 2173 movs r1, #115 ; 0x73
8006fbe: 2078 movs r0, #120 ; 0x78
8006fc0: f7fb fcf4 bl 80029ac <BSP_LCD_FillRect>
if(menupos == Set1)
8006fc4: 4b73 ldr r3, [pc, #460] ; (8007194 <DrawButtons+0x28c>)
8006fc6: 781b ldrb r3, [r3, #0]
8006fc8: b2db uxtb r3, r3
8006fca: 2b04 cmp r3, #4
8006fcc: d106 bne.n 8006fdc <DrawButtons+0xd4>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8006fce: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006fd2: f04f 30ff mov.w r0, #4294967295
8006fd6: f7fb f927 bl 8002228 <LCD_SetColors>
8006fda: e004 b.n 8006fe6 <DrawButtons+0xde>
else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
8006fdc: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8006fe0: 486d ldr r0, [pc, #436] ; (8007198 <DrawButtons+0x290>)
8006fe2: f7fb f921 bl 8002228 <LCD_SetColors>
BSP_LCD_FillRect(120, 140, 80, 20); //+1
8006fe6: 2314 movs r3, #20
8006fe8: 2250 movs r2, #80 ; 0x50
8006fea: 218c movs r1, #140 ; 0x8c
8006fec: 2078 movs r0, #120 ; 0x78
8006fee: f7fb fcdd bl 80029ac <BSP_LCD_FillRect>
if(menupos == Set_1)
8006ff2: 4b68 ldr r3, [pc, #416] ; (8007194 <DrawButtons+0x28c>)
8006ff4: 781b ldrb r3, [r3, #0]
8006ff6: b2db uxtb r3, r3
8006ff8: 2b05 cmp r3, #5
8006ffa: d106 bne.n 800700a <DrawButtons+0x102>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
8006ffc: f04f 417f mov.w r1, #4278190080 ; 0xff000000
8007000: f04f 30ff mov.w r0, #4294967295
8007004: f7fb f910 bl 8002228 <LCD_SetColors>
8007008: e004 b.n 8007014 <DrawButtons+0x10c>
else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
800700a: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800700e: 4862 ldr r0, [pc, #392] ; (8007198 <DrawButtons+0x290>)
8007010: f7fb f90a bl 8002228 <LCD_SetColors>
BSP_LCD_FillRect(120, 165, 80, 20); //-1
8007014: 2314 movs r3, #20
8007016: 2250 movs r2, #80 ; 0x50
8007018: 21a5 movs r1, #165 ; 0xa5
800701a: 2078 movs r0, #120 ; 0x78
800701c: f7fb fcc6 bl 80029ac <BSP_LCD_FillRect>
if(menupos == Next)
8007020: 4b5c ldr r3, [pc, #368] ; (8007194 <DrawButtons+0x28c>)
8007022: 781b ldrb r3, [r3, #0]
8007024: b2db uxtb r3, r3
8007026: 2b06 cmp r3, #6
8007028: d106 bne.n 8007038 <DrawButtons+0x130>
LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);
800702a: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800702e: f04f 30ff mov.w r0, #4294967295
8007032: f7fb f8f9 bl 8002228 <LCD_SetColors>
8007036: e004 b.n 8007042 <DrawButtons+0x13a>
else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK);
8007038: f04f 417f mov.w r1, #4278190080 ; 0xff000000
800703c: 4856 ldr r0, [pc, #344] ; (8007198 <DrawButtons+0x290>)
800703e: f7fb f8f3 bl 8002228 <LCD_SetColors>
BSP_LCD_FillRect(120, 190, 80, 20); //Next
8007042: 2314 movs r3, #20
8007044: 2250 movs r2, #80 ; 0x50
8007046: 21be movs r1, #190 ; 0xbe
8007048: 2078 movs r0, #120 ; 0x78
800704a: f7fb fcaf bl 80029ac <BSP_LCD_FillRect>
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
if(menupos == Set100)
800704e: 4b51 ldr r3, [pc, #324] ; (8007194 <DrawButtons+0x28c>)
8007050: 781b ldrb r3, [r3, #0]
8007052: b2db uxtb r3, r3
8007054: 2b00 cmp r3, #0
8007056: d106 bne.n 8007066 <DrawButtons+0x15e>
LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_WHITE);
8007058: f04f 31ff mov.w r1, #4294967295
800705c: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8007060: f7fb f8e2 bl 8002228 <LCD_SetColors>
8007064: e004 b.n 8007070 <DrawButtons+0x168>
else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY);
8007066: 494c ldr r1, [pc, #304] ; (8007198 <DrawButtons+0x290>)
8007068: f04f 407f mov.w r0, #4278190080 ; 0xff000000
800706c: f7fb f8dc bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 40+5, "+100", CENTER_MODE);
8007070: 2301 movs r3, #1
8007072: 4a4a ldr r2, [pc, #296] ; (800719c <DrawButtons+0x294>)
8007074: 212d movs r1, #45 ; 0x2d
8007076: 20a0 movs r0, #160 ; 0xa0
8007078: f7fb f99c bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos == Set_100)
800707c: 4b45 ldr r3, [pc, #276] ; (8007194 <DrawButtons+0x28c>)
800707e: 781b ldrb r3, [r3, #0]
8007080: b2db uxtb r3, r3
8007082: 2b01 cmp r3, #1
8007084: d106 bne.n 8007094 <DrawButtons+0x18c>
LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_WHITE);
8007086: f04f 31ff mov.w r1, #4294967295
800708a: f04f 407f mov.w r0, #4278190080 ; 0xff000000
800708e: f7fb f8cb bl 8002228 <LCD_SetColors>
8007092: e004 b.n 800709e <DrawButtons+0x196>
else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY);
8007094: 4940 ldr r1, [pc, #256] ; (8007198 <DrawButtons+0x290>)
8007096: f04f 407f mov.w r0, #4278190080 ; 0xff000000
800709a: f7fb f8c5 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 65+5, "-100", CENTER_MODE);
800709e: 2301 movs r3, #1
80070a0: 4a3f ldr r2, [pc, #252] ; (80071a0 <DrawButtons+0x298>)
80070a2: 2146 movs r1, #70 ; 0x46
80070a4: 20a0 movs r0, #160 ; 0xa0
80070a6: f7fb f985 bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos == Set10)
80070aa: 4b3a ldr r3, [pc, #232] ; (8007194 <DrawButtons+0x28c>)
80070ac: 781b ldrb r3, [r3, #0]
80070ae: b2db uxtb r3, r3
80070b0: 2b02 cmp r3, #2
80070b2: d106 bne.n 80070c2 <DrawButtons+0x1ba>
LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_WHITE);
80070b4: f04f 31ff mov.w r1, #4294967295
80070b8: f04f 407f mov.w r0, #4278190080 ; 0xff000000
80070bc: f7fb f8b4 bl 8002228 <LCD_SetColors>
80070c0: e004 b.n 80070cc <DrawButtons+0x1c4>
else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY);
80070c2: 4935 ldr r1, [pc, #212] ; (8007198 <DrawButtons+0x290>)
80070c4: f04f 407f mov.w r0, #4278190080 ; 0xff000000
80070c8: f7fb f8ae bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 90+5, "+10", CENTER_MODE);
80070cc: 2301 movs r3, #1
80070ce: 4a35 ldr r2, [pc, #212] ; (80071a4 <DrawButtons+0x29c>)
80070d0: 215f movs r1, #95 ; 0x5f
80070d2: 20a0 movs r0, #160 ; 0xa0
80070d4: f7fb f96e bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos == Set_10)
80070d8: 4b2e ldr r3, [pc, #184] ; (8007194 <DrawButtons+0x28c>)
80070da: 781b ldrb r3, [r3, #0]
80070dc: b2db uxtb r3, r3
80070de: 2b03 cmp r3, #3
80070e0: d106 bne.n 80070f0 <DrawButtons+0x1e8>
LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_WHITE);
80070e2: f04f 31ff mov.w r1, #4294967295
80070e6: f04f 407f mov.w r0, #4278190080 ; 0xff000000
80070ea: f7fb f89d bl 8002228 <LCD_SetColors>
80070ee: e004 b.n 80070fa <DrawButtons+0x1f2>
else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY);
80070f0: 4929 ldr r1, [pc, #164] ; (8007198 <DrawButtons+0x290>)
80070f2: f04f 407f mov.w r0, #4278190080 ; 0xff000000
80070f6: f7fb f897 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 115+5, "-10", CENTER_MODE);
80070fa: 2301 movs r3, #1
80070fc: 4a2a ldr r2, [pc, #168] ; (80071a8 <DrawButtons+0x2a0>)
80070fe: 2178 movs r1, #120 ; 0x78
8007100: 20a0 movs r0, #160 ; 0xa0
8007102: f7fb f957 bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos == Set1)
8007106: 4b23 ldr r3, [pc, #140] ; (8007194 <DrawButtons+0x28c>)
8007108: 781b ldrb r3, [r3, #0]
800710a: b2db uxtb r3, r3
800710c: 2b04 cmp r3, #4
800710e: d106 bne.n 800711e <DrawButtons+0x216>
LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_WHITE);
8007110: f04f 31ff mov.w r1, #4294967295
8007114: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8007118: f7fb f886 bl 8002228 <LCD_SetColors>
800711c: e004 b.n 8007128 <DrawButtons+0x220>
else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY);
800711e: 491e ldr r1, [pc, #120] ; (8007198 <DrawButtons+0x290>)
8007120: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8007124: f7fb f880 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 140+5, "+1", CENTER_MODE);
8007128: 2301 movs r3, #1
800712a: 4a20 ldr r2, [pc, #128] ; (80071ac <DrawButtons+0x2a4>)
800712c: 2191 movs r1, #145 ; 0x91
800712e: 20a0 movs r0, #160 ; 0xa0
8007130: f7fb f940 bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos == Set_1)
8007134: 4b17 ldr r3, [pc, #92] ; (8007194 <DrawButtons+0x28c>)
8007136: 781b ldrb r3, [r3, #0]
8007138: b2db uxtb r3, r3
800713a: 2b05 cmp r3, #5
800713c: d106 bne.n 800714c <DrawButtons+0x244>
LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_WHITE);
800713e: f04f 31ff mov.w r1, #4294967295
8007142: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8007146: f7fb f86f bl 8002228 <LCD_SetColors>
800714a: e004 b.n 8007156 <DrawButtons+0x24e>
else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY);
800714c: 4912 ldr r1, [pc, #72] ; (8007198 <DrawButtons+0x290>)
800714e: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8007152: f7fb f869 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 165+5, "-1", CENTER_MODE);
8007156: 2301 movs r3, #1
8007158: 4a15 ldr r2, [pc, #84] ; (80071b0 <DrawButtons+0x2a8>)
800715a: 21aa movs r1, #170 ; 0xaa
800715c: 20a0 movs r0, #160 ; 0xa0
800715e: f7fb f929 bl 80023b4 <BSP_LCD_DisplayStringAt>
if(menupos == Next)
8007162: 4b0c ldr r3, [pc, #48] ; (8007194 <DrawButtons+0x28c>)
8007164: 781b ldrb r3, [r3, #0]
8007166: b2db uxtb r3, r3
8007168: 2b06 cmp r3, #6
800716a: d106 bne.n 800717a <DrawButtons+0x272>
LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_WHITE);
800716c: f04f 31ff mov.w r1, #4294967295
8007170: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8007174: f7fb f858 bl 8002228 <LCD_SetColors>
8007178: e004 b.n 8007184 <DrawButtons+0x27c>
else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY);
800717a: 4907 ldr r1, [pc, #28] ; (8007198 <DrawButtons+0x290>)
800717c: f04f 407f mov.w r0, #4278190080 ; 0xff000000
8007180: f7fb f852 bl 8002228 <LCD_SetColors>
BSP_LCD_DisplayStringAt(160, 190+5, "<22><><C4><E0><EB>", CENTER_MODE);
8007184: 2301 movs r3, #1
8007186: 4a0b ldr r2, [pc, #44] ; (80071b4 <DrawButtons+0x2ac>)
8007188: 21c3 movs r1, #195 ; 0xc3
800718a: 20a0 movs r0, #160 ; 0xa0
800718c: f7fb f912 bl 80023b4 <BSP_LCD_DisplayStringAt>
}
8007190: bf00 nop
8007192: bd80 pop {r7, pc}
8007194: 20020010 .word 0x20020010
8007198: ff808080 .word 0xff808080
800719c: 0800d450 .word 0x0800d450
80071a0: 0800d458 .word 0x0800d458
80071a4: 0800d460 .word 0x0800d460
80071a8: 0800d464 .word 0x0800d464
80071ac: 0800d468 .word 0x0800d468
80071b0: 0800d46c .word 0x0800d46c
80071b4: 0800d470 .word 0x0800d470
080071b8 <HAL_MspInit>:
/* USER CODE END 0 */
/**
* Initializes the Global MSP.
*/
void HAL_MspInit(void)
{
80071b8: b480 push {r7}
80071ba: b083 sub sp, #12
80071bc: af00 add r7, sp, #0
/* USER CODE BEGIN MspInit 0 */
/* USER CODE END MspInit 0 */
__HAL_RCC_PWR_CLK_ENABLE();
80071be: 4a0f ldr r2, [pc, #60] ; (80071fc <HAL_MspInit+0x44>)
80071c0: 4b0e ldr r3, [pc, #56] ; (80071fc <HAL_MspInit+0x44>)
80071c2: 6c1b ldr r3, [r3, #64] ; 0x40
80071c4: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
80071c8: 6413 str r3, [r2, #64] ; 0x40
80071ca: 4b0c ldr r3, [pc, #48] ; (80071fc <HAL_MspInit+0x44>)
80071cc: 6c1b ldr r3, [r3, #64] ; 0x40
80071ce: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
80071d2: 607b str r3, [r7, #4]
80071d4: 687b ldr r3, [r7, #4]
__HAL_RCC_SYSCFG_CLK_ENABLE();
80071d6: 4a09 ldr r2, [pc, #36] ; (80071fc <HAL_MspInit+0x44>)
80071d8: 4b08 ldr r3, [pc, #32] ; (80071fc <HAL_MspInit+0x44>)
80071da: 6c5b ldr r3, [r3, #68] ; 0x44
80071dc: f443 4380 orr.w r3, r3, #16384 ; 0x4000
80071e0: 6453 str r3, [r2, #68] ; 0x44
80071e2: 4b06 ldr r3, [pc, #24] ; (80071fc <HAL_MspInit+0x44>)
80071e4: 6c5b ldr r3, [r3, #68] ; 0x44
80071e6: f403 4380 and.w r3, r3, #16384 ; 0x4000
80071ea: 603b str r3, [r7, #0]
80071ec: 683b ldr r3, [r7, #0]
/* System interrupt init*/
/* USER CODE BEGIN MspInit 1 */
/* USER CODE END MspInit 1 */
}
80071ee: bf00 nop
80071f0: 370c adds r7, #12
80071f2: 46bd mov sp, r7
80071f4: f85d 7b04 ldr.w r7, [sp], #4
80071f8: 4770 bx lr
80071fa: bf00 nop
80071fc: 40023800 .word 0x40023800
08007200 <NMI_Handler>:
/******************************************************************************/
/**
* @brief This function handles Non maskable interrupt.
*/
void NMI_Handler(void)
{
8007200: b480 push {r7}
8007202: af00 add r7, sp, #0
/* USER CODE BEGIN NonMaskableInt_IRQn 0 */
/* USER CODE END NonMaskableInt_IRQn 0 */
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
while (1)
8007204: e7fe b.n 8007204 <NMI_Handler+0x4>
08007206 <HardFault_Handler>:
/**
* @brief This function handles Hard fault interrupt.
*/
void HardFault_Handler(void)
{
8007206: b480 push {r7}
8007208: af00 add r7, sp, #0
/* USER CODE BEGIN HardFault_IRQn 0 */
/* USER CODE END HardFault_IRQn 0 */
while (1)
800720a: e7fe b.n 800720a <HardFault_Handler+0x4>
0800720c <MemManage_Handler>:
/**
* @brief This function handles Memory management fault.
*/
void MemManage_Handler(void)
{
800720c: b480 push {r7}
800720e: af00 add r7, sp, #0
/* USER CODE BEGIN MemoryManagement_IRQn 0 */
/* USER CODE END MemoryManagement_IRQn 0 */
while (1)
8007210: e7fe b.n 8007210 <MemManage_Handler+0x4>
08007212 <BusFault_Handler>:
/**
* @brief This function handles Pre-fetch fault, memory access fault.
*/
void BusFault_Handler(void)
{
8007212: b480 push {r7}
8007214: af00 add r7, sp, #0
/* USER CODE BEGIN BusFault_IRQn 0 */
/* USER CODE END BusFault_IRQn 0 */
while (1)
8007216: e7fe b.n 8007216 <BusFault_Handler+0x4>
08007218 <UsageFault_Handler>:
/**
* @brief This function handles Undefined instruction or illegal state.
*/
void UsageFault_Handler(void)
{
8007218: b480 push {r7}
800721a: af00 add r7, sp, #0
/* USER CODE BEGIN UsageFault_IRQn 0 */
/* USER CODE END UsageFault_IRQn 0 */
while (1)
800721c: e7fe b.n 800721c <UsageFault_Handler+0x4>
0800721e <SVC_Handler>:
/**
* @brief This function handles System service call via SWI instruction.
*/
void SVC_Handler(void)
{
800721e: b480 push {r7}
8007220: af00 add r7, sp, #0
/* USER CODE END SVCall_IRQn 0 */
/* USER CODE BEGIN SVCall_IRQn 1 */
/* USER CODE END SVCall_IRQn 1 */
}
8007222: bf00 nop
8007224: 46bd mov sp, r7
8007226: f85d 7b04 ldr.w r7, [sp], #4
800722a: 4770 bx lr
0800722c <DebugMon_Handler>:
/**
* @brief This function handles Debug monitor.
*/
void DebugMon_Handler(void)
{
800722c: b480 push {r7}
800722e: af00 add r7, sp, #0
/* USER CODE END DebugMonitor_IRQn 0 */
/* USER CODE BEGIN DebugMonitor_IRQn 1 */
/* USER CODE END DebugMonitor_IRQn 1 */
}
8007230: bf00 nop
8007232: 46bd mov sp, r7
8007234: f85d 7b04 ldr.w r7, [sp], #4
8007238: 4770 bx lr
0800723a <PendSV_Handler>:
/**
* @brief This function handles Pendable request for system service.
*/
void PendSV_Handler(void)
{
800723a: b480 push {r7}
800723c: af00 add r7, sp, #0
/* USER CODE END PendSV_IRQn 0 */
/* USER CODE BEGIN PendSV_IRQn 1 */
/* USER CODE END PendSV_IRQn 1 */
}
800723e: bf00 nop
8007240: 46bd mov sp, r7
8007242: f85d 7b04 ldr.w r7, [sp], #4
8007246: 4770 bx lr
08007248 <SysTick_Handler>:
/**
* @brief This function handles System tick timer.
*/
void SysTick_Handler(void)
{
8007248: b580 push {r7, lr}
800724a: af00 add r7, sp, #0
/* USER CODE BEGIN SysTick_IRQn 0 */
/* USER CODE END SysTick_IRQn 0 */
HAL_IncTick();
800724c: f001 fa1c bl 8008688 <HAL_IncTick>
/* USER CODE BEGIN SysTick_IRQn 1 */
/* USER CODE END SysTick_IRQn 1 */
}
8007250: bf00 nop
8007252: bd80 pop {r7, pc}
08007254 <EXTI2_IRQHandler>:
/**
* @brief This function handles EXTI line2 interrupt.
*/
void EXTI2_IRQHandler(void)
{
8007254: b580 push {r7, lr}
8007256: af00 add r7, sp, #0
/* USER CODE BEGIN EXTI2_IRQn 0 */
/* USER CODE END EXTI2_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
8007258: 2004 movs r0, #4
800725a: f002 fa35 bl 80096c8 <HAL_GPIO_EXTI_IRQHandler>
/* USER CODE BEGIN EXTI2_IRQn 1 */
/* USER CODE END EXTI2_IRQn 1 */
}
800725e: bf00 nop
8007260: bd80 pop {r7, pc}
08007262 <EXTI3_IRQHandler>:
/**
* @brief This function handles EXTI line3 interrupt.
*/
void EXTI3_IRQHandler(void)
{
8007262: b580 push {r7, lr}
8007264: af00 add r7, sp, #0
/* USER CODE BEGIN EXTI3_IRQn 0 */
/* USER CODE END EXTI3_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
8007266: 2008 movs r0, #8
8007268: f002 fa2e bl 80096c8 <HAL_GPIO_EXTI_IRQHandler>
/* USER CODE BEGIN EXTI3_IRQn 1 */
/* USER CODE END EXTI3_IRQn 1 */
}
800726c: bf00 nop
800726e: bd80 pop {r7, pc}
08007270 <TIM7_IRQHandler>:
/**
* @brief This function handles TIM7 global interrupt.
*/
void TIM7_IRQHandler(void)
{
8007270: b580 push {r7, lr}
8007272: af00 add r7, sp, #0
/* USER CODE BEGIN TIM7_IRQn 0 */
/* USER CODE END TIM7_IRQn 0 */
HAL_TIM_IRQHandler(&htim7);
8007274: 4802 ldr r0, [pc, #8] ; (8007280 <TIM7_IRQHandler+0x10>)
8007276: f003 ff89 bl 800b18c <HAL_TIM_IRQHandler>
/* USER CODE BEGIN TIM7_IRQn 1 */
/* USER CODE END TIM7_IRQn 1 */
}
800727a: bf00 nop
800727c: bd80 pop {r7, pc}
800727e: bf00 nop
8007280: 2006baf0 .word 0x2006baf0
08007284 <DMA2_Stream1_IRQHandler>:
* @brief This function handles DMA2 stream3 global interrupt.
*/
void DMA2_Stream1_IRQHandler(void)
{
8007284: b580 push {r7, lr}
8007286: af00 add r7, sp, #0
/* USER CODE BEGIN DMA2_Stream3_IRQn 0 */
/* USER CODE END DMA2_Stream3_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_adc3);
8007288: 4802 ldr r0, [pc, #8] ; (8007294 <DMA2_Stream1_IRQHandler+0x10>)
800728a: f001 fc11 bl 8008ab0 <HAL_DMA_IRQHandler>
/* USER CODE BEGIN DMA2_Stream3_IRQn 1 */
/* USER CODE END DMA2_Stream3_IRQn 1 */
}
800728e: bf00 nop
8007290: bd80 pop {r7, pc}
8007292: bf00 nop
8007294: 2006b230 .word 0x2006b230
08007298 <DMA2_Stream4_IRQHandler>:
/**
* @brief This function handles DMA2 stream4 global interrupt.
*/
void DMA2_Stream4_IRQHandler(void)
{
8007298: b580 push {r7, lr}
800729a: af00 add r7, sp, #0
/* USER CODE BEGIN DMA2_Stream4_IRQn 0 */
/* USER CODE END DMA2_Stream4_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_adc1);
800729c: 4802 ldr r0, [pc, #8] ; (80072a8 <DMA2_Stream4_IRQHandler+0x10>)
800729e: f001 fc07 bl 8008ab0 <HAL_DMA_IRQHandler>
/* USER CODE BEGIN DMA2_Stream4_IRQn 1 */
/* USER CODE END DMA2_Stream4_IRQn 1 */
}
80072a2: bf00 nop
80072a4: bd80 pop {r7, pc}
80072a6: bf00 nop
80072a8: 2006b320 .word 0x2006b320
080072ac <LTDC_IRQHandler>:
/**
* @brief This function handles LTDC global interrupt.
*/
void LTDC_IRQHandler(void)
{
80072ac: b580 push {r7, lr}
80072ae: af00 add r7, sp, #0
/* USER CODE BEGIN LTDC_IRQn 0 */
/* USER CODE END LTDC_IRQn 0 */
HAL_LTDC_IRQHandler(&hLtdcHandler);
80072b0: 4802 ldr r0, [pc, #8] ; (80072bc <LTDC_IRQHandler+0x10>)
80072b2: f002 faf1 bl 8009898 <HAL_LTDC_IRQHandler>
/* USER CODE BEGIN LTDC_IRQn 1 */
/* USER CODE END LTDC_IRQn 1 */
}
80072b6: bf00 nop
80072b8: bd80 pop {r7, pc}
80072ba: bf00 nop
80072bc: 2006b8c4 .word 0x2006b8c4
080072c0 <LTDC_ER_IRQHandler>:
/**
* @brief This function handles LTDC global error interrupt.
*/
void LTDC_ER_IRQHandler(void)
{
80072c0: b580 push {r7, lr}
80072c2: af00 add r7, sp, #0
/* USER CODE BEGIN LTDC_ER_IRQn 0 */
/* USER CODE END LTDC_ER_IRQn 0 */
HAL_LTDC_IRQHandler(&hLtdcHandler);
80072c4: 4802 ldr r0, [pc, #8] ; (80072d0 <LTDC_ER_IRQHandler+0x10>)
80072c6: f002 fae7 bl 8009898 <HAL_LTDC_IRQHandler>
/* USER CODE BEGIN LTDC_ER_IRQn 1 */
/* USER CODE END LTDC_ER_IRQn 1 */
}
80072ca: bf00 nop
80072cc: bd80 pop {r7, pc}
80072ce: bf00 nop
80072d0: 2006b8c4 .word 0x2006b8c4
080072d4 <SystemInit>:
* SystemFrequency variable.
* @param None
* @retval None
*/
void SystemInit(void)
{
80072d4: b480 push {r7}
80072d6: af00 add r7, sp, #0
/* FPU settings ------------------------------------------------------------*/
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
80072d8: 4a06 ldr r2, [pc, #24] ; (80072f4 <SystemInit+0x20>)
80072da: 4b06 ldr r3, [pc, #24] ; (80072f4 <SystemInit+0x20>)
80072dc: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
80072e0: f443 0370 orr.w r3, r3, #15728640 ; 0xf00000
80072e4: f8c2 3088 str.w r3, [r2, #136] ; 0x88
/* Configure the Vector Table location -------------------------------------*/
#if defined(USER_VECT_TAB_ADDRESS)
SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#endif /* USER_VECT_TAB_ADDRESS */
}
80072e8: bf00 nop
80072ea: 46bd mov sp, r7
80072ec: f85d 7b04 ldr.w r7, [sp], #4
80072f0: 4770 bx lr
80072f2: bf00 nop
80072f4: e000ed00 .word 0xe000ed00
080072f8 <MX_TIM7_Init>:
}
/* TIM7 init function */
void MX_TIM7_Init(void)
{
80072f8: b580 push {r7, lr}
80072fa: b084 sub sp, #16
80072fc: af00 add r7, sp, #0
TIM_MasterConfigTypeDef sMasterConfig;
htim7.Instance = TIM7;
80072fe: 4b16 ldr r3, [pc, #88] ; (8007358 <MX_TIM7_Init+0x60>)
8007300: 4a16 ldr r2, [pc, #88] ; (800735c <MX_TIM7_Init+0x64>)
8007302: 601a str r2, [r3, #0]
htim7.Init.Prescaler = (10 - 1);
8007304: 4b14 ldr r3, [pc, #80] ; (8007358 <MX_TIM7_Init+0x60>)
8007306: 2209 movs r2, #9
8007308: 605a str r2, [r3, #4]
htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
800730a: 4b13 ldr r3, [pc, #76] ; (8007358 <MX_TIM7_Init+0x60>)
800730c: 2200 movs r2, #0
800730e: 609a str r2, [r3, #8]
htim7.Init.Period = (54000 - 1);
8007310: 4b11 ldr r3, [pc, #68] ; (8007358 <MX_TIM7_Init+0x60>)
8007312: f24d 22ef movw r2, #53999 ; 0xd2ef
8007316: 60da str r2, [r3, #12]
htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
8007318: 4b0f ldr r3, [pc, #60] ; (8007358 <MX_TIM7_Init+0x60>)
800731a: 2200 movs r2, #0
800731c: 619a str r2, [r3, #24]
if(HAL_TIM_Base_Init(&htim7) != HAL_OK) {
800731e: 480e ldr r0, [pc, #56] ; (8007358 <MX_TIM7_Init+0x60>)
8007320: f003 fe64 bl 800afec <HAL_TIM_Base_Init>
8007324: 4603 mov r3, r0
8007326: 2b00 cmp r3, #0
8007328: d001 beq.n 800732e <MX_TIM7_Init+0x36>
Error_Handler();
800732a: f7fb ffb3 bl 8003294 <Error_Handler>
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
800732e: 2300 movs r3, #0
8007330: 607b str r3, [r7, #4]
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
8007332: 2300 movs r3, #0
8007334: 60fb str r3, [r7, #12]
if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK) {
8007336: 1d3b adds r3, r7, #4
8007338: 4619 mov r1, r3
800733a: 4807 ldr r0, [pc, #28] ; (8007358 <MX_TIM7_Init+0x60>)
800733c: f004 f90e bl 800b55c <HAL_TIMEx_MasterConfigSynchronization>
8007340: 4603 mov r3, r0
8007342: 2b00 cmp r3, #0
8007344: d001 beq.n 800734a <MX_TIM7_Init+0x52>
Error_Handler();
8007346: f7fb ffa5 bl 8003294 <Error_Handler>
}
HAL_TIM_Base_Start_IT(&htim7);
800734a: 4803 ldr r0, [pc, #12] ; (8007358 <MX_TIM7_Init+0x60>)
800734c: f003 fea6 bl 800b09c <HAL_TIM_Base_Start_IT>
}
8007350: bf00 nop
8007352: 3710 adds r7, #16
8007354: 46bd mov sp, r7
8007356: bd80 pop {r7, pc}
8007358: 2006baf0 .word 0x2006baf0
800735c: 40001400 .word 0x40001400
08007360 <HAL_TIM_Base_MspInit>:
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
{
8007360: b580 push {r7, lr}
8007362: b086 sub sp, #24
8007364: af00 add r7, sp, #0
8007366: 6078 str r0, [r7, #4]
if(tim_baseHandle->Instance == TIM1)
8007368: 687b ldr r3, [r7, #4]
800736a: 681b ldr r3, [r3, #0]
800736c: 4a1f ldr r2, [pc, #124] ; (80073ec <HAL_TIM_Base_MspInit+0x8c>)
800736e: 4293 cmp r3, r2
8007370: d10c bne.n 800738c <HAL_TIM_Base_MspInit+0x2c>
{
__HAL_RCC_TIM1_CLK_ENABLE();
8007372: 4a1f ldr r2, [pc, #124] ; (80073f0 <HAL_TIM_Base_MspInit+0x90>)
8007374: 4b1e ldr r3, [pc, #120] ; (80073f0 <HAL_TIM_Base_MspInit+0x90>)
8007376: 6c5b ldr r3, [r3, #68] ; 0x44
8007378: f043 0301 orr.w r3, r3, #1
800737c: 6453 str r3, [r2, #68] ; 0x44
800737e: 4b1c ldr r3, [pc, #112] ; (80073f0 <HAL_TIM_Base_MspInit+0x90>)
8007380: 6c5b ldr r3, [r3, #68] ; 0x44
8007382: f003 0301 and.w r3, r3, #1
8007386: 617b str r3, [r7, #20]
8007388: 697b ldr r3, [r7, #20]
{
__HAL_RCC_TIM7_CLK_ENABLE();
HAL_NVIC_SetPriority(TIM7_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(TIM7_IRQn);
}
}
800738a: e02a b.n 80073e2 <HAL_TIM_Base_MspInit+0x82>
if(tim_baseHandle->Instance == TIM5)
800738c: 687b ldr r3, [r7, #4]
800738e: 681b ldr r3, [r3, #0]
8007390: 4a18 ldr r2, [pc, #96] ; (80073f4 <HAL_TIM_Base_MspInit+0x94>)
8007392: 4293 cmp r3, r2
8007394: d10c bne.n 80073b0 <HAL_TIM_Base_MspInit+0x50>
__HAL_RCC_TIM5_CLK_ENABLE();
8007396: 4a16 ldr r2, [pc, #88] ; (80073f0 <HAL_TIM_Base_MspInit+0x90>)
8007398: 4b15 ldr r3, [pc, #84] ; (80073f0 <HAL_TIM_Base_MspInit+0x90>)
800739a: 6c1b ldr r3, [r3, #64] ; 0x40
800739c: f043 0308 orr.w r3, r3, #8
80073a0: 6413 str r3, [r2, #64] ; 0x40
80073a2: 4b13 ldr r3, [pc, #76] ; (80073f0 <HAL_TIM_Base_MspInit+0x90>)
80073a4: 6c1b ldr r3, [r3, #64] ; 0x40
80073a6: f003 0308 and.w r3, r3, #8
80073aa: 613b str r3, [r7, #16]
80073ac: 693b ldr r3, [r7, #16]
}
80073ae: e018 b.n 80073e2 <HAL_TIM_Base_MspInit+0x82>
if(tim_baseHandle->Instance == TIM7)
80073b0: 687b ldr r3, [r7, #4]
80073b2: 681b ldr r3, [r3, #0]
80073b4: 4a10 ldr r2, [pc, #64] ; (80073f8 <HAL_TIM_Base_MspInit+0x98>)
80073b6: 4293 cmp r3, r2
80073b8: d113 bne.n 80073e2 <HAL_TIM_Base_MspInit+0x82>
__HAL_RCC_TIM7_CLK_ENABLE();
80073ba: 4a0d ldr r2, [pc, #52] ; (80073f0 <HAL_TIM_Base_MspInit+0x90>)
80073bc: 4b0c ldr r3, [pc, #48] ; (80073f0 <HAL_TIM_Base_MspInit+0x90>)
80073be: 6c1b ldr r3, [r3, #64] ; 0x40
80073c0: f043 0320 orr.w r3, r3, #32
80073c4: 6413 str r3, [r2, #64] ; 0x40
80073c6: 4b0a ldr r3, [pc, #40] ; (80073f0 <HAL_TIM_Base_MspInit+0x90>)
80073c8: 6c1b ldr r3, [r3, #64] ; 0x40
80073ca: f003 0320 and.w r3, r3, #32
80073ce: 60fb str r3, [r7, #12]
80073d0: 68fb ldr r3, [r7, #12]
HAL_NVIC_SetPriority(TIM7_IRQn, 3, 0);
80073d2: 2200 movs r2, #0
80073d4: 2103 movs r1, #3
80073d6: 2037 movs r0, #55 ; 0x37
80073d8: f001 fa93 bl 8008902 <HAL_NVIC_SetPriority>
HAL_NVIC_EnableIRQ(TIM7_IRQn);
80073dc: 2037 movs r0, #55 ; 0x37
80073de: f001 faac bl 800893a <HAL_NVIC_EnableIRQ>
}
80073e2: bf00 nop
80073e4: 3718 adds r7, #24
80073e6: 46bd mov sp, r7
80073e8: bd80 pop {r7, pc}
80073ea: bf00 nop
80073ec: 40010000 .word 0x40010000
80073f0: 40023800 .word 0x40023800
80073f4: 40000c00 .word 0x40000c00
80073f8: 40001400 .word 0x40001400
080073fc <HAL_TIM_PeriodElapsedCallback>:
__IO uint32_t maxtime = 0;
/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
80073fc: b580 push {r7, lr}
80073fe: b084 sub sp, #16
8007400: af00 add r7, sp, #0
8007402: 6078 str r0, [r7, #4]
__IO uint16_t Data32, i;
switch((uint32_t) htim->Instance)
8007404: 687b ldr r3, [r7, #4]
8007406: 681b ldr r3, [r3, #0]
8007408: 461a mov r2, r3
800740a: 4b34 ldr r3, [pc, #208] ; (80074dc <HAL_TIM_PeriodElapsedCallback+0xe0>)
800740c: 429a cmp r2, r3
800740e: d000 beq.n 8007412 <HAL_TIM_PeriodElapsedCallback+0x16>
if(repeat)
repeat--;
break;
}
}
8007410: e060 b.n 80074d4 <HAL_TIM_PeriodElapsedCallback+0xd8>
__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
8007412: 687b ldr r3, [r7, #4]
8007414: 681b ldr r3, [r3, #0]
8007416: f06f 0201 mvn.w r2, #1
800741a: 611a str r2, [r3, #16]
if(timerKeys)
800741c: 4b30 ldr r3, [pc, #192] ; (80074e0 <HAL_TIM_PeriodElapsedCallback+0xe4>)
800741e: 881b ldrh r3, [r3, #0]
8007420: b29b uxth r3, r3
8007422: 2b00 cmp r3, #0
8007424: d007 beq.n 8007436 <HAL_TIM_PeriodElapsedCallback+0x3a>
timerKeys--;
8007426: 4b2e ldr r3, [pc, #184] ; (80074e0 <HAL_TIM_PeriodElapsedCallback+0xe4>)
8007428: 881b ldrh r3, [r3, #0]
800742a: b29b uxth r3, r3
800742c: 3b01 subs r3, #1
800742e: b29a uxth r2, r3
8007430: 4b2b ldr r3, [pc, #172] ; (80074e0 <HAL_TIM_PeriodElapsedCallback+0xe4>)
8007432: 801a strh r2, [r3, #0]
8007434: e00b b.n 800744e <HAL_TIM_PeriodElapsedCallback+0x52>
timerKeys = 2;
8007436: 4b2a ldr r3, [pc, #168] ; (80074e0 <HAL_TIM_PeriodElapsedCallback+0xe4>)
8007438: 2202 movs r2, #2
800743a: 801a strh r2, [r3, #0]
if(!KEY_STATE)
800743c: 4b29 ldr r3, [pc, #164] ; (80074e4 <HAL_TIM_PeriodElapsedCallback+0xe8>)
800743e: 681b ldr r3, [r3, #0]
8007440: 2b00 cmp r3, #0
8007442: d104 bne.n 800744e <HAL_TIM_PeriodElapsedCallback+0x52>
KEY_STATE = kbhit();
8007444: f7f9 fa86 bl 8000954 <kbhit>
8007448: 4602 mov r2, r0
800744a: 4b26 ldr r3, [pc, #152] ; (80074e4 <HAL_TIM_PeriodElapsedCallback+0xe8>)
800744c: 601a str r2, [r3, #0]
if(timerRefreshScreen)
800744e: 4b26 ldr r3, [pc, #152] ; (80074e8 <HAL_TIM_PeriodElapsedCallback+0xec>)
8007450: 881b ldrh r3, [r3, #0]
8007452: b29b uxth r3, r3
8007454: 2b00 cmp r3, #0
8007456: d007 beq.n 8007468 <HAL_TIM_PeriodElapsedCallback+0x6c>
timerRefreshScreen--;
8007458: 4b23 ldr r3, [pc, #140] ; (80074e8 <HAL_TIM_PeriodElapsedCallback+0xec>)
800745a: 881b ldrh r3, [r3, #0]
800745c: b29b uxth r3, r3
800745e: 3b01 subs r3, #1
8007460: b29a uxth r2, r3
8007462: 4b21 ldr r3, [pc, #132] ; (80074e8 <HAL_TIM_PeriodElapsedCallback+0xec>)
8007464: 801a strh r2, [r3, #0]
8007466: e028 b.n 80074ba <HAL_TIM_PeriodElapsedCallback+0xbe>
timerRefreshScreen = MSEC_REFRESH[0];
8007468: 220a movs r2, #10
800746a: 4b1f ldr r3, [pc, #124] ; (80074e8 <HAL_TIM_PeriodElapsedCallback+0xec>)
800746c: 801a strh r2, [r3, #0]
Cursorblink ^= 1;
800746e: 4b1f ldr r3, [pc, #124] ; (80074ec <HAL_TIM_PeriodElapsedCallback+0xf0>)
8007470: 781b ldrb r3, [r3, #0]
8007472: b2db uxtb r3, r3
8007474: f083 0301 eor.w r3, r3, #1
8007478: b2da uxtb r2, r3
800747a: 4b1c ldr r3, [pc, #112] ; (80074ec <HAL_TIM_PeriodElapsedCallback+0xf0>)
800747c: 701a strb r2, [r3, #0]
if(cntblink)
800747e: 4b1c ldr r3, [pc, #112] ; (80074f0 <HAL_TIM_PeriodElapsedCallback+0xf4>)
8007480: 881b ldrh r3, [r3, #0]
8007482: b29b uxth r3, r3
8007484: 2b00 cmp r3, #0
8007486: d007 beq.n 8007498 <HAL_TIM_PeriodElapsedCallback+0x9c>
cntblink--;
8007488: 4b19 ldr r3, [pc, #100] ; (80074f0 <HAL_TIM_PeriodElapsedCallback+0xf4>)
800748a: 881b ldrh r3, [r3, #0]
800748c: b29b uxth r3, r3
800748e: 3b01 subs r3, #1
8007490: b29a uxth r2, r3
8007492: 4b17 ldr r3, [pc, #92] ; (80074f0 <HAL_TIM_PeriodElapsedCallback+0xf4>)
8007494: 801a strh r2, [r3, #0]
8007496: e00d b.n 80074b4 <HAL_TIM_PeriodElapsedCallback+0xb8>
cntblink = 2;
8007498: 4b15 ldr r3, [pc, #84] ; (80074f0 <HAL_TIM_PeriodElapsedCallback+0xf4>)
800749a: 2202 movs r2, #2
800749c: 801a strh r2, [r3, #0]
blink ^= 1;
800749e: 4b15 ldr r3, [pc, #84] ; (80074f4 <HAL_TIM_PeriodElapsedCallback+0xf8>)
80074a0: 781b ldrb r3, [r3, #0]
80074a2: b2db uxtb r3, r3
80074a4: f083 0301 eor.w r3, r3, #1
80074a8: b2da uxtb r2, r3
80074aa: 4b12 ldr r3, [pc, #72] ; (80074f4 <HAL_TIM_PeriodElapsedCallback+0xf8>)
80074ac: 701a strb r2, [r3, #0]
cntBat = 1;
80074ae: 4b12 ldr r3, [pc, #72] ; (80074f8 <HAL_TIM_PeriodElapsedCallback+0xfc>)
80074b0: 2201 movs r2, #1
80074b2: 701a strb r2, [r3, #0]
screen = true;
80074b4: 4b11 ldr r3, [pc, #68] ; (80074fc <HAL_TIM_PeriodElapsedCallback+0x100>)
80074b6: 2201 movs r2, #1
80074b8: 701a strb r2, [r3, #0]
if(repeat)
80074ba: 4b11 ldr r3, [pc, #68] ; (8007500 <HAL_TIM_PeriodElapsedCallback+0x104>)
80074bc: 881b ldrh r3, [r3, #0]
80074be: b29b uxth r3, r3
80074c0: 2b00 cmp r3, #0
80074c2: d006 beq.n 80074d2 <HAL_TIM_PeriodElapsedCallback+0xd6>
repeat--;
80074c4: 4b0e ldr r3, [pc, #56] ; (8007500 <HAL_TIM_PeriodElapsedCallback+0x104>)
80074c6: 881b ldrh r3, [r3, #0]
80074c8: b29b uxth r3, r3
80074ca: 3b01 subs r3, #1
80074cc: b29a uxth r2, r3
80074ce: 4b0c ldr r3, [pc, #48] ; (8007500 <HAL_TIM_PeriodElapsedCallback+0x104>)
80074d0: 801a strh r2, [r3, #0]
break;
80074d2: bf00 nop
}
80074d4: bf00 nop
80074d6: 3710 adds r7, #16
80074d8: 46bd mov sp, r7
80074da: bd80 pop {r7, pc}
80074dc: 40001400 .word 0x40001400
80074e0: 2002010a .word 0x2002010a
80074e4: 2002013c .word 0x2002013c
80074e8: 2002010c .word 0x2002010c
80074ec: 2006b1dd .word 0x2006b1dd
80074f0: 20020108 .word 0x20020108
80074f4: 2006b1dc .word 0x2006b1dc
80074f8: 2006b1de .word 0x2006b1de
80074fc: 2002002c .word 0x2002002c
8007500: 20020138 .word 0x20020138
08007504 <MX_UART7_Init>:
void MX_UART7_Init(void)
{
8007504: b580 push {r7, lr}
8007506: af00 add r7, sp, #0
huart7.Instance = UART7;
8007508: 4b47 ldr r3, [pc, #284] ; (8007628 <MX_UART7_Init+0x124>)
800750a: 4a48 ldr r2, [pc, #288] ; (800762c <MX_UART7_Init+0x128>)
800750c: 601a str r2, [r3, #0]
huart7.Init.BaudRate = BAUDRATE[pardata.BAUD];
800750e: 4b48 ldr r3, [pc, #288] ; (8007630 <MX_UART7_Init+0x12c>)
8007510: f8b3 3202 ldrh.w r3, [r3, #514] ; 0x202
8007514: b29b uxth r3, r3
8007516: 461a mov r2, r3
8007518: 4b46 ldr r3, [pc, #280] ; (8007634 <MX_UART7_Init+0x130>)
800751a: f853 3022 ldr.w r3, [r3, r2, lsl #2]
800751e: 4a42 ldr r2, [pc, #264] ; (8007628 <MX_UART7_Init+0x124>)
8007520: 6053 str r3, [r2, #4]
switch(pardata.INFB)
8007522: 4b43 ldr r3, [pc, #268] ; (8007630 <MX_UART7_Init+0x12c>)
8007524: f8b3 3204 ldrh.w r3, [r3, #516] ; 0x204
8007528: b29b uxth r3, r3
800752a: 2b01 cmp r3, #1
800752c: d00a beq.n 8007544 <MX_UART7_Init+0x40>
800752e: 2b02 cmp r3, #2
8007530: d011 beq.n 8007556 <MX_UART7_Init+0x52>
8007532: 2b00 cmp r3, #0
8007534: d118 bne.n 8007568 <MX_UART7_Init+0x64>
{
case 0: //NONE
huart7.Init.WordLength = UART_WORDLENGTH_8B;
8007536: 4b3c ldr r3, [pc, #240] ; (8007628 <MX_UART7_Init+0x124>)
8007538: 2200 movs r2, #0
800753a: 609a str r2, [r3, #8]
huart7.Init.Parity = UART_PARITY_NONE;
800753c: 4b3a ldr r3, [pc, #232] ; (8007628 <MX_UART7_Init+0x124>)
800753e: 2200 movs r2, #0
8007540: 611a str r2, [r3, #16]
break;
8007542: e011 b.n 8007568 <MX_UART7_Init+0x64>
case 1: //ODD
huart7.Init.WordLength = UART_WORDLENGTH_9B;
8007544: 4b38 ldr r3, [pc, #224] ; (8007628 <MX_UART7_Init+0x124>)
8007546: f44f 5280 mov.w r2, #4096 ; 0x1000
800754a: 609a str r2, [r3, #8]
huart7.Init.Parity = UART_PARITY_ODD;
800754c: 4b36 ldr r3, [pc, #216] ; (8007628 <MX_UART7_Init+0x124>)
800754e: f44f 62c0 mov.w r2, #1536 ; 0x600
8007552: 611a str r2, [r3, #16]
break;
8007554: e008 b.n 8007568 <MX_UART7_Init+0x64>
case 2: //EVEN
huart7.Init.WordLength = UART_WORDLENGTH_9B;
8007556: 4b34 ldr r3, [pc, #208] ; (8007628 <MX_UART7_Init+0x124>)
8007558: f44f 5280 mov.w r2, #4096 ; 0x1000
800755c: 609a str r2, [r3, #8]
huart7.Init.Parity = UART_PARITY_EVEN;
800755e: 4b32 ldr r3, [pc, #200] ; (8007628 <MX_UART7_Init+0x124>)
8007560: f44f 6280 mov.w r2, #1024 ; 0x400
8007564: 611a str r2, [r3, #16]
break;
8007566: bf00 nop
}
huart7.Init.StopBits = UART_STOPBITS_1;
8007568: 4b2f ldr r3, [pc, #188] ; (8007628 <MX_UART7_Init+0x124>)
800756a: 2200 movs r2, #0
800756c: 60da str r2, [r3, #12]
huart7.Init.Mode = UART_MODE_TX_RX;
800756e: 4b2e ldr r3, [pc, #184] ; (8007628 <MX_UART7_Init+0x124>)
8007570: 220c movs r2, #12
8007572: 615a str r2, [r3, #20]
huart7.Init.HwFlowCtl = UART_HWCONTROL_NONE;
8007574: 4b2c ldr r3, [pc, #176] ; (8007628 <MX_UART7_Init+0x124>)
8007576: 2200 movs r2, #0
8007578: 619a str r2, [r3, #24]
if(pardata.BAUD < 9)
800757a: 4b2d ldr r3, [pc, #180] ; (8007630 <MX_UART7_Init+0x12c>)
800757c: f8b3 3202 ldrh.w r3, [r3, #514] ; 0x202
8007580: b29b uxth r3, r3
8007582: 2b08 cmp r3, #8
8007584: d803 bhi.n 800758e <MX_UART7_Init+0x8a>
huart7.Init.OverSampling = UART_OVERSAMPLING_16;
8007586: 4b28 ldr r3, [pc, #160] ; (8007628 <MX_UART7_Init+0x124>)
8007588: 2200 movs r2, #0
800758a: 61da str r2, [r3, #28]
800758c: e003 b.n 8007596 <MX_UART7_Init+0x92>
else huart7.Init.OverSampling = UART_OVERSAMPLING_8;
800758e: 4b26 ldr r3, [pc, #152] ; (8007628 <MX_UART7_Init+0x124>)
8007590: f44f 4200 mov.w r2, #32768 ; 0x8000
8007594: 61da str r2, [r3, #28]
huart7.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
8007596: 4b24 ldr r3, [pc, #144] ; (8007628 <MX_UART7_Init+0x124>)
8007598: 2200 movs r2, #0
800759a: 621a str r2, [r3, #32]
huart7.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_SWAP_INIT;
800759c: 4b22 ldr r3, [pc, #136] ; (8007628 <MX_UART7_Init+0x124>)
800759e: 2208 movs r2, #8
80075a0: 625a str r2, [r3, #36] ; 0x24
huart7.AdvancedInit.Swap = UART_ADVFEATURE_SWAP_ENABLE;
80075a2: 4b21 ldr r3, [pc, #132] ; (8007628 <MX_UART7_Init+0x124>)
80075a4: f44f 4200 mov.w r2, #32768 ; 0x8000
80075a8: 635a str r2, [r3, #52] ; 0x34
if(HAL_UART_Init(&huart7) != HAL_OK) {
80075aa: 481f ldr r0, [pc, #124] ; (8007628 <MX_UART7_Init+0x124>)
80075ac: f004 f882 bl 800b6b4 <HAL_UART_Init>
80075b0: 4603 mov r3, r0
80075b2: 2b00 cmp r3, #0
80075b4: d001 beq.n 80075ba <MX_UART7_Init+0xb6>
Error_Handler();
80075b6: f7fb fe6d bl 8003294 <Error_Handler>
}
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_ORE))
80075ba: 4b1b ldr r3, [pc, #108] ; (8007628 <MX_UART7_Init+0x124>)
80075bc: 681b ldr r3, [r3, #0]
80075be: 69db ldr r3, [r3, #28]
80075c0: f003 0308 and.w r3, r3, #8
80075c4: 2b08 cmp r3, #8
80075c6: d103 bne.n 80075d0 <MX_UART7_Init+0xcc>
__HAL_UART_CLEAR_OREFLAG(&huart7);
80075c8: 4b17 ldr r3, [pc, #92] ; (8007628 <MX_UART7_Init+0x124>)
80075ca: 681b ldr r3, [r3, #0]
80075cc: 2208 movs r2, #8
80075ce: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_PE))
80075d0: 4b15 ldr r3, [pc, #84] ; (8007628 <MX_UART7_Init+0x124>)
80075d2: 681b ldr r3, [r3, #0]
80075d4: 69db ldr r3, [r3, #28]
80075d6: f003 0301 and.w r3, r3, #1
80075da: 2b01 cmp r3, #1
80075dc: d103 bne.n 80075e6 <MX_UART7_Init+0xe2>
__HAL_UART_CLEAR_PEFLAG(&huart7);
80075de: 4b12 ldr r3, [pc, #72] ; (8007628 <MX_UART7_Init+0x124>)
80075e0: 681b ldr r3, [r3, #0]
80075e2: 2201 movs r2, #1
80075e4: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_FE))
80075e6: 4b10 ldr r3, [pc, #64] ; (8007628 <MX_UART7_Init+0x124>)
80075e8: 681b ldr r3, [r3, #0]
80075ea: 69db ldr r3, [r3, #28]
80075ec: f003 0302 and.w r3, r3, #2
80075f0: 2b02 cmp r3, #2
80075f2: d103 bne.n 80075fc <MX_UART7_Init+0xf8>
__HAL_UART_CLEAR_FEFLAG(&huart7);
80075f4: 4b0c ldr r3, [pc, #48] ; (8007628 <MX_UART7_Init+0x124>)
80075f6: 681b ldr r3, [r3, #0]
80075f8: 2202 movs r2, #2
80075fa: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_NE))
80075fc: 4b0a ldr r3, [pc, #40] ; (8007628 <MX_UART7_Init+0x124>)
80075fe: 681b ldr r3, [r3, #0]
8007600: 69db ldr r3, [r3, #28]
8007602: f003 0304 and.w r3, r3, #4
8007606: 2b04 cmp r3, #4
8007608: d103 bne.n 8007612 <MX_UART7_Init+0x10e>
__HAL_UART_CLEAR_NEFLAG(&huart7);
800760a: 4b07 ldr r3, [pc, #28] ; (8007628 <MX_UART7_Init+0x124>)
800760c: 681b ldr r3, [r3, #0]
800760e: 2204 movs r2, #4
8007610: 621a str r2, [r3, #32]
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8007612: 2200 movs r2, #0
8007614: f44f 7100 mov.w r1, #512 ; 0x200
8007618: 4807 ldr r0, [pc, #28] ; (8007638 <MX_UART7_Init+0x134>)
800761a: f002 f83b bl 8009694 <HAL_GPIO_WritePin>
HAL_Delay(1);
800761e: 2001 movs r0, #1
8007620: f001 f852 bl 80086c8 <HAL_Delay>
//SET_BIT(huart7.Instance->CR1, /*USART_CR1_RXNEIE |*/ USART_CR1_PEIE);
}
8007624: bf00 nop
8007626: bd80 pop {r7, pc}
8007628: 2006bb3c .word 0x2006bb3c
800762c: 40007800 .word 0x40007800
8007630: 2006b3f8 .word 0x2006b3f8
8007634: 0800ffd0 .word 0x0800ffd0
8007638: 40021400 .word 0x40021400
0800763c <HAL_UART_MspInit>:
HAL_NVIC_DisableIRQ(UART7_IRQn);
}
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{
800763c: b580 push {r7, lr}
800763e: b08a sub sp, #40 ; 0x28
8007640: af00 add r7, sp, #0
8007642: 6078 str r0, [r7, #4]
GPIO_InitTypeDef GPIO_InitStruct = {0};
8007644: f107 0314 add.w r3, r7, #20
8007648: 2200 movs r2, #0
800764a: 601a str r2, [r3, #0]
800764c: 605a str r2, [r3, #4]
800764e: 609a str r2, [r3, #8]
8007650: 60da str r2, [r3, #12]
8007652: 611a str r2, [r3, #16]
if(uartHandle->Instance==UART7)
8007654: 687b ldr r3, [r7, #4]
8007656: 681b ldr r3, [r3, #0]
8007658: 4a1b ldr r2, [pc, #108] ; (80076c8 <HAL_UART_MspInit+0x8c>)
800765a: 4293 cmp r3, r2
800765c: d12f bne.n 80076be <HAL_UART_MspInit+0x82>
{
__HAL_RCC_UART7_CLK_ENABLE();
800765e: 4a1b ldr r2, [pc, #108] ; (80076cc <HAL_UART_MspInit+0x90>)
8007660: 4b1a ldr r3, [pc, #104] ; (80076cc <HAL_UART_MspInit+0x90>)
8007662: 6c1b ldr r3, [r3, #64] ; 0x40
8007664: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000
8007668: 6413 str r3, [r2, #64] ; 0x40
800766a: 4b18 ldr r3, [pc, #96] ; (80076cc <HAL_UART_MspInit+0x90>)
800766c: 6c1b ldr r3, [r3, #64] ; 0x40
800766e: f003 4380 and.w r3, r3, #1073741824 ; 0x40000000
8007672: 613b str r3, [r7, #16]
8007674: 693b ldr r3, [r7, #16]
__HAL_RCC_GPIOF_CLK_ENABLE();
8007676: 4a15 ldr r2, [pc, #84] ; (80076cc <HAL_UART_MspInit+0x90>)
8007678: 4b14 ldr r3, [pc, #80] ; (80076cc <HAL_UART_MspInit+0x90>)
800767a: 6b1b ldr r3, [r3, #48] ; 0x30
800767c: f043 0320 orr.w r3, r3, #32
8007680: 6313 str r3, [r2, #48] ; 0x30
8007682: 4b12 ldr r3, [pc, #72] ; (80076cc <HAL_UART_MspInit+0x90>)
8007684: 6b1b ldr r3, [r3, #48] ; 0x30
8007686: f003 0320 and.w r3, r3, #32
800768a: 60fb str r3, [r7, #12]
800768c: 68fb ldr r3, [r7, #12]
/**UART7 GPIO Configuration
PF6 ------> UART7_RX
PF7 ------> UART7_TX
*/
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
800768e: 23c0 movs r3, #192 ; 0xc0
8007690: 617b str r3, [r7, #20]
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
8007692: 2302 movs r3, #2
8007694: 61bb str r3, [r7, #24]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8007696: 2300 movs r3, #0
8007698: 61fb str r3, [r7, #28]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
800769a: 2303 movs r3, #3
800769c: 623b str r3, [r7, #32]
GPIO_InitStruct.Alternate = GPIO_AF8_UART7;
800769e: 2308 movs r3, #8
80076a0: 627b str r3, [r7, #36] ; 0x24
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
80076a2: f107 0314 add.w r3, r7, #20
80076a6: 4619 mov r1, r3
80076a8: 4809 ldr r0, [pc, #36] ; (80076d0 <HAL_UART_MspInit+0x94>)
80076aa: f001 fe31 bl 8009310 <HAL_GPIO_Init>
/* UART7 interrupt Init */
HAL_NVIC_SetPriority(UART7_IRQn, 10, 0);
80076ae: 2200 movs r2, #0
80076b0: 210a movs r1, #10
80076b2: 2052 movs r0, #82 ; 0x52
80076b4: f001 f925 bl 8008902 <HAL_NVIC_SetPriority>
HAL_NVIC_EnableIRQ(UART7_IRQn);
80076b8: 2052 movs r0, #82 ; 0x52
80076ba: f001 f93e bl 800893a <HAL_NVIC_EnableIRQ>
}
}
80076be: bf00 nop
80076c0: 3728 adds r7, #40 ; 0x28
80076c2: 46bd mov sp, r7
80076c4: bd80 pop {r7, pc}
80076c6: bf00 nop
80076c8: 40007800 .word 0x40007800
80076cc: 40023800 .word 0x40023800
80076d0: 40021400 .word 0x40021400
080076d4 <UART7_IRQHandler>:
}
}
void UART7_IRQHandler(void)
{
80076d4: b580 push {r7, lr}
80076d6: af00 add r7, sp, #0
if((__HAL_UART_GET_IT_SOURCE(&huart7, UART_IT_RXNE)) && (__HAL_UART_GET_FLAG(&huart7, UART_FLAG_RXNE)))
80076d8: 4b26 ldr r3, [pc, #152] ; (8007774 <UART7_IRQHandler+0xa0>)
80076da: 681b ldr r3, [r3, #0]
80076dc: 681b ldr r3, [r3, #0]
80076de: f003 0320 and.w r3, r3, #32
80076e2: 2b00 cmp r3, #0
80076e4: d00a beq.n 80076fc <UART7_IRQHandler+0x28>
80076e6: 4b23 ldr r3, [pc, #140] ; (8007774 <UART7_IRQHandler+0xa0>)
80076e8: 681b ldr r3, [r3, #0]
80076ea: 69db ldr r3, [r3, #28]
80076ec: f003 0320 and.w r3, r3, #32
80076f0: 2b20 cmp r3, #32
80076f2: d103 bne.n 80076fc <UART7_IRQHandler+0x28>
{
HAL_UART_RxCpltCallback(&huart7);
80076f4: 481f ldr r0, [pc, #124] ; (8007774 <UART7_IRQHandler+0xa0>)
80076f6: f000 f8ad bl 8007854 <HAL_UART_RxCpltCallback>
80076fa: e002 b.n 8007702 <UART7_IRQHandler+0x2e>
}
else
{
HAL_UART_IRQHandler(&huart7);
80076fc: 481d ldr r0, [pc, #116] ; (8007774 <UART7_IRQHandler+0xa0>)
80076fe: f004 fa8b bl 800bc18 <HAL_UART_IRQHandler>
}
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_ORE))
8007702: 4b1c ldr r3, [pc, #112] ; (8007774 <UART7_IRQHandler+0xa0>)
8007704: 681b ldr r3, [r3, #0]
8007706: 69db ldr r3, [r3, #28]
8007708: f003 0308 and.w r3, r3, #8
800770c: 2b08 cmp r3, #8
800770e: d103 bne.n 8007718 <UART7_IRQHandler+0x44>
__HAL_UART_CLEAR_OREFLAG(&huart7);
8007710: 4b18 ldr r3, [pc, #96] ; (8007774 <UART7_IRQHandler+0xa0>)
8007712: 681b ldr r3, [r3, #0]
8007714: 2208 movs r2, #8
8007716: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_PE))
8007718: 4b16 ldr r3, [pc, #88] ; (8007774 <UART7_IRQHandler+0xa0>)
800771a: 681b ldr r3, [r3, #0]
800771c: 69db ldr r3, [r3, #28]
800771e: f003 0301 and.w r3, r3, #1
8007722: 2b01 cmp r3, #1
8007724: d103 bne.n 800772e <UART7_IRQHandler+0x5a>
__HAL_UART_CLEAR_PEFLAG(&huart7);
8007726: 4b13 ldr r3, [pc, #76] ; (8007774 <UART7_IRQHandler+0xa0>)
8007728: 681b ldr r3, [r3, #0]
800772a: 2201 movs r2, #1
800772c: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_FE))
800772e: 4b11 ldr r3, [pc, #68] ; (8007774 <UART7_IRQHandler+0xa0>)
8007730: 681b ldr r3, [r3, #0]
8007732: 69db ldr r3, [r3, #28]
8007734: f003 0302 and.w r3, r3, #2
8007738: 2b02 cmp r3, #2
800773a: d103 bne.n 8007744 <UART7_IRQHandler+0x70>
__HAL_UART_CLEAR_FEFLAG(&huart7);
800773c: 4b0d ldr r3, [pc, #52] ; (8007774 <UART7_IRQHandler+0xa0>)
800773e: 681b ldr r3, [r3, #0]
8007740: 2202 movs r2, #2
8007742: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_NE))
8007744: 4b0b ldr r3, [pc, #44] ; (8007774 <UART7_IRQHandler+0xa0>)
8007746: 681b ldr r3, [r3, #0]
8007748: 69db ldr r3, [r3, #28]
800774a: f003 0304 and.w r3, r3, #4
800774e: 2b04 cmp r3, #4
8007750: d103 bne.n 800775a <UART7_IRQHandler+0x86>
__HAL_UART_CLEAR_NEFLAG(&huart7);
8007752: 4b08 ldr r3, [pc, #32] ; (8007774 <UART7_IRQHandler+0xa0>)
8007754: 681b ldr r3, [r3, #0]
8007756: 2204 movs r2, #4
8007758: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_IDLE))
800775a: 4b06 ldr r3, [pc, #24] ; (8007774 <UART7_IRQHandler+0xa0>)
800775c: 681b ldr r3, [r3, #0]
800775e: 69db ldr r3, [r3, #28]
8007760: f003 0310 and.w r3, r3, #16
8007764: 2b10 cmp r3, #16
8007766: d103 bne.n 8007770 <UART7_IRQHandler+0x9c>
__HAL_UART_CLEAR_IDLEFLAG(&huart7);
8007768: 4b02 ldr r3, [pc, #8] ; (8007774 <UART7_IRQHandler+0xa0>)
800776a: 681b ldr r3, [r3, #0]
800776c: 2210 movs r2, #16
800776e: 621a str r2, [r3, #32]
}
8007770: bf00 nop
8007772: bd80 pop {r7, pc}
8007774: 2006bb3c .word 0x2006bb3c
08007778 <Crc16>:
uint16_t Crc16(uint16_t len)
{
8007778: b480 push {r7}
800777a: b085 sub sp, #20
800777c: af00 add r7, sp, #0
800777e: 4603 mov r3, r0
8007780: 80fb strh r3, [r7, #6]
uint16_t i;
uint16_t crc = 0xFFFF;
8007782: f64f 73ff movw r3, #65535 ; 0xffff
8007786: 81bb strh r3, [r7, #12]
for(i = 0; i < len; i++) {
8007788: 2300 movs r3, #0
800778a: 81fb strh r3, [r7, #14]
800778c: e010 b.n 80077b0 <Crc16+0x38>
crc = (crc >> 8) ^ Crc16Table[(crc & 0xFF) ^ iobuf[i]];
800778e: 89bb ldrh r3, [r7, #12]
8007790: 0a1b lsrs r3, r3, #8
8007792: b29a uxth r2, r3
8007794: 89bb ldrh r3, [r7, #12]
8007796: b2db uxtb r3, r3
8007798: 89f9 ldrh r1, [r7, #14]
800779a: 480b ldr r0, [pc, #44] ; (80077c8 <Crc16+0x50>)
800779c: 5c41 ldrb r1, [r0, r1]
800779e: 404b eors r3, r1
80077a0: 490a ldr r1, [pc, #40] ; (80077cc <Crc16+0x54>)
80077a2: f831 3013 ldrh.w r3, [r1, r3, lsl #1]
80077a6: 4053 eors r3, r2
80077a8: 81bb strh r3, [r7, #12]
for(i = 0; i < len; i++) {
80077aa: 89fb ldrh r3, [r7, #14]
80077ac: 3301 adds r3, #1
80077ae: 81fb strh r3, [r7, #14]
80077b0: 89fa ldrh r2, [r7, #14]
80077b2: 88fb ldrh r3, [r7, #6]
80077b4: 429a cmp r2, r3
80077b6: d3ea bcc.n 800778e <Crc16+0x16>
}
return crc;
80077b8: 89bb ldrh r3, [r7, #12]
}
80077ba: 4618 mov r0, r3
80077bc: 3714 adds r7, #20
80077be: 46bd mov sp, r7
80077c0: f85d 7b04 ldr.w r7, [sp], #4
80077c4: 4770 bx lr
80077c6: bf00 nop
80077c8: 2006bccc .word 0x2006bccc
80077cc: 0800fdd0 .word 0x0800fdd0
080077d0 <Crc16_RX>:
uint16_t Crc16_RX(uint16_t len)
{
80077d0: b480 push {r7}
80077d2: b085 sub sp, #20
80077d4: af00 add r7, sp, #0
80077d6: 4603 mov r3, r0
80077d8: 80fb strh r3, [r7, #6]
uint16_t i;
uint16_t crc = 0xFFFF;
80077da: f64f 73ff movw r3, #65535 ; 0xffff
80077de: 81bb strh r3, [r7, #12]
for(i = 0; i < len; i++) {
80077e0: 2300 movs r3, #0
80077e2: 81fb strh r3, [r7, #14]
80077e4: e010 b.n 8007808 <Crc16_RX+0x38>
crc = (crc >> 8) ^ Crc16Table[(crc & 0xFF) ^ rx[i]];
80077e6: 89bb ldrh r3, [r7, #12]
80077e8: 0a1b lsrs r3, r3, #8
80077ea: b29a uxth r2, r3
80077ec: 89bb ldrh r3, [r7, #12]
80077ee: b2db uxtb r3, r3
80077f0: 89f9 ldrh r1, [r7, #14]
80077f2: 480b ldr r0, [pc, #44] ; (8007820 <Crc16_RX+0x50>)
80077f4: 5c41 ldrb r1, [r0, r1]
80077f6: 404b eors r3, r1
80077f8: 490a ldr r1, [pc, #40] ; (8007824 <Crc16_RX+0x54>)
80077fa: f831 3013 ldrh.w r3, [r1, r3, lsl #1]
80077fe: 4053 eors r3, r2
8007800: 81bb strh r3, [r7, #12]
for(i = 0; i < len; i++) {
8007802: 89fb ldrh r3, [r7, #14]
8007804: 3301 adds r3, #1
8007806: 81fb strh r3, [r7, #14]
8007808: 89fa ldrh r2, [r7, #14]
800780a: 88fb ldrh r3, [r7, #6]
800780c: 429a cmp r2, r3
800780e: d3ea bcc.n 80077e6 <Crc16_RX+0x16>
}
return crc;
8007810: 89bb ldrh r3, [r7, #12]
}
8007812: 4618 mov r0, r3
8007814: 3714 adds r7, #20
8007816: 46bd mov sp, r7
8007818: f85d 7b04 ldr.w r7, [sp], #4
800781c: 4770 bx lr
800781e: bf00 nop
8007820: 2006bbc4 .word 0x2006bbc4
8007824: 0800fdd0 .word 0x0800fdd0
08007828 <HAL_UART_TxCpltCallback>:
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
8007828: b580 push {r7, lr}
800782a: b082 sub sp, #8
800782c: af00 add r7, sp, #0
800782e: 6078 str r0, [r7, #4]
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8007830: 2200 movs r2, #0
8007832: f44f 7100 mov.w r1, #512 ; 0x200
8007836: 4805 ldr r0, [pc, #20] ; (800784c <HAL_UART_TxCpltCallback+0x24>)
8007838: f001 ff2c bl 8009694 <HAL_GPIO_WritePin>
TX_OK = true;
800783c: 4b04 ldr r3, [pc, #16] ; (8007850 <HAL_UART_TxCpltCallback+0x28>)
800783e: 2201 movs r2, #1
8007840: 701a strb r2, [r3, #0]
}
8007842: bf00 nop
8007844: 3708 adds r7, #8
8007846: 46bd mov sp, r7
8007848: bd80 pop {r7, pc}
800784a: bf00 nop
800784c: 40021400 .word 0x40021400
8007850: 2006b1e4 .word 0x2006b1e4
08007854 <HAL_UART_RxCpltCallback>:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
8007854: b480 push {r7}
8007856: b083 sub sp, #12
8007858: af00 add r7, sp, #0
800785a: 6078 str r0, [r7, #4]
RX_OK = true;
800785c: 4b04 ldr r3, [pc, #16] ; (8007870 <HAL_UART_RxCpltCallback+0x1c>)
800785e: 2201 movs r2, #1
8007860: 701a strb r2, [r3, #0]
}
8007862: bf00 nop
8007864: 370c adds r7, #12
8007866: 46bd mov sp, r7
8007868: f85d 7b04 ldr.w r7, [sp], #4
800786c: 4770 bx lr
800786e: bf00 nop
8007870: 2006b1e5 .word 0x2006b1e5
08007874 <HAL_UART_ErrorCallback>:
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
8007874: b580 push {r7, lr}
8007876: b082 sub sp, #8
8007878: af00 add r7, sp, #0
800787a: 6078 str r0, [r7, #4]
RX_OK = TX_OK = false;
800787c: 2100 movs r1, #0
800787e: 4b0b ldr r3, [pc, #44] ; (80078ac <HAL_UART_ErrorCallback+0x38>)
8007880: 460a mov r2, r1
8007882: 701a strb r2, [r3, #0]
8007884: 4b0a ldr r3, [pc, #40] ; (80078b0 <HAL_UART_ErrorCallback+0x3c>)
8007886: 460a mov r2, r1
8007888: 701a strb r2, [r3, #0]
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
800788a: 2200 movs r2, #0
800788c: f44f 7100 mov.w r1, #512 ; 0x200
8007890: 4808 ldr r0, [pc, #32] ; (80078b4 <HAL_UART_ErrorCallback+0x40>)
8007892: f001 feff bl 8009694 <HAL_GPIO_WritePin>
HAL_UART_Abort_IT(&huart7);
8007896: 4808 ldr r0, [pc, #32] ; (80078b8 <HAL_UART_ErrorCallback+0x44>)
8007898: f004 f898 bl 800b9cc <HAL_UART_Abort_IT>
UART_ERROR = true;
800789c: 4b07 ldr r3, [pc, #28] ; (80078bc <HAL_UART_ErrorCallback+0x48>)
800789e: 2201 movs r2, #1
80078a0: 701a strb r2, [r3, #0]
}
80078a2: bf00 nop
80078a4: 3708 adds r7, #8
80078a6: 46bd mov sp, r7
80078a8: bd80 pop {r7, pc}
80078aa: bf00 nop
80078ac: 2006b1e4 .word 0x2006b1e4
80078b0: 2006b1e5 .word 0x2006b1e5
80078b4: 40021400 .word 0x40021400
80078b8: 2006bb3c .word 0x2006bb3c
80078bc: 2006b1e3 .word 0x2006b1e3
080078c0 <ReadChannel>:
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
int8_t ReadChannel(uint8_t ch)
{
80078c0: b580 push {r7, lr}
80078c2: b086 sub sp, #24
80078c4: af00 add r7, sp, #0
80078c6: 4603 mov r3, r0
80078c8: 71fb strb r3, [r7, #7]
int8_t res = -1;
80078ca: 23ff movs r3, #255 ; 0xff
80078cc: 75fb strb r3, [r7, #23]
uint16_t i, len = 0, cnt = 0;
80078ce: 2300 movs r3, #0
80078d0: 82bb strh r3, [r7, #20]
80078d2: 2300 movs r3, #0
80078d4: 827b strh r3, [r7, #18]
uint16_t crc;
__IO uint32_t timeout;
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_ORE))
80078d6: 4b5b ldr r3, [pc, #364] ; (8007a44 <ReadChannel+0x184>)
80078d8: 681b ldr r3, [r3, #0]
80078da: 69db ldr r3, [r3, #28]
80078dc: f003 0308 and.w r3, r3, #8
80078e0: 2b08 cmp r3, #8
80078e2: d103 bne.n 80078ec <ReadChannel+0x2c>
__HAL_UART_CLEAR_OREFLAG(&huart7);
80078e4: 4b57 ldr r3, [pc, #348] ; (8007a44 <ReadChannel+0x184>)
80078e6: 681b ldr r3, [r3, #0]
80078e8: 2208 movs r2, #8
80078ea: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_PE))
80078ec: 4b55 ldr r3, [pc, #340] ; (8007a44 <ReadChannel+0x184>)
80078ee: 681b ldr r3, [r3, #0]
80078f0: 69db ldr r3, [r3, #28]
80078f2: f003 0301 and.w r3, r3, #1
80078f6: 2b01 cmp r3, #1
80078f8: d103 bne.n 8007902 <ReadChannel+0x42>
__HAL_UART_CLEAR_PEFLAG(&huart7);
80078fa: 4b52 ldr r3, [pc, #328] ; (8007a44 <ReadChannel+0x184>)
80078fc: 681b ldr r3, [r3, #0]
80078fe: 2201 movs r2, #1
8007900: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_FE))
8007902: 4b50 ldr r3, [pc, #320] ; (8007a44 <ReadChannel+0x184>)
8007904: 681b ldr r3, [r3, #0]
8007906: 69db ldr r3, [r3, #28]
8007908: f003 0302 and.w r3, r3, #2
800790c: 2b02 cmp r3, #2
800790e: d103 bne.n 8007918 <ReadChannel+0x58>
__HAL_UART_CLEAR_FEFLAG(&huart7);
8007910: 4b4c ldr r3, [pc, #304] ; (8007a44 <ReadChannel+0x184>)
8007912: 681b ldr r3, [r3, #0]
8007914: 2202 movs r2, #2
8007916: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_NE))
8007918: 4b4a ldr r3, [pc, #296] ; (8007a44 <ReadChannel+0x184>)
800791a: 681b ldr r3, [r3, #0]
800791c: 69db ldr r3, [r3, #28]
800791e: f003 0304 and.w r3, r3, #4
8007922: 2b04 cmp r3, #4
8007924: d103 bne.n 800792e <ReadChannel+0x6e>
__HAL_UART_CLEAR_NEFLAG(&huart7);
8007926: 4b47 ldr r3, [pc, #284] ; (8007a44 <ReadChannel+0x184>)
8007928: 681b ldr r3, [r3, #0]
800792a: 2204 movs r2, #4
800792c: 621a str r2, [r3, #32]
HAL_Delay(20);
800792e: 2014 movs r0, #20
8007930: f000 feca bl 80086c8 <HAL_Delay>
TX_OK = RX_OK = UART_ERROR = false;
8007934: 2200 movs r2, #0
8007936: 4b44 ldr r3, [pc, #272] ; (8007a48 <ReadChannel+0x188>)
8007938: 4611 mov r1, r2
800793a: 7019 strb r1, [r3, #0]
800793c: 4b43 ldr r3, [pc, #268] ; (8007a4c <ReadChannel+0x18c>)
800793e: 4611 mov r1, r2
8007940: 7019 strb r1, [r3, #0]
8007942: 4b43 ldr r3, [pc, #268] ; (8007a50 <ReadChannel+0x190>)
8007944: 701a strb r2, [r3, #0]
len = 0;
8007946: 2300 movs r3, #0
8007948: 82bb strh r3, [r7, #20]
iobuf[len++] = ch + 1;
800794a: 8abb ldrh r3, [r7, #20]
800794c: 1c5a adds r2, r3, #1
800794e: 82ba strh r2, [r7, #20]
8007950: 461a mov r2, r3
8007952: 79fb ldrb r3, [r7, #7]
8007954: 3301 adds r3, #1
8007956: b2d9 uxtb r1, r3
8007958: 4b3e ldr r3, [pc, #248] ; (8007a54 <ReadChannel+0x194>)
800795a: 5499 strb r1, [r3, r2]
iobuf[len++] = 0x03;
800795c: 8abb ldrh r3, [r7, #20]
800795e: 1c5a adds r2, r3, #1
8007960: 82ba strh r2, [r7, #20]
8007962: 461a mov r2, r3
8007964: 4b3b ldr r3, [pc, #236] ; (8007a54 <ReadChannel+0x194>)
8007966: 2103 movs r1, #3
8007968: 5499 strb r1, [r3, r2]
iobuf[len++] = HI(5001);
800796a: 8abb ldrh r3, [r7, #20]
800796c: 1c5a adds r2, r3, #1
800796e: 82ba strh r2, [r7, #20]
8007970: 461a mov r2, r3
8007972: 4b38 ldr r3, [pc, #224] ; (8007a54 <ReadChannel+0x194>)
8007974: 2113 movs r1, #19
8007976: 5499 strb r1, [r3, r2]
iobuf[len++] = LO(5001);
8007978: 8abb ldrh r3, [r7, #20]
800797a: 1c5a adds r2, r3, #1
800797c: 82ba strh r2, [r7, #20]
800797e: 461a mov r2, r3
8007980: 4b34 ldr r3, [pc, #208] ; (8007a54 <ReadChannel+0x194>)
8007982: 2189 movs r1, #137 ; 0x89
8007984: 5499 strb r1, [r3, r2]
iobuf[len++] = 0; //
8007986: 8abb ldrh r3, [r7, #20]
8007988: 1c5a adds r2, r3, #1
800798a: 82ba strh r2, [r7, #20]
800798c: 461a mov r2, r3
800798e: 4b31 ldr r3, [pc, #196] ; (8007a54 <ReadChannel+0x194>)
8007990: 2100 movs r1, #0
8007992: 5499 strb r1, [r3, r2]
iobuf[len++] = 9; // IIN,IFV,IFN,IKU,IKE,IKD,IKS
8007994: 8abb ldrh r3, [r7, #20]
8007996: 1c5a adds r2, r3, #1
8007998: 82ba strh r2, [r7, #20]
800799a: 461a mov r2, r3
800799c: 4b2d ldr r3, [pc, #180] ; (8007a54 <ReadChannel+0x194>)
800799e: 2109 movs r1, #9
80079a0: 5499 strb r1, [r3, r2]
crc = Crc16(len);
80079a2: 8abb ldrh r3, [r7, #20]
80079a4: 4618 mov r0, r3
80079a6: f7ff fee7 bl 8007778 <Crc16>
80079aa: 4603 mov r3, r0
80079ac: 823b strh r3, [r7, #16]
iobuf[len++] = LO(crc);
80079ae: 8abb ldrh r3, [r7, #20]
80079b0: 1c5a adds r2, r3, #1
80079b2: 82ba strh r2, [r7, #20]
80079b4: 461a mov r2, r3
80079b6: 8a3b ldrh r3, [r7, #16]
80079b8: b2d9 uxtb r1, r3
80079ba: 4b26 ldr r3, [pc, #152] ; (8007a54 <ReadChannel+0x194>)
80079bc: 5499 strb r1, [r3, r2]
iobuf[len++] = HI(crc);
80079be: 8abb ldrh r3, [r7, #20]
80079c0: 1c5a adds r2, r3, #1
80079c2: 82ba strh r2, [r7, #20]
80079c4: 461a mov r2, r3
80079c6: 8a3b ldrh r3, [r7, #16]
80079c8: 0a1b lsrs r3, r3, #8
80079ca: b29b uxth r3, r3
80079cc: b2d9 uxtb r1, r3
80079ce: 4b21 ldr r3, [pc, #132] ; (8007a54 <ReadChannel+0x194>)
80079d0: 5499 strb r1, [r3, r2]
timeout = HAL_GetTick();
80079d2: f000 fe6d bl 80086b0 <HAL_GetTick>
80079d6: 4603 mov r3, r0
80079d8: 60fb str r3, [r7, #12]
//HAL_UART_Receive_IT(&huart7, rx, 23);
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_SET);
80079da: 2201 movs r2, #1
80079dc: f44f 7100 mov.w r1, #512 ; 0x200
80079e0: 481d ldr r0, [pc, #116] ; (8007a58 <ReadChannel+0x198>)
80079e2: f001 fe57 bl 8009694 <HAL_GPIO_WritePin>
if(HAL_UART_Transmit_IT(&huart7, iobuf, len) == HAL_OK)
80079e6: 8abb ldrh r3, [r7, #20]
80079e8: 461a mov r2, r3
80079ea: 491a ldr r1, [pc, #104] ; (8007a54 <ReadChannel+0x194>)
80079ec: 4815 ldr r0, [pc, #84] ; (8007a44 <ReadChannel+0x184>)
80079ee: f003 ff7f bl 800b8f0 <HAL_UART_Transmit_IT>
80079f2: 4603 mov r3, r0
80079f4: 2b00 cmp r3, #0
80079f6: f040 8100 bne.w 8007bfa <ReadChannel+0x33a>
{
while((!TX_OK) && (HAL_GetTick() - timeout < 50));
80079fa: bf00 nop
80079fc: 4b14 ldr r3, [pc, #80] ; (8007a50 <ReadChannel+0x190>)
80079fe: 781b ldrb r3, [r3, #0]
8007a00: b2db uxtb r3, r3
8007a02: f083 0301 eor.w r3, r3, #1
8007a06: b2db uxtb r3, r3
8007a08: 2b00 cmp r3, #0
8007a0a: d006 beq.n 8007a1a <ReadChannel+0x15a>
8007a0c: f000 fe50 bl 80086b0 <HAL_GetTick>
8007a10: 4602 mov r2, r0
8007a12: 68fb ldr r3, [r7, #12]
8007a14: 1ad3 subs r3, r2, r3
8007a16: 2b31 cmp r3, #49 ; 0x31
8007a18: d9f0 bls.n 80079fc <ReadChannel+0x13c>
if(!TX_OK)
8007a1a: 4b0d ldr r3, [pc, #52] ; (8007a50 <ReadChannel+0x190>)
8007a1c: 781b ldrb r3, [r3, #0]
8007a1e: b2db uxtb r3, r3
8007a20: f083 0301 eor.w r3, r3, #1
8007a24: b2db uxtb r3, r3
8007a26: 2b00 cmp r3, #0
8007a28: d018 beq.n 8007a5c <ReadChannel+0x19c>
{
HAL_UART_Abort_IT(&huart7);
8007a2a: 4806 ldr r0, [pc, #24] ; (8007a44 <ReadChannel+0x184>)
8007a2c: f003 ffce bl 800b9cc <HAL_UART_Abort_IT>
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8007a30: 2200 movs r2, #0
8007a32: f44f 7100 mov.w r1, #512 ; 0x200
8007a36: 4808 ldr r0, [pc, #32] ; (8007a58 <ReadChannel+0x198>)
8007a38: f001 fe2c bl 8009694 <HAL_GPIO_WritePin>
return (-1);
8007a3c: f04f 33ff mov.w r3, #4294967295
8007a40: e0dd b.n 8007bfe <ReadChannel+0x33e>
8007a42: bf00 nop
8007a44: 2006bb3c .word 0x2006bb3c
8007a48: 2006b1e3 .word 0x2006b1e3
8007a4c: 2006b1e5 .word 0x2006b1e5
8007a50: 2006b1e4 .word 0x2006b1e4
8007a54: 2006bccc .word 0x2006bccc
8007a58: 40021400 .word 0x40021400
}
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8007a5c: 2200 movs r2, #0
8007a5e: f44f 7100 mov.w r1, #512 ; 0x200
8007a62: 4869 ldr r0, [pc, #420] ; (8007c08 <ReadChannel+0x348>)
8007a64: f001 fe16 bl 8009694 <HAL_GPIO_WritePin>
HAL_UART_Receive(&huart7, rx, 1, 100); // пустой байт
8007a68: 2364 movs r3, #100 ; 0x64
8007a6a: 2201 movs r2, #1
8007a6c: 4967 ldr r1, [pc, #412] ; (8007c0c <ReadChannel+0x34c>)
8007a6e: 4868 ldr r0, [pc, #416] ; (8007c10 <ReadChannel+0x350>)
8007a70: f003 fe6e bl 800b750 <HAL_UART_Receive>
//while((!RX_OK) && (HAL_GetTick() - timeout < 500));
if(HAL_UART_Receive(&huart7, rx, 23, 100) == HAL_OK)
8007a74: 2364 movs r3, #100 ; 0x64
8007a76: 2217 movs r2, #23
8007a78: 4964 ldr r1, [pc, #400] ; (8007c0c <ReadChannel+0x34c>)
8007a7a: 4865 ldr r0, [pc, #404] ; (8007c10 <ReadChannel+0x350>)
8007a7c: f003 fe68 bl 800b750 <HAL_UART_Receive>
8007a80: 4603 mov r3, r0
8007a82: 2b00 cmp r3, #0
8007a84: f040 80b0 bne.w 8007be8 <ReadChannel+0x328>
{
crc = (uint16_t) ((rx[22]) << 8 | rx[21]);
8007a88: 4b60 ldr r3, [pc, #384] ; (8007c0c <ReadChannel+0x34c>)
8007a8a: 7d9b ldrb r3, [r3, #22]
8007a8c: 021b lsls r3, r3, #8
8007a8e: b21a sxth r2, r3
8007a90: 4b5e ldr r3, [pc, #376] ; (8007c0c <ReadChannel+0x34c>)
8007a92: 7d5b ldrb r3, [r3, #21]
8007a94: b21b sxth r3, r3
8007a96: 4313 orrs r3, r2
8007a98: b21b sxth r3, r3
8007a9a: 823b strh r3, [r7, #16]
if(crc == Crc16_RX(21))
8007a9c: 2015 movs r0, #21
8007a9e: f7ff fe97 bl 80077d0 <Crc16_RX>
8007aa2: 4603 mov r3, r0
8007aa4: 461a mov r2, r3
8007aa6: 8a3b ldrh r3, [r7, #16]
8007aa8: 4293 cmp r3, r2
8007aaa: f040 809a bne.w 8007be2 <ReadChannel+0x322>
{
pardata.amplif[ch].IIN = (uint16_t) ((rx[3]) << 8 | rx[4]);
8007aae: 79fb ldrb r3, [r7, #7]
8007ab0: 4a56 ldr r2, [pc, #344] ; (8007c0c <ReadChannel+0x34c>)
8007ab2: 78d2 ldrb r2, [r2, #3]
8007ab4: 0212 lsls r2, r2, #8
8007ab6: b211 sxth r1, r2
8007ab8: 4a54 ldr r2, [pc, #336] ; (8007c0c <ReadChannel+0x34c>)
8007aba: 7912 ldrb r2, [r2, #4]
8007abc: b212 sxth r2, r2
8007abe: 430a orrs r2, r1
8007ac0: b212 sxth r2, r2
8007ac2: b291 uxth r1, r2
8007ac4: 4a53 ldr r2, [pc, #332] ; (8007c14 <ReadChannel+0x354>)
8007ac6: 015b lsls r3, r3, #5
8007ac8: 4413 add r3, r2
8007aca: 460a mov r2, r1
8007acc: 801a strh r2, [r3, #0]
pardata.amplif[ch].IFV = (uint16_t) ((rx[5]) << 8 | rx[6]);
8007ace: 79fb ldrb r3, [r7, #7]
8007ad0: 4a4e ldr r2, [pc, #312] ; (8007c0c <ReadChannel+0x34c>)
8007ad2: 7952 ldrb r2, [r2, #5]
8007ad4: 0212 lsls r2, r2, #8
8007ad6: b211 sxth r1, r2
8007ad8: 4a4c ldr r2, [pc, #304] ; (8007c0c <ReadChannel+0x34c>)
8007ada: 7992 ldrb r2, [r2, #6]
8007adc: b212 sxth r2, r2
8007ade: 430a orrs r2, r1
8007ae0: b212 sxth r2, r2
8007ae2: b291 uxth r1, r2
8007ae4: 4a4b ldr r2, [pc, #300] ; (8007c14 <ReadChannel+0x354>)
8007ae6: 015b lsls r3, r3, #5
8007ae8: 4413 add r3, r2
8007aea: 3302 adds r3, #2
8007aec: 460a mov r2, r1
8007aee: 801a strh r2, [r3, #0]
pardata.amplif[ch].IFN = (uint16_t) ((rx[7]) << 8 | rx[8]);
8007af0: 79fb ldrb r3, [r7, #7]
8007af2: 4a46 ldr r2, [pc, #280] ; (8007c0c <ReadChannel+0x34c>)
8007af4: 79d2 ldrb r2, [r2, #7]
8007af6: 0212 lsls r2, r2, #8
8007af8: b211 sxth r1, r2
8007afa: 4a44 ldr r2, [pc, #272] ; (8007c0c <ReadChannel+0x34c>)
8007afc: 7a12 ldrb r2, [r2, #8]
8007afe: b212 sxth r2, r2
8007b00: 430a orrs r2, r1
8007b02: b212 sxth r2, r2
8007b04: b291 uxth r1, r2
8007b06: 4a43 ldr r2, [pc, #268] ; (8007c14 <ReadChannel+0x354>)
8007b08: 015b lsls r3, r3, #5
8007b0a: 4413 add r3, r2
8007b0c: 3304 adds r3, #4
8007b0e: 460a mov r2, r1
8007b10: 801a strh r2, [r3, #0]
pardata.amplif[ch].IKU = (uint16_t) ((rx[9]) << 8 | rx[10]);
8007b12: 79fb ldrb r3, [r7, #7]
8007b14: 4a3d ldr r2, [pc, #244] ; (8007c0c <ReadChannel+0x34c>)
8007b16: 7a52 ldrb r2, [r2, #9]
8007b18: 0212 lsls r2, r2, #8
8007b1a: b211 sxth r1, r2
8007b1c: 4a3b ldr r2, [pc, #236] ; (8007c0c <ReadChannel+0x34c>)
8007b1e: 7a92 ldrb r2, [r2, #10]
8007b20: b212 sxth r2, r2
8007b22: 430a orrs r2, r1
8007b24: b212 sxth r2, r2
8007b26: b291 uxth r1, r2
8007b28: 4a3a ldr r2, [pc, #232] ; (8007c14 <ReadChannel+0x354>)
8007b2a: 015b lsls r3, r3, #5
8007b2c: 4413 add r3, r2
8007b2e: 3306 adds r3, #6
8007b30: 460a mov r2, r1
8007b32: 801a strh r2, [r3, #0]
pardata.amplif[ch].IKE = (uint16_t) ((rx[11]) << 8 | rx[12]);
8007b34: 79fb ldrb r3, [r7, #7]
8007b36: 4a35 ldr r2, [pc, #212] ; (8007c0c <ReadChannel+0x34c>)
8007b38: 7ad2 ldrb r2, [r2, #11]
8007b3a: 0212 lsls r2, r2, #8
8007b3c: b211 sxth r1, r2
8007b3e: 4a33 ldr r2, [pc, #204] ; (8007c0c <ReadChannel+0x34c>)
8007b40: 7b12 ldrb r2, [r2, #12]
8007b42: b212 sxth r2, r2
8007b44: 430a orrs r2, r1
8007b46: b212 sxth r2, r2
8007b48: b291 uxth r1, r2
8007b4a: 4a32 ldr r2, [pc, #200] ; (8007c14 <ReadChannel+0x354>)
8007b4c: 015b lsls r3, r3, #5
8007b4e: 4413 add r3, r2
8007b50: 3308 adds r3, #8
8007b52: 460a mov r2, r1
8007b54: 801a strh r2, [r3, #0]
pardata.amplif[ch].IKD = (uint16_t) ((rx[13]) << 8 | rx[14]);
8007b56: 79fb ldrb r3, [r7, #7]
8007b58: 4a2c ldr r2, [pc, #176] ; (8007c0c <ReadChannel+0x34c>)
8007b5a: 7b52 ldrb r2, [r2, #13]
8007b5c: 0212 lsls r2, r2, #8
8007b5e: b211 sxth r1, r2
8007b60: 4a2a ldr r2, [pc, #168] ; (8007c0c <ReadChannel+0x34c>)
8007b62: 7b92 ldrb r2, [r2, #14]
8007b64: b212 sxth r2, r2
8007b66: 430a orrs r2, r1
8007b68: b212 sxth r2, r2
8007b6a: b291 uxth r1, r2
8007b6c: 4a29 ldr r2, [pc, #164] ; (8007c14 <ReadChannel+0x354>)
8007b6e: 015b lsls r3, r3, #5
8007b70: 4413 add r3, r2
8007b72: 330a adds r3, #10
8007b74: 460a mov r2, r1
8007b76: 801a strh r2, [r3, #0]
pardata.amplif[ch].IKS = (uint16_t) ((rx[15]) << 8 | rx[16]);
8007b78: 79fb ldrb r3, [r7, #7]
8007b7a: 4a24 ldr r2, [pc, #144] ; (8007c0c <ReadChannel+0x34c>)
8007b7c: 7bd2 ldrb r2, [r2, #15]
8007b7e: 0212 lsls r2, r2, #8
8007b80: b211 sxth r1, r2
8007b82: 4a22 ldr r2, [pc, #136] ; (8007c0c <ReadChannel+0x34c>)
8007b84: 7c12 ldrb r2, [r2, #16]
8007b86: b212 sxth r2, r2
8007b88: 430a orrs r2, r1
8007b8a: b212 sxth r2, r2
8007b8c: b291 uxth r1, r2
8007b8e: 4a21 ldr r2, [pc, #132] ; (8007c14 <ReadChannel+0x354>)
8007b90: 015b lsls r3, r3, #5
8007b92: 4413 add r3, r2
8007b94: 330c adds r3, #12
8007b96: 460a mov r2, r1
8007b98: 801a strh r2, [r3, #0]
pardata.amplif[ch].IPZ = (uint16_t) ((rx[17]) << 8 | rx[18]);
8007b9a: 79fb ldrb r3, [r7, #7]
8007b9c: 4a1b ldr r2, [pc, #108] ; (8007c0c <ReadChannel+0x34c>)
8007b9e: 7c52 ldrb r2, [r2, #17]
8007ba0: 0212 lsls r2, r2, #8
8007ba2: b211 sxth r1, r2
8007ba4: 4a19 ldr r2, [pc, #100] ; (8007c0c <ReadChannel+0x34c>)
8007ba6: 7c92 ldrb r2, [r2, #18]
8007ba8: b212 sxth r2, r2
8007baa: 430a orrs r2, r1
8007bac: b212 sxth r2, r2
8007bae: b291 uxth r1, r2
8007bb0: 4a18 ldr r2, [pc, #96] ; (8007c14 <ReadChannel+0x354>)
8007bb2: 015b lsls r3, r3, #5
8007bb4: 4413 add r3, r2
8007bb6: 330e adds r3, #14
8007bb8: 460a mov r2, r1
8007bba: 801a strh r2, [r3, #0]
pardata.amplif[ch].OPZ = (uint16_t) ((rx[19]) << 8 | rx[20]);
8007bbc: 79fb ldrb r3, [r7, #7]
8007bbe: 4a13 ldr r2, [pc, #76] ; (8007c0c <ReadChannel+0x34c>)
8007bc0: 7cd2 ldrb r2, [r2, #19]
8007bc2: 0212 lsls r2, r2, #8
8007bc4: b211 sxth r1, r2
8007bc6: 4a11 ldr r2, [pc, #68] ; (8007c0c <ReadChannel+0x34c>)
8007bc8: 7d12 ldrb r2, [r2, #20]
8007bca: b212 sxth r2, r2
8007bcc: 430a orrs r2, r1
8007bce: b212 sxth r2, r2
8007bd0: b291 uxth r1, r2
8007bd2: 4a10 ldr r2, [pc, #64] ; (8007c14 <ReadChannel+0x354>)
8007bd4: 015b lsls r3, r3, #5
8007bd6: 4413 add r3, r2
8007bd8: 3310 adds r3, #16
8007bda: 460a mov r2, r1
8007bdc: 801a strh r2, [r3, #0]
return 0;
8007bde: 2300 movs r3, #0
8007be0: e00d b.n 8007bfe <ReadChannel+0x33e>
}
else
{
return (-1);
8007be2: f04f 33ff mov.w r3, #4294967295
8007be6: e00a b.n 8007bfe <ReadChannel+0x33e>
}
}
else
{
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8007be8: 2200 movs r2, #0
8007bea: f44f 7100 mov.w r1, #512 ; 0x200
8007bee: 4806 ldr r0, [pc, #24] ; (8007c08 <ReadChannel+0x348>)
8007bf0: f001 fd50 bl 8009694 <HAL_GPIO_WritePin>
return (-1);
8007bf4: f04f 33ff mov.w r3, #4294967295
8007bf8: e001 b.n 8007bfe <ReadChannel+0x33e>
}
}
return res;
8007bfa: f997 3017 ldrsb.w r3, [r7, #23]
}
8007bfe: 4618 mov r0, r3
8007c00: 3718 adds r7, #24
8007c02: 46bd mov sp, r7
8007c04: bd80 pop {r7, pc}
8007c06: bf00 nop
8007c08: 40021400 .word 0x40021400
8007c0c: 2006bbc4 .word 0x2006bbc4
8007c10: 2006bb3c .word 0x2006bb3c
8007c14: 2006b3f8 .word 0x2006b3f8
08007c18 <WriteChannel>:
int8_t WriteChannel(uint8_t ch)
{
8007c18: b580 push {r7, lr}
8007c1a: b086 sub sp, #24
8007c1c: af00 add r7, sp, #0
8007c1e: 4603 mov r3, r0
8007c20: 71fb strb r3, [r7, #7]
int8_t res = -1;
8007c22: 23ff movs r3, #255 ; 0xff
8007c24: 75fb strb r3, [r7, #23]
uint16_t i, len = 0;
8007c26: 2300 movs r3, #0
8007c28: 82bb strh r3, [r7, #20]
uint16_t crc;
__IO uint32_t timeout;
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_ORE))
8007c2a: 4ba9 ldr r3, [pc, #676] ; (8007ed0 <WriteChannel+0x2b8>)
8007c2c: 681b ldr r3, [r3, #0]
8007c2e: 69db ldr r3, [r3, #28]
8007c30: f003 0308 and.w r3, r3, #8
8007c34: 2b08 cmp r3, #8
8007c36: d103 bne.n 8007c40 <WriteChannel+0x28>
__HAL_UART_CLEAR_OREFLAG(&huart7);
8007c38: 4ba5 ldr r3, [pc, #660] ; (8007ed0 <WriteChannel+0x2b8>)
8007c3a: 681b ldr r3, [r3, #0]
8007c3c: 2208 movs r2, #8
8007c3e: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_PE))
8007c40: 4ba3 ldr r3, [pc, #652] ; (8007ed0 <WriteChannel+0x2b8>)
8007c42: 681b ldr r3, [r3, #0]
8007c44: 69db ldr r3, [r3, #28]
8007c46: f003 0301 and.w r3, r3, #1
8007c4a: 2b01 cmp r3, #1
8007c4c: d103 bne.n 8007c56 <WriteChannel+0x3e>
__HAL_UART_CLEAR_PEFLAG(&huart7);
8007c4e: 4ba0 ldr r3, [pc, #640] ; (8007ed0 <WriteChannel+0x2b8>)
8007c50: 681b ldr r3, [r3, #0]
8007c52: 2201 movs r2, #1
8007c54: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_FE))
8007c56: 4b9e ldr r3, [pc, #632] ; (8007ed0 <WriteChannel+0x2b8>)
8007c58: 681b ldr r3, [r3, #0]
8007c5a: 69db ldr r3, [r3, #28]
8007c5c: f003 0302 and.w r3, r3, #2
8007c60: 2b02 cmp r3, #2
8007c62: d103 bne.n 8007c6c <WriteChannel+0x54>
__HAL_UART_CLEAR_FEFLAG(&huart7);
8007c64: 4b9a ldr r3, [pc, #616] ; (8007ed0 <WriteChannel+0x2b8>)
8007c66: 681b ldr r3, [r3, #0]
8007c68: 2202 movs r2, #2
8007c6a: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_NE))
8007c6c: 4b98 ldr r3, [pc, #608] ; (8007ed0 <WriteChannel+0x2b8>)
8007c6e: 681b ldr r3, [r3, #0]
8007c70: 69db ldr r3, [r3, #28]
8007c72: f003 0304 and.w r3, r3, #4
8007c76: 2b04 cmp r3, #4
8007c78: d103 bne.n 8007c82 <WriteChannel+0x6a>
__HAL_UART_CLEAR_NEFLAG(&huart7);
8007c7a: 4b95 ldr r3, [pc, #596] ; (8007ed0 <WriteChannel+0x2b8>)
8007c7c: 681b ldr r3, [r3, #0]
8007c7e: 2204 movs r2, #4
8007c80: 621a str r2, [r3, #32]
HAL_Delay(20);
8007c82: 2014 movs r0, #20
8007c84: f000 fd20 bl 80086c8 <HAL_Delay>
TX_OK = RX_OK = UART_ERROR = false;
8007c88: 2200 movs r2, #0
8007c8a: 4b92 ldr r3, [pc, #584] ; (8007ed4 <WriteChannel+0x2bc>)
8007c8c: 4611 mov r1, r2
8007c8e: 7019 strb r1, [r3, #0]
8007c90: 4b91 ldr r3, [pc, #580] ; (8007ed8 <WriteChannel+0x2c0>)
8007c92: 4611 mov r1, r2
8007c94: 7019 strb r1, [r3, #0]
8007c96: 4b91 ldr r3, [pc, #580] ; (8007edc <WriteChannel+0x2c4>)
8007c98: 701a strb r2, [r3, #0]
len = 0;
8007c9a: 2300 movs r3, #0
8007c9c: 82bb strh r3, [r7, #20]
iobuf[len++] = ch + 1;
8007c9e: 8abb ldrh r3, [r7, #20]
8007ca0: 1c5a adds r2, r3, #1
8007ca2: 82ba strh r2, [r7, #20]
8007ca4: 461a mov r2, r3
8007ca6: 79fb ldrb r3, [r7, #7]
8007ca8: 3301 adds r3, #1
8007caa: b2d9 uxtb r1, r3
8007cac: 4b8c ldr r3, [pc, #560] ; (8007ee0 <WriteChannel+0x2c8>)
8007cae: 5499 strb r1, [r3, r2]
iobuf[len++] = 0x10;
8007cb0: 8abb ldrh r3, [r7, #20]
8007cb2: 1c5a adds r2, r3, #1
8007cb4: 82ba strh r2, [r7, #20]
8007cb6: 461a mov r2, r3
8007cb8: 4b89 ldr r3, [pc, #548] ; (8007ee0 <WriteChannel+0x2c8>)
8007cba: 2110 movs r1, #16
8007cbc: 5499 strb r1, [r3, r2]
iobuf[len++] = HI(5001);
8007cbe: 8abb ldrh r3, [r7, #20]
8007cc0: 1c5a adds r2, r3, #1
8007cc2: 82ba strh r2, [r7, #20]
8007cc4: 461a mov r2, r3
8007cc6: 4b86 ldr r3, [pc, #536] ; (8007ee0 <WriteChannel+0x2c8>)
8007cc8: 2113 movs r1, #19
8007cca: 5499 strb r1, [r3, r2]
iobuf[len++] = LO(5001);
8007ccc: 8abb ldrh r3, [r7, #20]
8007cce: 1c5a adds r2, r3, #1
8007cd0: 82ba strh r2, [r7, #20]
8007cd2: 461a mov r2, r3
8007cd4: 4b82 ldr r3, [pc, #520] ; (8007ee0 <WriteChannel+0x2c8>)
8007cd6: 2189 movs r1, #137 ; 0x89
8007cd8: 5499 strb r1, [r3, r2]
iobuf[len++] = 0;
8007cda: 8abb ldrh r3, [r7, #20]
8007cdc: 1c5a adds r2, r3, #1
8007cde: 82ba strh r2, [r7, #20]
8007ce0: 461a mov r2, r3
8007ce2: 4b7f ldr r3, [pc, #508] ; (8007ee0 <WriteChannel+0x2c8>)
8007ce4: 2100 movs r1, #0
8007ce6: 5499 strb r1, [r3, r2]
iobuf[len++] = 9;
8007ce8: 8abb ldrh r3, [r7, #20]
8007cea: 1c5a adds r2, r3, #1
8007cec: 82ba strh r2, [r7, #20]
8007cee: 461a mov r2, r3
8007cf0: 4b7b ldr r3, [pc, #492] ; (8007ee0 <WriteChannel+0x2c8>)
8007cf2: 2109 movs r1, #9
8007cf4: 5499 strb r1, [r3, r2]
iobuf[len++] = 18;
8007cf6: 8abb ldrh r3, [r7, #20]
8007cf8: 1c5a adds r2, r3, #1
8007cfa: 82ba strh r2, [r7, #20]
8007cfc: 461a mov r2, r3
8007cfe: 4b78 ldr r3, [pc, #480] ; (8007ee0 <WriteChannel+0x2c8>)
8007d00: 2112 movs r1, #18
8007d02: 5499 strb r1, [r3, r2]
iobuf[len++] = 0;
8007d04: 8abb ldrh r3, [r7, #20]
8007d06: 1c5a adds r2, r3, #1
8007d08: 82ba strh r2, [r7, #20]
8007d0a: 461a mov r2, r3
8007d0c: 4b74 ldr r3, [pc, #464] ; (8007ee0 <WriteChannel+0x2c8>)
8007d0e: 2100 movs r1, #0
8007d10: 5499 strb r1, [r3, r2]
iobuf[len++] = pardata.amplif[ch].IIN;
8007d12: 8abb ldrh r3, [r7, #20]
8007d14: 1c5a adds r2, r3, #1
8007d16: 82ba strh r2, [r7, #20]
8007d18: 4619 mov r1, r3
8007d1a: 79fb ldrb r3, [r7, #7]
8007d1c: 4a71 ldr r2, [pc, #452] ; (8007ee4 <WriteChannel+0x2cc>)
8007d1e: 015b lsls r3, r3, #5
8007d20: 4413 add r3, r2
8007d22: 881b ldrh r3, [r3, #0]
8007d24: b29b uxth r3, r3
8007d26: b2da uxtb r2, r3
8007d28: 4b6d ldr r3, [pc, #436] ; (8007ee0 <WriteChannel+0x2c8>)
8007d2a: 545a strb r2, [r3, r1]
iobuf[len++] = 0;
8007d2c: 8abb ldrh r3, [r7, #20]
8007d2e: 1c5a adds r2, r3, #1
8007d30: 82ba strh r2, [r7, #20]
8007d32: 461a mov r2, r3
8007d34: 4b6a ldr r3, [pc, #424] ; (8007ee0 <WriteChannel+0x2c8>)
8007d36: 2100 movs r1, #0
8007d38: 5499 strb r1, [r3, r2]
iobuf[len++] = pardata.amplif[ch].IFV;
8007d3a: 8abb ldrh r3, [r7, #20]
8007d3c: 1c5a adds r2, r3, #1
8007d3e: 82ba strh r2, [r7, #20]
8007d40: 4619 mov r1, r3
8007d42: 79fb ldrb r3, [r7, #7]
8007d44: 4a67 ldr r2, [pc, #412] ; (8007ee4 <WriteChannel+0x2cc>)
8007d46: 015b lsls r3, r3, #5
8007d48: 4413 add r3, r2
8007d4a: 3302 adds r3, #2
8007d4c: 881b ldrh r3, [r3, #0]
8007d4e: b29b uxth r3, r3
8007d50: b2da uxtb r2, r3
8007d52: 4b63 ldr r3, [pc, #396] ; (8007ee0 <WriteChannel+0x2c8>)
8007d54: 545a strb r2, [r3, r1]
iobuf[len++] = 0;
8007d56: 8abb ldrh r3, [r7, #20]
8007d58: 1c5a adds r2, r3, #1
8007d5a: 82ba strh r2, [r7, #20]
8007d5c: 461a mov r2, r3
8007d5e: 4b60 ldr r3, [pc, #384] ; (8007ee0 <WriteChannel+0x2c8>)
8007d60: 2100 movs r1, #0
8007d62: 5499 strb r1, [r3, r2]
iobuf[len++] = pardata.amplif[ch].IFN;
8007d64: 8abb ldrh r3, [r7, #20]
8007d66: 1c5a adds r2, r3, #1
8007d68: 82ba strh r2, [r7, #20]
8007d6a: 4619 mov r1, r3
8007d6c: 79fb ldrb r3, [r7, #7]
8007d6e: 4a5d ldr r2, [pc, #372] ; (8007ee4 <WriteChannel+0x2cc>)
8007d70: 015b lsls r3, r3, #5
8007d72: 4413 add r3, r2
8007d74: 3304 adds r3, #4
8007d76: 881b ldrh r3, [r3, #0]
8007d78: b29b uxth r3, r3
8007d7a: b2da uxtb r2, r3
8007d7c: 4b58 ldr r3, [pc, #352] ; (8007ee0 <WriteChannel+0x2c8>)
8007d7e: 545a strb r2, [r3, r1]
iobuf[len++] = 0;
8007d80: 8abb ldrh r3, [r7, #20]
8007d82: 1c5a adds r2, r3, #1
8007d84: 82ba strh r2, [r7, #20]
8007d86: 461a mov r2, r3
8007d88: 4b55 ldr r3, [pc, #340] ; (8007ee0 <WriteChannel+0x2c8>)
8007d8a: 2100 movs r1, #0
8007d8c: 5499 strb r1, [r3, r2]
iobuf[len++] = pardata.amplif[ch].IKU;
8007d8e: 8abb ldrh r3, [r7, #20]
8007d90: 1c5a adds r2, r3, #1
8007d92: 82ba strh r2, [r7, #20]
8007d94: 4619 mov r1, r3
8007d96: 79fb ldrb r3, [r7, #7]
8007d98: 4a52 ldr r2, [pc, #328] ; (8007ee4 <WriteChannel+0x2cc>)
8007d9a: 015b lsls r3, r3, #5
8007d9c: 4413 add r3, r2
8007d9e: 3306 adds r3, #6
8007da0: 881b ldrh r3, [r3, #0]
8007da2: b29b uxth r3, r3
8007da4: b2da uxtb r2, r3
8007da6: 4b4e ldr r3, [pc, #312] ; (8007ee0 <WriteChannel+0x2c8>)
8007da8: 545a strb r2, [r3, r1]
iobuf[len++] = 0;
8007daa: 8abb ldrh r3, [r7, #20]
8007dac: 1c5a adds r2, r3, #1
8007dae: 82ba strh r2, [r7, #20]
8007db0: 461a mov r2, r3
8007db2: 4b4b ldr r3, [pc, #300] ; (8007ee0 <WriteChannel+0x2c8>)
8007db4: 2100 movs r1, #0
8007db6: 5499 strb r1, [r3, r2]
iobuf[len++] = pardata.amplif[ch].IKE;
8007db8: 8abb ldrh r3, [r7, #20]
8007dba: 1c5a adds r2, r3, #1
8007dbc: 82ba strh r2, [r7, #20]
8007dbe: 4619 mov r1, r3
8007dc0: 79fb ldrb r3, [r7, #7]
8007dc2: 4a48 ldr r2, [pc, #288] ; (8007ee4 <WriteChannel+0x2cc>)
8007dc4: 015b lsls r3, r3, #5
8007dc6: 4413 add r3, r2
8007dc8: 3308 adds r3, #8
8007dca: 881b ldrh r3, [r3, #0]
8007dcc: b29b uxth r3, r3
8007dce: b2da uxtb r2, r3
8007dd0: 4b43 ldr r3, [pc, #268] ; (8007ee0 <WriteChannel+0x2c8>)
8007dd2: 545a strb r2, [r3, r1]
iobuf[len++] = 0;
8007dd4: 8abb ldrh r3, [r7, #20]
8007dd6: 1c5a adds r2, r3, #1
8007dd8: 82ba strh r2, [r7, #20]
8007dda: 461a mov r2, r3
8007ddc: 4b40 ldr r3, [pc, #256] ; (8007ee0 <WriteChannel+0x2c8>)
8007dde: 2100 movs r1, #0
8007de0: 5499 strb r1, [r3, r2]
iobuf[len++] = pardata.amplif[ch].IKD;
8007de2: 8abb ldrh r3, [r7, #20]
8007de4: 1c5a adds r2, r3, #1
8007de6: 82ba strh r2, [r7, #20]
8007de8: 4619 mov r1, r3
8007dea: 79fb ldrb r3, [r7, #7]
8007dec: 4a3d ldr r2, [pc, #244] ; (8007ee4 <WriteChannel+0x2cc>)
8007dee: 015b lsls r3, r3, #5
8007df0: 4413 add r3, r2
8007df2: 330a adds r3, #10
8007df4: 881b ldrh r3, [r3, #0]
8007df6: b29b uxth r3, r3
8007df8: b2da uxtb r2, r3
8007dfa: 4b39 ldr r3, [pc, #228] ; (8007ee0 <WriteChannel+0x2c8>)
8007dfc: 545a strb r2, [r3, r1]
iobuf[len++] = 0;
8007dfe: 8abb ldrh r3, [r7, #20]
8007e00: 1c5a adds r2, r3, #1
8007e02: 82ba strh r2, [r7, #20]
8007e04: 461a mov r2, r3
8007e06: 4b36 ldr r3, [pc, #216] ; (8007ee0 <WriteChannel+0x2c8>)
8007e08: 2100 movs r1, #0
8007e0a: 5499 strb r1, [r3, r2]
iobuf[len++] = pardata.amplif[ch].IKS;
8007e0c: 8abb ldrh r3, [r7, #20]
8007e0e: 1c5a adds r2, r3, #1
8007e10: 82ba strh r2, [r7, #20]
8007e12: 4619 mov r1, r3
8007e14: 79fb ldrb r3, [r7, #7]
8007e16: 4a33 ldr r2, [pc, #204] ; (8007ee4 <WriteChannel+0x2cc>)
8007e18: 015b lsls r3, r3, #5
8007e1a: 4413 add r3, r2
8007e1c: 330c adds r3, #12
8007e1e: 881b ldrh r3, [r3, #0]
8007e20: b29b uxth r3, r3
8007e22: b2da uxtb r2, r3
8007e24: 4b2e ldr r3, [pc, #184] ; (8007ee0 <WriteChannel+0x2c8>)
8007e26: 545a strb r2, [r3, r1]
iobuf[len++] = 0;
8007e28: 8abb ldrh r3, [r7, #20]
8007e2a: 1c5a adds r2, r3, #1
8007e2c: 82ba strh r2, [r7, #20]
8007e2e: 461a mov r2, r3
8007e30: 4b2b ldr r3, [pc, #172] ; (8007ee0 <WriteChannel+0x2c8>)
8007e32: 2100 movs r1, #0
8007e34: 5499 strb r1, [r3, r2]
iobuf[len++] = pardata.amplif[ch].IPZ;
8007e36: 8abb ldrh r3, [r7, #20]
8007e38: 1c5a adds r2, r3, #1
8007e3a: 82ba strh r2, [r7, #20]
8007e3c: 4619 mov r1, r3
8007e3e: 79fb ldrb r3, [r7, #7]
8007e40: 4a28 ldr r2, [pc, #160] ; (8007ee4 <WriteChannel+0x2cc>)
8007e42: 015b lsls r3, r3, #5
8007e44: 4413 add r3, r2
8007e46: 330e adds r3, #14
8007e48: 881b ldrh r3, [r3, #0]
8007e4a: b29b uxth r3, r3
8007e4c: b2da uxtb r2, r3
8007e4e: 4b24 ldr r3, [pc, #144] ; (8007ee0 <WriteChannel+0x2c8>)
8007e50: 545a strb r2, [r3, r1]
iobuf[len++] = 0;
8007e52: 8abb ldrh r3, [r7, #20]
8007e54: 1c5a adds r2, r3, #1
8007e56: 82ba strh r2, [r7, #20]
8007e58: 461a mov r2, r3
8007e5a: 4b21 ldr r3, [pc, #132] ; (8007ee0 <WriteChannel+0x2c8>)
8007e5c: 2100 movs r1, #0
8007e5e: 5499 strb r1, [r3, r2]
iobuf[len++] = pardata.amplif[ch].OPZ;
8007e60: 8abb ldrh r3, [r7, #20]
8007e62: 1c5a adds r2, r3, #1
8007e64: 82ba strh r2, [r7, #20]
8007e66: 4619 mov r1, r3
8007e68: 79fb ldrb r3, [r7, #7]
8007e6a: 4a1e ldr r2, [pc, #120] ; (8007ee4 <WriteChannel+0x2cc>)
8007e6c: 015b lsls r3, r3, #5
8007e6e: 4413 add r3, r2
8007e70: 3310 adds r3, #16
8007e72: 881b ldrh r3, [r3, #0]
8007e74: b29b uxth r3, r3
8007e76: b2da uxtb r2, r3
8007e78: 4b19 ldr r3, [pc, #100] ; (8007ee0 <WriteChannel+0x2c8>)
8007e7a: 545a strb r2, [r3, r1]
crc = Crc16(len);
8007e7c: 8abb ldrh r3, [r7, #20]
8007e7e: 4618 mov r0, r3
8007e80: f7ff fc7a bl 8007778 <Crc16>
8007e84: 4603 mov r3, r0
8007e86: 827b strh r3, [r7, #18]
iobuf[len++] = LO(crc);
8007e88: 8abb ldrh r3, [r7, #20]
8007e8a: 1c5a adds r2, r3, #1
8007e8c: 82ba strh r2, [r7, #20]
8007e8e: 461a mov r2, r3
8007e90: 8a7b ldrh r3, [r7, #18]
8007e92: b2d9 uxtb r1, r3
8007e94: 4b12 ldr r3, [pc, #72] ; (8007ee0 <WriteChannel+0x2c8>)
8007e96: 5499 strb r1, [r3, r2]
iobuf[len++] = HI(crc);
8007e98: 8abb ldrh r3, [r7, #20]
8007e9a: 1c5a adds r2, r3, #1
8007e9c: 82ba strh r2, [r7, #20]
8007e9e: 461a mov r2, r3
8007ea0: 8a7b ldrh r3, [r7, #18]
8007ea2: 0a1b lsrs r3, r3, #8
8007ea4: b29b uxth r3, r3
8007ea6: b2d9 uxtb r1, r3
8007ea8: 4b0d ldr r3, [pc, #52] ; (8007ee0 <WriteChannel+0x2c8>)
8007eaa: 5499 strb r1, [r3, r2]
timeout = HAL_GetTick();
8007eac: f000 fc00 bl 80086b0 <HAL_GetTick>
8007eb0: 4603 mov r3, r0
8007eb2: 60fb str r3, [r7, #12]
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_SET);
8007eb4: 2201 movs r2, #1
8007eb6: f44f 7100 mov.w r1, #512 ; 0x200
8007eba: 480b ldr r0, [pc, #44] ; (8007ee8 <WriteChannel+0x2d0>)
8007ebc: f001 fbea bl 8009694 <HAL_GPIO_WritePin>
if(HAL_UART_Transmit_IT(&huart7, iobuf, len) == HAL_OK)
8007ec0: 8abb ldrh r3, [r7, #20]
8007ec2: 461a mov r2, r3
8007ec4: 4906 ldr r1, [pc, #24] ; (8007ee0 <WriteChannel+0x2c8>)
8007ec6: 4802 ldr r0, [pc, #8] ; (8007ed0 <WriteChannel+0x2b8>)
8007ec8: f003 fd12 bl 800b8f0 <HAL_UART_Transmit_IT>
8007ecc: e00e b.n 8007eec <WriteChannel+0x2d4>
8007ece: bf00 nop
8007ed0: 2006bb3c .word 0x2006bb3c
8007ed4: 2006b1e3 .word 0x2006b1e3
8007ed8: 2006b1e5 .word 0x2006b1e5
8007edc: 2006b1e4 .word 0x2006b1e4
8007ee0: 2006bccc .word 0x2006bccc
8007ee4: 2006b3f8 .word 0x2006b3f8
8007ee8: 40021400 .word 0x40021400
8007eec: 4603 mov r3, r0
8007eee: 2b00 cmp r3, #0
8007ef0: d163 bne.n 8007fba <WriteChannel+0x3a2>
{
while((!TX_OK) && (HAL_GetTick() - timeout < 200));
8007ef2: bf00 nop
8007ef4: 4b34 ldr r3, [pc, #208] ; (8007fc8 <WriteChannel+0x3b0>)
8007ef6: 781b ldrb r3, [r3, #0]
8007ef8: b2db uxtb r3, r3
8007efa: f083 0301 eor.w r3, r3, #1
8007efe: b2db uxtb r3, r3
8007f00: 2b00 cmp r3, #0
8007f02: d006 beq.n 8007f12 <WriteChannel+0x2fa>
8007f04: f000 fbd4 bl 80086b0 <HAL_GetTick>
8007f08: 4602 mov r2, r0
8007f0a: 68fb ldr r3, [r7, #12]
8007f0c: 1ad3 subs r3, r2, r3
8007f0e: 2bc7 cmp r3, #199 ; 0xc7
8007f10: d9f0 bls.n 8007ef4 <WriteChannel+0x2dc>
if(!TX_OK)
8007f12: 4b2d ldr r3, [pc, #180] ; (8007fc8 <WriteChannel+0x3b0>)
8007f14: 781b ldrb r3, [r3, #0]
8007f16: b2db uxtb r3, r3
8007f18: f083 0301 eor.w r3, r3, #1
8007f1c: b2db uxtb r3, r3
8007f1e: 2b00 cmp r3, #0
8007f20: d00b beq.n 8007f3a <WriteChannel+0x322>
{
HAL_UART_Abort_IT(&huart7);
8007f22: 482a ldr r0, [pc, #168] ; (8007fcc <WriteChannel+0x3b4>)
8007f24: f003 fd52 bl 800b9cc <HAL_UART_Abort_IT>
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8007f28: 2200 movs r2, #0
8007f2a: f44f 7100 mov.w r1, #512 ; 0x200
8007f2e: 4828 ldr r0, [pc, #160] ; (8007fd0 <WriteChannel+0x3b8>)
8007f30: f001 fbb0 bl 8009694 <HAL_GPIO_WritePin>
return (-1);
8007f34: f04f 33ff mov.w r3, #4294967295
8007f38: e041 b.n 8007fbe <WriteChannel+0x3a6>
}
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8007f3a: 2200 movs r2, #0
8007f3c: f44f 7100 mov.w r1, #512 ; 0x200
8007f40: 4823 ldr r0, [pc, #140] ; (8007fd0 <WriteChannel+0x3b8>)
8007f42: f001 fba7 bl 8009694 <HAL_GPIO_WritePin>
HAL_UART_Receive(&huart7, rx, 1, 100); // пустой байт
8007f46: 2364 movs r3, #100 ; 0x64
8007f48: 2201 movs r2, #1
8007f4a: 4922 ldr r1, [pc, #136] ; (8007fd4 <WriteChannel+0x3bc>)
8007f4c: 481f ldr r0, [pc, #124] ; (8007fcc <WriteChannel+0x3b4>)
8007f4e: f003 fbff bl 800b750 <HAL_UART_Receive>
if(HAL_UART_Receive(&huart7, rx, 8, 500) == HAL_OK)
8007f52: f44f 73fa mov.w r3, #500 ; 0x1f4
8007f56: 2208 movs r2, #8
8007f58: 491e ldr r1, [pc, #120] ; (8007fd4 <WriteChannel+0x3bc>)
8007f5a: 481c ldr r0, [pc, #112] ; (8007fcc <WriteChannel+0x3b4>)
8007f5c: f003 fbf8 bl 800b750 <HAL_UART_Receive>
8007f60: 4603 mov r3, r0
8007f62: 2b00 cmp r3, #0
8007f64: d120 bne.n 8007fa8 <WriteChannel+0x390>
{
crc = (uint16_t) ((rx[7]) << 8 | rx[6]);
8007f66: 4b1b ldr r3, [pc, #108] ; (8007fd4 <WriteChannel+0x3bc>)
8007f68: 79db ldrb r3, [r3, #7]
8007f6a: 021b lsls r3, r3, #8
8007f6c: b21a sxth r2, r3
8007f6e: 4b19 ldr r3, [pc, #100] ; (8007fd4 <WriteChannel+0x3bc>)
8007f70: 799b ldrb r3, [r3, #6]
8007f72: b21b sxth r3, r3
8007f74: 4313 orrs r3, r2
8007f76: b21b sxth r3, r3
8007f78: 827b strh r3, [r7, #18]
if(crc == Crc16_RX(6))
8007f7a: 2006 movs r0, #6
8007f7c: f7ff fc28 bl 80077d0 <Crc16_RX>
8007f80: 4603 mov r3, r0
8007f82: 461a mov r2, r3
8007f84: 8a7b ldrh r3, [r7, #18]
8007f86: 4293 cmp r3, r2
8007f88: d10b bne.n 8007fa2 <WriteChannel+0x38a>
{
if(rx[0] == (ch + 1))
8007f8a: 4b12 ldr r3, [pc, #72] ; (8007fd4 <WriteChannel+0x3bc>)
8007f8c: 781b ldrb r3, [r3, #0]
8007f8e: 461a mov r2, r3
8007f90: 79fb ldrb r3, [r7, #7]
8007f92: 3301 adds r3, #1
8007f94: 429a cmp r2, r3
8007f96: d101 bne.n 8007f9c <WriteChannel+0x384>
return 0;
8007f98: 2300 movs r3, #0
8007f9a: e010 b.n 8007fbe <WriteChannel+0x3a6>
else return (-1);
8007f9c: f04f 33ff mov.w r3, #4294967295
8007fa0: e00d b.n 8007fbe <WriteChannel+0x3a6>
}
else
{
return (-1);
8007fa2: f04f 33ff mov.w r3, #4294967295
8007fa6: e00a b.n 8007fbe <WriteChannel+0x3a6>
}
}
else
{
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8007fa8: 2200 movs r2, #0
8007faa: f44f 7100 mov.w r1, #512 ; 0x200
8007fae: 4808 ldr r0, [pc, #32] ; (8007fd0 <WriteChannel+0x3b8>)
8007fb0: f001 fb70 bl 8009694 <HAL_GPIO_WritePin>
return (-1);
8007fb4: f04f 33ff mov.w r3, #4294967295
8007fb8: e001 b.n 8007fbe <WriteChannel+0x3a6>
}
}
return res;
8007fba: f997 3017 ldrsb.w r3, [r7, #23]
}
8007fbe: 4618 mov r0, r3
8007fc0: 3718 adds r7, #24
8007fc2: 46bd mov sp, r7
8007fc4: bd80 pop {r7, pc}
8007fc6: bf00 nop
8007fc8: 2006b1e4 .word 0x2006b1e4
8007fcc: 2006bb3c .word 0x2006bb3c
8007fd0: 40021400 .word 0x40021400
8007fd4: 2006bbc4 .word 0x2006bbc4
08007fd8 <Calibr>:
int8_t Calibr(uint8_t ch, uint8_t on)
{
8007fd8: b580 push {r7, lr}
8007fda: b086 sub sp, #24
8007fdc: af00 add r7, sp, #0
8007fde: 4603 mov r3, r0
8007fe0: 460a mov r2, r1
8007fe2: 71fb strb r3, [r7, #7]
8007fe4: 4613 mov r3, r2
8007fe6: 71bb strb r3, [r7, #6]
int8_t res = -1;
8007fe8: 23ff movs r3, #255 ; 0xff
8007fea: 757b strb r3, [r7, #21]
uint16_t i, len = 0;
8007fec: 2300 movs r3, #0
8007fee: 82fb strh r3, [r7, #22]
uint16_t crc;
uint16_t reg;
__IO uint32_t timeout;
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_ORE))
8007ff0: 4b8f ldr r3, [pc, #572] ; (8008230 <Calibr+0x258>)
8007ff2: 681b ldr r3, [r3, #0]
8007ff4: 69db ldr r3, [r3, #28]
8007ff6: f003 0308 and.w r3, r3, #8
8007ffa: 2b08 cmp r3, #8
8007ffc: d103 bne.n 8008006 <Calibr+0x2e>
__HAL_UART_CLEAR_OREFLAG(&huart7);
8007ffe: 4b8c ldr r3, [pc, #560] ; (8008230 <Calibr+0x258>)
8008000: 681b ldr r3, [r3, #0]
8008002: 2208 movs r2, #8
8008004: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_PE))
8008006: 4b8a ldr r3, [pc, #552] ; (8008230 <Calibr+0x258>)
8008008: 681b ldr r3, [r3, #0]
800800a: 69db ldr r3, [r3, #28]
800800c: f003 0301 and.w r3, r3, #1
8008010: 2b01 cmp r3, #1
8008012: d103 bne.n 800801c <Calibr+0x44>
__HAL_UART_CLEAR_PEFLAG(&huart7);
8008014: 4b86 ldr r3, [pc, #536] ; (8008230 <Calibr+0x258>)
8008016: 681b ldr r3, [r3, #0]
8008018: 2201 movs r2, #1
800801a: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_FE))
800801c: 4b84 ldr r3, [pc, #528] ; (8008230 <Calibr+0x258>)
800801e: 681b ldr r3, [r3, #0]
8008020: 69db ldr r3, [r3, #28]
8008022: f003 0302 and.w r3, r3, #2
8008026: 2b02 cmp r3, #2
8008028: d103 bne.n 8008032 <Calibr+0x5a>
__HAL_UART_CLEAR_FEFLAG(&huart7);
800802a: 4b81 ldr r3, [pc, #516] ; (8008230 <Calibr+0x258>)
800802c: 681b ldr r3, [r3, #0]
800802e: 2202 movs r2, #2
8008030: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_NE))
8008032: 4b7f ldr r3, [pc, #508] ; (8008230 <Calibr+0x258>)
8008034: 681b ldr r3, [r3, #0]
8008036: 69db ldr r3, [r3, #28]
8008038: f003 0304 and.w r3, r3, #4
800803c: 2b04 cmp r3, #4
800803e: d103 bne.n 8008048 <Calibr+0x70>
__HAL_UART_CLEAR_NEFLAG(&huart7);
8008040: 4b7b ldr r3, [pc, #492] ; (8008230 <Calibr+0x258>)
8008042: 681b ldr r3, [r3, #0]
8008044: 2204 movs r2, #4
8008046: 621a str r2, [r3, #32]
HAL_Delay(20);
8008048: 2014 movs r0, #20
800804a: f000 fb3d bl 80086c8 <HAL_Delay>
TX_OK = RX_OK = UART_ERROR = false;
800804e: 2200 movs r2, #0
8008050: 4b78 ldr r3, [pc, #480] ; (8008234 <Calibr+0x25c>)
8008052: 4611 mov r1, r2
8008054: 7019 strb r1, [r3, #0]
8008056: 4b78 ldr r3, [pc, #480] ; (8008238 <Calibr+0x260>)
8008058: 4611 mov r1, r2
800805a: 7019 strb r1, [r3, #0]
800805c: 4b77 ldr r3, [pc, #476] ; (800823c <Calibr+0x264>)
800805e: 701a strb r2, [r3, #0]
len = 0;
8008060: 2300 movs r3, #0
8008062: 82fb strh r3, [r7, #22]
iobuf[len++] = ch + 1;
8008064: 8afb ldrh r3, [r7, #22]
8008066: 1c5a adds r2, r3, #1
8008068: 82fa strh r2, [r7, #22]
800806a: 461a mov r2, r3
800806c: 79fb ldrb r3, [r7, #7]
800806e: 3301 adds r3, #1
8008070: b2d9 uxtb r1, r3
8008072: 4b73 ldr r3, [pc, #460] ; (8008240 <Calibr+0x268>)
8008074: 5499 strb r1, [r3, r2]
iobuf[len++] = 0x10;
8008076: 8afb ldrh r3, [r7, #22]
8008078: 1c5a adds r2, r3, #1
800807a: 82fa strh r2, [r7, #22]
800807c: 461a mov r2, r3
800807e: 4b70 ldr r3, [pc, #448] ; (8008240 <Calibr+0x268>)
8008080: 2110 movs r1, #16
8008082: 5499 strb r1, [r3, r2]
iobuf[len++] = HI(3000);
8008084: 8afb ldrh r3, [r7, #22]
8008086: 1c5a adds r2, r3, #1
8008088: 82fa strh r2, [r7, #22]
800808a: 461a mov r2, r3
800808c: 4b6c ldr r3, [pc, #432] ; (8008240 <Calibr+0x268>)
800808e: 210b movs r1, #11
8008090: 5499 strb r1, [r3, r2]
iobuf[len++] = LO(3000);
8008092: 8afb ldrh r3, [r7, #22]
8008094: 1c5a adds r2, r3, #1
8008096: 82fa strh r2, [r7, #22]
8008098: 461a mov r2, r3
800809a: 4b69 ldr r3, [pc, #420] ; (8008240 <Calibr+0x268>)
800809c: 21b8 movs r1, #184 ; 0xb8
800809e: 5499 strb r1, [r3, r2]
iobuf[len++] = 0;
80080a0: 8afb ldrh r3, [r7, #22]
80080a2: 1c5a adds r2, r3, #1
80080a4: 82fa strh r2, [r7, #22]
80080a6: 461a mov r2, r3
80080a8: 4b65 ldr r3, [pc, #404] ; (8008240 <Calibr+0x268>)
80080aa: 2100 movs r1, #0
80080ac: 5499 strb r1, [r3, r2]
iobuf[len++] = 1;
80080ae: 8afb ldrh r3, [r7, #22]
80080b0: 1c5a adds r2, r3, #1
80080b2: 82fa strh r2, [r7, #22]
80080b4: 461a mov r2, r3
80080b6: 4b62 ldr r3, [pc, #392] ; (8008240 <Calibr+0x268>)
80080b8: 2101 movs r1, #1
80080ba: 5499 strb r1, [r3, r2]
iobuf[len++] = 2;
80080bc: 8afb ldrh r3, [r7, #22]
80080be: 1c5a adds r2, r3, #1
80080c0: 82fa strh r2, [r7, #22]
80080c2: 461a mov r2, r3
80080c4: 4b5e ldr r3, [pc, #376] ; (8008240 <Calibr+0x268>)
80080c6: 2102 movs r1, #2
80080c8: 5499 strb r1, [r3, r2]
iobuf[len++] = 0;
80080ca: 8afb ldrh r3, [r7, #22]
80080cc: 1c5a adds r2, r3, #1
80080ce: 82fa strh r2, [r7, #22]
80080d0: 461a mov r2, r3
80080d2: 4b5b ldr r3, [pc, #364] ; (8008240 <Calibr+0x268>)
80080d4: 2100 movs r1, #0
80080d6: 5499 strb r1, [r3, r2]
if(on)
80080d8: 79bb ldrb r3, [r7, #6]
80080da: 2b00 cmp r3, #0
80080dc: d00b beq.n 80080f6 <Calibr+0x11e>
iobuf[len++] = menu - 1;
80080de: 8afb ldrh r3, [r7, #22]
80080e0: 1c5a adds r2, r3, #1
80080e2: 82fa strh r2, [r7, #22]
80080e4: 461a mov r2, r3
80080e6: 4b57 ldr r3, [pc, #348] ; (8008244 <Calibr+0x26c>)
80080e8: 781b ldrb r3, [r3, #0]
80080ea: b2db uxtb r3, r3
80080ec: 3b01 subs r3, #1
80080ee: b2d9 uxtb r1, r3
80080f0: 4b53 ldr r3, [pc, #332] ; (8008240 <Calibr+0x268>)
80080f2: 5499 strb r1, [r3, r2]
80080f4: e006 b.n 8008104 <Calibr+0x12c>
else iobuf[len++] = 0;
80080f6: 8afb ldrh r3, [r7, #22]
80080f8: 1c5a adds r2, r3, #1
80080fa: 82fa strh r2, [r7, #22]
80080fc: 461a mov r2, r3
80080fe: 4b50 ldr r3, [pc, #320] ; (8008240 <Calibr+0x268>)
8008100: 2100 movs r1, #0
8008102: 5499 strb r1, [r3, r2]
crc = Crc16(len);
8008104: 8afb ldrh r3, [r7, #22]
8008106: 4618 mov r0, r3
8008108: f7ff fb36 bl 8007778 <Crc16>
800810c: 4603 mov r3, r0
800810e: 827b strh r3, [r7, #18]
iobuf[len++] = LO(crc);
8008110: 8afb ldrh r3, [r7, #22]
8008112: 1c5a adds r2, r3, #1
8008114: 82fa strh r2, [r7, #22]
8008116: 461a mov r2, r3
8008118: 8a7b ldrh r3, [r7, #18]
800811a: b2d9 uxtb r1, r3
800811c: 4b48 ldr r3, [pc, #288] ; (8008240 <Calibr+0x268>)
800811e: 5499 strb r1, [r3, r2]
iobuf[len++] = HI(crc);
8008120: 8afb ldrh r3, [r7, #22]
8008122: 1c5a adds r2, r3, #1
8008124: 82fa strh r2, [r7, #22]
8008126: 461a mov r2, r3
8008128: 8a7b ldrh r3, [r7, #18]
800812a: 0a1b lsrs r3, r3, #8
800812c: b29b uxth r3, r3
800812e: b2d9 uxtb r1, r3
8008130: 4b43 ldr r3, [pc, #268] ; (8008240 <Calibr+0x268>)
8008132: 5499 strb r1, [r3, r2]
timeout = HAL_GetTick();
8008134: f000 fabc bl 80086b0 <HAL_GetTick>
8008138: 4603 mov r3, r0
800813a: 60fb str r3, [r7, #12]
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_SET);
800813c: 2201 movs r2, #1
800813e: f44f 7100 mov.w r1, #512 ; 0x200
8008142: 4841 ldr r0, [pc, #260] ; (8008248 <Calibr+0x270>)
8008144: f001 faa6 bl 8009694 <HAL_GPIO_WritePin>
if(HAL_UART_Transmit_IT(&huart7, iobuf, len) == HAL_OK)
8008148: 8afb ldrh r3, [r7, #22]
800814a: 461a mov r2, r3
800814c: 493c ldr r1, [pc, #240] ; (8008240 <Calibr+0x268>)
800814e: 4838 ldr r0, [pc, #224] ; (8008230 <Calibr+0x258>)
8008150: f003 fbce bl 800b8f0 <HAL_UART_Transmit_IT>
8008154: 4603 mov r3, r0
8008156: 2b00 cmp r3, #0
8008158: d163 bne.n 8008222 <Calibr+0x24a>
{
while((!TX_OK) && (HAL_GetTick() - timeout < 200));
800815a: bf00 nop
800815c: 4b37 ldr r3, [pc, #220] ; (800823c <Calibr+0x264>)
800815e: 781b ldrb r3, [r3, #0]
8008160: b2db uxtb r3, r3
8008162: f083 0301 eor.w r3, r3, #1
8008166: b2db uxtb r3, r3
8008168: 2b00 cmp r3, #0
800816a: d006 beq.n 800817a <Calibr+0x1a2>
800816c: f000 faa0 bl 80086b0 <HAL_GetTick>
8008170: 4602 mov r2, r0
8008172: 68fb ldr r3, [r7, #12]
8008174: 1ad3 subs r3, r2, r3
8008176: 2bc7 cmp r3, #199 ; 0xc7
8008178: d9f0 bls.n 800815c <Calibr+0x184>
if(!TX_OK)
800817a: 4b30 ldr r3, [pc, #192] ; (800823c <Calibr+0x264>)
800817c: 781b ldrb r3, [r3, #0]
800817e: b2db uxtb r3, r3
8008180: f083 0301 eor.w r3, r3, #1
8008184: b2db uxtb r3, r3
8008186: 2b00 cmp r3, #0
8008188: d00b beq.n 80081a2 <Calibr+0x1ca>
{
HAL_UART_Abort_IT(&huart7);
800818a: 4829 ldr r0, [pc, #164] ; (8008230 <Calibr+0x258>)
800818c: f003 fc1e bl 800b9cc <HAL_UART_Abort_IT>
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8008190: 2200 movs r2, #0
8008192: f44f 7100 mov.w r1, #512 ; 0x200
8008196: 482c ldr r0, [pc, #176] ; (8008248 <Calibr+0x270>)
8008198: f001 fa7c bl 8009694 <HAL_GPIO_WritePin>
return (-1);
800819c: f04f 33ff mov.w r3, #4294967295
80081a0: e041 b.n 8008226 <Calibr+0x24e>
}
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
80081a2: 2200 movs r2, #0
80081a4: f44f 7100 mov.w r1, #512 ; 0x200
80081a8: 4827 ldr r0, [pc, #156] ; (8008248 <Calibr+0x270>)
80081aa: f001 fa73 bl 8009694 <HAL_GPIO_WritePin>
HAL_UART_Receive(&huart7, rx, 1, 100); // пустой байт
80081ae: 2364 movs r3, #100 ; 0x64
80081b0: 2201 movs r2, #1
80081b2: 4926 ldr r1, [pc, #152] ; (800824c <Calibr+0x274>)
80081b4: 481e ldr r0, [pc, #120] ; (8008230 <Calibr+0x258>)
80081b6: f003 facb bl 800b750 <HAL_UART_Receive>
if(HAL_UART_Receive(&huart7, rx, 8, 500) == HAL_OK)
80081ba: f44f 73fa mov.w r3, #500 ; 0x1f4
80081be: 2208 movs r2, #8
80081c0: 4922 ldr r1, [pc, #136] ; (800824c <Calibr+0x274>)
80081c2: 481b ldr r0, [pc, #108] ; (8008230 <Calibr+0x258>)
80081c4: f003 fac4 bl 800b750 <HAL_UART_Receive>
80081c8: 4603 mov r3, r0
80081ca: 2b00 cmp r3, #0
80081cc: d120 bne.n 8008210 <Calibr+0x238>
{
crc = (uint16_t) ((rx[7]) << 8 | rx[6]);
80081ce: 4b1f ldr r3, [pc, #124] ; (800824c <Calibr+0x274>)
80081d0: 79db ldrb r3, [r3, #7]
80081d2: 021b lsls r3, r3, #8
80081d4: b21a sxth r2, r3
80081d6: 4b1d ldr r3, [pc, #116] ; (800824c <Calibr+0x274>)
80081d8: 799b ldrb r3, [r3, #6]
80081da: b21b sxth r3, r3
80081dc: 4313 orrs r3, r2
80081de: b21b sxth r3, r3
80081e0: 827b strh r3, [r7, #18]
if(crc == Crc16_RX(6))
80081e2: 2006 movs r0, #6
80081e4: f7ff faf4 bl 80077d0 <Crc16_RX>
80081e8: 4603 mov r3, r0
80081ea: 461a mov r2, r3
80081ec: 8a7b ldrh r3, [r7, #18]
80081ee: 4293 cmp r3, r2
80081f0: d10b bne.n 800820a <Calibr+0x232>
{
if(rx[0] == (ch + 1))
80081f2: 4b16 ldr r3, [pc, #88] ; (800824c <Calibr+0x274>)
80081f4: 781b ldrb r3, [r3, #0]
80081f6: 461a mov r2, r3
80081f8: 79fb ldrb r3, [r7, #7]
80081fa: 3301 adds r3, #1
80081fc: 429a cmp r2, r3
80081fe: d101 bne.n 8008204 <Calibr+0x22c>
return 0;
8008200: 2300 movs r3, #0
8008202: e010 b.n 8008226 <Calibr+0x24e>
else return (-1);
8008204: f04f 33ff mov.w r3, #4294967295
8008208: e00d b.n 8008226 <Calibr+0x24e>
}
else
{
return (-1);
800820a: f04f 33ff mov.w r3, #4294967295
800820e: e00a b.n 8008226 <Calibr+0x24e>
}
}
else
{
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8008210: 2200 movs r2, #0
8008212: f44f 7100 mov.w r1, #512 ; 0x200
8008216: 480c ldr r0, [pc, #48] ; (8008248 <Calibr+0x270>)
8008218: f001 fa3c bl 8009694 <HAL_GPIO_WritePin>
return (-1);
800821c: f04f 33ff mov.w r3, #4294967295
8008220: e001 b.n 8008226 <Calibr+0x24e>
}
}
return res;
8008222: f997 3015 ldrsb.w r3, [r7, #21]
}
8008226: 4618 mov r0, r3
8008228: 3718 adds r7, #24
800822a: 46bd mov sp, r7
800822c: bd80 pop {r7, pc}
800822e: bf00 nop
8008230: 2006bb3c .word 0x2006bb3c
8008234: 2006b1e3 .word 0x2006b1e3
8008238: 2006b1e5 .word 0x2006b1e5
800823c: 2006b1e4 .word 0x2006b1e4
8008240: 2006bccc .word 0x2006bccc
8008244: 20020136 .word 0x20020136
8008248: 40021400 .word 0x40021400
800824c: 2006bbc4 .word 0x2006bbc4
08008250 <WriteCorr>:
int8_t WriteCorr(uint8_t ch, uint8_t fasecor, uint8_t up)
{
8008250: b580 push {r7, lr}
8008252: b086 sub sp, #24
8008254: af00 add r7, sp, #0
8008256: 4603 mov r3, r0
8008258: 71fb strb r3, [r7, #7]
800825a: 460b mov r3, r1
800825c: 71bb strb r3, [r7, #6]
800825e: 4613 mov r3, r2
8008260: 717b strb r3, [r7, #5]
int8_t res = -1;
8008262: 23ff movs r3, #255 ; 0xff
8008264: 75fb strb r3, [r7, #23]
uint16_t i, len = 0;
8008266: 2300 movs r3, #0
8008268: 82bb strh r3, [r7, #20]
uint16_t crc;
uint16_t reg;
__IO uint32_t timeout;
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_ORE))
800826a: 4b8b ldr r3, [pc, #556] ; (8008498 <WriteCorr+0x248>)
800826c: 681b ldr r3, [r3, #0]
800826e: 69db ldr r3, [r3, #28]
8008270: f003 0308 and.w r3, r3, #8
8008274: 2b08 cmp r3, #8
8008276: d103 bne.n 8008280 <WriteCorr+0x30>
__HAL_UART_CLEAR_OREFLAG(&huart7);
8008278: 4b87 ldr r3, [pc, #540] ; (8008498 <WriteCorr+0x248>)
800827a: 681b ldr r3, [r3, #0]
800827c: 2208 movs r2, #8
800827e: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_PE))
8008280: 4b85 ldr r3, [pc, #532] ; (8008498 <WriteCorr+0x248>)
8008282: 681b ldr r3, [r3, #0]
8008284: 69db ldr r3, [r3, #28]
8008286: f003 0301 and.w r3, r3, #1
800828a: 2b01 cmp r3, #1
800828c: d103 bne.n 8008296 <WriteCorr+0x46>
__HAL_UART_CLEAR_PEFLAG(&huart7);
800828e: 4b82 ldr r3, [pc, #520] ; (8008498 <WriteCorr+0x248>)
8008290: 681b ldr r3, [r3, #0]
8008292: 2201 movs r2, #1
8008294: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_FE))
8008296: 4b80 ldr r3, [pc, #512] ; (8008498 <WriteCorr+0x248>)
8008298: 681b ldr r3, [r3, #0]
800829a: 69db ldr r3, [r3, #28]
800829c: f003 0302 and.w r3, r3, #2
80082a0: 2b02 cmp r3, #2
80082a2: d103 bne.n 80082ac <WriteCorr+0x5c>
__HAL_UART_CLEAR_FEFLAG(&huart7);
80082a4: 4b7c ldr r3, [pc, #496] ; (8008498 <WriteCorr+0x248>)
80082a6: 681b ldr r3, [r3, #0]
80082a8: 2202 movs r2, #2
80082aa: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_NE))
80082ac: 4b7a ldr r3, [pc, #488] ; (8008498 <WriteCorr+0x248>)
80082ae: 681b ldr r3, [r3, #0]
80082b0: 69db ldr r3, [r3, #28]
80082b2: f003 0304 and.w r3, r3, #4
80082b6: 2b04 cmp r3, #4
80082b8: d103 bne.n 80082c2 <WriteCorr+0x72>
__HAL_UART_CLEAR_NEFLAG(&huart7);
80082ba: 4b77 ldr r3, [pc, #476] ; (8008498 <WriteCorr+0x248>)
80082bc: 681b ldr r3, [r3, #0]
80082be: 2204 movs r2, #4
80082c0: 621a str r2, [r3, #32]
HAL_Delay(20);
80082c2: 2014 movs r0, #20
80082c4: f000 fa00 bl 80086c8 <HAL_Delay>
TX_OK = RX_OK = UART_ERROR = false;
80082c8: 2200 movs r2, #0
80082ca: 4b74 ldr r3, [pc, #464] ; (800849c <WriteCorr+0x24c>)
80082cc: 4611 mov r1, r2
80082ce: 7019 strb r1, [r3, #0]
80082d0: 4b73 ldr r3, [pc, #460] ; (80084a0 <WriteCorr+0x250>)
80082d2: 4611 mov r1, r2
80082d4: 7019 strb r1, [r3, #0]
80082d6: 4b73 ldr r3, [pc, #460] ; (80084a4 <WriteCorr+0x254>)
80082d8: 701a strb r2, [r3, #0]
len = 0;
80082da: 2300 movs r3, #0
80082dc: 82bb strh r3, [r7, #20]
/*if(fasecor == CALIBR_00) {
return (-1);
}*/
iobuf[len++] = ch + 1;
80082de: 8abb ldrh r3, [r7, #20]
80082e0: 1c5a adds r2, r3, #1
80082e2: 82ba strh r2, [r7, #20]
80082e4: 461a mov r2, r3
80082e6: 79fb ldrb r3, [r7, #7]
80082e8: 3301 adds r3, #1
80082ea: b2d9 uxtb r1, r3
80082ec: 4b6e ldr r3, [pc, #440] ; (80084a8 <WriteCorr+0x258>)
80082ee: 5499 strb r1, [r3, r2]
iobuf[len++] = 0x10;
80082f0: 8abb ldrh r3, [r7, #20]
80082f2: 1c5a adds r2, r3, #1
80082f4: 82ba strh r2, [r7, #20]
80082f6: 461a mov r2, r3
80082f8: 4b6b ldr r3, [pc, #428] ; (80084a8 <WriteCorr+0x258>)
80082fa: 2110 movs r1, #16
80082fc: 5499 strb r1, [r3, r2]
iobuf[len++] = HI(fasecor + 3001);
80082fe: 8abb ldrh r3, [r7, #20]
8008300: 1c5a adds r2, r3, #1
8008302: 82ba strh r2, [r7, #20]
8008304: 461a mov r2, r3
8008306: 79bb ldrb r3, [r7, #6]
8008308: f603 33b9 addw r3, r3, #3001 ; 0xbb9
800830c: 121b asrs r3, r3, #8
800830e: b2d9 uxtb r1, r3
8008310: 4b65 ldr r3, [pc, #404] ; (80084a8 <WriteCorr+0x258>)
8008312: 5499 strb r1, [r3, r2]
iobuf[len++] = LO(fasecor + 3001);
8008314: 8abb ldrh r3, [r7, #20]
8008316: 1c5a adds r2, r3, #1
8008318: 82ba strh r2, [r7, #20]
800831a: 461a mov r2, r3
800831c: 79bb ldrb r3, [r7, #6]
800831e: 3b47 subs r3, #71 ; 0x47
8008320: b2d9 uxtb r1, r3
8008322: 4b61 ldr r3, [pc, #388] ; (80084a8 <WriteCorr+0x258>)
8008324: 5499 strb r1, [r3, r2]
iobuf[len++] = 0;
8008326: 8abb ldrh r3, [r7, #20]
8008328: 1c5a adds r2, r3, #1
800832a: 82ba strh r2, [r7, #20]
800832c: 461a mov r2, r3
800832e: 4b5e ldr r3, [pc, #376] ; (80084a8 <WriteCorr+0x258>)
8008330: 2100 movs r1, #0
8008332: 5499 strb r1, [r3, r2]
iobuf[len++] = 1;
8008334: 8abb ldrh r3, [r7, #20]
8008336: 1c5a adds r2, r3, #1
8008338: 82ba strh r2, [r7, #20]
800833a: 461a mov r2, r3
800833c: 4b5a ldr r3, [pc, #360] ; (80084a8 <WriteCorr+0x258>)
800833e: 2101 movs r1, #1
8008340: 5499 strb r1, [r3, r2]
iobuf[len++] = 2;
8008342: 8abb ldrh r3, [r7, #20]
8008344: 1c5a adds r2, r3, #1
8008346: 82ba strh r2, [r7, #20]
8008348: 461a mov r2, r3
800834a: 4b57 ldr r3, [pc, #348] ; (80084a8 <WriteCorr+0x258>)
800834c: 2102 movs r1, #2
800834e: 5499 strb r1, [r3, r2]
iobuf[len++] = 0;
8008350: 8abb ldrh r3, [r7, #20]
8008352: 1c5a adds r2, r3, #1
8008354: 82ba strh r2, [r7, #20]
8008356: 461a mov r2, r3
8008358: 4b53 ldr r3, [pc, #332] ; (80084a8 <WriteCorr+0x258>)
800835a: 2100 movs r1, #0
800835c: 5499 strb r1, [r3, r2]
iobuf[len++] = up;
800835e: 8abb ldrh r3, [r7, #20]
8008360: 1c5a adds r2, r3, #1
8008362: 82ba strh r2, [r7, #20]
8008364: 4619 mov r1, r3
8008366: 4a50 ldr r2, [pc, #320] ; (80084a8 <WriteCorr+0x258>)
8008368: 797b ldrb r3, [r7, #5]
800836a: 5453 strb r3, [r2, r1]
crc = Crc16(len);
800836c: 8abb ldrh r3, [r7, #20]
800836e: 4618 mov r0, r3
8008370: f7ff fa02 bl 8007778 <Crc16>
8008374: 4603 mov r3, r0
8008376: 827b strh r3, [r7, #18]
iobuf[len++] = LO(crc);
8008378: 8abb ldrh r3, [r7, #20]
800837a: 1c5a adds r2, r3, #1
800837c: 82ba strh r2, [r7, #20]
800837e: 461a mov r2, r3
8008380: 8a7b ldrh r3, [r7, #18]
8008382: b2d9 uxtb r1, r3
8008384: 4b48 ldr r3, [pc, #288] ; (80084a8 <WriteCorr+0x258>)
8008386: 5499 strb r1, [r3, r2]
iobuf[len++] = HI(crc);
8008388: 8abb ldrh r3, [r7, #20]
800838a: 1c5a adds r2, r3, #1
800838c: 82ba strh r2, [r7, #20]
800838e: 461a mov r2, r3
8008390: 8a7b ldrh r3, [r7, #18]
8008392: 0a1b lsrs r3, r3, #8
8008394: b29b uxth r3, r3
8008396: b2d9 uxtb r1, r3
8008398: 4b43 ldr r3, [pc, #268] ; (80084a8 <WriteCorr+0x258>)
800839a: 5499 strb r1, [r3, r2]
timeout = HAL_GetTick();
800839c: f000 f988 bl 80086b0 <HAL_GetTick>
80083a0: 4603 mov r3, r0
80083a2: 60fb str r3, [r7, #12]
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_SET);
80083a4: 2201 movs r2, #1
80083a6: f44f 7100 mov.w r1, #512 ; 0x200
80083aa: 4840 ldr r0, [pc, #256] ; (80084ac <WriteCorr+0x25c>)
80083ac: f001 f972 bl 8009694 <HAL_GPIO_WritePin>
if(HAL_UART_Transmit_IT(&huart7, iobuf, len) == HAL_OK)
80083b0: 8abb ldrh r3, [r7, #20]
80083b2: 461a mov r2, r3
80083b4: 493c ldr r1, [pc, #240] ; (80084a8 <WriteCorr+0x258>)
80083b6: 4838 ldr r0, [pc, #224] ; (8008498 <WriteCorr+0x248>)
80083b8: f003 fa9a bl 800b8f0 <HAL_UART_Transmit_IT>
80083bc: 4603 mov r3, r0
80083be: 2b00 cmp r3, #0
80083c0: d163 bne.n 800848a <WriteCorr+0x23a>
{
while((!TX_OK) && (HAL_GetTick() - timeout < 200));
80083c2: bf00 nop
80083c4: 4b37 ldr r3, [pc, #220] ; (80084a4 <WriteCorr+0x254>)
80083c6: 781b ldrb r3, [r3, #0]
80083c8: b2db uxtb r3, r3
80083ca: f083 0301 eor.w r3, r3, #1
80083ce: b2db uxtb r3, r3
80083d0: 2b00 cmp r3, #0
80083d2: d006 beq.n 80083e2 <WriteCorr+0x192>
80083d4: f000 f96c bl 80086b0 <HAL_GetTick>
80083d8: 4602 mov r2, r0
80083da: 68fb ldr r3, [r7, #12]
80083dc: 1ad3 subs r3, r2, r3
80083de: 2bc7 cmp r3, #199 ; 0xc7
80083e0: d9f0 bls.n 80083c4 <WriteCorr+0x174>
if(!TX_OK)
80083e2: 4b30 ldr r3, [pc, #192] ; (80084a4 <WriteCorr+0x254>)
80083e4: 781b ldrb r3, [r3, #0]
80083e6: b2db uxtb r3, r3
80083e8: f083 0301 eor.w r3, r3, #1
80083ec: b2db uxtb r3, r3
80083ee: 2b00 cmp r3, #0
80083f0: d00b beq.n 800840a <WriteCorr+0x1ba>
{
HAL_UART_Abort_IT(&huart7);
80083f2: 4829 ldr r0, [pc, #164] ; (8008498 <WriteCorr+0x248>)
80083f4: f003 faea bl 800b9cc <HAL_UART_Abort_IT>
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
80083f8: 2200 movs r2, #0
80083fa: f44f 7100 mov.w r1, #512 ; 0x200
80083fe: 482b ldr r0, [pc, #172] ; (80084ac <WriteCorr+0x25c>)
8008400: f001 f948 bl 8009694 <HAL_GPIO_WritePin>
return (-1);
8008404: f04f 33ff mov.w r3, #4294967295
8008408: e041 b.n 800848e <WriteCorr+0x23e>
}
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
800840a: 2200 movs r2, #0
800840c: f44f 7100 mov.w r1, #512 ; 0x200
8008410: 4826 ldr r0, [pc, #152] ; (80084ac <WriteCorr+0x25c>)
8008412: f001 f93f bl 8009694 <HAL_GPIO_WritePin>
HAL_UART_Receive(&huart7, rx, 1, 100); // пустой байт
8008416: 2364 movs r3, #100 ; 0x64
8008418: 2201 movs r2, #1
800841a: 4925 ldr r1, [pc, #148] ; (80084b0 <WriteCorr+0x260>)
800841c: 481e ldr r0, [pc, #120] ; (8008498 <WriteCorr+0x248>)
800841e: f003 f997 bl 800b750 <HAL_UART_Receive>
if(HAL_UART_Receive(&huart7, rx, 8, 500) == HAL_OK)
8008422: f44f 73fa mov.w r3, #500 ; 0x1f4
8008426: 2208 movs r2, #8
8008428: 4921 ldr r1, [pc, #132] ; (80084b0 <WriteCorr+0x260>)
800842a: 481b ldr r0, [pc, #108] ; (8008498 <WriteCorr+0x248>)
800842c: f003 f990 bl 800b750 <HAL_UART_Receive>
8008430: 4603 mov r3, r0
8008432: 2b00 cmp r3, #0
8008434: d120 bne.n 8008478 <WriteCorr+0x228>
{
crc = (uint16_t) ((rx[7]) << 8 | rx[6]);
8008436: 4b1e ldr r3, [pc, #120] ; (80084b0 <WriteCorr+0x260>)
8008438: 79db ldrb r3, [r3, #7]
800843a: 021b lsls r3, r3, #8
800843c: b21a sxth r2, r3
800843e: 4b1c ldr r3, [pc, #112] ; (80084b0 <WriteCorr+0x260>)
8008440: 799b ldrb r3, [r3, #6]
8008442: b21b sxth r3, r3
8008444: 4313 orrs r3, r2
8008446: b21b sxth r3, r3
8008448: 827b strh r3, [r7, #18]
if(crc == Crc16_RX(6))
800844a: 2006 movs r0, #6
800844c: f7ff f9c0 bl 80077d0 <Crc16_RX>
8008450: 4603 mov r3, r0
8008452: 461a mov r2, r3
8008454: 8a7b ldrh r3, [r7, #18]
8008456: 4293 cmp r3, r2
8008458: d10b bne.n 8008472 <WriteCorr+0x222>
{
if(rx[0] == (ch + 1))
800845a: 4b15 ldr r3, [pc, #84] ; (80084b0 <WriteCorr+0x260>)
800845c: 781b ldrb r3, [r3, #0]
800845e: 461a mov r2, r3
8008460: 79fb ldrb r3, [r7, #7]
8008462: 3301 adds r3, #1
8008464: 429a cmp r2, r3
8008466: d101 bne.n 800846c <WriteCorr+0x21c>
return 0;
8008468: 2300 movs r3, #0
800846a: e010 b.n 800848e <WriteCorr+0x23e>
else return (-1);
800846c: f04f 33ff mov.w r3, #4294967295
8008470: e00d b.n 800848e <WriteCorr+0x23e>
}
else
{
return (-1);
8008472: f04f 33ff mov.w r3, #4294967295
8008476: e00a b.n 800848e <WriteCorr+0x23e>
}
}
else
{
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8008478: 2200 movs r2, #0
800847a: f44f 7100 mov.w r1, #512 ; 0x200
800847e: 480b ldr r0, [pc, #44] ; (80084ac <WriteCorr+0x25c>)
8008480: f001 f908 bl 8009694 <HAL_GPIO_WritePin>
return (-1);
8008484: f04f 33ff mov.w r3, #4294967295
8008488: e001 b.n 800848e <WriteCorr+0x23e>
}
}
return res;
800848a: f997 3017 ldrsb.w r3, [r7, #23]
}
800848e: 4618 mov r0, r3
8008490: 3718 adds r7, #24
8008492: 46bd mov sp, r7
8008494: bd80 pop {r7, pc}
8008496: bf00 nop
8008498: 2006bb3c .word 0x2006bb3c
800849c: 2006b1e3 .word 0x2006b1e3
80084a0: 2006b1e5 .word 0x2006b1e5
80084a4: 2006b1e4 .word 0x2006b1e4
80084a8: 2006bccc .word 0x2006bccc
80084ac: 40021400 .word 0x40021400
80084b0: 2006bbc4 .word 0x2006bbc4
080084b4 <CalibrOFF>:
}
}
void CalibrOFF(void)
{
80084b4: b580 push {r7, lr}
80084b6: b084 sub sp, #16
80084b8: af00 add r7, sp, #0
uint8_t i, ch;
uint32_t MASK_CHANNELS = 0;
80084ba: 2300 movs r3, #0
80084bc: 60bb str r3, [r7, #8]
uint32_t CNT_CHANNELS = 0;
80084be: 2300 movs r3, #0
80084c0: 607b str r3, [r7, #4]
for(ch = 0; ch < 4; ch++)
80084c2: 2300 movs r3, #0
80084c4: 73bb strb r3, [r7, #14]
80084c6: e01f b.n 8008508 <CalibrOFF+0x54>
{
for(i = 0; i < 3; i++)
80084c8: 2300 movs r3, #0
80084ca: 73fb strb r3, [r7, #15]
80084cc: e016 b.n 80084fc <CalibrOFF+0x48>
{
if(Calibr(ch, 0) == 0)
80084ce: 7bbb ldrb r3, [r7, #14]
80084d0: 2100 movs r1, #0
80084d2: 4618 mov r0, r3
80084d4: f7ff fd80 bl 8007fd8 <Calibr>
80084d8: 4603 mov r3, r0
80084da: 2b00 cmp r3, #0
80084dc: d10b bne.n 80084f6 <CalibrOFF+0x42>
{
MASK_CHANNELS |= (1 << ch);
80084de: 7bbb ldrb r3, [r7, #14]
80084e0: 2201 movs r2, #1
80084e2: fa02 f303 lsl.w r3, r2, r3
80084e6: 461a mov r2, r3
80084e8: 68bb ldr r3, [r7, #8]
80084ea: 4313 orrs r3, r2
80084ec: 60bb str r3, [r7, #8]
CNT_CHANNELS++;
80084ee: 687b ldr r3, [r7, #4]
80084f0: 3301 adds r3, #1
80084f2: 607b str r3, [r7, #4]
break;
80084f4: e005 b.n 8008502 <CalibrOFF+0x4e>
for(i = 0; i < 3; i++)
80084f6: 7bfb ldrb r3, [r7, #15]
80084f8: 3301 adds r3, #1
80084fa: 73fb strb r3, [r7, #15]
80084fc: 7bfb ldrb r3, [r7, #15]
80084fe: 2b02 cmp r3, #2
8008500: d9e5 bls.n 80084ce <CalibrOFF+0x1a>
for(ch = 0; ch < 4; ch++)
8008502: 7bbb ldrb r3, [r7, #14]
8008504: 3301 adds r3, #1
8008506: 73bb strb r3, [r7, #14]
8008508: 7bbb ldrb r3, [r7, #14]
800850a: 2b03 cmp r3, #3
800850c: d9dc bls.n 80084c8 <CalibrOFF+0x14>
}
}
}
}
800850e: bf00 nop
8008510: 3710 adds r7, #16
8008512: 46bd mov sp, r7
8008514: bd80 pop {r7, pc}
...
08008518 <AskChannels>:
void AskChannels(void)
{
8008518: b580 push {r7, lr}
800851a: b082 sub sp, #8
800851c: af00 add r7, sp, #0
uint8_t i, ch;
ASK_COMPLETE = false;
800851e: 4b2f ldr r3, [pc, #188] ; (80085dc <AskChannels+0xc4>)
8008520: 2200 movs r2, #0
8008522: 701a strb r2, [r3, #0]
memset((void *) &pardata.amplif[0], 0, sizeof(AmplifData_TypeDef) * 16u);
8008524: f44f 7200 mov.w r2, #512 ; 0x200
8008528: 2100 movs r1, #0
800852a: 482d ldr r0, [pc, #180] ; (80085e0 <AskChannels+0xc8>)
800852c: f004 fca0 bl 800ce70 <memset>
MASK_CHANNELS = CNT_CHANNELS = ACTIVE_CHANNEL = 0;
8008530: 2300 movs r3, #0
8008532: 4a2c ldr r2, [pc, #176] ; (80085e4 <AskChannels+0xcc>)
8008534: 6013 str r3, [r2, #0]
8008536: 4a2c ldr r2, [pc, #176] ; (80085e8 <AskChannels+0xd0>)
8008538: 6013 str r3, [r2, #0]
800853a: 4a2c ldr r2, [pc, #176] ; (80085ec <AskChannels+0xd4>)
800853c: 6013 str r3, [r2, #0]
for(ch = 0; ch < 8; ch++)
800853e: 2300 movs r3, #0
8008540: 71bb strb r3, [r7, #6]
8008542: e026 b.n 8008592 <AskChannels+0x7a>
{
for(i = 0; i < 2; i++)
8008544: 2300 movs r3, #0
8008546: 71fb strb r3, [r7, #7]
8008548: e01d b.n 8008586 <AskChannels+0x6e>
{
if(ReadChannel(ch) == 0)
800854a: 79bb ldrb r3, [r7, #6]
800854c: 4618 mov r0, r3
800854e: f7ff f9b7 bl 80078c0 <ReadChannel>
8008552: 4603 mov r3, r0
8008554: 2b00 cmp r3, #0
8008556: d111 bne.n 800857c <AskChannels+0x64>
{
RedrawScreen();
8008558: f7fa fef4 bl 8003344 <RedrawScreen>
MASK_CHANNELS |= (1 << ch);
800855c: 79bb ldrb r3, [r7, #6]
800855e: 2201 movs r2, #1
8008560: fa02 f303 lsl.w r3, r2, r3
8008564: 461a mov r2, r3
8008566: 4b21 ldr r3, [pc, #132] ; (80085ec <AskChannels+0xd4>)
8008568: 681b ldr r3, [r3, #0]
800856a: 4313 orrs r3, r2
800856c: 4a1f ldr r2, [pc, #124] ; (80085ec <AskChannels+0xd4>)
800856e: 6013 str r3, [r2, #0]
CNT_CHANNELS++;
8008570: 4b1d ldr r3, [pc, #116] ; (80085e8 <AskChannels+0xd0>)
8008572: 681b ldr r3, [r3, #0]
8008574: 3301 adds r3, #1
8008576: 4a1c ldr r2, [pc, #112] ; (80085e8 <AskChannels+0xd0>)
8008578: 6013 str r3, [r2, #0]
break;
800857a: e007 b.n 800858c <AskChannels+0x74>
}
else
RedrawScreen();
800857c: f7fa fee2 bl 8003344 <RedrawScreen>
for(i = 0; i < 2; i++)
8008580: 79fb ldrb r3, [r7, #7]
8008582: 3301 adds r3, #1
8008584: 71fb strb r3, [r7, #7]
8008586: 79fb ldrb r3, [r7, #7]
8008588: 2b01 cmp r3, #1
800858a: d9de bls.n 800854a <AskChannels+0x32>
for(ch = 0; ch < 8; ch++)
800858c: 79bb ldrb r3, [r7, #6]
800858e: 3301 adds r3, #1
8008590: 71bb strb r3, [r7, #6]
8008592: 79bb ldrb r3, [r7, #6]
8008594: 2b07 cmp r3, #7
8008596: d9d5 bls.n 8008544 <AskChannels+0x2c>
}
}
if(CNT_CHANNELS != 0)
8008598: 4b13 ldr r3, [pc, #76] ; (80085e8 <AskChannels+0xd0>)
800859a: 681b ldr r3, [r3, #0]
800859c: 2b00 cmp r3, #0
800859e: d019 beq.n 80085d4 <AskChannels+0xbc>
{
for(i = 0; i < 8; i++)
80085a0: 2300 movs r3, #0
80085a2: 71fb strb r3, [r7, #7]
80085a4: e010 b.n 80085c8 <AskChannels+0xb0>
{
if(MASK_CHANNELS & (1 << i))
80085a6: 79fb ldrb r3, [r7, #7]
80085a8: 2201 movs r2, #1
80085aa: fa02 f303 lsl.w r3, r2, r3
80085ae: 461a mov r2, r3
80085b0: 4b0e ldr r3, [pc, #56] ; (80085ec <AskChannels+0xd4>)
80085b2: 681b ldr r3, [r3, #0]
80085b4: 4013 ands r3, r2
80085b6: 2b00 cmp r3, #0
80085b8: d003 beq.n 80085c2 <AskChannels+0xaa>
{
ACTIVE_CHANNEL = i;
80085ba: 79fb ldrb r3, [r7, #7]
80085bc: 4a09 ldr r2, [pc, #36] ; (80085e4 <AskChannels+0xcc>)
80085be: 6013 str r3, [r2, #0]
break;
80085c0: e005 b.n 80085ce <AskChannels+0xb6>
for(i = 0; i < 8; i++)
80085c2: 79fb ldrb r3, [r7, #7]
80085c4: 3301 adds r3, #1
80085c6: 71fb strb r3, [r7, #7]
80085c8: 79fb ldrb r3, [r7, #7]
80085ca: 2b07 cmp r3, #7
80085cc: d9eb bls.n 80085a6 <AskChannels+0x8e>
}
}
ASK_COMPLETE = true;
80085ce: 4b03 ldr r3, [pc, #12] ; (80085dc <AskChannels+0xc4>)
80085d0: 2201 movs r2, #1
80085d2: 701a strb r2, [r3, #0]
}
else
{
//Off();
}
}
80085d4: bf00 nop
80085d6: 3708 adds r7, #8
80085d8: 46bd mov sp, r7
80085da: bd80 pop {r7, pc}
80085dc: 2006b1e2 .word 0x2006b1e2
80085e0: 2006b3f8 .word 0x2006b3f8
80085e4: 2006b1c0 .word 0x2006b1c0
80085e8: 2006b1c4 .word 0x2006b1c4
80085ec: 20020028 .word 0x20020028
080085f0 <HAL_Init>:
* need to ensure that the SysTick time base is always set to 1 millisecond
* to have correct HAL operation.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_Init(void)
{
80085f0: b580 push {r7, lr}
80085f2: af00 add r7, sp, #0
/* Configure Instruction cache through ART accelerator */
#if (ART_ACCLERATOR_ENABLE != 0)
__HAL_FLASH_ART_ENABLE();
80085f4: 4a0b ldr r2, [pc, #44] ; (8008624 <HAL_Init+0x34>)
80085f6: 4b0b ldr r3, [pc, #44] ; (8008624 <HAL_Init+0x34>)
80085f8: 681b ldr r3, [r3, #0]
80085fa: f443 7300 orr.w r3, r3, #512 ; 0x200
80085fe: 6013 str r3, [r2, #0]
#endif /* ART_ACCLERATOR_ENABLE */
/* Configure Flash prefetch */
#if (PREFETCH_ENABLE != 0U)
__HAL_FLASH_PREFETCH_BUFFER_ENABLE();
8008600: 4a08 ldr r2, [pc, #32] ; (8008624 <HAL_Init+0x34>)
8008602: 4b08 ldr r3, [pc, #32] ; (8008624 <HAL_Init+0x34>)
8008604: 681b ldr r3, [r3, #0]
8008606: f443 7380 orr.w r3, r3, #256 ; 0x100
800860a: 6013 str r3, [r2, #0]
#endif /* PREFETCH_ENABLE */
/* Set Interrupt Group Priority */
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
800860c: 2003 movs r0, #3
800860e: f000 f96d bl 80088ec <HAL_NVIC_SetPriorityGrouping>
/* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
HAL_InitTick(TICK_INT_PRIORITY);
8008612: 2000 movs r0, #0
8008614: f000 f808 bl 8008628 <HAL_InitTick>
/* Init the low level hardware */
HAL_MspInit();
8008618: f7fe fdce bl 80071b8 <HAL_MspInit>
/* Return function status */
return HAL_OK;
800861c: 2300 movs r3, #0
}
800861e: 4618 mov r0, r3
8008620: bd80 pop {r7, pc}
8008622: bf00 nop
8008624: 40023c00 .word 0x40023c00
08008628 <HAL_InitTick>:
* implementation in user file.
* @param TickPriority Tick interrupt priority.
* @retval HAL status
*/
__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
8008628: b580 push {r7, lr}
800862a: b082 sub sp, #8
800862c: af00 add r7, sp, #0
800862e: 6078 str r0, [r7, #4]
/* Configure the SysTick to have interrupt in 1ms time basis*/
if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)
8008630: 4b12 ldr r3, [pc, #72] ; (800867c <HAL_InitTick+0x54>)
8008632: 681a ldr r2, [r3, #0]
8008634: 4b12 ldr r3, [pc, #72] ; (8008680 <HAL_InitTick+0x58>)
8008636: 781b ldrb r3, [r3, #0]
8008638: 4619 mov r1, r3
800863a: f44f 737a mov.w r3, #1000 ; 0x3e8
800863e: fbb3 f3f1 udiv r3, r3, r1
8008642: fbb2 f3f3 udiv r3, r2, r3
8008646: 4618 mov r0, r3
8008648: f000 f993 bl 8008972 <HAL_SYSTICK_Config>
800864c: 4603 mov r3, r0
800864e: 2b00 cmp r3, #0
8008650: d001 beq.n 8008656 <HAL_InitTick+0x2e>
{
return HAL_ERROR;
8008652: 2301 movs r3, #1
8008654: e00e b.n 8008674 <HAL_InitTick+0x4c>
}
/* Configure the SysTick IRQ priority */
if (TickPriority < (1UL << __NVIC_PRIO_BITS))
8008656: 687b ldr r3, [r7, #4]
8008658: 2b0f cmp r3, #15
800865a: d80a bhi.n 8008672 <HAL_InitTick+0x4a>
{
HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
800865c: 2200 movs r2, #0
800865e: 6879 ldr r1, [r7, #4]
8008660: f04f 30ff mov.w r0, #4294967295
8008664: f000 f94d bl 8008902 <HAL_NVIC_SetPriority>
uwTickPrio = TickPriority;
8008668: 4a06 ldr r2, [pc, #24] ; (8008684 <HAL_InitTick+0x5c>)
800866a: 687b ldr r3, [r7, #4]
800866c: 6013 str r3, [r2, #0]
{
return HAL_ERROR;
}
/* Return function status */
return HAL_OK;
800866e: 2300 movs r3, #0
8008670: e000 b.n 8008674 <HAL_InitTick+0x4c>
return HAL_ERROR;
8008672: 2301 movs r3, #1
}
8008674: 4618 mov r0, r3
8008676: 3708 adds r7, #8
8008678: 46bd mov sp, r7
800867a: bd80 pop {r7, pc}
800867c: 20020104 .word 0x20020104
8008680: 20020114 .word 0x20020114
8008684: 20020110 .word 0x20020110
08008688 <HAL_IncTick>:
* @note This function is declared as __weak to be overwritten in case of other
* implementations in user file.
* @retval None
*/
__weak void HAL_IncTick(void)
{
8008688: b480 push {r7}
800868a: af00 add r7, sp, #0
uwTick += uwTickFreq;
800868c: 4b06 ldr r3, [pc, #24] ; (80086a8 <HAL_IncTick+0x20>)
800868e: 781b ldrb r3, [r3, #0]
8008690: 461a mov r2, r3
8008692: 4b06 ldr r3, [pc, #24] ; (80086ac <HAL_IncTick+0x24>)
8008694: 681b ldr r3, [r3, #0]
8008696: 4413 add r3, r2
8008698: 4a04 ldr r2, [pc, #16] ; (80086ac <HAL_IncTick+0x24>)
800869a: 6013 str r3, [r2, #0]
}
800869c: bf00 nop
800869e: 46bd mov sp, r7
80086a0: f85d 7b04 ldr.w r7, [sp], #4
80086a4: 4770 bx lr
80086a6: bf00 nop
80086a8: 20020114 .word 0x20020114
80086ac: 2006bdcc .word 0x2006bdcc
080086b0 <HAL_GetTick>:
* @note This function is declared as __weak to be overwritten in case of other
* implementations in user file.
* @retval tick value
*/
__weak uint32_t HAL_GetTick(void)
{
80086b0: b480 push {r7}
80086b2: af00 add r7, sp, #0
return uwTick;
80086b4: 4b03 ldr r3, [pc, #12] ; (80086c4 <HAL_GetTick+0x14>)
80086b6: 681b ldr r3, [r3, #0]
}
80086b8: 4618 mov r0, r3
80086ba: 46bd mov sp, r7
80086bc: f85d 7b04 ldr.w r7, [sp], #4
80086c0: 4770 bx lr
80086c2: bf00 nop
80086c4: 2006bdcc .word 0x2006bdcc
080086c8 <HAL_Delay>:
* implementations in user file.
* @param Delay specifies the delay time length, in milliseconds.
* @retval None
*/
__weak void HAL_Delay(uint32_t Delay)
{
80086c8: b580 push {r7, lr}
80086ca: b084 sub sp, #16
80086cc: af00 add r7, sp, #0
80086ce: 6078 str r0, [r7, #4]
uint32_t tickstart = HAL_GetTick();
80086d0: f7ff ffee bl 80086b0 <HAL_GetTick>
80086d4: 60b8 str r0, [r7, #8]
uint32_t wait = Delay;
80086d6: 687b ldr r3, [r7, #4]
80086d8: 60fb str r3, [r7, #12]
/* Add a freq to guarantee minimum wait */
if (wait < HAL_MAX_DELAY)
80086da: 68fb ldr r3, [r7, #12]
80086dc: f1b3 3fff cmp.w r3, #4294967295
80086e0: d005 beq.n 80086ee <HAL_Delay+0x26>
{
wait += (uint32_t)(uwTickFreq);
80086e2: 4b09 ldr r3, [pc, #36] ; (8008708 <HAL_Delay+0x40>)
80086e4: 781b ldrb r3, [r3, #0]
80086e6: 461a mov r2, r3
80086e8: 68fb ldr r3, [r7, #12]
80086ea: 4413 add r3, r2
80086ec: 60fb str r3, [r7, #12]
}
while ((HAL_GetTick() - tickstart) < wait)
80086ee: bf00 nop
80086f0: f7ff ffde bl 80086b0 <HAL_GetTick>
80086f4: 4602 mov r2, r0
80086f6: 68bb ldr r3, [r7, #8]
80086f8: 1ad2 subs r2, r2, r3
80086fa: 68fb ldr r3, [r7, #12]
80086fc: 429a cmp r2, r3
80086fe: d3f7 bcc.n 80086f0 <HAL_Delay+0x28>
{
}
}
8008700: bf00 nop
8008702: 3710 adds r7, #16
8008704: 46bd mov sp, r7
8008706: bd80 pop {r7, pc}
8008708: 20020114 .word 0x20020114
0800870c <__NVIC_SetPriorityGrouping>:
In case of a conflict between priority grouping and available
priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
\param [in] PriorityGroup Priority grouping field.
*/
__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
{
800870c: b480 push {r7}
800870e: b085 sub sp, #20
8008710: af00 add r7, sp, #0
8008712: 6078 str r0, [r7, #4]
uint32_t reg_value;
uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
8008714: 687b ldr r3, [r7, #4]
8008716: f003 0307 and.w r3, r3, #7
800871a: 60fb str r3, [r7, #12]
reg_value = SCB->AIRCR; /* read old register configuration */
800871c: 4b0b ldr r3, [pc, #44] ; (800874c <__NVIC_SetPriorityGrouping+0x40>)
800871e: 68db ldr r3, [r3, #12]
8008720: 60bb str r3, [r7, #8]
reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
8008722: 68ba ldr r2, [r7, #8]
8008724: f64f 03ff movw r3, #63743 ; 0xf8ff
8008728: 4013 ands r3, r2
800872a: 60bb str r3, [r7, #8]
reg_value = (reg_value |
((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
(PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */
800872c: 68fb ldr r3, [r7, #12]
800872e: 021a lsls r2, r3, #8
((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
8008730: 68bb ldr r3, [r7, #8]
8008732: 431a orrs r2, r3
reg_value = (reg_value |
8008734: 4b06 ldr r3, [pc, #24] ; (8008750 <__NVIC_SetPriorityGrouping+0x44>)
8008736: 4313 orrs r3, r2
8008738: 60bb str r3, [r7, #8]
SCB->AIRCR = reg_value;
800873a: 4a04 ldr r2, [pc, #16] ; (800874c <__NVIC_SetPriorityGrouping+0x40>)
800873c: 68bb ldr r3, [r7, #8]
800873e: 60d3 str r3, [r2, #12]
}
8008740: bf00 nop
8008742: 3714 adds r7, #20
8008744: 46bd mov sp, r7
8008746: f85d 7b04 ldr.w r7, [sp], #4
800874a: 4770 bx lr
800874c: e000ed00 .word 0xe000ed00
8008750: 05fa0000 .word 0x05fa0000
08008754 <__NVIC_GetPriorityGrouping>:
\brief Get Priority Grouping
\details Reads the priority grouping field from the NVIC Interrupt Controller.
\return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
*/
__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
{
8008754: b480 push {r7}
8008756: af00 add r7, sp, #0
return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
8008758: 4b04 ldr r3, [pc, #16] ; (800876c <__NVIC_GetPriorityGrouping+0x18>)
800875a: 68db ldr r3, [r3, #12]
800875c: 0a1b lsrs r3, r3, #8
800875e: f003 0307 and.w r3, r3, #7
}
8008762: 4618 mov r0, r3
8008764: 46bd mov sp, r7
8008766: f85d 7b04 ldr.w r7, [sp], #4
800876a: 4770 bx lr
800876c: e000ed00 .word 0xe000ed00
08008770 <__NVIC_EnableIRQ>:
\details Enables a device specific interrupt in the NVIC interrupt controller.
\param [in] IRQn Device specific interrupt number.
\note IRQn must not be negative.
*/
__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
{
8008770: b480 push {r7}
8008772: b083 sub sp, #12
8008774: af00 add r7, sp, #0
8008776: 4603 mov r3, r0
8008778: 71fb strb r3, [r7, #7]
if ((int32_t)(IRQn) >= 0)
800877a: f997 3007 ldrsb.w r3, [r7, #7]
800877e: 2b00 cmp r3, #0
8008780: db0b blt.n 800879a <__NVIC_EnableIRQ+0x2a>
{
NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
8008782: 4909 ldr r1, [pc, #36] ; (80087a8 <__NVIC_EnableIRQ+0x38>)
8008784: f997 3007 ldrsb.w r3, [r7, #7]
8008788: 095b lsrs r3, r3, #5
800878a: 79fa ldrb r2, [r7, #7]
800878c: f002 021f and.w r2, r2, #31
8008790: 2001 movs r0, #1
8008792: fa00 f202 lsl.w r2, r0, r2
8008796: f841 2023 str.w r2, [r1, r3, lsl #2]
}
}
800879a: bf00 nop
800879c: 370c adds r7, #12
800879e: 46bd mov sp, r7
80087a0: f85d 7b04 ldr.w r7, [sp], #4
80087a4: 4770 bx lr
80087a6: bf00 nop
80087a8: e000e100 .word 0xe000e100
080087ac <__NVIC_DisableIRQ>:
\details Disables a device specific interrupt in the NVIC interrupt controller.
\param [in] IRQn Device specific interrupt number.
\note IRQn must not be negative.
*/
__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)
{
80087ac: b480 push {r7}
80087ae: b083 sub sp, #12
80087b0: af00 add r7, sp, #0
80087b2: 4603 mov r3, r0
80087b4: 71fb strb r3, [r7, #7]
if ((int32_t)(IRQn) >= 0)
80087b6: f997 3007 ldrsb.w r3, [r7, #7]
80087ba: 2b00 cmp r3, #0
80087bc: db10 blt.n 80087e0 <__NVIC_DisableIRQ+0x34>
{
NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
80087be: 490b ldr r1, [pc, #44] ; (80087ec <__NVIC_DisableIRQ+0x40>)
80087c0: f997 3007 ldrsb.w r3, [r7, #7]
80087c4: 095b lsrs r3, r3, #5
80087c6: 79fa ldrb r2, [r7, #7]
80087c8: f002 021f and.w r2, r2, #31
80087cc: 2001 movs r0, #1
80087ce: fa00 f202 lsl.w r2, r0, r2
80087d2: 3320 adds r3, #32
80087d4: f841 2023 str.w r2, [r1, r3, lsl #2]
\details Acts as a special kind of Data Memory Barrier.
It completes when all explicit memory accesses before this instruction complete.
*/
__STATIC_FORCEINLINE void __DSB(void)
{
__ASM volatile ("dsb 0xF":::"memory");
80087d8: f3bf 8f4f dsb sy
__ASM volatile ("isb 0xF":::"memory");
80087dc: f3bf 8f6f isb sy
__DSB();
__ISB();
}
}
80087e0: bf00 nop
80087e2: 370c adds r7, #12
80087e4: 46bd mov sp, r7
80087e6: f85d 7b04 ldr.w r7, [sp], #4
80087ea: 4770 bx lr
80087ec: e000e100 .word 0xe000e100
080087f0 <__NVIC_SetPriority>:
\param [in] IRQn Interrupt number.
\param [in] priority Priority to set.
\note The priority cannot be set for every processor exception.
*/
__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
80087f0: b480 push {r7}
80087f2: b083 sub sp, #12
80087f4: af00 add r7, sp, #0
80087f6: 4603 mov r3, r0
80087f8: 6039 str r1, [r7, #0]
80087fa: 71fb strb r3, [r7, #7]
if ((int32_t)(IRQn) >= 0)
80087fc: f997 3007 ldrsb.w r3, [r7, #7]
8008800: 2b00 cmp r3, #0
8008802: db0a blt.n 800881a <__NVIC_SetPriority+0x2a>
{
NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
8008804: 490d ldr r1, [pc, #52] ; (800883c <__NVIC_SetPriority+0x4c>)
8008806: f997 3007 ldrsb.w r3, [r7, #7]
800880a: 683a ldr r2, [r7, #0]
800880c: b2d2 uxtb r2, r2
800880e: 0112 lsls r2, r2, #4
8008810: b2d2 uxtb r2, r2
8008812: 440b add r3, r1
8008814: f883 2300 strb.w r2, [r3, #768] ; 0x300
}
else
{
SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
}
}
8008818: e00a b.n 8008830 <__NVIC_SetPriority+0x40>
SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
800881a: 4909 ldr r1, [pc, #36] ; (8008840 <__NVIC_SetPriority+0x50>)
800881c: 79fb ldrb r3, [r7, #7]
800881e: f003 030f and.w r3, r3, #15
8008822: 3b04 subs r3, #4
8008824: 683a ldr r2, [r7, #0]
8008826: b2d2 uxtb r2, r2
8008828: 0112 lsls r2, r2, #4
800882a: b2d2 uxtb r2, r2
800882c: 440b add r3, r1
800882e: 761a strb r2, [r3, #24]
}
8008830: bf00 nop
8008832: 370c adds r7, #12
8008834: 46bd mov sp, r7
8008836: f85d 7b04 ldr.w r7, [sp], #4
800883a: 4770 bx lr
800883c: e000e100 .word 0xe000e100
8008840: e000ed00 .word 0xe000ed00
08008844 <NVIC_EncodePriority>:
\param [in] PreemptPriority Preemptive priority value (starting from 0).
\param [in] SubPriority Subpriority value (starting from 0).
\return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
*/
__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
{
8008844: b480 push {r7}
8008846: b089 sub sp, #36 ; 0x24
8008848: af00 add r7, sp, #0
800884a: 60f8 str r0, [r7, #12]
800884c: 60b9 str r1, [r7, #8]
800884e: 607a str r2, [r7, #4]
uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
8008850: 68fb ldr r3, [r7, #12]
8008852: f003 0307 and.w r3, r3, #7
8008856: 61fb str r3, [r7, #28]
uint32_t PreemptPriorityBits;
uint32_t SubPriorityBits;
PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
8008858: 69fb ldr r3, [r7, #28]
800885a: f1c3 0307 rsb r3, r3, #7
800885e: 2b04 cmp r3, #4
8008860: bf28 it cs
8008862: 2304 movcs r3, #4
8008864: 61bb str r3, [r7, #24]
SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
8008866: 69fb ldr r3, [r7, #28]
8008868: 3304 adds r3, #4
800886a: 2b06 cmp r3, #6
800886c: d902 bls.n 8008874 <NVIC_EncodePriority+0x30>
800886e: 69fb ldr r3, [r7, #28]
8008870: 3b03 subs r3, #3
8008872: e000 b.n 8008876 <NVIC_EncodePriority+0x32>
8008874: 2300 movs r3, #0
8008876: 617b str r3, [r7, #20]
return (
((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
8008878: 2201 movs r2, #1
800887a: 69bb ldr r3, [r7, #24]
800887c: fa02 f303 lsl.w r3, r2, r3
8008880: 1e5a subs r2, r3, #1
8008882: 68bb ldr r3, [r7, #8]
8008884: 401a ands r2, r3
8008886: 697b ldr r3, [r7, #20]
8008888: 409a lsls r2, r3
((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))
800888a: 2101 movs r1, #1
800888c: 697b ldr r3, [r7, #20]
800888e: fa01 f303 lsl.w r3, r1, r3
8008892: 1e59 subs r1, r3, #1
8008894: 687b ldr r3, [r7, #4]
8008896: 400b ands r3, r1
((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
8008898: 4313 orrs r3, r2
);
}
800889a: 4618 mov r0, r3
800889c: 3724 adds r7, #36 ; 0x24
800889e: 46bd mov sp, r7
80088a0: f85d 7b04 ldr.w r7, [sp], #4
80088a4: 4770 bx lr
...
080088a8 <SysTick_Config>:
\note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
must contain a vendor-specific implementation of this function.
*/
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
80088a8: b580 push {r7, lr}
80088aa: b082 sub sp, #8
80088ac: af00 add r7, sp, #0
80088ae: 6078 str r0, [r7, #4]
if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
80088b0: 687b ldr r3, [r7, #4]
80088b2: 3b01 subs r3, #1
80088b4: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000
80088b8: d301 bcc.n 80088be <SysTick_Config+0x16>
{
return (1UL); /* Reload value impossible */
80088ba: 2301 movs r3, #1
80088bc: e00f b.n 80088de <SysTick_Config+0x36>
}
SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
80088be: 4a0a ldr r2, [pc, #40] ; (80088e8 <SysTick_Config+0x40>)
80088c0: 687b ldr r3, [r7, #4]
80088c2: 3b01 subs r3, #1
80088c4: 6053 str r3, [r2, #4]
NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
80088c6: 210f movs r1, #15
80088c8: f04f 30ff mov.w r0, #4294967295
80088cc: f7ff ff90 bl 80087f0 <__NVIC_SetPriority>
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
80088d0: 4b05 ldr r3, [pc, #20] ; (80088e8 <SysTick_Config+0x40>)
80088d2: 2200 movs r2, #0
80088d4: 609a str r2, [r3, #8]
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
80088d6: 4b04 ldr r3, [pc, #16] ; (80088e8 <SysTick_Config+0x40>)
80088d8: 2207 movs r2, #7
80088da: 601a str r2, [r3, #0]
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0UL); /* Function successful */
80088dc: 2300 movs r3, #0
}
80088de: 4618 mov r0, r3
80088e0: 3708 adds r7, #8
80088e2: 46bd mov sp, r7
80088e4: bd80 pop {r7, pc}
80088e6: bf00 nop
80088e8: e000e010 .word 0xe000e010
080088ec <HAL_NVIC_SetPriorityGrouping>:
* @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible.
* The pending IRQ priority will be managed only by the subpriority.
* @retval None
*/
void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
{
80088ec: b580 push {r7, lr}
80088ee: b082 sub sp, #8
80088f0: af00 add r7, sp, #0
80088f2: 6078 str r0, [r7, #4]
/* Check the parameters */
assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
/* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
NVIC_SetPriorityGrouping(PriorityGroup);
80088f4: 6878 ldr r0, [r7, #4]
80088f6: f7ff ff09 bl 800870c <__NVIC_SetPriorityGrouping>
}
80088fa: bf00 nop
80088fc: 3708 adds r7, #8
80088fe: 46bd mov sp, r7
8008900: bd80 pop {r7, pc}
08008902 <HAL_NVIC_SetPriority>:
* This parameter can be a value between 0 and 15
* A lower priority value indicates a higher priority.
* @retval None
*/
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
{
8008902: b580 push {r7, lr}
8008904: b086 sub sp, #24
8008906: af00 add r7, sp, #0
8008908: 4603 mov r3, r0
800890a: 60b9 str r1, [r7, #8]
800890c: 607a str r2, [r7, #4]
800890e: 73fb strb r3, [r7, #15]
uint32_t prioritygroup = 0x00;
8008910: 2300 movs r3, #0
8008912: 617b str r3, [r7, #20]
/* Check the parameters */
assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
prioritygroup = NVIC_GetPriorityGrouping();
8008914: f7ff ff1e bl 8008754 <__NVIC_GetPriorityGrouping>
8008918: 6178 str r0, [r7, #20]
NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
800891a: 687a ldr r2, [r7, #4]
800891c: 68b9 ldr r1, [r7, #8]
800891e: 6978 ldr r0, [r7, #20]
8008920: f7ff ff90 bl 8008844 <NVIC_EncodePriority>
8008924: 4602 mov r2, r0
8008926: f997 300f ldrsb.w r3, [r7, #15]
800892a: 4611 mov r1, r2
800892c: 4618 mov r0, r3
800892e: f7ff ff5f bl 80087f0 <__NVIC_SetPriority>
}
8008932: bf00 nop
8008934: 3718 adds r7, #24
8008936: 46bd mov sp, r7
8008938: bd80 pop {r7, pc}
0800893a <HAL_NVIC_EnableIRQ>:
* This parameter can be an enumerator of IRQn_Type enumeration
* (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))
* @retval None
*/
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
{
800893a: b580 push {r7, lr}
800893c: b082 sub sp, #8
800893e: af00 add r7, sp, #0
8008940: 4603 mov r3, r0
8008942: 71fb strb r3, [r7, #7]
/* Check the parameters */
assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
/* Enable interrupt */
NVIC_EnableIRQ(IRQn);
8008944: f997 3007 ldrsb.w r3, [r7, #7]
8008948: 4618 mov r0, r3
800894a: f7ff ff11 bl 8008770 <__NVIC_EnableIRQ>
}
800894e: bf00 nop
8008950: 3708 adds r7, #8
8008952: 46bd mov sp, r7
8008954: bd80 pop {r7, pc}
08008956 <HAL_NVIC_DisableIRQ>:
* This parameter can be an enumerator of IRQn_Type enumeration
* (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))
* @retval None
*/
void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
{
8008956: b580 push {r7, lr}
8008958: b082 sub sp, #8
800895a: af00 add r7, sp, #0
800895c: 4603 mov r3, r0
800895e: 71fb strb r3, [r7, #7]
/* Check the parameters */
assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
/* Disable interrupt */
NVIC_DisableIRQ(IRQn);
8008960: f997 3007 ldrsb.w r3, [r7, #7]
8008964: 4618 mov r0, r3
8008966: f7ff ff21 bl 80087ac <__NVIC_DisableIRQ>
}
800896a: bf00 nop
800896c: 3708 adds r7, #8
800896e: 46bd mov sp, r7
8008970: bd80 pop {r7, pc}
08008972 <HAL_SYSTICK_Config>:
* @param TicksNumb Specifies the ticks Number of ticks between two interrupts.
* @retval status: - 0 Function succeeded.
* - 1 Function failed.
*/
uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
{
8008972: b580 push {r7, lr}
8008974: b082 sub sp, #8
8008976: af00 add r7, sp, #0
8008978: 6078 str r0, [r7, #4]
return SysTick_Config(TicksNumb);
800897a: 6878 ldr r0, [r7, #4]
800897c: f7ff ff94 bl 80088a8 <SysTick_Config>
8008980: 4603 mov r3, r0
}
8008982: 4618 mov r0, r3
8008984: 3708 adds r7, #8
8008986: 46bd mov sp, r7
8008988: bd80 pop {r7, pc}
0800898a <HAL_DMA_Abort>:
* and the Stream will be effectively disabled only after the transfer of
* this single data is finished.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
{
800898a: b580 push {r7, lr}
800898c: b084 sub sp, #16
800898e: af00 add r7, sp, #0
8008990: 6078 str r0, [r7, #4]
/* calculate DMA base and stream number */
DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress;
8008992: 687b ldr r3, [r7, #4]
8008994: 6d9b ldr r3, [r3, #88] ; 0x58
8008996: 60fb str r3, [r7, #12]
uint32_t tickstart = HAL_GetTick();
8008998: f7ff fe8a bl 80086b0 <HAL_GetTick>
800899c: 60b8 str r0, [r7, #8]
if(hdma->State != HAL_DMA_STATE_BUSY)
800899e: 687b ldr r3, [r7, #4]
80089a0: f893 3035 ldrb.w r3, [r3, #53] ; 0x35
80089a4: b2db uxtb r3, r3
80089a6: 2b02 cmp r3, #2
80089a8: d008 beq.n 80089bc <HAL_DMA_Abort+0x32>
{
hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;
80089aa: 687b ldr r3, [r7, #4]
80089ac: 2280 movs r2, #128 ; 0x80
80089ae: 655a str r2, [r3, #84] ; 0x54
/* Process Unlocked */
__HAL_UNLOCK(hdma);
80089b0: 687b ldr r3, [r7, #4]
80089b2: 2200 movs r2, #0
80089b4: f883 2034 strb.w r2, [r3, #52] ; 0x34
return HAL_ERROR;
80089b8: 2301 movs r3, #1
80089ba: e052 b.n 8008a62 <HAL_DMA_Abort+0xd8>
}
else
{
/* Disable all the transfer interrupts */
hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME);
80089bc: 687b ldr r3, [r7, #4]
80089be: 681b ldr r3, [r3, #0]
80089c0: 687a ldr r2, [r7, #4]
80089c2: 6812 ldr r2, [r2, #0]
80089c4: 6812 ldr r2, [r2, #0]
80089c6: f022 0216 bic.w r2, r2, #22
80089ca: 601a str r2, [r3, #0]
hdma->Instance->FCR &= ~(DMA_IT_FE);
80089cc: 687b ldr r3, [r7, #4]
80089ce: 681b ldr r3, [r3, #0]
80089d0: 687a ldr r2, [r7, #4]
80089d2: 6812 ldr r2, [r2, #0]
80089d4: 6952 ldr r2, [r2, #20]
80089d6: f022 0280 bic.w r2, r2, #128 ; 0x80
80089da: 615a str r2, [r3, #20]
if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL))
80089dc: 687b ldr r3, [r7, #4]
80089de: 6c1b ldr r3, [r3, #64] ; 0x40
80089e0: 2b00 cmp r3, #0
80089e2: d103 bne.n 80089ec <HAL_DMA_Abort+0x62>
80089e4: 687b ldr r3, [r7, #4]
80089e6: 6c9b ldr r3, [r3, #72] ; 0x48
80089e8: 2b00 cmp r3, #0
80089ea: d007 beq.n 80089fc <HAL_DMA_Abort+0x72>
{
hdma->Instance->CR &= ~(DMA_IT_HT);
80089ec: 687b ldr r3, [r7, #4]
80089ee: 681b ldr r3, [r3, #0]
80089f0: 687a ldr r2, [r7, #4]
80089f2: 6812 ldr r2, [r2, #0]
80089f4: 6812 ldr r2, [r2, #0]
80089f6: f022 0208 bic.w r2, r2, #8
80089fa: 601a str r2, [r3, #0]
}
/* Disable the stream */
__HAL_DMA_DISABLE(hdma);
80089fc: 687b ldr r3, [r7, #4]
80089fe: 681b ldr r3, [r3, #0]
8008a00: 687a ldr r2, [r7, #4]
8008a02: 6812 ldr r2, [r2, #0]
8008a04: 6812 ldr r2, [r2, #0]
8008a06: f022 0201 bic.w r2, r2, #1
8008a0a: 601a str r2, [r3, #0]
/* Check if the DMA Stream is effectively disabled */
while((hdma->Instance->CR & DMA_SxCR_EN) != RESET)
8008a0c: e013 b.n 8008a36 <HAL_DMA_Abort+0xac>
{
/* Check for the Timeout */
if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT)
8008a0e: f7ff fe4f bl 80086b0 <HAL_GetTick>
8008a12: 4602 mov r2, r0
8008a14: 68bb ldr r3, [r7, #8]
8008a16: 1ad3 subs r3, r2, r3
8008a18: 2b05 cmp r3, #5
8008a1a: d90c bls.n 8008a36 <HAL_DMA_Abort+0xac>
{
/* Update error code */
hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT;
8008a1c: 687b ldr r3, [r7, #4]
8008a1e: 2220 movs r2, #32
8008a20: 655a str r2, [r3, #84] ; 0x54
/* Change the DMA state */
hdma->State = HAL_DMA_STATE_TIMEOUT;
8008a22: 687b ldr r3, [r7, #4]
8008a24: 2203 movs r2, #3
8008a26: f883 2035 strb.w r2, [r3, #53] ; 0x35
/* Process Unlocked */
__HAL_UNLOCK(hdma);
8008a2a: 687b ldr r3, [r7, #4]
8008a2c: 2200 movs r2, #0
8008a2e: f883 2034 strb.w r2, [r3, #52] ; 0x34
return HAL_TIMEOUT;
8008a32: 2303 movs r3, #3
8008a34: e015 b.n 8008a62 <HAL_DMA_Abort+0xd8>
while((hdma->Instance->CR & DMA_SxCR_EN) != RESET)
8008a36: 687b ldr r3, [r7, #4]
8008a38: 681b ldr r3, [r3, #0]
8008a3a: 681b ldr r3, [r3, #0]
8008a3c: f003 0301 and.w r3, r3, #1
8008a40: 2b00 cmp r3, #0
8008a42: d1e4 bne.n 8008a0e <HAL_DMA_Abort+0x84>
}
}
/* Clear all interrupt flags at correct offset within the register */
regs->IFCR = 0x3FU << hdma->StreamIndex;
8008a44: 687b ldr r3, [r7, #4]
8008a46: 6ddb ldr r3, [r3, #92] ; 0x5c
8008a48: 223f movs r2, #63 ; 0x3f
8008a4a: 409a lsls r2, r3
8008a4c: 68fb ldr r3, [r7, #12]
8008a4e: 609a str r2, [r3, #8]
/* Change the DMA state*/
hdma->State = HAL_DMA_STATE_READY;
8008a50: 687b ldr r3, [r7, #4]
8008a52: 2201 movs r2, #1
8008a54: f883 2035 strb.w r2, [r3, #53] ; 0x35
/* Process Unlocked */
__HAL_UNLOCK(hdma);
8008a58: 687b ldr r3, [r7, #4]
8008a5a: 2200 movs r2, #0
8008a5c: f883 2034 strb.w r2, [r3, #52] ; 0x34
}
return HAL_OK;
8008a60: 2300 movs r3, #0
}
8008a62: 4618 mov r0, r3
8008a64: 3710 adds r7, #16
8008a66: 46bd mov sp, r7
8008a68: bd80 pop {r7, pc}
08008a6a <HAL_DMA_Abort_IT>:
* @param hdma pointer to a DMA_HandleTypeDef structure that contains
* the configuration information for the specified DMA Stream.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
{
8008a6a: b480 push {r7}
8008a6c: b083 sub sp, #12
8008a6e: af00 add r7, sp, #0
8008a70: 6078 str r0, [r7, #4]
if(hdma->State != HAL_DMA_STATE_BUSY)
8008a72: 687b ldr r3, [r7, #4]
8008a74: f893 3035 ldrb.w r3, [r3, #53] ; 0x35
8008a78: b2db uxtb r3, r3
8008a7a: 2b02 cmp r3, #2
8008a7c: d004 beq.n 8008a88 <HAL_DMA_Abort_IT+0x1e>
{
hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;
8008a7e: 687b ldr r3, [r7, #4]
8008a80: 2280 movs r2, #128 ; 0x80
8008a82: 655a str r2, [r3, #84] ; 0x54
return HAL_ERROR;
8008a84: 2301 movs r3, #1
8008a86: e00c b.n 8008aa2 <HAL_DMA_Abort_IT+0x38>
}
else
{
/* Set Abort State */
hdma->State = HAL_DMA_STATE_ABORT;
8008a88: 687b ldr r3, [r7, #4]
8008a8a: 2205 movs r2, #5
8008a8c: f883 2035 strb.w r2, [r3, #53] ; 0x35
/* Disable the stream */
__HAL_DMA_DISABLE(hdma);
8008a90: 687b ldr r3, [r7, #4]
8008a92: 681b ldr r3, [r3, #0]
8008a94: 687a ldr r2, [r7, #4]
8008a96: 6812 ldr r2, [r2, #0]
8008a98: 6812 ldr r2, [r2, #0]
8008a9a: f022 0201 bic.w r2, r2, #1
8008a9e: 601a str r2, [r3, #0]
}
return HAL_OK;
8008aa0: 2300 movs r3, #0
}
8008aa2: 4618 mov r0, r3
8008aa4: 370c adds r7, #12
8008aa6: 46bd mov sp, r7
8008aa8: f85d 7b04 ldr.w r7, [sp], #4
8008aac: 4770 bx lr
...
08008ab0 <HAL_DMA_IRQHandler>:
* @param hdma pointer to a DMA_HandleTypeDef structure that contains
* the configuration information for the specified DMA Stream.
* @retval None
*/
void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
{
8008ab0: b580 push {r7, lr}
8008ab2: b086 sub sp, #24
8008ab4: af00 add r7, sp, #0
8008ab6: 6078 str r0, [r7, #4]
uint32_t tmpisr;
__IO uint32_t count = 0;
8008ab8: 2300 movs r3, #0
8008aba: 60bb str r3, [r7, #8]
uint32_t timeout = SystemCoreClock / 9600;
8008abc: 4b92 ldr r3, [pc, #584] ; (8008d08 <HAL_DMA_IRQHandler+0x258>)
8008abe: 681b ldr r3, [r3, #0]
8008ac0: 4a92 ldr r2, [pc, #584] ; (8008d0c <HAL_DMA_IRQHandler+0x25c>)
8008ac2: fba2 2303 umull r2, r3, r2, r3
8008ac6: 0a9b lsrs r3, r3, #10
8008ac8: 617b str r3, [r7, #20]
/* calculate DMA base and stream number */
DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress;
8008aca: 687b ldr r3, [r7, #4]
8008acc: 6d9b ldr r3, [r3, #88] ; 0x58
8008ace: 613b str r3, [r7, #16]
tmpisr = regs->ISR;
8008ad0: 693b ldr r3, [r7, #16]
8008ad2: 681b ldr r3, [r3, #0]
8008ad4: 60fb str r3, [r7, #12]
/* Transfer Error Interrupt management ***************************************/
if ((tmpisr & (DMA_FLAG_TEIF0_4 << hdma->StreamIndex)) != RESET)
8008ad6: 687b ldr r3, [r7, #4]
8008ad8: 6ddb ldr r3, [r3, #92] ; 0x5c
8008ada: 2208 movs r2, #8
8008adc: 409a lsls r2, r3
8008ade: 68fb ldr r3, [r7, #12]
8008ae0: 4013 ands r3, r2
8008ae2: 2b00 cmp r3, #0
8008ae4: d01a beq.n 8008b1c <HAL_DMA_IRQHandler+0x6c>
{
if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TE) != RESET)
8008ae6: 687b ldr r3, [r7, #4]
8008ae8: 681b ldr r3, [r3, #0]
8008aea: 681b ldr r3, [r3, #0]
8008aec: f003 0304 and.w r3, r3, #4
8008af0: 2b00 cmp r3, #0
8008af2: d013 beq.n 8008b1c <HAL_DMA_IRQHandler+0x6c>
{
/* Disable the transfer error interrupt */
hdma->Instance->CR &= ~(DMA_IT_TE);
8008af4: 687b ldr r3, [r7, #4]
8008af6: 681b ldr r3, [r3, #0]
8008af8: 687a ldr r2, [r7, #4]
8008afa: 6812 ldr r2, [r2, #0]
8008afc: 6812 ldr r2, [r2, #0]
8008afe: f022 0204 bic.w r2, r2, #4
8008b02: 601a str r2, [r3, #0]
/* Clear the transfer error flag */
regs->IFCR = DMA_FLAG_TEIF0_4 << hdma->StreamIndex;
8008b04: 687b ldr r3, [r7, #4]
8008b06: 6ddb ldr r3, [r3, #92] ; 0x5c
8008b08: 2208 movs r2, #8
8008b0a: 409a lsls r2, r3
8008b0c: 693b ldr r3, [r7, #16]
8008b0e: 609a str r2, [r3, #8]
/* Update error code */
hdma->ErrorCode |= HAL_DMA_ERROR_TE;
8008b10: 687b ldr r3, [r7, #4]
8008b12: 6d5b ldr r3, [r3, #84] ; 0x54
8008b14: f043 0201 orr.w r2, r3, #1
8008b18: 687b ldr r3, [r7, #4]
8008b1a: 655a str r2, [r3, #84] ; 0x54
}
}
/* FIFO Error Interrupt management ******************************************/
if ((tmpisr & (DMA_FLAG_FEIF0_4 << hdma->StreamIndex)) != RESET)
8008b1c: 687b ldr r3, [r7, #4]
8008b1e: 6ddb ldr r3, [r3, #92] ; 0x5c
8008b20: 2201 movs r2, #1
8008b22: 409a lsls r2, r3
8008b24: 68fb ldr r3, [r7, #12]
8008b26: 4013 ands r3, r2
8008b28: 2b00 cmp r3, #0
8008b2a: d012 beq.n 8008b52 <HAL_DMA_IRQHandler+0xa2>
{
if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_FE) != RESET)
8008b2c: 687b ldr r3, [r7, #4]
8008b2e: 681b ldr r3, [r3, #0]
8008b30: 695b ldr r3, [r3, #20]
8008b32: f003 0380 and.w r3, r3, #128 ; 0x80
8008b36: 2b00 cmp r3, #0
8008b38: d00b beq.n 8008b52 <HAL_DMA_IRQHandler+0xa2>
{
/* Clear the FIFO error flag */
regs->IFCR = DMA_FLAG_FEIF0_4 << hdma->StreamIndex;
8008b3a: 687b ldr r3, [r7, #4]
8008b3c: 6ddb ldr r3, [r3, #92] ; 0x5c
8008b3e: 2201 movs r2, #1
8008b40: 409a lsls r2, r3
8008b42: 693b ldr r3, [r7, #16]
8008b44: 609a str r2, [r3, #8]
/* Update error code */
hdma->ErrorCode |= HAL_DMA_ERROR_FE;
8008b46: 687b ldr r3, [r7, #4]
8008b48: 6d5b ldr r3, [r3, #84] ; 0x54
8008b4a: f043 0202 orr.w r2, r3, #2
8008b4e: 687b ldr r3, [r7, #4]
8008b50: 655a str r2, [r3, #84] ; 0x54
}
}
/* Direct Mode Error Interrupt management ***********************************/
if ((tmpisr & (DMA_FLAG_DMEIF0_4 << hdma->StreamIndex)) != RESET)
8008b52: 687b ldr r3, [r7, #4]
8008b54: 6ddb ldr r3, [r3, #92] ; 0x5c
8008b56: 2204 movs r2, #4
8008b58: 409a lsls r2, r3
8008b5a: 68fb ldr r3, [r7, #12]
8008b5c: 4013 ands r3, r2
8008b5e: 2b00 cmp r3, #0
8008b60: d012 beq.n 8008b88 <HAL_DMA_IRQHandler+0xd8>
{
if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_DME) != RESET)
8008b62: 687b ldr r3, [r7, #4]
8008b64: 681b ldr r3, [r3, #0]
8008b66: 681b ldr r3, [r3, #0]
8008b68: f003 0302 and.w r3, r3, #2
8008b6c: 2b00 cmp r3, #0
8008b6e: d00b beq.n 8008b88 <HAL_DMA_IRQHandler+0xd8>
{
/* Clear the direct mode error flag */
regs->IFCR = DMA_FLAG_DMEIF0_4 << hdma->StreamIndex;
8008b70: 687b ldr r3, [r7, #4]
8008b72: 6ddb ldr r3, [r3, #92] ; 0x5c
8008b74: 2204 movs r2, #4
8008b76: 409a lsls r2, r3
8008b78: 693b ldr r3, [r7, #16]
8008b7a: 609a str r2, [r3, #8]
/* Update error code */
hdma->ErrorCode |= HAL_DMA_ERROR_DME;
8008b7c: 687b ldr r3, [r7, #4]
8008b7e: 6d5b ldr r3, [r3, #84] ; 0x54
8008b80: f043 0204 orr.w r2, r3, #4
8008b84: 687b ldr r3, [r7, #4]
8008b86: 655a str r2, [r3, #84] ; 0x54
}
}
/* Half Transfer Complete Interrupt management ******************************/
if ((tmpisr & (DMA_FLAG_HTIF0_4 << hdma->StreamIndex)) != RESET)
8008b88: 687b ldr r3, [r7, #4]
8008b8a: 6ddb ldr r3, [r3, #92] ; 0x5c
8008b8c: 2210 movs r2, #16
8008b8e: 409a lsls r2, r3
8008b90: 68fb ldr r3, [r7, #12]
8008b92: 4013 ands r3, r2
8008b94: 2b00 cmp r3, #0
8008b96: d043 beq.n 8008c20 <HAL_DMA_IRQHandler+0x170>
{
if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_HT) != RESET)
8008b98: 687b ldr r3, [r7, #4]
8008b9a: 681b ldr r3, [r3, #0]
8008b9c: 681b ldr r3, [r3, #0]
8008b9e: f003 0308 and.w r3, r3, #8
8008ba2: 2b00 cmp r3, #0
8008ba4: d03c beq.n 8008c20 <HAL_DMA_IRQHandler+0x170>
{
/* Clear the half transfer complete flag */
regs->IFCR = DMA_FLAG_HTIF0_4 << hdma->StreamIndex;
8008ba6: 687b ldr r3, [r7, #4]
8008ba8: 6ddb ldr r3, [r3, #92] ; 0x5c
8008baa: 2210 movs r2, #16
8008bac: 409a lsls r2, r3
8008bae: 693b ldr r3, [r7, #16]
8008bb0: 609a str r2, [r3, #8]
/* Multi_Buffering mode enabled */
if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET)
8008bb2: 687b ldr r3, [r7, #4]
8008bb4: 681b ldr r3, [r3, #0]
8008bb6: 681b ldr r3, [r3, #0]
8008bb8: f403 2380 and.w r3, r3, #262144 ; 0x40000
8008bbc: 2b00 cmp r3, #0
8008bbe: d018 beq.n 8008bf2 <HAL_DMA_IRQHandler+0x142>
{
/* Current memory buffer used is Memory 0 */
if((hdma->Instance->CR & DMA_SxCR_CT) == RESET)
8008bc0: 687b ldr r3, [r7, #4]
8008bc2: 681b ldr r3, [r3, #0]
8008bc4: 681b ldr r3, [r3, #0]
8008bc6: f403 2300 and.w r3, r3, #524288 ; 0x80000
8008bca: 2b00 cmp r3, #0
8008bcc: d108 bne.n 8008be0 <HAL_DMA_IRQHandler+0x130>
{
if(hdma->XferHalfCpltCallback != NULL)
8008bce: 687b ldr r3, [r7, #4]
8008bd0: 6c1b ldr r3, [r3, #64] ; 0x40
8008bd2: 2b00 cmp r3, #0
8008bd4: d024 beq.n 8008c20 <HAL_DMA_IRQHandler+0x170>
{
/* Half transfer callback */
hdma->XferHalfCpltCallback(hdma);
8008bd6: 687b ldr r3, [r7, #4]
8008bd8: 6c1b ldr r3, [r3, #64] ; 0x40
8008bda: 6878 ldr r0, [r7, #4]
8008bdc: 4798 blx r3
8008bde: e01f b.n 8008c20 <HAL_DMA_IRQHandler+0x170>
}
}
/* Current memory buffer used is Memory 1 */
else
{
if(hdma->XferM1HalfCpltCallback != NULL)
8008be0: 687b ldr r3, [r7, #4]
8008be2: 6c9b ldr r3, [r3, #72] ; 0x48
8008be4: 2b00 cmp r3, #0
8008be6: d01b beq.n 8008c20 <HAL_DMA_IRQHandler+0x170>
{
/* Half transfer callback */
hdma->XferM1HalfCpltCallback(hdma);
8008be8: 687b ldr r3, [r7, #4]
8008bea: 6c9b ldr r3, [r3, #72] ; 0x48
8008bec: 6878 ldr r0, [r7, #4]
8008bee: 4798 blx r3
8008bf0: e016 b.n 8008c20 <HAL_DMA_IRQHandler+0x170>
}
}
else
{
/* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */
if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET)
8008bf2: 687b ldr r3, [r7, #4]
8008bf4: 681b ldr r3, [r3, #0]
8008bf6: 681b ldr r3, [r3, #0]
8008bf8: f403 7380 and.w r3, r3, #256 ; 0x100
8008bfc: 2b00 cmp r3, #0
8008bfe: d107 bne.n 8008c10 <HAL_DMA_IRQHandler+0x160>
{
/* Disable the half transfer interrupt */
hdma->Instance->CR &= ~(DMA_IT_HT);
8008c00: 687b ldr r3, [r7, #4]
8008c02: 681b ldr r3, [r3, #0]
8008c04: 687a ldr r2, [r7, #4]
8008c06: 6812 ldr r2, [r2, #0]
8008c08: 6812 ldr r2, [r2, #0]
8008c0a: f022 0208 bic.w r2, r2, #8
8008c0e: 601a str r2, [r3, #0]
}
if(hdma->XferHalfCpltCallback != NULL)
8008c10: 687b ldr r3, [r7, #4]
8008c12: 6c1b ldr r3, [r3, #64] ; 0x40
8008c14: 2b00 cmp r3, #0
8008c16: d003 beq.n 8008c20 <HAL_DMA_IRQHandler+0x170>
{
/* Half transfer callback */
hdma->XferHalfCpltCallback(hdma);
8008c18: 687b ldr r3, [r7, #4]
8008c1a: 6c1b ldr r3, [r3, #64] ; 0x40
8008c1c: 6878 ldr r0, [r7, #4]
8008c1e: 4798 blx r3
}
}
}
}
/* Transfer Complete Interrupt management ***********************************/
if ((tmpisr & (DMA_FLAG_TCIF0_4 << hdma->StreamIndex)) != RESET)
8008c20: 687b ldr r3, [r7, #4]
8008c22: 6ddb ldr r3, [r3, #92] ; 0x5c
8008c24: 2220 movs r2, #32
8008c26: 409a lsls r2, r3
8008c28: 68fb ldr r3, [r7, #12]
8008c2a: 4013 ands r3, r2
8008c2c: 2b00 cmp r3, #0
8008c2e: f000 808e beq.w 8008d4e <HAL_DMA_IRQHandler+0x29e>
{
if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TC) != RESET)
8008c32: 687b ldr r3, [r7, #4]
8008c34: 681b ldr r3, [r3, #0]
8008c36: 681b ldr r3, [r3, #0]
8008c38: f003 0310 and.w r3, r3, #16
8008c3c: 2b00 cmp r3, #0
8008c3e: f000 8086 beq.w 8008d4e <HAL_DMA_IRQHandler+0x29e>
{
/* Clear the transfer complete flag */
regs->IFCR = DMA_FLAG_TCIF0_4 << hdma->StreamIndex;
8008c42: 687b ldr r3, [r7, #4]
8008c44: 6ddb ldr r3, [r3, #92] ; 0x5c
8008c46: 2220 movs r2, #32
8008c48: 409a lsls r2, r3
8008c4a: 693b ldr r3, [r7, #16]
8008c4c: 609a str r2, [r3, #8]
if(HAL_DMA_STATE_ABORT == hdma->State)
8008c4e: 687b ldr r3, [r7, #4]
8008c50: f893 3035 ldrb.w r3, [r3, #53] ; 0x35
8008c54: b2db uxtb r3, r3
8008c56: 2b05 cmp r3, #5
8008c58: d136 bne.n 8008cc8 <HAL_DMA_IRQHandler+0x218>
{
/* Disable all the transfer interrupts */
hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME);
8008c5a: 687b ldr r3, [r7, #4]
8008c5c: 681b ldr r3, [r3, #0]
8008c5e: 687a ldr r2, [r7, #4]
8008c60: 6812 ldr r2, [r2, #0]
8008c62: 6812 ldr r2, [r2, #0]
8008c64: f022 0216 bic.w r2, r2, #22
8008c68: 601a str r2, [r3, #0]
hdma->Instance->FCR &= ~(DMA_IT_FE);
8008c6a: 687b ldr r3, [r7, #4]
8008c6c: 681b ldr r3, [r3, #0]
8008c6e: 687a ldr r2, [r7, #4]
8008c70: 6812 ldr r2, [r2, #0]
8008c72: 6952 ldr r2, [r2, #20]
8008c74: f022 0280 bic.w r2, r2, #128 ; 0x80
8008c78: 615a str r2, [r3, #20]
if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL))
8008c7a: 687b ldr r3, [r7, #4]
8008c7c: 6c1b ldr r3, [r3, #64] ; 0x40
8008c7e: 2b00 cmp r3, #0
8008c80: d103 bne.n 8008c8a <HAL_DMA_IRQHandler+0x1da>
8008c82: 687b ldr r3, [r7, #4]
8008c84: 6c9b ldr r3, [r3, #72] ; 0x48
8008c86: 2b00 cmp r3, #0
8008c88: d007 beq.n 8008c9a <HAL_DMA_IRQHandler+0x1ea>
{
hdma->Instance->CR &= ~(DMA_IT_HT);
8008c8a: 687b ldr r3, [r7, #4]
8008c8c: 681b ldr r3, [r3, #0]
8008c8e: 687a ldr r2, [r7, #4]
8008c90: 6812 ldr r2, [r2, #0]
8008c92: 6812 ldr r2, [r2, #0]
8008c94: f022 0208 bic.w r2, r2, #8
8008c98: 601a str r2, [r3, #0]
}
/* Clear all interrupt flags at correct offset within the register */
regs->IFCR = 0x3FU << hdma->StreamIndex;
8008c9a: 687b ldr r3, [r7, #4]
8008c9c: 6ddb ldr r3, [r3, #92] ; 0x5c
8008c9e: 223f movs r2, #63 ; 0x3f
8008ca0: 409a lsls r2, r3
8008ca2: 693b ldr r3, [r7, #16]
8008ca4: 609a str r2, [r3, #8]
/* Change the DMA state */
hdma->State = HAL_DMA_STATE_READY;
8008ca6: 687b ldr r3, [r7, #4]
8008ca8: 2201 movs r2, #1
8008caa: f883 2035 strb.w r2, [r3, #53] ; 0x35
/* Process Unlocked */
__HAL_UNLOCK(hdma);
8008cae: 687b ldr r3, [r7, #4]
8008cb0: 2200 movs r2, #0
8008cb2: f883 2034 strb.w r2, [r3, #52] ; 0x34
if(hdma->XferAbortCallback != NULL)
8008cb6: 687b ldr r3, [r7, #4]
8008cb8: 6d1b ldr r3, [r3, #80] ; 0x50
8008cba: 2b00 cmp r3, #0
8008cbc: d07d beq.n 8008dba <HAL_DMA_IRQHandler+0x30a>
{
hdma->XferAbortCallback(hdma);
8008cbe: 687b ldr r3, [r7, #4]
8008cc0: 6d1b ldr r3, [r3, #80] ; 0x50
8008cc2: 6878 ldr r0, [r7, #4]
8008cc4: 4798 blx r3
}
return;
8008cc6: e078 b.n 8008dba <HAL_DMA_IRQHandler+0x30a>
}
if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET)
8008cc8: 687b ldr r3, [r7, #4]
8008cca: 681b ldr r3, [r3, #0]
8008ccc: 681b ldr r3, [r3, #0]
8008cce: f403 2380 and.w r3, r3, #262144 ; 0x40000
8008cd2: 2b00 cmp r3, #0
8008cd4: d01c beq.n 8008d10 <HAL_DMA_IRQHandler+0x260>
{
/* Current memory buffer used is Memory 0 */
if((hdma->Instance->CR & DMA_SxCR_CT) == RESET)
8008cd6: 687b ldr r3, [r7, #4]
8008cd8: 681b ldr r3, [r3, #0]
8008cda: 681b ldr r3, [r3, #0]
8008cdc: f403 2300 and.w r3, r3, #524288 ; 0x80000
8008ce0: 2b00 cmp r3, #0
8008ce2: d108 bne.n 8008cf6 <HAL_DMA_IRQHandler+0x246>
{
if(hdma->XferM1CpltCallback != NULL)
8008ce4: 687b ldr r3, [r7, #4]
8008ce6: 6c5b ldr r3, [r3, #68] ; 0x44
8008ce8: 2b00 cmp r3, #0
8008cea: d030 beq.n 8008d4e <HAL_DMA_IRQHandler+0x29e>
{
/* Transfer complete Callback for memory1 */
hdma->XferM1CpltCallback(hdma);
8008cec: 687b ldr r3, [r7, #4]
8008cee: 6c5b ldr r3, [r3, #68] ; 0x44
8008cf0: 6878 ldr r0, [r7, #4]
8008cf2: 4798 blx r3
8008cf4: e02b b.n 8008d4e <HAL_DMA_IRQHandler+0x29e>
}
}
/* Current memory buffer used is Memory 1 */
else
{
if(hdma->XferCpltCallback != NULL)
8008cf6: 687b ldr r3, [r7, #4]
8008cf8: 6bdb ldr r3, [r3, #60] ; 0x3c
8008cfa: 2b00 cmp r3, #0
8008cfc: d027 beq.n 8008d4e <HAL_DMA_IRQHandler+0x29e>
{
/* Transfer complete Callback for memory0 */
hdma->XferCpltCallback(hdma);
8008cfe: 687b ldr r3, [r7, #4]
8008d00: 6bdb ldr r3, [r3, #60] ; 0x3c
8008d02: 6878 ldr r0, [r7, #4]
8008d04: 4798 blx r3
8008d06: e022 b.n 8008d4e <HAL_DMA_IRQHandler+0x29e>
8008d08: 20020104 .word 0x20020104
8008d0c: 1b4e81b5 .word 0x1b4e81b5
}
}
/* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */
else
{
if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET)
8008d10: 687b ldr r3, [r7, #4]
8008d12: 681b ldr r3, [r3, #0]
8008d14: 681b ldr r3, [r3, #0]
8008d16: f403 7380 and.w r3, r3, #256 ; 0x100
8008d1a: 2b00 cmp r3, #0
8008d1c: d10f bne.n 8008d3e <HAL_DMA_IRQHandler+0x28e>
{
/* Disable the transfer complete interrupt */
hdma->Instance->CR &= ~(DMA_IT_TC);
8008d1e: 687b ldr r3, [r7, #4]
8008d20: 681b ldr r3, [r3, #0]
8008d22: 687a ldr r2, [r7, #4]
8008d24: 6812 ldr r2, [r2, #0]
8008d26: 6812 ldr r2, [r2, #0]
8008d28: f022 0210 bic.w r2, r2, #16
8008d2c: 601a str r2, [r3, #0]
/* Change the DMA state */
hdma->State = HAL_DMA_STATE_READY;
8008d2e: 687b ldr r3, [r7, #4]
8008d30: 2201 movs r2, #1
8008d32: f883 2035 strb.w r2, [r3, #53] ; 0x35
/* Process Unlocked */
__HAL_UNLOCK(hdma);
8008d36: 687b ldr r3, [r7, #4]
8008d38: 2200 movs r2, #0
8008d3a: f883 2034 strb.w r2, [r3, #52] ; 0x34
}
if(hdma->XferCpltCallback != NULL)
8008d3e: 687b ldr r3, [r7, #4]
8008d40: 6bdb ldr r3, [r3, #60] ; 0x3c
8008d42: 2b00 cmp r3, #0
8008d44: d003 beq.n 8008d4e <HAL_DMA_IRQHandler+0x29e>
{
/* Transfer complete callback */
hdma->XferCpltCallback(hdma);
8008d46: 687b ldr r3, [r7, #4]
8008d48: 6bdb ldr r3, [r3, #60] ; 0x3c
8008d4a: 6878 ldr r0, [r7, #4]
8008d4c: 4798 blx r3
}
}
}
/* manage error case */
if(hdma->ErrorCode != HAL_DMA_ERROR_NONE)
8008d4e: 687b ldr r3, [r7, #4]
8008d50: 6d5b ldr r3, [r3, #84] ; 0x54
8008d52: 2b00 cmp r3, #0
8008d54: d032 beq.n 8008dbc <HAL_DMA_IRQHandler+0x30c>
{
if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != RESET)
8008d56: 687b ldr r3, [r7, #4]
8008d58: 6d5b ldr r3, [r3, #84] ; 0x54
8008d5a: f003 0301 and.w r3, r3, #1
8008d5e: 2b00 cmp r3, #0
8008d60: d022 beq.n 8008da8 <HAL_DMA_IRQHandler+0x2f8>
{
hdma->State = HAL_DMA_STATE_ABORT;
8008d62: 687b ldr r3, [r7, #4]
8008d64: 2205 movs r2, #5
8008d66: f883 2035 strb.w r2, [r3, #53] ; 0x35
/* Disable the stream */
__HAL_DMA_DISABLE(hdma);
8008d6a: 687b ldr r3, [r7, #4]
8008d6c: 681b ldr r3, [r3, #0]
8008d6e: 687a ldr r2, [r7, #4]
8008d70: 6812 ldr r2, [r2, #0]
8008d72: 6812 ldr r2, [r2, #0]
8008d74: f022 0201 bic.w r2, r2, #1
8008d78: 601a str r2, [r3, #0]
do
{
if (++count > timeout)
8008d7a: 68bb ldr r3, [r7, #8]
8008d7c: 3301 adds r3, #1
8008d7e: 60bb str r3, [r7, #8]
8008d80: 697a ldr r2, [r7, #20]
8008d82: 4293 cmp r3, r2
8008d84: d807 bhi.n 8008d96 <HAL_DMA_IRQHandler+0x2e6>
{
break;
}
}
while((hdma->Instance->CR & DMA_SxCR_EN) != RESET);
8008d86: 687b ldr r3, [r7, #4]
8008d88: 681b ldr r3, [r3, #0]
8008d8a: 681b ldr r3, [r3, #0]
8008d8c: f003 0301 and.w r3, r3, #1
8008d90: 2b00 cmp r3, #0
8008d92: d1f2 bne.n 8008d7a <HAL_DMA_IRQHandler+0x2ca>
8008d94: e000 b.n 8008d98 <HAL_DMA_IRQHandler+0x2e8>
break;
8008d96: bf00 nop
/* Change the DMA state */
hdma->State = HAL_DMA_STATE_READY;
8008d98: 687b ldr r3, [r7, #4]
8008d9a: 2201 movs r2, #1
8008d9c: f883 2035 strb.w r2, [r3, #53] ; 0x35
/* Process Unlocked */
__HAL_UNLOCK(hdma);
8008da0: 687b ldr r3, [r7, #4]
8008da2: 2200 movs r2, #0
8008da4: f883 2034 strb.w r2, [r3, #52] ; 0x34
}
if(hdma->XferErrorCallback != NULL)
8008da8: 687b ldr r3, [r7, #4]
8008daa: 6cdb ldr r3, [r3, #76] ; 0x4c
8008dac: 2b00 cmp r3, #0
8008dae: d005 beq.n 8008dbc <HAL_DMA_IRQHandler+0x30c>
{
/* Transfer error callback */
hdma->XferErrorCallback(hdma);
8008db0: 687b ldr r3, [r7, #4]
8008db2: 6cdb ldr r3, [r3, #76] ; 0x4c
8008db4: 6878 ldr r0, [r7, #4]
8008db6: 4798 blx r3
8008db8: e000 b.n 8008dbc <HAL_DMA_IRQHandler+0x30c>
return;
8008dba: bf00 nop
}
}
}
8008dbc: 3718 adds r7, #24
8008dbe: 46bd mov sp, r7
8008dc0: bd80 pop {r7, pc}
8008dc2: bf00 nop
08008dc4 <HAL_DMA2D_Init>:
* @param hdma2d pointer to a DMA2D_HandleTypeDef structure that contains
* the configuration information for the DMA2D.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_DMA2D_Init(DMA2D_HandleTypeDef *hdma2d)
{
8008dc4: b580 push {r7, lr}
8008dc6: b082 sub sp, #8
8008dc8: af00 add r7, sp, #0
8008dca: 6078 str r0, [r7, #4]
/* Check the DMA2D peripheral state */
if (hdma2d == NULL)
8008dcc: 687b ldr r3, [r7, #4]
8008dce: 2b00 cmp r3, #0
8008dd0: d101 bne.n 8008dd6 <HAL_DMA2D_Init+0x12>
{
return HAL_ERROR;
8008dd2: 2301 movs r3, #1
8008dd4: e049 b.n 8008e6a <HAL_DMA2D_Init+0xa6>
/* Init the low level hardware */
hdma2d->MspInitCallback(hdma2d);
}
#else
if (hdma2d->State == HAL_DMA2D_STATE_RESET)
8008dd6: 687b ldr r3, [r7, #4]
8008dd8: f893 3051 ldrb.w r3, [r3, #81] ; 0x51
8008ddc: b2db uxtb r3, r3
8008dde: 2b00 cmp r3, #0
8008de0: d106 bne.n 8008df0 <HAL_DMA2D_Init+0x2c>
{
/* Allocate lock resource and initialize it */
hdma2d->Lock = HAL_UNLOCKED;
8008de2: 687b ldr r3, [r7, #4]
8008de4: 2200 movs r2, #0
8008de6: f883 2050 strb.w r2, [r3, #80] ; 0x50
/* Init the low level hardware */
HAL_DMA2D_MspInit(hdma2d);
8008dea: 6878 ldr r0, [r7, #4]
8008dec: f7f7 fc10 bl 8000610 <HAL_DMA2D_MspInit>
}
#endif /* (USE_HAL_DMA2D_REGISTER_CALLBACKS) */
/* Change DMA2D peripheral state */
hdma2d->State = HAL_DMA2D_STATE_BUSY;
8008df0: 687b ldr r3, [r7, #4]
8008df2: 2202 movs r2, #2
8008df4: f883 2051 strb.w r2, [r3, #81] ; 0x51
/* DMA2D CR register configuration -------------------------------------------*/
MODIFY_REG(hdma2d->Instance->CR, DMA2D_CR_MODE, hdma2d->Init.Mode);
8008df8: 687b ldr r3, [r7, #4]
8008dfa: 681b ldr r3, [r3, #0]
8008dfc: 687a ldr r2, [r7, #4]
8008dfe: 6812 ldr r2, [r2, #0]
8008e00: 6812 ldr r2, [r2, #0]
8008e02: f422 3140 bic.w r1, r2, #196608 ; 0x30000
8008e06: 687a ldr r2, [r7, #4]
8008e08: 6852 ldr r2, [r2, #4]
8008e0a: 430a orrs r2, r1
8008e0c: 601a str r2, [r3, #0]
/* DMA2D OPFCCR register configuration ---------------------------------------*/
MODIFY_REG(hdma2d->Instance->OPFCCR, DMA2D_OPFCCR_CM, hdma2d->Init.ColorMode);
8008e0e: 687b ldr r3, [r7, #4]
8008e10: 681b ldr r3, [r3, #0]
8008e12: 687a ldr r2, [r7, #4]
8008e14: 6812 ldr r2, [r2, #0]
8008e16: 6b52 ldr r2, [r2, #52] ; 0x34
8008e18: f022 0107 bic.w r1, r2, #7
8008e1c: 687a ldr r2, [r7, #4]
8008e1e: 6892 ldr r2, [r2, #8]
8008e20: 430a orrs r2, r1
8008e22: 635a str r2, [r3, #52] ; 0x34
/* DMA2D OOR register configuration ------------------------------------------*/
MODIFY_REG(hdma2d->Instance->OOR, DMA2D_OOR_LO, hdma2d->Init.OutputOffset);
8008e24: 687b ldr r3, [r7, #4]
8008e26: 681a ldr r2, [r3, #0]
8008e28: 687b ldr r3, [r7, #4]
8008e2a: 681b ldr r3, [r3, #0]
8008e2c: 6c19 ldr r1, [r3, #64] ; 0x40
8008e2e: 4b11 ldr r3, [pc, #68] ; (8008e74 <HAL_DMA2D_Init+0xb0>)
8008e30: 400b ands r3, r1
8008e32: 6879 ldr r1, [r7, #4]
8008e34: 68c9 ldr r1, [r1, #12]
8008e36: 430b orrs r3, r1
8008e38: 6413 str r3, [r2, #64] ; 0x40
#if defined (DMA2D_ALPHA_INV_RB_SWAP_SUPPORT)
/* DMA2D OPFCCR AI and RBS fields setting (Output Alpha Inversion)*/
MODIFY_REG(hdma2d->Instance->OPFCCR, (DMA2D_OPFCCR_AI | DMA2D_OPFCCR_RBS),
8008e3a: 687b ldr r3, [r7, #4]
8008e3c: 681b ldr r3, [r3, #0]
8008e3e: 687a ldr r2, [r7, #4]
8008e40: 6812 ldr r2, [r2, #0]
8008e42: 6b52 ldr r2, [r2, #52] ; 0x34
8008e44: f422 1140 bic.w r1, r2, #3145728 ; 0x300000
8008e48: 687a ldr r2, [r7, #4]
8008e4a: 6912 ldr r2, [r2, #16]
8008e4c: 0510 lsls r0, r2, #20
8008e4e: 687a ldr r2, [r7, #4]
8008e50: 6952 ldr r2, [r2, #20]
8008e52: 0552 lsls r2, r2, #21
8008e54: 4302 orrs r2, r0
8008e56: 430a orrs r2, r1
8008e58: 635a str r2, [r3, #52] ; 0x34
(hdma2d->Init.RedBlueSwap << DMA2D_OPFCCR_RBS_Pos)));
#endif /* DMA2D_ALPHA_INV_RB_SWAP_SUPPORT */
/* Update error code */
hdma2d->ErrorCode = HAL_DMA2D_ERROR_NONE;
8008e5a: 687b ldr r3, [r7, #4]
8008e5c: 2200 movs r2, #0
8008e5e: 655a str r2, [r3, #84] ; 0x54
/* Initialize the DMA2D state*/
hdma2d->State = HAL_DMA2D_STATE_READY;
8008e60: 687b ldr r3, [r7, #4]
8008e62: 2201 movs r2, #1
8008e64: f883 2051 strb.w r2, [r3, #81] ; 0x51
return HAL_OK;
8008e68: 2300 movs r3, #0
}
8008e6a: 4618 mov r0, r3
8008e6c: 3708 adds r7, #8
8008e6e: 46bd mov sp, r7
8008e70: bd80 pop {r7, pc}
8008e72: bf00 nop
8008e74: ffffc000 .word 0xffffc000
08008e78 <HAL_DMA2D_Start>:
* @param Height The height of data to be transferred from source to destination (expressed in number of lines).
* @retval HAL status
*/
HAL_StatusTypeDef HAL_DMA2D_Start(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width,
uint32_t Height)
{
8008e78: b580 push {r7, lr}
8008e7a: b086 sub sp, #24
8008e7c: af02 add r7, sp, #8
8008e7e: 60f8 str r0, [r7, #12]
8008e80: 60b9 str r1, [r7, #8]
8008e82: 607a str r2, [r7, #4]
8008e84: 603b str r3, [r7, #0]
/* Check the parameters */
assert_param(IS_DMA2D_LINE(Height));
assert_param(IS_DMA2D_PIXEL(Width));
/* Process locked */
__HAL_LOCK(hdma2d);
8008e86: 68fb ldr r3, [r7, #12]
8008e88: f893 3050 ldrb.w r3, [r3, #80] ; 0x50
8008e8c: 2b01 cmp r3, #1
8008e8e: d101 bne.n 8008e94 <HAL_DMA2D_Start+0x1c>
8008e90: 2302 movs r3, #2
8008e92: e018 b.n 8008ec6 <HAL_DMA2D_Start+0x4e>
8008e94: 68fb ldr r3, [r7, #12]
8008e96: 2201 movs r2, #1
8008e98: f883 2050 strb.w r2, [r3, #80] ; 0x50
/* Change DMA2D peripheral state */
hdma2d->State = HAL_DMA2D_STATE_BUSY;
8008e9c: 68fb ldr r3, [r7, #12]
8008e9e: 2202 movs r2, #2
8008ea0: f883 2051 strb.w r2, [r3, #81] ; 0x51
/* Configure the source, destination address and the data size */
DMA2D_SetConfig(hdma2d, pdata, DstAddress, Width, Height);
8008ea4: 69bb ldr r3, [r7, #24]
8008ea6: 9300 str r3, [sp, #0]
8008ea8: 683b ldr r3, [r7, #0]
8008eaa: 687a ldr r2, [r7, #4]
8008eac: 68b9 ldr r1, [r7, #8]
8008eae: 68f8 ldr r0, [r7, #12]
8008eb0: f000 f992 bl 80091d8 <DMA2D_SetConfig>
/* Enable the Peripheral */
__HAL_DMA2D_ENABLE(hdma2d);
8008eb4: 68fb ldr r3, [r7, #12]
8008eb6: 681b ldr r3, [r3, #0]
8008eb8: 68fa ldr r2, [r7, #12]
8008eba: 6812 ldr r2, [r2, #0]
8008ebc: 6812 ldr r2, [r2, #0]
8008ebe: f042 0201 orr.w r2, r2, #1
8008ec2: 601a str r2, [r3, #0]
return HAL_OK;
8008ec4: 2300 movs r3, #0
}
8008ec6: 4618 mov r0, r3
8008ec8: 3710 adds r7, #16
8008eca: 46bd mov sp, r7
8008ecc: bd80 pop {r7, pc}
08008ece <HAL_DMA2D_PollForTransfer>:
* the configuration information for the DMA2D.
* @param Timeout Timeout duration
* @retval HAL status
*/
HAL_StatusTypeDef HAL_DMA2D_PollForTransfer(DMA2D_HandleTypeDef *hdma2d, uint32_t Timeout)
{
8008ece: b580 push {r7, lr}
8008ed0: b086 sub sp, #24
8008ed2: af00 add r7, sp, #0
8008ed4: 6078 str r0, [r7, #4]
8008ed6: 6039 str r1, [r7, #0]
uint32_t tickstart;
uint32_t layer_start;
__IO uint32_t isrflags = 0x0U;
8008ed8: 2300 movs r3, #0
8008eda: 60fb str r3, [r7, #12]
/* Polling for DMA2D transfer */
if ((hdma2d->Instance->CR & DMA2D_CR_START) != 0U)
8008edc: 687b ldr r3, [r7, #4]
8008ede: 681b ldr r3, [r3, #0]
8008ee0: 681b ldr r3, [r3, #0]
8008ee2: f003 0301 and.w r3, r3, #1
8008ee6: 2b00 cmp r3, #0
8008ee8: d056 beq.n 8008f98 <HAL_DMA2D_PollForTransfer+0xca>
{
/* Get tick */
tickstart = HAL_GetTick();
8008eea: f7ff fbe1 bl 80086b0 <HAL_GetTick>
8008eee: 6178 str r0, [r7, #20]
while (__HAL_DMA2D_GET_FLAG(hdma2d, DMA2D_FLAG_TC) == 0U)
8008ef0: e04b b.n 8008f8a <HAL_DMA2D_PollForTransfer+0xbc>
{
isrflags = READ_REG(hdma2d->Instance->ISR);
8008ef2: 687b ldr r3, [r7, #4]
8008ef4: 681b ldr r3, [r3, #0]
8008ef6: 685b ldr r3, [r3, #4]
8008ef8: 60fb str r3, [r7, #12]
if ((isrflags & (DMA2D_FLAG_CE | DMA2D_FLAG_TE)) != 0U)
8008efa: 68fb ldr r3, [r7, #12]
8008efc: f003 0321 and.w r3, r3, #33 ; 0x21
8008f00: 2b00 cmp r3, #0
8008f02: d023 beq.n 8008f4c <HAL_DMA2D_PollForTransfer+0x7e>
{
if ((isrflags & DMA2D_FLAG_CE) != 0U)
8008f04: 68fb ldr r3, [r7, #12]
8008f06: f003 0320 and.w r3, r3, #32
8008f0a: 2b00 cmp r3, #0
8008f0c: d005 beq.n 8008f1a <HAL_DMA2D_PollForTransfer+0x4c>
{
hdma2d->ErrorCode |= HAL_DMA2D_ERROR_CE;
8008f0e: 687b ldr r3, [r7, #4]
8008f10: 6d5b ldr r3, [r3, #84] ; 0x54
8008f12: f043 0202 orr.w r2, r3, #2
8008f16: 687b ldr r3, [r7, #4]
8008f18: 655a str r2, [r3, #84] ; 0x54
}
if ((isrflags & DMA2D_FLAG_TE) != 0U)
8008f1a: 68fb ldr r3, [r7, #12]
8008f1c: f003 0301 and.w r3, r3, #1
8008f20: 2b00 cmp r3, #0
8008f22: d005 beq.n 8008f30 <HAL_DMA2D_PollForTransfer+0x62>
{
hdma2d->ErrorCode |= HAL_DMA2D_ERROR_TE;
8008f24: 687b ldr r3, [r7, #4]
8008f26: 6d5b ldr r3, [r3, #84] ; 0x54
8008f28: f043 0201 orr.w r2, r3, #1
8008f2c: 687b ldr r3, [r7, #4]
8008f2e: 655a str r2, [r3, #84] ; 0x54
}
/* Clear the transfer and configuration error flags */
__HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CE | DMA2D_FLAG_TE);
8008f30: 687b ldr r3, [r7, #4]
8008f32: 681b ldr r3, [r3, #0]
8008f34: 2221 movs r2, #33 ; 0x21
8008f36: 609a str r2, [r3, #8]
/* Change DMA2D state */
hdma2d->State = HAL_DMA2D_STATE_ERROR;
8008f38: 687b ldr r3, [r7, #4]
8008f3a: 2204 movs r2, #4
8008f3c: f883 2051 strb.w r2, [r3, #81] ; 0x51
/* Process unlocked */
__HAL_UNLOCK(hdma2d);
8008f40: 687b ldr r3, [r7, #4]
8008f42: 2200 movs r2, #0
8008f44: f883 2050 strb.w r2, [r3, #80] ; 0x50
return HAL_ERROR;
8008f48: 2301 movs r3, #1
8008f4a: e0a5 b.n 8009098 <HAL_DMA2D_PollForTransfer+0x1ca>
}
/* Check for the Timeout */
if (Timeout != HAL_MAX_DELAY)
8008f4c: 683b ldr r3, [r7, #0]
8008f4e: f1b3 3fff cmp.w r3, #4294967295
8008f52: d01a beq.n 8008f8a <HAL_DMA2D_PollForTransfer+0xbc>
{
if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
8008f54: f7ff fbac bl 80086b0 <HAL_GetTick>
8008f58: 4602 mov r2, r0
8008f5a: 697b ldr r3, [r7, #20]
8008f5c: 1ad2 subs r2, r2, r3
8008f5e: 683b ldr r3, [r7, #0]
8008f60: 429a cmp r2, r3
8008f62: d802 bhi.n 8008f6a <HAL_DMA2D_PollForTransfer+0x9c>
8008f64: 683b ldr r3, [r7, #0]
8008f66: 2b00 cmp r3, #0
8008f68: d10f bne.n 8008f8a <HAL_DMA2D_PollForTransfer+0xbc>
{
/* Update error code */
hdma2d->ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;
8008f6a: 687b ldr r3, [r7, #4]
8008f6c: 6d5b ldr r3, [r3, #84] ; 0x54
8008f6e: f043 0220 orr.w r2, r3, #32
8008f72: 687b ldr r3, [r7, #4]
8008f74: 655a str r2, [r3, #84] ; 0x54
/* Change the DMA2D state */
hdma2d->State = HAL_DMA2D_STATE_TIMEOUT;
8008f76: 687b ldr r3, [r7, #4]
8008f78: 2203 movs r2, #3
8008f7a: f883 2051 strb.w r2, [r3, #81] ; 0x51
/* Process unlocked */
__HAL_UNLOCK(hdma2d);
8008f7e: 687b ldr r3, [r7, #4]
8008f80: 2200 movs r2, #0
8008f82: f883 2050 strb.w r2, [r3, #80] ; 0x50
return HAL_TIMEOUT;
8008f86: 2303 movs r3, #3
8008f88: e086 b.n 8009098 <HAL_DMA2D_PollForTransfer+0x1ca>
while (__HAL_DMA2D_GET_FLAG(hdma2d, DMA2D_FLAG_TC) == 0U)
8008f8a: 687b ldr r3, [r7, #4]
8008f8c: 681b ldr r3, [r3, #0]
8008f8e: 685b ldr r3, [r3, #4]
8008f90: f003 0302 and.w r3, r3, #2
8008f94: 2b00 cmp r3, #0
8008f96: d0ac beq.n 8008ef2 <HAL_DMA2D_PollForTransfer+0x24>
}
}
}
}
/* Polling for CLUT loading (foreground or background) */
layer_start = hdma2d->Instance->FGPFCCR & DMA2D_FGPFCCR_START;
8008f98: 687b ldr r3, [r7, #4]
8008f9a: 681b ldr r3, [r3, #0]
8008f9c: 69db ldr r3, [r3, #28]
8008f9e: f003 0320 and.w r3, r3, #32
8008fa2: 613b str r3, [r7, #16]
layer_start |= hdma2d->Instance->BGPFCCR & DMA2D_BGPFCCR_START;
8008fa4: 687b ldr r3, [r7, #4]
8008fa6: 681b ldr r3, [r3, #0]
8008fa8: 6a5b ldr r3, [r3, #36] ; 0x24
8008faa: f003 0320 and.w r3, r3, #32
8008fae: 693a ldr r2, [r7, #16]
8008fb0: 4313 orrs r3, r2
8008fb2: 613b str r3, [r7, #16]
if (layer_start != 0U)
8008fb4: 693b ldr r3, [r7, #16]
8008fb6: 2b00 cmp r3, #0
8008fb8: d061 beq.n 800907e <HAL_DMA2D_PollForTransfer+0x1b0>
{
/* Get tick */
tickstart = HAL_GetTick();
8008fba: f7ff fb79 bl 80086b0 <HAL_GetTick>
8008fbe: 6178 str r0, [r7, #20]
while (__HAL_DMA2D_GET_FLAG(hdma2d, DMA2D_FLAG_CTC) == 0U)
8008fc0: e056 b.n 8009070 <HAL_DMA2D_PollForTransfer+0x1a2>
{
isrflags = READ_REG(hdma2d->Instance->ISR);
8008fc2: 687b ldr r3, [r7, #4]
8008fc4: 681b ldr r3, [r3, #0]
8008fc6: 685b ldr r3, [r3, #4]
8008fc8: 60fb str r3, [r7, #12]
if ((isrflags & (DMA2D_FLAG_CAE | DMA2D_FLAG_CE | DMA2D_FLAG_TE)) != 0U)
8008fca: 68fb ldr r3, [r7, #12]
8008fcc: f003 0329 and.w r3, r3, #41 ; 0x29
8008fd0: 2b00 cmp r3, #0
8008fd2: d02e beq.n 8009032 <HAL_DMA2D_PollForTransfer+0x164>
{
if ((isrflags & DMA2D_FLAG_CAE) != 0U)
8008fd4: 68fb ldr r3, [r7, #12]
8008fd6: f003 0308 and.w r3, r3, #8
8008fda: 2b00 cmp r3, #0
8008fdc: d005 beq.n 8008fea <HAL_DMA2D_PollForTransfer+0x11c>
{
hdma2d->ErrorCode |= HAL_DMA2D_ERROR_CAE;
8008fde: 687b ldr r3, [r7, #4]
8008fe0: 6d5b ldr r3, [r3, #84] ; 0x54
8008fe2: f043 0204 orr.w r2, r3, #4
8008fe6: 687b ldr r3, [r7, #4]
8008fe8: 655a str r2, [r3, #84] ; 0x54
}
if ((isrflags & DMA2D_FLAG_CE) != 0U)
8008fea: 68fb ldr r3, [r7, #12]
8008fec: f003 0320 and.w r3, r3, #32
8008ff0: 2b00 cmp r3, #0
8008ff2: d005 beq.n 8009000 <HAL_DMA2D_PollForTransfer+0x132>
{
hdma2d->ErrorCode |= HAL_DMA2D_ERROR_CE;
8008ff4: 687b ldr r3, [r7, #4]
8008ff6: 6d5b ldr r3, [r3, #84] ; 0x54
8008ff8: f043 0202 orr.w r2, r3, #2
8008ffc: 687b ldr r3, [r7, #4]
8008ffe: 655a str r2, [r3, #84] ; 0x54
}
if ((isrflags & DMA2D_FLAG_TE) != 0U)
8009000: 68fb ldr r3, [r7, #12]
8009002: f003 0301 and.w r3, r3, #1
8009006: 2b00 cmp r3, #0
8009008: d005 beq.n 8009016 <HAL_DMA2D_PollForTransfer+0x148>
{
hdma2d->ErrorCode |= HAL_DMA2D_ERROR_TE;
800900a: 687b ldr r3, [r7, #4]
800900c: 6d5b ldr r3, [r3, #84] ; 0x54
800900e: f043 0201 orr.w r2, r3, #1
8009012: 687b ldr r3, [r7, #4]
8009014: 655a str r2, [r3, #84] ; 0x54
}
/* Clear the CLUT Access Error, Configuration Error and Transfer Error flags */
__HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CAE | DMA2D_FLAG_CE | DMA2D_FLAG_TE);
8009016: 687b ldr r3, [r7, #4]
8009018: 681b ldr r3, [r3, #0]
800901a: 2229 movs r2, #41 ; 0x29
800901c: 609a str r2, [r3, #8]
/* Change DMA2D state */
hdma2d->State = HAL_DMA2D_STATE_ERROR;
800901e: 687b ldr r3, [r7, #4]
8009020: 2204 movs r2, #4
8009022: f883 2051 strb.w r2, [r3, #81] ; 0x51
/* Process unlocked */
__HAL_UNLOCK(hdma2d);
8009026: 687b ldr r3, [r7, #4]
8009028: 2200 movs r2, #0
800902a: f883 2050 strb.w r2, [r3, #80] ; 0x50
return HAL_ERROR;
800902e: 2301 movs r3, #1
8009030: e032 b.n 8009098 <HAL_DMA2D_PollForTransfer+0x1ca>
}
/* Check for the Timeout */
if (Timeout != HAL_MAX_DELAY)
8009032: 683b ldr r3, [r7, #0]
8009034: f1b3 3fff cmp.w r3, #4294967295
8009038: d01a beq.n 8009070 <HAL_DMA2D_PollForTransfer+0x1a2>
{
if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
800903a: f7ff fb39 bl 80086b0 <HAL_GetTick>
800903e: 4602 mov r2, r0
8009040: 697b ldr r3, [r7, #20]
8009042: 1ad2 subs r2, r2, r3
8009044: 683b ldr r3, [r7, #0]
8009046: 429a cmp r2, r3
8009048: d802 bhi.n 8009050 <HAL_DMA2D_PollForTransfer+0x182>
800904a: 683b ldr r3, [r7, #0]
800904c: 2b00 cmp r3, #0
800904e: d10f bne.n 8009070 <HAL_DMA2D_PollForTransfer+0x1a2>
{
/* Update error code */
hdma2d->ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;
8009050: 687b ldr r3, [r7, #4]
8009052: 6d5b ldr r3, [r3, #84] ; 0x54
8009054: f043 0220 orr.w r2, r3, #32
8009058: 687b ldr r3, [r7, #4]
800905a: 655a str r2, [r3, #84] ; 0x54
/* Change the DMA2D state */
hdma2d->State = HAL_DMA2D_STATE_TIMEOUT;
800905c: 687b ldr r3, [r7, #4]
800905e: 2203 movs r2, #3
8009060: f883 2051 strb.w r2, [r3, #81] ; 0x51
/* Process unlocked */
__HAL_UNLOCK(hdma2d);
8009064: 687b ldr r3, [r7, #4]
8009066: 2200 movs r2, #0
8009068: f883 2050 strb.w r2, [r3, #80] ; 0x50
return HAL_TIMEOUT;
800906c: 2303 movs r3, #3
800906e: e013 b.n 8009098 <HAL_DMA2D_PollForTransfer+0x1ca>
while (__HAL_DMA2D_GET_FLAG(hdma2d, DMA2D_FLAG_CTC) == 0U)
8009070: 687b ldr r3, [r7, #4]
8009072: 681b ldr r3, [r3, #0]
8009074: 685b ldr r3, [r3, #4]
8009076: f003 0310 and.w r3, r3, #16
800907a: 2b00 cmp r3, #0
800907c: d0a1 beq.n 8008fc2 <HAL_DMA2D_PollForTransfer+0xf4>
}
}
}
/* Clear the transfer complete and CLUT loading flags */
__HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_TC | DMA2D_FLAG_CTC);
800907e: 687b ldr r3, [r7, #4]
8009080: 681b ldr r3, [r3, #0]
8009082: 2212 movs r2, #18
8009084: 609a str r2, [r3, #8]
/* Change DMA2D state */
hdma2d->State = HAL_DMA2D_STATE_READY;
8009086: 687b ldr r3, [r7, #4]
8009088: 2201 movs r2, #1
800908a: f883 2051 strb.w r2, [r3, #81] ; 0x51
/* Process unlocked */
__HAL_UNLOCK(hdma2d);
800908e: 687b ldr r3, [r7, #4]
8009090: 2200 movs r2, #0
8009092: f883 2050 strb.w r2, [r3, #80] ; 0x50
return HAL_OK;
8009096: 2300 movs r3, #0
}
8009098: 4618 mov r0, r3
800909a: 3718 adds r7, #24
800909c: 46bd mov sp, r7
800909e: bd80 pop {r7, pc}
080090a0 <HAL_DMA2D_ConfigLayer>:
* This parameter can be one of the following values:
* DMA2D_BACKGROUND_LAYER(0) / DMA2D_FOREGROUND_LAYER(1)
* @retval HAL status
*/
HAL_StatusTypeDef HAL_DMA2D_ConfigLayer(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx)
{
80090a0: b480 push {r7}
80090a2: b087 sub sp, #28
80090a4: af00 add r7, sp, #0
80090a6: 6078 str r0, [r7, #4]
80090a8: 6039 str r1, [r7, #0]
uint32_t regValue;
/* Check the parameters */
assert_param(IS_DMA2D_LAYER(LayerIdx));
assert_param(IS_DMA2D_OFFSET(hdma2d->LayerCfg[LayerIdx].InputOffset));
if (hdma2d->Init.Mode != DMA2D_R2M)
80090aa: 687b ldr r3, [r7, #4]
80090ac: 685b ldr r3, [r3, #4]
80090ae: f5b3 3f40 cmp.w r3, #196608 ; 0x30000
assert_param(IS_DMA2D_ALPHA_INVERTED(hdma2d->LayerCfg[LayerIdx].AlphaInverted));
assert_param(IS_DMA2D_RB_SWAP(hdma2d->LayerCfg[LayerIdx].RedBlueSwap));
#endif /* DMA2D_ALPHA_INV_RB_SWAP_SUPPORT */
/* Process locked */
__HAL_LOCK(hdma2d);
80090b2: 687b ldr r3, [r7, #4]
80090b4: f893 3050 ldrb.w r3, [r3, #80] ; 0x50
80090b8: 2b01 cmp r3, #1
80090ba: d101 bne.n 80090c0 <HAL_DMA2D_ConfigLayer+0x20>
80090bc: 2302 movs r3, #2
80090be: e082 b.n 80091c6 <HAL_DMA2D_ConfigLayer+0x126>
80090c0: 687b ldr r3, [r7, #4]
80090c2: 2201 movs r2, #1
80090c4: f883 2050 strb.w r2, [r3, #80] ; 0x50
/* Change DMA2D peripheral state */
hdma2d->State = HAL_DMA2D_STATE_BUSY;
80090c8: 687b ldr r3, [r7, #4]
80090ca: 2202 movs r2, #2
80090cc: f883 2051 strb.w r2, [r3, #81] ; 0x51
pLayerCfg = &hdma2d->LayerCfg[LayerIdx];
80090d0: 683a ldr r2, [r7, #0]
80090d2: 4613 mov r3, r2
80090d4: 005b lsls r3, r3, #1
80090d6: 4413 add r3, r2
80090d8: 00db lsls r3, r3, #3
80090da: 3320 adds r3, #32
80090dc: 687a ldr r2, [r7, #4]
80090de: 4413 add r3, r2
80090e0: 613b str r3, [r7, #16]
/* Prepare the value to be written to the BGPFCCR or FGPFCCR register */
#if defined (DMA2D_ALPHA_INV_RB_SWAP_SUPPORT)
regValue = pLayerCfg->InputColorMode | (pLayerCfg->AlphaMode << DMA2D_BGPFCCR_AM_Pos) | \
80090e2: 693b ldr r3, [r7, #16]
80090e4: 685a ldr r2, [r3, #4]
80090e6: 693b ldr r3, [r7, #16]
80090e8: 689b ldr r3, [r3, #8]
80090ea: 041b lsls r3, r3, #16
80090ec: 431a orrs r2, r3
(pLayerCfg->AlphaInverted << DMA2D_BGPFCCR_AI_Pos) | (pLayerCfg->RedBlueSwap << DMA2D_BGPFCCR_RBS_Pos);
80090ee: 693b ldr r3, [r7, #16]
80090f0: 691b ldr r3, [r3, #16]
80090f2: 051b lsls r3, r3, #20
regValue = pLayerCfg->InputColorMode | (pLayerCfg->AlphaMode << DMA2D_BGPFCCR_AM_Pos) | \
80090f4: 431a orrs r2, r3
(pLayerCfg->AlphaInverted << DMA2D_BGPFCCR_AI_Pos) | (pLayerCfg->RedBlueSwap << DMA2D_BGPFCCR_RBS_Pos);
80090f6: 693b ldr r3, [r7, #16]
80090f8: 695b ldr r3, [r3, #20]
80090fa: 055b lsls r3, r3, #21
regValue = pLayerCfg->InputColorMode | (pLayerCfg->AlphaMode << DMA2D_BGPFCCR_AM_Pos) | \
80090fc: 4313 orrs r3, r2
80090fe: 617b str r3, [r7, #20]
regMask = (DMA2D_BGPFCCR_CM | DMA2D_BGPFCCR_AM | DMA2D_BGPFCCR_ALPHA | DMA2D_BGPFCCR_AI | DMA2D_BGPFCCR_RBS);
8009100: 4b34 ldr r3, [pc, #208] ; (80091d4 <HAL_DMA2D_ConfigLayer+0x134>)
8009102: 60fb str r3, [r7, #12]
regValue = pLayerCfg->InputColorMode | (pLayerCfg->AlphaMode << DMA2D_BGPFCCR_AM_Pos);
regMask = DMA2D_BGPFCCR_CM | DMA2D_BGPFCCR_AM | DMA2D_BGPFCCR_ALPHA;
#endif /* DMA2D_ALPHA_INV_RB_SWAP_SUPPORT */
if ((pLayerCfg->InputColorMode == DMA2D_INPUT_A4) || (pLayerCfg->InputColorMode == DMA2D_INPUT_A8))
8009104: 693b ldr r3, [r7, #16]
8009106: 685b ldr r3, [r3, #4]
8009108: 2b0a cmp r3, #10
800910a: d003 beq.n 8009114 <HAL_DMA2D_ConfigLayer+0x74>
800910c: 693b ldr r3, [r7, #16]
800910e: 685b ldr r3, [r3, #4]
8009110: 2b09 cmp r3, #9
8009112: d107 bne.n 8009124 <HAL_DMA2D_ConfigLayer+0x84>
{
regValue |= (pLayerCfg->InputAlpha & DMA2D_BGPFCCR_ALPHA);
8009114: 693b ldr r3, [r7, #16]
8009116: 68db ldr r3, [r3, #12]
8009118: f003 437f and.w r3, r3, #4278190080 ; 0xff000000
800911c: 697a ldr r2, [r7, #20]
800911e: 4313 orrs r3, r2
8009120: 617b str r3, [r7, #20]
8009122: e005 b.n 8009130 <HAL_DMA2D_ConfigLayer+0x90>
}
else
{
regValue |= (pLayerCfg->InputAlpha << DMA2D_BGPFCCR_ALPHA_Pos);
8009124: 693b ldr r3, [r7, #16]
8009126: 68db ldr r3, [r3, #12]
8009128: 061b lsls r3, r3, #24
800912a: 697a ldr r2, [r7, #20]
800912c: 4313 orrs r3, r2
800912e: 617b str r3, [r7, #20]
}
/* Configure the background DMA2D layer */
if (LayerIdx == DMA2D_BACKGROUND_LAYER)
8009130: 683b ldr r3, [r7, #0]
8009132: 2b00 cmp r3, #0
8009134: d11f bne.n 8009176 <HAL_DMA2D_ConfigLayer+0xd6>
{
/* Write DMA2D BGPFCCR register */
MODIFY_REG(hdma2d->Instance->BGPFCCR, regMask, regValue);
8009136: 687b ldr r3, [r7, #4]
8009138: 681b ldr r3, [r3, #0]
800913a: 687a ldr r2, [r7, #4]
800913c: 6812 ldr r2, [r2, #0]
800913e: 6a51 ldr r1, [r2, #36] ; 0x24
8009140: 68fa ldr r2, [r7, #12]
8009142: 43d2 mvns r2, r2
8009144: 4011 ands r1, r2
8009146: 697a ldr r2, [r7, #20]
8009148: 430a orrs r2, r1
800914a: 625a str r2, [r3, #36] ; 0x24
/* DMA2D BGOR register configuration -------------------------------------*/
WRITE_REG(hdma2d->Instance->BGOR, pLayerCfg->InputOffset);
800914c: 687b ldr r3, [r7, #4]
800914e: 681b ldr r3, [r3, #0]
8009150: 693a ldr r2, [r7, #16]
8009152: 6812 ldr r2, [r2, #0]
8009154: 619a str r2, [r3, #24]
/* DMA2D BGCOLR register configuration -------------------------------------*/
if ((pLayerCfg->InputColorMode == DMA2D_INPUT_A4) || (pLayerCfg->InputColorMode == DMA2D_INPUT_A8))
8009156: 693b ldr r3, [r7, #16]
8009158: 685b ldr r3, [r3, #4]
800915a: 2b0a cmp r3, #10
800915c: d003 beq.n 8009166 <HAL_DMA2D_ConfigLayer+0xc6>
800915e: 693b ldr r3, [r7, #16]
8009160: 685b ldr r3, [r3, #4]
8009162: 2b09 cmp r3, #9
8009164: d126 bne.n 80091b4 <HAL_DMA2D_ConfigLayer+0x114>
{
WRITE_REG(hdma2d->Instance->BGCOLR, pLayerCfg->InputAlpha & (DMA2D_BGCOLR_BLUE | DMA2D_BGCOLR_GREEN | \
8009166: 687b ldr r3, [r7, #4]
8009168: 681b ldr r3, [r3, #0]
800916a: 693a ldr r2, [r7, #16]
800916c: 68d2 ldr r2, [r2, #12]
800916e: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000
8009172: 629a str r2, [r3, #40] ; 0x28
8009174: e01e b.n 80091b4 <HAL_DMA2D_ConfigLayer+0x114>
else
{
/* Write DMA2D FGPFCCR register */
MODIFY_REG(hdma2d->Instance->FGPFCCR, regMask, regValue);
8009176: 687b ldr r3, [r7, #4]
8009178: 681b ldr r3, [r3, #0]
800917a: 687a ldr r2, [r7, #4]
800917c: 6812 ldr r2, [r2, #0]
800917e: 69d1 ldr r1, [r2, #28]
8009180: 68fa ldr r2, [r7, #12]
8009182: 43d2 mvns r2, r2
8009184: 4011 ands r1, r2
8009186: 697a ldr r2, [r7, #20]
8009188: 430a orrs r2, r1
800918a: 61da str r2, [r3, #28]
/* DMA2D FGOR register configuration -------------------------------------*/
WRITE_REG(hdma2d->Instance->FGOR, pLayerCfg->InputOffset);
800918c: 687b ldr r3, [r7, #4]
800918e: 681b ldr r3, [r3, #0]
8009190: 693a ldr r2, [r7, #16]
8009192: 6812 ldr r2, [r2, #0]
8009194: 611a str r2, [r3, #16]
/* DMA2D FGCOLR register configuration -------------------------------------*/
if ((pLayerCfg->InputColorMode == DMA2D_INPUT_A4) || (pLayerCfg->InputColorMode == DMA2D_INPUT_A8))
8009196: 693b ldr r3, [r7, #16]
8009198: 685b ldr r3, [r3, #4]
800919a: 2b0a cmp r3, #10
800919c: d003 beq.n 80091a6 <HAL_DMA2D_ConfigLayer+0x106>
800919e: 693b ldr r3, [r7, #16]
80091a0: 685b ldr r3, [r3, #4]
80091a2: 2b09 cmp r3, #9
80091a4: d106 bne.n 80091b4 <HAL_DMA2D_ConfigLayer+0x114>
{
WRITE_REG(hdma2d->Instance->FGCOLR, pLayerCfg->InputAlpha & (DMA2D_FGCOLR_BLUE | DMA2D_FGCOLR_GREEN | \
80091a6: 687b ldr r3, [r7, #4]
80091a8: 681b ldr r3, [r3, #0]
80091aa: 693a ldr r2, [r7, #16]
80091ac: 68d2 ldr r2, [r2, #12]
80091ae: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000
80091b2: 621a str r2, [r3, #32]
DMA2D_FGCOLR_RED));
}
}
/* Initialize the DMA2D state*/
hdma2d->State = HAL_DMA2D_STATE_READY;
80091b4: 687b ldr r3, [r7, #4]
80091b6: 2201 movs r2, #1
80091b8: f883 2051 strb.w r2, [r3, #81] ; 0x51
/* Process unlocked */
__HAL_UNLOCK(hdma2d);
80091bc: 687b ldr r3, [r7, #4]
80091be: 2200 movs r2, #0
80091c0: f883 2050 strb.w r2, [r3, #80] ; 0x50
return HAL_OK;
80091c4: 2300 movs r3, #0
}
80091c6: 4618 mov r0, r3
80091c8: 371c adds r7, #28
80091ca: 46bd mov sp, r7
80091cc: f85d 7b04 ldr.w r7, [sp], #4
80091d0: 4770 bx lr
80091d2: bf00 nop
80091d4: ff33000f .word 0xff33000f
080091d8 <DMA2D_SetConfig>:
* @param Height The height of data to be transferred from source to destination.
* @retval HAL status
*/
static void DMA2D_SetConfig(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width,
uint32_t Height)
{
80091d8: b480 push {r7}
80091da: b08b sub sp, #44 ; 0x2c
80091dc: af00 add r7, sp, #0
80091de: 60f8 str r0, [r7, #12]
80091e0: 60b9 str r1, [r7, #8]
80091e2: 607a str r2, [r7, #4]
80091e4: 603b str r3, [r7, #0]
uint32_t tmp2;
uint32_t tmp3;
uint32_t tmp4;
/* Configure DMA2D data size */
MODIFY_REG(hdma2d->Instance->NLR, (DMA2D_NLR_NL | DMA2D_NLR_PL), (Height | (Width << DMA2D_NLR_PL_Pos)));
80091e6: 68fb ldr r3, [r7, #12]
80091e8: 681b ldr r3, [r3, #0]
80091ea: 68fa ldr r2, [r7, #12]
80091ec: 6812 ldr r2, [r2, #0]
80091ee: 6c52 ldr r2, [r2, #68] ; 0x44
80091f0: f002 4140 and.w r1, r2, #3221225472 ; 0xc0000000
80091f4: 683a ldr r2, [r7, #0]
80091f6: 0410 lsls r0, r2, #16
80091f8: 6b3a ldr r2, [r7, #48] ; 0x30
80091fa: 4302 orrs r2, r0
80091fc: 430a orrs r2, r1
80091fe: 645a str r2, [r3, #68] ; 0x44
/* Configure DMA2D destination address */
WRITE_REG(hdma2d->Instance->OMAR, DstAddress);
8009200: 68fb ldr r3, [r7, #12]
8009202: 681b ldr r3, [r3, #0]
8009204: 687a ldr r2, [r7, #4]
8009206: 63da str r2, [r3, #60] ; 0x3c
/* Register to memory DMA2D mode selected */
if (hdma2d->Init.Mode == DMA2D_R2M)
8009208: 68fb ldr r3, [r7, #12]
800920a: 685b ldr r3, [r3, #4]
800920c: f5b3 3f40 cmp.w r3, #196608 ; 0x30000
8009210: d174 bne.n 80092fc <DMA2D_SetConfig+0x124>
{
tmp1 = pdata & DMA2D_OCOLR_ALPHA_1;
8009212: 68bb ldr r3, [r7, #8]
8009214: f003 437f and.w r3, r3, #4278190080 ; 0xff000000
8009218: 623b str r3, [r7, #32]
tmp2 = pdata & DMA2D_OCOLR_RED_1;
800921a: 68bb ldr r3, [r7, #8]
800921c: f403 037f and.w r3, r3, #16711680 ; 0xff0000
8009220: 61fb str r3, [r7, #28]
tmp3 = pdata & DMA2D_OCOLR_GREEN_1;
8009222: 68bb ldr r3, [r7, #8]
8009224: f403 437f and.w r3, r3, #65280 ; 0xff00
8009228: 61bb str r3, [r7, #24]
tmp4 = pdata & DMA2D_OCOLR_BLUE_1;
800922a: 68bb ldr r3, [r7, #8]
800922c: b2db uxtb r3, r3
800922e: 617b str r3, [r7, #20]
/* Prepare the value to be written to the OCOLR register according to the color mode */
if (hdma2d->Init.ColorMode == DMA2D_OUTPUT_ARGB8888)
8009230: 68fb ldr r3, [r7, #12]
8009232: 689b ldr r3, [r3, #8]
8009234: 2b00 cmp r3, #0
8009236: d108 bne.n 800924a <DMA2D_SetConfig+0x72>
{
tmp = (tmp3 | tmp2 | tmp1 | tmp4);
8009238: 69ba ldr r2, [r7, #24]
800923a: 69fb ldr r3, [r7, #28]
800923c: 431a orrs r2, r3
800923e: 6a3b ldr r3, [r7, #32]
8009240: 431a orrs r2, r3
8009242: 697b ldr r3, [r7, #20]
8009244: 4313 orrs r3, r2
8009246: 627b str r3, [r7, #36] ; 0x24
8009248: e053 b.n 80092f2 <DMA2D_SetConfig+0x11a>
}
else if (hdma2d->Init.ColorMode == DMA2D_OUTPUT_RGB888)
800924a: 68fb ldr r3, [r7, #12]
800924c: 689b ldr r3, [r3, #8]
800924e: 2b01 cmp r3, #1
8009250: d106 bne.n 8009260 <DMA2D_SetConfig+0x88>
{
tmp = (tmp3 | tmp2 | tmp4);
8009252: 69ba ldr r2, [r7, #24]
8009254: 69fb ldr r3, [r7, #28]
8009256: 431a orrs r2, r3
8009258: 697b ldr r3, [r7, #20]
800925a: 4313 orrs r3, r2
800925c: 627b str r3, [r7, #36] ; 0x24
800925e: e048 b.n 80092f2 <DMA2D_SetConfig+0x11a>
}
else if (hdma2d->Init.ColorMode == DMA2D_OUTPUT_RGB565)
8009260: 68fb ldr r3, [r7, #12]
8009262: 689b ldr r3, [r3, #8]
8009264: 2b02 cmp r3, #2
8009266: d111 bne.n 800928c <DMA2D_SetConfig+0xb4>
{
tmp2 = (tmp2 >> 19U);
8009268: 69fb ldr r3, [r7, #28]
800926a: 0cdb lsrs r3, r3, #19
800926c: 61fb str r3, [r7, #28]
tmp3 = (tmp3 >> 10U);
800926e: 69bb ldr r3, [r7, #24]
8009270: 0a9b lsrs r3, r3, #10
8009272: 61bb str r3, [r7, #24]
tmp4 = (tmp4 >> 3U);
8009274: 697b ldr r3, [r7, #20]
8009276: 08db lsrs r3, r3, #3
8009278: 617b str r3, [r7, #20]
tmp = ((tmp3 << 5U) | (tmp2 << 11U) | tmp4);
800927a: 69bb ldr r3, [r7, #24]
800927c: 015a lsls r2, r3, #5
800927e: 69fb ldr r3, [r7, #28]
8009280: 02db lsls r3, r3, #11
8009282: 431a orrs r2, r3
8009284: 697b ldr r3, [r7, #20]
8009286: 4313 orrs r3, r2
8009288: 627b str r3, [r7, #36] ; 0x24
800928a: e032 b.n 80092f2 <DMA2D_SetConfig+0x11a>
}
else if (hdma2d->Init.ColorMode == DMA2D_OUTPUT_ARGB1555)
800928c: 68fb ldr r3, [r7, #12]
800928e: 689b ldr r3, [r3, #8]
8009290: 2b03 cmp r3, #3
8009292: d117 bne.n 80092c4 <DMA2D_SetConfig+0xec>
{
tmp1 = (tmp1 >> 31U);
8009294: 6a3b ldr r3, [r7, #32]
8009296: 0fdb lsrs r3, r3, #31
8009298: 623b str r3, [r7, #32]
tmp2 = (tmp2 >> 19U);
800929a: 69fb ldr r3, [r7, #28]
800929c: 0cdb lsrs r3, r3, #19
800929e: 61fb str r3, [r7, #28]
tmp3 = (tmp3 >> 11U);
80092a0: 69bb ldr r3, [r7, #24]
80092a2: 0adb lsrs r3, r3, #11
80092a4: 61bb str r3, [r7, #24]
tmp4 = (tmp4 >> 3U);
80092a6: 697b ldr r3, [r7, #20]
80092a8: 08db lsrs r3, r3, #3
80092aa: 617b str r3, [r7, #20]
tmp = ((tmp3 << 5U) | (tmp2 << 10U) | (tmp1 << 15U) | tmp4);
80092ac: 69bb ldr r3, [r7, #24]
80092ae: 015a lsls r2, r3, #5
80092b0: 69fb ldr r3, [r7, #28]
80092b2: 029b lsls r3, r3, #10
80092b4: 431a orrs r2, r3
80092b6: 6a3b ldr r3, [r7, #32]
80092b8: 03db lsls r3, r3, #15
80092ba: 431a orrs r2, r3
80092bc: 697b ldr r3, [r7, #20]
80092be: 4313 orrs r3, r2
80092c0: 627b str r3, [r7, #36] ; 0x24
80092c2: e016 b.n 80092f2 <DMA2D_SetConfig+0x11a>
}
else /* Dhdma2d->Init.ColorMode = DMA2D_OUTPUT_ARGB4444 */
{
tmp1 = (tmp1 >> 28U);
80092c4: 6a3b ldr r3, [r7, #32]
80092c6: 0f1b lsrs r3, r3, #28
80092c8: 623b str r3, [r7, #32]
tmp2 = (tmp2 >> 20U);
80092ca: 69fb ldr r3, [r7, #28]
80092cc: 0d1b lsrs r3, r3, #20
80092ce: 61fb str r3, [r7, #28]
tmp3 = (tmp3 >> 12U);
80092d0: 69bb ldr r3, [r7, #24]
80092d2: 0b1b lsrs r3, r3, #12
80092d4: 61bb str r3, [r7, #24]
tmp4 = (tmp4 >> 4U);
80092d6: 697b ldr r3, [r7, #20]
80092d8: 091b lsrs r3, r3, #4
80092da: 617b str r3, [r7, #20]
tmp = ((tmp3 << 4U) | (tmp2 << 8U) | (tmp1 << 12U) | tmp4);
80092dc: 69bb ldr r3, [r7, #24]
80092de: 011a lsls r2, r3, #4
80092e0: 69fb ldr r3, [r7, #28]
80092e2: 021b lsls r3, r3, #8
80092e4: 431a orrs r2, r3
80092e6: 6a3b ldr r3, [r7, #32]
80092e8: 031b lsls r3, r3, #12
80092ea: 431a orrs r2, r3
80092ec: 697b ldr r3, [r7, #20]
80092ee: 4313 orrs r3, r2
80092f0: 627b str r3, [r7, #36] ; 0x24
}
/* Write to DMA2D OCOLR register */
WRITE_REG(hdma2d->Instance->OCOLR, tmp);
80092f2: 68fb ldr r3, [r7, #12]
80092f4: 681b ldr r3, [r3, #0]
80092f6: 6a7a ldr r2, [r7, #36] ; 0x24
80092f8: 639a str r2, [r3, #56] ; 0x38
else /* M2M, M2M_PFC or M2M_Blending DMA2D Mode */
{
/* Configure DMA2D source address */
WRITE_REG(hdma2d->Instance->FGMAR, pdata);
}
}
80092fa: e003 b.n 8009304 <DMA2D_SetConfig+0x12c>
WRITE_REG(hdma2d->Instance->FGMAR, pdata);
80092fc: 68fb ldr r3, [r7, #12]
80092fe: 681b ldr r3, [r3, #0]
8009300: 68ba ldr r2, [r7, #8]
8009302: 60da str r2, [r3, #12]
}
8009304: bf00 nop
8009306: 372c adds r7, #44 ; 0x2c
8009308: 46bd mov sp, r7
800930a: f85d 7b04 ldr.w r7, [sp], #4
800930e: 4770 bx lr
08009310 <HAL_GPIO_Init>:
* @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains
* the configuration information for the specified GPIO peripheral.
* @retval None
*/
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
{
8009310: b480 push {r7}
8009312: b089 sub sp, #36 ; 0x24
8009314: af00 add r7, sp, #0
8009316: 6078 str r0, [r7, #4]
8009318: 6039 str r1, [r7, #0]
uint32_t position = 0x00;
800931a: 2300 movs r3, #0
800931c: 61fb str r3, [r7, #28]
uint32_t ioposition = 0x00;
800931e: 2300 movs r3, #0
8009320: 617b str r3, [r7, #20]
uint32_t iocurrent = 0x00;
8009322: 2300 movs r3, #0
8009324: 613b str r3, [r7, #16]
uint32_t temp = 0x00;
8009326: 2300 movs r3, #0
8009328: 61bb str r3, [r7, #24]
assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
/* Configure the port pins */
for(position = 0; position < GPIO_NUMBER; position++)
800932a: 2300 movs r3, #0
800932c: 61fb str r3, [r7, #28]
800932e: e175 b.n 800961c <HAL_GPIO_Init+0x30c>
{
/* Get the IO position */
ioposition = ((uint32_t)0x01) << position;
8009330: 2201 movs r2, #1
8009332: 69fb ldr r3, [r7, #28]
8009334: fa02 f303 lsl.w r3, r2, r3
8009338: 617b str r3, [r7, #20]
/* Get the current IO position */
iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
800933a: 683b ldr r3, [r7, #0]
800933c: 681a ldr r2, [r3, #0]
800933e: 697b ldr r3, [r7, #20]
8009340: 4013 ands r3, r2
8009342: 613b str r3, [r7, #16]
if(iocurrent == ioposition)
8009344: 693a ldr r2, [r7, #16]
8009346: 697b ldr r3, [r7, #20]
8009348: 429a cmp r2, r3
800934a: f040 8164 bne.w 8009616 <HAL_GPIO_Init+0x306>
{
/*--------------------- GPIO Mode Configuration ------------------------*/
/* In case of Output or Alternate function mode selection */
if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF))
800934e: 683b ldr r3, [r7, #0]
8009350: 685b ldr r3, [r3, #4]
8009352: f003 0303 and.w r3, r3, #3
8009356: 2b01 cmp r3, #1
8009358: d005 beq.n 8009366 <HAL_GPIO_Init+0x56>
800935a: 683b ldr r3, [r7, #0]
800935c: 685b ldr r3, [r3, #4]
800935e: f003 0303 and.w r3, r3, #3
8009362: 2b02 cmp r3, #2
8009364: d130 bne.n 80093c8 <HAL_GPIO_Init+0xb8>
{
/* Check the Speed parameter */
assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
/* Configure the IO Speed */
temp = GPIOx->OSPEEDR;
8009366: 687b ldr r3, [r7, #4]
8009368: 689b ldr r3, [r3, #8]
800936a: 61bb str r3, [r7, #24]
temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
800936c: 69fb ldr r3, [r7, #28]
800936e: 005b lsls r3, r3, #1
8009370: 2203 movs r2, #3
8009372: fa02 f303 lsl.w r3, r2, r3
8009376: 43db mvns r3, r3
8009378: 69ba ldr r2, [r7, #24]
800937a: 4013 ands r3, r2
800937c: 61bb str r3, [r7, #24]
temp |= (GPIO_Init->Speed << (position * 2));
800937e: 683b ldr r3, [r7, #0]
8009380: 68da ldr r2, [r3, #12]
8009382: 69fb ldr r3, [r7, #28]
8009384: 005b lsls r3, r3, #1
8009386: fa02 f303 lsl.w r3, r2, r3
800938a: 69ba ldr r2, [r7, #24]
800938c: 4313 orrs r3, r2
800938e: 61bb str r3, [r7, #24]
GPIOx->OSPEEDR = temp;
8009390: 687b ldr r3, [r7, #4]
8009392: 69ba ldr r2, [r7, #24]
8009394: 609a str r2, [r3, #8]
/* Configure the IO Output Type */
temp = GPIOx->OTYPER;
8009396: 687b ldr r3, [r7, #4]
8009398: 685b ldr r3, [r3, #4]
800939a: 61bb str r3, [r7, #24]
temp &= ~(GPIO_OTYPER_OT_0 << position) ;
800939c: 2201 movs r2, #1
800939e: 69fb ldr r3, [r7, #28]
80093a0: fa02 f303 lsl.w r3, r2, r3
80093a4: 43db mvns r3, r3
80093a6: 69ba ldr r2, [r7, #24]
80093a8: 4013 ands r3, r2
80093aa: 61bb str r3, [r7, #24]
temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position);
80093ac: 683b ldr r3, [r7, #0]
80093ae: 685b ldr r3, [r3, #4]
80093b0: 091b lsrs r3, r3, #4
80093b2: f003 0201 and.w r2, r3, #1
80093b6: 69fb ldr r3, [r7, #28]
80093b8: fa02 f303 lsl.w r3, r2, r3
80093bc: 69ba ldr r2, [r7, #24]
80093be: 4313 orrs r3, r2
80093c0: 61bb str r3, [r7, #24]
GPIOx->OTYPER = temp;
80093c2: 687b ldr r3, [r7, #4]
80093c4: 69ba ldr r2, [r7, #24]
80093c6: 605a str r2, [r3, #4]
}
if((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG)
80093c8: 683b ldr r3, [r7, #0]
80093ca: 685b ldr r3, [r3, #4]
80093cc: f003 0303 and.w r3, r3, #3
80093d0: 2b03 cmp r3, #3
80093d2: d017 beq.n 8009404 <HAL_GPIO_Init+0xf4>
{
/* Check the Pull parameter */
assert_param(IS_GPIO_PULL(GPIO_Init->Pull));
/* Activate the Pull-up or Pull down resistor for the current IO */
temp = GPIOx->PUPDR;
80093d4: 687b ldr r3, [r7, #4]
80093d6: 68db ldr r3, [r3, #12]
80093d8: 61bb str r3, [r7, #24]
temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
80093da: 69fb ldr r3, [r7, #28]
80093dc: 005b lsls r3, r3, #1
80093de: 2203 movs r2, #3
80093e0: fa02 f303 lsl.w r3, r2, r3
80093e4: 43db mvns r3, r3
80093e6: 69ba ldr r2, [r7, #24]
80093e8: 4013 ands r3, r2
80093ea: 61bb str r3, [r7, #24]
temp |= ((GPIO_Init->Pull) << (position * 2));
80093ec: 683b ldr r3, [r7, #0]
80093ee: 689a ldr r2, [r3, #8]
80093f0: 69fb ldr r3, [r7, #28]
80093f2: 005b lsls r3, r3, #1
80093f4: fa02 f303 lsl.w r3, r2, r3
80093f8: 69ba ldr r2, [r7, #24]
80093fa: 4313 orrs r3, r2
80093fc: 61bb str r3, [r7, #24]
GPIOx->PUPDR = temp;
80093fe: 687b ldr r3, [r7, #4]
8009400: 69ba ldr r2, [r7, #24]
8009402: 60da str r2, [r3, #12]
}
/* In case of Alternate function mode selection */
if((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)
8009404: 683b ldr r3, [r7, #0]
8009406: 685b ldr r3, [r3, #4]
8009408: f003 0303 and.w r3, r3, #3
800940c: 2b02 cmp r3, #2
800940e: d123 bne.n 8009458 <HAL_GPIO_Init+0x148>
{
/* Check the Alternate function parameter */
assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
/* Configure Alternate function mapped with the current IO */
temp = GPIOx->AFR[position >> 3];
8009410: 69fb ldr r3, [r7, #28]
8009412: 08da lsrs r2, r3, #3
8009414: 687b ldr r3, [r7, #4]
8009416: 3208 adds r2, #8
8009418: f853 3022 ldr.w r3, [r3, r2, lsl #2]
800941c: 61bb str r3, [r7, #24]
temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
800941e: 69fb ldr r3, [r7, #28]
8009420: f003 0307 and.w r3, r3, #7
8009424: 009b lsls r3, r3, #2
8009426: 220f movs r2, #15
8009428: fa02 f303 lsl.w r3, r2, r3
800942c: 43db mvns r3, r3
800942e: 69ba ldr r2, [r7, #24]
8009430: 4013 ands r3, r2
8009432: 61bb str r3, [r7, #24]
temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
8009434: 683b ldr r3, [r7, #0]
8009436: 691a ldr r2, [r3, #16]
8009438: 69fb ldr r3, [r7, #28]
800943a: f003 0307 and.w r3, r3, #7
800943e: 009b lsls r3, r3, #2
8009440: fa02 f303 lsl.w r3, r2, r3
8009444: 69ba ldr r2, [r7, #24]
8009446: 4313 orrs r3, r2
8009448: 61bb str r3, [r7, #24]
GPIOx->AFR[position >> 3] = temp;
800944a: 69fb ldr r3, [r7, #28]
800944c: 08da lsrs r2, r3, #3
800944e: 687b ldr r3, [r7, #4]
8009450: 3208 adds r2, #8
8009452: 69b9 ldr r1, [r7, #24]
8009454: f843 1022 str.w r1, [r3, r2, lsl #2]
}
/* Configure IO Direction mode (Input, Output, Alternate or Analog) */
temp = GPIOx->MODER;
8009458: 687b ldr r3, [r7, #4]
800945a: 681b ldr r3, [r3, #0]
800945c: 61bb str r3, [r7, #24]
temp &= ~(GPIO_MODER_MODER0 << (position * 2));
800945e: 69fb ldr r3, [r7, #28]
8009460: 005b lsls r3, r3, #1
8009462: 2203 movs r2, #3
8009464: fa02 f303 lsl.w r3, r2, r3
8009468: 43db mvns r3, r3
800946a: 69ba ldr r2, [r7, #24]
800946c: 4013 ands r3, r2
800946e: 61bb str r3, [r7, #24]
temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));
8009470: 683b ldr r3, [r7, #0]
8009472: 685b ldr r3, [r3, #4]
8009474: f003 0203 and.w r2, r3, #3
8009478: 69fb ldr r3, [r7, #28]
800947a: 005b lsls r3, r3, #1
800947c: fa02 f303 lsl.w r3, r2, r3
8009480: 69ba ldr r2, [r7, #24]
8009482: 4313 orrs r3, r2
8009484: 61bb str r3, [r7, #24]
GPIOx->MODER = temp;
8009486: 687b ldr r3, [r7, #4]
8009488: 69ba ldr r2, [r7, #24]
800948a: 601a str r2, [r3, #0]
/*--------------------- EXTI Mode Configuration ------------------------*/
/* Configure the External Interrupt or event for the current IO */
if((GPIO_Init->Mode & EXTI_MODE) != 0x00u)
800948c: 683b ldr r3, [r7, #0]
800948e: 685b ldr r3, [r3, #4]
8009490: f403 3340 and.w r3, r3, #196608 ; 0x30000
8009494: 2b00 cmp r3, #0
8009496: f000 80be beq.w 8009616 <HAL_GPIO_Init+0x306>
{
/* Enable SYSCFG Clock */
__HAL_RCC_SYSCFG_CLK_ENABLE();
800949a: 4a65 ldr r2, [pc, #404] ; (8009630 <HAL_GPIO_Init+0x320>)
800949c: 4b64 ldr r3, [pc, #400] ; (8009630 <HAL_GPIO_Init+0x320>)
800949e: 6c5b ldr r3, [r3, #68] ; 0x44
80094a0: f443 4380 orr.w r3, r3, #16384 ; 0x4000
80094a4: 6453 str r3, [r2, #68] ; 0x44
80094a6: 4b62 ldr r3, [pc, #392] ; (8009630 <HAL_GPIO_Init+0x320>)
80094a8: 6c5b ldr r3, [r3, #68] ; 0x44
80094aa: f403 4380 and.w r3, r3, #16384 ; 0x4000
80094ae: 60fb str r3, [r7, #12]
80094b0: 68fb ldr r3, [r7, #12]
temp = SYSCFG->EXTICR[position >> 2];
80094b2: 4a60 ldr r2, [pc, #384] ; (8009634 <HAL_GPIO_Init+0x324>)
80094b4: 69fb ldr r3, [r7, #28]
80094b6: 089b lsrs r3, r3, #2
80094b8: 3302 adds r3, #2
80094ba: f852 3023 ldr.w r3, [r2, r3, lsl #2]
80094be: 61bb str r3, [r7, #24]
temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03)));
80094c0: 69fb ldr r3, [r7, #28]
80094c2: f003 0303 and.w r3, r3, #3
80094c6: 009b lsls r3, r3, #2
80094c8: 220f movs r2, #15
80094ca: fa02 f303 lsl.w r3, r2, r3
80094ce: 43db mvns r3, r3
80094d0: 69ba ldr r2, [r7, #24]
80094d2: 4013 ands r3, r2
80094d4: 61bb str r3, [r7, #24]
temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)));
80094d6: 687b ldr r3, [r7, #4]
80094d8: 4a57 ldr r2, [pc, #348] ; (8009638 <HAL_GPIO_Init+0x328>)
80094da: 4293 cmp r3, r2
80094dc: d037 beq.n 800954e <HAL_GPIO_Init+0x23e>
80094de: 687b ldr r3, [r7, #4]
80094e0: 4a56 ldr r2, [pc, #344] ; (800963c <HAL_GPIO_Init+0x32c>)
80094e2: 4293 cmp r3, r2
80094e4: d031 beq.n 800954a <HAL_GPIO_Init+0x23a>
80094e6: 687b ldr r3, [r7, #4]
80094e8: 4a55 ldr r2, [pc, #340] ; (8009640 <HAL_GPIO_Init+0x330>)
80094ea: 4293 cmp r3, r2
80094ec: d02b beq.n 8009546 <HAL_GPIO_Init+0x236>
80094ee: 687b ldr r3, [r7, #4]
80094f0: 4a54 ldr r2, [pc, #336] ; (8009644 <HAL_GPIO_Init+0x334>)
80094f2: 4293 cmp r3, r2
80094f4: d025 beq.n 8009542 <HAL_GPIO_Init+0x232>
80094f6: 687b ldr r3, [r7, #4]
80094f8: 4a53 ldr r2, [pc, #332] ; (8009648 <HAL_GPIO_Init+0x338>)
80094fa: 4293 cmp r3, r2
80094fc: d01f beq.n 800953e <HAL_GPIO_Init+0x22e>
80094fe: 687b ldr r3, [r7, #4]
8009500: 4a52 ldr r2, [pc, #328] ; (800964c <HAL_GPIO_Init+0x33c>)
8009502: 4293 cmp r3, r2
8009504: d019 beq.n 800953a <HAL_GPIO_Init+0x22a>
8009506: 687b ldr r3, [r7, #4]
8009508: 4a51 ldr r2, [pc, #324] ; (8009650 <HAL_GPIO_Init+0x340>)
800950a: 4293 cmp r3, r2
800950c: d013 beq.n 8009536 <HAL_GPIO_Init+0x226>
800950e: 687b ldr r3, [r7, #4]
8009510: 4a50 ldr r2, [pc, #320] ; (8009654 <HAL_GPIO_Init+0x344>)
8009512: 4293 cmp r3, r2
8009514: d00d beq.n 8009532 <HAL_GPIO_Init+0x222>
8009516: 687b ldr r3, [r7, #4]
8009518: 4a4f ldr r2, [pc, #316] ; (8009658 <HAL_GPIO_Init+0x348>)
800951a: 4293 cmp r3, r2
800951c: d007 beq.n 800952e <HAL_GPIO_Init+0x21e>
800951e: 687b ldr r3, [r7, #4]
8009520: 4a4e ldr r2, [pc, #312] ; (800965c <HAL_GPIO_Init+0x34c>)
8009522: 4293 cmp r3, r2
8009524: d101 bne.n 800952a <HAL_GPIO_Init+0x21a>
8009526: 2309 movs r3, #9
8009528: e012 b.n 8009550 <HAL_GPIO_Init+0x240>
800952a: 230a movs r3, #10
800952c: e010 b.n 8009550 <HAL_GPIO_Init+0x240>
800952e: 2308 movs r3, #8
8009530: e00e b.n 8009550 <HAL_GPIO_Init+0x240>
8009532: 2307 movs r3, #7
8009534: e00c b.n 8009550 <HAL_GPIO_Init+0x240>
8009536: 2306 movs r3, #6
8009538: e00a b.n 8009550 <HAL_GPIO_Init+0x240>
800953a: 2305 movs r3, #5
800953c: e008 b.n 8009550 <HAL_GPIO_Init+0x240>
800953e: 2304 movs r3, #4
8009540: e006 b.n 8009550 <HAL_GPIO_Init+0x240>
8009542: 2303 movs r3, #3
8009544: e004 b.n 8009550 <HAL_GPIO_Init+0x240>
8009546: 2302 movs r3, #2
8009548: e002 b.n 8009550 <HAL_GPIO_Init+0x240>
800954a: 2301 movs r3, #1
800954c: e000 b.n 8009550 <HAL_GPIO_Init+0x240>
800954e: 2300 movs r3, #0
8009550: 69fa ldr r2, [r7, #28]
8009552: f002 0203 and.w r2, r2, #3
8009556: 0092 lsls r2, r2, #2
8009558: 4093 lsls r3, r2
800955a: 69ba ldr r2, [r7, #24]
800955c: 4313 orrs r3, r2
800955e: 61bb str r3, [r7, #24]
SYSCFG->EXTICR[position >> 2] = temp;
8009560: 4934 ldr r1, [pc, #208] ; (8009634 <HAL_GPIO_Init+0x324>)
8009562: 69fb ldr r3, [r7, #28]
8009564: 089b lsrs r3, r3, #2
8009566: 3302 adds r3, #2
8009568: 69ba ldr r2, [r7, #24]
800956a: f841 2023 str.w r2, [r1, r3, lsl #2]
/* Clear Rising Falling edge configuration */
temp = EXTI->RTSR;
800956e: 4b3c ldr r3, [pc, #240] ; (8009660 <HAL_GPIO_Init+0x350>)
8009570: 689b ldr r3, [r3, #8]
8009572: 61bb str r3, [r7, #24]
temp &= ~((uint32_t)iocurrent);
8009574: 693b ldr r3, [r7, #16]
8009576: 43db mvns r3, r3
8009578: 69ba ldr r2, [r7, #24]
800957a: 4013 ands r3, r2
800957c: 61bb str r3, [r7, #24]
if((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u)
800957e: 683b ldr r3, [r7, #0]
8009580: 685b ldr r3, [r3, #4]
8009582: f403 1380 and.w r3, r3, #1048576 ; 0x100000
8009586: 2b00 cmp r3, #0
8009588: d003 beq.n 8009592 <HAL_GPIO_Init+0x282>
{
temp |= iocurrent;
800958a: 69ba ldr r2, [r7, #24]
800958c: 693b ldr r3, [r7, #16]
800958e: 4313 orrs r3, r2
8009590: 61bb str r3, [r7, #24]
}
EXTI->RTSR = temp;
8009592: 4a33 ldr r2, [pc, #204] ; (8009660 <HAL_GPIO_Init+0x350>)
8009594: 69bb ldr r3, [r7, #24]
8009596: 6093 str r3, [r2, #8]
temp = EXTI->FTSR;
8009598: 4b31 ldr r3, [pc, #196] ; (8009660 <HAL_GPIO_Init+0x350>)
800959a: 68db ldr r3, [r3, #12]
800959c: 61bb str r3, [r7, #24]
temp &= ~((uint32_t)iocurrent);
800959e: 693b ldr r3, [r7, #16]
80095a0: 43db mvns r3, r3
80095a2: 69ba ldr r2, [r7, #24]
80095a4: 4013 ands r3, r2
80095a6: 61bb str r3, [r7, #24]
if((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u)
80095a8: 683b ldr r3, [r7, #0]
80095aa: 685b ldr r3, [r3, #4]
80095ac: f403 1300 and.w r3, r3, #2097152 ; 0x200000
80095b0: 2b00 cmp r3, #0
80095b2: d003 beq.n 80095bc <HAL_GPIO_Init+0x2ac>
{
temp |= iocurrent;
80095b4: 69ba ldr r2, [r7, #24]
80095b6: 693b ldr r3, [r7, #16]
80095b8: 4313 orrs r3, r2
80095ba: 61bb str r3, [r7, #24]
}
EXTI->FTSR = temp;
80095bc: 4a28 ldr r2, [pc, #160] ; (8009660 <HAL_GPIO_Init+0x350>)
80095be: 69bb ldr r3, [r7, #24]
80095c0: 60d3 str r3, [r2, #12]
temp = EXTI->EMR;
80095c2: 4b27 ldr r3, [pc, #156] ; (8009660 <HAL_GPIO_Init+0x350>)
80095c4: 685b ldr r3, [r3, #4]
80095c6: 61bb str r3, [r7, #24]
temp &= ~((uint32_t)iocurrent);
80095c8: 693b ldr r3, [r7, #16]
80095ca: 43db mvns r3, r3
80095cc: 69ba ldr r2, [r7, #24]
80095ce: 4013 ands r3, r2
80095d0: 61bb str r3, [r7, #24]
if((GPIO_Init->Mode & EXTI_EVT) != 0x00u)
80095d2: 683b ldr r3, [r7, #0]
80095d4: 685b ldr r3, [r3, #4]
80095d6: f403 3300 and.w r3, r3, #131072 ; 0x20000
80095da: 2b00 cmp r3, #0
80095dc: d003 beq.n 80095e6 <HAL_GPIO_Init+0x2d6>
{
temp |= iocurrent;
80095de: 69ba ldr r2, [r7, #24]
80095e0: 693b ldr r3, [r7, #16]
80095e2: 4313 orrs r3, r2
80095e4: 61bb str r3, [r7, #24]
}
EXTI->EMR = temp;
80095e6: 4a1e ldr r2, [pc, #120] ; (8009660 <HAL_GPIO_Init+0x350>)
80095e8: 69bb ldr r3, [r7, #24]
80095ea: 6053 str r3, [r2, #4]
/* Clear EXTI line configuration */
temp = EXTI->IMR;
80095ec: 4b1c ldr r3, [pc, #112] ; (8009660 <HAL_GPIO_Init+0x350>)
80095ee: 681b ldr r3, [r3, #0]
80095f0: 61bb str r3, [r7, #24]
temp &= ~((uint32_t)iocurrent);
80095f2: 693b ldr r3, [r7, #16]
80095f4: 43db mvns r3, r3
80095f6: 69ba ldr r2, [r7, #24]
80095f8: 4013 ands r3, r2
80095fa: 61bb str r3, [r7, #24]
if((GPIO_Init->Mode & EXTI_IT) != 0x00u)
80095fc: 683b ldr r3, [r7, #0]
80095fe: 685b ldr r3, [r3, #4]
8009600: f403 3380 and.w r3, r3, #65536 ; 0x10000
8009604: 2b00 cmp r3, #0
8009606: d003 beq.n 8009610 <HAL_GPIO_Init+0x300>
{
temp |= iocurrent;
8009608: 69ba ldr r2, [r7, #24]
800960a: 693b ldr r3, [r7, #16]
800960c: 4313 orrs r3, r2
800960e: 61bb str r3, [r7, #24]
}
EXTI->IMR = temp;
8009610: 4a13 ldr r2, [pc, #76] ; (8009660 <HAL_GPIO_Init+0x350>)
8009612: 69bb ldr r3, [r7, #24]
8009614: 6013 str r3, [r2, #0]
for(position = 0; position < GPIO_NUMBER; position++)
8009616: 69fb ldr r3, [r7, #28]
8009618: 3301 adds r3, #1
800961a: 61fb str r3, [r7, #28]
800961c: 69fb ldr r3, [r7, #28]
800961e: 2b0f cmp r3, #15
8009620: f67f ae86 bls.w 8009330 <HAL_GPIO_Init+0x20>
}
}
}
}
8009624: bf00 nop
8009626: 3724 adds r7, #36 ; 0x24
8009628: 46bd mov sp, r7
800962a: f85d 7b04 ldr.w r7, [sp], #4
800962e: 4770 bx lr
8009630: 40023800 .word 0x40023800
8009634: 40013800 .word 0x40013800
8009638: 40020000 .word 0x40020000
800963c: 40020400 .word 0x40020400
8009640: 40020800 .word 0x40020800
8009644: 40020c00 .word 0x40020c00
8009648: 40021000 .word 0x40021000
800964c: 40021400 .word 0x40021400
8009650: 40021800 .word 0x40021800
8009654: 40021c00 .word 0x40021c00
8009658: 40022000 .word 0x40022000
800965c: 40022400 .word 0x40022400
8009660: 40013c00 .word 0x40013c00
08009664 <HAL_GPIO_ReadPin>:
* @param GPIO_Pin specifies the port bit to read.
* This parameter can be GPIO_PIN_x where x can be (0..15).
* @retval The input port pin value.
*/
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
8009664: b480 push {r7}
8009666: b085 sub sp, #20
8009668: af00 add r7, sp, #0
800966a: 6078 str r0, [r7, #4]
800966c: 460b mov r3, r1
800966e: 807b strh r3, [r7, #2]
GPIO_PinState bitstatus;
/* Check the parameters */
assert_param(IS_GPIO_PIN(GPIO_Pin));
if((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET)
8009670: 687b ldr r3, [r7, #4]
8009672: 691a ldr r2, [r3, #16]
8009674: 887b ldrh r3, [r7, #2]
8009676: 4013 ands r3, r2
8009678: 2b00 cmp r3, #0
800967a: d002 beq.n 8009682 <HAL_GPIO_ReadPin+0x1e>
{
bitstatus = GPIO_PIN_SET;
800967c: 2301 movs r3, #1
800967e: 73fb strb r3, [r7, #15]
8009680: e001 b.n 8009686 <HAL_GPIO_ReadPin+0x22>
}
else
{
bitstatus = GPIO_PIN_RESET;
8009682: 2300 movs r3, #0
8009684: 73fb strb r3, [r7, #15]
}
return bitstatus;
8009686: 7bfb ldrb r3, [r7, #15]
}
8009688: 4618 mov r0, r3
800968a: 3714 adds r7, #20
800968c: 46bd mov sp, r7
800968e: f85d 7b04 ldr.w r7, [sp], #4
8009692: 4770 bx lr
08009694 <HAL_GPIO_WritePin>:
* @arg GPIO_PIN_RESET: to clear the port pin
* @arg GPIO_PIN_SET: to set the port pin
* @retval None
*/
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
8009694: b480 push {r7}
8009696: b083 sub sp, #12
8009698: af00 add r7, sp, #0
800969a: 6078 str r0, [r7, #4]
800969c: 460b mov r3, r1
800969e: 807b strh r3, [r7, #2]
80096a0: 4613 mov r3, r2
80096a2: 707b strb r3, [r7, #1]
/* Check the parameters */
assert_param(IS_GPIO_PIN(GPIO_Pin));
assert_param(IS_GPIO_PIN_ACTION(PinState));
if(PinState != GPIO_PIN_RESET)
80096a4: 787b ldrb r3, [r7, #1]
80096a6: 2b00 cmp r3, #0
80096a8: d003 beq.n 80096b2 <HAL_GPIO_WritePin+0x1e>
{
GPIOx->BSRR = GPIO_Pin;
80096aa: 887a ldrh r2, [r7, #2]
80096ac: 687b ldr r3, [r7, #4]
80096ae: 619a str r2, [r3, #24]
}
else
{
GPIOx->BSRR = (uint32_t)GPIO_Pin << 16;
}
}
80096b0: e003 b.n 80096ba <HAL_GPIO_WritePin+0x26>
GPIOx->BSRR = (uint32_t)GPIO_Pin << 16;
80096b2: 887b ldrh r3, [r7, #2]
80096b4: 041a lsls r2, r3, #16
80096b6: 687b ldr r3, [r7, #4]
80096b8: 619a str r2, [r3, #24]
}
80096ba: bf00 nop
80096bc: 370c adds r7, #12
80096be: 46bd mov sp, r7
80096c0: f85d 7b04 ldr.w r7, [sp], #4
80096c4: 4770 bx lr
...
080096c8 <HAL_GPIO_EXTI_IRQHandler>:
* @brief This function handles EXTI interrupt request.
* @param GPIO_Pin Specifies the pins connected EXTI line
* @retval None
*/
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
80096c8: b580 push {r7, lr}
80096ca: b082 sub sp, #8
80096cc: af00 add r7, sp, #0
80096ce: 4603 mov r3, r0
80096d0: 80fb strh r3, [r7, #6]
/* EXTI line interrupt detected */
if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
80096d2: 4b08 ldr r3, [pc, #32] ; (80096f4 <HAL_GPIO_EXTI_IRQHandler+0x2c>)
80096d4: 695a ldr r2, [r3, #20]
80096d6: 88fb ldrh r3, [r7, #6]
80096d8: 4013 ands r3, r2
80096da: 2b00 cmp r3, #0
80096dc: d006 beq.n 80096ec <HAL_GPIO_EXTI_IRQHandler+0x24>
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
80096de: 4a05 ldr r2, [pc, #20] ; (80096f4 <HAL_GPIO_EXTI_IRQHandler+0x2c>)
80096e0: 88fb ldrh r3, [r7, #6]
80096e2: 6153 str r3, [r2, #20]
HAL_GPIO_EXTI_Callback(GPIO_Pin);
80096e4: 88fb ldrh r3, [r7, #6]
80096e6: 4618 mov r0, r3
80096e8: f7f9 fe04 bl 80032f4 <HAL_GPIO_EXTI_Callback>
}
}
80096ec: bf00 nop
80096ee: 3708 adds r7, #8
80096f0: 46bd mov sp, r7
80096f2: bd80 pop {r7, pc}
80096f4: 40013c00 .word 0x40013c00
080096f8 <HAL_LTDC_Init>:
* @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
* the configuration information for the LTDC.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_LTDC_Init(LTDC_HandleTypeDef *hltdc)
{
80096f8: b580 push {r7, lr}
80096fa: b084 sub sp, #16
80096fc: af00 add r7, sp, #0
80096fe: 6078 str r0, [r7, #4]
uint32_t tmp, tmp1;
/* Check the LTDC peripheral state */
if (hltdc == NULL)
8009700: 687b ldr r3, [r7, #4]
8009702: 2b00 cmp r3, #0
8009704: d101 bne.n 800970a <HAL_LTDC_Init+0x12>
{
return HAL_ERROR;
8009706: 2301 movs r3, #1
8009708: e0bf b.n 800988a <HAL_LTDC_Init+0x192>
}
/* Init the low level hardware */
hltdc->MspInitCallback(hltdc);
}
#else
if (hltdc->State == HAL_LTDC_STATE_RESET)
800970a: 687b ldr r3, [r7, #4]
800970c: f893 30a1 ldrb.w r3, [r3, #161] ; 0xa1
8009710: b2db uxtb r3, r3
8009712: 2b00 cmp r3, #0
8009714: d106 bne.n 8009724 <HAL_LTDC_Init+0x2c>
{
/* Allocate lock resource and initialize it */
hltdc->Lock = HAL_UNLOCKED;
8009716: 687b ldr r3, [r7, #4]
8009718: 2200 movs r2, #0
800971a: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
/* Init the low level hardware */
HAL_LTDC_MspInit(hltdc);
800971e: 6878 ldr r0, [r7, #4]
8009720: f7f8 fc1c bl 8001f5c <HAL_LTDC_MspInit>
}
#endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */
/* Change LTDC peripheral state */
hltdc->State = HAL_LTDC_STATE_BUSY;
8009724: 687b ldr r3, [r7, #4]
8009726: 2202 movs r2, #2
8009728: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Configure the HS, VS, DE and PC polarity */
hltdc->Instance->GCR &= ~(LTDC_GCR_HSPOL | LTDC_GCR_VSPOL | LTDC_GCR_DEPOL | LTDC_GCR_PCPOL);
800972c: 687b ldr r3, [r7, #4]
800972e: 681b ldr r3, [r3, #0]
8009730: 687a ldr r2, [r7, #4]
8009732: 6812 ldr r2, [r2, #0]
8009734: 6992 ldr r2, [r2, #24]
8009736: f022 4270 bic.w r2, r2, #4026531840 ; 0xf0000000
800973a: 619a str r2, [r3, #24]
hltdc->Instance->GCR |= (uint32_t)(hltdc->Init.HSPolarity | hltdc->Init.VSPolarity | \
800973c: 687b ldr r3, [r7, #4]
800973e: 681b ldr r3, [r3, #0]
8009740: 687a ldr r2, [r7, #4]
8009742: 6812 ldr r2, [r2, #0]
8009744: 6991 ldr r1, [r2, #24]
8009746: 687a ldr r2, [r7, #4]
8009748: 6850 ldr r0, [r2, #4]
800974a: 687a ldr r2, [r7, #4]
800974c: 6892 ldr r2, [r2, #8]
800974e: 4310 orrs r0, r2
hltdc->Init.DEPolarity | hltdc->Init.PCPolarity);
8009750: 687a ldr r2, [r7, #4]
8009752: 68d2 ldr r2, [r2, #12]
hltdc->Instance->GCR |= (uint32_t)(hltdc->Init.HSPolarity | hltdc->Init.VSPolarity | \
8009754: 4310 orrs r0, r2
hltdc->Init.DEPolarity | hltdc->Init.PCPolarity);
8009756: 687a ldr r2, [r7, #4]
8009758: 6912 ldr r2, [r2, #16]
800975a: 4302 orrs r2, r0
hltdc->Instance->GCR |= (uint32_t)(hltdc->Init.HSPolarity | hltdc->Init.VSPolarity | \
800975c: 430a orrs r2, r1
800975e: 619a str r2, [r3, #24]
/* Set Synchronization size */
hltdc->Instance->SSCR &= ~(LTDC_SSCR_VSH | LTDC_SSCR_HSW);
8009760: 687b ldr r3, [r7, #4]
8009762: 681a ldr r2, [r3, #0]
8009764: 687b ldr r3, [r7, #4]
8009766: 681b ldr r3, [r3, #0]
8009768: 6899 ldr r1, [r3, #8]
800976a: 4b4a ldr r3, [pc, #296] ; (8009894 <HAL_LTDC_Init+0x19c>)
800976c: 400b ands r3, r1
800976e: 6093 str r3, [r2, #8]
tmp = (hltdc->Init.HorizontalSync << 16U);
8009770: 687b ldr r3, [r7, #4]
8009772: 695b ldr r3, [r3, #20]
8009774: 041b lsls r3, r3, #16
8009776: 60fb str r3, [r7, #12]
hltdc->Instance->SSCR |= (tmp | hltdc->Init.VerticalSync);
8009778: 687b ldr r3, [r7, #4]
800977a: 681b ldr r3, [r3, #0]
800977c: 687a ldr r2, [r7, #4]
800977e: 6812 ldr r2, [r2, #0]
8009780: 6891 ldr r1, [r2, #8]
8009782: 687a ldr r2, [r7, #4]
8009784: 6990 ldr r0, [r2, #24]
8009786: 68fa ldr r2, [r7, #12]
8009788: 4302 orrs r2, r0
800978a: 430a orrs r2, r1
800978c: 609a str r2, [r3, #8]
/* Set Accumulated Back porch */
hltdc->Instance->BPCR &= ~(LTDC_BPCR_AVBP | LTDC_BPCR_AHBP);
800978e: 687b ldr r3, [r7, #4]
8009790: 681a ldr r2, [r3, #0]
8009792: 687b ldr r3, [r7, #4]
8009794: 681b ldr r3, [r3, #0]
8009796: 68d9 ldr r1, [r3, #12]
8009798: 4b3e ldr r3, [pc, #248] ; (8009894 <HAL_LTDC_Init+0x19c>)
800979a: 400b ands r3, r1
800979c: 60d3 str r3, [r2, #12]
tmp = (hltdc->Init.AccumulatedHBP << 16U);
800979e: 687b ldr r3, [r7, #4]
80097a0: 69db ldr r3, [r3, #28]
80097a2: 041b lsls r3, r3, #16
80097a4: 60fb str r3, [r7, #12]
hltdc->Instance->BPCR |= (tmp | hltdc->Init.AccumulatedVBP);
80097a6: 687b ldr r3, [r7, #4]
80097a8: 681b ldr r3, [r3, #0]
80097aa: 687a ldr r2, [r7, #4]
80097ac: 6812 ldr r2, [r2, #0]
80097ae: 68d1 ldr r1, [r2, #12]
80097b0: 687a ldr r2, [r7, #4]
80097b2: 6a10 ldr r0, [r2, #32]
80097b4: 68fa ldr r2, [r7, #12]
80097b6: 4302 orrs r2, r0
80097b8: 430a orrs r2, r1
80097ba: 60da str r2, [r3, #12]
/* Set Accumulated Active Width */
hltdc->Instance->AWCR &= ~(LTDC_AWCR_AAH | LTDC_AWCR_AAW);
80097bc: 687b ldr r3, [r7, #4]
80097be: 681a ldr r2, [r3, #0]
80097c0: 687b ldr r3, [r7, #4]
80097c2: 681b ldr r3, [r3, #0]
80097c4: 6919 ldr r1, [r3, #16]
80097c6: 4b33 ldr r3, [pc, #204] ; (8009894 <HAL_LTDC_Init+0x19c>)
80097c8: 400b ands r3, r1
80097ca: 6113 str r3, [r2, #16]
tmp = (hltdc->Init.AccumulatedActiveW << 16U);
80097cc: 687b ldr r3, [r7, #4]
80097ce: 6a5b ldr r3, [r3, #36] ; 0x24
80097d0: 041b lsls r3, r3, #16
80097d2: 60fb str r3, [r7, #12]
hltdc->Instance->AWCR |= (tmp | hltdc->Init.AccumulatedActiveH);
80097d4: 687b ldr r3, [r7, #4]
80097d6: 681b ldr r3, [r3, #0]
80097d8: 687a ldr r2, [r7, #4]
80097da: 6812 ldr r2, [r2, #0]
80097dc: 6911 ldr r1, [r2, #16]
80097de: 687a ldr r2, [r7, #4]
80097e0: 6a90 ldr r0, [r2, #40] ; 0x28
80097e2: 68fa ldr r2, [r7, #12]
80097e4: 4302 orrs r2, r0
80097e6: 430a orrs r2, r1
80097e8: 611a str r2, [r3, #16]
/* Set Total Width */
hltdc->Instance->TWCR &= ~(LTDC_TWCR_TOTALH | LTDC_TWCR_TOTALW);
80097ea: 687b ldr r3, [r7, #4]
80097ec: 681a ldr r2, [r3, #0]
80097ee: 687b ldr r3, [r7, #4]
80097f0: 681b ldr r3, [r3, #0]
80097f2: 6959 ldr r1, [r3, #20]
80097f4: 4b27 ldr r3, [pc, #156] ; (8009894 <HAL_LTDC_Init+0x19c>)
80097f6: 400b ands r3, r1
80097f8: 6153 str r3, [r2, #20]
tmp = (hltdc->Init.TotalWidth << 16U);
80097fa: 687b ldr r3, [r7, #4]
80097fc: 6adb ldr r3, [r3, #44] ; 0x2c
80097fe: 041b lsls r3, r3, #16
8009800: 60fb str r3, [r7, #12]
hltdc->Instance->TWCR |= (tmp | hltdc->Init.TotalHeigh);
8009802: 687b ldr r3, [r7, #4]
8009804: 681b ldr r3, [r3, #0]
8009806: 687a ldr r2, [r7, #4]
8009808: 6812 ldr r2, [r2, #0]
800980a: 6951 ldr r1, [r2, #20]
800980c: 687a ldr r2, [r7, #4]
800980e: 6b10 ldr r0, [r2, #48] ; 0x30
8009810: 68fa ldr r2, [r7, #12]
8009812: 4302 orrs r2, r0
8009814: 430a orrs r2, r1
8009816: 615a str r2, [r3, #20]
/* Set the background color value */
tmp = ((uint32_t)(hltdc->Init.Backcolor.Green) << 8U);
8009818: 687b ldr r3, [r7, #4]
800981a: f893 3035 ldrb.w r3, [r3, #53] ; 0x35
800981e: 021b lsls r3, r3, #8
8009820: 60fb str r3, [r7, #12]
tmp1 = ((uint32_t)(hltdc->Init.Backcolor.Red) << 16U);
8009822: 687b ldr r3, [r7, #4]
8009824: f893 3036 ldrb.w r3, [r3, #54] ; 0x36
8009828: 041b lsls r3, r3, #16
800982a: 60bb str r3, [r7, #8]
hltdc->Instance->BCCR &= ~(LTDC_BCCR_BCBLUE | LTDC_BCCR_BCGREEN | LTDC_BCCR_BCRED);
800982c: 687b ldr r3, [r7, #4]
800982e: 681b ldr r3, [r3, #0]
8009830: 687a ldr r2, [r7, #4]
8009832: 6812 ldr r2, [r2, #0]
8009834: 6ad2 ldr r2, [r2, #44] ; 0x2c
8009836: f002 427f and.w r2, r2, #4278190080 ; 0xff000000
800983a: 62da str r2, [r3, #44] ; 0x2c
hltdc->Instance->BCCR |= (tmp1 | tmp | hltdc->Init.Backcolor.Blue);
800983c: 687b ldr r3, [r7, #4]
800983e: 681b ldr r3, [r3, #0]
8009840: 687a ldr r2, [r7, #4]
8009842: 6812 ldr r2, [r2, #0]
8009844: 6ad1 ldr r1, [r2, #44] ; 0x2c
8009846: 68b8 ldr r0, [r7, #8]
8009848: 68fa ldr r2, [r7, #12]
800984a: 4302 orrs r2, r0
800984c: 6878 ldr r0, [r7, #4]
800984e: f890 0034 ldrb.w r0, [r0, #52] ; 0x34
8009852: 4302 orrs r2, r0
8009854: 430a orrs r2, r1
8009856: 62da str r2, [r3, #44] ; 0x2c
/* Enable the Transfer Error and FIFO underrun interrupts */
__HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_TE | LTDC_IT_FU);
8009858: 687b ldr r3, [r7, #4]
800985a: 681b ldr r3, [r3, #0]
800985c: 687a ldr r2, [r7, #4]
800985e: 6812 ldr r2, [r2, #0]
8009860: 6b52 ldr r2, [r2, #52] ; 0x34
8009862: f042 0206 orr.w r2, r2, #6
8009866: 635a str r2, [r3, #52] ; 0x34
/* Enable LTDC by setting LTDCEN bit */
__HAL_LTDC_ENABLE(hltdc);
8009868: 687b ldr r3, [r7, #4]
800986a: 681b ldr r3, [r3, #0]
800986c: 687a ldr r2, [r7, #4]
800986e: 6812 ldr r2, [r2, #0]
8009870: 6992 ldr r2, [r2, #24]
8009872: f042 0201 orr.w r2, r2, #1
8009876: 619a str r2, [r3, #24]
/* Initialize the error code */
hltdc->ErrorCode = HAL_LTDC_ERROR_NONE;
8009878: 687b ldr r3, [r7, #4]
800987a: 2200 movs r2, #0
800987c: f8c3 20a4 str.w r2, [r3, #164] ; 0xa4
/* Initialize the LTDC state*/
hltdc->State = HAL_LTDC_STATE_READY;
8009880: 687b ldr r3, [r7, #4]
8009882: 2201 movs r2, #1
8009884: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
return HAL_OK;
8009888: 2300 movs r3, #0
}
800988a: 4618 mov r0, r3
800988c: 3710 adds r7, #16
800988e: 46bd mov sp, r7
8009890: bd80 pop {r7, pc}
8009892: bf00 nop
8009894: f000f800 .word 0xf000f800
08009898 <HAL_LTDC_IRQHandler>:
* @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
* the configuration information for the LTDC.
* @retval HAL status
*/
void HAL_LTDC_IRQHandler(LTDC_HandleTypeDef *hltdc)
{
8009898: b580 push {r7, lr}
800989a: b084 sub sp, #16
800989c: af00 add r7, sp, #0
800989e: 6078 str r0, [r7, #4]
uint32_t isrflags = READ_REG(hltdc->Instance->ISR);
80098a0: 687b ldr r3, [r7, #4]
80098a2: 681b ldr r3, [r3, #0]
80098a4: 6b9b ldr r3, [r3, #56] ; 0x38
80098a6: 60fb str r3, [r7, #12]
uint32_t itsources = READ_REG(hltdc->Instance->IER);
80098a8: 687b ldr r3, [r7, #4]
80098aa: 681b ldr r3, [r3, #0]
80098ac: 6b5b ldr r3, [r3, #52] ; 0x34
80098ae: 60bb str r3, [r7, #8]
/* Transfer Error Interrupt management ***************************************/
if (((isrflags & LTDC_ISR_TERRIF) != 0U) && ((itsources & LTDC_IER_TERRIE) != 0U))
80098b0: 68fb ldr r3, [r7, #12]
80098b2: f003 0304 and.w r3, r3, #4
80098b6: 2b00 cmp r3, #0
80098b8: d023 beq.n 8009902 <HAL_LTDC_IRQHandler+0x6a>
80098ba: 68bb ldr r3, [r7, #8]
80098bc: f003 0304 and.w r3, r3, #4
80098c0: 2b00 cmp r3, #0
80098c2: d01e beq.n 8009902 <HAL_LTDC_IRQHandler+0x6a>
{
/* Disable the transfer Error interrupt */
__HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_TE);
80098c4: 687b ldr r3, [r7, #4]
80098c6: 681b ldr r3, [r3, #0]
80098c8: 687a ldr r2, [r7, #4]
80098ca: 6812 ldr r2, [r2, #0]
80098cc: 6b52 ldr r2, [r2, #52] ; 0x34
80098ce: f022 0204 bic.w r2, r2, #4
80098d2: 635a str r2, [r3, #52] ; 0x34
/* Clear the transfer error flag */
__HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_TE);
80098d4: 687b ldr r3, [r7, #4]
80098d6: 681b ldr r3, [r3, #0]
80098d8: 2204 movs r2, #4
80098da: 63da str r2, [r3, #60] ; 0x3c
/* Update error code */
hltdc->ErrorCode |= HAL_LTDC_ERROR_TE;
80098dc: 687b ldr r3, [r7, #4]
80098de: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4
80098e2: f043 0201 orr.w r2, r3, #1
80098e6: 687b ldr r3, [r7, #4]
80098e8: f8c3 20a4 str.w r2, [r3, #164] ; 0xa4
/* Change LTDC state */
hltdc->State = HAL_LTDC_STATE_ERROR;
80098ec: 687b ldr r3, [r7, #4]
80098ee: 2204 movs r2, #4
80098f0: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Process unlocked */
__HAL_UNLOCK(hltdc);
80098f4: 687b ldr r3, [r7, #4]
80098f6: 2200 movs r2, #0
80098f8: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
hltdc->ErrorCallback(hltdc);
#else
/* Call legacy error callback*/
HAL_LTDC_ErrorCallback(hltdc);
80098fc: 6878 ldr r0, [r7, #4]
80098fe: f000 f86f bl 80099e0 <HAL_LTDC_ErrorCallback>
#endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */
}
/* FIFO underrun Interrupt management ***************************************/
if (((isrflags & LTDC_ISR_FUIF) != 0U) && ((itsources & LTDC_IER_FUIE) != 0U))
8009902: 68fb ldr r3, [r7, #12]
8009904: f003 0302 and.w r3, r3, #2
8009908: 2b00 cmp r3, #0
800990a: d023 beq.n 8009954 <HAL_LTDC_IRQHandler+0xbc>
800990c: 68bb ldr r3, [r7, #8]
800990e: f003 0302 and.w r3, r3, #2
8009912: 2b00 cmp r3, #0
8009914: d01e beq.n 8009954 <HAL_LTDC_IRQHandler+0xbc>
{
/* Disable the FIFO underrun interrupt */
__HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_FU);
8009916: 687b ldr r3, [r7, #4]
8009918: 681b ldr r3, [r3, #0]
800991a: 687a ldr r2, [r7, #4]
800991c: 6812 ldr r2, [r2, #0]
800991e: 6b52 ldr r2, [r2, #52] ; 0x34
8009920: f022 0202 bic.w r2, r2, #2
8009924: 635a str r2, [r3, #52] ; 0x34
/* Clear the FIFO underrun flag */
__HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_FU);
8009926: 687b ldr r3, [r7, #4]
8009928: 681b ldr r3, [r3, #0]
800992a: 2202 movs r2, #2
800992c: 63da str r2, [r3, #60] ; 0x3c
/* Update error code */
hltdc->ErrorCode |= HAL_LTDC_ERROR_FU;
800992e: 687b ldr r3, [r7, #4]
8009930: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4
8009934: f043 0202 orr.w r2, r3, #2
8009938: 687b ldr r3, [r7, #4]
800993a: f8c3 20a4 str.w r2, [r3, #164] ; 0xa4
/* Change LTDC state */
hltdc->State = HAL_LTDC_STATE_ERROR;
800993e: 687b ldr r3, [r7, #4]
8009940: 2204 movs r2, #4
8009942: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Process unlocked */
__HAL_UNLOCK(hltdc);
8009946: 687b ldr r3, [r7, #4]
8009948: 2200 movs r2, #0
800994a: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
hltdc->ErrorCallback(hltdc);
#else
/* Call legacy error callback*/
HAL_LTDC_ErrorCallback(hltdc);
800994e: 6878 ldr r0, [r7, #4]
8009950: f000 f846 bl 80099e0 <HAL_LTDC_ErrorCallback>
#endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */
}
/* Line Interrupt management ************************************************/
if (((isrflags & LTDC_ISR_LIF) != 0U) && ((itsources & LTDC_IER_LIE) != 0U))
8009954: 68fb ldr r3, [r7, #12]
8009956: f003 0301 and.w r3, r3, #1
800995a: 2b00 cmp r3, #0
800995c: d01b beq.n 8009996 <HAL_LTDC_IRQHandler+0xfe>
800995e: 68bb ldr r3, [r7, #8]
8009960: f003 0301 and.w r3, r3, #1
8009964: 2b00 cmp r3, #0
8009966: d016 beq.n 8009996 <HAL_LTDC_IRQHandler+0xfe>
{
/* Disable the Line interrupt */
__HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_LI);
8009968: 687b ldr r3, [r7, #4]
800996a: 681b ldr r3, [r3, #0]
800996c: 687a ldr r2, [r7, #4]
800996e: 6812 ldr r2, [r2, #0]
8009970: 6b52 ldr r2, [r2, #52] ; 0x34
8009972: f022 0201 bic.w r2, r2, #1
8009976: 635a str r2, [r3, #52] ; 0x34
/* Clear the Line interrupt flag */
__HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_LI);
8009978: 687b ldr r3, [r7, #4]
800997a: 681b ldr r3, [r3, #0]
800997c: 2201 movs r2, #1
800997e: 63da str r2, [r3, #60] ; 0x3c
/* Change LTDC state */
hltdc->State = HAL_LTDC_STATE_READY;
8009980: 687b ldr r3, [r7, #4]
8009982: 2201 movs r2, #1
8009984: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Process unlocked */
__HAL_UNLOCK(hltdc);
8009988: 687b ldr r3, [r7, #4]
800998a: 2200 movs r2, #0
800998c: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
/*Call registered Line Event callback */
hltdc->LineEventCallback(hltdc);
#else
/*Call Legacy Line Event callback */
HAL_LTDC_LineEventCallback(hltdc);
8009990: 6878 ldr r0, [r7, #4]
8009992: f7f9 fafd bl 8002f90 <HAL_LTDC_LineEventCallback>
#endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */
}
/* Register reload Interrupt management ***************************************/
if (((isrflags & LTDC_ISR_RRIF) != 0U) && ((itsources & LTDC_IER_RRIE) != 0U))
8009996: 68fb ldr r3, [r7, #12]
8009998: f003 0308 and.w r3, r3, #8
800999c: 2b00 cmp r3, #0
800999e: d01b beq.n 80099d8 <HAL_LTDC_IRQHandler+0x140>
80099a0: 68bb ldr r3, [r7, #8]
80099a2: f003 0308 and.w r3, r3, #8
80099a6: 2b00 cmp r3, #0
80099a8: d016 beq.n 80099d8 <HAL_LTDC_IRQHandler+0x140>
{
/* Disable the register reload interrupt */
__HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_RR);
80099aa: 687b ldr r3, [r7, #4]
80099ac: 681b ldr r3, [r3, #0]
80099ae: 687a ldr r2, [r7, #4]
80099b0: 6812 ldr r2, [r2, #0]
80099b2: 6b52 ldr r2, [r2, #52] ; 0x34
80099b4: f022 0208 bic.w r2, r2, #8
80099b8: 635a str r2, [r3, #52] ; 0x34
/* Clear the register reload flag */
__HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_RR);
80099ba: 687b ldr r3, [r7, #4]
80099bc: 681b ldr r3, [r3, #0]
80099be: 2208 movs r2, #8
80099c0: 63da str r2, [r3, #60] ; 0x3c
/* Change LTDC state */
hltdc->State = HAL_LTDC_STATE_READY;
80099c2: 687b ldr r3, [r7, #4]
80099c4: 2201 movs r2, #1
80099c6: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Process unlocked */
__HAL_UNLOCK(hltdc);
80099ca: 687b ldr r3, [r7, #4]
80099cc: 2200 movs r2, #0
80099ce: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
/*Call registered reload Event callback */
hltdc->ReloadEventCallback(hltdc);
#else
/*Call Legacy Reload Event callback */
HAL_LTDC_ReloadEventCallback(hltdc);
80099d2: 6878 ldr r0, [r7, #4]
80099d4: f000 f80e bl 80099f4 <HAL_LTDC_ReloadEventCallback>
#endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */
}
}
80099d8: bf00 nop
80099da: 3710 adds r7, #16
80099dc: 46bd mov sp, r7
80099de: bd80 pop {r7, pc}
080099e0 <HAL_LTDC_ErrorCallback>:
* @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
* the configuration information for the LTDC.
* @retval None
*/
__weak void HAL_LTDC_ErrorCallback(LTDC_HandleTypeDef *hltdc)
{
80099e0: b480 push {r7}
80099e2: b083 sub sp, #12
80099e4: af00 add r7, sp, #0
80099e6: 6078 str r0, [r7, #4]
UNUSED(hltdc);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_LTDC_ErrorCallback could be implemented in the user file
*/
}
80099e8: bf00 nop
80099ea: 370c adds r7, #12
80099ec: 46bd mov sp, r7
80099ee: f85d 7b04 ldr.w r7, [sp], #4
80099f2: 4770 bx lr
080099f4 <HAL_LTDC_ReloadEventCallback>:
* @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
* the configuration information for the LTDC.
* @retval None
*/
__weak void HAL_LTDC_ReloadEventCallback(LTDC_HandleTypeDef *hltdc)
{
80099f4: b480 push {r7}
80099f6: b083 sub sp, #12
80099f8: af00 add r7, sp, #0
80099fa: 6078 str r0, [r7, #4]
UNUSED(hltdc);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_LTDC_ReloadEvenCallback could be implemented in the user file
*/
}
80099fc: bf00 nop
80099fe: 370c adds r7, #12
8009a00: 46bd mov sp, r7
8009a02: f85d 7b04 ldr.w r7, [sp], #4
8009a06: 4770 bx lr
08009a08 <HAL_LTDC_ConfigLayer>:
* This parameter can be one of the following values:
* LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
* @retval HAL status
*/
HAL_StatusTypeDef HAL_LTDC_ConfigLayer(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
{
8009a08: b5b0 push {r4, r5, r7, lr}
8009a0a: b084 sub sp, #16
8009a0c: af00 add r7, sp, #0
8009a0e: 60f8 str r0, [r7, #12]
8009a10: 60b9 str r1, [r7, #8]
8009a12: 607a str r2, [r7, #4]
assert_param(IS_LTDC_BLENDING_FACTOR2(pLayerCfg->BlendingFactor2));
assert_param(IS_LTDC_CFBLL(pLayerCfg->ImageWidth));
assert_param(IS_LTDC_CFBLNBR(pLayerCfg->ImageHeight));
/* Process locked */
__HAL_LOCK(hltdc);
8009a14: 68fb ldr r3, [r7, #12]
8009a16: f893 30a0 ldrb.w r3, [r3, #160] ; 0xa0
8009a1a: 2b01 cmp r3, #1
8009a1c: d101 bne.n 8009a22 <HAL_LTDC_ConfigLayer+0x1a>
8009a1e: 2302 movs r3, #2
8009a20: e02c b.n 8009a7c <HAL_LTDC_ConfigLayer+0x74>
8009a22: 68fb ldr r3, [r7, #12]
8009a24: 2201 movs r2, #1
8009a26: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
/* Change LTDC peripheral state */
hltdc->State = HAL_LTDC_STATE_BUSY;
8009a2a: 68fb ldr r3, [r7, #12]
8009a2c: 2202 movs r2, #2
8009a2e: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Copy new layer configuration into handle structure */
hltdc->LayerCfg[LayerIdx] = *pLayerCfg;
8009a32: 68fa ldr r2, [r7, #12]
8009a34: 687b ldr r3, [r7, #4]
8009a36: 2134 movs r1, #52 ; 0x34
8009a38: fb01 f303 mul.w r3, r1, r3
8009a3c: 4413 add r3, r2
8009a3e: f103 0238 add.w r2, r3, #56 ; 0x38
8009a42: 68bb ldr r3, [r7, #8]
8009a44: 4614 mov r4, r2
8009a46: 461d mov r5, r3
8009a48: cd0f ldmia r5!, {r0, r1, r2, r3}
8009a4a: c40f stmia r4!, {r0, r1, r2, r3}
8009a4c: cd0f ldmia r5!, {r0, r1, r2, r3}
8009a4e: c40f stmia r4!, {r0, r1, r2, r3}
8009a50: cd0f ldmia r5!, {r0, r1, r2, r3}
8009a52: c40f stmia r4!, {r0, r1, r2, r3}
8009a54: 682b ldr r3, [r5, #0]
8009a56: 6023 str r3, [r4, #0]
/* Configure the LTDC Layer */
LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
8009a58: 687a ldr r2, [r7, #4]
8009a5a: 68b9 ldr r1, [r7, #8]
8009a5c: 68f8 ldr r0, [r7, #12]
8009a5e: f000 f879 bl 8009b54 <LTDC_SetConfig>
/* Set the Immediate Reload type */
hltdc->Instance->SRCR = LTDC_SRCR_IMR;
8009a62: 68fb ldr r3, [r7, #12]
8009a64: 681b ldr r3, [r3, #0]
8009a66: 2201 movs r2, #1
8009a68: 625a str r2, [r3, #36] ; 0x24
/* Initialize the LTDC state*/
hltdc->State = HAL_LTDC_STATE_READY;
8009a6a: 68fb ldr r3, [r7, #12]
8009a6c: 2201 movs r2, #1
8009a6e: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Process unlocked */
__HAL_UNLOCK(hltdc);
8009a72: 68fb ldr r3, [r7, #12]
8009a74: 2200 movs r2, #0
8009a76: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
return HAL_OK;
8009a7a: 2300 movs r3, #0
}
8009a7c: 4618 mov r0, r3
8009a7e: 3710 adds r7, #16
8009a80: 46bd mov sp, r7
8009a82: bdb0 pop {r4, r5, r7, pc}
08009a84 <HAL_LTDC_ProgramLineEvent>:
* @param Line Line Interrupt Position.
* @note User application may resort to HAL_LTDC_LineEventCallback() at line interrupt generation.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_LTDC_ProgramLineEvent(LTDC_HandleTypeDef *hltdc, uint32_t Line)
{
8009a84: b480 push {r7}
8009a86: b083 sub sp, #12
8009a88: af00 add r7, sp, #0
8009a8a: 6078 str r0, [r7, #4]
8009a8c: 6039 str r1, [r7, #0]
/* Check the parameters */
assert_param(IS_LTDC_LIPOS(Line));
/* Process locked */
__HAL_LOCK(hltdc);
8009a8e: 687b ldr r3, [r7, #4]
8009a90: f893 30a0 ldrb.w r3, [r3, #160] ; 0xa0
8009a94: 2b01 cmp r3, #1
8009a96: d101 bne.n 8009a9c <HAL_LTDC_ProgramLineEvent+0x18>
8009a98: 2302 movs r3, #2
8009a9a: e023 b.n 8009ae4 <HAL_LTDC_ProgramLineEvent+0x60>
8009a9c: 687b ldr r3, [r7, #4]
8009a9e: 2201 movs r2, #1
8009aa0: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
/* Change LTDC peripheral state */
hltdc->State = HAL_LTDC_STATE_BUSY;
8009aa4: 687b ldr r3, [r7, #4]
8009aa6: 2202 movs r2, #2
8009aa8: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Disable the Line interrupt */
__HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_LI);
8009aac: 687b ldr r3, [r7, #4]
8009aae: 681b ldr r3, [r3, #0]
8009ab0: 687a ldr r2, [r7, #4]
8009ab2: 6812 ldr r2, [r2, #0]
8009ab4: 6b52 ldr r2, [r2, #52] ; 0x34
8009ab6: f022 0201 bic.w r2, r2, #1
8009aba: 635a str r2, [r3, #52] ; 0x34
/* Set the Line Interrupt position */
LTDC->LIPCR = (uint32_t)Line;
8009abc: 4a0c ldr r2, [pc, #48] ; (8009af0 <HAL_LTDC_ProgramLineEvent+0x6c>)
8009abe: 683b ldr r3, [r7, #0]
8009ac0: 6413 str r3, [r2, #64] ; 0x40
/* Enable the Line interrupt */
__HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_LI);
8009ac2: 687b ldr r3, [r7, #4]
8009ac4: 681b ldr r3, [r3, #0]
8009ac6: 687a ldr r2, [r7, #4]
8009ac8: 6812 ldr r2, [r2, #0]
8009aca: 6b52 ldr r2, [r2, #52] ; 0x34
8009acc: f042 0201 orr.w r2, r2, #1
8009ad0: 635a str r2, [r3, #52] ; 0x34
/* Change the LTDC state*/
hltdc->State = HAL_LTDC_STATE_READY;
8009ad2: 687b ldr r3, [r7, #4]
8009ad4: 2201 movs r2, #1
8009ad6: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Process unlocked */
__HAL_UNLOCK(hltdc);
8009ada: 687b ldr r3, [r7, #4]
8009adc: 2200 movs r2, #0
8009ade: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
return HAL_OK;
8009ae2: 2300 movs r3, #0
}
8009ae4: 4618 mov r0, r3
8009ae6: 370c adds r7, #12
8009ae8: 46bd mov sp, r7
8009aea: f85d 7b04 ldr.w r7, [sp], #4
8009aee: 4770 bx lr
8009af0: 40016800 .word 0x40016800
08009af4 <HAL_LTDC_Reload>:
* LTDC_RELOAD_VERTICAL_BLANKING : Reload in the next Vertical Blanking
* @note User application may resort to HAL_LTDC_ReloadEventCallback() at reload interrupt generation.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_LTDC_Reload(LTDC_HandleTypeDef *hltdc, uint32_t ReloadType)
{
8009af4: b480 push {r7}
8009af6: b083 sub sp, #12
8009af8: af00 add r7, sp, #0
8009afa: 6078 str r0, [r7, #4]
8009afc: 6039 str r1, [r7, #0]
/* Check the parameters */
assert_param(IS_LTDC_RELOAD(ReloadType));
/* Process locked */
__HAL_LOCK(hltdc);
8009afe: 687b ldr r3, [r7, #4]
8009b00: f893 30a0 ldrb.w r3, [r3, #160] ; 0xa0
8009b04: 2b01 cmp r3, #1
8009b06: d101 bne.n 8009b0c <HAL_LTDC_Reload+0x18>
8009b08: 2302 movs r3, #2
8009b0a: e01c b.n 8009b46 <HAL_LTDC_Reload+0x52>
8009b0c: 687b ldr r3, [r7, #4]
8009b0e: 2201 movs r2, #1
8009b10: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
/* Change LTDC peripheral state */
hltdc->State = HAL_LTDC_STATE_BUSY;
8009b14: 687b ldr r3, [r7, #4]
8009b16: 2202 movs r2, #2
8009b18: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Enable the Reload interrupt */
__HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_RR);
8009b1c: 687b ldr r3, [r7, #4]
8009b1e: 681b ldr r3, [r3, #0]
8009b20: 687a ldr r2, [r7, #4]
8009b22: 6812 ldr r2, [r2, #0]
8009b24: 6b52 ldr r2, [r2, #52] ; 0x34
8009b26: f042 0208 orr.w r2, r2, #8
8009b2a: 635a str r2, [r3, #52] ; 0x34
/* Apply Reload type */
hltdc->Instance->SRCR = ReloadType;
8009b2c: 687b ldr r3, [r7, #4]
8009b2e: 681b ldr r3, [r3, #0]
8009b30: 683a ldr r2, [r7, #0]
8009b32: 625a str r2, [r3, #36] ; 0x24
/* Change the LTDC state*/
hltdc->State = HAL_LTDC_STATE_READY;
8009b34: 687b ldr r3, [r7, #4]
8009b36: 2201 movs r2, #1
8009b38: f883 20a1 strb.w r2, [r3, #161] ; 0xa1
/* Process unlocked */
__HAL_UNLOCK(hltdc);
8009b3c: 687b ldr r3, [r7, #4]
8009b3e: 2200 movs r2, #0
8009b40: f883 20a0 strb.w r2, [r3, #160] ; 0xa0
return HAL_OK;
8009b44: 2300 movs r3, #0
}
8009b46: 4618 mov r0, r3
8009b48: 370c adds r7, #12
8009b4a: 46bd mov sp, r7
8009b4c: f85d 7b04 ldr.w r7, [sp], #4
8009b50: 4770 bx lr
...
08009b54 <LTDC_SetConfig>:
* @param LayerIdx LTDC Layer index.
* This parameter can be one of the following values: LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
* @retval None
*/
static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
{
8009b54: b480 push {r7}
8009b56: b089 sub sp, #36 ; 0x24
8009b58: af00 add r7, sp, #0
8009b5a: 60f8 str r0, [r7, #12]
8009b5c: 60b9 str r1, [r7, #8]
8009b5e: 607a str r2, [r7, #4]
uint32_t tmp;
uint32_t tmp1;
uint32_t tmp2;
/* Configure the horizontal start and stop position */
tmp = ((pLayerCfg->WindowX1 + ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U)) << 16U);
8009b60: 68bb ldr r3, [r7, #8]
8009b62: 685a ldr r2, [r3, #4]
8009b64: 68fb ldr r3, [r7, #12]
8009b66: 681b ldr r3, [r3, #0]
8009b68: 68db ldr r3, [r3, #12]
8009b6a: 0c1b lsrs r3, r3, #16
8009b6c: f3c3 030b ubfx r3, r3, #0, #12
8009b70: 4413 add r3, r2
8009b72: 041b lsls r3, r3, #16
8009b74: 61fb str r3, [r7, #28]
LTDC_LAYER(hltdc, LayerIdx)->WHPCR &= ~(LTDC_LxWHPCR_WHSTPOS | LTDC_LxWHPCR_WHSPPOS);
8009b76: 68fb ldr r3, [r7, #12]
8009b78: 681b ldr r3, [r3, #0]
8009b7a: 461a mov r2, r3
8009b7c: 687b ldr r3, [r7, #4]
8009b7e: 01db lsls r3, r3, #7
8009b80: 4413 add r3, r2
8009b82: 3384 adds r3, #132 ; 0x84
8009b84: 461a mov r2, r3
8009b86: 68fb ldr r3, [r7, #12]
8009b88: 681b ldr r3, [r3, #0]
8009b8a: 4619 mov r1, r3
8009b8c: 687b ldr r3, [r7, #4]
8009b8e: 01db lsls r3, r3, #7
8009b90: 440b add r3, r1
8009b92: 3384 adds r3, #132 ; 0x84
8009b94: 685b ldr r3, [r3, #4]
8009b96: f403 4370 and.w r3, r3, #61440 ; 0xf000
8009b9a: 6053 str r3, [r2, #4]
LTDC_LAYER(hltdc, LayerIdx)->WHPCR = ((pLayerCfg->WindowX0 + ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U) + 1U) | tmp);
8009b9c: 68fb ldr r3, [r7, #12]
8009b9e: 681b ldr r3, [r3, #0]
8009ba0: 461a mov r2, r3
8009ba2: 687b ldr r3, [r7, #4]
8009ba4: 01db lsls r3, r3, #7
8009ba6: 4413 add r3, r2
8009ba8: 3384 adds r3, #132 ; 0x84
8009baa: 4619 mov r1, r3
8009bac: 68bb ldr r3, [r7, #8]
8009bae: 681a ldr r2, [r3, #0]
8009bb0: 68fb ldr r3, [r7, #12]
8009bb2: 681b ldr r3, [r3, #0]
8009bb4: 68db ldr r3, [r3, #12]
8009bb6: 0c1b lsrs r3, r3, #16
8009bb8: f3c3 030b ubfx r3, r3, #0, #12
8009bbc: 4413 add r3, r2
8009bbe: 1c5a adds r2, r3, #1
8009bc0: 69fb ldr r3, [r7, #28]
8009bc2: 4313 orrs r3, r2
8009bc4: 604b str r3, [r1, #4]
/* Configure the vertical start and stop position */
tmp = ((pLayerCfg->WindowY1 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP)) << 16U);
8009bc6: 68bb ldr r3, [r7, #8]
8009bc8: 68da ldr r2, [r3, #12]
8009bca: 68fb ldr r3, [r7, #12]
8009bcc: 681b ldr r3, [r3, #0]
8009bce: 68db ldr r3, [r3, #12]
8009bd0: f3c3 030a ubfx r3, r3, #0, #11
8009bd4: 4413 add r3, r2
8009bd6: 041b lsls r3, r3, #16
8009bd8: 61fb str r3, [r7, #28]
LTDC_LAYER(hltdc, LayerIdx)->WVPCR &= ~(LTDC_LxWVPCR_WVSTPOS | LTDC_LxWVPCR_WVSPPOS);
8009bda: 68fb ldr r3, [r7, #12]
8009bdc: 681b ldr r3, [r3, #0]
8009bde: 461a mov r2, r3
8009be0: 687b ldr r3, [r7, #4]
8009be2: 01db lsls r3, r3, #7
8009be4: 4413 add r3, r2
8009be6: 3384 adds r3, #132 ; 0x84
8009be8: 461a mov r2, r3
8009bea: 68fb ldr r3, [r7, #12]
8009bec: 681b ldr r3, [r3, #0]
8009bee: 4619 mov r1, r3
8009bf0: 687b ldr r3, [r7, #4]
8009bf2: 01db lsls r3, r3, #7
8009bf4: 440b add r3, r1
8009bf6: 3384 adds r3, #132 ; 0x84
8009bf8: 689b ldr r3, [r3, #8]
8009bfa: f403 4370 and.w r3, r3, #61440 ; 0xf000
8009bfe: 6093 str r3, [r2, #8]
LTDC_LAYER(hltdc, LayerIdx)->WVPCR = ((pLayerCfg->WindowY0 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP) + 1U) | tmp);
8009c00: 68fb ldr r3, [r7, #12]
8009c02: 681b ldr r3, [r3, #0]
8009c04: 461a mov r2, r3
8009c06: 687b ldr r3, [r7, #4]
8009c08: 01db lsls r3, r3, #7
8009c0a: 4413 add r3, r2
8009c0c: 3384 adds r3, #132 ; 0x84
8009c0e: 4619 mov r1, r3
8009c10: 68bb ldr r3, [r7, #8]
8009c12: 689a ldr r2, [r3, #8]
8009c14: 68fb ldr r3, [r7, #12]
8009c16: 681b ldr r3, [r3, #0]
8009c18: 68db ldr r3, [r3, #12]
8009c1a: f3c3 030a ubfx r3, r3, #0, #11
8009c1e: 4413 add r3, r2
8009c20: 1c5a adds r2, r3, #1
8009c22: 69fb ldr r3, [r7, #28]
8009c24: 4313 orrs r3, r2
8009c26: 608b str r3, [r1, #8]
/* Specifies the pixel format */
LTDC_LAYER(hltdc, LayerIdx)->PFCR &= ~(LTDC_LxPFCR_PF);
8009c28: 68fb ldr r3, [r7, #12]
8009c2a: 681b ldr r3, [r3, #0]
8009c2c: 461a mov r2, r3
8009c2e: 687b ldr r3, [r7, #4]
8009c30: 01db lsls r3, r3, #7
8009c32: 4413 add r3, r2
8009c34: 3384 adds r3, #132 ; 0x84
8009c36: 461a mov r2, r3
8009c38: 68fb ldr r3, [r7, #12]
8009c3a: 681b ldr r3, [r3, #0]
8009c3c: 4619 mov r1, r3
8009c3e: 687b ldr r3, [r7, #4]
8009c40: 01db lsls r3, r3, #7
8009c42: 440b add r3, r1
8009c44: 3384 adds r3, #132 ; 0x84
8009c46: 691b ldr r3, [r3, #16]
8009c48: f023 0307 bic.w r3, r3, #7
8009c4c: 6113 str r3, [r2, #16]
LTDC_LAYER(hltdc, LayerIdx)->PFCR = (pLayerCfg->PixelFormat);
8009c4e: 68fb ldr r3, [r7, #12]
8009c50: 681b ldr r3, [r3, #0]
8009c52: 461a mov r2, r3
8009c54: 687b ldr r3, [r7, #4]
8009c56: 01db lsls r3, r3, #7
8009c58: 4413 add r3, r2
8009c5a: 3384 adds r3, #132 ; 0x84
8009c5c: 461a mov r2, r3
8009c5e: 68bb ldr r3, [r7, #8]
8009c60: 691b ldr r3, [r3, #16]
8009c62: 6113 str r3, [r2, #16]
/* Configure the default color values */
tmp = ((uint32_t)(pLayerCfg->Backcolor.Green) << 8U);
8009c64: 68bb ldr r3, [r7, #8]
8009c66: f893 3031 ldrb.w r3, [r3, #49] ; 0x31
8009c6a: 021b lsls r3, r3, #8
8009c6c: 61fb str r3, [r7, #28]
tmp1 = ((uint32_t)(pLayerCfg->Backcolor.Red) << 16U);
8009c6e: 68bb ldr r3, [r7, #8]
8009c70: f893 3032 ldrb.w r3, [r3, #50] ; 0x32
8009c74: 041b lsls r3, r3, #16
8009c76: 61bb str r3, [r7, #24]
tmp2 = (pLayerCfg->Alpha0 << 24U);
8009c78: 68bb ldr r3, [r7, #8]
8009c7a: 699b ldr r3, [r3, #24]
8009c7c: 061b lsls r3, r3, #24
8009c7e: 617b str r3, [r7, #20]
LTDC_LAYER(hltdc, LayerIdx)->DCCR &= ~(LTDC_LxDCCR_DCBLUE | LTDC_LxDCCR_DCGREEN | LTDC_LxDCCR_DCRED | LTDC_LxDCCR_DCALPHA);
8009c80: 68fb ldr r3, [r7, #12]
8009c82: 681b ldr r3, [r3, #0]
8009c84: 461a mov r2, r3
8009c86: 687b ldr r3, [r7, #4]
8009c88: 01db lsls r3, r3, #7
8009c8a: 4413 add r3, r2
8009c8c: 3384 adds r3, #132 ; 0x84
8009c8e: 699b ldr r3, [r3, #24]
8009c90: 68fb ldr r3, [r7, #12]
8009c92: 681b ldr r3, [r3, #0]
8009c94: 461a mov r2, r3
8009c96: 687b ldr r3, [r7, #4]
8009c98: 01db lsls r3, r3, #7
8009c9a: 4413 add r3, r2
8009c9c: 3384 adds r3, #132 ; 0x84
8009c9e: 461a mov r2, r3
8009ca0: 2300 movs r3, #0
8009ca2: 6193 str r3, [r2, #24]
LTDC_LAYER(hltdc, LayerIdx)->DCCR = (pLayerCfg->Backcolor.Blue | tmp | tmp1 | tmp2);
8009ca4: 68fb ldr r3, [r7, #12]
8009ca6: 681b ldr r3, [r3, #0]
8009ca8: 461a mov r2, r3
8009caa: 687b ldr r3, [r7, #4]
8009cac: 01db lsls r3, r3, #7
8009cae: 4413 add r3, r2
8009cb0: 3384 adds r3, #132 ; 0x84
8009cb2: 4619 mov r1, r3
8009cb4: 68bb ldr r3, [r7, #8]
8009cb6: f893 3030 ldrb.w r3, [r3, #48] ; 0x30
8009cba: 461a mov r2, r3
8009cbc: 69fb ldr r3, [r7, #28]
8009cbe: 431a orrs r2, r3
8009cc0: 69bb ldr r3, [r7, #24]
8009cc2: 431a orrs r2, r3
8009cc4: 697b ldr r3, [r7, #20]
8009cc6: 4313 orrs r3, r2
8009cc8: 618b str r3, [r1, #24]
/* Specifies the constant alpha value */
LTDC_LAYER(hltdc, LayerIdx)->CACR &= ~(LTDC_LxCACR_CONSTA);
8009cca: 68fb ldr r3, [r7, #12]
8009ccc: 681b ldr r3, [r3, #0]
8009cce: 461a mov r2, r3
8009cd0: 687b ldr r3, [r7, #4]
8009cd2: 01db lsls r3, r3, #7
8009cd4: 4413 add r3, r2
8009cd6: 3384 adds r3, #132 ; 0x84
8009cd8: 461a mov r2, r3
8009cda: 68fb ldr r3, [r7, #12]
8009cdc: 681b ldr r3, [r3, #0]
8009cde: 4619 mov r1, r3
8009ce0: 687b ldr r3, [r7, #4]
8009ce2: 01db lsls r3, r3, #7
8009ce4: 440b add r3, r1
8009ce6: 3384 adds r3, #132 ; 0x84
8009ce8: 695b ldr r3, [r3, #20]
8009cea: f023 03ff bic.w r3, r3, #255 ; 0xff
8009cee: 6153 str r3, [r2, #20]
LTDC_LAYER(hltdc, LayerIdx)->CACR = (pLayerCfg->Alpha);
8009cf0: 68fb ldr r3, [r7, #12]
8009cf2: 681b ldr r3, [r3, #0]
8009cf4: 461a mov r2, r3
8009cf6: 687b ldr r3, [r7, #4]
8009cf8: 01db lsls r3, r3, #7
8009cfa: 4413 add r3, r2
8009cfc: 3384 adds r3, #132 ; 0x84
8009cfe: 461a mov r2, r3
8009d00: 68bb ldr r3, [r7, #8]
8009d02: 695b ldr r3, [r3, #20]
8009d04: 6153 str r3, [r2, #20]
/* Specifies the blending factors */
LTDC_LAYER(hltdc, LayerIdx)->BFCR &= ~(LTDC_LxBFCR_BF2 | LTDC_LxBFCR_BF1);
8009d06: 68fb ldr r3, [r7, #12]
8009d08: 681b ldr r3, [r3, #0]
8009d0a: 461a mov r2, r3
8009d0c: 687b ldr r3, [r7, #4]
8009d0e: 01db lsls r3, r3, #7
8009d10: 4413 add r3, r2
8009d12: 3384 adds r3, #132 ; 0x84
8009d14: 4619 mov r1, r3
8009d16: 68fb ldr r3, [r7, #12]
8009d18: 681b ldr r3, [r3, #0]
8009d1a: 461a mov r2, r3
8009d1c: 687b ldr r3, [r7, #4]
8009d1e: 01db lsls r3, r3, #7
8009d20: 4413 add r3, r2
8009d22: 3384 adds r3, #132 ; 0x84
8009d24: 69da ldr r2, [r3, #28]
8009d26: 4b5a ldr r3, [pc, #360] ; (8009e90 <LTDC_SetConfig+0x33c>)
8009d28: 4013 ands r3, r2
8009d2a: 61cb str r3, [r1, #28]
LTDC_LAYER(hltdc, LayerIdx)->BFCR = (pLayerCfg->BlendingFactor1 | pLayerCfg->BlendingFactor2);
8009d2c: 68fb ldr r3, [r7, #12]
8009d2e: 681b ldr r3, [r3, #0]
8009d30: 461a mov r2, r3
8009d32: 687b ldr r3, [r7, #4]
8009d34: 01db lsls r3, r3, #7
8009d36: 4413 add r3, r2
8009d38: 3384 adds r3, #132 ; 0x84
8009d3a: 4619 mov r1, r3
8009d3c: 68bb ldr r3, [r7, #8]
8009d3e: 69da ldr r2, [r3, #28]
8009d40: 68bb ldr r3, [r7, #8]
8009d42: 6a1b ldr r3, [r3, #32]
8009d44: 4313 orrs r3, r2
8009d46: 61cb str r3, [r1, #28]
/* Configure the color frame buffer start address */
LTDC_LAYER(hltdc, LayerIdx)->CFBAR &= ~(LTDC_LxCFBAR_CFBADD);
8009d48: 68fb ldr r3, [r7, #12]
8009d4a: 681b ldr r3, [r3, #0]
8009d4c: 461a mov r2, r3
8009d4e: 687b ldr r3, [r7, #4]
8009d50: 01db lsls r3, r3, #7
8009d52: 4413 add r3, r2
8009d54: 3384 adds r3, #132 ; 0x84
8009d56: 6a9b ldr r3, [r3, #40] ; 0x28
8009d58: 68fb ldr r3, [r7, #12]
8009d5a: 681b ldr r3, [r3, #0]
8009d5c: 461a mov r2, r3
8009d5e: 687b ldr r3, [r7, #4]
8009d60: 01db lsls r3, r3, #7
8009d62: 4413 add r3, r2
8009d64: 3384 adds r3, #132 ; 0x84
8009d66: 461a mov r2, r3
8009d68: 2300 movs r3, #0
8009d6a: 6293 str r3, [r2, #40] ; 0x28
LTDC_LAYER(hltdc, LayerIdx)->CFBAR = (pLayerCfg->FBStartAdress);
8009d6c: 68fb ldr r3, [r7, #12]
8009d6e: 681b ldr r3, [r3, #0]
8009d70: 461a mov r2, r3
8009d72: 687b ldr r3, [r7, #4]
8009d74: 01db lsls r3, r3, #7
8009d76: 4413 add r3, r2
8009d78: 3384 adds r3, #132 ; 0x84
8009d7a: 461a mov r2, r3
8009d7c: 68bb ldr r3, [r7, #8]
8009d7e: 6a5b ldr r3, [r3, #36] ; 0x24
8009d80: 6293 str r3, [r2, #40] ; 0x28
if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB8888)
8009d82: 68bb ldr r3, [r7, #8]
8009d84: 691b ldr r3, [r3, #16]
8009d86: 2b00 cmp r3, #0
8009d88: d102 bne.n 8009d90 <LTDC_SetConfig+0x23c>
{
tmp = 4U;
8009d8a: 2304 movs r3, #4
8009d8c: 61fb str r3, [r7, #28]
8009d8e: e01b b.n 8009dc8 <LTDC_SetConfig+0x274>
}
else if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB888)
8009d90: 68bb ldr r3, [r7, #8]
8009d92: 691b ldr r3, [r3, #16]
8009d94: 2b01 cmp r3, #1
8009d96: d102 bne.n 8009d9e <LTDC_SetConfig+0x24a>
{
tmp = 3U;
8009d98: 2303 movs r3, #3
8009d9a: 61fb str r3, [r7, #28]
8009d9c: e014 b.n 8009dc8 <LTDC_SetConfig+0x274>
}
else if ((pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
8009d9e: 68bb ldr r3, [r7, #8]
8009da0: 691b ldr r3, [r3, #16]
8009da2: 2b04 cmp r3, #4
8009da4: d00b beq.n 8009dbe <LTDC_SetConfig+0x26a>
(pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
8009da6: 68bb ldr r3, [r7, #8]
8009da8: 691b ldr r3, [r3, #16]
else if ((pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
8009daa: 2b02 cmp r3, #2
8009dac: d007 beq.n 8009dbe <LTDC_SetConfig+0x26a>
(pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \
8009dae: 68bb ldr r3, [r7, #8]
8009db0: 691b ldr r3, [r3, #16]
(pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
8009db2: 2b03 cmp r3, #3
8009db4: d003 beq.n 8009dbe <LTDC_SetConfig+0x26a>
(pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_AL88))
8009db6: 68bb ldr r3, [r7, #8]
8009db8: 691b ldr r3, [r3, #16]
(pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \
8009dba: 2b07 cmp r3, #7
8009dbc: d102 bne.n 8009dc4 <LTDC_SetConfig+0x270>
{
tmp = 2U;
8009dbe: 2302 movs r3, #2
8009dc0: 61fb str r3, [r7, #28]
8009dc2: e001 b.n 8009dc8 <LTDC_SetConfig+0x274>
}
else
{
tmp = 1U;
8009dc4: 2301 movs r3, #1
8009dc6: 61fb str r3, [r7, #28]
}
/* Configure the color frame buffer pitch in byte */
LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~(LTDC_LxCFBLR_CFBLL | LTDC_LxCFBLR_CFBP);
8009dc8: 68fb ldr r3, [r7, #12]
8009dca: 681b ldr r3, [r3, #0]
8009dcc: 461a mov r2, r3
8009dce: 687b ldr r3, [r7, #4]
8009dd0: 01db lsls r3, r3, #7
8009dd2: 4413 add r3, r2
8009dd4: 3384 adds r3, #132 ; 0x84
8009dd6: 461a mov r2, r3
8009dd8: 68fb ldr r3, [r7, #12]
8009dda: 681b ldr r3, [r3, #0]
8009ddc: 4619 mov r1, r3
8009dde: 687b ldr r3, [r7, #4]
8009de0: 01db lsls r3, r3, #7
8009de2: 440b add r3, r1
8009de4: 3384 adds r3, #132 ; 0x84
8009de6: 6adb ldr r3, [r3, #44] ; 0x2c
8009de8: f003 23e0 and.w r3, r3, #3758153728 ; 0xe000e000
8009dec: 62d3 str r3, [r2, #44] ; 0x2c
LTDC_LAYER(hltdc, LayerIdx)->CFBLR = (((pLayerCfg->ImageWidth * tmp) << 16U) | (((pLayerCfg->WindowX1 - pLayerCfg->WindowX0) * tmp) + 3U));
8009dee: 68fb ldr r3, [r7, #12]
8009df0: 681b ldr r3, [r3, #0]
8009df2: 461a mov r2, r3
8009df4: 687b ldr r3, [r7, #4]
8009df6: 01db lsls r3, r3, #7
8009df8: 4413 add r3, r2
8009dfa: 3384 adds r3, #132 ; 0x84
8009dfc: 4618 mov r0, r3
8009dfe: 68bb ldr r3, [r7, #8]
8009e00: 6a9b ldr r3, [r3, #40] ; 0x28
8009e02: 69fa ldr r2, [r7, #28]
8009e04: fb02 f303 mul.w r3, r2, r3
8009e08: 041a lsls r2, r3, #16
8009e0a: 68bb ldr r3, [r7, #8]
8009e0c: 6859 ldr r1, [r3, #4]
8009e0e: 68bb ldr r3, [r7, #8]
8009e10: 681b ldr r3, [r3, #0]
8009e12: 1acb subs r3, r1, r3
8009e14: 69f9 ldr r1, [r7, #28]
8009e16: fb01 f303 mul.w r3, r1, r3
8009e1a: 3303 adds r3, #3
8009e1c: 4313 orrs r3, r2
8009e1e: 62c3 str r3, [r0, #44] ; 0x2c
/* Configure the frame buffer line number */
LTDC_LAYER(hltdc, LayerIdx)->CFBLNR &= ~(LTDC_LxCFBLNR_CFBLNBR);
8009e20: 68fb ldr r3, [r7, #12]
8009e22: 681b ldr r3, [r3, #0]
8009e24: 461a mov r2, r3
8009e26: 687b ldr r3, [r7, #4]
8009e28: 01db lsls r3, r3, #7
8009e2a: 4413 add r3, r2
8009e2c: 3384 adds r3, #132 ; 0x84
8009e2e: 4619 mov r1, r3
8009e30: 68fb ldr r3, [r7, #12]
8009e32: 681b ldr r3, [r3, #0]
8009e34: 461a mov r2, r3
8009e36: 687b ldr r3, [r7, #4]
8009e38: 01db lsls r3, r3, #7
8009e3a: 4413 add r3, r2
8009e3c: 3384 adds r3, #132 ; 0x84
8009e3e: 6b1a ldr r2, [r3, #48] ; 0x30
8009e40: 4b14 ldr r3, [pc, #80] ; (8009e94 <LTDC_SetConfig+0x340>)
8009e42: 4013 ands r3, r2
8009e44: 630b str r3, [r1, #48] ; 0x30
LTDC_LAYER(hltdc, LayerIdx)->CFBLNR = (pLayerCfg->ImageHeight);
8009e46: 68fb ldr r3, [r7, #12]
8009e48: 681b ldr r3, [r3, #0]
8009e4a: 461a mov r2, r3
8009e4c: 687b ldr r3, [r7, #4]
8009e4e: 01db lsls r3, r3, #7
8009e50: 4413 add r3, r2
8009e52: 3384 adds r3, #132 ; 0x84
8009e54: 461a mov r2, r3
8009e56: 68bb ldr r3, [r7, #8]
8009e58: 6adb ldr r3, [r3, #44] ; 0x2c
8009e5a: 6313 str r3, [r2, #48] ; 0x30
/* Enable LTDC_Layer by setting LEN bit */
LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_LEN;
8009e5c: 68fb ldr r3, [r7, #12]
8009e5e: 681b ldr r3, [r3, #0]
8009e60: 461a mov r2, r3
8009e62: 687b ldr r3, [r7, #4]
8009e64: 01db lsls r3, r3, #7
8009e66: 4413 add r3, r2
8009e68: 3384 adds r3, #132 ; 0x84
8009e6a: 461a mov r2, r3
8009e6c: 68fb ldr r3, [r7, #12]
8009e6e: 681b ldr r3, [r3, #0]
8009e70: 4619 mov r1, r3
8009e72: 687b ldr r3, [r7, #4]
8009e74: 01db lsls r3, r3, #7
8009e76: 440b add r3, r1
8009e78: 3384 adds r3, #132 ; 0x84
8009e7a: 681b ldr r3, [r3, #0]
8009e7c: f043 0301 orr.w r3, r3, #1
8009e80: 6013 str r3, [r2, #0]
}
8009e82: bf00 nop
8009e84: 3724 adds r7, #36 ; 0x24
8009e86: 46bd mov sp, r7
8009e88: f85d 7b04 ldr.w r7, [sp], #4
8009e8c: 4770 bx lr
8009e8e: bf00 nop
8009e90: fffff8f8 .word 0xfffff8f8
8009e94: fffff800 .word 0xfffff800
08009e98 <HAL_RCC_OscConfig>:
* supported by this function. User should request a transition to HSE Off
* first and then HSE On or HSE Bypass.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
{
8009e98: b580 push {r7, lr}
8009e9a: b086 sub sp, #24
8009e9c: af00 add r7, sp, #0
8009e9e: 6078 str r0, [r7, #4]
uint32_t tickstart;
uint32_t pll_config;
FlagStatus pwrclkchanged = RESET;
8009ea0: 2300 movs r3, #0
8009ea2: 75fb strb r3, [r7, #23]
/* Check Null pointer */
if (RCC_OscInitStruct == NULL)
8009ea4: 687b ldr r3, [r7, #4]
8009ea6: 2b00 cmp r3, #0
8009ea8: d101 bne.n 8009eae <HAL_RCC_OscConfig+0x16>
{
return HAL_ERROR;
8009eaa: 2301 movs r3, #1
8009eac: e29b b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
/* Check the parameters */
assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
/*------------------------------- HSE Configuration ------------------------*/
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
8009eae: 687b ldr r3, [r7, #4]
8009eb0: 681b ldr r3, [r3, #0]
8009eb2: f003 0301 and.w r3, r3, #1
8009eb6: 2b00 cmp r3, #0
8009eb8: f000 8087 beq.w 8009fca <HAL_RCC_OscConfig+0x132>
{
/* Check the parameters */
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
/* When the HSE is used as system clock or clock source for PLL, It can not be disabled */
if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
8009ebc: 4b96 ldr r3, [pc, #600] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009ebe: 689b ldr r3, [r3, #8]
8009ec0: f003 030c and.w r3, r3, #12
8009ec4: 2b04 cmp r3, #4
8009ec6: d00c beq.n 8009ee2 <HAL_RCC_OscConfig+0x4a>
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
8009ec8: 4b93 ldr r3, [pc, #588] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009eca: 689b ldr r3, [r3, #8]
8009ecc: f003 030c and.w r3, r3, #12
8009ed0: 2b08 cmp r3, #8
8009ed2: d112 bne.n 8009efa <HAL_RCC_OscConfig+0x62>
8009ed4: 4b90 ldr r3, [pc, #576] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009ed6: 685b ldr r3, [r3, #4]
8009ed8: f403 0380 and.w r3, r3, #4194304 ; 0x400000
8009edc: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000
8009ee0: d10b bne.n 8009efa <HAL_RCC_OscConfig+0x62>
{
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
8009ee2: 4b8d ldr r3, [pc, #564] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009ee4: 681b ldr r3, [r3, #0]
8009ee6: f403 3300 and.w r3, r3, #131072 ; 0x20000
8009eea: 2b00 cmp r3, #0
8009eec: d06c beq.n 8009fc8 <HAL_RCC_OscConfig+0x130>
8009eee: 687b ldr r3, [r7, #4]
8009ef0: 685b ldr r3, [r3, #4]
8009ef2: 2b00 cmp r3, #0
8009ef4: d168 bne.n 8009fc8 <HAL_RCC_OscConfig+0x130>
{
return HAL_ERROR;
8009ef6: 2301 movs r3, #1
8009ef8: e275 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
}
}
else
{
/* Set the new HSE configuration ---------------------------------------*/
__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
8009efa: 687b ldr r3, [r7, #4]
8009efc: 685b ldr r3, [r3, #4]
8009efe: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
8009f02: d106 bne.n 8009f12 <HAL_RCC_OscConfig+0x7a>
8009f04: 4a84 ldr r2, [pc, #528] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f06: 4b84 ldr r3, [pc, #528] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f08: 681b ldr r3, [r3, #0]
8009f0a: f443 3380 orr.w r3, r3, #65536 ; 0x10000
8009f0e: 6013 str r3, [r2, #0]
8009f10: e02e b.n 8009f70 <HAL_RCC_OscConfig+0xd8>
8009f12: 687b ldr r3, [r7, #4]
8009f14: 685b ldr r3, [r3, #4]
8009f16: 2b00 cmp r3, #0
8009f18: d10c bne.n 8009f34 <HAL_RCC_OscConfig+0x9c>
8009f1a: 4a7f ldr r2, [pc, #508] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f1c: 4b7e ldr r3, [pc, #504] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f1e: 681b ldr r3, [r3, #0]
8009f20: f423 3380 bic.w r3, r3, #65536 ; 0x10000
8009f24: 6013 str r3, [r2, #0]
8009f26: 4a7c ldr r2, [pc, #496] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f28: 4b7b ldr r3, [pc, #492] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f2a: 681b ldr r3, [r3, #0]
8009f2c: f423 2380 bic.w r3, r3, #262144 ; 0x40000
8009f30: 6013 str r3, [r2, #0]
8009f32: e01d b.n 8009f70 <HAL_RCC_OscConfig+0xd8>
8009f34: 687b ldr r3, [r7, #4]
8009f36: 685b ldr r3, [r3, #4]
8009f38: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000
8009f3c: d10c bne.n 8009f58 <HAL_RCC_OscConfig+0xc0>
8009f3e: 4a76 ldr r2, [pc, #472] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f40: 4b75 ldr r3, [pc, #468] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f42: 681b ldr r3, [r3, #0]
8009f44: f443 2380 orr.w r3, r3, #262144 ; 0x40000
8009f48: 6013 str r3, [r2, #0]
8009f4a: 4a73 ldr r2, [pc, #460] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f4c: 4b72 ldr r3, [pc, #456] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f4e: 681b ldr r3, [r3, #0]
8009f50: f443 3380 orr.w r3, r3, #65536 ; 0x10000
8009f54: 6013 str r3, [r2, #0]
8009f56: e00b b.n 8009f70 <HAL_RCC_OscConfig+0xd8>
8009f58: 4a6f ldr r2, [pc, #444] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f5a: 4b6f ldr r3, [pc, #444] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f5c: 681b ldr r3, [r3, #0]
8009f5e: f423 3380 bic.w r3, r3, #65536 ; 0x10000
8009f62: 6013 str r3, [r2, #0]
8009f64: 4a6c ldr r2, [pc, #432] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f66: 4b6c ldr r3, [pc, #432] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f68: 681b ldr r3, [r3, #0]
8009f6a: f423 2380 bic.w r3, r3, #262144 ; 0x40000
8009f6e: 6013 str r3, [r2, #0]
/* Check the HSE State */
if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
8009f70: 687b ldr r3, [r7, #4]
8009f72: 685b ldr r3, [r3, #4]
8009f74: 2b00 cmp r3, #0
8009f76: d013 beq.n 8009fa0 <HAL_RCC_OscConfig+0x108>
{
/* Get Start Tick*/
tickstart = HAL_GetTick();
8009f78: f7fe fb9a bl 80086b0 <HAL_GetTick>
8009f7c: 6138 str r0, [r7, #16]
/* Wait till HSE is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
8009f7e: e008 b.n 8009f92 <HAL_RCC_OscConfig+0xfa>
{
if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
8009f80: f7fe fb96 bl 80086b0 <HAL_GetTick>
8009f84: 4602 mov r2, r0
8009f86: 693b ldr r3, [r7, #16]
8009f88: 1ad3 subs r3, r2, r3
8009f8a: 2b64 cmp r3, #100 ; 0x64
8009f8c: d901 bls.n 8009f92 <HAL_RCC_OscConfig+0xfa>
{
return HAL_TIMEOUT;
8009f8e: 2303 movs r3, #3
8009f90: e229 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
8009f92: 4b61 ldr r3, [pc, #388] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009f94: 681b ldr r3, [r3, #0]
8009f96: f403 3300 and.w r3, r3, #131072 ; 0x20000
8009f9a: 2b00 cmp r3, #0
8009f9c: d0f0 beq.n 8009f80 <HAL_RCC_OscConfig+0xe8>
8009f9e: e014 b.n 8009fca <HAL_RCC_OscConfig+0x132>
}
}
else
{
/* Get Start Tick*/
tickstart = HAL_GetTick();
8009fa0: f7fe fb86 bl 80086b0 <HAL_GetTick>
8009fa4: 6138 str r0, [r7, #16]
/* Wait till HSE is bypassed or disabled */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
8009fa6: e008 b.n 8009fba <HAL_RCC_OscConfig+0x122>
{
if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
8009fa8: f7fe fb82 bl 80086b0 <HAL_GetTick>
8009fac: 4602 mov r2, r0
8009fae: 693b ldr r3, [r7, #16]
8009fb0: 1ad3 subs r3, r2, r3
8009fb2: 2b64 cmp r3, #100 ; 0x64
8009fb4: d901 bls.n 8009fba <HAL_RCC_OscConfig+0x122>
{
return HAL_TIMEOUT;
8009fb6: 2303 movs r3, #3
8009fb8: e215 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
8009fba: 4b57 ldr r3, [pc, #348] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009fbc: 681b ldr r3, [r3, #0]
8009fbe: f403 3300 and.w r3, r3, #131072 ; 0x20000
8009fc2: 2b00 cmp r3, #0
8009fc4: d1f0 bne.n 8009fa8 <HAL_RCC_OscConfig+0x110>
8009fc6: e000 b.n 8009fca <HAL_RCC_OscConfig+0x132>
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
8009fc8: bf00 nop
}
}
}
}
/*----------------------------- HSI Configuration --------------------------*/
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
8009fca: 687b ldr r3, [r7, #4]
8009fcc: 681b ldr r3, [r3, #0]
8009fce: f003 0302 and.w r3, r3, #2
8009fd2: 2b00 cmp r3, #0
8009fd4: d069 beq.n 800a0aa <HAL_RCC_OscConfig+0x212>
/* Check the parameters */
assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
/* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
8009fd6: 4b50 ldr r3, [pc, #320] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009fd8: 689b ldr r3, [r3, #8]
8009fda: f003 030c and.w r3, r3, #12
8009fde: 2b00 cmp r3, #0
8009fe0: d00b beq.n 8009ffa <HAL_RCC_OscConfig+0x162>
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
8009fe2: 4b4d ldr r3, [pc, #308] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009fe4: 689b ldr r3, [r3, #8]
8009fe6: f003 030c and.w r3, r3, #12
8009fea: 2b08 cmp r3, #8
8009fec: d11c bne.n 800a028 <HAL_RCC_OscConfig+0x190>
8009fee: 4b4a ldr r3, [pc, #296] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009ff0: 685b ldr r3, [r3, #4]
8009ff2: f403 0380 and.w r3, r3, #4194304 ; 0x400000
8009ff6: 2b00 cmp r3, #0
8009ff8: d116 bne.n 800a028 <HAL_RCC_OscConfig+0x190>
{
/* When HSI is used as system clock it will not disabled */
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
8009ffa: 4b47 ldr r3, [pc, #284] ; (800a118 <HAL_RCC_OscConfig+0x280>)
8009ffc: 681b ldr r3, [r3, #0]
8009ffe: f003 0302 and.w r3, r3, #2
800a002: 2b00 cmp r3, #0
800a004: d005 beq.n 800a012 <HAL_RCC_OscConfig+0x17a>
800a006: 687b ldr r3, [r7, #4]
800a008: 68db ldr r3, [r3, #12]
800a00a: 2b01 cmp r3, #1
800a00c: d001 beq.n 800a012 <HAL_RCC_OscConfig+0x17a>
{
return HAL_ERROR;
800a00e: 2301 movs r3, #1
800a010: e1e9 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
}
/* Otherwise, just the calibration is allowed */
else
{
/* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
__HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
800a012: 4941 ldr r1, [pc, #260] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a014: 4b40 ldr r3, [pc, #256] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a016: 681b ldr r3, [r3, #0]
800a018: f023 02f8 bic.w r2, r3, #248 ; 0xf8
800a01c: 687b ldr r3, [r7, #4]
800a01e: 691b ldr r3, [r3, #16]
800a020: 00db lsls r3, r3, #3
800a022: 4313 orrs r3, r2
800a024: 600b str r3, [r1, #0]
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
800a026: e040 b.n 800a0aa <HAL_RCC_OscConfig+0x212>
}
}
else
{
/* Check the HSI State */
if ((RCC_OscInitStruct->HSIState) != RCC_HSI_OFF)
800a028: 687b ldr r3, [r7, #4]
800a02a: 68db ldr r3, [r3, #12]
800a02c: 2b00 cmp r3, #0
800a02e: d023 beq.n 800a078 <HAL_RCC_OscConfig+0x1e0>
{
/* Enable the Internal High Speed oscillator (HSI). */
__HAL_RCC_HSI_ENABLE();
800a030: 4a39 ldr r2, [pc, #228] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a032: 4b39 ldr r3, [pc, #228] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a034: 681b ldr r3, [r3, #0]
800a036: f043 0301 orr.w r3, r3, #1
800a03a: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a03c: f7fe fb38 bl 80086b0 <HAL_GetTick>
800a040: 6138 str r0, [r7, #16]
/* Wait till HSI is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
800a042: e008 b.n 800a056 <HAL_RCC_OscConfig+0x1be>
{
if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
800a044: f7fe fb34 bl 80086b0 <HAL_GetTick>
800a048: 4602 mov r2, r0
800a04a: 693b ldr r3, [r7, #16]
800a04c: 1ad3 subs r3, r2, r3
800a04e: 2b02 cmp r3, #2
800a050: d901 bls.n 800a056 <HAL_RCC_OscConfig+0x1be>
{
return HAL_TIMEOUT;
800a052: 2303 movs r3, #3
800a054: e1c7 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
800a056: 4b30 ldr r3, [pc, #192] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a058: 681b ldr r3, [r3, #0]
800a05a: f003 0302 and.w r3, r3, #2
800a05e: 2b00 cmp r3, #0
800a060: d0f0 beq.n 800a044 <HAL_RCC_OscConfig+0x1ac>
}
}
/* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
__HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
800a062: 492d ldr r1, [pc, #180] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a064: 4b2c ldr r3, [pc, #176] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a066: 681b ldr r3, [r3, #0]
800a068: f023 02f8 bic.w r2, r3, #248 ; 0xf8
800a06c: 687b ldr r3, [r7, #4]
800a06e: 691b ldr r3, [r3, #16]
800a070: 00db lsls r3, r3, #3
800a072: 4313 orrs r3, r2
800a074: 600b str r3, [r1, #0]
800a076: e018 b.n 800a0aa <HAL_RCC_OscConfig+0x212>
}
else
{
/* Disable the Internal High Speed oscillator (HSI). */
__HAL_RCC_HSI_DISABLE();
800a078: 4a27 ldr r2, [pc, #156] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a07a: 4b27 ldr r3, [pc, #156] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a07c: 681b ldr r3, [r3, #0]
800a07e: f023 0301 bic.w r3, r3, #1
800a082: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a084: f7fe fb14 bl 80086b0 <HAL_GetTick>
800a088: 6138 str r0, [r7, #16]
/* Wait till HSI is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
800a08a: e008 b.n 800a09e <HAL_RCC_OscConfig+0x206>
{
if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
800a08c: f7fe fb10 bl 80086b0 <HAL_GetTick>
800a090: 4602 mov r2, r0
800a092: 693b ldr r3, [r7, #16]
800a094: 1ad3 subs r3, r2, r3
800a096: 2b02 cmp r3, #2
800a098: d901 bls.n 800a09e <HAL_RCC_OscConfig+0x206>
{
return HAL_TIMEOUT;
800a09a: 2303 movs r3, #3
800a09c: e1a3 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
800a09e: 4b1e ldr r3, [pc, #120] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a0a0: 681b ldr r3, [r3, #0]
800a0a2: f003 0302 and.w r3, r3, #2
800a0a6: 2b00 cmp r3, #0
800a0a8: d1f0 bne.n 800a08c <HAL_RCC_OscConfig+0x1f4>
}
}
}
}
/*------------------------------ LSI Configuration -------------------------*/
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
800a0aa: 687b ldr r3, [r7, #4]
800a0ac: 681b ldr r3, [r3, #0]
800a0ae: f003 0308 and.w r3, r3, #8
800a0b2: 2b00 cmp r3, #0
800a0b4: d038 beq.n 800a128 <HAL_RCC_OscConfig+0x290>
{
/* Check the parameters */
assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
/* Check the LSI State */
if ((RCC_OscInitStruct->LSIState) != RCC_LSI_OFF)
800a0b6: 687b ldr r3, [r7, #4]
800a0b8: 695b ldr r3, [r3, #20]
800a0ba: 2b00 cmp r3, #0
800a0bc: d019 beq.n 800a0f2 <HAL_RCC_OscConfig+0x25a>
{
/* Enable the Internal Low Speed oscillator (LSI). */
__HAL_RCC_LSI_ENABLE();
800a0be: 4a16 ldr r2, [pc, #88] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a0c0: 4b15 ldr r3, [pc, #84] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a0c2: 6f5b ldr r3, [r3, #116] ; 0x74
800a0c4: f043 0301 orr.w r3, r3, #1
800a0c8: 6753 str r3, [r2, #116] ; 0x74
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a0ca: f7fe faf1 bl 80086b0 <HAL_GetTick>
800a0ce: 6138 str r0, [r7, #16]
/* Wait till LSI is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
800a0d0: e008 b.n 800a0e4 <HAL_RCC_OscConfig+0x24c>
{
if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
800a0d2: f7fe faed bl 80086b0 <HAL_GetTick>
800a0d6: 4602 mov r2, r0
800a0d8: 693b ldr r3, [r7, #16]
800a0da: 1ad3 subs r3, r2, r3
800a0dc: 2b02 cmp r3, #2
800a0de: d901 bls.n 800a0e4 <HAL_RCC_OscConfig+0x24c>
{
return HAL_TIMEOUT;
800a0e0: 2303 movs r3, #3
800a0e2: e180 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
800a0e4: 4b0c ldr r3, [pc, #48] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a0e6: 6f5b ldr r3, [r3, #116] ; 0x74
800a0e8: f003 0302 and.w r3, r3, #2
800a0ec: 2b00 cmp r3, #0
800a0ee: d0f0 beq.n 800a0d2 <HAL_RCC_OscConfig+0x23a>
800a0f0: e01a b.n 800a128 <HAL_RCC_OscConfig+0x290>
}
}
else
{
/* Disable the Internal Low Speed oscillator (LSI). */
__HAL_RCC_LSI_DISABLE();
800a0f2: 4a09 ldr r2, [pc, #36] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a0f4: 4b08 ldr r3, [pc, #32] ; (800a118 <HAL_RCC_OscConfig+0x280>)
800a0f6: 6f5b ldr r3, [r3, #116] ; 0x74
800a0f8: f023 0301 bic.w r3, r3, #1
800a0fc: 6753 str r3, [r2, #116] ; 0x74
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a0fe: f7fe fad7 bl 80086b0 <HAL_GetTick>
800a102: 6138 str r0, [r7, #16]
/* Wait till LSI is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
800a104: e00a b.n 800a11c <HAL_RCC_OscConfig+0x284>
{
if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
800a106: f7fe fad3 bl 80086b0 <HAL_GetTick>
800a10a: 4602 mov r2, r0
800a10c: 693b ldr r3, [r7, #16]
800a10e: 1ad3 subs r3, r2, r3
800a110: 2b02 cmp r3, #2
800a112: d903 bls.n 800a11c <HAL_RCC_OscConfig+0x284>
{
return HAL_TIMEOUT;
800a114: 2303 movs r3, #3
800a116: e166 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
800a118: 40023800 .word 0x40023800
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
800a11c: 4b92 ldr r3, [pc, #584] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a11e: 6f5b ldr r3, [r3, #116] ; 0x74
800a120: f003 0302 and.w r3, r3, #2
800a124: 2b00 cmp r3, #0
800a126: d1ee bne.n 800a106 <HAL_RCC_OscConfig+0x26e>
}
}
}
}
/*------------------------------ LSE Configuration -------------------------*/
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
800a128: 687b ldr r3, [r7, #4]
800a12a: 681b ldr r3, [r3, #0]
800a12c: f003 0304 and.w r3, r3, #4
800a130: 2b00 cmp r3, #0
800a132: f000 80a4 beq.w 800a27e <HAL_RCC_OscConfig+0x3e6>
/* Check the parameters */
assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
/* Update LSE configuration in Backup Domain control register */
/* Requires to enable write access to Backup Domain of necessary */
if (__HAL_RCC_PWR_IS_CLK_DISABLED())
800a136: 4b8c ldr r3, [pc, #560] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a138: 6c1b ldr r3, [r3, #64] ; 0x40
800a13a: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
800a13e: 2b00 cmp r3, #0
800a140: d10d bne.n 800a15e <HAL_RCC_OscConfig+0x2c6>
{
/* Enable Power Clock*/
__HAL_RCC_PWR_CLK_ENABLE();
800a142: 4a89 ldr r2, [pc, #548] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a144: 4b88 ldr r3, [pc, #544] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a146: 6c1b ldr r3, [r3, #64] ; 0x40
800a148: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
800a14c: 6413 str r3, [r2, #64] ; 0x40
800a14e: 4b86 ldr r3, [pc, #536] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a150: 6c1b ldr r3, [r3, #64] ; 0x40
800a152: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
800a156: 60bb str r3, [r7, #8]
800a158: 68bb ldr r3, [r7, #8]
pwrclkchanged = SET;
800a15a: 2301 movs r3, #1
800a15c: 75fb strb r3, [r7, #23]
}
if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
800a15e: 4b83 ldr r3, [pc, #524] ; (800a36c <HAL_RCC_OscConfig+0x4d4>)
800a160: 681b ldr r3, [r3, #0]
800a162: f403 7380 and.w r3, r3, #256 ; 0x100
800a166: 2b00 cmp r3, #0
800a168: d118 bne.n 800a19c <HAL_RCC_OscConfig+0x304>
{
/* Enable write access to Backup domain */
PWR->CR1 |= PWR_CR1_DBP;
800a16a: 4a80 ldr r2, [pc, #512] ; (800a36c <HAL_RCC_OscConfig+0x4d4>)
800a16c: 4b7f ldr r3, [pc, #508] ; (800a36c <HAL_RCC_OscConfig+0x4d4>)
800a16e: 681b ldr r3, [r3, #0]
800a170: f443 7380 orr.w r3, r3, #256 ; 0x100
800a174: 6013 str r3, [r2, #0]
/* Wait for Backup domain Write protection disable */
tickstart = HAL_GetTick();
800a176: f7fe fa9b bl 80086b0 <HAL_GetTick>
800a17a: 6138 str r0, [r7, #16]
while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
800a17c: e008 b.n 800a190 <HAL_RCC_OscConfig+0x2f8>
{
if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
800a17e: f7fe fa97 bl 80086b0 <HAL_GetTick>
800a182: 4602 mov r2, r0
800a184: 693b ldr r3, [r7, #16]
800a186: 1ad3 subs r3, r2, r3
800a188: 2b64 cmp r3, #100 ; 0x64
800a18a: d901 bls.n 800a190 <HAL_RCC_OscConfig+0x2f8>
{
return HAL_TIMEOUT;
800a18c: 2303 movs r3, #3
800a18e: e12a b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
800a190: 4b76 ldr r3, [pc, #472] ; (800a36c <HAL_RCC_OscConfig+0x4d4>)
800a192: 681b ldr r3, [r3, #0]
800a194: f403 7380 and.w r3, r3, #256 ; 0x100
800a198: 2b00 cmp r3, #0
800a19a: d0f0 beq.n 800a17e <HAL_RCC_OscConfig+0x2e6>
}
}
}
/* Set the new LSE configuration -----------------------------------------*/
__HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
800a19c: 687b ldr r3, [r7, #4]
800a19e: 689b ldr r3, [r3, #8]
800a1a0: 2b01 cmp r3, #1
800a1a2: d106 bne.n 800a1b2 <HAL_RCC_OscConfig+0x31a>
800a1a4: 4a70 ldr r2, [pc, #448] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1a6: 4b70 ldr r3, [pc, #448] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1a8: 6f1b ldr r3, [r3, #112] ; 0x70
800a1aa: f043 0301 orr.w r3, r3, #1
800a1ae: 6713 str r3, [r2, #112] ; 0x70
800a1b0: e02d b.n 800a20e <HAL_RCC_OscConfig+0x376>
800a1b2: 687b ldr r3, [r7, #4]
800a1b4: 689b ldr r3, [r3, #8]
800a1b6: 2b00 cmp r3, #0
800a1b8: d10c bne.n 800a1d4 <HAL_RCC_OscConfig+0x33c>
800a1ba: 4a6b ldr r2, [pc, #428] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1bc: 4b6a ldr r3, [pc, #424] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1be: 6f1b ldr r3, [r3, #112] ; 0x70
800a1c0: f023 0301 bic.w r3, r3, #1
800a1c4: 6713 str r3, [r2, #112] ; 0x70
800a1c6: 4a68 ldr r2, [pc, #416] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1c8: 4b67 ldr r3, [pc, #412] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1ca: 6f1b ldr r3, [r3, #112] ; 0x70
800a1cc: f023 0304 bic.w r3, r3, #4
800a1d0: 6713 str r3, [r2, #112] ; 0x70
800a1d2: e01c b.n 800a20e <HAL_RCC_OscConfig+0x376>
800a1d4: 687b ldr r3, [r7, #4]
800a1d6: 689b ldr r3, [r3, #8]
800a1d8: 2b05 cmp r3, #5
800a1da: d10c bne.n 800a1f6 <HAL_RCC_OscConfig+0x35e>
800a1dc: 4a62 ldr r2, [pc, #392] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1de: 4b62 ldr r3, [pc, #392] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1e0: 6f1b ldr r3, [r3, #112] ; 0x70
800a1e2: f043 0304 orr.w r3, r3, #4
800a1e6: 6713 str r3, [r2, #112] ; 0x70
800a1e8: 4a5f ldr r2, [pc, #380] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1ea: 4b5f ldr r3, [pc, #380] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1ec: 6f1b ldr r3, [r3, #112] ; 0x70
800a1ee: f043 0301 orr.w r3, r3, #1
800a1f2: 6713 str r3, [r2, #112] ; 0x70
800a1f4: e00b b.n 800a20e <HAL_RCC_OscConfig+0x376>
800a1f6: 4a5c ldr r2, [pc, #368] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1f8: 4b5b ldr r3, [pc, #364] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a1fa: 6f1b ldr r3, [r3, #112] ; 0x70
800a1fc: f023 0301 bic.w r3, r3, #1
800a200: 6713 str r3, [r2, #112] ; 0x70
800a202: 4a59 ldr r2, [pc, #356] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a204: 4b58 ldr r3, [pc, #352] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a206: 6f1b ldr r3, [r3, #112] ; 0x70
800a208: f023 0304 bic.w r3, r3, #4
800a20c: 6713 str r3, [r2, #112] ; 0x70
/* Check the LSE State */
if ((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
800a20e: 687b ldr r3, [r7, #4]
800a210: 689b ldr r3, [r3, #8]
800a212: 2b00 cmp r3, #0
800a214: d015 beq.n 800a242 <HAL_RCC_OscConfig+0x3aa>
{
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a216: f7fe fa4b bl 80086b0 <HAL_GetTick>
800a21a: 6138 str r0, [r7, #16]
/* Wait till LSE is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
800a21c: e00a b.n 800a234 <HAL_RCC_OscConfig+0x39c>
{
if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
800a21e: f7fe fa47 bl 80086b0 <HAL_GetTick>
800a222: 4602 mov r2, r0
800a224: 693b ldr r3, [r7, #16]
800a226: 1ad3 subs r3, r2, r3
800a228: f241 3288 movw r2, #5000 ; 0x1388
800a22c: 4293 cmp r3, r2
800a22e: d901 bls.n 800a234 <HAL_RCC_OscConfig+0x39c>
{
return HAL_TIMEOUT;
800a230: 2303 movs r3, #3
800a232: e0d8 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
800a234: 4b4c ldr r3, [pc, #304] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a236: 6f1b ldr r3, [r3, #112] ; 0x70
800a238: f003 0302 and.w r3, r3, #2
800a23c: 2b00 cmp r3, #0
800a23e: d0ee beq.n 800a21e <HAL_RCC_OscConfig+0x386>
800a240: e014 b.n 800a26c <HAL_RCC_OscConfig+0x3d4>
}
}
else
{
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a242: f7fe fa35 bl 80086b0 <HAL_GetTick>
800a246: 6138 str r0, [r7, #16]
/* Wait till LSE is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
800a248: e00a b.n 800a260 <HAL_RCC_OscConfig+0x3c8>
{
if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
800a24a: f7fe fa31 bl 80086b0 <HAL_GetTick>
800a24e: 4602 mov r2, r0
800a250: 693b ldr r3, [r7, #16]
800a252: 1ad3 subs r3, r2, r3
800a254: f241 3288 movw r2, #5000 ; 0x1388
800a258: 4293 cmp r3, r2
800a25a: d901 bls.n 800a260 <HAL_RCC_OscConfig+0x3c8>
{
return HAL_TIMEOUT;
800a25c: 2303 movs r3, #3
800a25e: e0c2 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
800a260: 4b41 ldr r3, [pc, #260] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a262: 6f1b ldr r3, [r3, #112] ; 0x70
800a264: f003 0302 and.w r3, r3, #2
800a268: 2b00 cmp r3, #0
800a26a: d1ee bne.n 800a24a <HAL_RCC_OscConfig+0x3b2>
}
}
}
/* Restore clock configuration if changed */
if (pwrclkchanged == SET)
800a26c: 7dfb ldrb r3, [r7, #23]
800a26e: 2b01 cmp r3, #1
800a270: d105 bne.n 800a27e <HAL_RCC_OscConfig+0x3e6>
{
__HAL_RCC_PWR_CLK_DISABLE();
800a272: 4a3d ldr r2, [pc, #244] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a274: 4b3c ldr r3, [pc, #240] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a276: 6c1b ldr r3, [r3, #64] ; 0x40
800a278: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
800a27c: 6413 str r3, [r2, #64] ; 0x40
}
}
/*-------------------------------- PLL Configuration -----------------------*/
/* Check the parameters */
assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
800a27e: 687b ldr r3, [r7, #4]
800a280: 699b ldr r3, [r3, #24]
800a282: 2b00 cmp r3, #0
800a284: f000 80ae beq.w 800a3e4 <HAL_RCC_OscConfig+0x54c>
{
/* Check if the PLL is used as system clock or not */
if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
800a288: 4b37 ldr r3, [pc, #220] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a28a: 689b ldr r3, [r3, #8]
800a28c: f003 030c and.w r3, r3, #12
800a290: 2b08 cmp r3, #8
800a292: d06d beq.n 800a370 <HAL_RCC_OscConfig+0x4d8>
{
if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
800a294: 687b ldr r3, [r7, #4]
800a296: 699b ldr r3, [r3, #24]
800a298: 2b02 cmp r3, #2
800a29a: d14b bne.n 800a334 <HAL_RCC_OscConfig+0x49c>
#if defined (RCC_PLLCFGR_PLLR)
assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR));
#endif
/* Disable the main PLL. */
__HAL_RCC_PLL_DISABLE();
800a29c: 4a32 ldr r2, [pc, #200] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a29e: 4b32 ldr r3, [pc, #200] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a2a0: 681b ldr r3, [r3, #0]
800a2a2: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000
800a2a6: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a2a8: f7fe fa02 bl 80086b0 <HAL_GetTick>
800a2ac: 6138 str r0, [r7, #16]
/* Wait till PLL is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
800a2ae: e008 b.n 800a2c2 <HAL_RCC_OscConfig+0x42a>
{
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
800a2b0: f7fe f9fe bl 80086b0 <HAL_GetTick>
800a2b4: 4602 mov r2, r0
800a2b6: 693b ldr r3, [r7, #16]
800a2b8: 1ad3 subs r3, r2, r3
800a2ba: 2b02 cmp r3, #2
800a2bc: d901 bls.n 800a2c2 <HAL_RCC_OscConfig+0x42a>
{
return HAL_TIMEOUT;
800a2be: 2303 movs r3, #3
800a2c0: e091 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
800a2c2: 4b29 ldr r3, [pc, #164] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a2c4: 681b ldr r3, [r3, #0]
800a2c6: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
800a2ca: 2b00 cmp r3, #0
800a2cc: d1f0 bne.n 800a2b0 <HAL_RCC_OscConfig+0x418>
}
}
/* Configure the main PLL clock source, multiplication and division factors. */
#if defined (RCC_PLLCFGR_PLLR)
__HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
800a2ce: 4926 ldr r1, [pc, #152] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a2d0: 687b ldr r3, [r7, #4]
800a2d2: 69da ldr r2, [r3, #28]
800a2d4: 687b ldr r3, [r7, #4]
800a2d6: 6a1b ldr r3, [r3, #32]
800a2d8: 431a orrs r2, r3
800a2da: 687b ldr r3, [r7, #4]
800a2dc: 6a5b ldr r3, [r3, #36] ; 0x24
800a2de: 019b lsls r3, r3, #6
800a2e0: 431a orrs r2, r3
800a2e2: 687b ldr r3, [r7, #4]
800a2e4: 6a9b ldr r3, [r3, #40] ; 0x28
800a2e6: 085b lsrs r3, r3, #1
800a2e8: 3b01 subs r3, #1
800a2ea: 041b lsls r3, r3, #16
800a2ec: 431a orrs r2, r3
800a2ee: 687b ldr r3, [r7, #4]
800a2f0: 6adb ldr r3, [r3, #44] ; 0x2c
800a2f2: 061b lsls r3, r3, #24
800a2f4: 431a orrs r2, r3
800a2f6: 687b ldr r3, [r7, #4]
800a2f8: 6b1b ldr r3, [r3, #48] ; 0x30
800a2fa: 071b lsls r3, r3, #28
800a2fc: 4313 orrs r3, r2
800a2fe: 604b str r3, [r1, #4]
RCC_OscInitStruct->PLL.PLLP,
RCC_OscInitStruct->PLL.PLLQ);
#endif
/* Enable the main PLL. */
__HAL_RCC_PLL_ENABLE();
800a300: 4a19 ldr r2, [pc, #100] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a302: 4b19 ldr r3, [pc, #100] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a304: 681b ldr r3, [r3, #0]
800a306: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000
800a30a: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a30c: f7fe f9d0 bl 80086b0 <HAL_GetTick>
800a310: 6138 str r0, [r7, #16]
/* Wait till PLL is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
800a312: e008 b.n 800a326 <HAL_RCC_OscConfig+0x48e>
{
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
800a314: f7fe f9cc bl 80086b0 <HAL_GetTick>
800a318: 4602 mov r2, r0
800a31a: 693b ldr r3, [r7, #16]
800a31c: 1ad3 subs r3, r2, r3
800a31e: 2b02 cmp r3, #2
800a320: d901 bls.n 800a326 <HAL_RCC_OscConfig+0x48e>
{
return HAL_TIMEOUT;
800a322: 2303 movs r3, #3
800a324: e05f b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
800a326: 4b10 ldr r3, [pc, #64] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a328: 681b ldr r3, [r3, #0]
800a32a: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
800a32e: 2b00 cmp r3, #0
800a330: d0f0 beq.n 800a314 <HAL_RCC_OscConfig+0x47c>
800a332: e057 b.n 800a3e4 <HAL_RCC_OscConfig+0x54c>
}
}
else
{
/* Disable the main PLL. */
__HAL_RCC_PLL_DISABLE();
800a334: 4a0c ldr r2, [pc, #48] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a336: 4b0c ldr r3, [pc, #48] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a338: 681b ldr r3, [r3, #0]
800a33a: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000
800a33e: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a340: f7fe f9b6 bl 80086b0 <HAL_GetTick>
800a344: 6138 str r0, [r7, #16]
/* Wait till PLL is ready */
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
800a346: e008 b.n 800a35a <HAL_RCC_OscConfig+0x4c2>
{
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
800a348: f7fe f9b2 bl 80086b0 <HAL_GetTick>
800a34c: 4602 mov r2, r0
800a34e: 693b ldr r3, [r7, #16]
800a350: 1ad3 subs r3, r2, r3
800a352: 2b02 cmp r3, #2
800a354: d901 bls.n 800a35a <HAL_RCC_OscConfig+0x4c2>
{
return HAL_TIMEOUT;
800a356: 2303 movs r3, #3
800a358: e045 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
800a35a: 4b03 ldr r3, [pc, #12] ; (800a368 <HAL_RCC_OscConfig+0x4d0>)
800a35c: 681b ldr r3, [r3, #0]
800a35e: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
800a362: 2b00 cmp r3, #0
800a364: d1f0 bne.n 800a348 <HAL_RCC_OscConfig+0x4b0>
800a366: e03d b.n 800a3e4 <HAL_RCC_OscConfig+0x54c>
800a368: 40023800 .word 0x40023800
800a36c: 40007000 .word 0x40007000
}
}
else
{
/* Do not return HAL_ERROR if request repeats the current configuration */
pll_config = RCC->PLLCFGR;
800a370: 4b1f ldr r3, [pc, #124] ; (800a3f0 <HAL_RCC_OscConfig+0x558>)
800a372: 685b ldr r3, [r3, #4]
800a374: 60fb str r3, [r7, #12]
#if defined (RCC_PLLCFGR_PLLR)
if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) ||
800a376: 687b ldr r3, [r7, #4]
800a378: 699b ldr r3, [r3, #24]
800a37a: 2b01 cmp r3, #1
800a37c: d030 beq.n 800a3e0 <HAL_RCC_OscConfig+0x548>
(READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
800a37e: 68fb ldr r3, [r7, #12]
800a380: f403 0280 and.w r2, r3, #4194304 ; 0x400000
800a384: 687b ldr r3, [r7, #4]
800a386: 69db ldr r3, [r3, #28]
if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) ||
800a388: 429a cmp r2, r3
800a38a: d129 bne.n 800a3e0 <HAL_RCC_OscConfig+0x548>
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
800a38c: 68fb ldr r3, [r7, #12]
800a38e: f003 023f and.w r2, r3, #63 ; 0x3f
800a392: 687b ldr r3, [r7, #4]
800a394: 6a1b ldr r3, [r3, #32]
(READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
800a396: 429a cmp r2, r3
800a398: d122 bne.n 800a3e0 <HAL_RCC_OscConfig+0x548>
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
800a39a: 68fa ldr r2, [r7, #12]
800a39c: f647 73c0 movw r3, #32704 ; 0x7fc0
800a3a0: 4013 ands r3, r2
800a3a2: 687a ldr r2, [r7, #4]
800a3a4: 6a52 ldr r2, [r2, #36] ; 0x24
800a3a6: 0192 lsls r2, r2, #6
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
800a3a8: 4293 cmp r3, r2
800a3aa: d119 bne.n 800a3e0 <HAL_RCC_OscConfig+0x548>
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) ||
800a3ac: 68fb ldr r3, [r7, #12]
800a3ae: f403 3240 and.w r2, r3, #196608 ; 0x30000
800a3b2: 687b ldr r3, [r7, #4]
800a3b4: 6a9b ldr r3, [r3, #40] ; 0x28
800a3b6: 085b lsrs r3, r3, #1
800a3b8: 3b01 subs r3, #1
800a3ba: 041b lsls r3, r3, #16
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
800a3bc: 429a cmp r2, r3
800a3be: d10f bne.n 800a3e0 <HAL_RCC_OscConfig+0x548>
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) ||
800a3c0: 68fb ldr r3, [r7, #12]
800a3c2: f003 6270 and.w r2, r3, #251658240 ; 0xf000000
800a3c6: 687b ldr r3, [r7, #4]
800a3c8: 6adb ldr r3, [r3, #44] ; 0x2c
800a3ca: 061b lsls r3, r3, #24
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) ||
800a3cc: 429a cmp r2, r3
800a3ce: d107 bne.n 800a3e0 <HAL_RCC_OscConfig+0x548>
(READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos)))
800a3d0: 68fb ldr r3, [r7, #12]
800a3d2: f003 42e0 and.w r2, r3, #1879048192 ; 0x70000000
800a3d6: 687b ldr r3, [r7, #4]
800a3d8: 6b1b ldr r3, [r3, #48] ; 0x30
800a3da: 071b lsls r3, r3, #28
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) ||
800a3dc: 429a cmp r2, r3
800a3de: d001 beq.n 800a3e4 <HAL_RCC_OscConfig+0x54c>
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)))
#endif
{
return HAL_ERROR;
800a3e0: 2301 movs r3, #1
800a3e2: e000 b.n 800a3e6 <HAL_RCC_OscConfig+0x54e>
}
}
}
return HAL_OK;
800a3e4: 2300 movs r3, #0
}
800a3e6: 4618 mov r0, r3
800a3e8: 3718 adds r7, #24
800a3ea: 46bd mov sp, r7
800a3ec: bd80 pop {r7, pc}
800a3ee: bf00 nop
800a3f0: 40023800 .word 0x40023800
0800a3f4 <HAL_RCC_ClockConfig>:
* HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency
* (for more details refer to section above "Initialization/de-initialization functions")
* @retval None
*/
HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
{
800a3f4: b580 push {r7, lr}
800a3f6: b084 sub sp, #16
800a3f8: af00 add r7, sp, #0
800a3fa: 6078 str r0, [r7, #4]
800a3fc: 6039 str r1, [r7, #0]
uint32_t tickstart = 0;
800a3fe: 2300 movs r3, #0
800a400: 60fb str r3, [r7, #12]
/* Check Null pointer */
if (RCC_ClkInitStruct == NULL)
800a402: 687b ldr r3, [r7, #4]
800a404: 2b00 cmp r3, #0
800a406: d101 bne.n 800a40c <HAL_RCC_ClockConfig+0x18>
{
return HAL_ERROR;
800a408: 2301 movs r3, #1
800a40a: e0d0 b.n 800a5ae <HAL_RCC_ClockConfig+0x1ba>
/* To correctly read data from FLASH memory, the number of wait states (LATENCY)
must be correctly programmed according to the frequency of the CPU clock
(HCLK) and the supply voltage of the device. */
/* Increasing the CPU frequency */
if (FLatency > __HAL_FLASH_GET_LATENCY())
800a40c: 4b6a ldr r3, [pc, #424] ; (800a5b8 <HAL_RCC_ClockConfig+0x1c4>)
800a40e: 681b ldr r3, [r3, #0]
800a410: f003 020f and.w r2, r3, #15
800a414: 683b ldr r3, [r7, #0]
800a416: 429a cmp r2, r3
800a418: d210 bcs.n 800a43c <HAL_RCC_ClockConfig+0x48>
{
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
__HAL_FLASH_SET_LATENCY(FLatency);
800a41a: 4967 ldr r1, [pc, #412] ; (800a5b8 <HAL_RCC_ClockConfig+0x1c4>)
800a41c: 4b66 ldr r3, [pc, #408] ; (800a5b8 <HAL_RCC_ClockConfig+0x1c4>)
800a41e: 681b ldr r3, [r3, #0]
800a420: f023 020f bic.w r2, r3, #15
800a424: 683b ldr r3, [r7, #0]
800a426: 4313 orrs r3, r2
800a428: 600b str r3, [r1, #0]
/* Check that the new number of wait states is taken into account to access the Flash
memory by reading the FLASH_ACR register */
if (__HAL_FLASH_GET_LATENCY() != FLatency)
800a42a: 4b63 ldr r3, [pc, #396] ; (800a5b8 <HAL_RCC_ClockConfig+0x1c4>)
800a42c: 681b ldr r3, [r3, #0]
800a42e: f003 020f and.w r2, r3, #15
800a432: 683b ldr r3, [r7, #0]
800a434: 429a cmp r2, r3
800a436: d001 beq.n 800a43c <HAL_RCC_ClockConfig+0x48>
{
return HAL_ERROR;
800a438: 2301 movs r3, #1
800a43a: e0b8 b.n 800a5ae <HAL_RCC_ClockConfig+0x1ba>
}
}
/*-------------------------- HCLK Configuration --------------------------*/
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
800a43c: 687b ldr r3, [r7, #4]
800a43e: 681b ldr r3, [r3, #0]
800a440: f003 0302 and.w r3, r3, #2
800a444: 2b00 cmp r3, #0
800a446: d020 beq.n 800a48a <HAL_RCC_ClockConfig+0x96>
{
/* Set the highest APBx dividers in order to ensure that we do not go through
a non-spec phase whatever we decrease or increase HCLK. */
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
800a448: 687b ldr r3, [r7, #4]
800a44a: 681b ldr r3, [r3, #0]
800a44c: f003 0304 and.w r3, r3, #4
800a450: 2b00 cmp r3, #0
800a452: d005 beq.n 800a460 <HAL_RCC_ClockConfig+0x6c>
{
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
800a454: 4a59 ldr r2, [pc, #356] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a456: 4b59 ldr r3, [pc, #356] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a458: 689b ldr r3, [r3, #8]
800a45a: f443 53e0 orr.w r3, r3, #7168 ; 0x1c00
800a45e: 6093 str r3, [r2, #8]
}
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
800a460: 687b ldr r3, [r7, #4]
800a462: 681b ldr r3, [r3, #0]
800a464: f003 0308 and.w r3, r3, #8
800a468: 2b00 cmp r3, #0
800a46a: d005 beq.n 800a478 <HAL_RCC_ClockConfig+0x84>
{
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
800a46c: 4a53 ldr r2, [pc, #332] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a46e: 4b53 ldr r3, [pc, #332] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a470: 689b ldr r3, [r3, #8]
800a472: f443 4360 orr.w r3, r3, #57344 ; 0xe000
800a476: 6093 str r3, [r2, #8]
}
/* Set the new HCLK clock divider */
assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));
MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
800a478: 4950 ldr r1, [pc, #320] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a47a: 4b50 ldr r3, [pc, #320] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a47c: 689b ldr r3, [r3, #8]
800a47e: f023 02f0 bic.w r2, r3, #240 ; 0xf0
800a482: 687b ldr r3, [r7, #4]
800a484: 689b ldr r3, [r3, #8]
800a486: 4313 orrs r3, r2
800a488: 608b str r3, [r1, #8]
}
/*------------------------- SYSCLK Configuration ---------------------------*/
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
800a48a: 687b ldr r3, [r7, #4]
800a48c: 681b ldr r3, [r3, #0]
800a48e: f003 0301 and.w r3, r3, #1
800a492: 2b00 cmp r3, #0
800a494: d040 beq.n 800a518 <HAL_RCC_ClockConfig+0x124>
{
assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
/* HSE is selected as System Clock Source */
if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
800a496: 687b ldr r3, [r7, #4]
800a498: 685b ldr r3, [r3, #4]
800a49a: 2b01 cmp r3, #1
800a49c: d107 bne.n 800a4ae <HAL_RCC_ClockConfig+0xba>
{
/* Check the HSE ready flag */
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
800a49e: 4b47 ldr r3, [pc, #284] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a4a0: 681b ldr r3, [r3, #0]
800a4a2: f403 3300 and.w r3, r3, #131072 ; 0x20000
800a4a6: 2b00 cmp r3, #0
800a4a8: d115 bne.n 800a4d6 <HAL_RCC_ClockConfig+0xe2>
{
return HAL_ERROR;
800a4aa: 2301 movs r3, #1
800a4ac: e07f b.n 800a5ae <HAL_RCC_ClockConfig+0x1ba>
}
}
/* PLL is selected as System Clock Source */
else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
800a4ae: 687b ldr r3, [r7, #4]
800a4b0: 685b ldr r3, [r3, #4]
800a4b2: 2b02 cmp r3, #2
800a4b4: d107 bne.n 800a4c6 <HAL_RCC_ClockConfig+0xd2>
{
/* Check the PLL ready flag */
if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
800a4b6: 4b41 ldr r3, [pc, #260] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a4b8: 681b ldr r3, [r3, #0]
800a4ba: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
800a4be: 2b00 cmp r3, #0
800a4c0: d109 bne.n 800a4d6 <HAL_RCC_ClockConfig+0xe2>
{
return HAL_ERROR;
800a4c2: 2301 movs r3, #1
800a4c4: e073 b.n 800a5ae <HAL_RCC_ClockConfig+0x1ba>
}
/* HSI is selected as System Clock Source */
else
{
/* Check the HSI ready flag */
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
800a4c6: 4b3d ldr r3, [pc, #244] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a4c8: 681b ldr r3, [r3, #0]
800a4ca: f003 0302 and.w r3, r3, #2
800a4ce: 2b00 cmp r3, #0
800a4d0: d101 bne.n 800a4d6 <HAL_RCC_ClockConfig+0xe2>
{
return HAL_ERROR;
800a4d2: 2301 movs r3, #1
800a4d4: e06b b.n 800a5ae <HAL_RCC_ClockConfig+0x1ba>
}
}
__HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);
800a4d6: 4939 ldr r1, [pc, #228] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a4d8: 4b38 ldr r3, [pc, #224] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a4da: 689b ldr r3, [r3, #8]
800a4dc: f023 0203 bic.w r2, r3, #3
800a4e0: 687b ldr r3, [r7, #4]
800a4e2: 685b ldr r3, [r3, #4]
800a4e4: 4313 orrs r3, r2
800a4e6: 608b str r3, [r1, #8]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a4e8: f7fe f8e2 bl 80086b0 <HAL_GetTick>
800a4ec: 60f8 str r0, [r7, #12]
while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
800a4ee: e00a b.n 800a506 <HAL_RCC_ClockConfig+0x112>
{
if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
800a4f0: f7fe f8de bl 80086b0 <HAL_GetTick>
800a4f4: 4602 mov r2, r0
800a4f6: 68fb ldr r3, [r7, #12]
800a4f8: 1ad3 subs r3, r2, r3
800a4fa: f241 3288 movw r2, #5000 ; 0x1388
800a4fe: 4293 cmp r3, r2
800a500: d901 bls.n 800a506 <HAL_RCC_ClockConfig+0x112>
{
return HAL_TIMEOUT;
800a502: 2303 movs r3, #3
800a504: e053 b.n 800a5ae <HAL_RCC_ClockConfig+0x1ba>
while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
800a506: 4b2d ldr r3, [pc, #180] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a508: 689b ldr r3, [r3, #8]
800a50a: f003 020c and.w r2, r3, #12
800a50e: 687b ldr r3, [r7, #4]
800a510: 685b ldr r3, [r3, #4]
800a512: 009b lsls r3, r3, #2
800a514: 429a cmp r2, r3
800a516: d1eb bne.n 800a4f0 <HAL_RCC_ClockConfig+0xfc>
}
}
}
/* Decreasing the number of wait states because of lower CPU frequency */
if (FLatency < __HAL_FLASH_GET_LATENCY())
800a518: 4b27 ldr r3, [pc, #156] ; (800a5b8 <HAL_RCC_ClockConfig+0x1c4>)
800a51a: 681b ldr r3, [r3, #0]
800a51c: f003 020f and.w r2, r3, #15
800a520: 683b ldr r3, [r7, #0]
800a522: 429a cmp r2, r3
800a524: d910 bls.n 800a548 <HAL_RCC_ClockConfig+0x154>
{
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
__HAL_FLASH_SET_LATENCY(FLatency);
800a526: 4924 ldr r1, [pc, #144] ; (800a5b8 <HAL_RCC_ClockConfig+0x1c4>)
800a528: 4b23 ldr r3, [pc, #140] ; (800a5b8 <HAL_RCC_ClockConfig+0x1c4>)
800a52a: 681b ldr r3, [r3, #0]
800a52c: f023 020f bic.w r2, r3, #15
800a530: 683b ldr r3, [r7, #0]
800a532: 4313 orrs r3, r2
800a534: 600b str r3, [r1, #0]
/* Check that the new number of wait states is taken into account to access the Flash
memory by reading the FLASH_ACR register */
if (__HAL_FLASH_GET_LATENCY() != FLatency)
800a536: 4b20 ldr r3, [pc, #128] ; (800a5b8 <HAL_RCC_ClockConfig+0x1c4>)
800a538: 681b ldr r3, [r3, #0]
800a53a: f003 020f and.w r2, r3, #15
800a53e: 683b ldr r3, [r7, #0]
800a540: 429a cmp r2, r3
800a542: d001 beq.n 800a548 <HAL_RCC_ClockConfig+0x154>
{
return HAL_ERROR;
800a544: 2301 movs r3, #1
800a546: e032 b.n 800a5ae <HAL_RCC_ClockConfig+0x1ba>
}
}
/*-------------------------- PCLK1 Configuration ---------------------------*/
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
800a548: 687b ldr r3, [r7, #4]
800a54a: 681b ldr r3, [r3, #0]
800a54c: f003 0304 and.w r3, r3, #4
800a550: 2b00 cmp r3, #0
800a552: d008 beq.n 800a566 <HAL_RCC_ClockConfig+0x172>
{
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
800a554: 4919 ldr r1, [pc, #100] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a556: 4b19 ldr r3, [pc, #100] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a558: 689b ldr r3, [r3, #8]
800a55a: f423 52e0 bic.w r2, r3, #7168 ; 0x1c00
800a55e: 687b ldr r3, [r7, #4]
800a560: 68db ldr r3, [r3, #12]
800a562: 4313 orrs r3, r2
800a564: 608b str r3, [r1, #8]
}
/*-------------------------- PCLK2 Configuration ---------------------------*/
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
800a566: 687b ldr r3, [r7, #4]
800a568: 681b ldr r3, [r3, #0]
800a56a: f003 0308 and.w r3, r3, #8
800a56e: 2b00 cmp r3, #0
800a570: d009 beq.n 800a586 <HAL_RCC_ClockConfig+0x192>
{
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
800a572: 4912 ldr r1, [pc, #72] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a574: 4b11 ldr r3, [pc, #68] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a576: 689b ldr r3, [r3, #8]
800a578: f423 4260 bic.w r2, r3, #57344 ; 0xe000
800a57c: 687b ldr r3, [r7, #4]
800a57e: 691b ldr r3, [r3, #16]
800a580: 00db lsls r3, r3, #3
800a582: 4313 orrs r3, r2
800a584: 608b str r3, [r1, #8]
}
/* Update the SystemCoreClock global variable */
SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos];
800a586: f000 f821 bl 800a5cc <HAL_RCC_GetSysClockFreq>
800a58a: 4601 mov r1, r0
800a58c: 4b0b ldr r3, [pc, #44] ; (800a5bc <HAL_RCC_ClockConfig+0x1c8>)
800a58e: 689b ldr r3, [r3, #8]
800a590: 091b lsrs r3, r3, #4
800a592: f003 030f and.w r3, r3, #15
800a596: 4a0a ldr r2, [pc, #40] ; (800a5c0 <HAL_RCC_ClockConfig+0x1cc>)
800a598: 5cd3 ldrb r3, [r2, r3]
800a59a: fa21 f303 lsr.w r3, r1, r3
800a59e: 4a09 ldr r2, [pc, #36] ; (800a5c4 <HAL_RCC_ClockConfig+0x1d0>)
800a5a0: 6013 str r3, [r2, #0]
/* Configure the source of time base considering new system clocks settings*/
HAL_InitTick(uwTickPrio);
800a5a2: 4b09 ldr r3, [pc, #36] ; (800a5c8 <HAL_RCC_ClockConfig+0x1d4>)
800a5a4: 681b ldr r3, [r3, #0]
800a5a6: 4618 mov r0, r3
800a5a8: f7fe f83e bl 8008628 <HAL_InitTick>
return HAL_OK;
800a5ac: 2300 movs r3, #0
}
800a5ae: 4618 mov r0, r3
800a5b0: 3710 adds r7, #16
800a5b2: 46bd mov sp, r7
800a5b4: bd80 pop {r7, pc}
800a5b6: bf00 nop
800a5b8: 40023c00 .word 0x40023c00
800a5bc: 40023800 .word 0x40023800
800a5c0: 0800fdb8 .word 0x0800fdb8
800a5c4: 20020104 .word 0x20020104
800a5c8: 20020110 .word 0x20020110
0800a5cc <HAL_RCC_GetSysClockFreq>:
*
*
* @retval SYSCLK frequency
*/
uint32_t HAL_RCC_GetSysClockFreq(void)
{
800a5cc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
800a5d0: b087 sub sp, #28
800a5d2: af00 add r7, sp, #0
uint32_t pllm = 0, pllvco = 0, pllp = 0;
800a5d4: 2200 movs r2, #0
800a5d6: 60fa str r2, [r7, #12]
800a5d8: 2200 movs r2, #0
800a5da: 617a str r2, [r7, #20]
800a5dc: 2200 movs r2, #0
800a5de: 60ba str r2, [r7, #8]
uint32_t sysclockfreq = 0;
800a5e0: 2200 movs r2, #0
800a5e2: 613a str r2, [r7, #16]
/* Get SYSCLK source -------------------------------------------------------*/
switch (RCC->CFGR & RCC_CFGR_SWS)
800a5e4: 4a51 ldr r2, [pc, #324] ; (800a72c <HAL_RCC_GetSysClockFreq+0x160>)
800a5e6: 6892 ldr r2, [r2, #8]
800a5e8: f002 020c and.w r2, r2, #12
800a5ec: 2a04 cmp r2, #4
800a5ee: d007 beq.n 800a600 <HAL_RCC_GetSysClockFreq+0x34>
800a5f0: 2a08 cmp r2, #8
800a5f2: d008 beq.n 800a606 <HAL_RCC_GetSysClockFreq+0x3a>
800a5f4: 2a00 cmp r2, #0
800a5f6: f040 8090 bne.w 800a71a <HAL_RCC_GetSysClockFreq+0x14e>
{
case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
{
sysclockfreq = HSI_VALUE;
800a5fa: 4b4d ldr r3, [pc, #308] ; (800a730 <HAL_RCC_GetSysClockFreq+0x164>)
800a5fc: 613b str r3, [r7, #16]
break;
800a5fe: e08f b.n 800a720 <HAL_RCC_GetSysClockFreq+0x154>
}
case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */
{
sysclockfreq = HSE_VALUE;
800a600: 4b4c ldr r3, [pc, #304] ; (800a734 <HAL_RCC_GetSysClockFreq+0x168>)
800a602: 613b str r3, [r7, #16]
break;
800a604: e08c b.n 800a720 <HAL_RCC_GetSysClockFreq+0x154>
}
case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock source */
{
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN
SYSCLK = PLL_VCO / PLLP */
pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
800a606: 4a49 ldr r2, [pc, #292] ; (800a72c <HAL_RCC_GetSysClockFreq+0x160>)
800a608: 6852 ldr r2, [r2, #4]
800a60a: f002 023f and.w r2, r2, #63 ; 0x3f
800a60e: 60fa str r2, [r7, #12]
if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)
800a610: 4a46 ldr r2, [pc, #280] ; (800a72c <HAL_RCC_GetSysClockFreq+0x160>)
800a612: 6852 ldr r2, [r2, #4]
800a614: f402 0280 and.w r2, r2, #4194304 ; 0x400000
800a618: 2a00 cmp r2, #0
800a61a: d023 beq.n 800a664 <HAL_RCC_GetSysClockFreq+0x98>
{
/* HSE used as PLL clock source */
pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
800a61c: 4b43 ldr r3, [pc, #268] ; (800a72c <HAL_RCC_GetSysClockFreq+0x160>)
800a61e: 685b ldr r3, [r3, #4]
800a620: 099b lsrs r3, r3, #6
800a622: f04f 0400 mov.w r4, #0
800a626: f240 11ff movw r1, #511 ; 0x1ff
800a62a: f04f 0200 mov.w r2, #0
800a62e: ea03 0301 and.w r3, r3, r1
800a632: ea04 0402 and.w r4, r4, r2
800a636: 4a3f ldr r2, [pc, #252] ; (800a734 <HAL_RCC_GetSysClockFreq+0x168>)
800a638: fb02 f104 mul.w r1, r2, r4
800a63c: 2200 movs r2, #0
800a63e: fb02 f203 mul.w r2, r2, r3
800a642: 440a add r2, r1
800a644: 493b ldr r1, [pc, #236] ; (800a734 <HAL_RCC_GetSysClockFreq+0x168>)
800a646: fba3 0101 umull r0, r1, r3, r1
800a64a: 1853 adds r3, r2, r1
800a64c: 4619 mov r1, r3
800a64e: 68fb ldr r3, [r7, #12]
800a650: f04f 0400 mov.w r4, #0
800a654: 461a mov r2, r3
800a656: 4623 mov r3, r4
800a658: f7f5 fdee bl 8000238 <__aeabi_uldivmod>
800a65c: 4603 mov r3, r0
800a65e: 460c mov r4, r1
800a660: 617b str r3, [r7, #20]
800a662: e04c b.n 800a6fe <HAL_RCC_GetSysClockFreq+0x132>
}
else
{
/* HSI used as PLL clock source */
pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
800a664: 4a31 ldr r2, [pc, #196] ; (800a72c <HAL_RCC_GetSysClockFreq+0x160>)
800a666: 6852 ldr r2, [r2, #4]
800a668: 0992 lsrs r2, r2, #6
800a66a: 4611 mov r1, r2
800a66c: f04f 0200 mov.w r2, #0
800a670: f240 15ff movw r5, #511 ; 0x1ff
800a674: f04f 0600 mov.w r6, #0
800a678: ea05 0501 and.w r5, r5, r1
800a67c: ea06 0602 and.w r6, r6, r2
800a680: 4629 mov r1, r5
800a682: 4632 mov r2, r6
800a684: ea4f 1b42 mov.w fp, r2, lsl #5
800a688: ea4b 6bd1 orr.w fp, fp, r1, lsr #27
800a68c: ea4f 1a41 mov.w sl, r1, lsl #5
800a690: 4651 mov r1, sl
800a692: 465a mov r2, fp
800a694: 46aa mov sl, r5
800a696: 46b3 mov fp, r6
800a698: 4655 mov r5, sl
800a69a: 465e mov r6, fp
800a69c: 1b4d subs r5, r1, r5
800a69e: eb62 0606 sbc.w r6, r2, r6
800a6a2: 4629 mov r1, r5
800a6a4: 4632 mov r2, r6
800a6a6: 0194 lsls r4, r2, #6
800a6a8: ea44 6491 orr.w r4, r4, r1, lsr #26
800a6ac: 018b lsls r3, r1, #6
800a6ae: 1a5b subs r3, r3, r1
800a6b0: eb64 0402 sbc.w r4, r4, r2
800a6b4: ea4f 09c4 mov.w r9, r4, lsl #3
800a6b8: ea49 7953 orr.w r9, r9, r3, lsr #29
800a6bc: ea4f 08c3 mov.w r8, r3, lsl #3
800a6c0: 4643 mov r3, r8
800a6c2: 464c mov r4, r9
800a6c4: 4655 mov r5, sl
800a6c6: 465e mov r6, fp
800a6c8: 18ed adds r5, r5, r3
800a6ca: eb46 0604 adc.w r6, r6, r4
800a6ce: 462b mov r3, r5
800a6d0: 4634 mov r4, r6
800a6d2: 02a2 lsls r2, r4, #10
800a6d4: 607a str r2, [r7, #4]
800a6d6: 687a ldr r2, [r7, #4]
800a6d8: ea42 5293 orr.w r2, r2, r3, lsr #22
800a6dc: 607a str r2, [r7, #4]
800a6de: 029b lsls r3, r3, #10
800a6e0: 603b str r3, [r7, #0]
800a6e2: e897 0018 ldmia.w r7, {r3, r4}
800a6e6: 4618 mov r0, r3
800a6e8: 4621 mov r1, r4
800a6ea: 68fb ldr r3, [r7, #12]
800a6ec: f04f 0400 mov.w r4, #0
800a6f0: 461a mov r2, r3
800a6f2: 4623 mov r3, r4
800a6f4: f7f5 fda0 bl 8000238 <__aeabi_uldivmod>
800a6f8: 4603 mov r3, r0
800a6fa: 460c mov r4, r1
800a6fc: 617b str r3, [r7, #20]
}
pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1) * 2);
800a6fe: 4b0b ldr r3, [pc, #44] ; (800a72c <HAL_RCC_GetSysClockFreq+0x160>)
800a700: 685b ldr r3, [r3, #4]
800a702: 0c1b lsrs r3, r3, #16
800a704: f003 0303 and.w r3, r3, #3
800a708: 3301 adds r3, #1
800a70a: 005b lsls r3, r3, #1
800a70c: 60bb str r3, [r7, #8]
sysclockfreq = pllvco / pllp;
800a70e: 697a ldr r2, [r7, #20]
800a710: 68bb ldr r3, [r7, #8]
800a712: fbb2 f3f3 udiv r3, r2, r3
800a716: 613b str r3, [r7, #16]
break;
800a718: e002 b.n 800a720 <HAL_RCC_GetSysClockFreq+0x154>
}
default:
{
sysclockfreq = HSI_VALUE;
800a71a: 4b05 ldr r3, [pc, #20] ; (800a730 <HAL_RCC_GetSysClockFreq+0x164>)
800a71c: 613b str r3, [r7, #16]
break;
800a71e: bf00 nop
}
}
return sysclockfreq;
800a720: 693b ldr r3, [r7, #16]
}
800a722: 4618 mov r0, r3
800a724: 371c adds r7, #28
800a726: 46bd mov sp, r7
800a728: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
800a72c: 40023800 .word 0x40023800
800a730: 00f42400 .word 0x00f42400
800a734: 017d7840 .word 0x017d7840
0800a738 <HAL_RCC_GetHCLKFreq>:
* right HCLK value. Otherwise, any configuration based on this function will be incorrect.
* @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency.
* @retval HCLK frequency
*/
uint32_t HAL_RCC_GetHCLKFreq(void)
{
800a738: b480 push {r7}
800a73a: af00 add r7, sp, #0
return SystemCoreClock;
800a73c: 4b03 ldr r3, [pc, #12] ; (800a74c <HAL_RCC_GetHCLKFreq+0x14>)
800a73e: 681b ldr r3, [r3, #0]
}
800a740: 4618 mov r0, r3
800a742: 46bd mov sp, r7
800a744: f85d 7b04 ldr.w r7, [sp], #4
800a748: 4770 bx lr
800a74a: bf00 nop
800a74c: 20020104 .word 0x20020104
0800a750 <HAL_RCC_GetPCLK1Freq>:
* @note Each time PCLK1 changes, this function must be called to update the
* right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.
* @retval PCLK1 frequency
*/
uint32_t HAL_RCC_GetPCLK1Freq(void)
{
800a750: b580 push {r7, lr}
800a752: af00 add r7, sp, #0
/* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]);
800a754: f7ff fff0 bl 800a738 <HAL_RCC_GetHCLKFreq>
800a758: 4601 mov r1, r0
800a75a: 4b05 ldr r3, [pc, #20] ; (800a770 <HAL_RCC_GetPCLK1Freq+0x20>)
800a75c: 689b ldr r3, [r3, #8]
800a75e: 0a9b lsrs r3, r3, #10
800a760: f003 0307 and.w r3, r3, #7
800a764: 4a03 ldr r2, [pc, #12] ; (800a774 <HAL_RCC_GetPCLK1Freq+0x24>)
800a766: 5cd3 ldrb r3, [r2, r3]
800a768: fa21 f303 lsr.w r3, r1, r3
}
800a76c: 4618 mov r0, r3
800a76e: bd80 pop {r7, pc}
800a770: 40023800 .word 0x40023800
800a774: 0800fdc8 .word 0x0800fdc8
0800a778 <HAL_RCC_GetPCLK2Freq>:
* @note Each time PCLK2 changes, this function must be called to update the
* right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.
* @retval PCLK2 frequency
*/
uint32_t HAL_RCC_GetPCLK2Freq(void)
{
800a778: b580 push {r7, lr}
800a77a: af00 add r7, sp, #0
/* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]);
800a77c: f7ff ffdc bl 800a738 <HAL_RCC_GetHCLKFreq>
800a780: 4601 mov r1, r0
800a782: 4b05 ldr r3, [pc, #20] ; (800a798 <HAL_RCC_GetPCLK2Freq+0x20>)
800a784: 689b ldr r3, [r3, #8]
800a786: 0b5b lsrs r3, r3, #13
800a788: f003 0307 and.w r3, r3, #7
800a78c: 4a03 ldr r2, [pc, #12] ; (800a79c <HAL_RCC_GetPCLK2Freq+0x24>)
800a78e: 5cd3 ldrb r3, [r2, r3]
800a790: fa21 f303 lsr.w r3, r1, r3
}
800a794: 4618 mov r0, r3
800a796: bd80 pop {r7, pc}
800a798: 40023800 .word 0x40023800
800a79c: 0800fdc8 .word 0x0800fdc8
0800a7a0 <HAL_RCCEx_PeriphCLKConfig>:
* the backup registers) are set to their reset values.
*
* @retval HAL status
*/
HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
{
800a7a0: b580 push {r7, lr}
800a7a2: b088 sub sp, #32
800a7a4: af00 add r7, sp, #0
800a7a6: 6078 str r0, [r7, #4]
uint32_t tickstart = 0;
800a7a8: 2300 movs r3, #0
800a7aa: 617b str r3, [r7, #20]
uint32_t tmpreg0 = 0;
800a7ac: 2300 movs r3, #0
800a7ae: 613b str r3, [r7, #16]
uint32_t tmpreg1 = 0;
800a7b0: 2300 movs r3, #0
800a7b2: 60fb str r3, [r7, #12]
uint32_t plli2sused = 0;
800a7b4: 2300 movs r3, #0
800a7b6: 61fb str r3, [r7, #28]
uint32_t pllsaiused = 0;
800a7b8: 2300 movs r3, #0
800a7ba: 61bb str r3, [r7, #24]
/* Check the parameters */
assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));
/*----------------------------------- I2S configuration ----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S))
800a7bc: 687b ldr r3, [r7, #4]
800a7be: 681b ldr r3, [r3, #0]
800a7c0: f003 0301 and.w r3, r3, #1
800a7c4: 2b00 cmp r3, #0
800a7c6: d012 beq.n 800a7ee <HAL_RCCEx_PeriphCLKConfig+0x4e>
{
/* Check the parameters */
assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection));
/* Configure I2S Clock source */
__HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection);
800a7c8: 4a69 ldr r2, [pc, #420] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a7ca: 4b69 ldr r3, [pc, #420] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a7cc: 689b ldr r3, [r3, #8]
800a7ce: f423 0300 bic.w r3, r3, #8388608 ; 0x800000
800a7d2: 6093 str r3, [r2, #8]
800a7d4: 4966 ldr r1, [pc, #408] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a7d6: 4b66 ldr r3, [pc, #408] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a7d8: 689a ldr r2, [r3, #8]
800a7da: 687b ldr r3, [r7, #4]
800a7dc: 6b5b ldr r3, [r3, #52] ; 0x34
800a7de: 4313 orrs r3, r2
800a7e0: 608b str r3, [r1, #8]
/* Enable the PLLI2S when it's used as clock source for I2S */
if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)
800a7e2: 687b ldr r3, [r7, #4]
800a7e4: 6b5b ldr r3, [r3, #52] ; 0x34
800a7e6: 2b00 cmp r3, #0
800a7e8: d101 bne.n 800a7ee <HAL_RCCEx_PeriphCLKConfig+0x4e>
{
plli2sused = 1;
800a7ea: 2301 movs r3, #1
800a7ec: 61fb str r3, [r7, #28]
}
}
/*------------------------------------ SAI1 configuration --------------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == (RCC_PERIPHCLK_SAI1))
800a7ee: 687b ldr r3, [r7, #4]
800a7f0: 681b ldr r3, [r3, #0]
800a7f2: f403 2300 and.w r3, r3, #524288 ; 0x80000
800a7f6: 2b00 cmp r3, #0
800a7f8: d017 beq.n 800a82a <HAL_RCCEx_PeriphCLKConfig+0x8a>
{
/* Check the parameters */
assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection));
/* Configure SAI1 Clock source */
__HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection);
800a7fa: 495d ldr r1, [pc, #372] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a7fc: 4b5c ldr r3, [pc, #368] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a7fe: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
800a802: f423 1240 bic.w r2, r3, #3145728 ; 0x300000
800a806: 687b ldr r3, [r7, #4]
800a808: 6bdb ldr r3, [r3, #60] ; 0x3c
800a80a: 4313 orrs r3, r2
800a80c: f8c1 308c str.w r3, [r1, #140] ; 0x8c
/* Enable the PLLI2S when it's used as clock source for SAI */
if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)
800a810: 687b ldr r3, [r7, #4]
800a812: 6bdb ldr r3, [r3, #60] ; 0x3c
800a814: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000
800a818: d101 bne.n 800a81e <HAL_RCCEx_PeriphCLKConfig+0x7e>
{
plli2sused = 1;
800a81a: 2301 movs r3, #1
800a81c: 61fb str r3, [r7, #28]
}
/* Enable the PLLSAI when it's used as clock source for SAI */
if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)
800a81e: 687b ldr r3, [r7, #4]
800a820: 6bdb ldr r3, [r3, #60] ; 0x3c
800a822: 2b00 cmp r3, #0
800a824: d101 bne.n 800a82a <HAL_RCCEx_PeriphCLKConfig+0x8a>
{
pllsaiused = 1;
800a826: 2301 movs r3, #1
800a828: 61bb str r3, [r7, #24]
}
}
/*------------------------------------ SAI2 configuration --------------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == (RCC_PERIPHCLK_SAI2))
800a82a: 687b ldr r3, [r7, #4]
800a82c: 681b ldr r3, [r3, #0]
800a82e: f403 1380 and.w r3, r3, #1048576 ; 0x100000
800a832: 2b00 cmp r3, #0
800a834: d017 beq.n 800a866 <HAL_RCCEx_PeriphCLKConfig+0xc6>
{
/* Check the parameters */
assert_param(IS_RCC_SAI2CLKSOURCE(PeriphClkInit->Sai2ClockSelection));
/* Configure SAI2 Clock source */
__HAL_RCC_SAI2_CONFIG(PeriphClkInit->Sai2ClockSelection);
800a836: 494e ldr r1, [pc, #312] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a838: 4b4d ldr r3, [pc, #308] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a83a: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
800a83e: f423 0240 bic.w r2, r3, #12582912 ; 0xc00000
800a842: 687b ldr r3, [r7, #4]
800a844: 6c1b ldr r3, [r3, #64] ; 0x40
800a846: 4313 orrs r3, r2
800a848: f8c1 308c str.w r3, [r1, #140] ; 0x8c
/* Enable the PLLI2S when it's used as clock source for SAI */
if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)
800a84c: 687b ldr r3, [r7, #4]
800a84e: 6c1b ldr r3, [r3, #64] ; 0x40
800a850: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000
800a854: d101 bne.n 800a85a <HAL_RCCEx_PeriphCLKConfig+0xba>
{
plli2sused = 1;
800a856: 2301 movs r3, #1
800a858: 61fb str r3, [r7, #28]
}
/* Enable the PLLSAI when it's used as clock source for SAI */
if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)
800a85a: 687b ldr r3, [r7, #4]
800a85c: 6c1b ldr r3, [r3, #64] ; 0x40
800a85e: 2b00 cmp r3, #0
800a860: d101 bne.n 800a866 <HAL_RCCEx_PeriphCLKConfig+0xc6>
{
pllsaiused = 1;
800a862: 2301 movs r3, #1
800a864: 61bb str r3, [r7, #24]
}
}
/*-------------------------------------- SPDIF-RX Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX)
800a866: 687b ldr r3, [r7, #4]
800a868: 681b ldr r3, [r3, #0]
800a86a: f003 7380 and.w r3, r3, #16777216 ; 0x1000000
800a86e: 2b00 cmp r3, #0
800a870: d001 beq.n 800a876 <HAL_RCCEx_PeriphCLKConfig+0xd6>
{
plli2sused = 1;
800a872: 2301 movs r3, #1
800a874: 61fb str r3, [r7, #28]
}
/*------------------------------------ RTC configuration --------------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC))
800a876: 687b ldr r3, [r7, #4]
800a878: 681b ldr r3, [r3, #0]
800a87a: f003 0320 and.w r3, r3, #32
800a87e: 2b00 cmp r3, #0
800a880: f000 808b beq.w 800a99a <HAL_RCCEx_PeriphCLKConfig+0x1fa>
{
/* Check for RTC Parameters used to output RTCCLK */
assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));
/* Enable Power Clock*/
__HAL_RCC_PWR_CLK_ENABLE();
800a884: 4a3a ldr r2, [pc, #232] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a886: 4b3a ldr r3, [pc, #232] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a888: 6c1b ldr r3, [r3, #64] ; 0x40
800a88a: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
800a88e: 6413 str r3, [r2, #64] ; 0x40
800a890: 4b37 ldr r3, [pc, #220] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a892: 6c1b ldr r3, [r3, #64] ; 0x40
800a894: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
800a898: 60bb str r3, [r7, #8]
800a89a: 68bb ldr r3, [r7, #8]
/* Enable write access to Backup domain */
PWR->CR1 |= PWR_CR1_DBP;
800a89c: 4a35 ldr r2, [pc, #212] ; (800a974 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
800a89e: 4b35 ldr r3, [pc, #212] ; (800a974 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
800a8a0: 681b ldr r3, [r3, #0]
800a8a2: f443 7380 orr.w r3, r3, #256 ; 0x100
800a8a6: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a8a8: f7fd ff02 bl 80086b0 <HAL_GetTick>
800a8ac: 6178 str r0, [r7, #20]
/* Wait for Backup domain Write protection disable */
while((PWR->CR1 & PWR_CR1_DBP) == RESET)
800a8ae: e008 b.n 800a8c2 <HAL_RCCEx_PeriphCLKConfig+0x122>
{
if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
800a8b0: f7fd fefe bl 80086b0 <HAL_GetTick>
800a8b4: 4602 mov r2, r0
800a8b6: 697b ldr r3, [r7, #20]
800a8b8: 1ad3 subs r3, r2, r3
800a8ba: 2b64 cmp r3, #100 ; 0x64
800a8bc: d901 bls.n 800a8c2 <HAL_RCCEx_PeriphCLKConfig+0x122>
{
return HAL_TIMEOUT;
800a8be: 2303 movs r3, #3
800a8c0: e38d b.n 800afde <HAL_RCCEx_PeriphCLKConfig+0x83e>
while((PWR->CR1 & PWR_CR1_DBP) == RESET)
800a8c2: 4b2c ldr r3, [pc, #176] ; (800a974 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
800a8c4: 681b ldr r3, [r3, #0]
800a8c6: f403 7380 and.w r3, r3, #256 ; 0x100
800a8ca: 2b00 cmp r3, #0
800a8cc: d0f0 beq.n 800a8b0 <HAL_RCCEx_PeriphCLKConfig+0x110>
}
}
/* Reset the Backup domain only if the RTC Clock source selection is modified */
tmpreg0 = (RCC->BDCR & RCC_BDCR_RTCSEL);
800a8ce: 4b28 ldr r3, [pc, #160] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a8d0: 6f1b ldr r3, [r3, #112] ; 0x70
800a8d2: f403 7340 and.w r3, r3, #768 ; 0x300
800a8d6: 613b str r3, [r7, #16]
if((tmpreg0 != 0x00000000U) && (tmpreg0 != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL)))
800a8d8: 693b ldr r3, [r7, #16]
800a8da: 2b00 cmp r3, #0
800a8dc: d035 beq.n 800a94a <HAL_RCCEx_PeriphCLKConfig+0x1aa>
800a8de: 687b ldr r3, [r7, #4]
800a8e0: 6b1b ldr r3, [r3, #48] ; 0x30
800a8e2: f403 7240 and.w r2, r3, #768 ; 0x300
800a8e6: 693b ldr r3, [r7, #16]
800a8e8: 429a cmp r2, r3
800a8ea: d02e beq.n 800a94a <HAL_RCCEx_PeriphCLKConfig+0x1aa>
{
/* Store the content of BDCR register before the reset of Backup Domain */
tmpreg0 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
800a8ec: 4b20 ldr r3, [pc, #128] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a8ee: 6f1b ldr r3, [r3, #112] ; 0x70
800a8f0: f423 7340 bic.w r3, r3, #768 ; 0x300
800a8f4: 613b str r3, [r7, #16]
/* RTC Clock selection can be changed only if the Backup Domain is reset */
__HAL_RCC_BACKUPRESET_FORCE();
800a8f6: 4a1e ldr r2, [pc, #120] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a8f8: 4b1d ldr r3, [pc, #116] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a8fa: 6f1b ldr r3, [r3, #112] ; 0x70
800a8fc: f443 3380 orr.w r3, r3, #65536 ; 0x10000
800a900: 6713 str r3, [r2, #112] ; 0x70
__HAL_RCC_BACKUPRESET_RELEASE();
800a902: 4a1b ldr r2, [pc, #108] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a904: 4b1a ldr r3, [pc, #104] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a906: 6f1b ldr r3, [r3, #112] ; 0x70
800a908: f423 3380 bic.w r3, r3, #65536 ; 0x10000
800a90c: 6713 str r3, [r2, #112] ; 0x70
/* Restore the Content of BDCR register */
RCC->BDCR = tmpreg0;
800a90e: 4a18 ldr r2, [pc, #96] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a910: 693b ldr r3, [r7, #16]
800a912: 6713 str r3, [r2, #112] ; 0x70
/* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */
if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
800a914: 4b16 ldr r3, [pc, #88] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a916: 6f1b ldr r3, [r3, #112] ; 0x70
800a918: f003 0301 and.w r3, r3, #1
800a91c: 2b01 cmp r3, #1
800a91e: d114 bne.n 800a94a <HAL_RCCEx_PeriphCLKConfig+0x1aa>
{
/* Get Start Tick*/
tickstart = HAL_GetTick();
800a920: f7fd fec6 bl 80086b0 <HAL_GetTick>
800a924: 6178 str r0, [r7, #20]
/* Wait till LSE is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
800a926: e00a b.n 800a93e <HAL_RCCEx_PeriphCLKConfig+0x19e>
{
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
800a928: f7fd fec2 bl 80086b0 <HAL_GetTick>
800a92c: 4602 mov r2, r0
800a92e: 697b ldr r3, [r7, #20]
800a930: 1ad3 subs r3, r2, r3
800a932: f241 3288 movw r2, #5000 ; 0x1388
800a936: 4293 cmp r3, r2
800a938: d901 bls.n 800a93e <HAL_RCCEx_PeriphCLKConfig+0x19e>
{
return HAL_TIMEOUT;
800a93a: 2303 movs r3, #3
800a93c: e34f b.n 800afde <HAL_RCCEx_PeriphCLKConfig+0x83e>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
800a93e: 4b0c ldr r3, [pc, #48] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a940: 6f1b ldr r3, [r3, #112] ; 0x70
800a942: f003 0302 and.w r3, r3, #2
800a946: 2b00 cmp r3, #0
800a948: d0ee beq.n 800a928 <HAL_RCCEx_PeriphCLKConfig+0x188>
}
}
}
}
__HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);
800a94a: 687b ldr r3, [r7, #4]
800a94c: 6b1b ldr r3, [r3, #48] ; 0x30
800a94e: f403 7340 and.w r3, r3, #768 ; 0x300
800a952: f5b3 7f40 cmp.w r3, #768 ; 0x300
800a956: d111 bne.n 800a97c <HAL_RCCEx_PeriphCLKConfig+0x1dc>
800a958: 4805 ldr r0, [pc, #20] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a95a: 4b05 ldr r3, [pc, #20] ; (800a970 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
800a95c: 689b ldr r3, [r3, #8]
800a95e: f423 12f8 bic.w r2, r3, #2031616 ; 0x1f0000
800a962: 687b ldr r3, [r7, #4]
800a964: 6b19 ldr r1, [r3, #48] ; 0x30
800a966: 4b04 ldr r3, [pc, #16] ; (800a978 <HAL_RCCEx_PeriphCLKConfig+0x1d8>)
800a968: 400b ands r3, r1
800a96a: 4313 orrs r3, r2
800a96c: 6083 str r3, [r0, #8]
800a96e: e00b b.n 800a988 <HAL_RCCEx_PeriphCLKConfig+0x1e8>
800a970: 40023800 .word 0x40023800
800a974: 40007000 .word 0x40007000
800a978: 0ffffcff .word 0x0ffffcff
800a97c: 4ab2 ldr r2, [pc, #712] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a97e: 4bb2 ldr r3, [pc, #712] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a980: 689b ldr r3, [r3, #8]
800a982: f423 13f8 bic.w r3, r3, #2031616 ; 0x1f0000
800a986: 6093 str r3, [r2, #8]
800a988: 49af ldr r1, [pc, #700] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a98a: 4baf ldr r3, [pc, #700] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a98c: 6f1a ldr r2, [r3, #112] ; 0x70
800a98e: 687b ldr r3, [r7, #4]
800a990: 6b1b ldr r3, [r3, #48] ; 0x30
800a992: f3c3 030b ubfx r3, r3, #0, #12
800a996: 4313 orrs r3, r2
800a998: 670b str r3, [r1, #112] ; 0x70
}
/*------------------------------------ TIM configuration --------------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM))
800a99a: 687b ldr r3, [r7, #4]
800a99c: 681b ldr r3, [r3, #0]
800a99e: f003 0310 and.w r3, r3, #16
800a9a2: 2b00 cmp r3, #0
800a9a4: d010 beq.n 800a9c8 <HAL_RCCEx_PeriphCLKConfig+0x228>
{
/* Check the parameters */
assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection));
/* Configure Timer Prescaler */
__HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection);
800a9a6: 4aa8 ldr r2, [pc, #672] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a9a8: 4ba7 ldr r3, [pc, #668] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a9aa: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
800a9ae: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000
800a9b2: f8c2 308c str.w r3, [r2, #140] ; 0x8c
800a9b6: 49a4 ldr r1, [pc, #656] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a9b8: 4ba3 ldr r3, [pc, #652] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a9ba: f8d3 208c ldr.w r2, [r3, #140] ; 0x8c
800a9be: 687b ldr r3, [r7, #4]
800a9c0: 6b9b ldr r3, [r3, #56] ; 0x38
800a9c2: 4313 orrs r3, r2
800a9c4: f8c1 308c str.w r3, [r1, #140] ; 0x8c
}
/*-------------------------------------- I2C1 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1)
800a9c8: 687b ldr r3, [r7, #4]
800a9ca: 681b ldr r3, [r3, #0]
800a9cc: f403 4380 and.w r3, r3, #16384 ; 0x4000
800a9d0: 2b00 cmp r3, #0
800a9d2: d00a beq.n 800a9ea <HAL_RCCEx_PeriphCLKConfig+0x24a>
{
/* Check the parameters */
assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection));
/* Configure the I2C1 clock source */
__HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection);
800a9d4: 499c ldr r1, [pc, #624] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a9d6: 4b9c ldr r3, [pc, #624] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a9d8: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800a9dc: f423 3240 bic.w r2, r3, #196608 ; 0x30000
800a9e0: 687b ldr r3, [r7, #4]
800a9e2: 6e5b ldr r3, [r3, #100] ; 0x64
800a9e4: 4313 orrs r3, r2
800a9e6: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- I2C2 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2)
800a9ea: 687b ldr r3, [r7, #4]
800a9ec: 681b ldr r3, [r3, #0]
800a9ee: f403 4300 and.w r3, r3, #32768 ; 0x8000
800a9f2: 2b00 cmp r3, #0
800a9f4: d00a beq.n 800aa0c <HAL_RCCEx_PeriphCLKConfig+0x26c>
{
/* Check the parameters */
assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection));
/* Configure the I2C2 clock source */
__HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection);
800a9f6: 4994 ldr r1, [pc, #592] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a9f8: 4b93 ldr r3, [pc, #588] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800a9fa: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800a9fe: f423 2240 bic.w r2, r3, #786432 ; 0xc0000
800aa02: 687b ldr r3, [r7, #4]
800aa04: 6e9b ldr r3, [r3, #104] ; 0x68
800aa06: 4313 orrs r3, r2
800aa08: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- I2C3 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3)
800aa0c: 687b ldr r3, [r7, #4]
800aa0e: 681b ldr r3, [r3, #0]
800aa10: f403 3380 and.w r3, r3, #65536 ; 0x10000
800aa14: 2b00 cmp r3, #0
800aa16: d00a beq.n 800aa2e <HAL_RCCEx_PeriphCLKConfig+0x28e>
{
/* Check the parameters */
assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection));
/* Configure the I2C3 clock source */
__HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection);
800aa18: 498b ldr r1, [pc, #556] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aa1a: 4b8b ldr r3, [pc, #556] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aa1c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800aa20: f423 1240 bic.w r2, r3, #3145728 ; 0x300000
800aa24: 687b ldr r3, [r7, #4]
800aa26: 6edb ldr r3, [r3, #108] ; 0x6c
800aa28: 4313 orrs r3, r2
800aa2a: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- I2C4 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4)
800aa2e: 687b ldr r3, [r7, #4]
800aa30: 681b ldr r3, [r3, #0]
800aa32: f403 3300 and.w r3, r3, #131072 ; 0x20000
800aa36: 2b00 cmp r3, #0
800aa38: d00a beq.n 800aa50 <HAL_RCCEx_PeriphCLKConfig+0x2b0>
{
/* Check the parameters */
assert_param(IS_RCC_I2C4CLKSOURCE(PeriphClkInit->I2c4ClockSelection));
/* Configure the I2C4 clock source */
__HAL_RCC_I2C4_CONFIG(PeriphClkInit->I2c4ClockSelection);
800aa3a: 4983 ldr r1, [pc, #524] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aa3c: 4b82 ldr r3, [pc, #520] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aa3e: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800aa42: f423 0240 bic.w r2, r3, #12582912 ; 0xc00000
800aa46: 687b ldr r3, [r7, #4]
800aa48: 6f1b ldr r3, [r3, #112] ; 0x70
800aa4a: 4313 orrs r3, r2
800aa4c: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- USART1 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1)
800aa50: 687b ldr r3, [r7, #4]
800aa52: 681b ldr r3, [r3, #0]
800aa54: f003 0340 and.w r3, r3, #64 ; 0x40
800aa58: 2b00 cmp r3, #0
800aa5a: d00a beq.n 800aa72 <HAL_RCCEx_PeriphCLKConfig+0x2d2>
{
/* Check the parameters */
assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection));
/* Configure the USART1 clock source */
__HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection);
800aa5c: 497a ldr r1, [pc, #488] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aa5e: 4b7a ldr r3, [pc, #488] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aa60: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800aa64: f023 0203 bic.w r2, r3, #3
800aa68: 687b ldr r3, [r7, #4]
800aa6a: 6c5b ldr r3, [r3, #68] ; 0x44
800aa6c: 4313 orrs r3, r2
800aa6e: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- USART2 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2)
800aa72: 687b ldr r3, [r7, #4]
800aa74: 681b ldr r3, [r3, #0]
800aa76: f003 0380 and.w r3, r3, #128 ; 0x80
800aa7a: 2b00 cmp r3, #0
800aa7c: d00a beq.n 800aa94 <HAL_RCCEx_PeriphCLKConfig+0x2f4>
{
/* Check the parameters */
assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection));
/* Configure the USART2 clock source */
__HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection);
800aa7e: 4972 ldr r1, [pc, #456] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aa80: 4b71 ldr r3, [pc, #452] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aa82: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800aa86: f023 020c bic.w r2, r3, #12
800aa8a: 687b ldr r3, [r7, #4]
800aa8c: 6c9b ldr r3, [r3, #72] ; 0x48
800aa8e: 4313 orrs r3, r2
800aa90: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- USART3 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3)
800aa94: 687b ldr r3, [r7, #4]
800aa96: 681b ldr r3, [r3, #0]
800aa98: f403 7380 and.w r3, r3, #256 ; 0x100
800aa9c: 2b00 cmp r3, #0
800aa9e: d00a beq.n 800aab6 <HAL_RCCEx_PeriphCLKConfig+0x316>
{
/* Check the parameters */
assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection));
/* Configure the USART3 clock source */
__HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection);
800aaa0: 4969 ldr r1, [pc, #420] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aaa2: 4b69 ldr r3, [pc, #420] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aaa4: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800aaa8: f023 0230 bic.w r2, r3, #48 ; 0x30
800aaac: 687b ldr r3, [r7, #4]
800aaae: 6cdb ldr r3, [r3, #76] ; 0x4c
800aab0: 4313 orrs r3, r2
800aab2: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- UART4 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4)
800aab6: 687b ldr r3, [r7, #4]
800aab8: 681b ldr r3, [r3, #0]
800aaba: f403 7300 and.w r3, r3, #512 ; 0x200
800aabe: 2b00 cmp r3, #0
800aac0: d00a beq.n 800aad8 <HAL_RCCEx_PeriphCLKConfig+0x338>
{
/* Check the parameters */
assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection));
/* Configure the UART4 clock source */
__HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection);
800aac2: 4961 ldr r1, [pc, #388] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aac4: 4b60 ldr r3, [pc, #384] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aac6: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800aaca: f023 02c0 bic.w r2, r3, #192 ; 0xc0
800aace: 687b ldr r3, [r7, #4]
800aad0: 6d1b ldr r3, [r3, #80] ; 0x50
800aad2: 4313 orrs r3, r2
800aad4: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- UART5 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5)
800aad8: 687b ldr r3, [r7, #4]
800aada: 681b ldr r3, [r3, #0]
800aadc: f403 6380 and.w r3, r3, #1024 ; 0x400
800aae0: 2b00 cmp r3, #0
800aae2: d00a beq.n 800aafa <HAL_RCCEx_PeriphCLKConfig+0x35a>
{
/* Check the parameters */
assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection));
/* Configure the UART5 clock source */
__HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection);
800aae4: 4958 ldr r1, [pc, #352] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aae6: 4b58 ldr r3, [pc, #352] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800aae8: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800aaec: f423 7240 bic.w r2, r3, #768 ; 0x300
800aaf0: 687b ldr r3, [r7, #4]
800aaf2: 6d5b ldr r3, [r3, #84] ; 0x54
800aaf4: 4313 orrs r3, r2
800aaf6: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- USART6 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6)
800aafa: 687b ldr r3, [r7, #4]
800aafc: 681b ldr r3, [r3, #0]
800aafe: f403 6300 and.w r3, r3, #2048 ; 0x800
800ab02: 2b00 cmp r3, #0
800ab04: d00a beq.n 800ab1c <HAL_RCCEx_PeriphCLKConfig+0x37c>
{
/* Check the parameters */
assert_param(IS_RCC_USART6CLKSOURCE(PeriphClkInit->Usart6ClockSelection));
/* Configure the USART6 clock source */
__HAL_RCC_USART6_CONFIG(PeriphClkInit->Usart6ClockSelection);
800ab06: 4950 ldr r1, [pc, #320] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab08: 4b4f ldr r3, [pc, #316] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab0a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800ab0e: f423 6240 bic.w r2, r3, #3072 ; 0xc00
800ab12: 687b ldr r3, [r7, #4]
800ab14: 6d9b ldr r3, [r3, #88] ; 0x58
800ab16: 4313 orrs r3, r2
800ab18: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- UART7 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7)
800ab1c: 687b ldr r3, [r7, #4]
800ab1e: 681b ldr r3, [r3, #0]
800ab20: f403 5380 and.w r3, r3, #4096 ; 0x1000
800ab24: 2b00 cmp r3, #0
800ab26: d00a beq.n 800ab3e <HAL_RCCEx_PeriphCLKConfig+0x39e>
{
/* Check the parameters */
assert_param(IS_RCC_UART7CLKSOURCE(PeriphClkInit->Uart7ClockSelection));
/* Configure the UART7 clock source */
__HAL_RCC_UART7_CONFIG(PeriphClkInit->Uart7ClockSelection);
800ab28: 4947 ldr r1, [pc, #284] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab2a: 4b47 ldr r3, [pc, #284] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab2c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800ab30: f423 5240 bic.w r2, r3, #12288 ; 0x3000
800ab34: 687b ldr r3, [r7, #4]
800ab36: 6ddb ldr r3, [r3, #92] ; 0x5c
800ab38: 4313 orrs r3, r2
800ab3a: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- UART8 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8)
800ab3e: 687b ldr r3, [r7, #4]
800ab40: 681b ldr r3, [r3, #0]
800ab42: f403 5300 and.w r3, r3, #8192 ; 0x2000
800ab46: 2b00 cmp r3, #0
800ab48: d00a beq.n 800ab60 <HAL_RCCEx_PeriphCLKConfig+0x3c0>
{
/* Check the parameters */
assert_param(IS_RCC_UART8CLKSOURCE(PeriphClkInit->Uart8ClockSelection));
/* Configure the UART8 clock source */
__HAL_RCC_UART8_CONFIG(PeriphClkInit->Uart8ClockSelection);
800ab4a: 493f ldr r1, [pc, #252] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab4c: 4b3e ldr r3, [pc, #248] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab4e: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800ab52: f423 4240 bic.w r2, r3, #49152 ; 0xc000
800ab56: 687b ldr r3, [r7, #4]
800ab58: 6e1b ldr r3, [r3, #96] ; 0x60
800ab5a: 4313 orrs r3, r2
800ab5c: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*--------------------------------------- CEC Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC)
800ab60: 687b ldr r3, [r7, #4]
800ab62: 681b ldr r3, [r3, #0]
800ab64: f403 0380 and.w r3, r3, #4194304 ; 0x400000
800ab68: 2b00 cmp r3, #0
800ab6a: d00a beq.n 800ab82 <HAL_RCCEx_PeriphCLKConfig+0x3e2>
{
/* Check the parameters */
assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection));
/* Configure the CEC clock source */
__HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection);
800ab6c: 4936 ldr r1, [pc, #216] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab6e: 4b36 ldr r3, [pc, #216] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab70: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800ab74: f023 6280 bic.w r2, r3, #67108864 ; 0x4000000
800ab78: 687b ldr r3, [r7, #4]
800ab7a: 6f9b ldr r3, [r3, #120] ; 0x78
800ab7c: 4313 orrs r3, r2
800ab7e: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*-------------------------------------- CK48 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48)
800ab82: 687b ldr r3, [r7, #4]
800ab84: 681b ldr r3, [r3, #0]
800ab86: f403 1300 and.w r3, r3, #2097152 ; 0x200000
800ab8a: 2b00 cmp r3, #0
800ab8c: d011 beq.n 800abb2 <HAL_RCCEx_PeriphCLKConfig+0x412>
{
/* Check the parameters */
assert_param(IS_RCC_CLK48SOURCE(PeriphClkInit->Clk48ClockSelection));
/* Configure the CLK48 source */
__HAL_RCC_CLK48_CONFIG(PeriphClkInit->Clk48ClockSelection);
800ab8e: 492e ldr r1, [pc, #184] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab90: 4b2d ldr r3, [pc, #180] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ab92: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800ab96: f023 6200 bic.w r2, r3, #134217728 ; 0x8000000
800ab9a: 687b ldr r3, [r7, #4]
800ab9c: 6fdb ldr r3, [r3, #124] ; 0x7c
800ab9e: 4313 orrs r3, r2
800aba0: f8c1 3090 str.w r3, [r1, #144] ; 0x90
/* Enable the PLLSAI when it's used as clock source for CK48 */
if(PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP)
800aba4: 687b ldr r3, [r7, #4]
800aba6: 6fdb ldr r3, [r3, #124] ; 0x7c
800aba8: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000
800abac: d101 bne.n 800abb2 <HAL_RCCEx_PeriphCLKConfig+0x412>
{
pllsaiused = 1;
800abae: 2301 movs r3, #1
800abb0: 61bb str r3, [r7, #24]
}
}
/*-------------------------------------- LTDC Configuration -----------------------------------*/
#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC)
800abb2: 687b ldr r3, [r7, #4]
800abb4: 681b ldr r3, [r3, #0]
800abb6: f003 0308 and.w r3, r3, #8
800abba: 2b00 cmp r3, #0
800abbc: d001 beq.n 800abc2 <HAL_RCCEx_PeriphCLKConfig+0x422>
{
pllsaiused = 1;
800abbe: 2301 movs r3, #1
800abc0: 61bb str r3, [r7, #24]
}
#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */
/*-------------------------------------- LPTIM1 Configuration -----------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1)
800abc2: 687b ldr r3, [r7, #4]
800abc4: 681b ldr r3, [r3, #0]
800abc6: f403 2380 and.w r3, r3, #262144 ; 0x40000
800abca: 2b00 cmp r3, #0
800abcc: d00a beq.n 800abe4 <HAL_RCCEx_PeriphCLKConfig+0x444>
{
/* Check the parameters */
assert_param(IS_RCC_LPTIM1CLK(PeriphClkInit->Lptim1ClockSelection));
/* Configure the LTPIM1 clock source */
__HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection);
800abce: 491e ldr r1, [pc, #120] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800abd0: 4b1d ldr r3, [pc, #116] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800abd2: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800abd6: f023 7240 bic.w r2, r3, #50331648 ; 0x3000000
800abda: 687b ldr r3, [r7, #4]
800abdc: 6f5b ldr r3, [r3, #116] ; 0x74
800abde: 4313 orrs r3, r2
800abe0: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*------------------------------------- SDMMC1 Configuration ------------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1)
800abe4: 687b ldr r3, [r7, #4]
800abe6: 681b ldr r3, [r3, #0]
800abe8: f403 0300 and.w r3, r3, #8388608 ; 0x800000
800abec: 2b00 cmp r3, #0
800abee: d00b beq.n 800ac08 <HAL_RCCEx_PeriphCLKConfig+0x468>
{
/* Check the parameters */
assert_param(IS_RCC_SDMMC1CLKSOURCE(PeriphClkInit->Sdmmc1ClockSelection));
/* Configure the SDMMC1 clock source */
__HAL_RCC_SDMMC1_CONFIG(PeriphClkInit->Sdmmc1ClockSelection);
800abf0: 4915 ldr r1, [pc, #84] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800abf2: 4b15 ldr r3, [pc, #84] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800abf4: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800abf8: f023 5280 bic.w r2, r3, #268435456 ; 0x10000000
800abfc: 687b ldr r3, [r7, #4]
800abfe: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80
800ac02: 4313 orrs r3, r2
800ac04: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)
/*------------------------------------- SDMMC2 Configuration ------------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2)
800ac08: 687b ldr r3, [r7, #4]
800ac0a: 681b ldr r3, [r3, #0]
800ac0c: f003 6380 and.w r3, r3, #67108864 ; 0x4000000
800ac10: 2b00 cmp r3, #0
800ac12: d00b beq.n 800ac2c <HAL_RCCEx_PeriphCLKConfig+0x48c>
{
/* Check the parameters */
assert_param(IS_RCC_SDMMC2CLKSOURCE(PeriphClkInit->Sdmmc2ClockSelection));
/* Configure the SDMMC2 clock source */
__HAL_RCC_SDMMC2_CONFIG(PeriphClkInit->Sdmmc2ClockSelection);
800ac14: 490c ldr r1, [pc, #48] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ac16: 4b0c ldr r3, [pc, #48] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ac18: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800ac1c: f023 5200 bic.w r2, r3, #536870912 ; 0x20000000
800ac20: 687b ldr r3, [r7, #4]
800ac22: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
800ac26: 4313 orrs r3, r2
800ac28: f8c1 3090 str.w r3, [r1, #144] ; 0x90
}
/*------------------------------------- DFSDM1 Configuration -------------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1)
800ac2c: 687b ldr r3, [r7, #4]
800ac2e: 681b ldr r3, [r3, #0]
800ac30: f003 6300 and.w r3, r3, #134217728 ; 0x8000000
800ac34: 2b00 cmp r3, #0
800ac36: d00e beq.n 800ac56 <HAL_RCCEx_PeriphCLKConfig+0x4b6>
{
/* Check the parameters */
assert_param(IS_RCC_DFSDM1CLKSOURCE(PeriphClkInit->Dfsdm1ClockSelection));
/* Configure the DFSDM1 interface clock source */
__HAL_RCC_DFSDM1_CONFIG(PeriphClkInit->Dfsdm1ClockSelection);
800ac38: 4903 ldr r1, [pc, #12] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ac3a: 4b03 ldr r3, [pc, #12] ; (800ac48 <HAL_RCCEx_PeriphCLKConfig+0x4a8>)
800ac3c: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
800ac40: f023 7200 bic.w r2, r3, #33554432 ; 0x2000000
800ac44: 687b ldr r3, [r7, #4]
800ac46: e001 b.n 800ac4c <HAL_RCCEx_PeriphCLKConfig+0x4ac>
800ac48: 40023800 .word 0x40023800
800ac4c: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
800ac50: 4313 orrs r3, r2
800ac52: f8c1 308c str.w r3, [r1, #140] ; 0x8c
}
/*------------------------------------- DFSDM AUDIO Configuration -------------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO)
800ac56: 687b ldr r3, [r7, #4]
800ac58: 681b ldr r3, [r3, #0]
800ac5a: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
800ac5e: 2b00 cmp r3, #0
800ac60: d00b beq.n 800ac7a <HAL_RCCEx_PeriphCLKConfig+0x4da>
{
/* Check the parameters */
assert_param(IS_RCC_DFSDM1AUDIOCLKSOURCE(PeriphClkInit->Dfsdm1AudioClockSelection));
/* Configure the DFSDM interface clock source */
__HAL_RCC_DFSDM1AUDIO_CONFIG(PeriphClkInit->Dfsdm1AudioClockSelection);
800ac62: 4981 ldr r1, [pc, #516] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ac64: 4b80 ldr r3, [pc, #512] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ac66: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
800ac6a: f023 6280 bic.w r2, r3, #67108864 ; 0x4000000
800ac6e: 687b ldr r3, [r7, #4]
800ac70: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
800ac74: 4313 orrs r3, r2
800ac76: f8c1 308c str.w r3, [r1, #140] ; 0x8c
}
#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
/*-------------------------------------- PLLI2S Configuration ---------------------------------*/
/* PLLI2S is configured when a peripheral will use it as source clock : SAI1, SAI2, I2S or SPDIF-RX */
if((plli2sused == 1) || ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S))
800ac7a: 69fb ldr r3, [r7, #28]
800ac7c: 2b01 cmp r3, #1
800ac7e: d006 beq.n 800ac8e <HAL_RCCEx_PeriphCLKConfig+0x4ee>
800ac80: 687b ldr r3, [r7, #4]
800ac82: 681b ldr r3, [r3, #0]
800ac84: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
800ac88: 2b00 cmp r3, #0
800ac8a: f000 80d6 beq.w 800ae3a <HAL_RCCEx_PeriphCLKConfig+0x69a>
{
/* Disable the PLLI2S */
__HAL_RCC_PLLI2S_DISABLE();
800ac8e: 4a76 ldr r2, [pc, #472] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ac90: 4b75 ldr r3, [pc, #468] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ac92: 681b ldr r3, [r3, #0]
800ac94: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000
800ac98: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800ac9a: f7fd fd09 bl 80086b0 <HAL_GetTick>
800ac9e: 6178 str r0, [r7, #20]
/* Wait till PLLI2S is disabled */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
800aca0: e008 b.n 800acb4 <HAL_RCCEx_PeriphCLKConfig+0x514>
{
if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
800aca2: f7fd fd05 bl 80086b0 <HAL_GetTick>
800aca6: 4602 mov r2, r0
800aca8: 697b ldr r3, [r7, #20]
800acaa: 1ad3 subs r3, r2, r3
800acac: 2b64 cmp r3, #100 ; 0x64
800acae: d901 bls.n 800acb4 <HAL_RCCEx_PeriphCLKConfig+0x514>
{
/* return in case of Timeout detected */
return HAL_TIMEOUT;
800acb0: 2303 movs r3, #3
800acb2: e194 b.n 800afde <HAL_RCCEx_PeriphCLKConfig+0x83e>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
800acb4: 4b6c ldr r3, [pc, #432] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800acb6: 681b ldr r3, [r3, #0]
800acb8: f003 6300 and.w r3, r3, #134217728 ; 0x8000000
800acbc: 2b00 cmp r3, #0
800acbe: d1f0 bne.n 800aca2 <HAL_RCCEx_PeriphCLKConfig+0x502>
/* check for common PLLI2S Parameters */
assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN));
/*----------------- In Case of PLLI2S is selected as source clock for I2S -------------------*/
if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) && (PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)))
800acc0: 687b ldr r3, [r7, #4]
800acc2: 681b ldr r3, [r3, #0]
800acc4: f003 0301 and.w r3, r3, #1
800acc8: 2b00 cmp r3, #0
800acca: d021 beq.n 800ad10 <HAL_RCCEx_PeriphCLKConfig+0x570>
800accc: 687b ldr r3, [r7, #4]
800acce: 6b5b ldr r3, [r3, #52] ; 0x34
800acd0: 2b00 cmp r3, #0
800acd2: d11d bne.n 800ad10 <HAL_RCCEx_PeriphCLKConfig+0x570>
{
/* check for Parameters */
assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR));
/* Read PLLI2SP and PLLI2SQ value from PLLI2SCFGR register (this value is not needed for I2S configuration) */
tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos);
800acd4: 4b64 ldr r3, [pc, #400] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800acd6: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
800acda: 0c1b lsrs r3, r3, #16
800acdc: f003 0303 and.w r3, r3, #3
800ace0: 613b str r3, [r7, #16]
tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
800ace2: 4b61 ldr r3, [pc, #388] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ace4: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
800ace8: 0e1b lsrs r3, r3, #24
800acea: f003 030f and.w r3, r3, #15
800acee: 60fb str r3, [r7, #12]
/* Configure the PLLI2S division factors */
/* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */
/* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
__HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , tmpreg0, tmpreg1, PeriphClkInit->PLLI2S.PLLI2SR);
800acf0: 495d ldr r1, [pc, #372] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800acf2: 687b ldr r3, [r7, #4]
800acf4: 685b ldr r3, [r3, #4]
800acf6: 019a lsls r2, r3, #6
800acf8: 693b ldr r3, [r7, #16]
800acfa: 041b lsls r3, r3, #16
800acfc: 431a orrs r2, r3
800acfe: 68fb ldr r3, [r7, #12]
800ad00: 061b lsls r3, r3, #24
800ad02: 431a orrs r2, r3
800ad04: 687b ldr r3, [r7, #4]
800ad06: 689b ldr r3, [r3, #8]
800ad08: 071b lsls r3, r3, #28
800ad0a: 4313 orrs r3, r2
800ad0c: f8c1 3084 str.w r3, [r1, #132] ; 0x84
}
/*----------------- In Case of PLLI2S is selected as source clock for SAI -------------------*/
if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) ||
800ad10: 687b ldr r3, [r7, #4]
800ad12: 681b ldr r3, [r3, #0]
800ad14: f403 2300 and.w r3, r3, #524288 ; 0x80000
800ad18: 2b00 cmp r3, #0
800ad1a: d004 beq.n 800ad26 <HAL_RCCEx_PeriphCLKConfig+0x586>
800ad1c: 687b ldr r3, [r7, #4]
800ad1e: 6bdb ldr r3, [r3, #60] ; 0x3c
800ad20: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000
800ad24: d00a beq.n 800ad3c <HAL_RCCEx_PeriphCLKConfig+0x59c>
((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)))
800ad26: 687b ldr r3, [r7, #4]
800ad28: 681b ldr r3, [r3, #0]
800ad2a: f403 1380 and.w r3, r3, #1048576 ; 0x100000
if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) ||
800ad2e: 2b00 cmp r3, #0
800ad30: d02e beq.n 800ad90 <HAL_RCCEx_PeriphCLKConfig+0x5f0>
((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)))
800ad32: 687b ldr r3, [r7, #4]
800ad34: 6c1b ldr r3, [r3, #64] ; 0x40
800ad36: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000
800ad3a: d129 bne.n 800ad90 <HAL_RCCEx_PeriphCLKConfig+0x5f0>
assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));
/* Check for PLLI2S/DIVQ parameters */
assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ));
/* Read PLLI2SP and PLLI2SR values from PLLI2SCFGR register (this value is not needed for SAI configuration) */
tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos);
800ad3c: 4b4a ldr r3, [pc, #296] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ad3e: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
800ad42: 0c1b lsrs r3, r3, #16
800ad44: f003 0303 and.w r3, r3, #3
800ad48: 613b str r3, [r7, #16]
tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
800ad4a: 4b47 ldr r3, [pc, #284] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ad4c: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
800ad50: 0f1b lsrs r3, r3, #28
800ad52: f003 0307 and.w r3, r3, #7
800ad56: 60fb str r3, [r7, #12]
/* Configure the PLLI2S division factors */
/* PLLI2S_VCO Input = PLL_SOURCE/PLLM */
/* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */
/* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */
__HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, tmpreg0, PeriphClkInit->PLLI2S.PLLI2SQ, tmpreg1);
800ad58: 4943 ldr r1, [pc, #268] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ad5a: 687b ldr r3, [r7, #4]
800ad5c: 685b ldr r3, [r3, #4]
800ad5e: 019a lsls r2, r3, #6
800ad60: 693b ldr r3, [r7, #16]
800ad62: 041b lsls r3, r3, #16
800ad64: 431a orrs r2, r3
800ad66: 687b ldr r3, [r7, #4]
800ad68: 68db ldr r3, [r3, #12]
800ad6a: 061b lsls r3, r3, #24
800ad6c: 431a orrs r2, r3
800ad6e: 68fb ldr r3, [r7, #12]
800ad70: 071b lsls r3, r3, #28
800ad72: 4313 orrs r3, r2
800ad74: f8c1 3084 str.w r3, [r1, #132] ; 0x84
/* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */
__HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ);
800ad78: 493b ldr r1, [pc, #236] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ad7a: 4b3b ldr r3, [pc, #236] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ad7c: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
800ad80: f023 021f bic.w r2, r3, #31
800ad84: 687b ldr r3, [r7, #4]
800ad86: 6a5b ldr r3, [r3, #36] ; 0x24
800ad88: 3b01 subs r3, #1
800ad8a: 4313 orrs r3, r2
800ad8c: f8c1 308c str.w r3, [r1, #140] ; 0x8c
}
/*----------------- In Case of PLLI2S is selected as source clock for SPDIF-RX -------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX)
800ad90: 687b ldr r3, [r7, #4]
800ad92: 681b ldr r3, [r3, #0]
800ad94: f003 7380 and.w r3, r3, #16777216 ; 0x1000000
800ad98: 2b00 cmp r3, #0
800ad9a: d01d beq.n 800add8 <HAL_RCCEx_PeriphCLKConfig+0x638>
{
/* check for Parameters */
assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->PLLI2S.PLLI2SP));
/* Read PLLI2SR value from PLLI2SCFGR register (this value is not needed for SPDIF-RX configuration) */
tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
800ad9c: 4b32 ldr r3, [pc, #200] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ad9e: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
800ada2: 0e1b lsrs r3, r3, #24
800ada4: f003 030f and.w r3, r3, #15
800ada8: 613b str r3, [r7, #16]
tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
800adaa: 4b2f ldr r3, [pc, #188] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800adac: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
800adb0: 0f1b lsrs r3, r3, #28
800adb2: f003 0307 and.w r3, r3, #7
800adb6: 60fb str r3, [r7, #12]
/* Configure the PLLI2S division factors */
/* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */
/* SPDIFCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */
__HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, tmpreg0, tmpreg1);
800adb8: 492b ldr r1, [pc, #172] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800adba: 687b ldr r3, [r7, #4]
800adbc: 685b ldr r3, [r3, #4]
800adbe: 019a lsls r2, r3, #6
800adc0: 687b ldr r3, [r7, #4]
800adc2: 691b ldr r3, [r3, #16]
800adc4: 041b lsls r3, r3, #16
800adc6: 431a orrs r2, r3
800adc8: 693b ldr r3, [r7, #16]
800adca: 061b lsls r3, r3, #24
800adcc: 431a orrs r2, r3
800adce: 68fb ldr r3, [r7, #12]
800add0: 071b lsls r3, r3, #28
800add2: 4313 orrs r3, r2
800add4: f8c1 3084 str.w r3, [r1, #132] ; 0x84
}
/*----------------- In Case of PLLI2S is just selected -----------------*/
if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S)
800add8: 687b ldr r3, [r7, #4]
800adda: 681b ldr r3, [r3, #0]
800addc: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
800ade0: 2b00 cmp r3, #0
800ade2: d011 beq.n 800ae08 <HAL_RCCEx_PeriphCLKConfig+0x668>
assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));
/* Configure the PLLI2S division factors */
/* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLI2SM) */
/* SPDIFRXCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */
__HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, PeriphClkInit->PLLI2S.PLLI2SQ, PeriphClkInit->PLLI2S.PLLI2SR);
800ade4: 4920 ldr r1, [pc, #128] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ade6: 687b ldr r3, [r7, #4]
800ade8: 685b ldr r3, [r3, #4]
800adea: 019a lsls r2, r3, #6
800adec: 687b ldr r3, [r7, #4]
800adee: 691b ldr r3, [r3, #16]
800adf0: 041b lsls r3, r3, #16
800adf2: 431a orrs r2, r3
800adf4: 687b ldr r3, [r7, #4]
800adf6: 68db ldr r3, [r3, #12]
800adf8: 061b lsls r3, r3, #24
800adfa: 431a orrs r2, r3
800adfc: 687b ldr r3, [r7, #4]
800adfe: 689b ldr r3, [r3, #8]
800ae00: 071b lsls r3, r3, #28
800ae02: 4313 orrs r3, r2
800ae04: f8c1 3084 str.w r3, [r1, #132] ; 0x84
}
/* Enable the PLLI2S */
__HAL_RCC_PLLI2S_ENABLE();
800ae08: 4a17 ldr r2, [pc, #92] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ae0a: 4b17 ldr r3, [pc, #92] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ae0c: 681b ldr r3, [r3, #0]
800ae0e: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000
800ae12: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800ae14: f7fd fc4c bl 80086b0 <HAL_GetTick>
800ae18: 6178 str r0, [r7, #20]
/* Wait till PLLI2S is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
800ae1a: e008 b.n 800ae2e <HAL_RCCEx_PeriphCLKConfig+0x68e>
{
if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
800ae1c: f7fd fc48 bl 80086b0 <HAL_GetTick>
800ae20: 4602 mov r2, r0
800ae22: 697b ldr r3, [r7, #20]
800ae24: 1ad3 subs r3, r2, r3
800ae26: 2b64 cmp r3, #100 ; 0x64
800ae28: d901 bls.n 800ae2e <HAL_RCCEx_PeriphCLKConfig+0x68e>
{
/* return in case of Timeout detected */
return HAL_TIMEOUT;
800ae2a: 2303 movs r3, #3
800ae2c: e0d7 b.n 800afde <HAL_RCCEx_PeriphCLKConfig+0x83e>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
800ae2e: 4b0e ldr r3, [pc, #56] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ae30: 681b ldr r3, [r3, #0]
800ae32: f003 6300 and.w r3, r3, #134217728 ; 0x8000000
800ae36: 2b00 cmp r3, #0
800ae38: d0f0 beq.n 800ae1c <HAL_RCCEx_PeriphCLKConfig+0x67c>
}
}
/*-------------------------------------- PLLSAI Configuration ---------------------------------*/
/* PLLSAI is configured when a peripheral will use it as source clock : SAI1, SAI2, LTDC or CK48 */
if(pllsaiused == 1)
800ae3a: 69bb ldr r3, [r7, #24]
800ae3c: 2b01 cmp r3, #1
800ae3e: f040 80cd bne.w 800afdc <HAL_RCCEx_PeriphCLKConfig+0x83c>
{
/* Disable PLLSAI Clock */
__HAL_RCC_PLLSAI_DISABLE();
800ae42: 4a09 ldr r2, [pc, #36] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ae44: 4b08 ldr r3, [pc, #32] ; (800ae68 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
800ae46: 681b ldr r3, [r3, #0]
800ae48: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
800ae4c: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800ae4e: f7fd fc2f bl 80086b0 <HAL_GetTick>
800ae52: 6178 str r0, [r7, #20]
/* Wait till PLLSAI is disabled */
while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
800ae54: e00a b.n 800ae6c <HAL_RCCEx_PeriphCLKConfig+0x6cc>
{
if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
800ae56: f7fd fc2b bl 80086b0 <HAL_GetTick>
800ae5a: 4602 mov r2, r0
800ae5c: 697b ldr r3, [r7, #20]
800ae5e: 1ad3 subs r3, r2, r3
800ae60: 2b64 cmp r3, #100 ; 0x64
800ae62: d903 bls.n 800ae6c <HAL_RCCEx_PeriphCLKConfig+0x6cc>
{
/* return in case of Timeout detected */
return HAL_TIMEOUT;
800ae64: 2303 movs r3, #3
800ae66: e0ba b.n 800afde <HAL_RCCEx_PeriphCLKConfig+0x83e>
800ae68: 40023800 .word 0x40023800
while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
800ae6c: 4b5e ldr r3, [pc, #376] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800ae6e: 681b ldr r3, [r3, #0]
800ae70: f003 5300 and.w r3, r3, #536870912 ; 0x20000000
800ae74: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000
800ae78: d0ed beq.n 800ae56 <HAL_RCCEx_PeriphCLKConfig+0x6b6>
/* Check the PLLSAI division factors */
assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN));
/*----------------- In Case of PLLSAI is selected as source clock for SAI -------------------*/
if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\
800ae7a: 687b ldr r3, [r7, #4]
800ae7c: 681b ldr r3, [r3, #0]
800ae7e: f403 2300 and.w r3, r3, #524288 ; 0x80000
800ae82: 2b00 cmp r3, #0
800ae84: d003 beq.n 800ae8e <HAL_RCCEx_PeriphCLKConfig+0x6ee>
800ae86: 687b ldr r3, [r7, #4]
800ae88: 6bdb ldr r3, [r3, #60] ; 0x3c
800ae8a: 2b00 cmp r3, #0
800ae8c: d009 beq.n 800aea2 <HAL_RCCEx_PeriphCLKConfig+0x702>
((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)))
800ae8e: 687b ldr r3, [r7, #4]
800ae90: 681b ldr r3, [r3, #0]
800ae92: f403 1380 and.w r3, r3, #1048576 ; 0x100000
if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\
800ae96: 2b00 cmp r3, #0
800ae98: d02e beq.n 800aef8 <HAL_RCCEx_PeriphCLKConfig+0x758>
((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)))
800ae9a: 687b ldr r3, [r7, #4]
800ae9c: 6c1b ldr r3, [r3, #64] ; 0x40
800ae9e: 2b00 cmp r3, #0
800aea0: d12a bne.n 800aef8 <HAL_RCCEx_PeriphCLKConfig+0x758>
assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ));
/* check for PLLSAI/DIVQ Parameter */
assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ));
/* Read PLLSAIP value from PLLSAICFGR register (this value is not needed for SAI configuration) */
tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);
800aea2: 4b51 ldr r3, [pc, #324] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800aea4: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
800aea8: 0c1b lsrs r3, r3, #16
800aeaa: f003 0303 and.w r3, r3, #3
800aeae: 613b str r3, [r7, #16]
tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
800aeb0: 4b4d ldr r3, [pc, #308] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800aeb2: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
800aeb6: 0f1b lsrs r3, r3, #28
800aeb8: f003 0307 and.w r3, r3, #7
800aebc: 60fb str r3, [r7, #12]
/* PLLSAI_VCO Input = PLL_SOURCE/PLLM */
/* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */
/* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */
__HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg0, PeriphClkInit->PLLSAI.PLLSAIQ, tmpreg1);
800aebe: 494a ldr r1, [pc, #296] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800aec0: 687b ldr r3, [r7, #4]
800aec2: 695b ldr r3, [r3, #20]
800aec4: 019a lsls r2, r3, #6
800aec6: 693b ldr r3, [r7, #16]
800aec8: 041b lsls r3, r3, #16
800aeca: 431a orrs r2, r3
800aecc: 687b ldr r3, [r7, #4]
800aece: 699b ldr r3, [r3, #24]
800aed0: 061b lsls r3, r3, #24
800aed2: 431a orrs r2, r3
800aed4: 68fb ldr r3, [r7, #12]
800aed6: 071b lsls r3, r3, #28
800aed8: 4313 orrs r3, r2
800aeda: f8c1 3088 str.w r3, [r1, #136] ; 0x88
/* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */
__HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ);
800aede: 4942 ldr r1, [pc, #264] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800aee0: 4b41 ldr r3, [pc, #260] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800aee2: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
800aee6: f423 52f8 bic.w r2, r3, #7936 ; 0x1f00
800aeea: 687b ldr r3, [r7, #4]
800aeec: 6a9b ldr r3, [r3, #40] ; 0x28
800aeee: 3b01 subs r3, #1
800aef0: 021b lsls r3, r3, #8
800aef2: 4313 orrs r3, r2
800aef4: f8c1 308c str.w r3, [r1, #140] ; 0x8c
}
/*----------------- In Case of PLLSAI is selected as source clock for CLK48 -------------------*/
/* In Case of PLLI2S is selected as source clock for CK48 */
if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) && (PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP))
800aef8: 687b ldr r3, [r7, #4]
800aefa: 681b ldr r3, [r3, #0]
800aefc: f403 1300 and.w r3, r3, #2097152 ; 0x200000
800af00: 2b00 cmp r3, #0
800af02: d022 beq.n 800af4a <HAL_RCCEx_PeriphCLKConfig+0x7aa>
800af04: 687b ldr r3, [r7, #4]
800af06: 6fdb ldr r3, [r3, #124] ; 0x7c
800af08: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000
800af0c: d11d bne.n 800af4a <HAL_RCCEx_PeriphCLKConfig+0x7aa>
{
/* check for Parameters */
assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->PLLSAI.PLLSAIP));
/* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 configuration) */
tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
800af0e: 4b36 ldr r3, [pc, #216] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800af10: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
800af14: 0e1b lsrs r3, r3, #24
800af16: f003 030f and.w r3, r3, #15
800af1a: 613b str r3, [r7, #16]
tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
800af1c: 4b32 ldr r3, [pc, #200] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800af1e: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
800af22: 0f1b lsrs r3, r3, #28
800af24: f003 0307 and.w r3, r3, #7
800af28: 60fb str r3, [r7, #12]
/* Configure the PLLSAI division factors */
/* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) x (PLLI2SN/PLLM) */
/* 48CLK = f(PLLSAI clock output) = f(VCO clock) / PLLSAIP */
__HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , PeriphClkInit->PLLSAI.PLLSAIP, tmpreg0, tmpreg1);
800af2a: 492f ldr r1, [pc, #188] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800af2c: 687b ldr r3, [r7, #4]
800af2e: 695b ldr r3, [r3, #20]
800af30: 019a lsls r2, r3, #6
800af32: 687b ldr r3, [r7, #4]
800af34: 6a1b ldr r3, [r3, #32]
800af36: 041b lsls r3, r3, #16
800af38: 431a orrs r2, r3
800af3a: 693b ldr r3, [r7, #16]
800af3c: 061b lsls r3, r3, #24
800af3e: 431a orrs r2, r3
800af40: 68fb ldr r3, [r7, #12]
800af42: 071b lsls r3, r3, #28
800af44: 4313 orrs r3, r2
800af46: f8c1 3088 str.w r3, [r1, #136] ; 0x88
}
#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)
/*---------------------------- LTDC configuration -------------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == (RCC_PERIPHCLK_LTDC))
800af4a: 687b ldr r3, [r7, #4]
800af4c: 681b ldr r3, [r3, #0]
800af4e: f003 0308 and.w r3, r3, #8
800af52: 2b00 cmp r3, #0
800af54: d028 beq.n 800afa8 <HAL_RCCEx_PeriphCLKConfig+0x808>
{
assert_param(IS_RCC_PLLSAIR_VALUE(PeriphClkInit->PLLSAI.PLLSAIR));
assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->PLLSAIDivR));
/* Read PLLSAIP and PLLSAIQ value from PLLSAICFGR register (these value are not needed for LTDC configuration) */
tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
800af56: 4b24 ldr r3, [pc, #144] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800af58: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
800af5c: 0e1b lsrs r3, r3, #24
800af5e: f003 030f and.w r3, r3, #15
800af62: 613b str r3, [r7, #16]
tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);
800af64: 4b20 ldr r3, [pc, #128] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800af66: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
800af6a: 0c1b lsrs r3, r3, #16
800af6c: f003 0303 and.w r3, r3, #3
800af70: 60fb str r3, [r7, #12]
/* PLLSAI_VCO Input = PLL_SOURCE/PLLM */
/* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */
/* LTDC_CLK(first level) = PLLSAI_VCO Output/PLLSAIR */
__HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg1, tmpreg0, PeriphClkInit->PLLSAI.PLLSAIR);
800af72: 491d ldr r1, [pc, #116] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800af74: 687b ldr r3, [r7, #4]
800af76: 695b ldr r3, [r3, #20]
800af78: 019a lsls r2, r3, #6
800af7a: 68fb ldr r3, [r7, #12]
800af7c: 041b lsls r3, r3, #16
800af7e: 431a orrs r2, r3
800af80: 693b ldr r3, [r7, #16]
800af82: 061b lsls r3, r3, #24
800af84: 431a orrs r2, r3
800af86: 687b ldr r3, [r7, #4]
800af88: 69db ldr r3, [r3, #28]
800af8a: 071b lsls r3, r3, #28
800af8c: 4313 orrs r3, r2
800af8e: f8c1 3088 str.w r3, [r1, #136] ; 0x88
/* LTDC_CLK = LTDC_CLK(first level)/PLLSAIDIVR */
__HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLSAIDivR);
800af92: 4915 ldr r1, [pc, #84] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800af94: 4b14 ldr r3, [pc, #80] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800af96: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
800af9a: f423 3240 bic.w r2, r3, #196608 ; 0x30000
800af9e: 687b ldr r3, [r7, #4]
800afa0: 6adb ldr r3, [r3, #44] ; 0x2c
800afa2: 4313 orrs r3, r2
800afa4: f8c1 308c str.w r3, [r1, #140] ; 0x8c
}
#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */
/* Enable PLLSAI Clock */
__HAL_RCC_PLLSAI_ENABLE();
800afa8: 4a0f ldr r2, [pc, #60] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800afaa: 4b0f ldr r3, [pc, #60] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800afac: 681b ldr r3, [r3, #0]
800afae: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
800afb2: 6013 str r3, [r2, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
800afb4: f7fd fb7c bl 80086b0 <HAL_GetTick>
800afb8: 6178 str r0, [r7, #20]
/* Wait till PLLSAI is ready */
while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
800afba: e008 b.n 800afce <HAL_RCCEx_PeriphCLKConfig+0x82e>
{
if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
800afbc: f7fd fb78 bl 80086b0 <HAL_GetTick>
800afc0: 4602 mov r2, r0
800afc2: 697b ldr r3, [r7, #20]
800afc4: 1ad3 subs r3, r2, r3
800afc6: 2b64 cmp r3, #100 ; 0x64
800afc8: d901 bls.n 800afce <HAL_RCCEx_PeriphCLKConfig+0x82e>
{
/* return in case of Timeout detected */
return HAL_TIMEOUT;
800afca: 2303 movs r3, #3
800afcc: e007 b.n 800afde <HAL_RCCEx_PeriphCLKConfig+0x83e>
while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
800afce: 4b06 ldr r3, [pc, #24] ; (800afe8 <HAL_RCCEx_PeriphCLKConfig+0x848>)
800afd0: 681b ldr r3, [r3, #0]
800afd2: f003 5300 and.w r3, r3, #536870912 ; 0x20000000
800afd6: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000
800afda: d1ef bne.n 800afbc <HAL_RCCEx_PeriphCLKConfig+0x81c>
}
}
}
return HAL_OK;
800afdc: 2300 movs r3, #0
}
800afde: 4618 mov r0, r3
800afe0: 3720 adds r7, #32
800afe2: 46bd mov sp, r7
800afe4: bd80 pop {r7, pc}
800afe6: bf00 nop
800afe8: 40023800 .word 0x40023800
0800afec <HAL_TIM_Base_Init>:
* Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init()
* @param htim TIM Base handle
* @retval HAL status
*/
HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
{
800afec: b580 push {r7, lr}
800afee: b082 sub sp, #8
800aff0: af00 add r7, sp, #0
800aff2: 6078 str r0, [r7, #4]
/* Check the TIM handle allocation */
if (htim == NULL)
800aff4: 687b ldr r3, [r7, #4]
800aff6: 2b00 cmp r3, #0
800aff8: d101 bne.n 800affe <HAL_TIM_Base_Init+0x12>
{
return HAL_ERROR;
800affa: 2301 movs r3, #1
800affc: e049 b.n 800b092 <HAL_TIM_Base_Init+0xa6>
assert_param(IS_TIM_INSTANCE(htim->Instance));
assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
if (htim->State == HAL_TIM_STATE_RESET)
800affe: 687b ldr r3, [r7, #4]
800b000: f893 303d ldrb.w r3, [r3, #61] ; 0x3d
800b004: b2db uxtb r3, r3
800b006: 2b00 cmp r3, #0
800b008: d106 bne.n 800b018 <HAL_TIM_Base_Init+0x2c>
{
/* Allocate lock resource and initialize it */
htim->Lock = HAL_UNLOCKED;
800b00a: 687b ldr r3, [r7, #4]
800b00c: 2200 movs r2, #0
800b00e: f883 203c strb.w r2, [r3, #60] ; 0x3c
}
/* Init the low level hardware : GPIO, CLOCK, NVIC */
htim->Base_MspInitCallback(htim);
#else
/* Init the low level hardware : GPIO, CLOCK, NVIC */
HAL_TIM_Base_MspInit(htim);
800b012: 6878 ldr r0, [r7, #4]
800b014: f7fc f9a4 bl 8007360 <HAL_TIM_Base_MspInit>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
/* Set the TIM state */
htim->State = HAL_TIM_STATE_BUSY;
800b018: 687b ldr r3, [r7, #4]
800b01a: 2202 movs r2, #2
800b01c: f883 203d strb.w r2, [r3, #61] ; 0x3d
/* Set the Time Base configuration */
TIM_Base_SetConfig(htim->Instance, &htim->Init);
800b020: 687b ldr r3, [r7, #4]
800b022: 681a ldr r2, [r3, #0]
800b024: 687b ldr r3, [r7, #4]
800b026: 3304 adds r3, #4
800b028: 4619 mov r1, r3
800b02a: 4610 mov r0, r2
800b02c: f000 f9f6 bl 800b41c <TIM_Base_SetConfig>
/* Initialize the DMA burst operation state */
htim->DMABurstState = HAL_DMA_BURST_STATE_READY;
800b030: 687b ldr r3, [r7, #4]
800b032: 2201 movs r2, #1
800b034: f883 2048 strb.w r2, [r3, #72] ; 0x48
/* Initialize the TIM channels state */
TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);
800b038: 687b ldr r3, [r7, #4]
800b03a: 2201 movs r2, #1
800b03c: f883 203e strb.w r2, [r3, #62] ; 0x3e
800b040: 687b ldr r3, [r7, #4]
800b042: 2201 movs r2, #1
800b044: f883 203f strb.w r2, [r3, #63] ; 0x3f
800b048: 687b ldr r3, [r7, #4]
800b04a: 2201 movs r2, #1
800b04c: f883 2040 strb.w r2, [r3, #64] ; 0x40
800b050: 687b ldr r3, [r7, #4]
800b052: 2201 movs r2, #1
800b054: f883 2041 strb.w r2, [r3, #65] ; 0x41
800b058: 687b ldr r3, [r7, #4]
800b05a: 2201 movs r2, #1
800b05c: f883 2042 strb.w r2, [r3, #66] ; 0x42
800b060: 687b ldr r3, [r7, #4]
800b062: 2201 movs r2, #1
800b064: f883 2043 strb.w r2, [r3, #67] ; 0x43
TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);
800b068: 687b ldr r3, [r7, #4]
800b06a: 2201 movs r2, #1
800b06c: f883 2044 strb.w r2, [r3, #68] ; 0x44
800b070: 687b ldr r3, [r7, #4]
800b072: 2201 movs r2, #1
800b074: f883 2045 strb.w r2, [r3, #69] ; 0x45
800b078: 687b ldr r3, [r7, #4]
800b07a: 2201 movs r2, #1
800b07c: f883 2046 strb.w r2, [r3, #70] ; 0x46
800b080: 687b ldr r3, [r7, #4]
800b082: 2201 movs r2, #1
800b084: f883 2047 strb.w r2, [r3, #71] ; 0x47
/* Initialize the TIM state*/
htim->State = HAL_TIM_STATE_READY;
800b088: 687b ldr r3, [r7, #4]
800b08a: 2201 movs r2, #1
800b08c: f883 203d strb.w r2, [r3, #61] ; 0x3d
return HAL_OK;
800b090: 2300 movs r3, #0
}
800b092: 4618 mov r0, r3
800b094: 3708 adds r7, #8
800b096: 46bd mov sp, r7
800b098: bd80 pop {r7, pc}
...
0800b09c <HAL_TIM_Base_Start_IT>:
* @brief Starts the TIM Base generation in interrupt mode.
* @param htim TIM Base handle
* @retval HAL status
*/
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
{
800b09c: b480 push {r7}
800b09e: b085 sub sp, #20
800b0a0: af00 add r7, sp, #0
800b0a2: 6078 str r0, [r7, #4]
/* Check the parameters */
assert_param(IS_TIM_INSTANCE(htim->Instance));
/* Check the TIM state */
if (htim->State != HAL_TIM_STATE_READY)
800b0a4: 687b ldr r3, [r7, #4]
800b0a6: f893 303d ldrb.w r3, [r3, #61] ; 0x3d
800b0aa: b2db uxtb r3, r3
800b0ac: 2b01 cmp r3, #1
800b0ae: d001 beq.n 800b0b4 <HAL_TIM_Base_Start_IT+0x18>
{
return HAL_ERROR;
800b0b0: 2301 movs r3, #1
800b0b2: e054 b.n 800b15e <HAL_TIM_Base_Start_IT+0xc2>
}
/* Set the TIM state */
htim->State = HAL_TIM_STATE_BUSY;
800b0b4: 687b ldr r3, [r7, #4]
800b0b6: 2202 movs r2, #2
800b0b8: f883 203d strb.w r2, [r3, #61] ; 0x3d
/* Enable the TIM Update interrupt */
__HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
800b0bc: 687b ldr r3, [r7, #4]
800b0be: 681b ldr r3, [r3, #0]
800b0c0: 687a ldr r2, [r7, #4]
800b0c2: 6812 ldr r2, [r2, #0]
800b0c4: 68d2 ldr r2, [r2, #12]
800b0c6: f042 0201 orr.w r2, r2, #1
800b0ca: 60da str r2, [r3, #12]
/* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
800b0cc: 687b ldr r3, [r7, #4]
800b0ce: 681b ldr r3, [r3, #0]
800b0d0: 4a26 ldr r2, [pc, #152] ; (800b16c <HAL_TIM_Base_Start_IT+0xd0>)
800b0d2: 4293 cmp r3, r2
800b0d4: d022 beq.n 800b11c <HAL_TIM_Base_Start_IT+0x80>
800b0d6: 687b ldr r3, [r7, #4]
800b0d8: 681b ldr r3, [r3, #0]
800b0da: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
800b0de: d01d beq.n 800b11c <HAL_TIM_Base_Start_IT+0x80>
800b0e0: 687b ldr r3, [r7, #4]
800b0e2: 681b ldr r3, [r3, #0]
800b0e4: 4a22 ldr r2, [pc, #136] ; (800b170 <HAL_TIM_Base_Start_IT+0xd4>)
800b0e6: 4293 cmp r3, r2
800b0e8: d018 beq.n 800b11c <HAL_TIM_Base_Start_IT+0x80>
800b0ea: 687b ldr r3, [r7, #4]
800b0ec: 681b ldr r3, [r3, #0]
800b0ee: 4a21 ldr r2, [pc, #132] ; (800b174 <HAL_TIM_Base_Start_IT+0xd8>)
800b0f0: 4293 cmp r3, r2
800b0f2: d013 beq.n 800b11c <HAL_TIM_Base_Start_IT+0x80>
800b0f4: 687b ldr r3, [r7, #4]
800b0f6: 681b ldr r3, [r3, #0]
800b0f8: 4a1f ldr r2, [pc, #124] ; (800b178 <HAL_TIM_Base_Start_IT+0xdc>)
800b0fa: 4293 cmp r3, r2
800b0fc: d00e beq.n 800b11c <HAL_TIM_Base_Start_IT+0x80>
800b0fe: 687b ldr r3, [r7, #4]
800b100: 681b ldr r3, [r3, #0]
800b102: 4a1e ldr r2, [pc, #120] ; (800b17c <HAL_TIM_Base_Start_IT+0xe0>)
800b104: 4293 cmp r3, r2
800b106: d009 beq.n 800b11c <HAL_TIM_Base_Start_IT+0x80>
800b108: 687b ldr r3, [r7, #4]
800b10a: 681b ldr r3, [r3, #0]
800b10c: 4a1c ldr r2, [pc, #112] ; (800b180 <HAL_TIM_Base_Start_IT+0xe4>)
800b10e: 4293 cmp r3, r2
800b110: d004 beq.n 800b11c <HAL_TIM_Base_Start_IT+0x80>
800b112: 687b ldr r3, [r7, #4]
800b114: 681b ldr r3, [r3, #0]
800b116: 4a1b ldr r2, [pc, #108] ; (800b184 <HAL_TIM_Base_Start_IT+0xe8>)
800b118: 4293 cmp r3, r2
800b11a: d115 bne.n 800b148 <HAL_TIM_Base_Start_IT+0xac>
{
tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
800b11c: 687b ldr r3, [r7, #4]
800b11e: 681b ldr r3, [r3, #0]
800b120: 689a ldr r2, [r3, #8]
800b122: 4b19 ldr r3, [pc, #100] ; (800b188 <HAL_TIM_Base_Start_IT+0xec>)
800b124: 4013 ands r3, r2
800b126: 60fb str r3, [r7, #12]
if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
800b128: 68fb ldr r3, [r7, #12]
800b12a: 2b06 cmp r3, #6
800b12c: d015 beq.n 800b15a <HAL_TIM_Base_Start_IT+0xbe>
800b12e: 68fb ldr r3, [r7, #12]
800b130: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
800b134: d011 beq.n 800b15a <HAL_TIM_Base_Start_IT+0xbe>
{
__HAL_TIM_ENABLE(htim);
800b136: 687b ldr r3, [r7, #4]
800b138: 681b ldr r3, [r3, #0]
800b13a: 687a ldr r2, [r7, #4]
800b13c: 6812 ldr r2, [r2, #0]
800b13e: 6812 ldr r2, [r2, #0]
800b140: f042 0201 orr.w r2, r2, #1
800b144: 601a str r2, [r3, #0]
if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
800b146: e008 b.n 800b15a <HAL_TIM_Base_Start_IT+0xbe>
}
}
else
{
__HAL_TIM_ENABLE(htim);
800b148: 687b ldr r3, [r7, #4]
800b14a: 681b ldr r3, [r3, #0]
800b14c: 687a ldr r2, [r7, #4]
800b14e: 6812 ldr r2, [r2, #0]
800b150: 6812 ldr r2, [r2, #0]
800b152: f042 0201 orr.w r2, r2, #1
800b156: 601a str r2, [r3, #0]
800b158: e000 b.n 800b15c <HAL_TIM_Base_Start_IT+0xc0>
if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
800b15a: bf00 nop
}
/* Return function status */
return HAL_OK;
800b15c: 2300 movs r3, #0
}
800b15e: 4618 mov r0, r3
800b160: 3714 adds r7, #20
800b162: 46bd mov sp, r7
800b164: f85d 7b04 ldr.w r7, [sp], #4
800b168: 4770 bx lr
800b16a: bf00 nop
800b16c: 40010000 .word 0x40010000
800b170: 40000400 .word 0x40000400
800b174: 40000800 .word 0x40000800
800b178: 40000c00 .word 0x40000c00
800b17c: 40010400 .word 0x40010400
800b180: 40014000 .word 0x40014000
800b184: 40001800 .word 0x40001800
800b188: 00010007 .word 0x00010007
0800b18c <HAL_TIM_IRQHandler>:
* @brief This function handles TIM interrupts requests.
* @param htim TIM handle
* @retval None
*/
void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
{
800b18c: b580 push {r7, lr}
800b18e: b082 sub sp, #8
800b190: af00 add r7, sp, #0
800b192: 6078 str r0, [r7, #4]
/* Capture compare 1 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET)
800b194: 687b ldr r3, [r7, #4]
800b196: 681b ldr r3, [r3, #0]
800b198: 691b ldr r3, [r3, #16]
800b19a: f003 0302 and.w r3, r3, #2
800b19e: 2b02 cmp r3, #2
800b1a0: d122 bne.n 800b1e8 <HAL_TIM_IRQHandler+0x5c>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET)
800b1a2: 687b ldr r3, [r7, #4]
800b1a4: 681b ldr r3, [r3, #0]
800b1a6: 68db ldr r3, [r3, #12]
800b1a8: f003 0302 and.w r3, r3, #2
800b1ac: 2b02 cmp r3, #2
800b1ae: d11b bne.n 800b1e8 <HAL_TIM_IRQHandler+0x5c>
{
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
800b1b0: 687b ldr r3, [r7, #4]
800b1b2: 681b ldr r3, [r3, #0]
800b1b4: f06f 0202 mvn.w r2, #2
800b1b8: 611a str r2, [r3, #16]
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
800b1ba: 687b ldr r3, [r7, #4]
800b1bc: 2201 movs r2, #1
800b1be: 771a strb r2, [r3, #28]
/* Input capture event */
if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U)
800b1c0: 687b ldr r3, [r7, #4]
800b1c2: 681b ldr r3, [r3, #0]
800b1c4: 699b ldr r3, [r3, #24]
800b1c6: f003 0303 and.w r3, r3, #3
800b1ca: 2b00 cmp r3, #0
800b1cc: d003 beq.n 800b1d6 <HAL_TIM_IRQHandler+0x4a>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
HAL_TIM_IC_CaptureCallback(htim);
800b1ce: 6878 ldr r0, [r7, #4]
800b1d0: f000 f905 bl 800b3de <HAL_TIM_IC_CaptureCallback>
800b1d4: e005 b.n 800b1e2 <HAL_TIM_IRQHandler+0x56>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
800b1d6: 6878 ldr r0, [r7, #4]
800b1d8: f000 f8f7 bl 800b3ca <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
800b1dc: 6878 ldr r0, [r7, #4]
800b1de: f000 f908 bl 800b3f2 <HAL_TIM_PWM_PulseFinishedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
800b1e2: 687b ldr r3, [r7, #4]
800b1e4: 2200 movs r2, #0
800b1e6: 771a strb r2, [r3, #28]
}
}
}
/* Capture compare 2 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET)
800b1e8: 687b ldr r3, [r7, #4]
800b1ea: 681b ldr r3, [r3, #0]
800b1ec: 691b ldr r3, [r3, #16]
800b1ee: f003 0304 and.w r3, r3, #4
800b1f2: 2b04 cmp r3, #4
800b1f4: d122 bne.n 800b23c <HAL_TIM_IRQHandler+0xb0>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET)
800b1f6: 687b ldr r3, [r7, #4]
800b1f8: 681b ldr r3, [r3, #0]
800b1fa: 68db ldr r3, [r3, #12]
800b1fc: f003 0304 and.w r3, r3, #4
800b200: 2b04 cmp r3, #4
800b202: d11b bne.n 800b23c <HAL_TIM_IRQHandler+0xb0>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);
800b204: 687b ldr r3, [r7, #4]
800b206: 681b ldr r3, [r3, #0]
800b208: f06f 0204 mvn.w r2, #4
800b20c: 611a str r2, [r3, #16]
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
800b20e: 687b ldr r3, [r7, #4]
800b210: 2202 movs r2, #2
800b212: 771a strb r2, [r3, #28]
/* Input capture event */
if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U)
800b214: 687b ldr r3, [r7, #4]
800b216: 681b ldr r3, [r3, #0]
800b218: 699b ldr r3, [r3, #24]
800b21a: f403 7340 and.w r3, r3, #768 ; 0x300
800b21e: 2b00 cmp r3, #0
800b220: d003 beq.n 800b22a <HAL_TIM_IRQHandler+0x9e>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
HAL_TIM_IC_CaptureCallback(htim);
800b222: 6878 ldr r0, [r7, #4]
800b224: f000 f8db bl 800b3de <HAL_TIM_IC_CaptureCallback>
800b228: e005 b.n 800b236 <HAL_TIM_IRQHandler+0xaa>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
800b22a: 6878 ldr r0, [r7, #4]
800b22c: f000 f8cd bl 800b3ca <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
800b230: 6878 ldr r0, [r7, #4]
800b232: f000 f8de bl 800b3f2 <HAL_TIM_PWM_PulseFinishedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
800b236: 687b ldr r3, [r7, #4]
800b238: 2200 movs r2, #0
800b23a: 771a strb r2, [r3, #28]
}
}
/* Capture compare 3 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET)
800b23c: 687b ldr r3, [r7, #4]
800b23e: 681b ldr r3, [r3, #0]
800b240: 691b ldr r3, [r3, #16]
800b242: f003 0308 and.w r3, r3, #8
800b246: 2b08 cmp r3, #8
800b248: d122 bne.n 800b290 <HAL_TIM_IRQHandler+0x104>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET)
800b24a: 687b ldr r3, [r7, #4]
800b24c: 681b ldr r3, [r3, #0]
800b24e: 68db ldr r3, [r3, #12]
800b250: f003 0308 and.w r3, r3, #8
800b254: 2b08 cmp r3, #8
800b256: d11b bne.n 800b290 <HAL_TIM_IRQHandler+0x104>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);
800b258: 687b ldr r3, [r7, #4]
800b25a: 681b ldr r3, [r3, #0]
800b25c: f06f 0208 mvn.w r2, #8
800b260: 611a str r2, [r3, #16]
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
800b262: 687b ldr r3, [r7, #4]
800b264: 2204 movs r2, #4
800b266: 771a strb r2, [r3, #28]
/* Input capture event */
if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U)
800b268: 687b ldr r3, [r7, #4]
800b26a: 681b ldr r3, [r3, #0]
800b26c: 69db ldr r3, [r3, #28]
800b26e: f003 0303 and.w r3, r3, #3
800b272: 2b00 cmp r3, #0
800b274: d003 beq.n 800b27e <HAL_TIM_IRQHandler+0xf2>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
HAL_TIM_IC_CaptureCallback(htim);
800b276: 6878 ldr r0, [r7, #4]
800b278: f000 f8b1 bl 800b3de <HAL_TIM_IC_CaptureCallback>
800b27c: e005 b.n 800b28a <HAL_TIM_IRQHandler+0xfe>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
800b27e: 6878 ldr r0, [r7, #4]
800b280: f000 f8a3 bl 800b3ca <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
800b284: 6878 ldr r0, [r7, #4]
800b286: f000 f8b4 bl 800b3f2 <HAL_TIM_PWM_PulseFinishedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
800b28a: 687b ldr r3, [r7, #4]
800b28c: 2200 movs r2, #0
800b28e: 771a strb r2, [r3, #28]
}
}
/* Capture compare 4 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)
800b290: 687b ldr r3, [r7, #4]
800b292: 681b ldr r3, [r3, #0]
800b294: 691b ldr r3, [r3, #16]
800b296: f003 0310 and.w r3, r3, #16
800b29a: 2b10 cmp r3, #16
800b29c: d122 bne.n 800b2e4 <HAL_TIM_IRQHandler+0x158>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET)
800b29e: 687b ldr r3, [r7, #4]
800b2a0: 681b ldr r3, [r3, #0]
800b2a2: 68db ldr r3, [r3, #12]
800b2a4: f003 0310 and.w r3, r3, #16
800b2a8: 2b10 cmp r3, #16
800b2aa: d11b bne.n 800b2e4 <HAL_TIM_IRQHandler+0x158>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);
800b2ac: 687b ldr r3, [r7, #4]
800b2ae: 681b ldr r3, [r3, #0]
800b2b0: f06f 0210 mvn.w r2, #16
800b2b4: 611a str r2, [r3, #16]
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
800b2b6: 687b ldr r3, [r7, #4]
800b2b8: 2208 movs r2, #8
800b2ba: 771a strb r2, [r3, #28]
/* Input capture event */
if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U)
800b2bc: 687b ldr r3, [r7, #4]
800b2be: 681b ldr r3, [r3, #0]
800b2c0: 69db ldr r3, [r3, #28]
800b2c2: f403 7340 and.w r3, r3, #768 ; 0x300
800b2c6: 2b00 cmp r3, #0
800b2c8: d003 beq.n 800b2d2 <HAL_TIM_IRQHandler+0x146>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
HAL_TIM_IC_CaptureCallback(htim);
800b2ca: 6878 ldr r0, [r7, #4]
800b2cc: f000 f887 bl 800b3de <HAL_TIM_IC_CaptureCallback>
800b2d0: e005 b.n 800b2de <HAL_TIM_IRQHandler+0x152>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
800b2d2: 6878 ldr r0, [r7, #4]
800b2d4: f000 f879 bl 800b3ca <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
800b2d8: 6878 ldr r0, [r7, #4]
800b2da: f000 f88a bl 800b3f2 <HAL_TIM_PWM_PulseFinishedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
800b2de: 687b ldr r3, [r7, #4]
800b2e0: 2200 movs r2, #0
800b2e2: 771a strb r2, [r3, #28]
}
}
/* TIM Update event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
800b2e4: 687b ldr r3, [r7, #4]
800b2e6: 681b ldr r3, [r3, #0]
800b2e8: 691b ldr r3, [r3, #16]
800b2ea: f003 0301 and.w r3, r3, #1
800b2ee: 2b01 cmp r3, #1
800b2f0: d10e bne.n 800b310 <HAL_TIM_IRQHandler+0x184>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET)
800b2f2: 687b ldr r3, [r7, #4]
800b2f4: 681b ldr r3, [r3, #0]
800b2f6: 68db ldr r3, [r3, #12]
800b2f8: f003 0301 and.w r3, r3, #1
800b2fc: 2b01 cmp r3, #1
800b2fe: d107 bne.n 800b310 <HAL_TIM_IRQHandler+0x184>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
800b300: 687b ldr r3, [r7, #4]
800b302: 681b ldr r3, [r3, #0]
800b304: f06f 0201 mvn.w r2, #1
800b308: 611a str r2, [r3, #16]
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->PeriodElapsedCallback(htim);
#else
HAL_TIM_PeriodElapsedCallback(htim);
800b30a: 6878 ldr r0, [r7, #4]
800b30c: f7fc f876 bl 80073fc <HAL_TIM_PeriodElapsedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
}
/* TIM Break input event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET)
800b310: 687b ldr r3, [r7, #4]
800b312: 681b ldr r3, [r3, #0]
800b314: 691b ldr r3, [r3, #16]
800b316: f003 0380 and.w r3, r3, #128 ; 0x80
800b31a: 2b80 cmp r3, #128 ; 0x80
800b31c: d10e bne.n 800b33c <HAL_TIM_IRQHandler+0x1b0>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)
800b31e: 687b ldr r3, [r7, #4]
800b320: 681b ldr r3, [r3, #0]
800b322: 68db ldr r3, [r3, #12]
800b324: f003 0380 and.w r3, r3, #128 ; 0x80
800b328: 2b80 cmp r3, #128 ; 0x80
800b32a: d107 bne.n 800b33c <HAL_TIM_IRQHandler+0x1b0>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK);
800b32c: 687b ldr r3, [r7, #4]
800b32e: 681b ldr r3, [r3, #0]
800b330: f06f 0280 mvn.w r2, #128 ; 0x80
800b334: 611a str r2, [r3, #16]
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->BreakCallback(htim);
#else
HAL_TIMEx_BreakCallback(htim);
800b336: 6878 ldr r0, [r7, #4]
800b338: f000 f9a8 bl 800b68c <HAL_TIMEx_BreakCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
}
/* TIM Break2 input event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK2) != RESET)
800b33c: 687b ldr r3, [r7, #4]
800b33e: 681b ldr r3, [r3, #0]
800b340: 691b ldr r3, [r3, #16]
800b342: f403 7380 and.w r3, r3, #256 ; 0x100
800b346: f5b3 7f80 cmp.w r3, #256 ; 0x100
800b34a: d10e bne.n 800b36a <HAL_TIM_IRQHandler+0x1de>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)
800b34c: 687b ldr r3, [r7, #4]
800b34e: 681b ldr r3, [r3, #0]
800b350: 68db ldr r3, [r3, #12]
800b352: f003 0380 and.w r3, r3, #128 ; 0x80
800b356: 2b80 cmp r3, #128 ; 0x80
800b358: d107 bne.n 800b36a <HAL_TIM_IRQHandler+0x1de>
{
__HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2);
800b35a: 687b ldr r3, [r7, #4]
800b35c: 681b ldr r3, [r3, #0]
800b35e: f46f 7280 mvn.w r2, #256 ; 0x100
800b362: 611a str r2, [r3, #16]
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->Break2Callback(htim);
#else
HAL_TIMEx_Break2Callback(htim);
800b364: 6878 ldr r0, [r7, #4]
800b366: f000 f99b bl 800b6a0 <HAL_TIMEx_Break2Callback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
}
/* TIM Trigger detection event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET)
800b36a: 687b ldr r3, [r7, #4]
800b36c: 681b ldr r3, [r3, #0]
800b36e: 691b ldr r3, [r3, #16]
800b370: f003 0340 and.w r3, r3, #64 ; 0x40
800b374: 2b40 cmp r3, #64 ; 0x40
800b376: d10e bne.n 800b396 <HAL_TIM_IRQHandler+0x20a>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET)
800b378: 687b ldr r3, [r7, #4]
800b37a: 681b ldr r3, [r3, #0]
800b37c: 68db ldr r3, [r3, #12]
800b37e: f003 0340 and.w r3, r3, #64 ; 0x40
800b382: 2b40 cmp r3, #64 ; 0x40
800b384: d107 bne.n 800b396 <HAL_TIM_IRQHandler+0x20a>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER);
800b386: 687b ldr r3, [r7, #4]
800b388: 681b ldr r3, [r3, #0]
800b38a: f06f 0240 mvn.w r2, #64 ; 0x40
800b38e: 611a str r2, [r3, #16]
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->TriggerCallback(htim);
#else
HAL_TIM_TriggerCallback(htim);
800b390: 6878 ldr r0, [r7, #4]
800b392: f000 f838 bl 800b406 <HAL_TIM_TriggerCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
}
/* TIM commutation event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET)
800b396: 687b ldr r3, [r7, #4]
800b398: 681b ldr r3, [r3, #0]
800b39a: 691b ldr r3, [r3, #16]
800b39c: f003 0320 and.w r3, r3, #32
800b3a0: 2b20 cmp r3, #32
800b3a2: d10e bne.n 800b3c2 <HAL_TIM_IRQHandler+0x236>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET)
800b3a4: 687b ldr r3, [r7, #4]
800b3a6: 681b ldr r3, [r3, #0]
800b3a8: 68db ldr r3, [r3, #12]
800b3aa: f003 0320 and.w r3, r3, #32
800b3ae: 2b20 cmp r3, #32
800b3b0: d107 bne.n 800b3c2 <HAL_TIM_IRQHandler+0x236>
{
__HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM);
800b3b2: 687b ldr r3, [r7, #4]
800b3b4: 681b ldr r3, [r3, #0]
800b3b6: f06f 0220 mvn.w r2, #32
800b3ba: 611a str r2, [r3, #16]
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->CommutationCallback(htim);
#else
HAL_TIMEx_CommutCallback(htim);
800b3bc: 6878 ldr r0, [r7, #4]
800b3be: f000 f95b bl 800b678 <HAL_TIMEx_CommutCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
}
}
800b3c2: bf00 nop
800b3c4: 3708 adds r7, #8
800b3c6: 46bd mov sp, r7
800b3c8: bd80 pop {r7, pc}
0800b3ca <HAL_TIM_OC_DelayElapsedCallback>:
* @brief Output Compare callback in non-blocking mode
* @param htim TIM OC handle
* @retval None
*/
__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{
800b3ca: b480 push {r7}
800b3cc: b083 sub sp, #12
800b3ce: af00 add r7, sp, #0
800b3d0: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file
*/
}
800b3d2: bf00 nop
800b3d4: 370c adds r7, #12
800b3d6: 46bd mov sp, r7
800b3d8: f85d 7b04 ldr.w r7, [sp], #4
800b3dc: 4770 bx lr
0800b3de <HAL_TIM_IC_CaptureCallback>:
* @brief Input Capture callback in non-blocking mode
* @param htim TIM IC handle
* @retval None
*/
__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
800b3de: b480 push {r7}
800b3e0: b083 sub sp, #12
800b3e2: af00 add r7, sp, #0
800b3e4: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_IC_CaptureCallback could be implemented in the user file
*/
}
800b3e6: bf00 nop
800b3e8: 370c adds r7, #12
800b3ea: 46bd mov sp, r7
800b3ec: f85d 7b04 ldr.w r7, [sp], #4
800b3f0: 4770 bx lr
0800b3f2 <HAL_TIM_PWM_PulseFinishedCallback>:
* @brief PWM Pulse finished callback in non-blocking mode
* @param htim TIM handle
* @retval None
*/
__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
800b3f2: b480 push {r7}
800b3f4: b083 sub sp, #12
800b3f6: af00 add r7, sp, #0
800b3f8: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file
*/
}
800b3fa: bf00 nop
800b3fc: 370c adds r7, #12
800b3fe: 46bd mov sp, r7
800b400: f85d 7b04 ldr.w r7, [sp], #4
800b404: 4770 bx lr
0800b406 <HAL_TIM_TriggerCallback>:
* @brief Hall Trigger detection callback in non-blocking mode
* @param htim TIM handle
* @retval None
*/
__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)
{
800b406: b480 push {r7}
800b408: b083 sub sp, #12
800b40a: af00 add r7, sp, #0
800b40c: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_TriggerCallback could be implemented in the user file
*/
}
800b40e: bf00 nop
800b410: 370c adds r7, #12
800b412: 46bd mov sp, r7
800b414: f85d 7b04 ldr.w r7, [sp], #4
800b418: 4770 bx lr
...
0800b41c <TIM_Base_SetConfig>:
* @param TIMx TIM peripheral
* @param Structure TIM Base configuration structure
* @retval None
*/
void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)
{
800b41c: b480 push {r7}
800b41e: b085 sub sp, #20
800b420: af00 add r7, sp, #0
800b422: 6078 str r0, [r7, #4]
800b424: 6039 str r1, [r7, #0]
uint32_t tmpcr1;
tmpcr1 = TIMx->CR1;
800b426: 687b ldr r3, [r7, #4]
800b428: 681b ldr r3, [r3, #0]
800b42a: 60fb str r3, [r7, #12]
/* Set TIM Time Base Unit parameters ---------------------------------------*/
if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
800b42c: 687b ldr r3, [r7, #4]
800b42e: 4a40 ldr r2, [pc, #256] ; (800b530 <TIM_Base_SetConfig+0x114>)
800b430: 4293 cmp r3, r2
800b432: d013 beq.n 800b45c <TIM_Base_SetConfig+0x40>
800b434: 687b ldr r3, [r7, #4]
800b436: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
800b43a: d00f beq.n 800b45c <TIM_Base_SetConfig+0x40>
800b43c: 687b ldr r3, [r7, #4]
800b43e: 4a3d ldr r2, [pc, #244] ; (800b534 <TIM_Base_SetConfig+0x118>)
800b440: 4293 cmp r3, r2
800b442: d00b beq.n 800b45c <TIM_Base_SetConfig+0x40>
800b444: 687b ldr r3, [r7, #4]
800b446: 4a3c ldr r2, [pc, #240] ; (800b538 <TIM_Base_SetConfig+0x11c>)
800b448: 4293 cmp r3, r2
800b44a: d007 beq.n 800b45c <TIM_Base_SetConfig+0x40>
800b44c: 687b ldr r3, [r7, #4]
800b44e: 4a3b ldr r2, [pc, #236] ; (800b53c <TIM_Base_SetConfig+0x120>)
800b450: 4293 cmp r3, r2
800b452: d003 beq.n 800b45c <TIM_Base_SetConfig+0x40>
800b454: 687b ldr r3, [r7, #4]
800b456: 4a3a ldr r2, [pc, #232] ; (800b540 <TIM_Base_SetConfig+0x124>)
800b458: 4293 cmp r3, r2
800b45a: d108 bne.n 800b46e <TIM_Base_SetConfig+0x52>
{
/* Select the Counter Mode */
tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
800b45c: 68fb ldr r3, [r7, #12]
800b45e: f023 0370 bic.w r3, r3, #112 ; 0x70
800b462: 60fb str r3, [r7, #12]
tmpcr1 |= Structure->CounterMode;
800b464: 683b ldr r3, [r7, #0]
800b466: 685b ldr r3, [r3, #4]
800b468: 68fa ldr r2, [r7, #12]
800b46a: 4313 orrs r3, r2
800b46c: 60fb str r3, [r7, #12]
}
if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))
800b46e: 687b ldr r3, [r7, #4]
800b470: 4a2f ldr r2, [pc, #188] ; (800b530 <TIM_Base_SetConfig+0x114>)
800b472: 4293 cmp r3, r2
800b474: d02b beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b476: 687b ldr r3, [r7, #4]
800b478: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
800b47c: d027 beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b47e: 687b ldr r3, [r7, #4]
800b480: 4a2c ldr r2, [pc, #176] ; (800b534 <TIM_Base_SetConfig+0x118>)
800b482: 4293 cmp r3, r2
800b484: d023 beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b486: 687b ldr r3, [r7, #4]
800b488: 4a2b ldr r2, [pc, #172] ; (800b538 <TIM_Base_SetConfig+0x11c>)
800b48a: 4293 cmp r3, r2
800b48c: d01f beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b48e: 687b ldr r3, [r7, #4]
800b490: 4a2a ldr r2, [pc, #168] ; (800b53c <TIM_Base_SetConfig+0x120>)
800b492: 4293 cmp r3, r2
800b494: d01b beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b496: 687b ldr r3, [r7, #4]
800b498: 4a29 ldr r2, [pc, #164] ; (800b540 <TIM_Base_SetConfig+0x124>)
800b49a: 4293 cmp r3, r2
800b49c: d017 beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b49e: 687b ldr r3, [r7, #4]
800b4a0: 4a28 ldr r2, [pc, #160] ; (800b544 <TIM_Base_SetConfig+0x128>)
800b4a2: 4293 cmp r3, r2
800b4a4: d013 beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b4a6: 687b ldr r3, [r7, #4]
800b4a8: 4a27 ldr r2, [pc, #156] ; (800b548 <TIM_Base_SetConfig+0x12c>)
800b4aa: 4293 cmp r3, r2
800b4ac: d00f beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b4ae: 687b ldr r3, [r7, #4]
800b4b0: 4a26 ldr r2, [pc, #152] ; (800b54c <TIM_Base_SetConfig+0x130>)
800b4b2: 4293 cmp r3, r2
800b4b4: d00b beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b4b6: 687b ldr r3, [r7, #4]
800b4b8: 4a25 ldr r2, [pc, #148] ; (800b550 <TIM_Base_SetConfig+0x134>)
800b4ba: 4293 cmp r3, r2
800b4bc: d007 beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b4be: 687b ldr r3, [r7, #4]
800b4c0: 4a24 ldr r2, [pc, #144] ; (800b554 <TIM_Base_SetConfig+0x138>)
800b4c2: 4293 cmp r3, r2
800b4c4: d003 beq.n 800b4ce <TIM_Base_SetConfig+0xb2>
800b4c6: 687b ldr r3, [r7, #4]
800b4c8: 4a23 ldr r2, [pc, #140] ; (800b558 <TIM_Base_SetConfig+0x13c>)
800b4ca: 4293 cmp r3, r2
800b4cc: d108 bne.n 800b4e0 <TIM_Base_SetConfig+0xc4>
{
/* Set the clock division */
tmpcr1 &= ~TIM_CR1_CKD;
800b4ce: 68fb ldr r3, [r7, #12]
800b4d0: f423 7340 bic.w r3, r3, #768 ; 0x300
800b4d4: 60fb str r3, [r7, #12]
tmpcr1 |= (uint32_t)Structure->ClockDivision;
800b4d6: 683b ldr r3, [r7, #0]
800b4d8: 68db ldr r3, [r3, #12]
800b4da: 68fa ldr r2, [r7, #12]
800b4dc: 4313 orrs r3, r2
800b4de: 60fb str r3, [r7, #12]
}
/* Set the auto-reload preload */
MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
800b4e0: 68fb ldr r3, [r7, #12]
800b4e2: f023 0280 bic.w r2, r3, #128 ; 0x80
800b4e6: 683b ldr r3, [r7, #0]
800b4e8: 695b ldr r3, [r3, #20]
800b4ea: 4313 orrs r3, r2
800b4ec: 60fb str r3, [r7, #12]
TIMx->CR1 = tmpcr1;
800b4ee: 687b ldr r3, [r7, #4]
800b4f0: 68fa ldr r2, [r7, #12]
800b4f2: 601a str r2, [r3, #0]
/* Set the Autoreload value */
TIMx->ARR = (uint32_t)Structure->Period ;
800b4f4: 683b ldr r3, [r7, #0]
800b4f6: 689a ldr r2, [r3, #8]
800b4f8: 687b ldr r3, [r7, #4]
800b4fa: 62da str r2, [r3, #44] ; 0x2c
/* Set the Prescaler value */
TIMx->PSC = Structure->Prescaler;
800b4fc: 683b ldr r3, [r7, #0]
800b4fe: 681a ldr r2, [r3, #0]
800b500: 687b ldr r3, [r7, #4]
800b502: 629a str r2, [r3, #40] ; 0x28
if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
800b504: 687b ldr r3, [r7, #4]
800b506: 4a0a ldr r2, [pc, #40] ; (800b530 <TIM_Base_SetConfig+0x114>)
800b508: 4293 cmp r3, r2
800b50a: d003 beq.n 800b514 <TIM_Base_SetConfig+0xf8>
800b50c: 687b ldr r3, [r7, #4]
800b50e: 4a0c ldr r2, [pc, #48] ; (800b540 <TIM_Base_SetConfig+0x124>)
800b510: 4293 cmp r3, r2
800b512: d103 bne.n 800b51c <TIM_Base_SetConfig+0x100>
{
/* Set the Repetition Counter value */
TIMx->RCR = Structure->RepetitionCounter;
800b514: 683b ldr r3, [r7, #0]
800b516: 691a ldr r2, [r3, #16]
800b518: 687b ldr r3, [r7, #4]
800b51a: 631a str r2, [r3, #48] ; 0x30
}
/* Generate an update event to reload the Prescaler
and the repetition counter (only for advanced timer) value immediately */
TIMx->EGR = TIM_EGR_UG;
800b51c: 687b ldr r3, [r7, #4]
800b51e: 2201 movs r2, #1
800b520: 615a str r2, [r3, #20]
}
800b522: bf00 nop
800b524: 3714 adds r7, #20
800b526: 46bd mov sp, r7
800b528: f85d 7b04 ldr.w r7, [sp], #4
800b52c: 4770 bx lr
800b52e: bf00 nop
800b530: 40010000 .word 0x40010000
800b534: 40000400 .word 0x40000400
800b538: 40000800 .word 0x40000800
800b53c: 40000c00 .word 0x40000c00
800b540: 40010400 .word 0x40010400
800b544: 40014000 .word 0x40014000
800b548: 40014400 .word 0x40014400
800b54c: 40014800 .word 0x40014800
800b550: 40001800 .word 0x40001800
800b554: 40001c00 .word 0x40001c00
800b558: 40002000 .word 0x40002000
0800b55c <HAL_TIMEx_MasterConfigSynchronization>:
* mode.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
TIM_MasterConfigTypeDef *sMasterConfig)
{
800b55c: b480 push {r7}
800b55e: b085 sub sp, #20
800b560: af00 add r7, sp, #0
800b562: 6078 str r0, [r7, #4]
800b564: 6039 str r1, [r7, #0]
assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
/* Check input state */
__HAL_LOCK(htim);
800b566: 687b ldr r3, [r7, #4]
800b568: f893 303c ldrb.w r3, [r3, #60] ; 0x3c
800b56c: 2b01 cmp r3, #1
800b56e: d101 bne.n 800b574 <HAL_TIMEx_MasterConfigSynchronization+0x18>
800b570: 2302 movs r3, #2
800b572: e06d b.n 800b650 <HAL_TIMEx_MasterConfigSynchronization+0xf4>
800b574: 687b ldr r3, [r7, #4]
800b576: 2201 movs r2, #1
800b578: f883 203c strb.w r2, [r3, #60] ; 0x3c
/* Change the handler state */
htim->State = HAL_TIM_STATE_BUSY;
800b57c: 687b ldr r3, [r7, #4]
800b57e: 2202 movs r2, #2
800b580: f883 203d strb.w r2, [r3, #61] ; 0x3d
/* Get the TIMx CR2 register value */
tmpcr2 = htim->Instance->CR2;
800b584: 687b ldr r3, [r7, #4]
800b586: 681b ldr r3, [r3, #0]
800b588: 685b ldr r3, [r3, #4]
800b58a: 60fb str r3, [r7, #12]
/* Get the TIMx SMCR register value */
tmpsmcr = htim->Instance->SMCR;
800b58c: 687b ldr r3, [r7, #4]
800b58e: 681b ldr r3, [r3, #0]
800b590: 689b ldr r3, [r3, #8]
800b592: 60bb str r3, [r7, #8]
/* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */
if (IS_TIM_TRGO2_INSTANCE(htim->Instance))
800b594: 687b ldr r3, [r7, #4]
800b596: 681b ldr r3, [r3, #0]
800b598: 4a30 ldr r2, [pc, #192] ; (800b65c <HAL_TIMEx_MasterConfigSynchronization+0x100>)
800b59a: 4293 cmp r3, r2
800b59c: d004 beq.n 800b5a8 <HAL_TIMEx_MasterConfigSynchronization+0x4c>
800b59e: 687b ldr r3, [r7, #4]
800b5a0: 681b ldr r3, [r3, #0]
800b5a2: 4a2f ldr r2, [pc, #188] ; (800b660 <HAL_TIMEx_MasterConfigSynchronization+0x104>)
800b5a4: 4293 cmp r3, r2
800b5a6: d108 bne.n 800b5ba <HAL_TIMEx_MasterConfigSynchronization+0x5e>
{
/* Check the parameters */
assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2));
/* Clear the MMS2 bits */
tmpcr2 &= ~TIM_CR2_MMS2;
800b5a8: 68fb ldr r3, [r7, #12]
800b5aa: f423 0370 bic.w r3, r3, #15728640 ; 0xf00000
800b5ae: 60fb str r3, [r7, #12]
/* Select the TRGO2 source*/
tmpcr2 |= sMasterConfig->MasterOutputTrigger2;
800b5b0: 683b ldr r3, [r7, #0]
800b5b2: 685b ldr r3, [r3, #4]
800b5b4: 68fa ldr r2, [r7, #12]
800b5b6: 4313 orrs r3, r2
800b5b8: 60fb str r3, [r7, #12]
}
/* Reset the MMS Bits */
tmpcr2 &= ~TIM_CR2_MMS;
800b5ba: 68fb ldr r3, [r7, #12]
800b5bc: f023 0370 bic.w r3, r3, #112 ; 0x70
800b5c0: 60fb str r3, [r7, #12]
/* Select the TRGO source */
tmpcr2 |= sMasterConfig->MasterOutputTrigger;
800b5c2: 683b ldr r3, [r7, #0]
800b5c4: 681b ldr r3, [r3, #0]
800b5c6: 68fa ldr r2, [r7, #12]
800b5c8: 4313 orrs r3, r2
800b5ca: 60fb str r3, [r7, #12]
/* Update TIMx CR2 */
htim->Instance->CR2 = tmpcr2;
800b5cc: 687b ldr r3, [r7, #4]
800b5ce: 681b ldr r3, [r3, #0]
800b5d0: 68fa ldr r2, [r7, #12]
800b5d2: 605a str r2, [r3, #4]
if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
800b5d4: 687b ldr r3, [r7, #4]
800b5d6: 681b ldr r3, [r3, #0]
800b5d8: 4a20 ldr r2, [pc, #128] ; (800b65c <HAL_TIMEx_MasterConfigSynchronization+0x100>)
800b5da: 4293 cmp r3, r2
800b5dc: d022 beq.n 800b624 <HAL_TIMEx_MasterConfigSynchronization+0xc8>
800b5de: 687b ldr r3, [r7, #4]
800b5e0: 681b ldr r3, [r3, #0]
800b5e2: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
800b5e6: d01d beq.n 800b624 <HAL_TIMEx_MasterConfigSynchronization+0xc8>
800b5e8: 687b ldr r3, [r7, #4]
800b5ea: 681b ldr r3, [r3, #0]
800b5ec: 4a1d ldr r2, [pc, #116] ; (800b664 <HAL_TIMEx_MasterConfigSynchronization+0x108>)
800b5ee: 4293 cmp r3, r2
800b5f0: d018 beq.n 800b624 <HAL_TIMEx_MasterConfigSynchronization+0xc8>
800b5f2: 687b ldr r3, [r7, #4]
800b5f4: 681b ldr r3, [r3, #0]
800b5f6: 4a1c ldr r2, [pc, #112] ; (800b668 <HAL_TIMEx_MasterConfigSynchronization+0x10c>)
800b5f8: 4293 cmp r3, r2
800b5fa: d013 beq.n 800b624 <HAL_TIMEx_MasterConfigSynchronization+0xc8>
800b5fc: 687b ldr r3, [r7, #4]
800b5fe: 681b ldr r3, [r3, #0]
800b600: 4a1a ldr r2, [pc, #104] ; (800b66c <HAL_TIMEx_MasterConfigSynchronization+0x110>)
800b602: 4293 cmp r3, r2
800b604: d00e beq.n 800b624 <HAL_TIMEx_MasterConfigSynchronization+0xc8>
800b606: 687b ldr r3, [r7, #4]
800b608: 681b ldr r3, [r3, #0]
800b60a: 4a15 ldr r2, [pc, #84] ; (800b660 <HAL_TIMEx_MasterConfigSynchronization+0x104>)
800b60c: 4293 cmp r3, r2
800b60e: d009 beq.n 800b624 <HAL_TIMEx_MasterConfigSynchronization+0xc8>
800b610: 687b ldr r3, [r7, #4]
800b612: 681b ldr r3, [r3, #0]
800b614: 4a16 ldr r2, [pc, #88] ; (800b670 <HAL_TIMEx_MasterConfigSynchronization+0x114>)
800b616: 4293 cmp r3, r2
800b618: d004 beq.n 800b624 <HAL_TIMEx_MasterConfigSynchronization+0xc8>
800b61a: 687b ldr r3, [r7, #4]
800b61c: 681b ldr r3, [r3, #0]
800b61e: 4a15 ldr r2, [pc, #84] ; (800b674 <HAL_TIMEx_MasterConfigSynchronization+0x118>)
800b620: 4293 cmp r3, r2
800b622: d10c bne.n 800b63e <HAL_TIMEx_MasterConfigSynchronization+0xe2>
{
/* Reset the MSM Bit */
tmpsmcr &= ~TIM_SMCR_MSM;
800b624: 68bb ldr r3, [r7, #8]
800b626: f023 0380 bic.w r3, r3, #128 ; 0x80
800b62a: 60bb str r3, [r7, #8]
/* Set master mode */
tmpsmcr |= sMasterConfig->MasterSlaveMode;
800b62c: 683b ldr r3, [r7, #0]
800b62e: 689b ldr r3, [r3, #8]
800b630: 68ba ldr r2, [r7, #8]
800b632: 4313 orrs r3, r2
800b634: 60bb str r3, [r7, #8]
/* Update TIMx SMCR */
htim->Instance->SMCR = tmpsmcr;
800b636: 687b ldr r3, [r7, #4]
800b638: 681b ldr r3, [r3, #0]
800b63a: 68ba ldr r2, [r7, #8]
800b63c: 609a str r2, [r3, #8]
}
/* Change the htim state */
htim->State = HAL_TIM_STATE_READY;
800b63e: 687b ldr r3, [r7, #4]
800b640: 2201 movs r2, #1
800b642: f883 203d strb.w r2, [r3, #61] ; 0x3d
__HAL_UNLOCK(htim);
800b646: 687b ldr r3, [r7, #4]
800b648: 2200 movs r2, #0
800b64a: f883 203c strb.w r2, [r3, #60] ; 0x3c
return HAL_OK;
800b64e: 2300 movs r3, #0
}
800b650: 4618 mov r0, r3
800b652: 3714 adds r7, #20
800b654: 46bd mov sp, r7
800b656: f85d 7b04 ldr.w r7, [sp], #4
800b65a: 4770 bx lr
800b65c: 40010000 .word 0x40010000
800b660: 40010400 .word 0x40010400
800b664: 40000400 .word 0x40000400
800b668: 40000800 .word 0x40000800
800b66c: 40000c00 .word 0x40000c00
800b670: 40014000 .word 0x40014000
800b674: 40001800 .word 0x40001800
0800b678 <HAL_TIMEx_CommutCallback>:
* @brief Hall commutation changed callback in non-blocking mode
* @param htim TIM handle
* @retval None
*/
__weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim)
{
800b678: b480 push {r7}
800b67a: b083 sub sp, #12
800b67c: af00 add r7, sp, #0
800b67e: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIMEx_CommutCallback could be implemented in the user file
*/
}
800b680: bf00 nop
800b682: 370c adds r7, #12
800b684: 46bd mov sp, r7
800b686: f85d 7b04 ldr.w r7, [sp], #4
800b68a: 4770 bx lr
0800b68c <HAL_TIMEx_BreakCallback>:
* @brief Hall Break detection callback in non-blocking mode
* @param htim TIM handle
* @retval None
*/
__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim)
{
800b68c: b480 push {r7}
800b68e: b083 sub sp, #12
800b690: af00 add r7, sp, #0
800b692: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIMEx_BreakCallback could be implemented in the user file
*/
}
800b694: bf00 nop
800b696: 370c adds r7, #12
800b698: 46bd mov sp, r7
800b69a: f85d 7b04 ldr.w r7, [sp], #4
800b69e: 4770 bx lr
0800b6a0 <HAL_TIMEx_Break2Callback>:
* @brief Hall Break2 detection callback in non blocking mode
* @param htim: TIM handle
* @retval None
*/
__weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim)
{
800b6a0: b480 push {r7}
800b6a2: b083 sub sp, #12
800b6a4: af00 add r7, sp, #0
800b6a6: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function Should not be modified, when the callback is needed,
the HAL_TIMEx_Break2Callback could be implemented in the user file
*/
}
800b6a8: bf00 nop
800b6aa: 370c adds r7, #12
800b6ac: 46bd mov sp, r7
800b6ae: f85d 7b04 ldr.w r7, [sp], #4
800b6b2: 4770 bx lr
0800b6b4 <HAL_UART_Init>:
* parameters in the UART_InitTypeDef and initialize the associated handle.
* @param huart UART handle.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
{
800b6b4: b580 push {r7, lr}
800b6b6: b082 sub sp, #8
800b6b8: af00 add r7, sp, #0
800b6ba: 6078 str r0, [r7, #4]
/* Check the UART handle allocation */
if (huart == NULL)
800b6bc: 687b ldr r3, [r7, #4]
800b6be: 2b00 cmp r3, #0
800b6c0: d101 bne.n 800b6c6 <HAL_UART_Init+0x12>
{
return HAL_ERROR;
800b6c2: 2301 movs r3, #1
800b6c4: e040 b.n 800b748 <HAL_UART_Init+0x94>
{
/* Check the parameters */
assert_param(IS_UART_INSTANCE(huart->Instance));
}
if (huart->gState == HAL_UART_STATE_RESET)
800b6c6: 687b ldr r3, [r7, #4]
800b6c8: 6f9b ldr r3, [r3, #120] ; 0x78
800b6ca: 2b00 cmp r3, #0
800b6cc: d106 bne.n 800b6dc <HAL_UART_Init+0x28>
{
/* Allocate lock resource and initialize it */
huart->Lock = HAL_UNLOCKED;
800b6ce: 687b ldr r3, [r7, #4]
800b6d0: 2200 movs r2, #0
800b6d2: f883 2074 strb.w r2, [r3, #116] ; 0x74
/* Init the low level hardware */
huart->MspInitCallback(huart);
#else
/* Init the low level hardware : GPIO, CLOCK */
HAL_UART_MspInit(huart);
800b6d6: 6878 ldr r0, [r7, #4]
800b6d8: f7fb ffb0 bl 800763c <HAL_UART_MspInit>
#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
}
huart->gState = HAL_UART_STATE_BUSY;
800b6dc: 687b ldr r3, [r7, #4]
800b6de: 2224 movs r2, #36 ; 0x24
800b6e0: 679a str r2, [r3, #120] ; 0x78
__HAL_UART_DISABLE(huart);
800b6e2: 687b ldr r3, [r7, #4]
800b6e4: 681b ldr r3, [r3, #0]
800b6e6: 687a ldr r2, [r7, #4]
800b6e8: 6812 ldr r2, [r2, #0]
800b6ea: 6812 ldr r2, [r2, #0]
800b6ec: f022 0201 bic.w r2, r2, #1
800b6f0: 601a str r2, [r3, #0]
/* Set the UART Communication parameters */
if (UART_SetConfig(huart) == HAL_ERROR)
800b6f2: 6878 ldr r0, [r7, #4]
800b6f4: f000 fd90 bl 800c218 <UART_SetConfig>
800b6f8: 4603 mov r3, r0
800b6fa: 2b01 cmp r3, #1
800b6fc: d101 bne.n 800b702 <HAL_UART_Init+0x4e>
{
return HAL_ERROR;
800b6fe: 2301 movs r3, #1
800b700: e022 b.n 800b748 <HAL_UART_Init+0x94>
}
if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)
800b702: 687b ldr r3, [r7, #4]
800b704: 6a5b ldr r3, [r3, #36] ; 0x24
800b706: 2b00 cmp r3, #0
800b708: d002 beq.n 800b710 <HAL_UART_Init+0x5c>
{
UART_AdvFeatureConfig(huart);
800b70a: 6878 ldr r0, [r7, #4]
800b70c: f000 ffe4 bl 800c6d8 <UART_AdvFeatureConfig>
}
/* In asynchronous mode, the following bits must be kept cleared:
- LINEN and CLKEN bits in the USART_CR2 register,
- SCEN, HDSEL and IREN bits in the USART_CR3 register.*/
CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
800b710: 687b ldr r3, [r7, #4]
800b712: 681b ldr r3, [r3, #0]
800b714: 687a ldr r2, [r7, #4]
800b716: 6812 ldr r2, [r2, #0]
800b718: 6852 ldr r2, [r2, #4]
800b71a: f422 4290 bic.w r2, r2, #18432 ; 0x4800
800b71e: 605a str r2, [r3, #4]
CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
800b720: 687b ldr r3, [r7, #4]
800b722: 681b ldr r3, [r3, #0]
800b724: 687a ldr r2, [r7, #4]
800b726: 6812 ldr r2, [r2, #0]
800b728: 6892 ldr r2, [r2, #8]
800b72a: f022 022a bic.w r2, r2, #42 ; 0x2a
800b72e: 609a str r2, [r3, #8]
__HAL_UART_ENABLE(huart);
800b730: 687b ldr r3, [r7, #4]
800b732: 681b ldr r3, [r3, #0]
800b734: 687a ldr r2, [r7, #4]
800b736: 6812 ldr r2, [r2, #0]
800b738: 6812 ldr r2, [r2, #0]
800b73a: f042 0201 orr.w r2, r2, #1
800b73e: 601a str r2, [r3, #0]
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
return (UART_CheckIdleState(huart));
800b740: 6878 ldr r0, [r7, #4]
800b742: f001 f86b bl 800c81c <UART_CheckIdleState>
800b746: 4603 mov r3, r0
}
800b748: 4618 mov r0, r3
800b74a: 3708 adds r7, #8
800b74c: 46bd mov sp, r7
800b74e: bd80 pop {r7, pc}
0800b750 <HAL_UART_Receive>:
* @param Size Amount of data elements (u8 or u16) to be received.
* @param Timeout Timeout duration.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
{
800b750: b580 push {r7, lr}
800b752: b08a sub sp, #40 ; 0x28
800b754: af02 add r7, sp, #8
800b756: 60f8 str r0, [r7, #12]
800b758: 60b9 str r1, [r7, #8]
800b75a: 603b str r3, [r7, #0]
800b75c: 4613 mov r3, r2
800b75e: 80fb strh r3, [r7, #6]
uint16_t *pdata16bits;
uint16_t uhMask;
uint32_t tickstart;
/* Check that a Rx process is not already ongoing */
if (huart->RxState == HAL_UART_STATE_READY)
800b760: 68fb ldr r3, [r7, #12]
800b762: 6fdb ldr r3, [r3, #124] ; 0x7c
800b764: 2b20 cmp r3, #32
800b766: f040 80be bne.w 800b8e6 <HAL_UART_Receive+0x196>
{
if ((pData == NULL) || (Size == 0U))
800b76a: 68bb ldr r3, [r7, #8]
800b76c: 2b00 cmp r3, #0
800b76e: d002 beq.n 800b776 <HAL_UART_Receive+0x26>
800b770: 88fb ldrh r3, [r7, #6]
800b772: 2b00 cmp r3, #0
800b774: d101 bne.n 800b77a <HAL_UART_Receive+0x2a>
{
return HAL_ERROR;
800b776: 2301 movs r3, #1
800b778: e0b6 b.n 800b8e8 <HAL_UART_Receive+0x198>
}
__HAL_LOCK(huart);
800b77a: 68fb ldr r3, [r7, #12]
800b77c: f893 3074 ldrb.w r3, [r3, #116] ; 0x74
800b780: 2b01 cmp r3, #1
800b782: d101 bne.n 800b788 <HAL_UART_Receive+0x38>
800b784: 2302 movs r3, #2
800b786: e0af b.n 800b8e8 <HAL_UART_Receive+0x198>
800b788: 68fb ldr r3, [r7, #12]
800b78a: 2201 movs r2, #1
800b78c: f883 2074 strb.w r2, [r3, #116] ; 0x74
huart->ErrorCode = HAL_UART_ERROR_NONE;
800b790: 68fb ldr r3, [r7, #12]
800b792: 2200 movs r2, #0
800b794: f8c3 2080 str.w r2, [r3, #128] ; 0x80
huart->RxState = HAL_UART_STATE_BUSY_RX;
800b798: 68fb ldr r3, [r7, #12]
800b79a: 2222 movs r2, #34 ; 0x22
800b79c: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
800b79e: 68fb ldr r3, [r7, #12]
800b7a0: 2200 movs r2, #0
800b7a2: 661a str r2, [r3, #96] ; 0x60
/* Init tickstart for timeout management */
tickstart = HAL_GetTick();
800b7a4: f7fc ff84 bl 80086b0 <HAL_GetTick>
800b7a8: 6178 str r0, [r7, #20]
huart->RxXferSize = Size;
800b7aa: 68fb ldr r3, [r7, #12]
800b7ac: 88fa ldrh r2, [r7, #6]
800b7ae: f8a3 2058 strh.w r2, [r3, #88] ; 0x58
huart->RxXferCount = Size;
800b7b2: 68fb ldr r3, [r7, #12]
800b7b4: 88fa ldrh r2, [r7, #6]
800b7b6: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
/* Computation of UART mask to apply to RDR register */
UART_MASK_COMPUTATION(huart);
800b7ba: 68fb ldr r3, [r7, #12]
800b7bc: 689b ldr r3, [r3, #8]
800b7be: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
800b7c2: d10e bne.n 800b7e2 <HAL_UART_Receive+0x92>
800b7c4: 68fb ldr r3, [r7, #12]
800b7c6: 691b ldr r3, [r3, #16]
800b7c8: 2b00 cmp r3, #0
800b7ca: d105 bne.n 800b7d8 <HAL_UART_Receive+0x88>
800b7cc: 68fb ldr r3, [r7, #12]
800b7ce: f240 12ff movw r2, #511 ; 0x1ff
800b7d2: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
800b7d6: e02d b.n 800b834 <HAL_UART_Receive+0xe4>
800b7d8: 68fb ldr r3, [r7, #12]
800b7da: 22ff movs r2, #255 ; 0xff
800b7dc: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
800b7e0: e028 b.n 800b834 <HAL_UART_Receive+0xe4>
800b7e2: 68fb ldr r3, [r7, #12]
800b7e4: 689b ldr r3, [r3, #8]
800b7e6: 2b00 cmp r3, #0
800b7e8: d10d bne.n 800b806 <HAL_UART_Receive+0xb6>
800b7ea: 68fb ldr r3, [r7, #12]
800b7ec: 691b ldr r3, [r3, #16]
800b7ee: 2b00 cmp r3, #0
800b7f0: d104 bne.n 800b7fc <HAL_UART_Receive+0xac>
800b7f2: 68fb ldr r3, [r7, #12]
800b7f4: 22ff movs r2, #255 ; 0xff
800b7f6: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
800b7fa: e01b b.n 800b834 <HAL_UART_Receive+0xe4>
800b7fc: 68fb ldr r3, [r7, #12]
800b7fe: 227f movs r2, #127 ; 0x7f
800b800: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
800b804: e016 b.n 800b834 <HAL_UART_Receive+0xe4>
800b806: 68fb ldr r3, [r7, #12]
800b808: 689b ldr r3, [r3, #8]
800b80a: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000
800b80e: d10d bne.n 800b82c <HAL_UART_Receive+0xdc>
800b810: 68fb ldr r3, [r7, #12]
800b812: 691b ldr r3, [r3, #16]
800b814: 2b00 cmp r3, #0
800b816: d104 bne.n 800b822 <HAL_UART_Receive+0xd2>
800b818: 68fb ldr r3, [r7, #12]
800b81a: 227f movs r2, #127 ; 0x7f
800b81c: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
800b820: e008 b.n 800b834 <HAL_UART_Receive+0xe4>
800b822: 68fb ldr r3, [r7, #12]
800b824: 223f movs r2, #63 ; 0x3f
800b826: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
800b82a: e003 b.n 800b834 <HAL_UART_Receive+0xe4>
800b82c: 68fb ldr r3, [r7, #12]
800b82e: 2200 movs r2, #0
800b830: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
uhMask = huart->Mask;
800b834: 68fb ldr r3, [r7, #12]
800b836: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c
800b83a: 827b strh r3, [r7, #18]
/* In case of 9bits/No Parity transfer, pRxData needs to be handled as a uint16_t pointer */
if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
800b83c: 68fb ldr r3, [r7, #12]
800b83e: 689b ldr r3, [r3, #8]
800b840: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
800b844: d108 bne.n 800b858 <HAL_UART_Receive+0x108>
800b846: 68fb ldr r3, [r7, #12]
800b848: 691b ldr r3, [r3, #16]
800b84a: 2b00 cmp r3, #0
800b84c: d104 bne.n 800b858 <HAL_UART_Receive+0x108>
{
pdata8bits = NULL;
800b84e: 2300 movs r3, #0
800b850: 61fb str r3, [r7, #28]
pdata16bits = (uint16_t *) pData;
800b852: 68bb ldr r3, [r7, #8]
800b854: 61bb str r3, [r7, #24]
800b856: e003 b.n 800b860 <HAL_UART_Receive+0x110>
}
else
{
pdata8bits = pData;
800b858: 68bb ldr r3, [r7, #8]
800b85a: 61fb str r3, [r7, #28]
pdata16bits = NULL;
800b85c: 2300 movs r3, #0
800b85e: 61bb str r3, [r7, #24]
}
__HAL_UNLOCK(huart);
800b860: 68fb ldr r3, [r7, #12]
800b862: 2200 movs r2, #0
800b864: f883 2074 strb.w r2, [r3, #116] ; 0x74
/* as long as data have to be received */
while (huart->RxXferCount > 0U)
800b868: e032 b.n 800b8d0 <HAL_UART_Receive+0x180>
{
if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK)
800b86a: 683b ldr r3, [r7, #0]
800b86c: 9300 str r3, [sp, #0]
800b86e: 697b ldr r3, [r7, #20]
800b870: 2200 movs r2, #0
800b872: 2120 movs r1, #32
800b874: 68f8 ldr r0, [r7, #12]
800b876: f001 f81a bl 800c8ae <UART_WaitOnFlagUntilTimeout>
800b87a: 4603 mov r3, r0
800b87c: 2b00 cmp r3, #0
800b87e: d001 beq.n 800b884 <HAL_UART_Receive+0x134>
{
return HAL_TIMEOUT;
800b880: 2303 movs r3, #3
800b882: e031 b.n 800b8e8 <HAL_UART_Receive+0x198>
}
if (pdata8bits == NULL)
800b884: 69fb ldr r3, [r7, #28]
800b886: 2b00 cmp r3, #0
800b888: d10c bne.n 800b8a4 <HAL_UART_Receive+0x154>
{
*pdata16bits = (uint16_t)(huart->Instance->RDR & uhMask);
800b88a: 68fb ldr r3, [r7, #12]
800b88c: 681b ldr r3, [r3, #0]
800b88e: 6a5b ldr r3, [r3, #36] ; 0x24
800b890: b29a uxth r2, r3
800b892: 8a7b ldrh r3, [r7, #18]
800b894: 4013 ands r3, r2
800b896: b29a uxth r2, r3
800b898: 69bb ldr r3, [r7, #24]
800b89a: 801a strh r2, [r3, #0]
pdata16bits++;
800b89c: 69bb ldr r3, [r7, #24]
800b89e: 3302 adds r3, #2
800b8a0: 61bb str r3, [r7, #24]
800b8a2: e00c b.n 800b8be <HAL_UART_Receive+0x16e>
}
else
{
*pdata8bits = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask);
800b8a4: 68fb ldr r3, [r7, #12]
800b8a6: 681b ldr r3, [r3, #0]
800b8a8: 6a5b ldr r3, [r3, #36] ; 0x24
800b8aa: b2da uxtb r2, r3
800b8ac: 8a7b ldrh r3, [r7, #18]
800b8ae: b2db uxtb r3, r3
800b8b0: 4013 ands r3, r2
800b8b2: b2da uxtb r2, r3
800b8b4: 69fb ldr r3, [r7, #28]
800b8b6: 701a strb r2, [r3, #0]
pdata8bits++;
800b8b8: 69fb ldr r3, [r7, #28]
800b8ba: 3301 adds r3, #1
800b8bc: 61fb str r3, [r7, #28]
}
huart->RxXferCount--;
800b8be: 68fb ldr r3, [r7, #12]
800b8c0: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a
800b8c4: b29b uxth r3, r3
800b8c6: 3b01 subs r3, #1
800b8c8: b29a uxth r2, r3
800b8ca: 68fb ldr r3, [r7, #12]
800b8cc: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
while (huart->RxXferCount > 0U)
800b8d0: 68fb ldr r3, [r7, #12]
800b8d2: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a
800b8d6: b29b uxth r3, r3
800b8d8: 2b00 cmp r3, #0
800b8da: d1c6 bne.n 800b86a <HAL_UART_Receive+0x11a>
}
/* At end of Rx process, restore huart->RxState to Ready */
huart->RxState = HAL_UART_STATE_READY;
800b8dc: 68fb ldr r3, [r7, #12]
800b8de: 2220 movs r2, #32
800b8e0: 67da str r2, [r3, #124] ; 0x7c
return HAL_OK;
800b8e2: 2300 movs r3, #0
800b8e4: e000 b.n 800b8e8 <HAL_UART_Receive+0x198>
}
else
{
return HAL_BUSY;
800b8e6: 2302 movs r3, #2
}
}
800b8e8: 4618 mov r0, r3
800b8ea: 3720 adds r7, #32
800b8ec: 46bd mov sp, r7
800b8ee: bd80 pop {r7, pc}
0800b8f0 <HAL_UART_Transmit_IT>:
* @param pData Pointer to data buffer (u8 or u16 data elements).
* @param Size Amount of data elements (u8 or u16) to be sent.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
{
800b8f0: b480 push {r7}
800b8f2: b08b sub sp, #44 ; 0x2c
800b8f4: af00 add r7, sp, #0
800b8f6: 60f8 str r0, [r7, #12]
800b8f8: 60b9 str r1, [r7, #8]
800b8fa: 4613 mov r3, r2
800b8fc: 80fb strh r3, [r7, #6]
/* Check that a Tx process is not already ongoing */
if (huart->gState == HAL_UART_STATE_READY)
800b8fe: 68fb ldr r3, [r7, #12]
800b900: 6f9b ldr r3, [r3, #120] ; 0x78
800b902: 2b20 cmp r3, #32
800b904: d156 bne.n 800b9b4 <HAL_UART_Transmit_IT+0xc4>
{
if ((pData == NULL) || (Size == 0U))
800b906: 68bb ldr r3, [r7, #8]
800b908: 2b00 cmp r3, #0
800b90a: d002 beq.n 800b912 <HAL_UART_Transmit_IT+0x22>
800b90c: 88fb ldrh r3, [r7, #6]
800b90e: 2b00 cmp r3, #0
800b910: d101 bne.n 800b916 <HAL_UART_Transmit_IT+0x26>
{
return HAL_ERROR;
800b912: 2301 movs r3, #1
800b914: e04f b.n 800b9b6 <HAL_UART_Transmit_IT+0xc6>
}
__HAL_LOCK(huart);
800b916: 68fb ldr r3, [r7, #12]
800b918: f893 3074 ldrb.w r3, [r3, #116] ; 0x74
800b91c: 2b01 cmp r3, #1
800b91e: d101 bne.n 800b924 <HAL_UART_Transmit_IT+0x34>
800b920: 2302 movs r3, #2
800b922: e048 b.n 800b9b6 <HAL_UART_Transmit_IT+0xc6>
800b924: 68fb ldr r3, [r7, #12]
800b926: 2201 movs r2, #1
800b928: f883 2074 strb.w r2, [r3, #116] ; 0x74
huart->pTxBuffPtr = pData;
800b92c: 68fb ldr r3, [r7, #12]
800b92e: 68ba ldr r2, [r7, #8]
800b930: 64da str r2, [r3, #76] ; 0x4c
huart->TxXferSize = Size;
800b932: 68fb ldr r3, [r7, #12]
800b934: 88fa ldrh r2, [r7, #6]
800b936: f8a3 2050 strh.w r2, [r3, #80] ; 0x50
huart->TxXferCount = Size;
800b93a: 68fb ldr r3, [r7, #12]
800b93c: 88fa ldrh r2, [r7, #6]
800b93e: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
huart->TxISR = NULL;
800b942: 68fb ldr r3, [r7, #12]
800b944: 2200 movs r2, #0
800b946: 669a str r2, [r3, #104] ; 0x68
huart->ErrorCode = HAL_UART_ERROR_NONE;
800b948: 68fb ldr r3, [r7, #12]
800b94a: 2200 movs r2, #0
800b94c: f8c3 2080 str.w r2, [r3, #128] ; 0x80
huart->gState = HAL_UART_STATE_BUSY_TX;
800b950: 68fb ldr r3, [r7, #12]
800b952: 2221 movs r2, #33 ; 0x21
800b954: 679a str r2, [r3, #120] ; 0x78
/* Set the Tx ISR function pointer according to the data word length */
if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
800b956: 68fb ldr r3, [r7, #12]
800b958: 689b ldr r3, [r3, #8]
800b95a: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
800b95e: d107 bne.n 800b970 <HAL_UART_Transmit_IT+0x80>
800b960: 68fb ldr r3, [r7, #12]
800b962: 691b ldr r3, [r3, #16]
800b964: 2b00 cmp r3, #0
800b966: d103 bne.n 800b970 <HAL_UART_Transmit_IT+0x80>
{
huart->TxISR = UART_TxISR_16BIT;
800b968: 68fb ldr r3, [r7, #12]
800b96a: 4a16 ldr r2, [pc, #88] ; (800b9c4 <HAL_UART_Transmit_IT+0xd4>)
800b96c: 669a str r2, [r3, #104] ; 0x68
800b96e: e002 b.n 800b976 <HAL_UART_Transmit_IT+0x86>
}
else
{
huart->TxISR = UART_TxISR_8BIT;
800b970: 68fb ldr r3, [r7, #12]
800b972: 4a15 ldr r2, [pc, #84] ; (800b9c8 <HAL_UART_Transmit_IT+0xd8>)
800b974: 669a str r2, [r3, #104] ; 0x68
}
__HAL_UNLOCK(huart);
800b976: 68fb ldr r3, [r7, #12]
800b978: 2200 movs r2, #0
800b97a: f883 2074 strb.w r2, [r3, #116] ; 0x74
/* Enable the Transmit Data Register Empty interrupt */
ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
800b97e: 68fb ldr r3, [r7, #12]
800b980: 681b ldr r3, [r3, #0]
800b982: 617b str r3, [r7, #20]
*/
__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr)
{
uint32_t result;
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800b984: 697b ldr r3, [r7, #20]
800b986: e853 3f00 ldrex r3, [r3]
800b98a: 613b str r3, [r7, #16]
return(result);
800b98c: 693b ldr r3, [r7, #16]
800b98e: f043 0380 orr.w r3, r3, #128 ; 0x80
800b992: 627b str r3, [r7, #36] ; 0x24
800b994: 68fb ldr r3, [r7, #12]
800b996: 681b ldr r3, [r3, #0]
800b998: 461a mov r2, r3
800b99a: 6a7b ldr r3, [r7, #36] ; 0x24
800b99c: 623b str r3, [r7, #32]
800b99e: 61fa str r2, [r7, #28]
*/
__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
{
uint32_t result;
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800b9a0: 69f9 ldr r1, [r7, #28]
800b9a2: 6a3a ldr r2, [r7, #32]
800b9a4: e841 2300 strex r3, r2, [r1]
800b9a8: 61bb str r3, [r7, #24]
return(result);
800b9aa: 69bb ldr r3, [r7, #24]
800b9ac: 2b00 cmp r3, #0
800b9ae: d1e6 bne.n 800b97e <HAL_UART_Transmit_IT+0x8e>
return HAL_OK;
800b9b0: 2300 movs r3, #0
800b9b2: e000 b.n 800b9b6 <HAL_UART_Transmit_IT+0xc6>
}
else
{
return HAL_BUSY;
800b9b4: 2302 movs r3, #2
}
}
800b9b6: 4618 mov r0, r3
800b9b8: 372c adds r7, #44 ; 0x2c
800b9ba: 46bd mov sp, r7
800b9bc: f85d 7b04 ldr.w r7, [sp], #4
800b9c0: 4770 bx lr
800b9c2: bf00 nop
800b9c4: 0800ccc3 .word 0x0800ccc3
800b9c8: 0800cc0d .word 0x0800cc0d
0800b9cc <HAL_UART_Abort_IT>:
* @note This procedure is executed in Interrupt mode, meaning that abort procedure could be
* considered as completed only when user abort complete callback is executed (not when exiting function).
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)
{
800b9cc: b580 push {r7, lr}
800b9ce: b0a2 sub sp, #136 ; 0x88
800b9d0: af00 add r7, sp, #0
800b9d2: 6078 str r0, [r7, #4]
uint32_t abortcplt = 1U;
800b9d4: 2301 movs r3, #1
800b9d6: f8c7 3084 str.w r3, [r7, #132] ; 0x84
/* Disable interrupts */
ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
800b9da: 687b ldr r3, [r7, #4]
800b9dc: 681b ldr r3, [r3, #0]
800b9de: 663b str r3, [r7, #96] ; 0x60
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800b9e0: 6e3b ldr r3, [r7, #96] ; 0x60
800b9e2: e853 3f00 ldrex r3, [r3]
800b9e6: 65fb str r3, [r7, #92] ; 0x5c
return(result);
800b9e8: 6dfb ldr r3, [r7, #92] ; 0x5c
800b9ea: f423 73f0 bic.w r3, r3, #480 ; 0x1e0
800b9ee: f8c7 3080 str.w r3, [r7, #128] ; 0x80
800b9f2: 687b ldr r3, [r7, #4]
800b9f4: 681b ldr r3, [r3, #0]
800b9f6: 461a mov r2, r3
800b9f8: f8d7 3080 ldr.w r3, [r7, #128] ; 0x80
800b9fc: 66fb str r3, [r7, #108] ; 0x6c
800b9fe: 66ba str r2, [r7, #104] ; 0x68
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800ba00: 6eb9 ldr r1, [r7, #104] ; 0x68
800ba02: 6efa ldr r2, [r7, #108] ; 0x6c
800ba04: e841 2300 strex r3, r2, [r1]
800ba08: 667b str r3, [r7, #100] ; 0x64
return(result);
800ba0a: 6e7b ldr r3, [r7, #100] ; 0x64
800ba0c: 2b00 cmp r3, #0
800ba0e: d1e4 bne.n 800b9da <HAL_UART_Abort_IT+0xe>
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
800ba10: 687b ldr r3, [r7, #4]
800ba12: 681b ldr r3, [r3, #0]
800ba14: 3308 adds r3, #8
800ba16: 64fb str r3, [r7, #76] ; 0x4c
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800ba18: 6cfb ldr r3, [r7, #76] ; 0x4c
800ba1a: e853 3f00 ldrex r3, [r3]
800ba1e: 64bb str r3, [r7, #72] ; 0x48
return(result);
800ba20: 6cbb ldr r3, [r7, #72] ; 0x48
800ba22: f023 0301 bic.w r3, r3, #1
800ba26: 67fb str r3, [r7, #124] ; 0x7c
800ba28: 687b ldr r3, [r7, #4]
800ba2a: 681b ldr r3, [r3, #0]
800ba2c: 3308 adds r3, #8
800ba2e: 6ffa ldr r2, [r7, #124] ; 0x7c
800ba30: 65ba str r2, [r7, #88] ; 0x58
800ba32: 657b str r3, [r7, #84] ; 0x54
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800ba34: 6d79 ldr r1, [r7, #84] ; 0x54
800ba36: 6dba ldr r2, [r7, #88] ; 0x58
800ba38: e841 2300 strex r3, r2, [r1]
800ba3c: 653b str r3, [r7, #80] ; 0x50
return(result);
800ba3e: 6d3b ldr r3, [r7, #80] ; 0x50
800ba40: 2b00 cmp r3, #0
800ba42: d1e5 bne.n 800ba10 <HAL_UART_Abort_IT+0x44>
/* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */
if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
800ba44: 687b ldr r3, [r7, #4]
800ba46: 6e1b ldr r3, [r3, #96] ; 0x60
800ba48: 2b01 cmp r3, #1
800ba4a: d118 bne.n 800ba7e <HAL_UART_Abort_IT+0xb2>
{
ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));
800ba4c: 687b ldr r3, [r7, #4]
800ba4e: 681b ldr r3, [r3, #0]
800ba50: 63bb str r3, [r7, #56] ; 0x38
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800ba52: 6bbb ldr r3, [r7, #56] ; 0x38
800ba54: e853 3f00 ldrex r3, [r3]
800ba58: 637b str r3, [r7, #52] ; 0x34
return(result);
800ba5a: 6b7b ldr r3, [r7, #52] ; 0x34
800ba5c: f023 0310 bic.w r3, r3, #16
800ba60: 67bb str r3, [r7, #120] ; 0x78
800ba62: 687b ldr r3, [r7, #4]
800ba64: 681b ldr r3, [r3, #0]
800ba66: 461a mov r2, r3
800ba68: 6fbb ldr r3, [r7, #120] ; 0x78
800ba6a: 647b str r3, [r7, #68] ; 0x44
800ba6c: 643a str r2, [r7, #64] ; 0x40
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800ba6e: 6c39 ldr r1, [r7, #64] ; 0x40
800ba70: 6c7a ldr r2, [r7, #68] ; 0x44
800ba72: e841 2300 strex r3, r2, [r1]
800ba76: 63fb str r3, [r7, #60] ; 0x3c
return(result);
800ba78: 6bfb ldr r3, [r7, #60] ; 0x3c
800ba7a: 2b00 cmp r3, #0
800ba7c: d1e6 bne.n 800ba4c <HAL_UART_Abort_IT+0x80>
}
/* If DMA Tx and/or DMA Rx Handles are associated to UART Handle, DMA Abort complete callbacks should be initialised
before any call to DMA Abort functions */
/* DMA Tx Handle is valid */
if (huart->hdmatx != NULL)
800ba7e: 687b ldr r3, [r7, #4]
800ba80: 6edb ldr r3, [r3, #108] ; 0x6c
800ba82: 2b00 cmp r3, #0
800ba84: d00f beq.n 800baa6 <HAL_UART_Abort_IT+0xda>
{
/* Set DMA Abort Complete callback if UART DMA Tx request if enabled.
Otherwise, set it to NULL */
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))
800ba86: 687b ldr r3, [r7, #4]
800ba88: 681b ldr r3, [r3, #0]
800ba8a: 689b ldr r3, [r3, #8]
800ba8c: f003 0380 and.w r3, r3, #128 ; 0x80
800ba90: 2b80 cmp r3, #128 ; 0x80
800ba92: d104 bne.n 800ba9e <HAL_UART_Abort_IT+0xd2>
{
huart->hdmatx->XferAbortCallback = UART_DMATxAbortCallback;
800ba94: 687b ldr r3, [r7, #4]
800ba96: 6edb ldr r3, [r3, #108] ; 0x6c
800ba98: 4a5d ldr r2, [pc, #372] ; (800bc10 <HAL_UART_Abort_IT+0x244>)
800ba9a: 651a str r2, [r3, #80] ; 0x50
800ba9c: e003 b.n 800baa6 <HAL_UART_Abort_IT+0xda>
}
else
{
huart->hdmatx->XferAbortCallback = NULL;
800ba9e: 687b ldr r3, [r7, #4]
800baa0: 6edb ldr r3, [r3, #108] ; 0x6c
800baa2: 2200 movs r2, #0
800baa4: 651a str r2, [r3, #80] ; 0x50
}
}
/* DMA Rx Handle is valid */
if (huart->hdmarx != NULL)
800baa6: 687b ldr r3, [r7, #4]
800baa8: 6f1b ldr r3, [r3, #112] ; 0x70
800baaa: 2b00 cmp r3, #0
800baac: d00f beq.n 800bace <HAL_UART_Abort_IT+0x102>
{
/* Set DMA Abort Complete callback if UART DMA Rx request if enabled.
Otherwise, set it to NULL */
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
800baae: 687b ldr r3, [r7, #4]
800bab0: 681b ldr r3, [r3, #0]
800bab2: 689b ldr r3, [r3, #8]
800bab4: f003 0340 and.w r3, r3, #64 ; 0x40
800bab8: 2b40 cmp r3, #64 ; 0x40
800baba: d104 bne.n 800bac6 <HAL_UART_Abort_IT+0xfa>
{
huart->hdmarx->XferAbortCallback = UART_DMARxAbortCallback;
800babc: 687b ldr r3, [r7, #4]
800babe: 6f1b ldr r3, [r3, #112] ; 0x70
800bac0: 4a54 ldr r2, [pc, #336] ; (800bc14 <HAL_UART_Abort_IT+0x248>)
800bac2: 651a str r2, [r3, #80] ; 0x50
800bac4: e003 b.n 800bace <HAL_UART_Abort_IT+0x102>
}
else
{
huart->hdmarx->XferAbortCallback = NULL;
800bac6: 687b ldr r3, [r7, #4]
800bac8: 6f1b ldr r3, [r3, #112] ; 0x70
800baca: 2200 movs r2, #0
800bacc: 651a str r2, [r3, #80] ; 0x50
}
}
/* Abort the UART DMA Tx channel if enabled */
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))
800bace: 687b ldr r3, [r7, #4]
800bad0: 681b ldr r3, [r3, #0]
800bad2: 689b ldr r3, [r3, #8]
800bad4: f003 0380 and.w r3, r3, #128 ; 0x80
800bad8: 2b80 cmp r3, #128 ; 0x80
800bada: d12d bne.n 800bb38 <HAL_UART_Abort_IT+0x16c>
{
/* Disable DMA Tx at UART level */
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
800badc: 687b ldr r3, [r7, #4]
800bade: 681b ldr r3, [r3, #0]
800bae0: 3308 adds r3, #8
800bae2: 627b str r3, [r7, #36] ; 0x24
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800bae4: 6a7b ldr r3, [r7, #36] ; 0x24
800bae6: e853 3f00 ldrex r3, [r3]
800baea: 623b str r3, [r7, #32]
return(result);
800baec: 6a3b ldr r3, [r7, #32]
800baee: f023 0380 bic.w r3, r3, #128 ; 0x80
800baf2: 677b str r3, [r7, #116] ; 0x74
800baf4: 687b ldr r3, [r7, #4]
800baf6: 681b ldr r3, [r3, #0]
800baf8: 3308 adds r3, #8
800bafa: 6f7a ldr r2, [r7, #116] ; 0x74
800bafc: 633a str r2, [r7, #48] ; 0x30
800bafe: 62fb str r3, [r7, #44] ; 0x2c
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800bb00: 6af9 ldr r1, [r7, #44] ; 0x2c
800bb02: 6b3a ldr r2, [r7, #48] ; 0x30
800bb04: e841 2300 strex r3, r2, [r1]
800bb08: 62bb str r3, [r7, #40] ; 0x28
return(result);
800bb0a: 6abb ldr r3, [r7, #40] ; 0x28
800bb0c: 2b00 cmp r3, #0
800bb0e: d1e5 bne.n 800badc <HAL_UART_Abort_IT+0x110>
/* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */
if (huart->hdmatx != NULL)
800bb10: 687b ldr r3, [r7, #4]
800bb12: 6edb ldr r3, [r3, #108] ; 0x6c
800bb14: 2b00 cmp r3, #0
800bb16: d00f beq.n 800bb38 <HAL_UART_Abort_IT+0x16c>
{
/* UART Tx DMA Abort callback has already been initialised :
will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */
/* Abort DMA TX */
if (HAL_DMA_Abort_IT(huart->hdmatx) != HAL_OK)
800bb18: 687b ldr r3, [r7, #4]
800bb1a: 6edb ldr r3, [r3, #108] ; 0x6c
800bb1c: 4618 mov r0, r3
800bb1e: f7fc ffa4 bl 8008a6a <HAL_DMA_Abort_IT>
800bb22: 4603 mov r3, r0
800bb24: 2b00 cmp r3, #0
800bb26: d004 beq.n 800bb32 <HAL_UART_Abort_IT+0x166>
{
huart->hdmatx->XferAbortCallback = NULL;
800bb28: 687b ldr r3, [r7, #4]
800bb2a: 6edb ldr r3, [r3, #108] ; 0x6c
800bb2c: 2200 movs r2, #0
800bb2e: 651a str r2, [r3, #80] ; 0x50
800bb30: e002 b.n 800bb38 <HAL_UART_Abort_IT+0x16c>
}
else
{
abortcplt = 0U;
800bb32: 2300 movs r3, #0
800bb34: f8c7 3084 str.w r3, [r7, #132] ; 0x84
}
}
}
/* Abort the UART DMA Rx channel if enabled */
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
800bb38: 687b ldr r3, [r7, #4]
800bb3a: 681b ldr r3, [r3, #0]
800bb3c: 689b ldr r3, [r3, #8]
800bb3e: f003 0340 and.w r3, r3, #64 ; 0x40
800bb42: 2b40 cmp r3, #64 ; 0x40
800bb44: d130 bne.n 800bba8 <HAL_UART_Abort_IT+0x1dc>
{
/* Disable the UART DMA Rx request if enabled */
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
800bb46: 687b ldr r3, [r7, #4]
800bb48: 681b ldr r3, [r3, #0]
800bb4a: 3308 adds r3, #8
800bb4c: 613b str r3, [r7, #16]
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800bb4e: 693b ldr r3, [r7, #16]
800bb50: e853 3f00 ldrex r3, [r3]
800bb54: 60fb str r3, [r7, #12]
return(result);
800bb56: 68fb ldr r3, [r7, #12]
800bb58: f023 0340 bic.w r3, r3, #64 ; 0x40
800bb5c: 673b str r3, [r7, #112] ; 0x70
800bb5e: 687b ldr r3, [r7, #4]
800bb60: 681b ldr r3, [r3, #0]
800bb62: 3308 adds r3, #8
800bb64: 6f3a ldr r2, [r7, #112] ; 0x70
800bb66: 61fa str r2, [r7, #28]
800bb68: 61bb str r3, [r7, #24]
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800bb6a: 69b9 ldr r1, [r7, #24]
800bb6c: 69fa ldr r2, [r7, #28]
800bb6e: e841 2300 strex r3, r2, [r1]
800bb72: 617b str r3, [r7, #20]
return(result);
800bb74: 697b ldr r3, [r7, #20]
800bb76: 2b00 cmp r3, #0
800bb78: d1e5 bne.n 800bb46 <HAL_UART_Abort_IT+0x17a>
/* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */
if (huart->hdmarx != NULL)
800bb7a: 687b ldr r3, [r7, #4]
800bb7c: 6f1b ldr r3, [r3, #112] ; 0x70
800bb7e: 2b00 cmp r3, #0
800bb80: d012 beq.n 800bba8 <HAL_UART_Abort_IT+0x1dc>
{
/* UART Rx DMA Abort callback has already been initialised :
will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */
/* Abort DMA RX */
if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)
800bb82: 687b ldr r3, [r7, #4]
800bb84: 6f1b ldr r3, [r3, #112] ; 0x70
800bb86: 4618 mov r0, r3
800bb88: f7fc ff6f bl 8008a6a <HAL_DMA_Abort_IT>
800bb8c: 4603 mov r3, r0
800bb8e: 2b00 cmp r3, #0
800bb90: d007 beq.n 800bba2 <HAL_UART_Abort_IT+0x1d6>
{
huart->hdmarx->XferAbortCallback = NULL;
800bb92: 687b ldr r3, [r7, #4]
800bb94: 6f1b ldr r3, [r3, #112] ; 0x70
800bb96: 2200 movs r2, #0
800bb98: 651a str r2, [r3, #80] ; 0x50
abortcplt = 1U;
800bb9a: 2301 movs r3, #1
800bb9c: f8c7 3084 str.w r3, [r7, #132] ; 0x84
800bba0: e002 b.n 800bba8 <HAL_UART_Abort_IT+0x1dc>
}
else
{
abortcplt = 0U;
800bba2: 2300 movs r3, #0
800bba4: f8c7 3084 str.w r3, [r7, #132] ; 0x84
}
}
}
/* if no DMA abort complete callback execution is required => call user Abort Complete callback */
if (abortcplt == 1U)
800bba8: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84
800bbac: 2b01 cmp r3, #1
800bbae: d129 bne.n 800bc04 <HAL_UART_Abort_IT+0x238>
{
/* Reset Tx and Rx transfer counters */
huart->TxXferCount = 0U;
800bbb0: 687b ldr r3, [r7, #4]
800bbb2: 2200 movs r2, #0
800bbb4: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
huart->RxXferCount = 0U;
800bbb8: 687b ldr r3, [r7, #4]
800bbba: 2200 movs r2, #0
800bbbc: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
/* Clear ISR function pointers */
huart->RxISR = NULL;
800bbc0: 687b ldr r3, [r7, #4]
800bbc2: 2200 movs r2, #0
800bbc4: 665a str r2, [r3, #100] ; 0x64
huart->TxISR = NULL;
800bbc6: 687b ldr r3, [r7, #4]
800bbc8: 2200 movs r2, #0
800bbca: 669a str r2, [r3, #104] ; 0x68
/* Reset errorCode */
huart->ErrorCode = HAL_UART_ERROR_NONE;
800bbcc: 687b ldr r3, [r7, #4]
800bbce: 2200 movs r2, #0
800bbd0: f8c3 2080 str.w r2, [r3, #128] ; 0x80
/* Clear the Error flags in the ICR register */
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);
800bbd4: 687b ldr r3, [r7, #4]
800bbd6: 681b ldr r3, [r3, #0]
800bbd8: 220f movs r2, #15
800bbda: 621a str r2, [r3, #32]
/* Discard the received data */
__HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);
800bbdc: 687b ldr r3, [r7, #4]
800bbde: 681b ldr r3, [r3, #0]
800bbe0: 687a ldr r2, [r7, #4]
800bbe2: 6812 ldr r2, [r2, #0]
800bbe4: 6992 ldr r2, [r2, #24]
800bbe6: f042 0208 orr.w r2, r2, #8
800bbea: 619a str r2, [r3, #24]
/* Restore huart->gState and huart->RxState to Ready */
huart->gState = HAL_UART_STATE_READY;
800bbec: 687b ldr r3, [r7, #4]
800bbee: 2220 movs r2, #32
800bbf0: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_READY;
800bbf2: 687b ldr r3, [r7, #4]
800bbf4: 2220 movs r2, #32
800bbf6: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
800bbf8: 687b ldr r3, [r7, #4]
800bbfa: 2200 movs r2, #0
800bbfc: 661a str r2, [r3, #96] ; 0x60
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/* Call registered Abort complete callback */
huart->AbortCpltCallback(huart);
#else
/* Call legacy weak Abort complete callback */
HAL_UART_AbortCpltCallback(huart);
800bbfe: 6878 ldr r0, [r7, #4]
800bc00: f000 faea bl 800c1d8 <HAL_UART_AbortCpltCallback>
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
}
return HAL_OK;
800bc04: 2300 movs r3, #0
}
800bc06: 4618 mov r0, r3
800bc08: 3788 adds r7, #136 ; 0x88
800bc0a: 46bd mov sp, r7
800bc0c: bd80 pop {r7, pc}
800bc0e: bf00 nop
800bc10: 0800cb29 .word 0x0800cb29
800bc14: 0800cb93 .word 0x0800cb93
0800bc18 <HAL_UART_IRQHandler>:
* @brief Handle UART interrupt request.
* @param huart UART handle.
* @retval None
*/
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
{
800bc18: b580 push {r7, lr}
800bc1a: b0ba sub sp, #232 ; 0xe8
800bc1c: af00 add r7, sp, #0
800bc1e: 6078 str r0, [r7, #4]
uint32_t isrflags = READ_REG(huart->Instance->ISR);
800bc20: 687b ldr r3, [r7, #4]
800bc22: 681b ldr r3, [r3, #0]
800bc24: 69db ldr r3, [r3, #28]
800bc26: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4
uint32_t cr1its = READ_REG(huart->Instance->CR1);
800bc2a: 687b ldr r3, [r7, #4]
800bc2c: 681b ldr r3, [r3, #0]
800bc2e: 681b ldr r3, [r3, #0]
800bc30: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0
uint32_t cr3its = READ_REG(huart->Instance->CR3);
800bc34: 687b ldr r3, [r7, #4]
800bc36: 681b ldr r3, [r3, #0]
800bc38: 689b ldr r3, [r3, #8]
800bc3a: f8c7 30dc str.w r3, [r7, #220] ; 0xdc
uint32_t errorflags;
uint32_t errorcode;
/* If no error occurs */
errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF));
800bc3e: f8d7 20e4 ldr.w r2, [r7, #228] ; 0xe4
800bc42: f640 030f movw r3, #2063 ; 0x80f
800bc46: 4013 ands r3, r2
800bc48: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8
if (errorflags == 0U)
800bc4c: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8
800bc50: 2b00 cmp r3, #0
800bc52: d115 bne.n 800bc80 <HAL_UART_IRQHandler+0x68>
{
/* UART in mode Receiver ---------------------------------------------------*/
if (((isrflags & USART_ISR_RXNE) != 0U)
800bc54: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800bc58: f003 0320 and.w r3, r3, #32
800bc5c: 2b00 cmp r3, #0
800bc5e: d00f beq.n 800bc80 <HAL_UART_IRQHandler+0x68>
&& ((cr1its & USART_CR1_RXNEIE) != 0U))
800bc60: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0
800bc64: f003 0320 and.w r3, r3, #32
800bc68: 2b00 cmp r3, #0
800bc6a: d009 beq.n 800bc80 <HAL_UART_IRQHandler+0x68>
{
if (huart->RxISR != NULL)
800bc6c: 687b ldr r3, [r7, #4]
800bc6e: 6e5b ldr r3, [r3, #100] ; 0x64
800bc70: 2b00 cmp r3, #0
800bc72: f000 82a5 beq.w 800c1c0 <HAL_UART_IRQHandler+0x5a8>
{
huart->RxISR(huart);
800bc76: 687b ldr r3, [r7, #4]
800bc78: 6e5b ldr r3, [r3, #100] ; 0x64
800bc7a: 6878 ldr r0, [r7, #4]
800bc7c: 4798 blx r3
}
return;
800bc7e: e29f b.n 800c1c0 <HAL_UART_IRQHandler+0x5a8>
}
}
/* If some errors occur */
if ((errorflags != 0U)
800bc80: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8
800bc84: 2b00 cmp r3, #0
800bc86: f000 8117 beq.w 800beb8 <HAL_UART_IRQHandler+0x2a0>
&& (((cr3its & USART_CR3_EIE) != 0U)
800bc8a: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc
800bc8e: f003 0301 and.w r3, r3, #1
800bc92: 2b00 cmp r3, #0
800bc94: d106 bne.n 800bca4 <HAL_UART_IRQHandler+0x8c>
|| ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_RTOIE)) != 0U)))
800bc96: f8d7 20e0 ldr.w r2, [r7, #224] ; 0xe0
800bc9a: 4b85 ldr r3, [pc, #532] ; (800beb0 <HAL_UART_IRQHandler+0x298>)
800bc9c: 4013 ands r3, r2
800bc9e: 2b00 cmp r3, #0
800bca0: f000 810a beq.w 800beb8 <HAL_UART_IRQHandler+0x2a0>
{
/* UART parity error interrupt occurred -------------------------------------*/
if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U))
800bca4: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800bca8: f003 0301 and.w r3, r3, #1
800bcac: 2b00 cmp r3, #0
800bcae: d011 beq.n 800bcd4 <HAL_UART_IRQHandler+0xbc>
800bcb0: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0
800bcb4: f403 7380 and.w r3, r3, #256 ; 0x100
800bcb8: 2b00 cmp r3, #0
800bcba: d00b beq.n 800bcd4 <HAL_UART_IRQHandler+0xbc>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF);
800bcbc: 687b ldr r3, [r7, #4]
800bcbe: 681b ldr r3, [r3, #0]
800bcc0: 2201 movs r2, #1
800bcc2: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_PE;
800bcc4: 687b ldr r3, [r7, #4]
800bcc6: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80
800bcca: f043 0201 orr.w r2, r3, #1
800bcce: 687b ldr r3, [r7, #4]
800bcd0: f8c3 2080 str.w r2, [r3, #128] ; 0x80
}
/* UART frame error interrupt occurred --------------------------------------*/
if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
800bcd4: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800bcd8: f003 0302 and.w r3, r3, #2
800bcdc: 2b00 cmp r3, #0
800bcde: d011 beq.n 800bd04 <HAL_UART_IRQHandler+0xec>
800bce0: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc
800bce4: f003 0301 and.w r3, r3, #1
800bce8: 2b00 cmp r3, #0
800bcea: d00b beq.n 800bd04 <HAL_UART_IRQHandler+0xec>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF);
800bcec: 687b ldr r3, [r7, #4]
800bcee: 681b ldr r3, [r3, #0]
800bcf0: 2202 movs r2, #2
800bcf2: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_FE;
800bcf4: 687b ldr r3, [r7, #4]
800bcf6: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80
800bcfa: f043 0204 orr.w r2, r3, #4
800bcfe: 687b ldr r3, [r7, #4]
800bd00: f8c3 2080 str.w r2, [r3, #128] ; 0x80
}
/* UART noise error interrupt occurred --------------------------------------*/
if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
800bd04: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800bd08: f003 0304 and.w r3, r3, #4
800bd0c: 2b00 cmp r3, #0
800bd0e: d011 beq.n 800bd34 <HAL_UART_IRQHandler+0x11c>
800bd10: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc
800bd14: f003 0301 and.w r3, r3, #1
800bd18: 2b00 cmp r3, #0
800bd1a: d00b beq.n 800bd34 <HAL_UART_IRQHandler+0x11c>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF);
800bd1c: 687b ldr r3, [r7, #4]
800bd1e: 681b ldr r3, [r3, #0]
800bd20: 2204 movs r2, #4
800bd22: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_NE;
800bd24: 687b ldr r3, [r7, #4]
800bd26: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80
800bd2a: f043 0202 orr.w r2, r3, #2
800bd2e: 687b ldr r3, [r7, #4]
800bd30: f8c3 2080 str.w r2, [r3, #128] ; 0x80
}
/* UART Over-Run interrupt occurred -----------------------------------------*/
if (((isrflags & USART_ISR_ORE) != 0U)
800bd34: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800bd38: f003 0308 and.w r3, r3, #8
800bd3c: 2b00 cmp r3, #0
800bd3e: d017 beq.n 800bd70 <HAL_UART_IRQHandler+0x158>
&& (((cr1its & USART_CR1_RXNEIE) != 0U) ||
800bd40: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0
800bd44: f003 0320 and.w r3, r3, #32
800bd48: 2b00 cmp r3, #0
800bd4a: d105 bne.n 800bd58 <HAL_UART_IRQHandler+0x140>
((cr3its & USART_CR3_EIE) != 0U)))
800bd4c: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc
800bd50: f003 0301 and.w r3, r3, #1
&& (((cr1its & USART_CR1_RXNEIE) != 0U) ||
800bd54: 2b00 cmp r3, #0
800bd56: d00b beq.n 800bd70 <HAL_UART_IRQHandler+0x158>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);
800bd58: 687b ldr r3, [r7, #4]
800bd5a: 681b ldr r3, [r3, #0]
800bd5c: 2208 movs r2, #8
800bd5e: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_ORE;
800bd60: 687b ldr r3, [r7, #4]
800bd62: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80
800bd66: f043 0208 orr.w r2, r3, #8
800bd6a: 687b ldr r3, [r7, #4]
800bd6c: f8c3 2080 str.w r2, [r3, #128] ; 0x80
}
/* UART Receiver Timeout interrupt occurred ---------------------------------*/
if (((isrflags & USART_ISR_RTOF) != 0U) && ((cr1its & USART_CR1_RTOIE) != 0U))
800bd70: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800bd74: f403 6300 and.w r3, r3, #2048 ; 0x800
800bd78: 2b00 cmp r3, #0
800bd7a: d012 beq.n 800bda2 <HAL_UART_IRQHandler+0x18a>
800bd7c: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0
800bd80: f003 6380 and.w r3, r3, #67108864 ; 0x4000000
800bd84: 2b00 cmp r3, #0
800bd86: d00c beq.n 800bda2 <HAL_UART_IRQHandler+0x18a>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
800bd88: 687b ldr r3, [r7, #4]
800bd8a: 681b ldr r3, [r3, #0]
800bd8c: f44f 6200 mov.w r2, #2048 ; 0x800
800bd90: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_RTO;
800bd92: 687b ldr r3, [r7, #4]
800bd94: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80
800bd98: f043 0220 orr.w r2, r3, #32
800bd9c: 687b ldr r3, [r7, #4]
800bd9e: f8c3 2080 str.w r2, [r3, #128] ; 0x80
}
/* Call UART Error Call back function if need be ----------------------------*/
if (huart->ErrorCode != HAL_UART_ERROR_NONE)
800bda2: 687b ldr r3, [r7, #4]
800bda4: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80
800bda8: 2b00 cmp r3, #0
800bdaa: f000 820b beq.w 800c1c4 <HAL_UART_IRQHandler+0x5ac>
{
/* UART in mode Receiver --------------------------------------------------*/
if (((isrflags & USART_ISR_RXNE) != 0U)
800bdae: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800bdb2: f003 0320 and.w r3, r3, #32
800bdb6: 2b00 cmp r3, #0
800bdb8: d00d beq.n 800bdd6 <HAL_UART_IRQHandler+0x1be>
&& ((cr1its & USART_CR1_RXNEIE) != 0U))
800bdba: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0
800bdbe: f003 0320 and.w r3, r3, #32
800bdc2: 2b00 cmp r3, #0
800bdc4: d007 beq.n 800bdd6 <HAL_UART_IRQHandler+0x1be>
{
if (huart->RxISR != NULL)
800bdc6: 687b ldr r3, [r7, #4]
800bdc8: 6e5b ldr r3, [r3, #100] ; 0x64
800bdca: 2b00 cmp r3, #0
800bdcc: d003 beq.n 800bdd6 <HAL_UART_IRQHandler+0x1be>
{
huart->RxISR(huart);
800bdce: 687b ldr r3, [r7, #4]
800bdd0: 6e5b ldr r3, [r3, #100] ; 0x64
800bdd2: 6878 ldr r0, [r7, #4]
800bdd4: 4798 blx r3
/* If Error is to be considered as blocking :
- Receiver Timeout error in Reception
- Overrun error in Reception
- any error occurs in DMA mode reception
*/
errorcode = huart->ErrorCode;
800bdd6: 687b ldr r3, [r7, #4]
800bdd8: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80
800bddc: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4
if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
800bde0: 687b ldr r3, [r7, #4]
800bde2: 681b ldr r3, [r3, #0]
800bde4: 689b ldr r3, [r3, #8]
800bde6: f003 0340 and.w r3, r3, #64 ; 0x40
800bdea: 2b40 cmp r3, #64 ; 0x40
800bdec: d005 beq.n 800bdfa <HAL_UART_IRQHandler+0x1e2>
((errorcode & (HAL_UART_ERROR_RTO | HAL_UART_ERROR_ORE)) != 0U))
800bdee: f8d7 30d4 ldr.w r3, [r7, #212] ; 0xd4
800bdf2: f003 0328 and.w r3, r3, #40 ; 0x28
if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
800bdf6: 2b00 cmp r3, #0
800bdf8: d04f beq.n 800be9a <HAL_UART_IRQHandler+0x282>
{
/* Blocking error : transfer is aborted
Set the UART state ready to be able to start again the process,
Disable Rx Interrupts, and disable Rx DMA request, if ongoing */
UART_EndRxTransfer(huart);
800bdfa: 6878 ldr r0, [r7, #4]
800bdfc: f000 fe1b bl 800ca36 <UART_EndRxTransfer>
/* Abort the UART DMA Rx channel if enabled */
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
800be00: 687b ldr r3, [r7, #4]
800be02: 681b ldr r3, [r3, #0]
800be04: 689b ldr r3, [r3, #8]
800be06: f003 0340 and.w r3, r3, #64 ; 0x40
800be0a: 2b40 cmp r3, #64 ; 0x40
800be0c: d141 bne.n 800be92 <HAL_UART_IRQHandler+0x27a>
{
/* Disable the UART DMA Rx request if enabled */
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
800be0e: 687b ldr r3, [r7, #4]
800be10: 681b ldr r3, [r3, #0]
800be12: 3308 adds r3, #8
800be14: f8c7 309c str.w r3, [r7, #156] ; 0x9c
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800be18: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c
800be1c: e853 3f00 ldrex r3, [r3]
800be20: f8c7 3098 str.w r3, [r7, #152] ; 0x98
return(result);
800be24: f8d7 3098 ldr.w r3, [r7, #152] ; 0x98
800be28: f023 0340 bic.w r3, r3, #64 ; 0x40
800be2c: f8c7 30d0 str.w r3, [r7, #208] ; 0xd0
800be30: 687b ldr r3, [r7, #4]
800be32: 681b ldr r3, [r3, #0]
800be34: 3308 adds r3, #8
800be36: f8d7 20d0 ldr.w r2, [r7, #208] ; 0xd0
800be3a: f8c7 20a8 str.w r2, [r7, #168] ; 0xa8
800be3e: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800be42: f8d7 10a4 ldr.w r1, [r7, #164] ; 0xa4
800be46: f8d7 20a8 ldr.w r2, [r7, #168] ; 0xa8
800be4a: e841 2300 strex r3, r2, [r1]
800be4e: f8c7 30a0 str.w r3, [r7, #160] ; 0xa0
return(result);
800be52: f8d7 30a0 ldr.w r3, [r7, #160] ; 0xa0
800be56: 2b00 cmp r3, #0
800be58: d1d9 bne.n 800be0e <HAL_UART_IRQHandler+0x1f6>
/* Abort the UART DMA Rx channel */
if (huart->hdmarx != NULL)
800be5a: 687b ldr r3, [r7, #4]
800be5c: 6f1b ldr r3, [r3, #112] ; 0x70
800be5e: 2b00 cmp r3, #0
800be60: d013 beq.n 800be8a <HAL_UART_IRQHandler+0x272>
{
/* Set the UART DMA Abort callback :
will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */
huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError;
800be62: 687b ldr r3, [r7, #4]
800be64: 6f1b ldr r3, [r3, #112] ; 0x70
800be66: 4a13 ldr r2, [pc, #76] ; (800beb4 <HAL_UART_IRQHandler+0x29c>)
800be68: 651a str r2, [r3, #80] ; 0x50
/* Abort DMA RX */
if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)
800be6a: 687b ldr r3, [r7, #4]
800be6c: 6f1b ldr r3, [r3, #112] ; 0x70
800be6e: 4618 mov r0, r3
800be70: f7fc fdfb bl 8008a6a <HAL_DMA_Abort_IT>
800be74: 4603 mov r3, r0
800be76: 2b00 cmp r3, #0
800be78: d017 beq.n 800beaa <HAL_UART_IRQHandler+0x292>
{
/* Call Directly huart->hdmarx->XferAbortCallback function in case of error */
huart->hdmarx->XferAbortCallback(huart->hdmarx);
800be7a: 687b ldr r3, [r7, #4]
800be7c: 6f1b ldr r3, [r3, #112] ; 0x70
800be7e: 6d1b ldr r3, [r3, #80] ; 0x50
800be80: 687a ldr r2, [r7, #4]
800be82: 6f12 ldr r2, [r2, #112] ; 0x70
800be84: 4610 mov r0, r2
800be86: 4798 blx r3
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
800be88: e00f b.n 800beaa <HAL_UART_IRQHandler+0x292>
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
huart->ErrorCallback(huart);
#else
/*Call legacy weak error callback*/
HAL_UART_ErrorCallback(huart);
800be8a: 6878 ldr r0, [r7, #4]
800be8c: f7fb fcf2 bl 8007874 <HAL_UART_ErrorCallback>
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
800be90: e00b b.n 800beaa <HAL_UART_IRQHandler+0x292>
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
huart->ErrorCallback(huart);
#else
/*Call legacy weak error callback*/
HAL_UART_ErrorCallback(huart);
800be92: 6878 ldr r0, [r7, #4]
800be94: f7fb fcee bl 8007874 <HAL_UART_ErrorCallback>
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
800be98: e007 b.n 800beaa <HAL_UART_IRQHandler+0x292>
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
huart->ErrorCallback(huart);
#else
/*Call legacy weak error callback*/
HAL_UART_ErrorCallback(huart);
800be9a: 6878 ldr r0, [r7, #4]
800be9c: f7fb fcea bl 8007874 <HAL_UART_ErrorCallback>
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
huart->ErrorCode = HAL_UART_ERROR_NONE;
800bea0: 687b ldr r3, [r7, #4]
800bea2: 2200 movs r2, #0
800bea4: f8c3 2080 str.w r2, [r3, #128] ; 0x80
}
}
return;
800bea8: e18c b.n 800c1c4 <HAL_UART_IRQHandler+0x5ac>
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
800beaa: bf00 nop
return;
800beac: e18a b.n 800c1c4 <HAL_UART_IRQHandler+0x5ac>
800beae: bf00 nop
800beb0: 04000120 .word 0x04000120
800beb4: 0800cafd .word 0x0800cafd
} /* End if some error occurs */
/* Check current reception Mode :
If Reception till IDLE event has been selected : */
if ((huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
800beb8: 687b ldr r3, [r7, #4]
800beba: 6e1b ldr r3, [r3, #96] ; 0x60
800bebc: 2b01 cmp r3, #1
800bebe: f040 8144 bne.w 800c14a <HAL_UART_IRQHandler+0x532>
&& ((isrflags & USART_ISR_IDLE) != 0U)
800bec2: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800bec6: f003 0310 and.w r3, r3, #16
800beca: 2b00 cmp r3, #0
800becc: f000 813d beq.w 800c14a <HAL_UART_IRQHandler+0x532>
&& ((cr1its & USART_ISR_IDLE) != 0U))
800bed0: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0
800bed4: f003 0310 and.w r3, r3, #16
800bed8: 2b00 cmp r3, #0
800beda: f000 8136 beq.w 800c14a <HAL_UART_IRQHandler+0x532>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);
800bede: 687b ldr r3, [r7, #4]
800bee0: 681b ldr r3, [r3, #0]
800bee2: 2210 movs r2, #16
800bee4: 621a str r2, [r3, #32]
/* Check if DMA mode is enabled in UART */
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
800bee6: 687b ldr r3, [r7, #4]
800bee8: 681b ldr r3, [r3, #0]
800beea: 689b ldr r3, [r3, #8]
800beec: f003 0340 and.w r3, r3, #64 ; 0x40
800bef0: 2b40 cmp r3, #64 ; 0x40
800bef2: f040 80b2 bne.w 800c05a <HAL_UART_IRQHandler+0x442>
{
/* DMA mode enabled */
/* Check received length : If all expected data are received, do nothing,
(DMA cplt callback will be called).
Otherwise, if at least one data has already been received, IDLE event is to be notified to user */
uint16_t nb_remaining_rx_data = (uint16_t) __HAL_DMA_GET_COUNTER(huart->hdmarx);
800bef6: 687b ldr r3, [r7, #4]
800bef8: 6f1b ldr r3, [r3, #112] ; 0x70
800befa: 681b ldr r3, [r3, #0]
800befc: 685b ldr r3, [r3, #4]
800befe: f8a7 30ce strh.w r3, [r7, #206] ; 0xce
if ((nb_remaining_rx_data > 0U)
800bf02: f8b7 30ce ldrh.w r3, [r7, #206] ; 0xce
800bf06: 2b00 cmp r3, #0
800bf08: f000 815e beq.w 800c1c8 <HAL_UART_IRQHandler+0x5b0>
&& (nb_remaining_rx_data < huart->RxXferSize))
800bf0c: 687b ldr r3, [r7, #4]
800bf0e: f8b3 3058 ldrh.w r3, [r3, #88] ; 0x58
800bf12: f8b7 20ce ldrh.w r2, [r7, #206] ; 0xce
800bf16: 429a cmp r2, r3
800bf18: f080 8156 bcs.w 800c1c8 <HAL_UART_IRQHandler+0x5b0>
{
/* Reception is not complete */
huart->RxXferCount = nb_remaining_rx_data;
800bf1c: 687b ldr r3, [r7, #4]
800bf1e: f8b7 20ce ldrh.w r2, [r7, #206] ; 0xce
800bf22: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
/* In Normal mode, end DMA xfer and HAL UART Rx process*/
if (huart->hdmarx->Init.Mode != DMA_CIRCULAR)
800bf26: 687b ldr r3, [r7, #4]
800bf28: 6f1b ldr r3, [r3, #112] ; 0x70
800bf2a: 69db ldr r3, [r3, #28]
800bf2c: f5b3 7f80 cmp.w r3, #256 ; 0x100
800bf30: f000 8085 beq.w 800c03e <HAL_UART_IRQHandler+0x426>
{
/* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */
ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
800bf34: 687b ldr r3, [r7, #4]
800bf36: 681b ldr r3, [r3, #0]
800bf38: f8c7 3088 str.w r3, [r7, #136] ; 0x88
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800bf3c: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88
800bf40: e853 3f00 ldrex r3, [r3]
800bf44: f8c7 3084 str.w r3, [r7, #132] ; 0x84
return(result);
800bf48: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84
800bf4c: f423 7380 bic.w r3, r3, #256 ; 0x100
800bf50: f8c7 30c8 str.w r3, [r7, #200] ; 0xc8
800bf54: 687b ldr r3, [r7, #4]
800bf56: 681b ldr r3, [r3, #0]
800bf58: 461a mov r2, r3
800bf5a: f8d7 30c8 ldr.w r3, [r7, #200] ; 0xc8
800bf5e: f8c7 3094 str.w r3, [r7, #148] ; 0x94
800bf62: f8c7 2090 str.w r2, [r7, #144] ; 0x90
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800bf66: f8d7 1090 ldr.w r1, [r7, #144] ; 0x90
800bf6a: f8d7 2094 ldr.w r2, [r7, #148] ; 0x94
800bf6e: e841 2300 strex r3, r2, [r1]
800bf72: f8c7 308c str.w r3, [r7, #140] ; 0x8c
return(result);
800bf76: f8d7 308c ldr.w r3, [r7, #140] ; 0x8c
800bf7a: 2b00 cmp r3, #0
800bf7c: d1da bne.n 800bf34 <HAL_UART_IRQHandler+0x31c>
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
800bf7e: 687b ldr r3, [r7, #4]
800bf80: 681b ldr r3, [r3, #0]
800bf82: 3308 adds r3, #8
800bf84: 677b str r3, [r7, #116] ; 0x74
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800bf86: 6f7b ldr r3, [r7, #116] ; 0x74
800bf88: e853 3f00 ldrex r3, [r3]
800bf8c: 673b str r3, [r7, #112] ; 0x70
return(result);
800bf8e: 6f3b ldr r3, [r7, #112] ; 0x70
800bf90: f023 0301 bic.w r3, r3, #1
800bf94: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4
800bf98: 687b ldr r3, [r7, #4]
800bf9a: 681b ldr r3, [r3, #0]
800bf9c: 3308 adds r3, #8
800bf9e: f8d7 20c4 ldr.w r2, [r7, #196] ; 0xc4
800bfa2: f8c7 2080 str.w r2, [r7, #128] ; 0x80
800bfa6: 67fb str r3, [r7, #124] ; 0x7c
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800bfa8: 6ff9 ldr r1, [r7, #124] ; 0x7c
800bfaa: f8d7 2080 ldr.w r2, [r7, #128] ; 0x80
800bfae: e841 2300 strex r3, r2, [r1]
800bfb2: 67bb str r3, [r7, #120] ; 0x78
return(result);
800bfb4: 6fbb ldr r3, [r7, #120] ; 0x78
800bfb6: 2b00 cmp r3, #0
800bfb8: d1e1 bne.n 800bf7e <HAL_UART_IRQHandler+0x366>
/* Disable the DMA transfer for the receiver request by resetting the DMAR bit
in the UART CR3 register */
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
800bfba: 687b ldr r3, [r7, #4]
800bfbc: 681b ldr r3, [r3, #0]
800bfbe: 3308 adds r3, #8
800bfc0: 663b str r3, [r7, #96] ; 0x60
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800bfc2: 6e3b ldr r3, [r7, #96] ; 0x60
800bfc4: e853 3f00 ldrex r3, [r3]
800bfc8: 65fb str r3, [r7, #92] ; 0x5c
return(result);
800bfca: 6dfb ldr r3, [r7, #92] ; 0x5c
800bfcc: f023 0340 bic.w r3, r3, #64 ; 0x40
800bfd0: f8c7 30c0 str.w r3, [r7, #192] ; 0xc0
800bfd4: 687b ldr r3, [r7, #4]
800bfd6: 681b ldr r3, [r3, #0]
800bfd8: 3308 adds r3, #8
800bfda: f8d7 20c0 ldr.w r2, [r7, #192] ; 0xc0
800bfde: 66fa str r2, [r7, #108] ; 0x6c
800bfe0: 66bb str r3, [r7, #104] ; 0x68
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800bfe2: 6eb9 ldr r1, [r7, #104] ; 0x68
800bfe4: 6efa ldr r2, [r7, #108] ; 0x6c
800bfe6: e841 2300 strex r3, r2, [r1]
800bfea: 667b str r3, [r7, #100] ; 0x64
return(result);
800bfec: 6e7b ldr r3, [r7, #100] ; 0x64
800bfee: 2b00 cmp r3, #0
800bff0: d1e3 bne.n 800bfba <HAL_UART_IRQHandler+0x3a2>
/* At end of Rx process, restore huart->RxState to Ready */
huart->RxState = HAL_UART_STATE_READY;
800bff2: 687b ldr r3, [r7, #4]
800bff4: 2220 movs r2, #32
800bff6: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
800bff8: 687b ldr r3, [r7, #4]
800bffa: 2200 movs r2, #0
800bffc: 661a str r2, [r3, #96] ; 0x60
ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
800bffe: 687b ldr r3, [r7, #4]
800c000: 681b ldr r3, [r3, #0]
800c002: 64fb str r3, [r7, #76] ; 0x4c
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800c004: 6cfb ldr r3, [r7, #76] ; 0x4c
800c006: e853 3f00 ldrex r3, [r3]
800c00a: 64bb str r3, [r7, #72] ; 0x48
return(result);
800c00c: 6cbb ldr r3, [r7, #72] ; 0x48
800c00e: f023 0310 bic.w r3, r3, #16
800c012: f8c7 30bc str.w r3, [r7, #188] ; 0xbc
800c016: 687b ldr r3, [r7, #4]
800c018: 681b ldr r3, [r3, #0]
800c01a: 461a mov r2, r3
800c01c: f8d7 30bc ldr.w r3, [r7, #188] ; 0xbc
800c020: 65bb str r3, [r7, #88] ; 0x58
800c022: 657a str r2, [r7, #84] ; 0x54
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800c024: 6d79 ldr r1, [r7, #84] ; 0x54
800c026: 6dba ldr r2, [r7, #88] ; 0x58
800c028: e841 2300 strex r3, r2, [r1]
800c02c: 653b str r3, [r7, #80] ; 0x50
return(result);
800c02e: 6d3b ldr r3, [r7, #80] ; 0x50
800c030: 2b00 cmp r3, #0
800c032: d1e4 bne.n 800bffe <HAL_UART_IRQHandler+0x3e6>
/* Last bytes received, so no need as the abort is immediate */
(void)HAL_DMA_Abort(huart->hdmarx);
800c034: 687b ldr r3, [r7, #4]
800c036: 6f1b ldr r3, [r3, #112] ; 0x70
800c038: 4618 mov r0, r3
800c03a: f7fc fca6 bl 800898a <HAL_DMA_Abort>
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered Rx Event callback*/
huart->RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount));
#else
/*Call legacy weak Rx Event callback*/
HAL_UARTEx_RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount));
800c03e: 687b ldr r3, [r7, #4]
800c040: f8b3 2058 ldrh.w r2, [r3, #88] ; 0x58
800c044: 687b ldr r3, [r7, #4]
800c046: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a
800c04a: b29b uxth r3, r3
800c04c: 1ad3 subs r3, r2, r3
800c04e: b29b uxth r3, r3
800c050: 4619 mov r1, r3
800c052: 6878 ldr r0, [r7, #4]
800c054: f000 f8ca bl 800c1ec <HAL_UARTEx_RxEventCallback>
#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
}
return;
800c058: e0b6 b.n 800c1c8 <HAL_UART_IRQHandler+0x5b0>
else
{
/* DMA mode not enabled */
/* Check received length : If all expected data are received, do nothing.
Otherwise, if at least one data has already been received, IDLE event is to be notified to user */
uint16_t nb_rx_data = huart->RxXferSize - huart->RxXferCount;
800c05a: 687b ldr r3, [r7, #4]
800c05c: f8b3 2058 ldrh.w r2, [r3, #88] ; 0x58
800c060: 687b ldr r3, [r7, #4]
800c062: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a
800c066: b29b uxth r3, r3
800c068: 1ad3 subs r3, r2, r3
800c06a: f8a7 30ba strh.w r3, [r7, #186] ; 0xba
if ((huart->RxXferCount > 0U)
800c06e: 687b ldr r3, [r7, #4]
800c070: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a
800c074: b29b uxth r3, r3
800c076: 2b00 cmp r3, #0
800c078: f000 80a8 beq.w 800c1cc <HAL_UART_IRQHandler+0x5b4>
&& (nb_rx_data > 0U))
800c07c: f8b7 30ba ldrh.w r3, [r7, #186] ; 0xba
800c080: 2b00 cmp r3, #0
800c082: f000 80a3 beq.w 800c1cc <HAL_UART_IRQHandler+0x5b4>
{
/* Disable the UART Parity Error Interrupt and RXNE interrupts */
ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
800c086: 687b ldr r3, [r7, #4]
800c088: 681b ldr r3, [r3, #0]
800c08a: 63bb str r3, [r7, #56] ; 0x38
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800c08c: 6bbb ldr r3, [r7, #56] ; 0x38
800c08e: e853 3f00 ldrex r3, [r3]
800c092: 637b str r3, [r7, #52] ; 0x34
return(result);
800c094: 6b7b ldr r3, [r7, #52] ; 0x34
800c096: f423 7390 bic.w r3, r3, #288 ; 0x120
800c09a: f8c7 30b4 str.w r3, [r7, #180] ; 0xb4
800c09e: 687b ldr r3, [r7, #4]
800c0a0: 681b ldr r3, [r3, #0]
800c0a2: 461a mov r2, r3
800c0a4: f8d7 30b4 ldr.w r3, [r7, #180] ; 0xb4
800c0a8: 647b str r3, [r7, #68] ; 0x44
800c0aa: 643a str r2, [r7, #64] ; 0x40
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800c0ac: 6c39 ldr r1, [r7, #64] ; 0x40
800c0ae: 6c7a ldr r2, [r7, #68] ; 0x44
800c0b0: e841 2300 strex r3, r2, [r1]
800c0b4: 63fb str r3, [r7, #60] ; 0x3c
return(result);
800c0b6: 6bfb ldr r3, [r7, #60] ; 0x3c
800c0b8: 2b00 cmp r3, #0
800c0ba: d1e4 bne.n 800c086 <HAL_UART_IRQHandler+0x46e>
/* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
800c0bc: 687b ldr r3, [r7, #4]
800c0be: 681b ldr r3, [r3, #0]
800c0c0: 3308 adds r3, #8
800c0c2: 627b str r3, [r7, #36] ; 0x24
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800c0c4: 6a7b ldr r3, [r7, #36] ; 0x24
800c0c6: e853 3f00 ldrex r3, [r3]
800c0ca: 623b str r3, [r7, #32]
return(result);
800c0cc: 6a3b ldr r3, [r7, #32]
800c0ce: f023 0301 bic.w r3, r3, #1
800c0d2: f8c7 30b0 str.w r3, [r7, #176] ; 0xb0
800c0d6: 687b ldr r3, [r7, #4]
800c0d8: 681b ldr r3, [r3, #0]
800c0da: 3308 adds r3, #8
800c0dc: f8d7 20b0 ldr.w r2, [r7, #176] ; 0xb0
800c0e0: 633a str r2, [r7, #48] ; 0x30
800c0e2: 62fb str r3, [r7, #44] ; 0x2c
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800c0e4: 6af9 ldr r1, [r7, #44] ; 0x2c
800c0e6: 6b3a ldr r2, [r7, #48] ; 0x30
800c0e8: e841 2300 strex r3, r2, [r1]
800c0ec: 62bb str r3, [r7, #40] ; 0x28
return(result);
800c0ee: 6abb ldr r3, [r7, #40] ; 0x28
800c0f0: 2b00 cmp r3, #0
800c0f2: d1e3 bne.n 800c0bc <HAL_UART_IRQHandler+0x4a4>
/* Rx process is completed, restore huart->RxState to Ready */
huart->RxState = HAL_UART_STATE_READY;
800c0f4: 687b ldr r3, [r7, #4]
800c0f6: 2220 movs r2, #32
800c0f8: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
800c0fa: 687b ldr r3, [r7, #4]
800c0fc: 2200 movs r2, #0
800c0fe: 661a str r2, [r3, #96] ; 0x60
/* Clear RxISR function pointer */
huart->RxISR = NULL;
800c100: 687b ldr r3, [r7, #4]
800c102: 2200 movs r2, #0
800c104: 665a str r2, [r3, #100] ; 0x64
ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
800c106: 687b ldr r3, [r7, #4]
800c108: 681b ldr r3, [r3, #0]
800c10a: 613b str r3, [r7, #16]
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800c10c: 693b ldr r3, [r7, #16]
800c10e: e853 3f00 ldrex r3, [r3]
800c112: 60fb str r3, [r7, #12]
return(result);
800c114: 68fb ldr r3, [r7, #12]
800c116: f023 0310 bic.w r3, r3, #16
800c11a: f8c7 30ac str.w r3, [r7, #172] ; 0xac
800c11e: 687b ldr r3, [r7, #4]
800c120: 681b ldr r3, [r3, #0]
800c122: 461a mov r2, r3
800c124: f8d7 30ac ldr.w r3, [r7, #172] ; 0xac
800c128: 61fb str r3, [r7, #28]
800c12a: 61ba str r2, [r7, #24]
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800c12c: 69b9 ldr r1, [r7, #24]
800c12e: 69fa ldr r2, [r7, #28]
800c130: e841 2300 strex r3, r2, [r1]
800c134: 617b str r3, [r7, #20]
return(result);
800c136: 697b ldr r3, [r7, #20]
800c138: 2b00 cmp r3, #0
800c13a: d1e4 bne.n 800c106 <HAL_UART_IRQHandler+0x4ee>
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered Rx complete callback*/
huart->RxEventCallback(huart, nb_rx_data);
#else
/*Call legacy weak Rx Event callback*/
HAL_UARTEx_RxEventCallback(huart, nb_rx_data);
800c13c: f8b7 30ba ldrh.w r3, [r7, #186] ; 0xba
800c140: 4619 mov r1, r3
800c142: 6878 ldr r0, [r7, #4]
800c144: f000 f852 bl 800c1ec <HAL_UARTEx_RxEventCallback>
#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
}
return;
800c148: e040 b.n 800c1cc <HAL_UART_IRQHandler+0x5b4>
}
#if defined(USART_CR1_UESM)
#if defined(USART_CR3_WUFIE)
/* UART wakeup from Stop mode interrupt occurred ---------------------------*/
if (((isrflags & USART_ISR_WUF) != 0U) && ((cr3its & USART_CR3_WUFIE) != 0U))
800c14a: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800c14e: f403 1380 and.w r3, r3, #1048576 ; 0x100000
800c152: 2b00 cmp r3, #0
800c154: d00e beq.n 800c174 <HAL_UART_IRQHandler+0x55c>
800c156: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc
800c15a: f403 0380 and.w r3, r3, #4194304 ; 0x400000
800c15e: 2b00 cmp r3, #0
800c160: d008 beq.n 800c174 <HAL_UART_IRQHandler+0x55c>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_WUF);
800c162: 687b ldr r3, [r7, #4]
800c164: 681b ldr r3, [r3, #0]
800c166: f44f 1280 mov.w r2, #1048576 ; 0x100000
800c16a: 621a str r2, [r3, #32]
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/* Call registered Wakeup Callback */
huart->WakeupCallback(huart);
#else
/* Call legacy weak Wakeup Callback */
HAL_UARTEx_WakeupCallback(huart);
800c16c: 6878 ldr r0, [r7, #4]
800c16e: f000 f849 bl 800c204 <HAL_UARTEx_WakeupCallback>
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
return;
800c172: e02e b.n 800c1d2 <HAL_UART_IRQHandler+0x5ba>
}
#endif /* USART_CR3_WUFIE */
#endif /* USART_CR1_UESM */
/* UART in mode Transmitter ------------------------------------------------*/
if (((isrflags & USART_ISR_TXE) != 0U)
800c174: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800c178: f003 0380 and.w r3, r3, #128 ; 0x80
800c17c: 2b00 cmp r3, #0
800c17e: d00e beq.n 800c19e <HAL_UART_IRQHandler+0x586>
&& ((cr1its & USART_CR1_TXEIE) != 0U))
800c180: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0
800c184: f003 0380 and.w r3, r3, #128 ; 0x80
800c188: 2b00 cmp r3, #0
800c18a: d008 beq.n 800c19e <HAL_UART_IRQHandler+0x586>
{
if (huart->TxISR != NULL)
800c18c: 687b ldr r3, [r7, #4]
800c18e: 6e9b ldr r3, [r3, #104] ; 0x68
800c190: 2b00 cmp r3, #0
800c192: d01d beq.n 800c1d0 <HAL_UART_IRQHandler+0x5b8>
{
huart->TxISR(huart);
800c194: 687b ldr r3, [r7, #4]
800c196: 6e9b ldr r3, [r3, #104] ; 0x68
800c198: 6878 ldr r0, [r7, #4]
800c19a: 4798 blx r3
}
return;
800c19c: e018 b.n 800c1d0 <HAL_UART_IRQHandler+0x5b8>
}
/* UART in mode Transmitter (transmission end) -----------------------------*/
if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U))
800c19e: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4
800c1a2: f003 0340 and.w r3, r3, #64 ; 0x40
800c1a6: 2b00 cmp r3, #0
800c1a8: d013 beq.n 800c1d2 <HAL_UART_IRQHandler+0x5ba>
800c1aa: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0
800c1ae: f003 0340 and.w r3, r3, #64 ; 0x40
800c1b2: 2b00 cmp r3, #0
800c1b4: d00d beq.n 800c1d2 <HAL_UART_IRQHandler+0x5ba>
{
UART_EndTransmit_IT(huart);
800c1b6: 6878 ldr r0, [r7, #4]
800c1b8: f000 fde2 bl 800cd80 <UART_EndTransmit_IT>
return;
800c1bc: bf00 nop
800c1be: e008 b.n 800c1d2 <HAL_UART_IRQHandler+0x5ba>
return;
800c1c0: bf00 nop
800c1c2: e006 b.n 800c1d2 <HAL_UART_IRQHandler+0x5ba>
return;
800c1c4: bf00 nop
800c1c6: e004 b.n 800c1d2 <HAL_UART_IRQHandler+0x5ba>
return;
800c1c8: bf00 nop
800c1ca: e002 b.n 800c1d2 <HAL_UART_IRQHandler+0x5ba>
return;
800c1cc: bf00 nop
800c1ce: e000 b.n 800c1d2 <HAL_UART_IRQHandler+0x5ba>
return;
800c1d0: bf00 nop
}
}
800c1d2: 37e8 adds r7, #232 ; 0xe8
800c1d4: 46bd mov sp, r7
800c1d6: bd80 pop {r7, pc}
0800c1d8 <HAL_UART_AbortCpltCallback>:
* @brief UART Abort Complete callback.
* @param huart UART handle.
* @retval None
*/
__weak void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart)
{
800c1d8: b480 push {r7}
800c1da: b083 sub sp, #12
800c1dc: af00 add r7, sp, #0
800c1de: 6078 str r0, [r7, #4]
UNUSED(huart);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_UART_AbortCpltCallback can be implemented in the user file.
*/
}
800c1e0: bf00 nop
800c1e2: 370c adds r7, #12
800c1e4: 46bd mov sp, r7
800c1e6: f85d 7b04 ldr.w r7, [sp], #4
800c1ea: 4770 bx lr
0800c1ec <HAL_UARTEx_RxEventCallback>:
* @param Size Number of data available in application reception buffer (indicates a position in
* reception buffer until which, data are available)
* @retval None
*/
__weak void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
800c1ec: b480 push {r7}
800c1ee: b083 sub sp, #12
800c1f0: af00 add r7, sp, #0
800c1f2: 6078 str r0, [r7, #4]
800c1f4: 460b mov r3, r1
800c1f6: 807b strh r3, [r7, #2]
UNUSED(Size);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_UARTEx_RxEventCallback can be implemented in the user file.
*/
}
800c1f8: bf00 nop
800c1fa: 370c adds r7, #12
800c1fc: 46bd mov sp, r7
800c1fe: f85d 7b04 ldr.w r7, [sp], #4
800c202: 4770 bx lr
0800c204 <HAL_UARTEx_WakeupCallback>:
* @brief UART wakeup from Stop mode callback.
* @param huart UART handle.
* @retval None
*/
__weak void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
{
800c204: b480 push {r7}
800c206: b083 sub sp, #12
800c208: af00 add r7, sp, #0
800c20a: 6078 str r0, [r7, #4]
UNUSED(huart);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_UARTEx_WakeupCallback can be implemented in the user file.
*/
}
800c20c: bf00 nop
800c20e: 370c adds r7, #12
800c210: 46bd mov sp, r7
800c212: f85d 7b04 ldr.w r7, [sp], #4
800c216: 4770 bx lr
0800c218 <UART_SetConfig>:
* @brief Configure the UART peripheral.
* @param huart UART handle.
* @retval HAL status
*/
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
{
800c218: b580 push {r7, lr}
800c21a: b088 sub sp, #32
800c21c: af00 add r7, sp, #0
800c21e: 6078 str r0, [r7, #4]
uint32_t tmpreg;
uint16_t brrtemp;
UART_ClockSourceTypeDef clocksource;
uint32_t usartdiv;
HAL_StatusTypeDef ret = HAL_OK;
800c220: 2300 movs r3, #0
800c222: 77bb strb r3, [r7, #30]
* the UART Word Length, Parity, Mode and oversampling:
* set the M bits according to huart->Init.WordLength value
* set PCE and PS bits according to huart->Init.Parity value
* set TE and RE bits according to huart->Init.Mode value
* set OVER8 bit according to huart->Init.OverSampling value */
tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;
800c224: 687b ldr r3, [r7, #4]
800c226: 689a ldr r2, [r3, #8]
800c228: 687b ldr r3, [r7, #4]
800c22a: 691b ldr r3, [r3, #16]
800c22c: 431a orrs r2, r3
800c22e: 687b ldr r3, [r7, #4]
800c230: 695b ldr r3, [r3, #20]
800c232: 431a orrs r2, r3
800c234: 687b ldr r3, [r7, #4]
800c236: 69db ldr r3, [r3, #28]
800c238: 4313 orrs r3, r2
800c23a: 617b str r3, [r7, #20]
MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);
800c23c: 687b ldr r3, [r7, #4]
800c23e: 681a ldr r2, [r3, #0]
800c240: 687b ldr r3, [r7, #4]
800c242: 681b ldr r3, [r3, #0]
800c244: 6819 ldr r1, [r3, #0]
800c246: 4bb3 ldr r3, [pc, #716] ; (800c514 <UART_SetConfig+0x2fc>)
800c248: 400b ands r3, r1
800c24a: 6979 ldr r1, [r7, #20]
800c24c: 430b orrs r3, r1
800c24e: 6013 str r3, [r2, #0]
/*-------------------------- USART CR2 Configuration -----------------------*/
/* Configure the UART Stop Bits: Set STOP[13:12] bits according
* to huart->Init.StopBits value */
MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
800c250: 687b ldr r3, [r7, #4]
800c252: 681b ldr r3, [r3, #0]
800c254: 687a ldr r2, [r7, #4]
800c256: 6812 ldr r2, [r2, #0]
800c258: 6852 ldr r2, [r2, #4]
800c25a: f422 5140 bic.w r1, r2, #12288 ; 0x3000
800c25e: 687a ldr r2, [r7, #4]
800c260: 68d2 ldr r2, [r2, #12]
800c262: 430a orrs r2, r1
800c264: 605a str r2, [r3, #4]
/* Configure
* - UART HardWare Flow Control: set CTSE and RTSE bits according
* to huart->Init.HwFlowCtl value
* - one-bit sampling method versus three samples' majority rule according
* to huart->Init.OneBitSampling (not applicable to LPUART) */
tmpreg = (uint32_t)huart->Init.HwFlowCtl;
800c266: 687b ldr r3, [r7, #4]
800c268: 699b ldr r3, [r3, #24]
800c26a: 617b str r3, [r7, #20]
tmpreg |= huart->Init.OneBitSampling;
800c26c: 687b ldr r3, [r7, #4]
800c26e: 6a1b ldr r3, [r3, #32]
800c270: 697a ldr r2, [r7, #20]
800c272: 4313 orrs r3, r2
800c274: 617b str r3, [r7, #20]
MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);
800c276: 687b ldr r3, [r7, #4]
800c278: 681b ldr r3, [r3, #0]
800c27a: 687a ldr r2, [r7, #4]
800c27c: 6812 ldr r2, [r2, #0]
800c27e: 6892 ldr r2, [r2, #8]
800c280: f422 6130 bic.w r1, r2, #2816 ; 0xb00
800c284: 697a ldr r2, [r7, #20]
800c286: 430a orrs r2, r1
800c288: 609a str r2, [r3, #8]
/*-------------------------- USART BRR Configuration -----------------------*/
UART_GETCLOCKSOURCE(huart, clocksource);
800c28a: 687b ldr r3, [r7, #4]
800c28c: 681b ldr r3, [r3, #0]
800c28e: 4aa2 ldr r2, [pc, #648] ; (800c518 <UART_SetConfig+0x300>)
800c290: 4293 cmp r3, r2
800c292: d121 bne.n 800c2d8 <UART_SetConfig+0xc0>
800c294: 4ba1 ldr r3, [pc, #644] ; (800c51c <UART_SetConfig+0x304>)
800c296: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800c29a: f003 0303 and.w r3, r3, #3
800c29e: 2b03 cmp r3, #3
800c2a0: d816 bhi.n 800c2d0 <UART_SetConfig+0xb8>
800c2a2: a201 add r2, pc, #4 ; (adr r2, 800c2a8 <UART_SetConfig+0x90>)
800c2a4: f852 f023 ldr.w pc, [r2, r3, lsl #2]
800c2a8: 0800c2b9 .word 0x0800c2b9
800c2ac: 0800c2c5 .word 0x0800c2c5
800c2b0: 0800c2bf .word 0x0800c2bf
800c2b4: 0800c2cb .word 0x0800c2cb
800c2b8: 2301 movs r3, #1
800c2ba: 77fb strb r3, [r7, #31]
800c2bc: e150 b.n 800c560 <UART_SetConfig+0x348>
800c2be: 2302 movs r3, #2
800c2c0: 77fb strb r3, [r7, #31]
800c2c2: e14d b.n 800c560 <UART_SetConfig+0x348>
800c2c4: 2304 movs r3, #4
800c2c6: 77fb strb r3, [r7, #31]
800c2c8: e14a b.n 800c560 <UART_SetConfig+0x348>
800c2ca: 2308 movs r3, #8
800c2cc: 77fb strb r3, [r7, #31]
800c2ce: e147 b.n 800c560 <UART_SetConfig+0x348>
800c2d0: 2310 movs r3, #16
800c2d2: 77fb strb r3, [r7, #31]
800c2d4: bf00 nop
800c2d6: e143 b.n 800c560 <UART_SetConfig+0x348>
800c2d8: 687b ldr r3, [r7, #4]
800c2da: 681b ldr r3, [r3, #0]
800c2dc: 4a90 ldr r2, [pc, #576] ; (800c520 <UART_SetConfig+0x308>)
800c2de: 4293 cmp r3, r2
800c2e0: d134 bne.n 800c34c <UART_SetConfig+0x134>
800c2e2: 4b8e ldr r3, [pc, #568] ; (800c51c <UART_SetConfig+0x304>)
800c2e4: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800c2e8: f003 030c and.w r3, r3, #12
800c2ec: 2b0c cmp r3, #12
800c2ee: d829 bhi.n 800c344 <UART_SetConfig+0x12c>
800c2f0: a201 add r2, pc, #4 ; (adr r2, 800c2f8 <UART_SetConfig+0xe0>)
800c2f2: f852 f023 ldr.w pc, [r2, r3, lsl #2]
800c2f6: bf00 nop
800c2f8: 0800c32d .word 0x0800c32d
800c2fc: 0800c345 .word 0x0800c345
800c300: 0800c345 .word 0x0800c345
800c304: 0800c345 .word 0x0800c345
800c308: 0800c339 .word 0x0800c339
800c30c: 0800c345 .word 0x0800c345
800c310: 0800c345 .word 0x0800c345
800c314: 0800c345 .word 0x0800c345
800c318: 0800c333 .word 0x0800c333
800c31c: 0800c345 .word 0x0800c345
800c320: 0800c345 .word 0x0800c345
800c324: 0800c345 .word 0x0800c345
800c328: 0800c33f .word 0x0800c33f
800c32c: 2300 movs r3, #0
800c32e: 77fb strb r3, [r7, #31]
800c330: e116 b.n 800c560 <UART_SetConfig+0x348>
800c332: 2302 movs r3, #2
800c334: 77fb strb r3, [r7, #31]
800c336: e113 b.n 800c560 <UART_SetConfig+0x348>
800c338: 2304 movs r3, #4
800c33a: 77fb strb r3, [r7, #31]
800c33c: e110 b.n 800c560 <UART_SetConfig+0x348>
800c33e: 2308 movs r3, #8
800c340: 77fb strb r3, [r7, #31]
800c342: e10d b.n 800c560 <UART_SetConfig+0x348>
800c344: 2310 movs r3, #16
800c346: 77fb strb r3, [r7, #31]
800c348: bf00 nop
800c34a: e109 b.n 800c560 <UART_SetConfig+0x348>
800c34c: 687b ldr r3, [r7, #4]
800c34e: 681b ldr r3, [r3, #0]
800c350: 4a74 ldr r2, [pc, #464] ; (800c524 <UART_SetConfig+0x30c>)
800c352: 4293 cmp r3, r2
800c354: d120 bne.n 800c398 <UART_SetConfig+0x180>
800c356: 4b71 ldr r3, [pc, #452] ; (800c51c <UART_SetConfig+0x304>)
800c358: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800c35c: f003 0330 and.w r3, r3, #48 ; 0x30
800c360: 2b10 cmp r3, #16
800c362: d00f beq.n 800c384 <UART_SetConfig+0x16c>
800c364: 2b10 cmp r3, #16
800c366: d802 bhi.n 800c36e <UART_SetConfig+0x156>
800c368: 2b00 cmp r3, #0
800c36a: d005 beq.n 800c378 <UART_SetConfig+0x160>
800c36c: e010 b.n 800c390 <UART_SetConfig+0x178>
800c36e: 2b20 cmp r3, #32
800c370: d005 beq.n 800c37e <UART_SetConfig+0x166>
800c372: 2b30 cmp r3, #48 ; 0x30
800c374: d009 beq.n 800c38a <UART_SetConfig+0x172>
800c376: e00b b.n 800c390 <UART_SetConfig+0x178>
800c378: 2300 movs r3, #0
800c37a: 77fb strb r3, [r7, #31]
800c37c: e0f0 b.n 800c560 <UART_SetConfig+0x348>
800c37e: 2302 movs r3, #2
800c380: 77fb strb r3, [r7, #31]
800c382: e0ed b.n 800c560 <UART_SetConfig+0x348>
800c384: 2304 movs r3, #4
800c386: 77fb strb r3, [r7, #31]
800c388: e0ea b.n 800c560 <UART_SetConfig+0x348>
800c38a: 2308 movs r3, #8
800c38c: 77fb strb r3, [r7, #31]
800c38e: e0e7 b.n 800c560 <UART_SetConfig+0x348>
800c390: 2310 movs r3, #16
800c392: 77fb strb r3, [r7, #31]
800c394: bf00 nop
800c396: e0e3 b.n 800c560 <UART_SetConfig+0x348>
800c398: 687b ldr r3, [r7, #4]
800c39a: 681b ldr r3, [r3, #0]
800c39c: 4a62 ldr r2, [pc, #392] ; (800c528 <UART_SetConfig+0x310>)
800c39e: 4293 cmp r3, r2
800c3a0: d120 bne.n 800c3e4 <UART_SetConfig+0x1cc>
800c3a2: 4b5e ldr r3, [pc, #376] ; (800c51c <UART_SetConfig+0x304>)
800c3a4: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800c3a8: f003 03c0 and.w r3, r3, #192 ; 0xc0
800c3ac: 2b40 cmp r3, #64 ; 0x40
800c3ae: d00f beq.n 800c3d0 <UART_SetConfig+0x1b8>
800c3b0: 2b40 cmp r3, #64 ; 0x40
800c3b2: d802 bhi.n 800c3ba <UART_SetConfig+0x1a2>
800c3b4: 2b00 cmp r3, #0
800c3b6: d005 beq.n 800c3c4 <UART_SetConfig+0x1ac>
800c3b8: e010 b.n 800c3dc <UART_SetConfig+0x1c4>
800c3ba: 2b80 cmp r3, #128 ; 0x80
800c3bc: d005 beq.n 800c3ca <UART_SetConfig+0x1b2>
800c3be: 2bc0 cmp r3, #192 ; 0xc0
800c3c0: d009 beq.n 800c3d6 <UART_SetConfig+0x1be>
800c3c2: e00b b.n 800c3dc <UART_SetConfig+0x1c4>
800c3c4: 2300 movs r3, #0
800c3c6: 77fb strb r3, [r7, #31]
800c3c8: e0ca b.n 800c560 <UART_SetConfig+0x348>
800c3ca: 2302 movs r3, #2
800c3cc: 77fb strb r3, [r7, #31]
800c3ce: e0c7 b.n 800c560 <UART_SetConfig+0x348>
800c3d0: 2304 movs r3, #4
800c3d2: 77fb strb r3, [r7, #31]
800c3d4: e0c4 b.n 800c560 <UART_SetConfig+0x348>
800c3d6: 2308 movs r3, #8
800c3d8: 77fb strb r3, [r7, #31]
800c3da: e0c1 b.n 800c560 <UART_SetConfig+0x348>
800c3dc: 2310 movs r3, #16
800c3de: 77fb strb r3, [r7, #31]
800c3e0: bf00 nop
800c3e2: e0bd b.n 800c560 <UART_SetConfig+0x348>
800c3e4: 687b ldr r3, [r7, #4]
800c3e6: 681b ldr r3, [r3, #0]
800c3e8: 4a50 ldr r2, [pc, #320] ; (800c52c <UART_SetConfig+0x314>)
800c3ea: 4293 cmp r3, r2
800c3ec: d124 bne.n 800c438 <UART_SetConfig+0x220>
800c3ee: 4b4b ldr r3, [pc, #300] ; (800c51c <UART_SetConfig+0x304>)
800c3f0: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800c3f4: f403 7340 and.w r3, r3, #768 ; 0x300
800c3f8: f5b3 7f80 cmp.w r3, #256 ; 0x100
800c3fc: d012 beq.n 800c424 <UART_SetConfig+0x20c>
800c3fe: f5b3 7f80 cmp.w r3, #256 ; 0x100
800c402: d802 bhi.n 800c40a <UART_SetConfig+0x1f2>
800c404: 2b00 cmp r3, #0
800c406: d007 beq.n 800c418 <UART_SetConfig+0x200>
800c408: e012 b.n 800c430 <UART_SetConfig+0x218>
800c40a: f5b3 7f00 cmp.w r3, #512 ; 0x200
800c40e: d006 beq.n 800c41e <UART_SetConfig+0x206>
800c410: f5b3 7f40 cmp.w r3, #768 ; 0x300
800c414: d009 beq.n 800c42a <UART_SetConfig+0x212>
800c416: e00b b.n 800c430 <UART_SetConfig+0x218>
800c418: 2300 movs r3, #0
800c41a: 77fb strb r3, [r7, #31]
800c41c: e0a0 b.n 800c560 <UART_SetConfig+0x348>
800c41e: 2302 movs r3, #2
800c420: 77fb strb r3, [r7, #31]
800c422: e09d b.n 800c560 <UART_SetConfig+0x348>
800c424: 2304 movs r3, #4
800c426: 77fb strb r3, [r7, #31]
800c428: e09a b.n 800c560 <UART_SetConfig+0x348>
800c42a: 2308 movs r3, #8
800c42c: 77fb strb r3, [r7, #31]
800c42e: e097 b.n 800c560 <UART_SetConfig+0x348>
800c430: 2310 movs r3, #16
800c432: 77fb strb r3, [r7, #31]
800c434: bf00 nop
800c436: e093 b.n 800c560 <UART_SetConfig+0x348>
800c438: 687b ldr r3, [r7, #4]
800c43a: 681b ldr r3, [r3, #0]
800c43c: 4a3c ldr r2, [pc, #240] ; (800c530 <UART_SetConfig+0x318>)
800c43e: 4293 cmp r3, r2
800c440: d124 bne.n 800c48c <UART_SetConfig+0x274>
800c442: 4b36 ldr r3, [pc, #216] ; (800c51c <UART_SetConfig+0x304>)
800c444: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800c448: f403 6340 and.w r3, r3, #3072 ; 0xc00
800c44c: f5b3 6f80 cmp.w r3, #1024 ; 0x400
800c450: d012 beq.n 800c478 <UART_SetConfig+0x260>
800c452: f5b3 6f80 cmp.w r3, #1024 ; 0x400
800c456: d802 bhi.n 800c45e <UART_SetConfig+0x246>
800c458: 2b00 cmp r3, #0
800c45a: d007 beq.n 800c46c <UART_SetConfig+0x254>
800c45c: e012 b.n 800c484 <UART_SetConfig+0x26c>
800c45e: f5b3 6f00 cmp.w r3, #2048 ; 0x800
800c462: d006 beq.n 800c472 <UART_SetConfig+0x25a>
800c464: f5b3 6f40 cmp.w r3, #3072 ; 0xc00
800c468: d009 beq.n 800c47e <UART_SetConfig+0x266>
800c46a: e00b b.n 800c484 <UART_SetConfig+0x26c>
800c46c: 2301 movs r3, #1
800c46e: 77fb strb r3, [r7, #31]
800c470: e076 b.n 800c560 <UART_SetConfig+0x348>
800c472: 2302 movs r3, #2
800c474: 77fb strb r3, [r7, #31]
800c476: e073 b.n 800c560 <UART_SetConfig+0x348>
800c478: 2304 movs r3, #4
800c47a: 77fb strb r3, [r7, #31]
800c47c: e070 b.n 800c560 <UART_SetConfig+0x348>
800c47e: 2308 movs r3, #8
800c480: 77fb strb r3, [r7, #31]
800c482: e06d b.n 800c560 <UART_SetConfig+0x348>
800c484: 2310 movs r3, #16
800c486: 77fb strb r3, [r7, #31]
800c488: bf00 nop
800c48a: e069 b.n 800c560 <UART_SetConfig+0x348>
800c48c: 687b ldr r3, [r7, #4]
800c48e: 681b ldr r3, [r3, #0]
800c490: 4a28 ldr r2, [pc, #160] ; (800c534 <UART_SetConfig+0x31c>)
800c492: 4293 cmp r3, r2
800c494: d124 bne.n 800c4e0 <UART_SetConfig+0x2c8>
800c496: 4b21 ldr r3, [pc, #132] ; (800c51c <UART_SetConfig+0x304>)
800c498: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800c49c: f403 5340 and.w r3, r3, #12288 ; 0x3000
800c4a0: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
800c4a4: d012 beq.n 800c4cc <UART_SetConfig+0x2b4>
800c4a6: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
800c4aa: d802 bhi.n 800c4b2 <UART_SetConfig+0x29a>
800c4ac: 2b00 cmp r3, #0
800c4ae: d007 beq.n 800c4c0 <UART_SetConfig+0x2a8>
800c4b0: e012 b.n 800c4d8 <UART_SetConfig+0x2c0>
800c4b2: f5b3 5f00 cmp.w r3, #8192 ; 0x2000
800c4b6: d006 beq.n 800c4c6 <UART_SetConfig+0x2ae>
800c4b8: f5b3 5f40 cmp.w r3, #12288 ; 0x3000
800c4bc: d009 beq.n 800c4d2 <UART_SetConfig+0x2ba>
800c4be: e00b b.n 800c4d8 <UART_SetConfig+0x2c0>
800c4c0: 2300 movs r3, #0
800c4c2: 77fb strb r3, [r7, #31]
800c4c4: e04c b.n 800c560 <UART_SetConfig+0x348>
800c4c6: 2302 movs r3, #2
800c4c8: 77fb strb r3, [r7, #31]
800c4ca: e049 b.n 800c560 <UART_SetConfig+0x348>
800c4cc: 2304 movs r3, #4
800c4ce: 77fb strb r3, [r7, #31]
800c4d0: e046 b.n 800c560 <UART_SetConfig+0x348>
800c4d2: 2308 movs r3, #8
800c4d4: 77fb strb r3, [r7, #31]
800c4d6: e043 b.n 800c560 <UART_SetConfig+0x348>
800c4d8: 2310 movs r3, #16
800c4da: 77fb strb r3, [r7, #31]
800c4dc: bf00 nop
800c4de: e03f b.n 800c560 <UART_SetConfig+0x348>
800c4e0: 687b ldr r3, [r7, #4]
800c4e2: 681b ldr r3, [r3, #0]
800c4e4: 4a14 ldr r2, [pc, #80] ; (800c538 <UART_SetConfig+0x320>)
800c4e6: 4293 cmp r3, r2
800c4e8: d138 bne.n 800c55c <UART_SetConfig+0x344>
800c4ea: 4b0c ldr r3, [pc, #48] ; (800c51c <UART_SetConfig+0x304>)
800c4ec: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
800c4f0: f403 4340 and.w r3, r3, #49152 ; 0xc000
800c4f4: f5b3 4f80 cmp.w r3, #16384 ; 0x4000
800c4f8: d026 beq.n 800c548 <UART_SetConfig+0x330>
800c4fa: f5b3 4f80 cmp.w r3, #16384 ; 0x4000
800c4fe: d802 bhi.n 800c506 <UART_SetConfig+0x2ee>
800c500: 2b00 cmp r3, #0
800c502: d01b beq.n 800c53c <UART_SetConfig+0x324>
800c504: e026 b.n 800c554 <UART_SetConfig+0x33c>
800c506: f5b3 4f00 cmp.w r3, #32768 ; 0x8000
800c50a: d01a beq.n 800c542 <UART_SetConfig+0x32a>
800c50c: f5b3 4f40 cmp.w r3, #49152 ; 0xc000
800c510: d01d beq.n 800c54e <UART_SetConfig+0x336>
800c512: e01f b.n 800c554 <UART_SetConfig+0x33c>
800c514: efff69f3 .word 0xefff69f3
800c518: 40011000 .word 0x40011000
800c51c: 40023800 .word 0x40023800
800c520: 40004400 .word 0x40004400
800c524: 40004800 .word 0x40004800
800c528: 40004c00 .word 0x40004c00
800c52c: 40005000 .word 0x40005000
800c530: 40011400 .word 0x40011400
800c534: 40007800 .word 0x40007800
800c538: 40007c00 .word 0x40007c00
800c53c: 2300 movs r3, #0
800c53e: 77fb strb r3, [r7, #31]
800c540: e00e b.n 800c560 <UART_SetConfig+0x348>
800c542: 2302 movs r3, #2
800c544: 77fb strb r3, [r7, #31]
800c546: e00b b.n 800c560 <UART_SetConfig+0x348>
800c548: 2304 movs r3, #4
800c54a: 77fb strb r3, [r7, #31]
800c54c: e008 b.n 800c560 <UART_SetConfig+0x348>
800c54e: 2308 movs r3, #8
800c550: 77fb strb r3, [r7, #31]
800c552: e005 b.n 800c560 <UART_SetConfig+0x348>
800c554: 2310 movs r3, #16
800c556: 77fb strb r3, [r7, #31]
800c558: bf00 nop
800c55a: e001 b.n 800c560 <UART_SetConfig+0x348>
800c55c: 2310 movs r3, #16
800c55e: 77fb strb r3, [r7, #31]
if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
800c560: 687b ldr r3, [r7, #4]
800c562: 69db ldr r3, [r3, #28]
800c564: f5b3 4f00 cmp.w r3, #32768 ; 0x8000
800c568: d15b bne.n 800c622 <UART_SetConfig+0x40a>
{
switch (clocksource)
800c56a: 7ffb ldrb r3, [r7, #31]
800c56c: 2b08 cmp r3, #8
800c56e: d828 bhi.n 800c5c2 <UART_SetConfig+0x3aa>
800c570: a201 add r2, pc, #4 ; (adr r2, 800c578 <UART_SetConfig+0x360>)
800c572: f852 f023 ldr.w pc, [r2, r3, lsl #2]
800c576: bf00 nop
800c578: 0800c59d .word 0x0800c59d
800c57c: 0800c5a5 .word 0x0800c5a5
800c580: 0800c5ad .word 0x0800c5ad
800c584: 0800c5c3 .word 0x0800c5c3
800c588: 0800c5b3 .word 0x0800c5b3
800c58c: 0800c5c3 .word 0x0800c5c3
800c590: 0800c5c3 .word 0x0800c5c3
800c594: 0800c5c3 .word 0x0800c5c3
800c598: 0800c5bb .word 0x0800c5bb
{
case UART_CLOCKSOURCE_PCLK1:
pclk = HAL_RCC_GetPCLK1Freq();
800c59c: f7fe f8d8 bl 800a750 <HAL_RCC_GetPCLK1Freq>
800c5a0: 61b8 str r0, [r7, #24]
break;
800c5a2: e013 b.n 800c5cc <UART_SetConfig+0x3b4>
case UART_CLOCKSOURCE_PCLK2:
pclk = HAL_RCC_GetPCLK2Freq();
800c5a4: f7fe f8e8 bl 800a778 <HAL_RCC_GetPCLK2Freq>
800c5a8: 61b8 str r0, [r7, #24]
break;
800c5aa: e00f b.n 800c5cc <UART_SetConfig+0x3b4>
case UART_CLOCKSOURCE_HSI:
pclk = (uint32_t) HSI_VALUE;
800c5ac: 4b49 ldr r3, [pc, #292] ; (800c6d4 <UART_SetConfig+0x4bc>)
800c5ae: 61bb str r3, [r7, #24]
break;
800c5b0: e00c b.n 800c5cc <UART_SetConfig+0x3b4>
case UART_CLOCKSOURCE_SYSCLK:
pclk = HAL_RCC_GetSysClockFreq();
800c5b2: f7fe f80b bl 800a5cc <HAL_RCC_GetSysClockFreq>
800c5b6: 61b8 str r0, [r7, #24]
break;
800c5b8: e008 b.n 800c5cc <UART_SetConfig+0x3b4>
case UART_CLOCKSOURCE_LSE:
pclk = (uint32_t) LSE_VALUE;
800c5ba: f44f 4300 mov.w r3, #32768 ; 0x8000
800c5be: 61bb str r3, [r7, #24]
break;
800c5c0: e004 b.n 800c5cc <UART_SetConfig+0x3b4>
default:
pclk = 0U;
800c5c2: 2300 movs r3, #0
800c5c4: 61bb str r3, [r7, #24]
ret = HAL_ERROR;
800c5c6: 2301 movs r3, #1
800c5c8: 77bb strb r3, [r7, #30]
break;
800c5ca: bf00 nop
}
/* USARTDIV must be greater than or equal to 0d16 */
if (pclk != 0U)
800c5cc: 69bb ldr r3, [r7, #24]
800c5ce: 2b00 cmp r3, #0
800c5d0: d074 beq.n 800c6bc <UART_SetConfig+0x4a4>
{
usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate));
800c5d2: 69bb ldr r3, [r7, #24]
800c5d4: 005a lsls r2, r3, #1
800c5d6: 687b ldr r3, [r7, #4]
800c5d8: 685b ldr r3, [r3, #4]
800c5da: 085b lsrs r3, r3, #1
800c5dc: 441a add r2, r3
800c5de: 687b ldr r3, [r7, #4]
800c5e0: 685b ldr r3, [r3, #4]
800c5e2: fbb2 f3f3 udiv r3, r2, r3
800c5e6: 613b str r3, [r7, #16]
if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
800c5e8: 693b ldr r3, [r7, #16]
800c5ea: 2b0f cmp r3, #15
800c5ec: d916 bls.n 800c61c <UART_SetConfig+0x404>
800c5ee: 693b ldr r3, [r7, #16]
800c5f0: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
800c5f4: d212 bcs.n 800c61c <UART_SetConfig+0x404>
{
brrtemp = (uint16_t)(usartdiv & 0xFFF0U);
800c5f6: 693b ldr r3, [r7, #16]
800c5f8: b29b uxth r3, r3
800c5fa: f023 030f bic.w r3, r3, #15
800c5fe: 81fb strh r3, [r7, #14]
brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);
800c600: 693b ldr r3, [r7, #16]
800c602: 085b lsrs r3, r3, #1
800c604: b29b uxth r3, r3
800c606: f003 0307 and.w r3, r3, #7
800c60a: b29a uxth r2, r3
800c60c: 89fb ldrh r3, [r7, #14]
800c60e: 4313 orrs r3, r2
800c610: 81fb strh r3, [r7, #14]
huart->Instance->BRR = brrtemp;
800c612: 687b ldr r3, [r7, #4]
800c614: 681b ldr r3, [r3, #0]
800c616: 89fa ldrh r2, [r7, #14]
800c618: 60da str r2, [r3, #12]
800c61a: e04f b.n 800c6bc <UART_SetConfig+0x4a4>
}
else
{
ret = HAL_ERROR;
800c61c: 2301 movs r3, #1
800c61e: 77bb strb r3, [r7, #30]
800c620: e04c b.n 800c6bc <UART_SetConfig+0x4a4>
}
}
}
else
{
switch (clocksource)
800c622: 7ffb ldrb r3, [r7, #31]
800c624: 2b08 cmp r3, #8
800c626: d828 bhi.n 800c67a <UART_SetConfig+0x462>
800c628: a201 add r2, pc, #4 ; (adr r2, 800c630 <UART_SetConfig+0x418>)
800c62a: f852 f023 ldr.w pc, [r2, r3, lsl #2]
800c62e: bf00 nop
800c630: 0800c655 .word 0x0800c655
800c634: 0800c65d .word 0x0800c65d
800c638: 0800c665 .word 0x0800c665
800c63c: 0800c67b .word 0x0800c67b
800c640: 0800c66b .word 0x0800c66b
800c644: 0800c67b .word 0x0800c67b
800c648: 0800c67b .word 0x0800c67b
800c64c: 0800c67b .word 0x0800c67b
800c650: 0800c673 .word 0x0800c673
{
case UART_CLOCKSOURCE_PCLK1:
pclk = HAL_RCC_GetPCLK1Freq();
800c654: f7fe f87c bl 800a750 <HAL_RCC_GetPCLK1Freq>
800c658: 61b8 str r0, [r7, #24]
break;
800c65a: e013 b.n 800c684 <UART_SetConfig+0x46c>
case UART_CLOCKSOURCE_PCLK2:
pclk = HAL_RCC_GetPCLK2Freq();
800c65c: f7fe f88c bl 800a778 <HAL_RCC_GetPCLK2Freq>
800c660: 61b8 str r0, [r7, #24]
break;
800c662: e00f b.n 800c684 <UART_SetConfig+0x46c>
case UART_CLOCKSOURCE_HSI:
pclk = (uint32_t) HSI_VALUE;
800c664: 4b1b ldr r3, [pc, #108] ; (800c6d4 <UART_SetConfig+0x4bc>)
800c666: 61bb str r3, [r7, #24]
break;
800c668: e00c b.n 800c684 <UART_SetConfig+0x46c>
case UART_CLOCKSOURCE_SYSCLK:
pclk = HAL_RCC_GetSysClockFreq();
800c66a: f7fd ffaf bl 800a5cc <HAL_RCC_GetSysClockFreq>
800c66e: 61b8 str r0, [r7, #24]
break;
800c670: e008 b.n 800c684 <UART_SetConfig+0x46c>
case UART_CLOCKSOURCE_LSE:
pclk = (uint32_t) LSE_VALUE;
800c672: f44f 4300 mov.w r3, #32768 ; 0x8000
800c676: 61bb str r3, [r7, #24]
break;
800c678: e004 b.n 800c684 <UART_SetConfig+0x46c>
default:
pclk = 0U;
800c67a: 2300 movs r3, #0
800c67c: 61bb str r3, [r7, #24]
ret = HAL_ERROR;
800c67e: 2301 movs r3, #1
800c680: 77bb strb r3, [r7, #30]
break;
800c682: bf00 nop
}
if (pclk != 0U)
800c684: 69bb ldr r3, [r7, #24]
800c686: 2b00 cmp r3, #0
800c688: d018 beq.n 800c6bc <UART_SetConfig+0x4a4>
{
/* USARTDIV must be greater than or equal to 0d16 */
usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate));
800c68a: 687b ldr r3, [r7, #4]
800c68c: 685b ldr r3, [r3, #4]
800c68e: 085a lsrs r2, r3, #1
800c690: 69bb ldr r3, [r7, #24]
800c692: 441a add r2, r3
800c694: 687b ldr r3, [r7, #4]
800c696: 685b ldr r3, [r3, #4]
800c698: fbb2 f3f3 udiv r3, r2, r3
800c69c: 613b str r3, [r7, #16]
if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
800c69e: 693b ldr r3, [r7, #16]
800c6a0: 2b0f cmp r3, #15
800c6a2: d909 bls.n 800c6b8 <UART_SetConfig+0x4a0>
800c6a4: 693b ldr r3, [r7, #16]
800c6a6: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
800c6aa: d205 bcs.n 800c6b8 <UART_SetConfig+0x4a0>
{
huart->Instance->BRR = (uint16_t)usartdiv;
800c6ac: 687b ldr r3, [r7, #4]
800c6ae: 681b ldr r3, [r3, #0]
800c6b0: 693a ldr r2, [r7, #16]
800c6b2: b292 uxth r2, r2
800c6b4: 60da str r2, [r3, #12]
800c6b6: e001 b.n 800c6bc <UART_SetConfig+0x4a4>
}
else
{
ret = HAL_ERROR;
800c6b8: 2301 movs r3, #1
800c6ba: 77bb strb r3, [r7, #30]
}
}
/* Clear ISR function pointers */
huart->RxISR = NULL;
800c6bc: 687b ldr r3, [r7, #4]
800c6be: 2200 movs r2, #0
800c6c0: 665a str r2, [r3, #100] ; 0x64
huart->TxISR = NULL;
800c6c2: 687b ldr r3, [r7, #4]
800c6c4: 2200 movs r2, #0
800c6c6: 669a str r2, [r3, #104] ; 0x68
return ret;
800c6c8: 7fbb ldrb r3, [r7, #30]
}
800c6ca: 4618 mov r0, r3
800c6cc: 3720 adds r7, #32
800c6ce: 46bd mov sp, r7
800c6d0: bd80 pop {r7, pc}
800c6d2: bf00 nop
800c6d4: 00f42400 .word 0x00f42400
0800c6d8 <UART_AdvFeatureConfig>:
* @brief Configure the UART peripheral advanced features.
* @param huart UART handle.
* @retval None
*/
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
{
800c6d8: b480 push {r7}
800c6da: b083 sub sp, #12
800c6dc: af00 add r7, sp, #0
800c6de: 6078 str r0, [r7, #4]
/* Check whether the set of advanced features to configure is properly set */
assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit));
/* if required, configure TX pin active level inversion */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT))
800c6e0: 687b ldr r3, [r7, #4]
800c6e2: 6a5b ldr r3, [r3, #36] ; 0x24
800c6e4: f003 0301 and.w r3, r3, #1
800c6e8: 2b00 cmp r3, #0
800c6ea: d00a beq.n 800c702 <UART_AdvFeatureConfig+0x2a>
{
assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert));
MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert);
800c6ec: 687b ldr r3, [r7, #4]
800c6ee: 681b ldr r3, [r3, #0]
800c6f0: 687a ldr r2, [r7, #4]
800c6f2: 6812 ldr r2, [r2, #0]
800c6f4: 6852 ldr r2, [r2, #4]
800c6f6: f422 3100 bic.w r1, r2, #131072 ; 0x20000
800c6fa: 687a ldr r2, [r7, #4]
800c6fc: 6a92 ldr r2, [r2, #40] ; 0x28
800c6fe: 430a orrs r2, r1
800c700: 605a str r2, [r3, #4]
}
/* if required, configure RX pin active level inversion */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT))
800c702: 687b ldr r3, [r7, #4]
800c704: 6a5b ldr r3, [r3, #36] ; 0x24
800c706: f003 0302 and.w r3, r3, #2
800c70a: 2b00 cmp r3, #0
800c70c: d00a beq.n 800c724 <UART_AdvFeatureConfig+0x4c>
{
assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert));
MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert);
800c70e: 687b ldr r3, [r7, #4]
800c710: 681b ldr r3, [r3, #0]
800c712: 687a ldr r2, [r7, #4]
800c714: 6812 ldr r2, [r2, #0]
800c716: 6852 ldr r2, [r2, #4]
800c718: f422 3180 bic.w r1, r2, #65536 ; 0x10000
800c71c: 687a ldr r2, [r7, #4]
800c71e: 6ad2 ldr r2, [r2, #44] ; 0x2c
800c720: 430a orrs r2, r1
800c722: 605a str r2, [r3, #4]
}
/* if required, configure data inversion */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT))
800c724: 687b ldr r3, [r7, #4]
800c726: 6a5b ldr r3, [r3, #36] ; 0x24
800c728: f003 0304 and.w r3, r3, #4
800c72c: 2b00 cmp r3, #0
800c72e: d00a beq.n 800c746 <UART_AdvFeatureConfig+0x6e>
{
assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert));
MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert);
800c730: 687b ldr r3, [r7, #4]
800c732: 681b ldr r3, [r3, #0]
800c734: 687a ldr r2, [r7, #4]
800c736: 6812 ldr r2, [r2, #0]
800c738: 6852 ldr r2, [r2, #4]
800c73a: f422 2180 bic.w r1, r2, #262144 ; 0x40000
800c73e: 687a ldr r2, [r7, #4]
800c740: 6b12 ldr r2, [r2, #48] ; 0x30
800c742: 430a orrs r2, r1
800c744: 605a str r2, [r3, #4]
}
/* if required, configure RX/TX pins swap */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT))
800c746: 687b ldr r3, [r7, #4]
800c748: 6a5b ldr r3, [r3, #36] ; 0x24
800c74a: f003 0308 and.w r3, r3, #8
800c74e: 2b00 cmp r3, #0
800c750: d00a beq.n 800c768 <UART_AdvFeatureConfig+0x90>
{
assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap));
MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap);
800c752: 687b ldr r3, [r7, #4]
800c754: 681b ldr r3, [r3, #0]
800c756: 687a ldr r2, [r7, #4]
800c758: 6812 ldr r2, [r2, #0]
800c75a: 6852 ldr r2, [r2, #4]
800c75c: f422 4100 bic.w r1, r2, #32768 ; 0x8000
800c760: 687a ldr r2, [r7, #4]
800c762: 6b52 ldr r2, [r2, #52] ; 0x34
800c764: 430a orrs r2, r1
800c766: 605a str r2, [r3, #4]
}
/* if required, configure RX overrun detection disabling */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT))
800c768: 687b ldr r3, [r7, #4]
800c76a: 6a5b ldr r3, [r3, #36] ; 0x24
800c76c: f003 0310 and.w r3, r3, #16
800c770: 2b00 cmp r3, #0
800c772: d00a beq.n 800c78a <UART_AdvFeatureConfig+0xb2>
{
assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable));
MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable);
800c774: 687b ldr r3, [r7, #4]
800c776: 681b ldr r3, [r3, #0]
800c778: 687a ldr r2, [r7, #4]
800c77a: 6812 ldr r2, [r2, #0]
800c77c: 6892 ldr r2, [r2, #8]
800c77e: f422 5180 bic.w r1, r2, #4096 ; 0x1000
800c782: 687a ldr r2, [r7, #4]
800c784: 6b92 ldr r2, [r2, #56] ; 0x38
800c786: 430a orrs r2, r1
800c788: 609a str r2, [r3, #8]
}
/* if required, configure DMA disabling on reception error */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT))
800c78a: 687b ldr r3, [r7, #4]
800c78c: 6a5b ldr r3, [r3, #36] ; 0x24
800c78e: f003 0320 and.w r3, r3, #32
800c792: 2b00 cmp r3, #0
800c794: d00a beq.n 800c7ac <UART_AdvFeatureConfig+0xd4>
{
assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError));
MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError);
800c796: 687b ldr r3, [r7, #4]
800c798: 681b ldr r3, [r3, #0]
800c79a: 687a ldr r2, [r7, #4]
800c79c: 6812 ldr r2, [r2, #0]
800c79e: 6892 ldr r2, [r2, #8]
800c7a0: f422 5100 bic.w r1, r2, #8192 ; 0x2000
800c7a4: 687a ldr r2, [r7, #4]
800c7a6: 6bd2 ldr r2, [r2, #60] ; 0x3c
800c7a8: 430a orrs r2, r1
800c7aa: 609a str r2, [r3, #8]
}
/* if required, configure auto Baud rate detection scheme */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT))
800c7ac: 687b ldr r3, [r7, #4]
800c7ae: 6a5b ldr r3, [r3, #36] ; 0x24
800c7b0: f003 0340 and.w r3, r3, #64 ; 0x40
800c7b4: 2b00 cmp r3, #0
800c7b6: d01a beq.n 800c7ee <UART_AdvFeatureConfig+0x116>
{
assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance));
assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable));
MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable);
800c7b8: 687b ldr r3, [r7, #4]
800c7ba: 681b ldr r3, [r3, #0]
800c7bc: 687a ldr r2, [r7, #4]
800c7be: 6812 ldr r2, [r2, #0]
800c7c0: 6852 ldr r2, [r2, #4]
800c7c2: f422 1180 bic.w r1, r2, #1048576 ; 0x100000
800c7c6: 687a ldr r2, [r7, #4]
800c7c8: 6c12 ldr r2, [r2, #64] ; 0x40
800c7ca: 430a orrs r2, r1
800c7cc: 605a str r2, [r3, #4]
/* set auto Baudrate detection parameters if detection is enabled */
if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)
800c7ce: 687b ldr r3, [r7, #4]
800c7d0: 6c1b ldr r3, [r3, #64] ; 0x40
800c7d2: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000
800c7d6: d10a bne.n 800c7ee <UART_AdvFeatureConfig+0x116>
{
assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode));
MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode);
800c7d8: 687b ldr r3, [r7, #4]
800c7da: 681b ldr r3, [r3, #0]
800c7dc: 687a ldr r2, [r7, #4]
800c7de: 6812 ldr r2, [r2, #0]
800c7e0: 6852 ldr r2, [r2, #4]
800c7e2: f422 01c0 bic.w r1, r2, #6291456 ; 0x600000
800c7e6: 687a ldr r2, [r7, #4]
800c7e8: 6c52 ldr r2, [r2, #68] ; 0x44
800c7ea: 430a orrs r2, r1
800c7ec: 605a str r2, [r3, #4]
}
}
/* if required, configure MSB first on communication line */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT))
800c7ee: 687b ldr r3, [r7, #4]
800c7f0: 6a5b ldr r3, [r3, #36] ; 0x24
800c7f2: f003 0380 and.w r3, r3, #128 ; 0x80
800c7f6: 2b00 cmp r3, #0
800c7f8: d00a beq.n 800c810 <UART_AdvFeatureConfig+0x138>
{
assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst));
MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst);
800c7fa: 687b ldr r3, [r7, #4]
800c7fc: 681b ldr r3, [r3, #0]
800c7fe: 687a ldr r2, [r7, #4]
800c800: 6812 ldr r2, [r2, #0]
800c802: 6852 ldr r2, [r2, #4]
800c804: f422 2100 bic.w r1, r2, #524288 ; 0x80000
800c808: 687a ldr r2, [r7, #4]
800c80a: 6c92 ldr r2, [r2, #72] ; 0x48
800c80c: 430a orrs r2, r1
800c80e: 605a str r2, [r3, #4]
}
}
800c810: bf00 nop
800c812: 370c adds r7, #12
800c814: 46bd mov sp, r7
800c816: f85d 7b04 ldr.w r7, [sp], #4
800c81a: 4770 bx lr
0800c81c <UART_CheckIdleState>:
* @brief Check the UART Idle State.
* @param huart UART handle.
* @retval HAL status
*/
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
{
800c81c: b580 push {r7, lr}
800c81e: b086 sub sp, #24
800c820: af02 add r7, sp, #8
800c822: 6078 str r0, [r7, #4]
uint32_t tickstart;
/* Initialize the UART ErrorCode */
huart->ErrorCode = HAL_UART_ERROR_NONE;
800c824: 687b ldr r3, [r7, #4]
800c826: 2200 movs r2, #0
800c828: f8c3 2080 str.w r2, [r3, #128] ; 0x80
/* Init tickstart for timeout management */
tickstart = HAL_GetTick();
800c82c: f7fb ff40 bl 80086b0 <HAL_GetTick>
800c830: 60f8 str r0, [r7, #12]
/* Check if the Transmitter is enabled */
if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)
800c832: 687b ldr r3, [r7, #4]
800c834: 681b ldr r3, [r3, #0]
800c836: 681b ldr r3, [r3, #0]
800c838: f003 0308 and.w r3, r3, #8
800c83c: 2b08 cmp r3, #8
800c83e: d10e bne.n 800c85e <UART_CheckIdleState+0x42>
{
/* Wait until TEACK flag is set */
if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
800c840: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000
800c844: 9300 str r3, [sp, #0]
800c846: 68fb ldr r3, [r7, #12]
800c848: 2200 movs r2, #0
800c84a: f44f 1100 mov.w r1, #2097152 ; 0x200000
800c84e: 6878 ldr r0, [r7, #4]
800c850: f000 f82d bl 800c8ae <UART_WaitOnFlagUntilTimeout>
800c854: 4603 mov r3, r0
800c856: 2b00 cmp r3, #0
800c858: d001 beq.n 800c85e <UART_CheckIdleState+0x42>
{
/* Timeout occurred */
return HAL_TIMEOUT;
800c85a: 2303 movs r3, #3
800c85c: e023 b.n 800c8a6 <UART_CheckIdleState+0x8a>
}
}
#if defined(USART_ISR_REACK)
/* Check if the Receiver is enabled */
if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE)
800c85e: 687b ldr r3, [r7, #4]
800c860: 681b ldr r3, [r3, #0]
800c862: 681b ldr r3, [r3, #0]
800c864: f003 0304 and.w r3, r3, #4
800c868: 2b04 cmp r3, #4
800c86a: d10e bne.n 800c88a <UART_CheckIdleState+0x6e>
{
/* Wait until REACK flag is set */
if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
800c86c: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000
800c870: 9300 str r3, [sp, #0]
800c872: 68fb ldr r3, [r7, #12]
800c874: 2200 movs r2, #0
800c876: f44f 0180 mov.w r1, #4194304 ; 0x400000
800c87a: 6878 ldr r0, [r7, #4]
800c87c: f000 f817 bl 800c8ae <UART_WaitOnFlagUntilTimeout>
800c880: 4603 mov r3, r0
800c882: 2b00 cmp r3, #0
800c884: d001 beq.n 800c88a <UART_CheckIdleState+0x6e>
{
/* Timeout occurred */
return HAL_TIMEOUT;
800c886: 2303 movs r3, #3
800c888: e00d b.n 800c8a6 <UART_CheckIdleState+0x8a>
}
}
#endif
/* Initialize the UART State */
huart->gState = HAL_UART_STATE_READY;
800c88a: 687b ldr r3, [r7, #4]
800c88c: 2220 movs r2, #32
800c88e: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_READY;
800c890: 687b ldr r3, [r7, #4]
800c892: 2220 movs r2, #32
800c894: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
800c896: 687b ldr r3, [r7, #4]
800c898: 2200 movs r2, #0
800c89a: 661a str r2, [r3, #96] ; 0x60
__HAL_UNLOCK(huart);
800c89c: 687b ldr r3, [r7, #4]
800c89e: 2200 movs r2, #0
800c8a0: f883 2074 strb.w r2, [r3, #116] ; 0x74
return HAL_OK;
800c8a4: 2300 movs r3, #0
}
800c8a6: 4618 mov r0, r3
800c8a8: 3710 adds r7, #16
800c8aa: 46bd mov sp, r7
800c8ac: bd80 pop {r7, pc}
0800c8ae <UART_WaitOnFlagUntilTimeout>:
* @param Timeout Timeout duration
* @retval HAL status
*/
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,
uint32_t Tickstart, uint32_t Timeout)
{
800c8ae: b580 push {r7, lr}
800c8b0: b09c sub sp, #112 ; 0x70
800c8b2: af00 add r7, sp, #0
800c8b4: 60f8 str r0, [r7, #12]
800c8b6: 60b9 str r1, [r7, #8]
800c8b8: 603b str r3, [r7, #0]
800c8ba: 4613 mov r3, r2
800c8bc: 71fb strb r3, [r7, #7]
/* Wait until flag is set */
while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
800c8be: e0a5 b.n 800ca0c <UART_WaitOnFlagUntilTimeout+0x15e>
{
/* Check for the Timeout */
if (Timeout != HAL_MAX_DELAY)
800c8c0: 6fbb ldr r3, [r7, #120] ; 0x78
800c8c2: f1b3 3fff cmp.w r3, #4294967295
800c8c6: f000 80a1 beq.w 800ca0c <UART_WaitOnFlagUntilTimeout+0x15e>
{
if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
800c8ca: f7fb fef1 bl 80086b0 <HAL_GetTick>
800c8ce: 4602 mov r2, r0
800c8d0: 683b ldr r3, [r7, #0]
800c8d2: 1ad2 subs r2, r2, r3
800c8d4: 6fbb ldr r3, [r7, #120] ; 0x78
800c8d6: 429a cmp r2, r3
800c8d8: d802 bhi.n 800c8e0 <UART_WaitOnFlagUntilTimeout+0x32>
800c8da: 6fbb ldr r3, [r7, #120] ; 0x78
800c8dc: 2b00 cmp r3, #0
800c8de: d13e bne.n 800c95e <UART_WaitOnFlagUntilTimeout+0xb0>
{
/* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)
interrupts for the interrupt process */
ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
800c8e0: 68fb ldr r3, [r7, #12]
800c8e2: 681b ldr r3, [r3, #0]
800c8e4: 653b str r3, [r7, #80] ; 0x50
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800c8e6: 6d3b ldr r3, [r7, #80] ; 0x50
800c8e8: e853 3f00 ldrex r3, [r3]
800c8ec: 64fb str r3, [r7, #76] ; 0x4c
return(result);
800c8ee: 6cfb ldr r3, [r7, #76] ; 0x4c
800c8f0: f423 73d0 bic.w r3, r3, #416 ; 0x1a0
800c8f4: 667b str r3, [r7, #100] ; 0x64
800c8f6: 68fb ldr r3, [r7, #12]
800c8f8: 681b ldr r3, [r3, #0]
800c8fa: 461a mov r2, r3
800c8fc: 6e7b ldr r3, [r7, #100] ; 0x64
800c8fe: 65fb str r3, [r7, #92] ; 0x5c
800c900: 65ba str r2, [r7, #88] ; 0x58
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800c902: 6db9 ldr r1, [r7, #88] ; 0x58
800c904: 6dfa ldr r2, [r7, #92] ; 0x5c
800c906: e841 2300 strex r3, r2, [r1]
800c90a: 657b str r3, [r7, #84] ; 0x54
return(result);
800c90c: 6d7b ldr r3, [r7, #84] ; 0x54
800c90e: 2b00 cmp r3, #0
800c910: d1e6 bne.n 800c8e0 <UART_WaitOnFlagUntilTimeout+0x32>
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
800c912: 68fb ldr r3, [r7, #12]
800c914: 681b ldr r3, [r3, #0]
800c916: 3308 adds r3, #8
800c918: 63fb str r3, [r7, #60] ; 0x3c
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800c91a: 6bfb ldr r3, [r7, #60] ; 0x3c
800c91c: e853 3f00 ldrex r3, [r3]
800c920: 63bb str r3, [r7, #56] ; 0x38
return(result);
800c922: 6bbb ldr r3, [r7, #56] ; 0x38
800c924: f023 0301 bic.w r3, r3, #1
800c928: 663b str r3, [r7, #96] ; 0x60
800c92a: 68fb ldr r3, [r7, #12]
800c92c: 681b ldr r3, [r3, #0]
800c92e: 3308 adds r3, #8
800c930: 6e3a ldr r2, [r7, #96] ; 0x60
800c932: 64ba str r2, [r7, #72] ; 0x48
800c934: 647b str r3, [r7, #68] ; 0x44
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800c936: 6c79 ldr r1, [r7, #68] ; 0x44
800c938: 6cba ldr r2, [r7, #72] ; 0x48
800c93a: e841 2300 strex r3, r2, [r1]
800c93e: 643b str r3, [r7, #64] ; 0x40
return(result);
800c940: 6c3b ldr r3, [r7, #64] ; 0x40
800c942: 2b00 cmp r3, #0
800c944: d1e5 bne.n 800c912 <UART_WaitOnFlagUntilTimeout+0x64>
huart->gState = HAL_UART_STATE_READY;
800c946: 68fb ldr r3, [r7, #12]
800c948: 2220 movs r2, #32
800c94a: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_READY;
800c94c: 68fb ldr r3, [r7, #12]
800c94e: 2220 movs r2, #32
800c950: 67da str r2, [r3, #124] ; 0x7c
__HAL_UNLOCK(huart);
800c952: 68fb ldr r3, [r7, #12]
800c954: 2200 movs r2, #0
800c956: f883 2074 strb.w r2, [r3, #116] ; 0x74
return HAL_TIMEOUT;
800c95a: 2303 movs r3, #3
800c95c: e067 b.n 800ca2e <UART_WaitOnFlagUntilTimeout+0x180>
}
if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U)
800c95e: 68fb ldr r3, [r7, #12]
800c960: 681b ldr r3, [r3, #0]
800c962: 681b ldr r3, [r3, #0]
800c964: f003 0304 and.w r3, r3, #4
800c968: 2b00 cmp r3, #0
800c96a: d04f beq.n 800ca0c <UART_WaitOnFlagUntilTimeout+0x15e>
{
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET)
800c96c: 68fb ldr r3, [r7, #12]
800c96e: 681b ldr r3, [r3, #0]
800c970: 69db ldr r3, [r3, #28]
800c972: f403 6300 and.w r3, r3, #2048 ; 0x800
800c976: f5b3 6f00 cmp.w r3, #2048 ; 0x800
800c97a: d147 bne.n 800ca0c <UART_WaitOnFlagUntilTimeout+0x15e>
{
/* Clear Receiver Timeout flag*/
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
800c97c: 68fb ldr r3, [r7, #12]
800c97e: 681b ldr r3, [r3, #0]
800c980: f44f 6200 mov.w r2, #2048 ; 0x800
800c984: 621a str r2, [r3, #32]
/* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)
interrupts for the interrupt process */
ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
800c986: 68fb ldr r3, [r7, #12]
800c988: 681b ldr r3, [r3, #0]
800c98a: 62bb str r3, [r7, #40] ; 0x28
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800c98c: 6abb ldr r3, [r7, #40] ; 0x28
800c98e: e853 3f00 ldrex r3, [r3]
800c992: 627b str r3, [r7, #36] ; 0x24
return(result);
800c994: 6a7b ldr r3, [r7, #36] ; 0x24
800c996: f423 73d0 bic.w r3, r3, #416 ; 0x1a0
800c99a: 66fb str r3, [r7, #108] ; 0x6c
800c99c: 68fb ldr r3, [r7, #12]
800c99e: 681b ldr r3, [r3, #0]
800c9a0: 461a mov r2, r3
800c9a2: 6efb ldr r3, [r7, #108] ; 0x6c
800c9a4: 637b str r3, [r7, #52] ; 0x34
800c9a6: 633a str r2, [r7, #48] ; 0x30
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800c9a8: 6b39 ldr r1, [r7, #48] ; 0x30
800c9aa: 6b7a ldr r2, [r7, #52] ; 0x34
800c9ac: e841 2300 strex r3, r2, [r1]
800c9b0: 62fb str r3, [r7, #44] ; 0x2c
return(result);
800c9b2: 6afb ldr r3, [r7, #44] ; 0x2c
800c9b4: 2b00 cmp r3, #0
800c9b6: d1e6 bne.n 800c986 <UART_WaitOnFlagUntilTimeout+0xd8>
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
800c9b8: 68fb ldr r3, [r7, #12]
800c9ba: 681b ldr r3, [r3, #0]
800c9bc: 3308 adds r3, #8
800c9be: 617b str r3, [r7, #20]
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800c9c0: 697b ldr r3, [r7, #20]
800c9c2: e853 3f00 ldrex r3, [r3]
800c9c6: 613b str r3, [r7, #16]
return(result);
800c9c8: 693b ldr r3, [r7, #16]
800c9ca: f023 0301 bic.w r3, r3, #1
800c9ce: 66bb str r3, [r7, #104] ; 0x68
800c9d0: 68fb ldr r3, [r7, #12]
800c9d2: 681b ldr r3, [r3, #0]
800c9d4: 3308 adds r3, #8
800c9d6: 6eba ldr r2, [r7, #104] ; 0x68
800c9d8: 623a str r2, [r7, #32]
800c9da: 61fb str r3, [r7, #28]
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800c9dc: 69f9 ldr r1, [r7, #28]
800c9de: 6a3a ldr r2, [r7, #32]
800c9e0: e841 2300 strex r3, r2, [r1]
800c9e4: 61bb str r3, [r7, #24]
return(result);
800c9e6: 69bb ldr r3, [r7, #24]
800c9e8: 2b00 cmp r3, #0
800c9ea: d1e5 bne.n 800c9b8 <UART_WaitOnFlagUntilTimeout+0x10a>
huart->gState = HAL_UART_STATE_READY;
800c9ec: 68fb ldr r3, [r7, #12]
800c9ee: 2220 movs r2, #32
800c9f0: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_READY;
800c9f2: 68fb ldr r3, [r7, #12]
800c9f4: 2220 movs r2, #32
800c9f6: 67da str r2, [r3, #124] ; 0x7c
huart->ErrorCode = HAL_UART_ERROR_RTO;
800c9f8: 68fb ldr r3, [r7, #12]
800c9fa: 2220 movs r2, #32
800c9fc: f8c3 2080 str.w r2, [r3, #128] ; 0x80
/* Process Unlocked */
__HAL_UNLOCK(huart);
800ca00: 68fb ldr r3, [r7, #12]
800ca02: 2200 movs r2, #0
800ca04: f883 2074 strb.w r2, [r3, #116] ; 0x74
return HAL_TIMEOUT;
800ca08: 2303 movs r3, #3
800ca0a: e010 b.n 800ca2e <UART_WaitOnFlagUntilTimeout+0x180>
while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
800ca0c: 68fb ldr r3, [r7, #12]
800ca0e: 681b ldr r3, [r3, #0]
800ca10: 69da ldr r2, [r3, #28]
800ca12: 68bb ldr r3, [r7, #8]
800ca14: 401a ands r2, r3
800ca16: 68bb ldr r3, [r7, #8]
800ca18: 429a cmp r2, r3
800ca1a: bf0c ite eq
800ca1c: 2301 moveq r3, #1
800ca1e: 2300 movne r3, #0
800ca20: b2db uxtb r3, r3
800ca22: 461a mov r2, r3
800ca24: 79fb ldrb r3, [r7, #7]
800ca26: 429a cmp r2, r3
800ca28: f43f af4a beq.w 800c8c0 <UART_WaitOnFlagUntilTimeout+0x12>
}
}
}
}
return HAL_OK;
800ca2c: 2300 movs r3, #0
}
800ca2e: 4618 mov r0, r3
800ca30: 3770 adds r7, #112 ; 0x70
800ca32: 46bd mov sp, r7
800ca34: bd80 pop {r7, pc}
0800ca36 <UART_EndRxTransfer>:
* @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion).
* @param huart UART handle.
* @retval None
*/
static void UART_EndRxTransfer(UART_HandleTypeDef *huart)
{
800ca36: b480 push {r7}
800ca38: b095 sub sp, #84 ; 0x54
800ca3a: af00 add r7, sp, #0
800ca3c: 6078 str r0, [r7, #4]
/* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
800ca3e: 687b ldr r3, [r7, #4]
800ca40: 681b ldr r3, [r3, #0]
800ca42: 637b str r3, [r7, #52] ; 0x34
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800ca44: 6b7b ldr r3, [r7, #52] ; 0x34
800ca46: e853 3f00 ldrex r3, [r3]
800ca4a: 633b str r3, [r7, #48] ; 0x30
return(result);
800ca4c: 6b3b ldr r3, [r7, #48] ; 0x30
800ca4e: f423 7390 bic.w r3, r3, #288 ; 0x120
800ca52: 64fb str r3, [r7, #76] ; 0x4c
800ca54: 687b ldr r3, [r7, #4]
800ca56: 681b ldr r3, [r3, #0]
800ca58: 461a mov r2, r3
800ca5a: 6cfb ldr r3, [r7, #76] ; 0x4c
800ca5c: 643b str r3, [r7, #64] ; 0x40
800ca5e: 63fa str r2, [r7, #60] ; 0x3c
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800ca60: 6bf9 ldr r1, [r7, #60] ; 0x3c
800ca62: 6c3a ldr r2, [r7, #64] ; 0x40
800ca64: e841 2300 strex r3, r2, [r1]
800ca68: 63bb str r3, [r7, #56] ; 0x38
return(result);
800ca6a: 6bbb ldr r3, [r7, #56] ; 0x38
800ca6c: 2b00 cmp r3, #0
800ca6e: d1e6 bne.n 800ca3e <UART_EndRxTransfer+0x8>
ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
800ca70: 687b ldr r3, [r7, #4]
800ca72: 681b ldr r3, [r3, #0]
800ca74: 3308 adds r3, #8
800ca76: 623b str r3, [r7, #32]
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800ca78: 6a3b ldr r3, [r7, #32]
800ca7a: e853 3f00 ldrex r3, [r3]
800ca7e: 61fb str r3, [r7, #28]
return(result);
800ca80: 69fb ldr r3, [r7, #28]
800ca82: f023 0301 bic.w r3, r3, #1
800ca86: 64bb str r3, [r7, #72] ; 0x48
800ca88: 687b ldr r3, [r7, #4]
800ca8a: 681b ldr r3, [r3, #0]
800ca8c: 3308 adds r3, #8
800ca8e: 6cba ldr r2, [r7, #72] ; 0x48
800ca90: 62fa str r2, [r7, #44] ; 0x2c
800ca92: 62bb str r3, [r7, #40] ; 0x28
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800ca94: 6ab9 ldr r1, [r7, #40] ; 0x28
800ca96: 6afa ldr r2, [r7, #44] ; 0x2c
800ca98: e841 2300 strex r3, r2, [r1]
800ca9c: 627b str r3, [r7, #36] ; 0x24
return(result);
800ca9e: 6a7b ldr r3, [r7, #36] ; 0x24
800caa0: 2b00 cmp r3, #0
800caa2: d1e5 bne.n 800ca70 <UART_EndRxTransfer+0x3a>
/* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */
if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
800caa4: 687b ldr r3, [r7, #4]
800caa6: 6e1b ldr r3, [r3, #96] ; 0x60
800caa8: 2b01 cmp r3, #1
800caaa: d118 bne.n 800cade <UART_EndRxTransfer+0xa8>
{
ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
800caac: 687b ldr r3, [r7, #4]
800caae: 681b ldr r3, [r3, #0]
800cab0: 60fb str r3, [r7, #12]
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800cab2: 68fb ldr r3, [r7, #12]
800cab4: e853 3f00 ldrex r3, [r3]
800cab8: 60bb str r3, [r7, #8]
return(result);
800caba: 68bb ldr r3, [r7, #8]
800cabc: f023 0310 bic.w r3, r3, #16
800cac0: 647b str r3, [r7, #68] ; 0x44
800cac2: 687b ldr r3, [r7, #4]
800cac4: 681b ldr r3, [r3, #0]
800cac6: 461a mov r2, r3
800cac8: 6c7b ldr r3, [r7, #68] ; 0x44
800caca: 61bb str r3, [r7, #24]
800cacc: 617a str r2, [r7, #20]
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800cace: 6979 ldr r1, [r7, #20]
800cad0: 69ba ldr r2, [r7, #24]
800cad2: e841 2300 strex r3, r2, [r1]
800cad6: 613b str r3, [r7, #16]
return(result);
800cad8: 693b ldr r3, [r7, #16]
800cada: 2b00 cmp r3, #0
800cadc: d1e6 bne.n 800caac <UART_EndRxTransfer+0x76>
}
/* At end of Rx process, restore huart->RxState to Ready */
huart->RxState = HAL_UART_STATE_READY;
800cade: 687b ldr r3, [r7, #4]
800cae0: 2220 movs r2, #32
800cae2: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
800cae4: 687b ldr r3, [r7, #4]
800cae6: 2200 movs r2, #0
800cae8: 661a str r2, [r3, #96] ; 0x60
/* Reset RxIsr function pointer */
huart->RxISR = NULL;
800caea: 687b ldr r3, [r7, #4]
800caec: 2200 movs r2, #0
800caee: 665a str r2, [r3, #100] ; 0x64
}
800caf0: bf00 nop
800caf2: 3754 adds r7, #84 ; 0x54
800caf4: 46bd mov sp, r7
800caf6: f85d 7b04 ldr.w r7, [sp], #4
800cafa: 4770 bx lr
0800cafc <UART_DMAAbortOnError>:
* (To be called at end of DMA Abort procedure following error occurrence).
* @param hdma DMA handle.
* @retval None
*/
static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma)
{
800cafc: b580 push {r7, lr}
800cafe: b084 sub sp, #16
800cb00: af00 add r7, sp, #0
800cb02: 6078 str r0, [r7, #4]
UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
800cb04: 687b ldr r3, [r7, #4]
800cb06: 6b9b ldr r3, [r3, #56] ; 0x38
800cb08: 60fb str r3, [r7, #12]
huart->RxXferCount = 0U;
800cb0a: 68fb ldr r3, [r7, #12]
800cb0c: 2200 movs r2, #0
800cb0e: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
huart->TxXferCount = 0U;
800cb12: 68fb ldr r3, [r7, #12]
800cb14: 2200 movs r2, #0
800cb16: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
huart->ErrorCallback(huart);
#else
/*Call legacy weak error callback*/
HAL_UART_ErrorCallback(huart);
800cb1a: 68f8 ldr r0, [r7, #12]
800cb1c: f7fa feaa bl 8007874 <HAL_UART_ErrorCallback>
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
}
800cb20: bf00 nop
800cb22: 3710 adds r7, #16
800cb24: 46bd mov sp, r7
800cb26: bd80 pop {r7, pc}
0800cb28 <UART_DMATxAbortCallback>:
* Abort still ongoing for Rx DMA Handle.
* @param hdma DMA handle.
* @retval None
*/
static void UART_DMATxAbortCallback(DMA_HandleTypeDef *hdma)
{
800cb28: b580 push {r7, lr}
800cb2a: b084 sub sp, #16
800cb2c: af00 add r7, sp, #0
800cb2e: 6078 str r0, [r7, #4]
UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
800cb30: 687b ldr r3, [r7, #4]
800cb32: 6b9b ldr r3, [r3, #56] ; 0x38
800cb34: 60fb str r3, [r7, #12]
huart->hdmatx->XferAbortCallback = NULL;
800cb36: 68fb ldr r3, [r7, #12]
800cb38: 6edb ldr r3, [r3, #108] ; 0x6c
800cb3a: 2200 movs r2, #0
800cb3c: 651a str r2, [r3, #80] ; 0x50
/* Check if an Abort process is still ongoing */
if (huart->hdmarx != NULL)
800cb3e: 68fb ldr r3, [r7, #12]
800cb40: 6f1b ldr r3, [r3, #112] ; 0x70
800cb42: 2b00 cmp r3, #0
800cb44: d004 beq.n 800cb50 <UART_DMATxAbortCallback+0x28>
{
if (huart->hdmarx->XferAbortCallback != NULL)
800cb46: 68fb ldr r3, [r7, #12]
800cb48: 6f1b ldr r3, [r3, #112] ; 0x70
800cb4a: 6d1b ldr r3, [r3, #80] ; 0x50
800cb4c: 2b00 cmp r3, #0
800cb4e: d11c bne.n 800cb8a <UART_DMATxAbortCallback+0x62>
return;
}
}
/* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callback */
huart->TxXferCount = 0U;
800cb50: 68fb ldr r3, [r7, #12]
800cb52: 2200 movs r2, #0
800cb54: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
huart->RxXferCount = 0U;
800cb58: 68fb ldr r3, [r7, #12]
800cb5a: 2200 movs r2, #0
800cb5c: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
/* Reset errorCode */
huart->ErrorCode = HAL_UART_ERROR_NONE;
800cb60: 68fb ldr r3, [r7, #12]
800cb62: 2200 movs r2, #0
800cb64: f8c3 2080 str.w r2, [r3, #128] ; 0x80
/* Clear the Error flags in the ICR register */
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);
800cb68: 68fb ldr r3, [r7, #12]
800cb6a: 681b ldr r3, [r3, #0]
800cb6c: 220f movs r2, #15
800cb6e: 621a str r2, [r3, #32]
/* Restore huart->gState and huart->RxState to Ready */
huart->gState = HAL_UART_STATE_READY;
800cb70: 68fb ldr r3, [r7, #12]
800cb72: 2220 movs r2, #32
800cb74: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_READY;
800cb76: 68fb ldr r3, [r7, #12]
800cb78: 2220 movs r2, #32
800cb7a: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
800cb7c: 68fb ldr r3, [r7, #12]
800cb7e: 2200 movs r2, #0
800cb80: 661a str r2, [r3, #96] ; 0x60
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/* Call registered Abort complete callback */
huart->AbortCpltCallback(huart);
#else
/* Call legacy weak Abort complete callback */
HAL_UART_AbortCpltCallback(huart);
800cb82: 68f8 ldr r0, [r7, #12]
800cb84: f7ff fb28 bl 800c1d8 <HAL_UART_AbortCpltCallback>
800cb88: e000 b.n 800cb8c <UART_DMATxAbortCallback+0x64>
return;
800cb8a: bf00 nop
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
}
800cb8c: 3710 adds r7, #16
800cb8e: 46bd mov sp, r7
800cb90: bd80 pop {r7, pc}
0800cb92 <UART_DMARxAbortCallback>:
* Abort still ongoing for Tx DMA Handle.
* @param hdma DMA handle.
* @retval None
*/
static void UART_DMARxAbortCallback(DMA_HandleTypeDef *hdma)
{
800cb92: b580 push {r7, lr}
800cb94: b084 sub sp, #16
800cb96: af00 add r7, sp, #0
800cb98: 6078 str r0, [r7, #4]
UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
800cb9a: 687b ldr r3, [r7, #4]
800cb9c: 6b9b ldr r3, [r3, #56] ; 0x38
800cb9e: 60fb str r3, [r7, #12]
huart->hdmarx->XferAbortCallback = NULL;
800cba0: 68fb ldr r3, [r7, #12]
800cba2: 6f1b ldr r3, [r3, #112] ; 0x70
800cba4: 2200 movs r2, #0
800cba6: 651a str r2, [r3, #80] ; 0x50
/* Check if an Abort process is still ongoing */
if (huart->hdmatx != NULL)
800cba8: 68fb ldr r3, [r7, #12]
800cbaa: 6edb ldr r3, [r3, #108] ; 0x6c
800cbac: 2b00 cmp r3, #0
800cbae: d004 beq.n 800cbba <UART_DMARxAbortCallback+0x28>
{
if (huart->hdmatx->XferAbortCallback != NULL)
800cbb0: 68fb ldr r3, [r7, #12]
800cbb2: 6edb ldr r3, [r3, #108] ; 0x6c
800cbb4: 6d1b ldr r3, [r3, #80] ; 0x50
800cbb6: 2b00 cmp r3, #0
800cbb8: d124 bne.n 800cc04 <UART_DMARxAbortCallback+0x72>
return;
}
}
/* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callback */
huart->TxXferCount = 0U;
800cbba: 68fb ldr r3, [r7, #12]
800cbbc: 2200 movs r2, #0
800cbbe: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
huart->RxXferCount = 0U;
800cbc2: 68fb ldr r3, [r7, #12]
800cbc4: 2200 movs r2, #0
800cbc6: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
/* Reset errorCode */
huart->ErrorCode = HAL_UART_ERROR_NONE;
800cbca: 68fb ldr r3, [r7, #12]
800cbcc: 2200 movs r2, #0
800cbce: f8c3 2080 str.w r2, [r3, #128] ; 0x80
/* Clear the Error flags in the ICR register */
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);
800cbd2: 68fb ldr r3, [r7, #12]
800cbd4: 681b ldr r3, [r3, #0]
800cbd6: 220f movs r2, #15
800cbd8: 621a str r2, [r3, #32]
/* Discard the received data */
__HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);
800cbda: 68fb ldr r3, [r7, #12]
800cbdc: 681b ldr r3, [r3, #0]
800cbde: 68fa ldr r2, [r7, #12]
800cbe0: 6812 ldr r2, [r2, #0]
800cbe2: 6992 ldr r2, [r2, #24]
800cbe4: f042 0208 orr.w r2, r2, #8
800cbe8: 619a str r2, [r3, #24]
/* Restore huart->gState and huart->RxState to Ready */
huart->gState = HAL_UART_STATE_READY;
800cbea: 68fb ldr r3, [r7, #12]
800cbec: 2220 movs r2, #32
800cbee: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_READY;
800cbf0: 68fb ldr r3, [r7, #12]
800cbf2: 2220 movs r2, #32
800cbf4: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
800cbf6: 68fb ldr r3, [r7, #12]
800cbf8: 2200 movs r2, #0
800cbfa: 661a str r2, [r3, #96] ; 0x60
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/* Call registered Abort complete callback */
huart->AbortCpltCallback(huart);
#else
/* Call legacy weak Abort complete callback */
HAL_UART_AbortCpltCallback(huart);
800cbfc: 68f8 ldr r0, [r7, #12]
800cbfe: f7ff faeb bl 800c1d8 <HAL_UART_AbortCpltCallback>
800cc02: e000 b.n 800cc06 <UART_DMARxAbortCallback+0x74>
return;
800cc04: bf00 nop
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
}
800cc06: 3710 adds r7, #16
800cc08: 46bd mov sp, r7
800cc0a: bd80 pop {r7, pc}
0800cc0c <UART_TxISR_8BIT>:
* interruptions have been enabled by HAL_UART_Transmit_IT().
* @param huart UART handle.
* @retval None
*/
static void UART_TxISR_8BIT(UART_HandleTypeDef *huart)
{
800cc0c: b480 push {r7}
800cc0e: b08f sub sp, #60 ; 0x3c
800cc10: af00 add r7, sp, #0
800cc12: 6078 str r0, [r7, #4]
/* Check that a Tx process is ongoing */
if (huart->gState == HAL_UART_STATE_BUSY_TX)
800cc14: 687b ldr r3, [r7, #4]
800cc16: 6f9b ldr r3, [r3, #120] ; 0x78
800cc18: 2b21 cmp r3, #33 ; 0x21
800cc1a: d14c bne.n 800ccb6 <UART_TxISR_8BIT+0xaa>
{
if (huart->TxXferCount == 0U)
800cc1c: 687b ldr r3, [r7, #4]
800cc1e: f8b3 3052 ldrh.w r3, [r3, #82] ; 0x52
800cc22: b29b uxth r3, r3
800cc24: 2b00 cmp r3, #0
800cc26: d132 bne.n 800cc8e <UART_TxISR_8BIT+0x82>
{
/* Disable the UART Transmit Data Register Empty Interrupt */
ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
800cc28: 687b ldr r3, [r7, #4]
800cc2a: 681b ldr r3, [r3, #0]
800cc2c: 623b str r3, [r7, #32]
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800cc2e: 6a3b ldr r3, [r7, #32]
800cc30: e853 3f00 ldrex r3, [r3]
800cc34: 61fb str r3, [r7, #28]
return(result);
800cc36: 69fb ldr r3, [r7, #28]
800cc38: f023 0380 bic.w r3, r3, #128 ; 0x80
800cc3c: 637b str r3, [r7, #52] ; 0x34
800cc3e: 687b ldr r3, [r7, #4]
800cc40: 681b ldr r3, [r3, #0]
800cc42: 461a mov r2, r3
800cc44: 6b7b ldr r3, [r7, #52] ; 0x34
800cc46: 62fb str r3, [r7, #44] ; 0x2c
800cc48: 62ba str r2, [r7, #40] ; 0x28
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800cc4a: 6ab9 ldr r1, [r7, #40] ; 0x28
800cc4c: 6afa ldr r2, [r7, #44] ; 0x2c
800cc4e: e841 2300 strex r3, r2, [r1]
800cc52: 627b str r3, [r7, #36] ; 0x24
return(result);
800cc54: 6a7b ldr r3, [r7, #36] ; 0x24
800cc56: 2b00 cmp r3, #0
800cc58: d1e6 bne.n 800cc28 <UART_TxISR_8BIT+0x1c>
/* Enable the UART Transmit Complete Interrupt */
ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
800cc5a: 687b ldr r3, [r7, #4]
800cc5c: 681b ldr r3, [r3, #0]
800cc5e: 60fb str r3, [r7, #12]
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800cc60: 68fb ldr r3, [r7, #12]
800cc62: e853 3f00 ldrex r3, [r3]
800cc66: 60bb str r3, [r7, #8]
return(result);
800cc68: 68bb ldr r3, [r7, #8]
800cc6a: f043 0340 orr.w r3, r3, #64 ; 0x40
800cc6e: 633b str r3, [r7, #48] ; 0x30
800cc70: 687b ldr r3, [r7, #4]
800cc72: 681b ldr r3, [r3, #0]
800cc74: 461a mov r2, r3
800cc76: 6b3b ldr r3, [r7, #48] ; 0x30
800cc78: 61bb str r3, [r7, #24]
800cc7a: 617a str r2, [r7, #20]
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800cc7c: 6979 ldr r1, [r7, #20]
800cc7e: 69ba ldr r2, [r7, #24]
800cc80: e841 2300 strex r3, r2, [r1]
800cc84: 613b str r3, [r7, #16]
return(result);
800cc86: 693b ldr r3, [r7, #16]
800cc88: 2b00 cmp r3, #0
800cc8a: d1e6 bne.n 800cc5a <UART_TxISR_8BIT+0x4e>
huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF);
huart->pTxBuffPtr++;
huart->TxXferCount--;
}
}
}
800cc8c: e013 b.n 800ccb6 <UART_TxISR_8BIT+0xaa>
huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF);
800cc8e: 687b ldr r3, [r7, #4]
800cc90: 681b ldr r3, [r3, #0]
800cc92: 687a ldr r2, [r7, #4]
800cc94: 6cd2 ldr r2, [r2, #76] ; 0x4c
800cc96: 7812 ldrb r2, [r2, #0]
800cc98: 629a str r2, [r3, #40] ; 0x28
huart->pTxBuffPtr++;
800cc9a: 687b ldr r3, [r7, #4]
800cc9c: 6cdb ldr r3, [r3, #76] ; 0x4c
800cc9e: 1c5a adds r2, r3, #1
800cca0: 687b ldr r3, [r7, #4]
800cca2: 64da str r2, [r3, #76] ; 0x4c
huart->TxXferCount--;
800cca4: 687b ldr r3, [r7, #4]
800cca6: f8b3 3052 ldrh.w r3, [r3, #82] ; 0x52
800ccaa: b29b uxth r3, r3
800ccac: 3b01 subs r3, #1
800ccae: b29a uxth r2, r3
800ccb0: 687b ldr r3, [r7, #4]
800ccb2: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
}
800ccb6: bf00 nop
800ccb8: 373c adds r7, #60 ; 0x3c
800ccba: 46bd mov sp, r7
800ccbc: f85d 7b04 ldr.w r7, [sp], #4
800ccc0: 4770 bx lr
0800ccc2 <UART_TxISR_16BIT>:
* interruptions have been enabled by HAL_UART_Transmit_IT().
* @param huart UART handle.
* @retval None
*/
static void UART_TxISR_16BIT(UART_HandleTypeDef *huart)
{
800ccc2: b480 push {r7}
800ccc4: b091 sub sp, #68 ; 0x44
800ccc6: af00 add r7, sp, #0
800ccc8: 6078 str r0, [r7, #4]
const uint16_t *tmp;
/* Check that a Tx process is ongoing */
if (huart->gState == HAL_UART_STATE_BUSY_TX)
800ccca: 687b ldr r3, [r7, #4]
800cccc: 6f9b ldr r3, [r3, #120] ; 0x78
800ccce: 2b21 cmp r3, #33 ; 0x21
800ccd0: d150 bne.n 800cd74 <UART_TxISR_16BIT+0xb2>
{
if (huart->TxXferCount == 0U)
800ccd2: 687b ldr r3, [r7, #4]
800ccd4: f8b3 3052 ldrh.w r3, [r3, #82] ; 0x52
800ccd8: b29b uxth r3, r3
800ccda: 2b00 cmp r3, #0
800ccdc: d132 bne.n 800cd44 <UART_TxISR_16BIT+0x82>
{
/* Disable the UART Transmit Data Register Empty Interrupt */
ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
800ccde: 687b ldr r3, [r7, #4]
800cce0: 681b ldr r3, [r3, #0]
800cce2: 627b str r3, [r7, #36] ; 0x24
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800cce4: 6a7b ldr r3, [r7, #36] ; 0x24
800cce6: e853 3f00 ldrex r3, [r3]
800ccea: 623b str r3, [r7, #32]
return(result);
800ccec: 6a3b ldr r3, [r7, #32]
800ccee: f023 0380 bic.w r3, r3, #128 ; 0x80
800ccf2: 63fb str r3, [r7, #60] ; 0x3c
800ccf4: 687b ldr r3, [r7, #4]
800ccf6: 681b ldr r3, [r3, #0]
800ccf8: 461a mov r2, r3
800ccfa: 6bfb ldr r3, [r7, #60] ; 0x3c
800ccfc: 633b str r3, [r7, #48] ; 0x30
800ccfe: 62fa str r2, [r7, #44] ; 0x2c
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800cd00: 6af9 ldr r1, [r7, #44] ; 0x2c
800cd02: 6b3a ldr r2, [r7, #48] ; 0x30
800cd04: e841 2300 strex r3, r2, [r1]
800cd08: 62bb str r3, [r7, #40] ; 0x28
return(result);
800cd0a: 6abb ldr r3, [r7, #40] ; 0x28
800cd0c: 2b00 cmp r3, #0
800cd0e: d1e6 bne.n 800ccde <UART_TxISR_16BIT+0x1c>
/* Enable the UART Transmit Complete Interrupt */
ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
800cd10: 687b ldr r3, [r7, #4]
800cd12: 681b ldr r3, [r3, #0]
800cd14: 613b str r3, [r7, #16]
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800cd16: 693b ldr r3, [r7, #16]
800cd18: e853 3f00 ldrex r3, [r3]
800cd1c: 60fb str r3, [r7, #12]
return(result);
800cd1e: 68fb ldr r3, [r7, #12]
800cd20: f043 0340 orr.w r3, r3, #64 ; 0x40
800cd24: 63bb str r3, [r7, #56] ; 0x38
800cd26: 687b ldr r3, [r7, #4]
800cd28: 681b ldr r3, [r3, #0]
800cd2a: 461a mov r2, r3
800cd2c: 6bbb ldr r3, [r7, #56] ; 0x38
800cd2e: 61fb str r3, [r7, #28]
800cd30: 61ba str r2, [r7, #24]
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800cd32: 69b9 ldr r1, [r7, #24]
800cd34: 69fa ldr r2, [r7, #28]
800cd36: e841 2300 strex r3, r2, [r1]
800cd3a: 617b str r3, [r7, #20]
return(result);
800cd3c: 697b ldr r3, [r7, #20]
800cd3e: 2b00 cmp r3, #0
800cd40: d1e6 bne.n 800cd10 <UART_TxISR_16BIT+0x4e>
huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL);
huart->pTxBuffPtr += 2U;
huart->TxXferCount--;
}
}
}
800cd42: e017 b.n 800cd74 <UART_TxISR_16BIT+0xb2>
tmp = (const uint16_t *) huart->pTxBuffPtr;
800cd44: 687b ldr r3, [r7, #4]
800cd46: 6cdb ldr r3, [r3, #76] ; 0x4c
800cd48: 637b str r3, [r7, #52] ; 0x34
huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL);
800cd4a: 687b ldr r3, [r7, #4]
800cd4c: 681b ldr r3, [r3, #0]
800cd4e: 6b7a ldr r2, [r7, #52] ; 0x34
800cd50: 8812 ldrh r2, [r2, #0]
800cd52: f3c2 0208 ubfx r2, r2, #0, #9
800cd56: 629a str r2, [r3, #40] ; 0x28
huart->pTxBuffPtr += 2U;
800cd58: 687b ldr r3, [r7, #4]
800cd5a: 6cdb ldr r3, [r3, #76] ; 0x4c
800cd5c: 1c9a adds r2, r3, #2
800cd5e: 687b ldr r3, [r7, #4]
800cd60: 64da str r2, [r3, #76] ; 0x4c
huart->TxXferCount--;
800cd62: 687b ldr r3, [r7, #4]
800cd64: f8b3 3052 ldrh.w r3, [r3, #82] ; 0x52
800cd68: b29b uxth r3, r3
800cd6a: 3b01 subs r3, #1
800cd6c: b29a uxth r2, r3
800cd6e: 687b ldr r3, [r7, #4]
800cd70: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
}
800cd74: bf00 nop
800cd76: 3744 adds r7, #68 ; 0x44
800cd78: 46bd mov sp, r7
800cd7a: f85d 7b04 ldr.w r7, [sp], #4
800cd7e: 4770 bx lr
0800cd80 <UART_EndTransmit_IT>:
* @param huart pointer to a UART_HandleTypeDef structure that contains
* the configuration information for the specified UART module.
* @retval None
*/
static void UART_EndTransmit_IT(UART_HandleTypeDef *huart)
{
800cd80: b580 push {r7, lr}
800cd82: b088 sub sp, #32
800cd84: af00 add r7, sp, #0
800cd86: 6078 str r0, [r7, #4]
/* Disable the UART Transmit Complete Interrupt */
ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE);
800cd88: 687b ldr r3, [r7, #4]
800cd8a: 681b ldr r3, [r3, #0]
800cd8c: 60fb str r3, [r7, #12]
__ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
800cd8e: 68fb ldr r3, [r7, #12]
800cd90: e853 3f00 ldrex r3, [r3]
800cd94: 60bb str r3, [r7, #8]
return(result);
800cd96: 68bb ldr r3, [r7, #8]
800cd98: f023 0340 bic.w r3, r3, #64 ; 0x40
800cd9c: 61fb str r3, [r7, #28]
800cd9e: 687b ldr r3, [r7, #4]
800cda0: 681b ldr r3, [r3, #0]
800cda2: 461a mov r2, r3
800cda4: 69fb ldr r3, [r7, #28]
800cda6: 61bb str r3, [r7, #24]
800cda8: 617a str r2, [r7, #20]
__ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
800cdaa: 6979 ldr r1, [r7, #20]
800cdac: 69ba ldr r2, [r7, #24]
800cdae: e841 2300 strex r3, r2, [r1]
800cdb2: 613b str r3, [r7, #16]
return(result);
800cdb4: 693b ldr r3, [r7, #16]
800cdb6: 2b00 cmp r3, #0
800cdb8: d1e6 bne.n 800cd88 <UART_EndTransmit_IT+0x8>
/* Tx process is ended, restore huart->gState to Ready */
huart->gState = HAL_UART_STATE_READY;
800cdba: 687b ldr r3, [r7, #4]
800cdbc: 2220 movs r2, #32
800cdbe: 679a str r2, [r3, #120] ; 0x78
/* Cleat TxISR function pointer */
huart->TxISR = NULL;
800cdc0: 687b ldr r3, [r7, #4]
800cdc2: 2200 movs r2, #0
800cdc4: 669a str r2, [r3, #104] ; 0x68
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered Tx complete callback*/
huart->TxCpltCallback(huart);
#else
/*Call legacy weak Tx complete callback*/
HAL_UART_TxCpltCallback(huart);
800cdc6: 6878 ldr r0, [r7, #4]
800cdc8: f7fa fd2e bl 8007828 <HAL_UART_TxCpltCallback>
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
}
800cdcc: bf00 nop
800cdce: 3720 adds r7, #32
800cdd0: 46bd mov sp, r7
800cdd2: bd80 pop {r7, pc}
0800cdd4 <Reset_Handler>:
.section .text.Reset_Handler
.weak Reset_Handler
.type Reset_Handler, %function
Reset_Handler:
ldr sp, =_estack /* set stack pointer */
800cdd4: f8df d034 ldr.w sp, [pc, #52] ; 800ce0c <LoopFillZerobss+0x14>
/* Copy the data segment initializers from flash to SRAM */
movs r1, #0
800cdd8: 2100 movs r1, #0
b LoopCopyDataInit
800cdda: e003 b.n 800cde4 <LoopCopyDataInit>
0800cddc <CopyDataInit>:
CopyDataInit:
ldr r3, =_sidata
800cddc: 4b0c ldr r3, [pc, #48] ; (800ce10 <LoopFillZerobss+0x18>)
ldr r3, [r3, r1]
800cdde: 585b ldr r3, [r3, r1]
str r3, [r0, r1]
800cde0: 5043 str r3, [r0, r1]
adds r1, r1, #4
800cde2: 3104 adds r1, #4
0800cde4 <LoopCopyDataInit>:
LoopCopyDataInit:
ldr r0, =_sdata
800cde4: 480b ldr r0, [pc, #44] ; (800ce14 <LoopFillZerobss+0x1c>)
ldr r3, =_edata
800cde6: 4b0c ldr r3, [pc, #48] ; (800ce18 <LoopFillZerobss+0x20>)
adds r2, r0, r1
800cde8: 1842 adds r2, r0, r1
cmp r2, r3
800cdea: 429a cmp r2, r3
bcc CopyDataInit
800cdec: d3f6 bcc.n 800cddc <CopyDataInit>
ldr r2, =_sbss
800cdee: 4a0b ldr r2, [pc, #44] ; (800ce1c <LoopFillZerobss+0x24>)
b LoopFillZerobss
800cdf0: e002 b.n 800cdf8 <LoopFillZerobss>
0800cdf2 <FillZerobss>:
/* Zero fill the bss segment. */
FillZerobss:
movs r3, #0
800cdf2: 2300 movs r3, #0
str r3, [r2], #4
800cdf4: f842 3b04 str.w r3, [r2], #4
0800cdf8 <LoopFillZerobss>:
LoopFillZerobss:
ldr r3, = _ebss
800cdf8: 4b09 ldr r3, [pc, #36] ; (800ce20 <LoopFillZerobss+0x28>)
cmp r2, r3
800cdfa: 429a cmp r2, r3
bcc FillZerobss
800cdfc: d3f9 bcc.n 800cdf2 <FillZerobss>
/* Call the clock system initialization function.*/
bl SystemInit
800cdfe: f7fa fa69 bl 80072d4 <SystemInit>
/* Call static constructors */
bl __libc_init_array
800ce02: f000 f811 bl 800ce28 <__libc_init_array>
/* Call the application's entry point.*/
bl main
800ce06: f7f6 f8d7 bl 8002fb8 <main>
bx lr
800ce0a: 4770 bx lr
ldr sp, =_estack /* set stack pointer */
800ce0c: 20080000 .word 0x20080000
ldr r3, =_sidata
800ce10: 08024c94 .word 0x08024c94
ldr r0, =_sdata
800ce14: 20020000 .word 0x20020000
ldr r3, =_edata
800ce18: 20020118 .word 0x20020118
ldr r2, =_sbss
800ce1c: 20020118 .word 0x20020118
ldr r3, = _ebss
800ce20: 2006bdd0 .word 0x2006bdd0
0800ce24 <ADC_IRQHandler>:
* @retval None
*/
.section .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b Infinite_Loop
800ce24: e7fe b.n 800ce24 <ADC_IRQHandler>
...
0800ce28 <__libc_init_array>:
800ce28: b570 push {r4, r5, r6, lr}
800ce2a: 4e0d ldr r6, [pc, #52] ; (800ce60 <__libc_init_array+0x38>)
800ce2c: 4c0d ldr r4, [pc, #52] ; (800ce64 <__libc_init_array+0x3c>)
800ce2e: 1ba4 subs r4, r4, r6
800ce30: 10a4 asrs r4, r4, #2
800ce32: 2500 movs r5, #0
800ce34: 42a5 cmp r5, r4
800ce36: d109 bne.n 800ce4c <__libc_init_array+0x24>
800ce38: 4e0b ldr r6, [pc, #44] ; (800ce68 <__libc_init_array+0x40>)
800ce3a: 4c0c ldr r4, [pc, #48] ; (800ce6c <__libc_init_array+0x44>)
800ce3c: f000 f820 bl 800ce80 <_init>
800ce40: 1ba4 subs r4, r4, r6
800ce42: 10a4 asrs r4, r4, #2
800ce44: 2500 movs r5, #0
800ce46: 42a5 cmp r5, r4
800ce48: d105 bne.n 800ce56 <__libc_init_array+0x2e>
800ce4a: bd70 pop {r4, r5, r6, pc}
800ce4c: f856 3025 ldr.w r3, [r6, r5, lsl #2]
800ce50: 4798 blx r3
800ce52: 3501 adds r5, #1
800ce54: e7ee b.n 800ce34 <__libc_init_array+0xc>
800ce56: f856 3025 ldr.w r3, [r6, r5, lsl #2]
800ce5a: 4798 blx r3
800ce5c: 3501 adds r5, #1
800ce5e: e7f2 b.n 800ce46 <__libc_init_array+0x1e>
800ce60: 08024c8c .word 0x08024c8c
800ce64: 08024c8c .word 0x08024c8c
800ce68: 08024c8c .word 0x08024c8c
800ce6c: 08024c90 .word 0x08024c90
0800ce70 <memset>:
800ce70: 4402 add r2, r0
800ce72: 4603 mov r3, r0
800ce74: 4293 cmp r3, r2
800ce76: d100 bne.n 800ce7a <memset+0xa>
800ce78: 4770 bx lr
800ce7a: f803 1b01 strb.w r1, [r3], #1
800ce7e: e7f9 b.n 800ce74 <memset+0x4>
0800ce80 <_init>:
800ce80: b5f8 push {r3, r4, r5, r6, r7, lr}
800ce82: bf00 nop
800ce84: bcf8 pop {r3, r4, r5, r6, r7}
800ce86: bc08 pop {r3}
800ce88: 469e mov lr, r3
800ce8a: 4770 bx lr
0800ce8c <_fini>:
800ce8c: b5f8 push {r3, r4, r5, r6, r7, lr}
800ce8e: bf00 nop
800ce90: bcf8 pop {r3, r4, r5, r6, r7}
800ce92: bc08 pop {r3}
800ce94: 469e mov lr, r3
800ce96: 4770 bx lr