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 : 800021c: b508 push {r3, lr} 800021e: 4b03 ldr r3, [pc, #12] ; (800022c ) 8000220: b11b cbz r3, 800022a 8000222: 4903 ldr r1, [pc, #12] ; (8000230 ) 8000224: 4803 ldr r0, [pc, #12] ; (8000234 ) 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 : void Off(void) { 8000548: b580 push {r7, lr} 800054a: af00 add r7, sp, #0 NeedOff = false; 800054c: 4b11 ldr r3, [pc, #68] ; (8000594 ) 800054e: 2200 movs r2, #0 8000550: 701a strb r2, [r3, #0] BSP_LCD_DisplayOff(); 8000552: f001 fcf7 bl 8001f44 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 ) 800055e: f009 f899 bl 8009694 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 ) 8000568: f009 f87c bl 8009664 800056c: 4603 mov r3, r0 800056e: 2b01 cmp r3, #1 8000570: d0f8 beq.n 8000564 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 ) 800057a: f009 f88b bl 8009694 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 ) 8000584: f009 f886 bl 8009694 HAL_Delay(300); 8000588: f44f 7096 mov.w r0, #300 ; 0x12c 800058c: f008 f89c bl 80086c8 while(1); 8000590: e7fe b.n 8000590 8000592: bf00 nop 8000594: 20020135 .word 0x20020135 8000598: 40020000 .word 0x40020000 800059c: 40021400 .word 0x40021400 080005a0 : 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 ) 80005a6: 4a19 ldr r2, [pc, #100] ; (800060c ) 80005a8: 601a str r2, [r3, #0] hdma2d.Init.Mode = DMA2D_M2M; 80005aa: 4b17 ldr r3, [pc, #92] ; (8000608 ) 80005ac: 2200 movs r2, #0 80005ae: 605a str r2, [r3, #4] hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB565; 80005b0: 4b15 ldr r3, [pc, #84] ; (8000608 ) 80005b2: 2202 movs r2, #2 80005b4: 609a str r2, [r3, #8] hdma2d.Init.OutputOffset = 0; 80005b6: 4b14 ldr r3, [pc, #80] ; (8000608 ) 80005b8: 2200 movs r2, #0 80005ba: 60da str r2, [r3, #12] hdma2d.LayerCfg[1].InputOffset = 0; 80005bc: 4b12 ldr r3, [pc, #72] ; (8000608 ) 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 ) 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 ) 80005ca: 2200 movs r2, #0 80005cc: 641a str r2, [r3, #64] ; 0x40 hdma2d.LayerCfg[1].InputAlpha = 0; 80005ce: 4b0e ldr r3, [pc, #56] ; (8000608 ) 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 ) 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 ) 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 ) 80005e2: f008 fbef bl 8008dc4 80005e6: 4603 mov r3, r0 80005e8: 2b00 cmp r3, #0 80005ea: d001 beq.n 80005f0 { Error_Handler(); 80005ec: f002 fe52 bl 8003294 } if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) 80005f0: 2101 movs r1, #1 80005f2: 4805 ldr r0, [pc, #20] ; (8000608 ) 80005f4: f008 fd54 bl 80090a0 80005f8: 4603 mov r3, r0 80005fa: 2b00 cmp r3, #0 80005fc: d001 beq.n 8000602 { Error_Handler(); 80005fe: f002 fe49 bl 8003294 } } 8000602: bf00 nop 8000604: bd80 pop {r7, pc} 8000606: bf00 nop 8000608: 2006b380 .word 0x2006b380 800060c: 4002b000 .word 0x4002b000 08000610 : 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 ) 800061e: 4293 cmp r3, r2 8000620: d10b bne.n 800063a { /* 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 ) 8000624: 4b09 ldr r3, [pc, #36] ; (800064c ) 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 ) 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 : * 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 ) 8000658: 4b72 ldr r3, [pc, #456] ; (8000824 ) 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 ) 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 ) 8000670: 4b6c ldr r3, [pc, #432] ; (8000824 ) 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 ) 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 ) 8000688: 4b66 ldr r3, [pc, #408] ; (8000824 ) 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 ) 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 ) 80006a0: 4b60 ldr r3, [pc, #384] ; (8000824 ) 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 ) 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 ) 80006b8: 4b5a ldr r3, [pc, #360] ; (8000824 ) 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 ) 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 ) 80006d0: 4b54 ldr r3, [pc, #336] ; (8000824 ) 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 ) 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 ) 80006e8: 4b4e ldr r3, [pc, #312] ; (8000824 ) 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 ) 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 ) 8000700: 4b48 ldr r3, [pc, #288] ; (8000824 ) 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 ) 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 ) 800071c: f008 ffba bl 8009694 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 ) 8000728: f008 ffb4 bl 8009694 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 ) 8000732: f008 ffaf bl 8009694 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 ) 800073e: f008 ffa9 bl 8009694 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 ) 800074a: f008 ffa3 bl 8009694 /*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 ) 8000766: f008 fdd3 bl 8009310 /*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 ) 8000784: f008 fdc4 bl 8009310 /*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 ) 80007a2: f008 fdb5 bl 8009310 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 ) 80007c0: f008 fda6 bl 8009310 /*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 ) 80007d8: f008 fd9a bl 8009310 /*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 ) 80007f4: f008 fd8c bl 8009310 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 ) 8000800: f008 ff48 bl 8009694 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 ) 800080a: f008 ff43 bl 8009694 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 ) 8000816: f008 ff3d bl 8009694 } 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 : void initKeys(void) { 8000838: b580 push {r7, lr} 800083a: af00 add r7, sp, #0 KeysIsReady = false; 800083c: 4b09 ldr r3, [pc, #36] ; (8000864 ) 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 ) 8000848: f008 ff24 bl 8009694 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 ) 8000852: f008 ff1f bl 8009694 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 ) 800085c: f008 ff1a bl 8009694 } 8000860: bf00 nop 8000862: bd80 pop {r7, pc} 8000864: 2002013a .word 0x2002013a 8000868: 40021000 .word 0x40021000 0800086c : 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 ) 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 return 0; 8000886: 2300 movs r3, #0 8000888: e05a b.n 8000940 } if(HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_SET) { 800088a: 2101 movs r1, #1 800088c: 482f ldr r0, [pc, #188] ; (800094c ) 800088e: f008 fee9 bl 8009664 8000892: 4603 mov r3, r0 8000894: 2b01 cmp r3, #1 8000896: d101 bne.n 800089c 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 ) 80008a2: f008 fef7 bl 8009694 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 ) 80008ac: f008 fef2 bl 8009694 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 ) 80008b6: f008 feed bl 8009694 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 ) 80008c0: f008 fee8 bl 8009694 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 ) 80008ca: f008 fecb bl 8009664 80008ce: 4603 mov r3, r0 80008d0: 2b00 cmp r3, #0 80008d2: d103 bne.n 80008dc 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 ) 80008e2: f008 fed7 bl 8009694 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 ) 80008ec: f008 fed2 bl 8009694 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 ) 80008f6: f008 feb5 bl 8009664 80008fa: 4603 mov r3, r0 80008fc: 2b00 cmp r3, #0 80008fe: d103 bne.n 8000908 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 ) 800090e: f008 fec1 bl 8009694 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 ) 8000918: f008 febc bl 8009694 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 ) 8000922: f008 fe9f bl 8009664 8000926: 4603 mov r3, r0 8000928: 2b00 cmp r3, #0 800092a: d103 bne.n 8000934 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 ) 800093a: f008 feab bl 8009694 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 : 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 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 { if(dreb) dreb--; 800096c: 4b43 ldr r3, [pc, #268] ; (8000a7c ) 800096e: 681b ldr r3, [r3, #0] 8000970: 2b00 cmp r3, #0 8000972: d005 beq.n 8000980 8000974: 4b41 ldr r3, [pc, #260] ; (8000a7c ) 8000976: 681b ldr r3, [r3, #0] 8000978: 3b01 subs r3, #1 800097a: 4a40 ldr r2, [pc, #256] ; (8000a7c ) 800097c: 6013 str r3, [r2, #0] 800097e: e00c b.n 800099a else first = 1; 8000980: 4b3f ldr r3, [pc, #252] ; (8000a80 ) 8000982: 2201 movs r2, #1 8000984: 701a strb r2, [r3, #0] 8000986: e008 b.n 800099a } else { if(dreb < KEY_DBZ) 8000988: 4b3c ldr r3, [pc, #240] ; (8000a7c ) 800098a: 681b ldr r3, [r3, #0] 800098c: 2b01 cmp r3, #1 800098e: d804 bhi.n 800099a dreb++; 8000990: 4b3a ldr r3, [pc, #232] ; (8000a7c ) 8000992: 681b ldr r3, [r3, #0] 8000994: 3301 adds r3, #1 8000996: 4a39 ldr r2, [pc, #228] ; (8000a7c ) 8000998: 6013 str r3, [r2, #0] } } while((dreb > 0) && (dreb < KEY_DBZ)); 800099a: 4b38 ldr r3, [pc, #224] ; (8000a7c ) 800099c: 681b ldr r3, [r3, #0] 800099e: 2b00 cmp r3, #0 80009a0: d003 beq.n 80009aa 80009a2: 4b36 ldr r3, [pc, #216] ; (8000a7c ) 80009a4: 681b ldr r3, [r3, #0] 80009a6: 2b01 cmp r3, #1 80009a8: d9d9 bls.n 800095e if(key == KEY_PW) 80009aa: 687b ldr r3, [r7, #4] 80009ac: 2b01 cmp r3, #1 80009ae: d129 bne.n 8000a04 { do { key = readkey(); 80009b0: f7ff ff5c bl 800086c 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 { if(dreb) dreb--; 80009be: 4b2f ldr r3, [pc, #188] ; (8000a7c ) 80009c0: 681b ldr r3, [r3, #0] 80009c2: 2b00 cmp r3, #0 80009c4: d005 beq.n 80009d2 80009c6: 4b2d ldr r3, [pc, #180] ; (8000a7c ) 80009c8: 681b ldr r3, [r3, #0] 80009ca: 3b01 subs r3, #1 80009cc: 4a2b ldr r2, [pc, #172] ; (8000a7c ) 80009ce: 6013 str r3, [r2, #0] 80009d0: e00e b.n 80009f0 else first = 1; 80009d2: 4b2b ldr r3, [pc, #172] ; (8000a80 ) 80009d4: 2201 movs r2, #1 80009d6: 701a strb r2, [r3, #0] 80009d8: e00a b.n 80009f0 } else { if(dreb < 50000) 80009da: 4b28 ldr r3, [pc, #160] ; (8000a7c ) 80009dc: 681b ldr r3, [r3, #0] 80009de: f24c 324f movw r2, #49999 ; 0xc34f 80009e2: 4293 cmp r3, r2 80009e4: d804 bhi.n 80009f0 dreb++; 80009e6: 4b25 ldr r3, [pc, #148] ; (8000a7c ) 80009e8: 681b ldr r3, [r3, #0] 80009ea: 3301 adds r3, #1 80009ec: 4a23 ldr r2, [pc, #140] ; (8000a7c ) 80009ee: 6013 str r3, [r2, #0] } } while((dreb > 0) && (dreb < 50000)); 80009f0: 4b22 ldr r3, [pc, #136] ; (8000a7c ) 80009f2: 681b ldr r3, [r3, #0] 80009f4: 2b00 cmp r3, #0 80009f6: d005 beq.n 8000a04 80009f8: 4b20 ldr r3, [pc, #128] ; (8000a7c ) 80009fa: 681b ldr r3, [r3, #0] 80009fc: f24c 324f movw r2, #49999 ; 0xc34f 8000a00: 4293 cmp r3, r2 8000a02: d9d5 bls.n 80009b0 if(!key) //если кнопки отпущены 8000a04: 687b ldr r3, [r7, #4] 8000a06: 2b00 cmp r3, #0 8000a08: d104 bne.n 8000a14 { first = 1; //достоверно кнопки отпущены 8000a0a: 4b1d ldr r3, [pc, #116] ; (8000a80 ) 8000a0c: 2201 movs r2, #1 8000a0e: 701a strb r2, [r3, #0] return 0; //вернуть 0 8000a10: 2300 movs r3, #0 8000a12: e02f b.n 8000a74 } else //иначе { if(first) //определить кнопку 8000a14: 4b1a ldr r3, [pc, #104] ; (8000a80 ) 8000a16: 781b ldrb r3, [r3, #0] 8000a18: 2b00 cmp r3, #0 8000a1a: d00c beq.n 8000a36 { //только один раз first = 0; //за нажатие 8000a1c: 4b18 ldr r3, [pc, #96] ; (8000a80 ) 8000a1e: 2200 movs r2, #0 8000a20: 701a strb r2, [r3, #0] repeat = rep = 2000; 8000a22: 4b18 ldr r3, [pc, #96] ; (8000a84 ) 8000a24: f44f 62fa mov.w r2, #2000 ; 0x7d0 8000a28: 801a strh r2, [r3, #0] 8000a2a: 4b16 ldr r3, [pc, #88] ; (8000a84 ) 8000a2c: 881a ldrh r2, [r3, #0] 8000a2e: 4b16 ldr r3, [pc, #88] ; (8000a88 ) 8000a30: 801a strh r2, [r3, #0] return key; //вернуть в главную функцию состояние клавиатуры 8000a32: 687b ldr r3, [r7, #4] 8000a34: e01e b.n 8000a74 } else { if(repeat) 8000a36: 4b14 ldr r3, [pc, #80] ; (8000a88 ) 8000a38: 881b ldrh r3, [r3, #0] 8000a3a: b29b uxth r3, r3 8000a3c: 2b00 cmp r3, #0 8000a3e: d001 beq.n 8000a44 return 0; //имитация свободной клавиатуры 8000a40: 2300 movs r3, #0 8000a42: e017 b.n 8000a74 else { if(rep > 0) 8000a44: 4b0f ldr r3, [pc, #60] ; (8000a84 ) 8000a46: 881b ldrh r3, [r3, #0] 8000a48: 2b00 cmp r3, #0 8000a4a: d006 beq.n 8000a5a rep >>= 1; 8000a4c: 4b0d ldr r3, [pc, #52] ; (8000a84 ) 8000a4e: 881b ldrh r3, [r3, #0] 8000a50: 085b lsrs r3, r3, #1 8000a52: b29a uxth r2, r3 8000a54: 4b0b ldr r3, [pc, #44] ; (8000a84 ) 8000a56: 801a strh r2, [r3, #0] 8000a58: e002 b.n 8000a60 else rep = 100; 8000a5a: 4b0a ldr r3, [pc, #40] ; (8000a84 ) 8000a5c: 2264 movs r2, #100 ; 0x64 8000a5e: 801a strh r2, [r3, #0] repeat = rep; 8000a60: 4b08 ldr r3, [pc, #32] ; (8000a84 ) 8000a62: 881a ldrh r2, [r3, #0] 8000a64: 4b08 ldr r3, [pc, #32] ; (8000a88 ) 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 return 0; 8000a6e: 2300 movs r3, #0 8000a70: e000 b.n 8000a74 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 : 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 ) 8000ab8: 681b ldr r3, [r3, #0] 8000aba: 677b str r3, [r7, #116] ; 0x74 KEY_STATE = 0; 8000abc: 4baa ldr r3, [pc, #680] ; (8000d68 ) 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 { if(DrawStatus) 8000aca: 4ba8 ldr r3, [pc, #672] ; (8000d6c ) 8000acc: 781b ldrb r3, [r3, #0] 8000ace: b2db uxtb r3, r3 8000ad0: 2b00 cmp r3, #0 8000ad2: d00a beq.n 8000aea { DrawStatus = false; 8000ad4: 4ba5 ldr r3, [pc, #660] ; (8000d6c ) 8000ad6: 2200 movs r2, #0 8000ad8: 701a strb r2, [r3, #0] timerStatus = 0; 8000ada: 4ba5 ldr r3, [pc, #660] ; (8000d70 ) 8000adc: 2200 movs r2, #0 8000ade: 801a strh r2, [r3, #0] STATUS = AP_OK; 8000ae0: 4ba4 ldr r3, [pc, #656] ; (8000d74 ) 8000ae2: 2200 movs r2, #0 8000ae4: 601a str r2, [r3, #0] 8000ae6: f000 bd23 b.w 8001530 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 8000af4: a201 add r2, pc, #4 ; (adr r2, 8000afc ) 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 ) 8000b7e: 781b ldrb r3, [r3, #0] 8000b80: b2db uxtb r3, r3 8000b82: 2b00 cmp r3, #0 8000b84: f040 81ed bne.w 8000f62 { if(CNT_CHANNELS < 5) 8000b88: 4b7c ldr r3, [pc, #496] ; (8000d7c ) 8000b8a: 681b ldr r3, [r3, #0] 8000b8c: 2b04 cmp r3, #4 8000b8e: f200 84ca bhi.w 8001526 { if(ACTIVE_CHANNEL == Ch1) 8000b92: 4b7b ldr r3, [pc, #492] ; (8000d80 ) 8000b94: 681b ldr r3, [r3, #0] 8000b96: 2b00 cmp r3, #0 8000b98: d171 bne.n 8000c7e { if(menupos == Input) 8000b9a: 4b7a ldr r3, [pc, #488] ; (8000d84 ) 8000b9c: 781b ldrb r3, [r3, #0] 8000b9e: b2db uxtb r3, r3 8000ba0: 2b00 cmp r3, #0 8000ba2: d168 bne.n 8000c76 { if(focused) 8000ba4: 4b78 ldr r3, [pc, #480] ; (8000d88 ) 8000ba6: 781b ldrb r3, [r3, #0] 8000ba8: b2db uxtb r3, r3 8000baa: 2b00 cmp r3, #0 8000bac: d031 beq.n 8000c12 { if(pardata.amplif[ACTIVE_CHANNEL].IIN < ICP) 8000bae: 4b74 ldr r3, [pc, #464] ; (8000d80 ) 8000bb0: 681b ldr r3, [r3, #0] 8000bb2: 4a76 ldr r2, [pc, #472] ; (8000d8c ) 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 { pardata.amplif[ACTIVE_CHANNEL].IIN++; 8000bc2: 4b6f ldr r3, [pc, #444] ; (8000d80 ) 8000bc4: 681b ldr r3, [r3, #0] 8000bc6: 4971 ldr r1, [pc, #452] ; (8000d8c ) 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 ) 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 ) 8000be0: 681b ldr r3, [r3, #0] 8000be2: b2db uxtb r3, r3 8000be4: 4618 mov r0, r3 8000be6: f007 f817 bl 8007c18 8000bea: 4603 mov r3, r0 8000bec: 2b00 cmp r3, #0 8000bee: f000 849a beq.w 8001526 { pardata.amplif[ACTIVE_CHANNEL].IIN--; 8000bf2: 4b63 ldr r3, [pc, #396] ; (8000d80 ) 8000bf4: 681b ldr r3, [r3, #0] 8000bf6: 4965 ldr r1, [pc, #404] ; (8000d8c ) 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 ) 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 ACTIVE_CHANNEL = Ch4; 8000c12: 4b5b ldr r3, [pc, #364] ; (8000d80 ) 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 ) 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 ) 8000c26: 681b ldr r3, [r3, #0] 8000c28: 4013 ands r3, r2 8000c2a: 2b00 cmp r3, #0 8000c2c: d11e bne.n 8000c6c ACTIVE_CHANNEL = Ch3; 8000c2e: 4b54 ldr r3, [pc, #336] ; (8000d80 ) 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 ) 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 ) 8000c42: 681b ldr r3, [r3, #0] 8000c44: 4013 ands r3, r2 8000c46: 2b00 cmp r3, #0 8000c48: d110 bne.n 8000c6c ACTIVE_CHANNEL = Ch2; 8000c4a: 4b4d ldr r3, [pc, #308] ; (8000d80 ) 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 ) 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 ) 8000c5e: 681b ldr r3, [r3, #0] 8000c60: 4013 ands r3, r2 8000c62: 2b00 cmp r3, #0 8000c64: d102 bne.n 8000c6c ACTIVE_CHANNEL = Ch1; 8000c66: 4b46 ldr r3, [pc, #280] ; (8000d80 ) 8000c68: 2200 movs r2, #0 8000c6a: 601a str r2, [r3, #0] menupos = Kn; 8000c6c: 4b45 ldr r3, [pc, #276] ; (8000d84 ) 8000c6e: 2204 movs r2, #4 8000c70: 701a strb r2, [r3, #0] break; 8000c72: f000 bc58 b.w 8001526 DoKeyUP(); 8000c76: f000 fc67 bl 8001548 break; 8000c7a: f000 bc54 b.w 8001526 if(ACTIVE_CHANNEL == Ch2) 8000c7e: 4b40 ldr r3, [pc, #256] ; (8000d80 ) 8000c80: 681b ldr r3, [r3, #0] 8000c82: 2b01 cmp r3, #1 8000c84: f040 8086 bne.w 8000d94 if(menupos == Input) 8000c88: 4b3e ldr r3, [pc, #248] ; (8000d84 ) 8000c8a: 781b ldrb r3, [r3, #0] 8000c8c: b2db uxtb r3, r3 8000c8e: 2b00 cmp r3, #0 8000c90: d167 bne.n 8000d62 if(focused) 8000c92: 4b3d ldr r3, [pc, #244] ; (8000d88 ) 8000c94: 781b ldrb r3, [r3, #0] 8000c96: b2db uxtb r3, r3 8000c98: 2b00 cmp r3, #0 8000c9a: d031 beq.n 8000d00 if(pardata.amplif[ACTIVE_CHANNEL].IIN < ICP) 8000c9c: 4b38 ldr r3, [pc, #224] ; (8000d80 ) 8000c9e: 681b ldr r3, [r3, #0] 8000ca0: 4a3a ldr r2, [pc, #232] ; (8000d8c ) 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 pardata.amplif[ACTIVE_CHANNEL].IIN++; 8000cb0: 4b33 ldr r3, [pc, #204] ; (8000d80 ) 8000cb2: 681b ldr r3, [r3, #0] 8000cb4: 4935 ldr r1, [pc, #212] ; (8000d8c ) 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 ) 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 ) 8000cce: 681b ldr r3, [r3, #0] 8000cd0: b2db uxtb r3, r3 8000cd2: 4618 mov r0, r3 8000cd4: f006 ffa0 bl 8007c18 8000cd8: 4603 mov r3, r0 8000cda: 2b00 cmp r3, #0 8000cdc: f000 8423 beq.w 8001526 pardata.amplif[ACTIVE_CHANNEL].IIN--; 8000ce0: 4b27 ldr r3, [pc, #156] ; (8000d80 ) 8000ce2: 681b ldr r3, [r3, #0] 8000ce4: 4929 ldr r1, [pc, #164] ; (8000d8c ) 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 ) 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 ACTIVE_CHANNEL = Ch1; 8000d00: 4b1f ldr r3, [pc, #124] ; (8000d80 ) 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 ) 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 ) 8000d14: 681b ldr r3, [r3, #0] 8000d16: 4013 ands r3, r2 8000d18: 2b00 cmp r3, #0 8000d1a: d11e bne.n 8000d5a ACTIVE_CHANNEL = Ch4; 8000d1c: 4b18 ldr r3, [pc, #96] ; (8000d80 ) 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 ) 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 ) 8000d30: 681b ldr r3, [r3, #0] 8000d32: 4013 ands r3, r2 8000d34: 2b00 cmp r3, #0 8000d36: d110 bne.n 8000d5a ACTIVE_CHANNEL = Ch3; 8000d38: 4b11 ldr r3, [pc, #68] ; (8000d80 ) 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 ) 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 ) 8000d4c: 681b ldr r3, [r3, #0] 8000d4e: 4013 ands r3, r2 8000d50: 2b00 cmp r3, #0 8000d52: d102 bne.n 8000d5a ACTIVE_CHANNEL = Ch2; 8000d54: 4b0a ldr r3, [pc, #40] ; (8000d80 ) 8000d56: 2201 movs r2, #1 8000d58: 601a str r2, [r3, #0] menupos = Kn; 8000d5a: 4b0a ldr r3, [pc, #40] ; (8000d84 ) 8000d5c: 2204 movs r2, #4 8000d5e: 701a strb r2, [r3, #0] break; 8000d60: e3e1 b.n 8001526 DoKeyUP(); 8000d62: f000 fbf1 bl 8001548 break; 8000d66: e3de b.n 8001526 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 ) 8000d96: 681b ldr r3, [r3, #0] 8000d98: 2b02 cmp r3, #2 8000d9a: d16e bne.n 8000e7a if(menupos == Input) 8000d9c: 4b9d ldr r3, [pc, #628] ; (8001014 ) 8000d9e: 781b ldrb r3, [r3, #0] 8000da0: b2db uxtb r3, r3 8000da2: 2b00 cmp r3, #0 8000da4: d166 bne.n 8000e74 if(focused) 8000da6: 4b9c ldr r3, [pc, #624] ; (8001018 ) 8000da8: 781b ldrb r3, [r3, #0] 8000daa: b2db uxtb r3, r3 8000dac: 2b00 cmp r3, #0 8000dae: d030 beq.n 8000e12 if(pardata.amplif[ACTIVE_CHANNEL].IIN < ICP) 8000db0: 4b97 ldr r3, [pc, #604] ; (8001010 ) 8000db2: 681b ldr r3, [r3, #0] 8000db4: 4a99 ldr r2, [pc, #612] ; (800101c ) 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 pardata.amplif[ACTIVE_CHANNEL].IIN++; 8000dc4: 4b92 ldr r3, [pc, #584] ; (8001010 ) 8000dc6: 681b ldr r3, [r3, #0] 8000dc8: 4994 ldr r1, [pc, #592] ; (800101c ) 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 ) 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 ) 8000de2: 681b ldr r3, [r3, #0] 8000de4: b2db uxtb r3, r3 8000de6: 4618 mov r0, r3 8000de8: f006 ff16 bl 8007c18 8000dec: 4603 mov r3, r0 8000dee: 2b00 cmp r3, #0 8000df0: f000 8399 beq.w 8001526 pardata.amplif[ACTIVE_CHANNEL].IIN--; 8000df4: 4b86 ldr r3, [pc, #536] ; (8001010 ) 8000df6: 681b ldr r3, [r3, #0] 8000df8: 4988 ldr r1, [pc, #544] ; (800101c ) 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 ) 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 ACTIVE_CHANNEL = Ch2; 8000e12: 4b7f ldr r3, [pc, #508] ; (8001010 ) 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 ) 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 ) 8000e26: 681b ldr r3, [r3, #0] 8000e28: 4013 ands r3, r2 8000e2a: 2b00 cmp r3, #0 8000e2c: d11e bne.n 8000e6c ACTIVE_CHANNEL = Ch1; 8000e2e: 4b78 ldr r3, [pc, #480] ; (8001010 ) 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 ) 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 ) 8000e42: 681b ldr r3, [r3, #0] 8000e44: 4013 ands r3, r2 8000e46: 2b00 cmp r3, #0 8000e48: d110 bne.n 8000e6c ACTIVE_CHANNEL = Ch4; 8000e4a: 4b71 ldr r3, [pc, #452] ; (8001010 ) 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 ) 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 ) 8000e5e: 681b ldr r3, [r3, #0] 8000e60: 4013 ands r3, r2 8000e62: 2b00 cmp r3, #0 8000e64: d102 bne.n 8000e6c ACTIVE_CHANNEL = Ch3; 8000e66: 4b6a ldr r3, [pc, #424] ; (8001010 ) 8000e68: 2202 movs r2, #2 8000e6a: 601a str r2, [r3, #0] menupos = Kn; 8000e6c: 4b69 ldr r3, [pc, #420] ; (8001014 ) 8000e6e: 2204 movs r2, #4 8000e70: 701a strb r2, [r3, #0] break; 8000e72: e358 b.n 8001526 DoKeyUP(); 8000e74: f000 fb68 bl 8001548 break; 8000e78: e355 b.n 8001526 if(ACTIVE_CHANNEL == Ch4) 8000e7a: 4b65 ldr r3, [pc, #404] ; (8001010 ) 8000e7c: 681b ldr r3, [r3, #0] 8000e7e: 2b03 cmp r3, #3 8000e80: f040 8351 bne.w 8001526 if(menupos == Input) 8000e84: 4b63 ldr r3, [pc, #396] ; (8001014 ) 8000e86: 781b ldrb r3, [r3, #0] 8000e88: b2db uxtb r3, r3 8000e8a: 2b00 cmp r3, #0 8000e8c: d166 bne.n 8000f5c if(focused) 8000e8e: 4b62 ldr r3, [pc, #392] ; (8001018 ) 8000e90: 781b ldrb r3, [r3, #0] 8000e92: b2db uxtb r3, r3 8000e94: 2b00 cmp r3, #0 8000e96: d030 beq.n 8000efa if(pardata.amplif[ACTIVE_CHANNEL].IIN < ICP) 8000e98: 4b5d ldr r3, [pc, #372] ; (8001010 ) 8000e9a: 681b ldr r3, [r3, #0] 8000e9c: 4a5f ldr r2, [pc, #380] ; (800101c ) 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 pardata.amplif[ACTIVE_CHANNEL].IIN++; 8000eac: 4b58 ldr r3, [pc, #352] ; (8001010 ) 8000eae: 681b ldr r3, [r3, #0] 8000eb0: 495a ldr r1, [pc, #360] ; (800101c ) 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 ) 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 ) 8000eca: 681b ldr r3, [r3, #0] 8000ecc: b2db uxtb r3, r3 8000ece: 4618 mov r0, r3 8000ed0: f006 fea2 bl 8007c18 8000ed4: 4603 mov r3, r0 8000ed6: 2b00 cmp r3, #0 8000ed8: f000 8325 beq.w 8001526 pardata.amplif[ACTIVE_CHANNEL].IIN--; 8000edc: 4b4c ldr r3, [pc, #304] ; (8001010 ) 8000ede: 681b ldr r3, [r3, #0] 8000ee0: 494e ldr r1, [pc, #312] ; (800101c ) 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 ) 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 ACTIVE_CHANNEL = Ch3; 8000efa: 4b45 ldr r3, [pc, #276] ; (8001010 ) 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 ) 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 ) 8000f0e: 681b ldr r3, [r3, #0] 8000f10: 4013 ands r3, r2 8000f12: 2b00 cmp r3, #0 8000f14: d11e bne.n 8000f54 ACTIVE_CHANNEL = Ch2; 8000f16: 4b3e ldr r3, [pc, #248] ; (8001010 ) 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 ) 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 ) 8000f2a: 681b ldr r3, [r3, #0] 8000f2c: 4013 ands r3, r2 8000f2e: 2b00 cmp r3, #0 8000f30: d110 bne.n 8000f54 ACTIVE_CHANNEL = Ch1; 8000f32: 4b37 ldr r3, [pc, #220] ; (8001010 ) 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 ) 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 ) 8000f46: 681b ldr r3, [r3, #0] 8000f48: 4013 ands r3, r2 8000f4a: 2b00 cmp r3, #0 8000f4c: d102 bne.n 8000f54 ACTIVE_CHANNEL = Ch4; 8000f4e: 4b30 ldr r3, [pc, #192] ; (8001010 ) 8000f50: 2203 movs r2, #3 8000f52: 601a str r2, [r3, #0] menupos = Kn; 8000f54: 4b2f ldr r3, [pc, #188] ; (8001014 ) 8000f56: 2204 movs r2, #4 8000f58: 701a strb r2, [r3, #0] break; 8000f5a: e2e4 b.n 8001526 DoKeyUP(); 8000f5c: f000 faf4 bl 8001548 break; 8000f60: e2e1 b.n 8001526 if(menu == CALIBR_00) 8000f62: 4b30 ldr r3, [pc, #192] ; (8001024 ) 8000f64: 781b ldrb r3, [r3, #0] 8000f66: b2db uxtb r3, r3 8000f68: 2b01 cmp r3, #1 8000f6a: d10d bne.n 8000f88 if(menupos > Ch1) menupos--; 8000f6c: 4b29 ldr r3, [pc, #164] ; (8001014 ) 8000f6e: 781b ldrb r3, [r3, #0] 8000f70: b2db uxtb r3, r3 8000f72: 2b00 cmp r3, #0 8000f74: f000 82d7 beq.w 8001526 8000f78: 4b26 ldr r3, [pc, #152] ; (8001014 ) 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 ) 8000f84: 701a strb r2, [r3, #0] break; 8000f86: e2ce b.n 8001526 if(menu >= CALIBR_0 && menu <= CALIBR_22) 8000f88: 4b26 ldr r3, [pc, #152] ; (8001024 ) 8000f8a: 781b ldrb r3, [r3, #0] 8000f8c: b2db uxtb r3, r3 8000f8e: 2b01 cmp r3, #1 8000f90: f240 82c9 bls.w 8001526 8000f94: 4b23 ldr r3, [pc, #140] ; (8001024 ) 8000f96: 781b ldrb r3, [r3, #0] 8000f98: b2db uxtb r3, r3 8000f9a: 2b18 cmp r3, #24 8000f9c: f200 82c3 bhi.w 8001526 if(menupos == Next) 8000fa0: 4b1c ldr r3, [pc, #112] ; (8001014 ) 8000fa2: 781b ldrb r3, [r3, #0] 8000fa4: b2db uxtb r3, r3 8000fa6: 2b06 cmp r3, #6 8000fa8: d103 bne.n 8000fb2 menupos = Set_1; 8000faa: 4b1a ldr r3, [pc, #104] ; (8001014 ) 8000fac: 2205 movs r2, #5 8000fae: 701a strb r2, [r3, #0] break; 8000fb0: e2b9 b.n 8001526 if(menupos == Set_1) 8000fb2: 4b18 ldr r3, [pc, #96] ; (8001014 ) 8000fb4: 781b ldrb r3, [r3, #0] 8000fb6: b2db uxtb r3, r3 8000fb8: 2b05 cmp r3, #5 8000fba: d103 bne.n 8000fc4 menupos = Set1; 8000fbc: 4b15 ldr r3, [pc, #84] ; (8001014 ) 8000fbe: 2204 movs r2, #4 8000fc0: 701a strb r2, [r3, #0] break; 8000fc2: e2b0 b.n 8001526 if(menupos == Set1) 8000fc4: 4b13 ldr r3, [pc, #76] ; (8001014 ) 8000fc6: 781b ldrb r3, [r3, #0] 8000fc8: b2db uxtb r3, r3 8000fca: 2b04 cmp r3, #4 8000fcc: d103 bne.n 8000fd6 menupos = Set_10; 8000fce: 4b11 ldr r3, [pc, #68] ; (8001014 ) 8000fd0: 2203 movs r2, #3 8000fd2: 701a strb r2, [r3, #0] break; 8000fd4: e2a7 b.n 8001526 if(menupos == Set_10) 8000fd6: 4b0f ldr r3, [pc, #60] ; (8001014 ) 8000fd8: 781b ldrb r3, [r3, #0] 8000fda: b2db uxtb r3, r3 8000fdc: 2b03 cmp r3, #3 8000fde: d103 bne.n 8000fe8 menupos = Set10; 8000fe0: 4b0c ldr r3, [pc, #48] ; (8001014 ) 8000fe2: 2202 movs r2, #2 8000fe4: 701a strb r2, [r3, #0] break; 8000fe6: e29e b.n 8001526 if(menupos == Set10) 8000fe8: 4b0a ldr r3, [pc, #40] ; (8001014 ) 8000fea: 781b ldrb r3, [r3, #0] 8000fec: b2db uxtb r3, r3 8000fee: 2b02 cmp r3, #2 8000ff0: d103 bne.n 8000ffa menupos = Set_100; 8000ff2: 4b08 ldr r3, [pc, #32] ; (8001014 ) 8000ff4: 2201 movs r2, #1 8000ff6: 701a strb r2, [r3, #0] break; 8000ff8: e295 b.n 8001526 if(menupos == Set_100) 8000ffa: 4b06 ldr r3, [pc, #24] ; (8001014 ) 8000ffc: 781b ldrb r3, [r3, #0] 8000ffe: b2db uxtb r3, r3 8001000: 2b01 cmp r3, #1 8001002: f040 8290 bne.w 8001526 menupos = Set100; 8001006: 4b03 ldr r3, [pc, #12] ; (8001014 ) 8001008: 2200 movs r2, #0 800100a: 701a strb r2, [r3, #0] break; 800100c: e28b b.n 8001526 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 ) 800102a: 781b ldrb r3, [r3, #0] 800102c: b2db uxtb r3, r3 800102e: 2b00 cmp r3, #0 8001030: f040 8112 bne.w 8001258 { if(CNT_CHANNELS < 5) 8001034: 4ba6 ldr r3, [pc, #664] ; (80012d0 ) 8001036: 681b ldr r3, [r3, #0] 8001038: 2b04 cmp r3, #4 800103a: f200 8276 bhi.w 800152a { if(ACTIVE_CHANNEL == Ch1) 800103e: 4ba5 ldr r3, [pc, #660] ; (80012d4 ) 8001040: 681b ldr r3, [r3, #0] 8001042: 2b00 cmp r3, #0 8001044: d13e bne.n 80010c4 { if(menupos == Kn) 8001046: 4ba4 ldr r3, [pc, #656] ; (80012d8 ) 8001048: 781b ldrb r3, [r3, #0] 800104a: b2db uxtb r3, r3 800104c: 2b04 cmp r3, #4 800104e: d136 bne.n 80010be { if(focused) 8001050: 4ba2 ldr r3, [pc, #648] ; (80012dc ) 8001052: 781b ldrb r3, [r3, #0] 8001054: b2db uxtb r3, r3 8001056: 2b00 cmp r3, #0 8001058: f040 8267 bne.w 800152a { } else { ACTIVE_CHANNEL = Ch2; 800105c: 4b9d ldr r3, [pc, #628] ; (80012d4 ) 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 ) 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 ) 8001070: 681b ldr r3, [r3, #0] 8001072: 4013 ands r3, r2 8001074: 2b00 cmp r3, #0 8001076: d11e bne.n 80010b6 { ACTIVE_CHANNEL = Ch3; 8001078: 4b96 ldr r3, [pc, #600] ; (80012d4 ) 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 ) 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 ) 800108c: 681b ldr r3, [r3, #0] 800108e: 4013 ands r3, r2 8001090: 2b00 cmp r3, #0 8001092: d110 bne.n 80010b6 { ACTIVE_CHANNEL = Ch4; 8001094: 4b8f ldr r3, [pc, #572] ; (80012d4 ) 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 ) 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 ) 80010a8: 681b ldr r3, [r3, #0] 80010aa: 4013 ands r3, r2 80010ac: 2b00 cmp r3, #0 80010ae: d102 bne.n 80010b6 { ACTIVE_CHANNEL = Ch1; 80010b0: 4b88 ldr r3, [pc, #544] ; (80012d4 ) 80010b2: 2200 movs r2, #0 80010b4: 601a str r2, [r3, #0] } } } menupos = Input; 80010b6: 4b88 ldr r3, [pc, #544] ; (80012d8 ) 80010b8: 2200 movs r2, #0 80010ba: 701a strb r2, [r3, #0] else if(menupos == Set_1) menupos = Next; } } break; 80010bc: e235 b.n 800152a DoKeyDN(); 80010be: f000 fbd7 bl 8001870 break; 80010c2: e232 b.n 800152a if(ACTIVE_CHANNEL == Ch2) 80010c4: 4b83 ldr r3, [pc, #524] ; (80012d4 ) 80010c6: 681b ldr r3, [r3, #0] 80010c8: 2b01 cmp r3, #1 80010ca: d13e bne.n 800114a if(menupos == Kn) 80010cc: 4b82 ldr r3, [pc, #520] ; (80012d8 ) 80010ce: 781b ldrb r3, [r3, #0] 80010d0: b2db uxtb r3, r3 80010d2: 2b04 cmp r3, #4 80010d4: d136 bne.n 8001144 if(focused) 80010d6: 4b81 ldr r3, [pc, #516] ; (80012dc ) 80010d8: 781b ldrb r3, [r3, #0] 80010da: b2db uxtb r3, r3 80010dc: 2b00 cmp r3, #0 80010de: f040 8224 bne.w 800152a ACTIVE_CHANNEL = Ch3; 80010e2: 4b7c ldr r3, [pc, #496] ; (80012d4 ) 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 ) 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 ) 80010f6: 681b ldr r3, [r3, #0] 80010f8: 4013 ands r3, r2 80010fa: 2b00 cmp r3, #0 80010fc: d11e bne.n 800113c ACTIVE_CHANNEL = Ch4; 80010fe: 4b75 ldr r3, [pc, #468] ; (80012d4 ) 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 ) 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 ) 8001112: 681b ldr r3, [r3, #0] 8001114: 4013 ands r3, r2 8001116: 2b00 cmp r3, #0 8001118: d110 bne.n 800113c ACTIVE_CHANNEL = Ch1; 800111a: 4b6e ldr r3, [pc, #440] ; (80012d4 ) 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 ) 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 ) 800112e: 681b ldr r3, [r3, #0] 8001130: 4013 ands r3, r2 8001132: 2b00 cmp r3, #0 8001134: d102 bne.n 800113c ACTIVE_CHANNEL = Ch2; 8001136: 4b67 ldr r3, [pc, #412] ; (80012d4 ) 8001138: 2201 movs r2, #1 800113a: 601a str r2, [r3, #0] menupos = Input; 800113c: 4b66 ldr r3, [pc, #408] ; (80012d8 ) 800113e: 2200 movs r2, #0 8001140: 701a strb r2, [r3, #0] break; 8001142: e1f2 b.n 800152a DoKeyDN(); 8001144: f000 fb94 bl 8001870 break; 8001148: e1ef b.n 800152a if(ACTIVE_CHANNEL == Ch3) 800114a: 4b62 ldr r3, [pc, #392] ; (80012d4 ) 800114c: 681b ldr r3, [r3, #0] 800114e: 2b02 cmp r3, #2 8001150: d13e bne.n 80011d0 if(menupos == Kn) 8001152: 4b61 ldr r3, [pc, #388] ; (80012d8 ) 8001154: 781b ldrb r3, [r3, #0] 8001156: b2db uxtb r3, r3 8001158: 2b04 cmp r3, #4 800115a: d136 bne.n 80011ca if(focused) 800115c: 4b5f ldr r3, [pc, #380] ; (80012dc ) 800115e: 781b ldrb r3, [r3, #0] 8001160: b2db uxtb r3, r3 8001162: 2b00 cmp r3, #0 8001164: f040 81e1 bne.w 800152a ACTIVE_CHANNEL = Ch4; 8001168: 4b5a ldr r3, [pc, #360] ; (80012d4 ) 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 ) 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 ) 800117c: 681b ldr r3, [r3, #0] 800117e: 4013 ands r3, r2 8001180: 2b00 cmp r3, #0 8001182: d11e bne.n 80011c2 ACTIVE_CHANNEL = Ch1; 8001184: 4b53 ldr r3, [pc, #332] ; (80012d4 ) 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 ) 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 ) 8001198: 681b ldr r3, [r3, #0] 800119a: 4013 ands r3, r2 800119c: 2b00 cmp r3, #0 800119e: d110 bne.n 80011c2 ACTIVE_CHANNEL = Ch2; 80011a0: 4b4c ldr r3, [pc, #304] ; (80012d4 ) 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 ) 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 ) 80011b4: 681b ldr r3, [r3, #0] 80011b6: 4013 ands r3, r2 80011b8: 2b00 cmp r3, #0 80011ba: d102 bne.n 80011c2 ACTIVE_CHANNEL = Ch3; 80011bc: 4b45 ldr r3, [pc, #276] ; (80012d4 ) 80011be: 2202 movs r2, #2 80011c0: 601a str r2, [r3, #0] menupos = Input; 80011c2: 4b45 ldr r3, [pc, #276] ; (80012d8 ) 80011c4: 2200 movs r2, #0 80011c6: 701a strb r2, [r3, #0] break; 80011c8: e1af b.n 800152a DoKeyDN(); 80011ca: f000 fb51 bl 8001870 break; 80011ce: e1ac b.n 800152a if(ACTIVE_CHANNEL == Ch4) 80011d0: 4b40 ldr r3, [pc, #256] ; (80012d4 ) 80011d2: 681b ldr r3, [r3, #0] 80011d4: 2b03 cmp r3, #3 80011d6: f040 81a8 bne.w 800152a if(menupos == Kn) 80011da: 4b3f ldr r3, [pc, #252] ; (80012d8 ) 80011dc: 781b ldrb r3, [r3, #0] 80011de: b2db uxtb r3, r3 80011e0: 2b04 cmp r3, #4 80011e2: d136 bne.n 8001252 if(focused) 80011e4: 4b3d ldr r3, [pc, #244] ; (80012dc ) 80011e6: 781b ldrb r3, [r3, #0] 80011e8: b2db uxtb r3, r3 80011ea: 2b00 cmp r3, #0 80011ec: f040 819d bne.w 800152a ACTIVE_CHANNEL = Ch1; 80011f0: 4b38 ldr r3, [pc, #224] ; (80012d4 ) 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 ) 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 ) 8001204: 681b ldr r3, [r3, #0] 8001206: 4013 ands r3, r2 8001208: 2b00 cmp r3, #0 800120a: d11e bne.n 800124a ACTIVE_CHANNEL = Ch2; 800120c: 4b31 ldr r3, [pc, #196] ; (80012d4 ) 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 ) 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 ) 8001220: 681b ldr r3, [r3, #0] 8001222: 4013 ands r3, r2 8001224: 2b00 cmp r3, #0 8001226: d110 bne.n 800124a ACTIVE_CHANNEL = Ch3; 8001228: 4b2a ldr r3, [pc, #168] ; (80012d4 ) 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 ) 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 ) 800123c: 681b ldr r3, [r3, #0] 800123e: 4013 ands r3, r2 8001240: 2b00 cmp r3, #0 8001242: d102 bne.n 800124a ACTIVE_CHANNEL = Ch4; 8001244: 4b23 ldr r3, [pc, #140] ; (80012d4 ) 8001246: 2203 movs r2, #3 8001248: 601a str r2, [r3, #0] menupos = Input; 800124a: 4b23 ldr r3, [pc, #140] ; (80012d8 ) 800124c: 2200 movs r2, #0 800124e: 701a strb r2, [r3, #0] break; 8001250: e16b b.n 800152a DoKeyDN(); 8001252: f000 fb0d bl 8001870 break; 8001256: e168 b.n 800152a if(menu == CALIBR_00) 8001258: 4b1c ldr r3, [pc, #112] ; (80012cc ) 800125a: 781b ldrb r3, [r3, #0] 800125c: b2db uxtb r3, r3 800125e: 2b01 cmp r3, #1 8001260: d10d bne.n 800127e if(menupos < Ch5) menupos++; 8001262: 4b1d ldr r3, [pc, #116] ; (80012d8 ) 8001264: 781b ldrb r3, [r3, #0] 8001266: b2db uxtb r3, r3 8001268: 2b03 cmp r3, #3 800126a: f200 815e bhi.w 800152a 800126e: 4b1a ldr r3, [pc, #104] ; (80012d8 ) 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 ) 800127a: 701a strb r2, [r3, #0] break; 800127c: e155 b.n 800152a if(menu >= CALIBR_0 && menu <= CALIBR_22) 800127e: 4b13 ldr r3, [pc, #76] ; (80012cc ) 8001280: 781b ldrb r3, [r3, #0] 8001282: b2db uxtb r3, r3 8001284: 2b01 cmp r3, #1 8001286: f240 8150 bls.w 800152a 800128a: 4b10 ldr r3, [pc, #64] ; (80012cc ) 800128c: 781b ldrb r3, [r3, #0] 800128e: b2db uxtb r3, r3 8001290: 2b18 cmp r3, #24 8001292: f200 814a bhi.w 800152a if(menupos == Set100) 8001296: 4b10 ldr r3, [pc, #64] ; (80012d8 ) 8001298: 781b ldrb r3, [r3, #0] 800129a: b2db uxtb r3, r3 800129c: 2b00 cmp r3, #0 800129e: d103 bne.n 80012a8 menupos = Set_100; 80012a0: 4b0d ldr r3, [pc, #52] ; (80012d8 ) 80012a2: 2201 movs r2, #1 80012a4: 701a strb r2, [r3, #0] break; 80012a6: e140 b.n 800152a if(menupos == Set_100) 80012a8: 4b0b ldr r3, [pc, #44] ; (80012d8 ) 80012aa: 781b ldrb r3, [r3, #0] 80012ac: b2db uxtb r3, r3 80012ae: 2b01 cmp r3, #1 80012b0: d103 bne.n 80012ba menupos = Set10; 80012b2: 4b09 ldr r3, [pc, #36] ; (80012d8 ) 80012b4: 2202 movs r2, #2 80012b6: 701a strb r2, [r3, #0] break; 80012b8: e137 b.n 800152a if(menupos == Set10) 80012ba: 4b07 ldr r3, [pc, #28] ; (80012d8 ) 80012bc: 781b ldrb r3, [r3, #0] 80012be: b2db uxtb r3, r3 80012c0: 2b02 cmp r3, #2 80012c2: d10f bne.n 80012e4 menupos = Set_10; 80012c4: 4b04 ldr r3, [pc, #16] ; (80012d8 ) 80012c6: 2203 movs r2, #3 80012c8: 701a strb r2, [r3, #0] break; 80012ca: e12e b.n 800152a 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 ) 80012e6: 781b ldrb r3, [r3, #0] 80012e8: b2db uxtb r3, r3 80012ea: 2b03 cmp r3, #3 80012ec: d103 bne.n 80012f6 menupos = Set1; 80012ee: 4b92 ldr r3, [pc, #584] ; (8001538 ) 80012f0: 2204 movs r2, #4 80012f2: 701a strb r2, [r3, #0] break; 80012f4: e119 b.n 800152a if(menupos == Set1) 80012f6: 4b90 ldr r3, [pc, #576] ; (8001538 ) 80012f8: 781b ldrb r3, [r3, #0] 80012fa: b2db uxtb r3, r3 80012fc: 2b04 cmp r3, #4 80012fe: d103 bne.n 8001308 menupos = Set_1; 8001300: 4b8d ldr r3, [pc, #564] ; (8001538 ) 8001302: 2205 movs r2, #5 8001304: 701a strb r2, [r3, #0] break; 8001306: e110 b.n 800152a if(menupos == Set_1) 8001308: 4b8b ldr r3, [pc, #556] ; (8001538 ) 800130a: 781b ldrb r3, [r3, #0] 800130c: b2db uxtb r3, r3 800130e: 2b05 cmp r3, #5 8001310: f040 810b bne.w 800152a menupos = Next; 8001314: 4b88 ldr r3, [pc, #544] ; (8001538 ) 8001316: 2206 movs r2, #6 8001318: 701a strb r2, [r3, #0] break; 800131a: e106 b.n 800152a case KEY_OK: // TODO KEY OK if(menu == MAIN) 800131c: 4b87 ldr r3, [pc, #540] ; (800153c ) 800131e: 781b ldrb r3, [r3, #0] 8001320: b2db uxtb r3, r3 8001322: 2b00 cmp r3, #0 8001324: d13e bne.n 80013a4 { if(menupos < Kn) 8001326: 4b84 ldr r3, [pc, #528] ; (8001538 ) 8001328: 781b ldrb r3, [r3, #0] 800132a: b2db uxtb r3, r3 800132c: 2b03 cmp r3, #3 800132e: d80d bhi.n 800134c { focused ^= 1; 8001330: 4b83 ldr r3, [pc, #524] ; (8001540 ) 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 ) 8001348: 701a strb r2, [r3, #0] { WriteCorr(ACTIVE_CHANNEL, (menu - 2), 100); } } } break; 800134a: e0f0 b.n 800152e if(menupos == Kn) 800134c: 4b7a ldr r3, [pc, #488] ; (8001538 ) 800134e: 781b ldrb r3, [r3, #0] 8001350: b2db uxtb r3, r3 8001352: 2b04 cmp r3, #4 8001354: d106 bne.n 8001364 focused = true; 8001356: 4b7a ldr r3, [pc, #488] ; (8001540 ) 8001358: 2201 movs r2, #1 800135a: 701a strb r2, [r3, #0] menupos = Kiks; 800135c: 4b76 ldr r3, [pc, #472] ; (8001538 ) 800135e: 2205 movs r2, #5 8001360: 701a strb r2, [r3, #0] break; 8001362: e0e4 b.n 800152e if(menupos >= Kiks && menupos <= Kike) 8001364: 4b74 ldr r3, [pc, #464] ; (8001538 ) 8001366: 781b ldrb r3, [r3, #0] 8001368: b2db uxtb r3, r3 800136a: 2b04 cmp r3, #4 800136c: f240 80df bls.w 800152e 8001370: 4b71 ldr r3, [pc, #452] ; (8001538 ) 8001372: 781b ldrb r3, [r3, #0] 8001374: b2db uxtb r3, r3 8001376: 2b07 cmp r3, #7 8001378: f200 80d9 bhi.w 800152e if(menupos < Kike) 800137c: 4b6e ldr r3, [pc, #440] ; (8001538 ) 800137e: 781b ldrb r3, [r3, #0] 8001380: b2db uxtb r3, r3 8001382: 2b06 cmp r3, #6 8001384: d807 bhi.n 8001396 menupos++; 8001386: 4b6c ldr r3, [pc, #432] ; (8001538 ) 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 ) 8001392: 701a strb r2, [r3, #0] break; 8001394: e0cb b.n 800152e focused = false; 8001396: 4b6a ldr r3, [pc, #424] ; (8001540 ) 8001398: 2200 movs r2, #0 800139a: 701a strb r2, [r3, #0] menupos = Kn; 800139c: 4b66 ldr r3, [pc, #408] ; (8001538 ) 800139e: 2204 movs r2, #4 80013a0: 701a strb r2, [r3, #0] break; 80013a2: e0c4 b.n 800152e if(menu == CALIBR_00) 80013a4: 4b65 ldr r3, [pc, #404] ; (800153c ) 80013a6: 781b ldrb r3, [r3, #0] 80013a8: b2db uxtb r3, r3 80013aa: 2b01 cmp r3, #1 80013ac: d11d bne.n 80013ea if(menupos <= Ch4) 80013ae: 4b62 ldr r3, [pc, #392] ; (8001538 ) 80013b0: 781b ldrb r3, [r3, #0] 80013b2: b2db uxtb r3, r3 80013b4: 2b03 cmp r3, #3 80013b6: d813 bhi.n 80013e0 ACTIVE_CHANNEL = menupos; 80013b8: 4b5f ldr r3, [pc, #380] ; (8001538 ) 80013ba: 781b ldrb r3, [r3, #0] 80013bc: b2db uxtb r3, r3 80013be: 461a mov r2, r3 80013c0: 4b60 ldr r3, [pc, #384] ; (8001544 ) 80013c2: 601a str r2, [r3, #0] menu = CALIBR_0; 80013c4: 4b5d ldr r3, [pc, #372] ; (800153c ) 80013c6: 2202 movs r2, #2 80013c8: 701a strb r2, [r3, #0] menupos = Next; 80013ca: 4b5b ldr r3, [pc, #364] ; (8001538 ) 80013cc: 2206 movs r2, #6 80013ce: 701a strb r2, [r3, #0] Calibr(ACTIVE_CHANNEL, 1); 80013d0: 4b5c ldr r3, [pc, #368] ; (8001544 ) 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 break; 80013de: e0a6 b.n 800152e CalibrOFF(); 80013e0: f007 f868 bl 80084b4 Off(); 80013e4: f7ff f8b0 bl 8000548 break; 80013e8: e0a1 b.n 800152e if(menu >= CALIBR_0 && menu <= CALIBR_22) 80013ea: 4b54 ldr r3, [pc, #336] ; (800153c ) 80013ec: 781b ldrb r3, [r3, #0] 80013ee: b2db uxtb r3, r3 80013f0: 2b01 cmp r3, #1 80013f2: f240 809c bls.w 800152e 80013f6: 4b51 ldr r3, [pc, #324] ; (800153c ) 80013f8: 781b ldrb r3, [r3, #0] 80013fa: b2db uxtb r3, r3 80013fc: 2b18 cmp r3, #24 80013fe: f200 8096 bhi.w 800152e if(menupos == Next) 8001402: 4b4d ldr r3, [pc, #308] ; (8001538 ) 8001404: 781b ldrb r3, [r3, #0] 8001406: b2db uxtb r3, r3 8001408: 2b06 cmp r3, #6 800140a: d11c bne.n 8001446 if(menu == CALIBR_22) 800140c: 4b4b ldr r3, [pc, #300] ; (800153c ) 800140e: 781b ldrb r3, [r3, #0] 8001410: b2db uxtb r3, r3 8001412: 2b18 cmp r3, #24 8001414: d108 bne.n 8001428 menu = CALIBR_00; 8001416: 4b49 ldr r3, [pc, #292] ; (800153c ) 8001418: 2201 movs r2, #1 800141a: 701a strb r2, [r3, #0] menupos = ACTIVE_CHANNEL; 800141c: 4b49 ldr r3, [pc, #292] ; (8001544 ) 800141e: 681b ldr r3, [r3, #0] 8001420: b2da uxtb r2, r3 8001422: 4b45 ldr r3, [pc, #276] ; (8001538 ) 8001424: 701a strb r2, [r3, #0] break; 8001426: e082 b.n 800152e menu++; 8001428: 4b44 ldr r3, [pc, #272] ; (800153c ) 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 ) 8001434: 701a strb r2, [r3, #0] Calibr(ACTIVE_CHANNEL, 1); 8001436: 4b43 ldr r3, [pc, #268] ; (8001544 ) 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 break; 8001444: e073 b.n 800152e if(menupos == Set_1) 8001446: 4b3c ldr r3, [pc, #240] ; (8001538 ) 8001448: 781b ldrb r3, [r3, #0] 800144a: b2db uxtb r3, r3 800144c: 2b05 cmp r3, #5 800144e: d10c bne.n 800146a WriteCorr(ACTIVE_CHANNEL, (menu - 2), (0x01 | 0x80)); 8001450: 4b3c ldr r3, [pc, #240] ; (8001544 ) 8001452: 681b ldr r3, [r3, #0] 8001454: b2d8 uxtb r0, r3 8001456: 4b39 ldr r3, [pc, #228] ; (800153c ) 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 break; 8001468: e061 b.n 800152e if(menupos == Set1) 800146a: 4b33 ldr r3, [pc, #204] ; (8001538 ) 800146c: 781b ldrb r3, [r3, #0] 800146e: b2db uxtb r3, r3 8001470: 2b04 cmp r3, #4 8001472: d10c bne.n 800148e WriteCorr(ACTIVE_CHANNEL, (menu - 2), 0x01); 8001474: 4b33 ldr r3, [pc, #204] ; (8001544 ) 8001476: 681b ldr r3, [r3, #0] 8001478: b2d8 uxtb r0, r3 800147a: 4b30 ldr r3, [pc, #192] ; (800153c ) 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 break; 800148c: e04f b.n 800152e if(menupos == Set_10) 800148e: 4b2a ldr r3, [pc, #168] ; (8001538 ) 8001490: 781b ldrb r3, [r3, #0] 8001492: b2db uxtb r3, r3 8001494: 2b03 cmp r3, #3 8001496: d10c bne.n 80014b2 WriteCorr(ACTIVE_CHANNEL, (menu - 2), (10 | 0x80)); 8001498: 4b2a ldr r3, [pc, #168] ; (8001544 ) 800149a: 681b ldr r3, [r3, #0] 800149c: b2d8 uxtb r0, r3 800149e: 4b27 ldr r3, [pc, #156] ; (800153c ) 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 break; 80014b0: e03d b.n 800152e if(menupos == Set10) 80014b2: 4b21 ldr r3, [pc, #132] ; (8001538 ) 80014b4: 781b ldrb r3, [r3, #0] 80014b6: b2db uxtb r3, r3 80014b8: 2b02 cmp r3, #2 80014ba: d10c bne.n 80014d6 WriteCorr(ACTIVE_CHANNEL, (menu - 2), 10); 80014bc: 4b21 ldr r3, [pc, #132] ; (8001544 ) 80014be: 681b ldr r3, [r3, #0] 80014c0: b2d8 uxtb r0, r3 80014c2: 4b1e ldr r3, [pc, #120] ; (800153c ) 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 break; 80014d4: e02b b.n 800152e if(menupos == Set_100) 80014d6: 4b18 ldr r3, [pc, #96] ; (8001538 ) 80014d8: 781b ldrb r3, [r3, #0] 80014da: b2db uxtb r3, r3 80014dc: 2b01 cmp r3, #1 80014de: d10c bne.n 80014fa WriteCorr(ACTIVE_CHANNEL, (menu - 2), (100 | 0x80)); 80014e0: 4b18 ldr r3, [pc, #96] ; (8001544 ) 80014e2: 681b ldr r3, [r3, #0] 80014e4: b2d8 uxtb r0, r3 80014e6: 4b15 ldr r3, [pc, #84] ; (800153c ) 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 break; 80014f8: e019 b.n 800152e if(menupos == Set100) 80014fa: 4b0f ldr r3, [pc, #60] ; (8001538 ) 80014fc: 781b ldrb r3, [r3, #0] 80014fe: b2db uxtb r3, r3 8001500: 2b00 cmp r3, #0 8001502: d114 bne.n 800152e WriteCorr(ACTIVE_CHANNEL, (menu - 2), 100); 8001504: 4b0f ldr r3, [pc, #60] ; (8001544 ) 8001506: 681b ldr r3, [r3, #0] 8001508: b2d8 uxtb r0, r3 800150a: 4b0c ldr r3, [pc, #48] ; (800153c ) 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 break; 800151c: e007 b.n 800152e case KEY_PW: Off(); 800151e: f7ff f813 bl 8000548 break; 8001522: bf00 nop 8001524: e004 b.n 8001530 break; 8001526: bf00 nop 8001528: e002 b.n 8001530 break; 800152a: bf00 nop 800152c: e000 b.n 8001530 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 : void DoKeyUP(void) { 8001548: b580 push {r7, lr} 800154a: af00 add r7, sp, #0 if(menupos == Hp) 800154c: 4ba4 ldr r3, [pc, #656] ; (80017e0 ) 800154e: 781b ldrb r3, [r3, #0] 8001550: b2db uxtb r3, r3 8001552: 2b01 cmp r3, #1 8001554: d13e bne.n 80015d4 { if(focused) 8001556: 4ba3 ldr r3, [pc, #652] ; (80017e4 ) 8001558: 781b ldrb r3, [r3, #0] 800155a: b2db uxtb r3, r3 800155c: 2b00 cmp r3, #0 800155e: d035 beq.n 80015cc { if(pardata.amplif[ACTIVE_CHANNEL].IFV < Hp10) 8001560: 4ba1 ldr r3, [pc, #644] ; (80017e8 ) 8001562: 681b ldr r3, [r3, #0] 8001564: 4aa1 ldr r2, [pc, #644] ; (80017ec ) 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 { pardata.amplif[ACTIVE_CHANNEL].IFV++; 8001576: 4b9c ldr r3, [pc, #624] ; (80017e8 ) 8001578: 681b ldr r3, [r3, #0] 800157a: 499c ldr r1, [pc, #624] ; (80017ec ) 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 ) 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 ) 8001598: 681b ldr r3, [r3, #0] 800159a: b2db uxtb r3, r3 800159c: 4618 mov r0, r3 800159e: f006 fb3b bl 8007c18 80015a2: 4603 mov r3, r0 80015a4: 2b00 cmp r3, #0 80015a6: f000 815b beq.w 8001860 { pardata.amplif[ACTIVE_CHANNEL].IFV--; 80015aa: 4b8f ldr r3, [pc, #572] ; (80017e8 ) 80015ac: 681b ldr r3, [r3, #0] 80015ae: 498f ldr r1, [pc, #572] ; (80017ec ) 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 ) 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 menupos = Input; 80015cc: 4b84 ldr r3, [pc, #528] ; (80017e0 ) 80015ce: 2200 movs r2, #0 80015d0: 701a strb r2, [r3, #0] } 80015d2: e145 b.n 8001860 if(menupos == Lp) 80015d4: 4b82 ldr r3, [pc, #520] ; (80017e0 ) 80015d6: 781b ldrb r3, [r3, #0] 80015d8: b2db uxtb r3, r3 80015da: 2b02 cmp r3, #2 80015dc: d13e bne.n 800165c if(focused) 80015de: 4b81 ldr r3, [pc, #516] ; (80017e4 ) 80015e0: 781b ldrb r3, [r3, #0] 80015e2: b2db uxtb r3, r3 80015e4: 2b00 cmp r3, #0 80015e6: d035 beq.n 8001654 if(pardata.amplif[ACTIVE_CHANNEL].IFN < Lp100000) 80015e8: 4b7f ldr r3, [pc, #508] ; (80017e8 ) 80015ea: 681b ldr r3, [r3, #0] 80015ec: 4a7f ldr r2, [pc, #508] ; (80017ec ) 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 pardata.amplif[ACTIVE_CHANNEL].IFN++; 80015fe: 4b7a ldr r3, [pc, #488] ; (80017e8 ) 8001600: 681b ldr r3, [r3, #0] 8001602: 497a ldr r1, [pc, #488] ; (80017ec ) 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 ) 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 ) 8001620: 681b ldr r3, [r3, #0] 8001622: b2db uxtb r3, r3 8001624: 4618 mov r0, r3 8001626: f006 faf7 bl 8007c18 800162a: 4603 mov r3, r0 800162c: 2b00 cmp r3, #0 800162e: f000 8117 beq.w 8001860 pardata.amplif[ACTIVE_CHANNEL].IFN--; 8001632: 4b6d ldr r3, [pc, #436] ; (80017e8 ) 8001634: 681b ldr r3, [r3, #0] 8001636: 496d ldr r1, [pc, #436] ; (80017ec ) 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 ) 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 menupos = Hp; 8001654: 4b62 ldr r3, [pc, #392] ; (80017e0 ) 8001656: 2201 movs r2, #1 8001658: 701a strb r2, [r3, #0] } 800165a: e101 b.n 8001860 if(menupos == Km) 800165c: 4b60 ldr r3, [pc, #384] ; (80017e0 ) 800165e: 781b ldrb r3, [r3, #0] 8001660: b2db uxtb r3, r3 8001662: 2b03 cmp r3, #3 8001664: d13e bne.n 80016e4 if(focused) 8001666: 4b5f ldr r3, [pc, #380] ; (80017e4 ) 8001668: 781b ldrb r3, [r3, #0] 800166a: b2db uxtb r3, r3 800166c: 2b00 cmp r3, #0 800166e: d035 beq.n 80016dc if(pardata.amplif[ACTIVE_CHANNEL].IKU < Ku1000) 8001670: 4b5d ldr r3, [pc, #372] ; (80017e8 ) 8001672: 681b ldr r3, [r3, #0] 8001674: 4a5d ldr r2, [pc, #372] ; (80017ec ) 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 pardata.amplif[ACTIVE_CHANNEL].IKU++; 8001686: 4b58 ldr r3, [pc, #352] ; (80017e8 ) 8001688: 681b ldr r3, [r3, #0] 800168a: 4958 ldr r1, [pc, #352] ; (80017ec ) 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 ) 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 ) 80016a8: 681b ldr r3, [r3, #0] 80016aa: b2db uxtb r3, r3 80016ac: 4618 mov r0, r3 80016ae: f006 fab3 bl 8007c18 80016b2: 4603 mov r3, r0 80016b4: 2b00 cmp r3, #0 80016b6: f000 80d3 beq.w 8001860 pardata.amplif[ACTIVE_CHANNEL].IKU--; 80016ba: 4b4b ldr r3, [pc, #300] ; (80017e8 ) 80016bc: 681b ldr r3, [r3, #0] 80016be: 494b ldr r1, [pc, #300] ; (80017ec ) 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 ) 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 menupos = Lp; 80016dc: 4b40 ldr r3, [pc, #256] ; (80017e0 ) 80016de: 2202 movs r2, #2 80016e0: 701a strb r2, [r3, #0] } 80016e2: e0bd b.n 8001860 if(menupos == Kn) 80016e4: 4b3e ldr r3, [pc, #248] ; (80017e0 ) 80016e6: 781b ldrb r3, [r3, #0] 80016e8: b2db uxtb r3, r3 80016ea: 2b04 cmp r3, #4 80016ec: d103 bne.n 80016f6 menupos = Km; 80016ee: 4b3c ldr r3, [pc, #240] ; (80017e0 ) 80016f0: 2203 movs r2, #3 80016f2: 701a strb r2, [r3, #0] } 80016f4: e0b4 b.n 8001860 if(menupos == Kiks) 80016f6: 4b3a ldr r3, [pc, #232] ; (80017e0 ) 80016f8: 781b ldrb r3, [r3, #0] 80016fa: b2db uxtb r3, r3 80016fc: 2b05 cmp r3, #5 80016fe: d135 bne.n 800176c if(pardata.amplif[ACTIVE_CHANNEL].IKS < 9) 8001700: 4b39 ldr r3, [pc, #228] ; (80017e8 ) 8001702: 681b ldr r3, [r3, #0] 8001704: 4a39 ldr r2, [pc, #228] ; (80017ec ) 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 pardata.amplif[ACTIVE_CHANNEL].IKS++; 8001716: 4b34 ldr r3, [pc, #208] ; (80017e8 ) 8001718: 681b ldr r3, [r3, #0] 800171a: 4934 ldr r1, [pc, #208] ; (80017ec ) 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 ) 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 ) 8001738: 681b ldr r3, [r3, #0] 800173a: b2db uxtb r3, r3 800173c: 4618 mov r0, r3 800173e: f006 fa6b bl 8007c18 8001742: 4603 mov r3, r0 8001744: 2b00 cmp r3, #0 8001746: f000 808b beq.w 8001860 pardata.amplif[ACTIVE_CHANNEL].IKS--; 800174a: 4b27 ldr r3, [pc, #156] ; (80017e8 ) 800174c: 681b ldr r3, [r3, #0] 800174e: 4927 ldr r1, [pc, #156] ; (80017ec ) 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 ) 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 if(menupos == Kikd) 800176c: 4b1c ldr r3, [pc, #112] ; (80017e0 ) 800176e: 781b ldrb r3, [r3, #0] 8001770: b2db uxtb r3, r3 8001772: 2b06 cmp r3, #6 8001774: d13c bne.n 80017f0 if(pardata.amplif[ACTIVE_CHANNEL].IKD < 9) 8001776: 4b1c ldr r3, [pc, #112] ; (80017e8 ) 8001778: 681b ldr r3, [r3, #0] 800177a: 4a1c ldr r2, [pc, #112] ; (80017ec ) 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 pardata.amplif[ACTIVE_CHANNEL].IKD++; 800178a: 4b17 ldr r3, [pc, #92] ; (80017e8 ) 800178c: 681b ldr r3, [r3, #0] 800178e: 4917 ldr r1, [pc, #92] ; (80017ec ) 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 ) 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 ) 80017ac: 681b ldr r3, [r3, #0] 80017ae: b2db uxtb r3, r3 80017b0: 4618 mov r0, r3 80017b2: f006 fa31 bl 8007c18 80017b6: 4603 mov r3, r0 80017b8: 2b00 cmp r3, #0 80017ba: d051 beq.n 8001860 pardata.amplif[ACTIVE_CHANNEL].IKD--; 80017bc: 4b0a ldr r3, [pc, #40] ; (80017e8 ) 80017be: 681b ldr r3, [r3, #0] 80017c0: 490a ldr r1, [pc, #40] ; (80017ec ) 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 ) 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 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 ) 80017f2: 781b ldrb r3, [r3, #0] 80017f4: b2db uxtb r3, r3 80017f6: 2b07 cmp r3, #7 80017f8: d132 bne.n 8001860 if(pardata.amplif[ACTIVE_CHANNEL].IKE < 9) 80017fa: 4b1b ldr r3, [pc, #108] ; (8001868 ) 80017fc: 681b ldr r3, [r3, #0] 80017fe: 4a1b ldr r2, [pc, #108] ; (800186c ) 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 pardata.amplif[ACTIVE_CHANNEL].IKE++; 800180e: 4b16 ldr r3, [pc, #88] ; (8001868 ) 8001810: 681b ldr r3, [r3, #0] 8001812: 4916 ldr r1, [pc, #88] ; (800186c ) 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 ) 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 ) 8001830: 681b ldr r3, [r3, #0] 8001832: b2db uxtb r3, r3 8001834: 4618 mov r0, r3 8001836: f006 f9ef bl 8007c18 800183a: 4603 mov r3, r0 800183c: 2b00 cmp r3, #0 800183e: d00f beq.n 8001860 pardata.amplif[ACTIVE_CHANNEL].IKE--; 8001840: 4b09 ldr r3, [pc, #36] ; (8001868 ) 8001842: 681b ldr r3, [r3, #0] 8001844: 4909 ldr r1, [pc, #36] ; (800186c ) 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 ) 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 : void DoKeyDN(void) { 8001870: b580 push {r7, lr} 8001872: af00 add r7, sp, #0 if(menupos == Input) 8001874: 4ba5 ldr r3, [pc, #660] ; (8001b0c ) 8001876: 781b ldrb r3, [r3, #0] 8001878: b2db uxtb r3, r3 800187a: 2b00 cmp r3, #0 800187c: d139 bne.n 80018f2 { if(focused) 800187e: 4ba4 ldr r3, [pc, #656] ; (8001b10 ) 8001880: 781b ldrb r3, [r3, #0] 8001882: b2db uxtb r3, r3 8001884: 2b00 cmp r3, #0 8001886: d030 beq.n 80018ea { if(pardata.amplif[ACTIVE_CHANNEL].IIN > CHARGE) 8001888: 4ba2 ldr r3, [pc, #648] ; (8001b14 ) 800188a: 681b ldr r3, [r3, #0] 800188c: 4aa2 ldr r2, [pc, #648] ; (8001b18 ) 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 { pardata.amplif[ACTIVE_CHANNEL].IIN--; 800189c: 4b9d ldr r3, [pc, #628] ; (8001b14 ) 800189e: 681b ldr r3, [r3, #0] 80018a0: 499d ldr r1, [pc, #628] ; (8001b18 ) 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 ) 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 ) 80018ba: 681b ldr r3, [r3, #0] 80018bc: b2db uxtb r3, r3 80018be: 4618 mov r0, r3 80018c0: f006 f9aa bl 8007c18 80018c4: 4603 mov r3, r0 80018c6: 2b00 cmp r3, #0 80018c8: f000 81d4 beq.w 8001c74 { pardata.amplif[ACTIVE_CHANNEL].IIN++; 80018cc: 4b91 ldr r3, [pc, #580] ; (8001b14 ) 80018ce: 681b ldr r3, [r3, #0] 80018d0: 4991 ldr r1, [pc, #580] ; (8001b18 ) 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 ) 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 menupos = Hp; 80018ea: 4b88 ldr r3, [pc, #544] ; (8001b0c ) 80018ec: 2201 movs r2, #1 80018ee: 701a strb r2, [r3, #0] } 80018f0: e1c0 b.n 8001c74 if(menupos == Hp) 80018f2: 4b86 ldr r3, [pc, #536] ; (8001b0c ) 80018f4: 781b ldrb r3, [r3, #0] 80018f6: b2db uxtb r3, r3 80018f8: 2b01 cmp r3, #1 80018fa: d13e bne.n 800197a if(focused) 80018fc: 4b84 ldr r3, [pc, #528] ; (8001b10 ) 80018fe: 781b ldrb r3, [r3, #0] 8001900: b2db uxtb r3, r3 8001902: 2b00 cmp r3, #0 8001904: d035 beq.n 8001972 if(pardata.amplif[ACTIVE_CHANNEL].IFV > Hp0_2) 8001906: 4b83 ldr r3, [pc, #524] ; (8001b14 ) 8001908: 681b ldr r3, [r3, #0] 800190a: 4a83 ldr r2, [pc, #524] ; (8001b18 ) 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 pardata.amplif[ACTIVE_CHANNEL].IFV--; 800191c: 4b7d ldr r3, [pc, #500] ; (8001b14 ) 800191e: 681b ldr r3, [r3, #0] 8001920: 497d ldr r1, [pc, #500] ; (8001b18 ) 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 ) 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 ) 800193e: 681b ldr r3, [r3, #0] 8001940: b2db uxtb r3, r3 8001942: 4618 mov r0, r3 8001944: f006 f968 bl 8007c18 8001948: 4603 mov r3, r0 800194a: 2b00 cmp r3, #0 800194c: f000 8192 beq.w 8001c74 pardata.amplif[ACTIVE_CHANNEL].IFV++; 8001950: 4b70 ldr r3, [pc, #448] ; (8001b14 ) 8001952: 681b ldr r3, [r3, #0] 8001954: 4970 ldr r1, [pc, #448] ; (8001b18 ) 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 ) 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 menupos = Lp; 8001972: 4b66 ldr r3, [pc, #408] ; (8001b0c ) 8001974: 2202 movs r2, #2 8001976: 701a strb r2, [r3, #0] } 8001978: e17c b.n 8001c74 if(menupos == Lp) 800197a: 4b64 ldr r3, [pc, #400] ; (8001b0c ) 800197c: 781b ldrb r3, [r3, #0] 800197e: b2db uxtb r3, r3 8001980: 2b02 cmp r3, #2 8001982: d13e bne.n 8001a02 if(focused) 8001984: 4b62 ldr r3, [pc, #392] ; (8001b10 ) 8001986: 781b ldrb r3, [r3, #0] 8001988: b2db uxtb r3, r3 800198a: 2b00 cmp r3, #0 800198c: d035 beq.n 80019fa if(pardata.amplif[ACTIVE_CHANNEL].IFN > Lp200) 800198e: 4b61 ldr r3, [pc, #388] ; (8001b14 ) 8001990: 681b ldr r3, [r3, #0] 8001992: 4a61 ldr r2, [pc, #388] ; (8001b18 ) 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 pardata.amplif[ACTIVE_CHANNEL].IFN--; 80019a4: 4b5b ldr r3, [pc, #364] ; (8001b14 ) 80019a6: 681b ldr r3, [r3, #0] 80019a8: 495b ldr r1, [pc, #364] ; (8001b18 ) 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 ) 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 ) 80019c6: 681b ldr r3, [r3, #0] 80019c8: b2db uxtb r3, r3 80019ca: 4618 mov r0, r3 80019cc: f006 f924 bl 8007c18 80019d0: 4603 mov r3, r0 80019d2: 2b00 cmp r3, #0 80019d4: f000 814e beq.w 8001c74 pardata.amplif[ACTIVE_CHANNEL].IFN++; 80019d8: 4b4e ldr r3, [pc, #312] ; (8001b14 ) 80019da: 681b ldr r3, [r3, #0] 80019dc: 494e ldr r1, [pc, #312] ; (8001b18 ) 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 ) 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 menupos = Km; 80019fa: 4b44 ldr r3, [pc, #272] ; (8001b0c ) 80019fc: 2203 movs r2, #3 80019fe: 701a strb r2, [r3, #0] } 8001a00: e138 b.n 8001c74 if(menupos == Km) 8001a02: 4b42 ldr r3, [pc, #264] ; (8001b0c ) 8001a04: 781b ldrb r3, [r3, #0] 8001a06: b2db uxtb r3, r3 8001a08: 2b03 cmp r3, #3 8001a0a: f040 8087 bne.w 8001b1c if(focused) 8001a0e: 4b40 ldr r3, [pc, #256] ; (8001b10 ) 8001a10: 781b ldrb r3, [r3, #0] 8001a12: b2db uxtb r3, r3 8001a14: 2b00 cmp r3, #0 8001a16: d074 beq.n 8001b02 if(pardata.amplif[ACTIVE_CHANNEL].IIN == CHARGE) 8001a18: 4b3e ldr r3, [pc, #248] ; (8001b14 ) 8001a1a: 681b ldr r3, [r3, #0] 8001a1c: 4a3e ldr r2, [pc, #248] ; (8001b18 ) 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 if(pardata.amplif[ACTIVE_CHANNEL].IKU > Ku0_1) 8001a2a: 4b3a ldr r3, [pc, #232] ; (8001b14 ) 8001a2c: 681b ldr r3, [r3, #0] 8001a2e: 4a3a ldr r2, [pc, #232] ; (8001b18 ) 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 pardata.amplif[ACTIVE_CHANNEL].IKU--; 8001a40: 4b34 ldr r3, [pc, #208] ; (8001b14 ) 8001a42: 681b ldr r3, [r3, #0] 8001a44: 4934 ldr r1, [pc, #208] ; (8001b18 ) 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 ) 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 ) 8001a62: 681b ldr r3, [r3, #0] 8001a64: b2db uxtb r3, r3 8001a66: 4618 mov r0, r3 8001a68: f006 f8d6 bl 8007c18 8001a6c: 4603 mov r3, r0 8001a6e: 2b00 cmp r3, #0 8001a70: f000 8100 beq.w 8001c74 pardata.amplif[ACTIVE_CHANNEL].IKU++; 8001a74: 4b27 ldr r3, [pc, #156] ; (8001b14 ) 8001a76: 681b ldr r3, [r3, #0] 8001a78: 4927 ldr r1, [pc, #156] ; (8001b18 ) 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 ) 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 if(pardata.amplif[ACTIVE_CHANNEL].IKU > Ku1) 8001a96: 4b1f ldr r3, [pc, #124] ; (8001b14 ) 8001a98: 681b ldr r3, [r3, #0] 8001a9a: 4a1f ldr r2, [pc, #124] ; (8001b18 ) 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 pardata.amplif[ACTIVE_CHANNEL].IKU--; 8001aac: 4b19 ldr r3, [pc, #100] ; (8001b14 ) 8001aae: 681b ldr r3, [r3, #0] 8001ab0: 4919 ldr r1, [pc, #100] ; (8001b18 ) 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 ) 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 ) 8001ace: 681b ldr r3, [r3, #0] 8001ad0: b2db uxtb r3, r3 8001ad2: 4618 mov r0, r3 8001ad4: f006 f8a0 bl 8007c18 8001ad8: 4603 mov r3, r0 8001ada: 2b00 cmp r3, #0 8001adc: f000 80ca beq.w 8001c74 pardata.amplif[ACTIVE_CHANNEL].IKU++; 8001ae0: 4b0c ldr r3, [pc, #48] ; (8001b14 ) 8001ae2: 681b ldr r3, [r3, #0] 8001ae4: 490c ldr r1, [pc, #48] ; (8001b18 ) 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 ) 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 menupos = Kn; 8001b02: 4b02 ldr r3, [pc, #8] ; (8001b0c ) 8001b04: 2204 movs r2, #4 8001b06: 701a strb r2, [r3, #0] } 8001b08: e0b4 b.n 8001c74 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 ) 8001b1e: 781b ldrb r3, [r3, #0] 8001b20: b2db uxtb r3, r3 8001b22: 2b05 cmp r3, #5 8001b24: d135 bne.n 8001b92 if(pardata.amplif[ACTIVE_CHANNEL].IKS > 1) 8001b26: 4b55 ldr r3, [pc, #340] ; (8001c7c ) 8001b28: 681b ldr r3, [r3, #0] 8001b2a: 4a55 ldr r2, [pc, #340] ; (8001c80 ) 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 pardata.amplif[ACTIVE_CHANNEL].IKS--; 8001b3c: 4b4f ldr r3, [pc, #316] ; (8001c7c ) 8001b3e: 681b ldr r3, [r3, #0] 8001b40: 494f ldr r1, [pc, #316] ; (8001c80 ) 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 ) 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 ) 8001b5e: 681b ldr r3, [r3, #0] 8001b60: b2db uxtb r3, r3 8001b62: 4618 mov r0, r3 8001b64: f006 f858 bl 8007c18 8001b68: 4603 mov r3, r0 8001b6a: 2b00 cmp r3, #0 8001b6c: f000 8082 beq.w 8001c74 pardata.amplif[ACTIVE_CHANNEL].IKS++; 8001b70: 4b42 ldr r3, [pc, #264] ; (8001c7c ) 8001b72: 681b ldr r3, [r3, #0] 8001b74: 4942 ldr r1, [pc, #264] ; (8001c80 ) 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 ) 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 if(menupos == Kikd) 8001b92: 4b39 ldr r3, [pc, #228] ; (8001c78 ) 8001b94: 781b ldrb r3, [r3, #0] 8001b96: b2db uxtb r3, r3 8001b98: 2b06 cmp r3, #6 8001b9a: d133 bne.n 8001c04 if(pardata.amplif[ACTIVE_CHANNEL].IKD > 0) 8001b9c: 4b37 ldr r3, [pc, #220] ; (8001c7c ) 8001b9e: 681b ldr r3, [r3, #0] 8001ba0: 4a37 ldr r2, [pc, #220] ; (8001c80 ) 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 pardata.amplif[ACTIVE_CHANNEL].IKD--; 8001bb0: 4b32 ldr r3, [pc, #200] ; (8001c7c ) 8001bb2: 681b ldr r3, [r3, #0] 8001bb4: 4932 ldr r1, [pc, #200] ; (8001c80 ) 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 ) 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 ) 8001bd2: 681b ldr r3, [r3, #0] 8001bd4: b2db uxtb r3, r3 8001bd6: 4618 mov r0, r3 8001bd8: f006 f81e bl 8007c18 8001bdc: 4603 mov r3, r0 8001bde: 2b00 cmp r3, #0 8001be0: d048 beq.n 8001c74 pardata.amplif[ACTIVE_CHANNEL].IKD++; 8001be2: 4b26 ldr r3, [pc, #152] ; (8001c7c ) 8001be4: 681b ldr r3, [r3, #0] 8001be6: 4926 ldr r1, [pc, #152] ; (8001c80 ) 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 ) 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 if(menupos == Kike) 8001c04: 4b1c ldr r3, [pc, #112] ; (8001c78 ) 8001c06: 781b ldrb r3, [r3, #0] 8001c08: b2db uxtb r3, r3 8001c0a: 2b07 cmp r3, #7 8001c0c: d132 bne.n 8001c74 if(pardata.amplif[ACTIVE_CHANNEL].IKE > 0) 8001c0e: 4b1b ldr r3, [pc, #108] ; (8001c7c ) 8001c10: 681b ldr r3, [r3, #0] 8001c12: 4a1b ldr r2, [pc, #108] ; (8001c80 ) 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 pardata.amplif[ACTIVE_CHANNEL].IKE--; 8001c22: 4b16 ldr r3, [pc, #88] ; (8001c7c ) 8001c24: 681b ldr r3, [r3, #0] 8001c26: 4916 ldr r1, [pc, #88] ; (8001c80 ) 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 ) 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 ) 8001c44: 681b ldr r3, [r3, #0] 8001c46: b2db uxtb r3, r3 8001c48: 4618 mov r0, r3 8001c4a: f005 ffe5 bl 8007c18 8001c4e: 4603 mov r3, r0 8001c50: 2b00 cmp r3, #0 8001c52: d00f beq.n 8001c74 pardata.amplif[ACTIVE_CHANNEL].IKE++; 8001c54: 4b09 ldr r3, [pc, #36] ; (8001c7c ) 8001c56: 681b ldr r3, [r3, #0] 8001c58: 4909 ldr r1, [pc, #36] ; (8001c80 ) 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 ) 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 : } 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 ) 8001c8e: f007 fd01 bl 8009694 8001c92: 2064 movs r0, #100 ; 0x64 8001c94: f006 fd18 bl 80086c8 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 ) 8001c9e: f007 fcf9 bl 8009694 8001ca2: 2064 movs r0, #100 ; 0x64 8001ca4: f006 fd10 bl 80086c8 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 ) 8001cae: f007 fcf1 bl 8009694 8001cb2: 2064 movs r0, #100 ; 0x64 8001cb4: f006 fd08 bl 80086c8 } 8001cb8: bf00 nop 8001cba: bd80 pop {r7, pc} 8001cbc: 40020c00 .word 0x40020c00 08001cc0 : /* 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 __HAL_RCC_PLLSAI_ENABLE(); 8001cca: 4a8c ldr r2, [pc, #560] ; (8001efc ) 8001ccc: 4b8b ldr r3, [pc, #556] ; (8001efc ) 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 8001cda: 4603 mov r3, r0 8001cdc: 607b str r3, [r7, #4] while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) 8001cde: e008 b.n 8001cf2 { if((HAL_GetTick() - tickstart) >= PLLSAI_TIMEOUT_VALUE) { 8001ce0: f006 fce6 bl 80086b0 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 Error_Handler(); 8001cee: f001 fad1 bl 8003294 while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) 8001cf2: 4b82 ldr r3, [pc, #520] ; (8001efc ) 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 } } hLtdcHandler.Instance = LTDC; 8001d00: 4b7f ldr r3, [pc, #508] ; (8001f00 ) 8001d02: 4a80 ldr r2, [pc, #512] ; (8001f04 ) 8001d04: 601a str r2, [r3, #0] hLtdcHandler.Init.HSPolarity = LTDC_HSPOLARITY_AL; 8001d06: 4b7e ldr r3, [pc, #504] ; (8001f00 ) 8001d08: 2200 movs r2, #0 8001d0a: 605a str r2, [r3, #4] hLtdcHandler.Init.VSPolarity = LTDC_VSPOLARITY_AL; 8001d0c: 4b7c ldr r3, [pc, #496] ; (8001f00 ) 8001d0e: 2200 movs r2, #0 8001d10: 609a str r2, [r3, #8] hLtdcHandler.Init.DEPolarity = LTDC_DEPOLARITY_AH; 8001d12: 4b7b ldr r3, [pc, #492] ; (8001f00 ) 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 ) 8001d1c: 2200 movs r2, #0 8001d1e: 611a str r2, [r3, #16] hLtdcHandler.Init.HorizontalSync = 38; 8001d20: 4b77 ldr r3, [pc, #476] ; (8001f00 ) 8001d22: 2226 movs r2, #38 ; 0x26 8001d24: 615a str r2, [r3, #20] hLtdcHandler.Init.VerticalSync = 4; 8001d26: 4b76 ldr r3, [pc, #472] ; (8001f00 ) 8001d28: 2204 movs r2, #4 8001d2a: 619a str r2, [r3, #24] hLtdcHandler.Init.AccumulatedHBP = 68; 8001d2c: 4b74 ldr r3, [pc, #464] ; (8001f00 ) 8001d2e: 2244 movs r2, #68 ; 0x44 8001d30: 61da str r2, [r3, #28] hLtdcHandler.Init.AccumulatedVBP = 18; 8001d32: 4b73 ldr r3, [pc, #460] ; (8001f00 ) 8001d34: 2212 movs r2, #18 8001d36: 621a str r2, [r3, #32] hLtdcHandler.Init.AccumulatedActiveW = 388; 8001d38: 4b71 ldr r3, [pc, #452] ; (8001f00 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 8001d72: f007 fcc1 bl 80096f8 8001d76: 4603 mov r3, r0 8001d78: 2b00 cmp r3, #0 8001d7a: d001 beq.n 8001d80 Error_Handler(); 8001d7c: f001 fa8a bl 8003294 } 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 ) 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 ) 8001dd2: f007 fe19 bl 8009a08 8001dd6: 4603 mov r3, r0 8001dd8: 2b00 cmp r3, #0 8001dda: d001 beq.n 8001de0 Error_Handler(); 8001ddc: f001 fa5a bl 8003294 } 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 ) 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 ) 8001e32: f007 fde9 bl 8009a08 8001e36: 4603 mov r3, r0 8001e38: 2b00 cmp r3, #0 8001e3a: d001 beq.n 8001e40 Error_Handler(); 8001e3c: f001 fa2a bl 8003294 } //HAL_LTDC_EnableCLUT(&hLtdcHandler, 0); //HAL_LTDC_EnableCLUT(&hLtdcHandler, 1); ActiveLayer = 1; 8001e40: 4b33 ldr r3, [pc, #204] ; (8001f10 ) 8001e42: 2201 movs r2, #1 8001e44: 601a str r2, [r3, #0] RenderingLayer = 0; 8001e46: 4b33 ldr r3, [pc, #204] ; (8001f14 ) 8001e48: 2200 movs r2, #0 8001e4a: 601a str r2, [r3, #0] BSP_LCD_DisplayOff(); 8001e4c: f000 f87a bl 8001f44 BSP_LCD_SelectLayer(0); 8001e50: 2000 movs r0, #0 8001e52: f000 f961 bl 8002118 BSP_LCD_Clear(0xFF000000); 8001e56: f04f 407f mov.w r0, #4278190080 ; 0xff000000 8001e5a: f000 fa3f bl 80022dc BSP_LCD_SelectLayer(1); 8001e5e: 2001 movs r0, #1 8001e60: f000 f95a bl 8002118 BSP_LCD_Clear(0xFF000000); 8001e64: f04f 407f mov.w r0, #4278190080 ; 0xff000000 8001e68: f000 fa38 bl 80022dc BSP_LCD_SetLayerVisible(RenderingLayer, DISABLE); 8001e6c: 4b29 ldr r3, [pc, #164] ; (8001f14 ) 8001e6e: 681b ldr r3, [r3, #0] 8001e70: 2100 movs r1, #0 8001e72: 4618 mov r0, r3 8001e74: f000 f960 bl 8002138 BSP_LCD_SetLayerVisible(ActiveLayer, DISABLE); 8001e78: 4b25 ldr r3, [pc, #148] ; (8001f10 ) 8001e7a: 681b ldr r3, [r3, #0] 8001e7c: 2100 movs r1, #0 8001e7e: 4618 mov r0, r3 8001e80: f000 f95a bl 8002138 HAL_LTDC_Reload(&hLtdcHandler, LTDC_RELOAD_IMMEDIATE); 8001e84: 2101 movs r1, #1 8001e86: 481e ldr r0, [pc, #120] ; (8001f00 ) 8001e88: f007 fe34 bl 8009af4 DrawProp[0].BackColor = LCD_COLOR_BLACK; 8001e8c: 4b22 ldr r3, [pc, #136] ; (8001f18 ) 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 ) 8001e96: 4a21 ldr r2, [pc, #132] ; (8001f1c ) 8001e98: 609a str r2, [r3, #8] DrawProp[0].TextColor = LCD_COLOR_WHITE; 8001e9a: 4b1f ldr r3, [pc, #124] ; (8001f18 ) 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 ) 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 ) 8001eac: 4a1b ldr r2, [pc, #108] ; (8001f1c ) 8001eae: 615a str r2, [r3, #20] DrawProp[1].TextColor = LCD_COLOR_WHITE; 8001eb0: 4b19 ldr r3, [pc, #100] ; (8001f18 ) 8001eb2: f04f 32ff mov.w r2, #4294967295 8001eb6: 60da str r2, [r3, #12] CurrentFont = &Font17; 8001eb8: 4b19 ldr r3, [pc, #100] ; (8001f20 ) 8001eba: 4a18 ldr r2, [pc, #96] ; (8001f1c ) 8001ebc: 601a str r2, [r3, #0] BSP_LCD_DisplayOn(); 8001ebe: f000 f835 bl 8001f2c 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 ) 8001eca: f007 fbe3 bl 8009694 RefreshScreen = true; 8001ece: 4b16 ldr r3, [pc, #88] ; (8001f28 ) 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 ) 8001ed8: f007 fdd4 bl 8009a84 while(RefreshScreen); 8001edc: bf00 nop 8001ede: 4b12 ldr r3, [pc, #72] ; (8001f28 ) 8001ee0: 781b ldrb r3, [r3, #0] 8001ee2: b2db uxtb r3, r3 8001ee4: 2b00 cmp r3, #0 8001ee6: d1fa bne.n 8001ede BSP_LCD_SetLayerVisible(RenderingLayer, ENABLE); 8001ee8: 4b0a ldr r3, [pc, #40] ; (8001f14 ) 8001eea: 681b ldr r3, [r3, #0] 8001eec: 2101 movs r1, #1 8001eee: 4618 mov r0, r3 8001ef0: f000 f922 bl 8002138 } 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 : 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 ) 8001f38: f007 fbac bl 8009694 } 8001f3c: bf00 nop 8001f3e: bd80 pop {r7, pc} 8001f40: 40021400 .word 0x40021400 08001f44 : /** * @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 ) 8001f50: f007 fba0 bl 8009694 } 8001f54: bf00 nop 8001f56: bd80 pop {r7, pc} 8001f58: 40021400 .word 0x40021400 08001f5c : 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 ) 8001f6a: 4293 cmp r3, r2 8001f6c: f040 8097 bne.w 800209e { __HAL_RCC_LTDC_CLK_ENABLE(); 8001f70: 4a4e ldr r2, [pc, #312] ; (80020ac ) 8001f72: 4b4e ldr r3, [pc, #312] ; (80020ac ) 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 ) 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 ) 8001fa2: f007 f9b5 bl 8009310 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 ) 8001fc4: f007 f9a4 bl 8009310 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 ) 8001fe4: f007 f994 bl 8009310 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 ) 8002006: f007 f983 bl 8009310 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 ) 8002028: f007 f972 bl 8009310 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 ) 8002048: f007 f962 bl 8009310 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 ) 8002068: f007 f952 bl 8009310 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 ) 800208a: f007 f941 bl 8009310 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_EnableIRQ(LTDC_IRQn); 8002098: 2058 movs r0, #88 ; 0x58 800209a: f006 fc4e bl 800893a } } 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 : 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 ) 80020ce: 681b ldr r3, [r3, #0] 80020d0: 4a06 ldr r2, [pc, #24] ; (80020ec ) 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 : /** * @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 ) 80020f6: 681b ldr r3, [r3, #0] 80020f8: 4a06 ldr r2, [pc, #24] ; (8002114 ) 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 : { 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 ) 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 : * @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 __HAL_LTDC_LAYER_ENABLE(&hLtdcHandler, LayerIndex); 800214a: 4b1a ldr r3, [pc, #104] ; (80021b4 ) 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 ) 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 else __HAL_LTDC_LAYER_DISABLE(&hLtdcHandler, LayerIndex); 8002172: 4b10 ldr r3, [pc, #64] ; (80021b4 ) 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 ) 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 ) 800219a: 681b ldr r3, [r3, #0] 800219c: 4a05 ldr r2, [pc, #20] ; (80021b4 ) 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 : * @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 __HAL_LTDC_LAYER_ENABLE(&hLtdcHandler, LayerIndex); 80021ca: 4b16 ldr r3, [pc, #88] ; (8002224 ) 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 ) 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 else __HAL_LTDC_LAYER_DISABLE(&hLtdcHandler, LayerIndex); 80021f2: 4b0c ldr r3, [pc, #48] ; (8002224 ) 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 ) 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 : * @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 ) 8002234: 681a ldr r2, [r3, #0] 8002236: 490d ldr r1, [pc, #52] ; (800226c ) 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 ) 8002248: 681a ldr r2, [r3, #0] 800224a: 4908 ldr r1, [pc, #32] ; (800226c ) 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 : 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 ) 800227a: 681a ldr r2, [r3, #0] 800227c: 4907 ldr r1, [pc, #28] ; (800229c ) 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 : * @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 ) 80022aa: 681a ldr r2, [r3, #0] 80022ac: 4909 ldr r1, [pc, #36] ; (80022d4 ) 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 ) 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 : * @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 ) 80022e6: 681c ldr r4, [r3, #0] 80022e8: 4b0e ldr r3, [pc, #56] ; (8002324 ) 80022ea: 681b ldr r3, [r3, #0] 80022ec: 4a0e ldr r2, [pc, #56] ; (8002328 ) 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 8002300: 4606 mov r6, r0 8002302: f7ff fef5 bl 80020f0 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 } 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 : * @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 ) 8002340: 681a ldr r2, [r3, #0] 8002342: 491b ldr r1, [pc, #108] ; (80023b0 ) 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 ) 800235c: 681a ldr r2, [r3, #0] 800235e: 4c14 ldr r4, [pc, #80] ; (80023b0 ) 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 ) 8002376: 681a ldr r2, [r3, #0] 8002378: 4c0d ldr r4, [pc, #52] ; (80023b0 ) 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 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 } 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 : * @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 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 /* 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 80023f8: 2b03 cmp r3, #3 80023fa: d018 beq.n 800242e 80023fc: 2b01 cmp r3, #1 80023fe: d12e bne.n 800245e { case CENTER_MODE: { ll = DrawProp[ActiveLayer].pFont->Width * size; 8002400: 4b44 ldr r3, [pc, #272] ; (8002514 ) 8002402: 681a ldr r2, [r3, #0] 8002404: 4944 ldr r1, [pc, #272] ; (8002518 ) 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 } case LEFT_MODE: { ref_column = Xpos; 800242e: 89fb ldrh r3, [r7, #14] 8002430: 83fb strh r3, [r7, #30] break; 8002432: e017 b.n 8002464 } case RIGHT_MODE: { ll = DrawProp[ActiveLayer].pFont->Width * size; 8002434: 4b37 ldr r3, [pc, #220] ; (8002514 ) 8002436: 681a ldr r2, [r3, #0] 8002438: 4937 ldr r1, [pc, #220] ; (8002518 ) 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 } 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 800246a: f9b7 301e ldrsh.w r3, [r7, #30] 800246e: 2b00 cmp r3, #0 8002470: da1d bge.n 80024ae { 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 { /* 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 /* Decrement the column position by 16 */ ref_column += DrawProp[ActiveLayer].pFont->Width; 8002486: 4b23 ldr r3, [pc, #140] ; (8002514 ) 8002488: 681a ldr r2, [r3, #0] 800248a: 4923 ldr r1, [pc, #140] ; (8002518 ) 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 80024c0: 4605 mov r5, r0 80024c2: 8bb9 ldrh r1, [r7, #28] 80024c4: 4b13 ldr r3, [pc, #76] ; (8002514 ) 80024c6: 681a ldr r2, [r3, #0] 80024c8: 4813 ldr r0, [pc, #76] ; (8002518 ) 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 ) 80024e4: 681a ldr r2, [r3, #0] 80024e6: 480c ldr r0, [pc, #48] ; (8002518 ) 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 } } 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 : * @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 ) 8002534: 681b ldr r3, [r3, #0] 8002536: 4a26 ldr r2, [pc, #152] ; (80025d0 ) 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 { /* RGB565 format */ Xaddress = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 2*(BSP_LCD_GetXSize()*Ypos + Xpos); 8002548: 4b20 ldr r3, [pc, #128] ; (80025cc ) 800254a: 681b ldr r3, [r3, #0] 800254c: 4a20 ldr r2, [pc, #128] ; (80025d0 ) 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 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 } else { /* ARGB8888 format */ Xaddress = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos); 8002572: 4b16 ldr r3, [pc, #88] ; (80025cc ) 8002574: 681b ldr r3, [r3, #0] 8002576: 4a16 ldr r2, [pc, #88] ; (80025d0 ) 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 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 ) 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 ) 80025a4: 681a ldr r2, [r3, #0] 80025a6: 490b ldr r1, [pc, #44] ; (80025d4 ) 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 } 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 : * @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 ) 80025f0: 681b ldr r3, [r3, #0] 80025f2: 4a28 ldr r2, [pc, #160] ; (8002694 ) 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 { /* RGB565 format */ Xaddress = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 2*(BSP_LCD_GetXSize()*Ypos + Xpos); 8002604: 4b22 ldr r3, [pc, #136] ; (8002690 ) 8002606: 681b ldr r3, [r3, #0] 8002608: 4a22 ldr r2, [pc, #136] ; (8002694 ) 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 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 } else { /* ARGB8888 format */ Xaddress = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos); 800262e: 4b18 ldr r3, [pc, #96] ; (8002690 ) 8002630: 681b ldr r3, [r3, #0] 8002632: 4a18 ldr r2, [pc, #96] ; (8002694 ) 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 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 ) 8002658: 681c ldr r4, [r3, #0] 800265a: 68fd ldr r5, [r7, #12] 800265c: 887e ldrh r6, [r7, #2] 800265e: f7ff fd33 bl 80020c8 8002662: 4603 mov r3, r0 8002664: 1e59 subs r1, r3, #1 8002666: 4b0a ldr r3, [pc, #40] ; (8002690 ) 8002668: 681a ldr r2, [r3, #0] 800266a: 480b ldr r0, [pc, #44] ; (8002698 ) 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 } 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 : * @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_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_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_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 } 80026fa: bf00 nop 80026fc: 370c adds r7, #12 80026fe: 46bd mov sp, r7 8002700: bd90 pop {r4, r7, pc} ... 08002704 : * @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_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 ) 8002740: 681a ldr r2, [r3, #0] 8002742: 4967 ldr r1, [pc, #412] ; (80028e0 ) 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((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 ) 800276e: 681a ldr r2, [r3, #0] 8002770: 495b ldr r1, [pc, #364] ; (80028e0 ) 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((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 ) 800279c: 681a ldr r2, [r3, #0] 800279e: 4950 ldr r1, [pc, #320] ; (80028e0 ) 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((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 ) 80027ca: 681a ldr r2, [r3, #0] 80027cc: 4944 ldr r1, [pc, #272] ; (80028e0 ) 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((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 ) 80027f8: 681a ldr r2, [r3, #0] 80027fa: 4939 ldr r1, [pc, #228] ; (80028e0 ) 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((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 ) 8002826: 681a ldr r2, [r3, #0] 8002828: 492d ldr r1, [pc, #180] ; (80028e0 ) 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((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 ) 8002854: 681a ldr r2, [r3, #0] 8002856: 4922 ldr r1, [pc, #136] ; (80028e0 ) 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((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 ) 8002882: 681a ldr r2, [r3, #0] 8002884: 4916 ldr r1, [pc, #88] ; (80028e0 ) 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 if (decision < 0) 800289a: 697b ldr r3, [r7, #20] 800289c: 2b00 cmp r3, #0 800289e: da06 bge.n 80028ae { 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 } 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 } } 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 : * @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 ) 80028f6: 681b ldr r3, [r3, #0] 80028f8: 4a2a ldr r2, [pc, #168] ; (80029a4 ) 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 { /* 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 ) 800290c: 681b ldr r3, [r3, #0] 800290e: 4a25 ldr r2, [pc, #148] ; (80029a4 ) 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 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 ) 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 *(__IO uint32_t*) (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress + (4*(Ypos*BSP_LCD_GetXSize() + Xpos))) = RGB_Code; 800296a: 4b0d ldr r3, [pc, #52] ; (80029a0 ) 800296c: 681b ldr r3, [r3, #0] 800296e: 4a0d ldr r2, [pc, #52] ; (80029a4 ) 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 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 : * @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 ) 80029d2: 681a ldr r2, [r3, #0] 80029d4: 4930 ldr r1, [pc, #192] ; (8002a98 ) 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 /* Get the rectangle start address */ if(hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565) 80029e8: 4b2a ldr r3, [pc, #168] ; (8002a94 ) 80029ea: 681b ldr r3, [r3, #0] 80029ec: 4a2b ldr r2, [pc, #172] ; (8002a9c ) 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 { /* RGB565 format */ x_address = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 2*(BSP_LCD_GetXSize()*Ypos + Xpos); 80029fe: 4b25 ldr r3, [pc, #148] ; (8002a94 ) 8002a00: 681b ldr r3, [r3, #0] 8002a02: 4a26 ldr r2, [pc, #152] ; (8002a9c ) 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 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 } else { /* ARGB8888 format */ x_address = (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos); 8002a28: 4b1a ldr r3, [pc, #104] ; (8002a94 ) 8002a2a: 681b ldr r3, [r3, #0] 8002a2c: 4a1b ldr r2, [pc, #108] ; (8002a9c ) 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 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 ) 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 8002a60: 4602 mov r2, r0 8002a62: 887b ldrh r3, [r7, #2] 8002a64: 1ad1 subs r1, r2, r3 8002a66: 4b0b ldr r3, [pc, #44] ; (8002a94 ) 8002a68: 681a ldr r2, [r3, #0] 8002a6a: 480b ldr r0, [pc, #44] ; (8002a98 ) 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 } 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 : * @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 ) 8002ac6: 681a ldr r2, [r3, #0] 8002ac8: 4944 ldr r1, [pc, #272] ; (8002bdc ) 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 while (current_x <= current_y) 8002adc: e061 b.n 8002ba2 { if(current_y > 0) 8002ade: 68fb ldr r3, [r7, #12] 8002ae0: 2b00 cmp r3, #0 8002ae2: d021 beq.n 8002b28 { 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(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 } if(current_x > 0) 8002b28: 693b ldr r3, [r7, #16] 8002b2a: 2b00 cmp r3, #0 8002b2c: d021 beq.n 8002b72 { 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(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 } if (decision < 0) 8002b72: 697b ldr r3, [r7, #20] 8002b74: 2b00 cmp r3, #0 8002b76: da06 bge.n 8002b86 { 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 } 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_SetTextColor(DrawProp[ActiveLayer].TextColor); 8002baa: 4b0b ldr r3, [pc, #44] ; (8002bd8 ) 8002bac: 681a ldr r2, [r3, #0] 8002bae: 490b ldr r1, [pc, #44] ; (8002bdc ) 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_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 } 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 : * @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 ) 8002bfa: 681a ldr r2, [r3, #0] 8002bfc: 4953 ldr r1, [pc, #332] ; (8002d4c ) 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 ) 8002c12: 681a ldr r2, [r3, #0] 8002c14: 494d ldr r1, [pc, #308] ; (8002d4c ) 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 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 { 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 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 8002c6a: 3307 adds r3, #7 8002c6c: 10db asrs r3, r3, #3 8002c6e: 2b01 cmp r3, #1 8002c70: d002 beq.n 8002c78 8002c72: 2b02 cmp r3, #2 8002c74: d004 beq.n 8002c80 8002c76: e00c b.n 8002c92 { 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 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 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 { 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 { 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 ) 8002cdc: 681a ldr r2, [r3, #0] 8002cde: 491b ldr r1, [pc, #108] ; (8002d4c ) 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 8002cf4: e012 b.n 8002d1c } 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 ) 8002d02: 681a ldr r2, [r3, #0] 8002d04: 4911 ldr r1, [pc, #68] ; (8002d4c ) 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 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 } } 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 } } 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 : * @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 ) 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 ) 8002d68: 681b ldr r3, [r3, #0] 8002d6a: 4a1d ldr r2, [pc, #116] ; (8002de0 ) 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 hDma2dHandler.Init.ColorMode = DMA2D_RGB565; 8002d7c: 4b16 ldr r3, [pc, #88] ; (8002dd8 ) 8002d7e: 2202 movs r2, #2 8002d80: 609a str r2, [r3, #8] 8002d82: e002 b.n 8002d8a else hDma2dHandler.Init.ColorMode = DMA2D_ARGB8888; 8002d84: 4b14 ldr r3, [pc, #80] ; (8002dd8 ) 8002d86: 2200 movs r2, #0 8002d88: 609a str r2, [r3, #8] hDma2dHandler.Init.OutputOffset = OffLine; 8002d8a: 4a13 ldr r2, [pc, #76] ; (8002dd8 ) 8002d8c: 69bb ldr r3, [r7, #24] 8002d8e: 60d3 str r3, [r2, #12] hDma2dHandler.Instance = DMA2D; 8002d90: 4b11 ldr r3, [pc, #68] ; (8002dd8 ) 8002d92: 4a14 ldr r2, [pc, #80] ; (8002de4 ) 8002d94: 601a str r2, [r3, #0] if(HAL_DMA2D_Init(&hDma2dHandler) == HAL_OK) 8002d96: 4810 ldr r0, [pc, #64] ; (8002dd8 ) 8002d98: f006 f814 bl 8008dc4 8002d9c: 4603 mov r3, r0 8002d9e: 2b00 cmp r3, #0 8002da0: d115 bne.n 8002dce { if(HAL_DMA2D_ConfigLayer(&hDma2dHandler, LayerIndex) == HAL_OK) 8002da2: 68f9 ldr r1, [r7, #12] 8002da4: 480c ldr r0, [pc, #48] ; (8002dd8 ) 8002da6: f006 f97b bl 80090a0 8002daa: 4603 mov r3, r0 8002dac: 2b00 cmp r3, #0 8002dae: d10e bne.n 8002dce { 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 ) 8002dbc: f006 f85c bl 8008e78 8002dc0: 4603 mov r3, r0 8002dc2: 2b00 cmp r3, #0 8002dc4: d103 bne.n 8002dce { HAL_DMA2D_PollForTransfer(&hDma2dHandler, 30); 8002dc6: 211e movs r1, #30 8002dc8: 4803 ldr r0, [pc, #12] ; (8002dd8 ) 8002dca: f006 f880 bl 8008ece } } } } 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 : } } 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 ) 8002e10: 681b ldr r3, [r3, #0] 8002e12: 4a39 ldr r2, [pc, #228] ; (8002ef8 ) 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 ) 8002e38: 2200 movs r2, #0 8002e3a: 605a str r2, [r3, #4] hDma2dHandler.Init.ColorMode = DMA2D_RGB565; 8002e3c: 4b2f ldr r3, [pc, #188] ; (8002efc ) 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 ) 8002e4c: 60da str r2, [r3, #12] /* DMA2D Callbacks Configuration */ hDma2dHandler.XferCpltCallback = TransferComplete; 8002e4e: 4b2b ldr r3, [pc, #172] ; (8002efc ) 8002e50: 4a2b ldr r2, [pc, #172] ; (8002f00 ) 8002e52: 619a str r2, [r3, #24] hDma2dHandler.XferErrorCallback = TransferError; 8002e54: 4b29 ldr r3, [pc, #164] ; (8002efc ) 8002e56: 4a2b ldr r2, [pc, #172] ; (8002f04 ) 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 ) 8002e5c: 681a ldr r2, [r3, #0] 8002e5e: 4927 ldr r1, [pc, #156] ; (8002efc ) 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 ) 8002e72: 681a ldr r2, [r3, #0] 8002e74: 4921 ldr r1, [pc, #132] ; (8002efc ) 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 ) 8002e88: 681a ldr r2, [r3, #0] 8002e8a: 491c ldr r1, [pc, #112] ; (8002efc ) 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 ) 8002e9e: 681a ldr r2, [r3, #0] 8002ea0: 4916 ldr r1, [pc, #88] ; (8002efc ) 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 ) 8002eb4: 4a14 ldr r2, [pc, #80] ; (8002f08 ) 8002eb6: 601a str r2, [r3, #0] /* DMA2D Initialization */ HAL_DMA2D_Init(&hDma2dHandler); 8002eb8: 4810 ldr r0, [pc, #64] ; (8002efc ) 8002eba: f005 ff83 bl 8008dc4 HAL_DMA2D_ConfigLayer(&hDma2dHandler, ActiveLayer); 8002ebe: 4b0d ldr r3, [pc, #52] ; (8002ef4 ) 8002ec0: 681b ldr r3, [r3, #0] 8002ec2: 4619 mov r1, r3 8002ec4: 480d ldr r0, [pc, #52] ; (8002efc ) 8002ec6: f006 f8eb bl 80090a0 DMA2D_TransferOk = 0; 8002eca: 4b10 ldr r3, [pc, #64] ; (8002f0c ) 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 ) 8002ede: f005 ffcb bl 8008e78 HAL_DMA2D_PollForTransfer(&hDma2dHandler, 30); 8002ee2: 211e movs r1, #30 8002ee4: 4805 ldr r0, [pc, #20] ; (8002efc ) 8002ee6: f005 fff2 bl 8008ece //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 : 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 ) 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 : 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 : void LCD_Refresh(void) { 8002f44: b580 push {r7, lr} 8002f46: af00 add r7, sp, #0 ActiveLayer ^= 1; 8002f48: 4b0e ldr r3, [pc, #56] ; (8002f84 ) 8002f4a: 681b ldr r3, [r3, #0] 8002f4c: f083 0301 eor.w r3, r3, #1 8002f50: 4a0c ldr r2, [pc, #48] ; (8002f84 ) 8002f52: 6013 str r3, [r2, #0] RenderingLayer ^= 1; 8002f54: 4b0c ldr r3, [pc, #48] ; (8002f88 ) 8002f56: 681b ldr r3, [r3, #0] 8002f58: f083 0301 eor.w r3, r3, #1 8002f5c: 4a0a ldr r2, [pc, #40] ; (8002f88 ) 8002f5e: 6013 str r3, [r2, #0] BSP_LCD_SetLayerVisible_NoReload(ActiveLayer, DISABLE); 8002f60: 4b08 ldr r3, [pc, #32] ; (8002f84 ) 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(RenderingLayer, ENABLE); 8002f6c: 4b06 ldr r3, [pc, #24] ; (8002f88 ) 8002f6e: 681b ldr r3, [r3, #0] 8002f70: 2101 movs r1, #1 8002f72: 4618 mov r0, r3 8002f74: f7ff f920 bl 80021b8 HAL_LTDC_Reload(&hLtdcHandler, LTDC_RELOAD_IMMEDIATE); 8002f78: 2101 movs r1, #1 8002f7a: 4804 ldr r0, [pc, #16] ; (8002f8c ) 8002f7c: f006 fdba bl 8009af4 //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 : 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 ) 8002f9a: 781b ldrb r3, [r3, #0] 8002f9c: b2db uxtb r3, r3 8002f9e: 2b00 cmp r3, #0 8002fa0: d004 beq.n 8002fac { LCD_Refresh(); 8002fa2: f7ff ffcf bl 8002f44 RefreshScreen = false; 8002fa6: 4b03 ldr r3, [pc, #12] ; (8002fb4 ) 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
: 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 SystemClock_Config(); 8002fca: f000 f8c7 bl 800315c MX_GPIO_Init(); 8002fce: f7fd fb3f bl 8000650 MX_DMA2D_Init(); 8002fd2: f7fd fae5 bl 80005a0 MX_TIM7_Init(); 8002fd6: f004 f98f bl 80072f8 MX_LTDC_Init(); 8002fda: f7fe fe71 bl 8001cc0 initKeys(); 8002fde: f7fd fc2b bl 8000838 /////////////////////////////// todo CNT_CHANNELS = 4; 8002fe2: 4b55 ldr r3, [pc, #340] ; (8003138 ) 8002fe4: 2204 movs r2, #4 8002fe6: 601a str r2, [r3, #0] ACTIVE_CHANNEL = Ch1; 8002fe8: 4b54 ldr r3, [pc, #336] ; (800313c ) 8002fea: 2200 movs r2, #0 8002fec: 601a str r2, [r3, #0] menupos = Input; 8002fee: 4b54 ldr r3, [pc, #336] ; (8003140 ) 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 { pardata.amplif[i].IIN = CHARGE; 8002ffa: 4a52 ldr r2, [pc, #328] ; (8003144 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 8003092: 601a str r2, [r3, #0] pardata.amplif[i].ACCEL = 100.00f; 8003094: 4a2b ldr r2, [pc, #172] ; (8003144 ) 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 ) 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 } pardata.OWN = 18; 80030ae: 4b25 ldr r3, [pc, #148] ; (8003144 ) 80030b0: 2212 movs r2, #18 80030b2: f8a3 2200 strh.w r2, [r3, #512] ; 0x200 pardata.BAUD = 7; 80030b6: 4b23 ldr r3, [pc, #140] ; (8003144 ) 80030b8: 2207 movs r2, #7 80030ba: f8a3 2202 strh.w r2, [r3, #514] ; 0x202 pardata.INFB = 0; 80030be: 4b21 ldr r3, [pc, #132] ; (8003144 ) 80030c0: 2200 movs r2, #0 80030c2: f8a3 2204 strh.w r2, [r3, #516] ; 0x204 pardata.LANG = RUS; 80030c6: 4b1f ldr r3, [pc, #124] ; (8003144 ) 80030c8: 2200 movs r2, #0 80030ca: f8a3 2206 strh.w r2, [r3, #518] ; 0x206 ///////////////////////////// MX_UART7_Init(); 80030ce: f004 fa19 bl 8007504 EXTI_Config(); 80030d2: f000 f8e3 bl 800329c Logo(); 80030d6: f000 f945 bl 8003364 while(HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_SET) { 80030da: e001 b.n 80030e0 RedrawScreen(); 80030dc: f000 f932 bl 8003344 while(HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_SET) { 80030e0: 2101 movs r1, #1 80030e2: 481b ldr r0, [pc, #108] ; (8003150 ) 80030e4: f006 fabe bl 8009664 80030e8: 4603 mov r3, r0 80030ea: 2b01 cmp r3, #1 80030ec: d0f6 beq.n 80030dc } KeysIsReady = true; 80030ee: 4b19 ldr r3, [pc, #100] ; (8003154 ) 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 { keys = kbhit(); 80030fa: f7fd fc2b bl 8000954 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 8003106: 6bbb ldr r3, [r7, #56] ; 0x38 8003108: 2b22 cmp r3, #34 ; 0x22 800310a: d103 bne.n 8003114 { clbr = true; 800310c: 4b12 ldr r3, [pc, #72] ; (8003158 ) 800310e: 2201 movs r2, #1 8003110: 701a strb r2, [r3, #0] break; 8003112: e005 b.n 8003120 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 } } HAL_Delay(1000); 8003120: f44f 707a mov.w r0, #1000 ; 0x3e8 8003124: f005 fad0 bl 80086c8 AskChannels(); 8003128: f005 f9f6 bl 8008518 //menu = MAIN; //todo while(1) { RedrawScreen(); 800312c: f000 f90a bl 8003344 keyIns(); 8003130: f7fd fcac bl 8000a8c RedrawScreen(); 8003134: e7fa b.n 800312c 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 : /** * @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 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 __HAL_RCC_PWR_CLK_ENABLE(); 800318e: 4a3f ldr r2, [pc, #252] ; (800328c ) 8003190: 4b3e ldr r3, [pc, #248] ; (800328c ) 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 ) 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 ) 80031a8: 4b39 ldr r3, [pc, #228] ; (8003290 ) 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 ) 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 800320a: 4603 mov r3, r0 800320c: 2b00 cmp r3, #0 800320e: d001 beq.n 8003214 { Error_Handler(); 8003210: f000 f840 bl 8003294 } 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 800323e: 4603 mov r3, r0 8003240: 2b00 cmp r3, #0 8003242: d001 beq.n 8003248 { Error_Handler(); 8003244: f000 f826 bl 8003294 } 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 800327a: 4603 mov r3, r0 800327c: 2b00 cmp r3, #0 800327e: d001 beq.n 8003284 { Error_Handler(); 8003280: f000 f808 bl 8003294 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 : /** * @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 0800329c : 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 ) 80032a4: 4b11 ldr r3, [pc, #68] ; (80032ec ) 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 ) 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 ) 80032ce: f006 f81f bl 8009310 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_EnableIRQ(EXTI2_IRQn); 80032dc: 2008 movs r0, #8 80032de: f005 fb2c bl 800893a } 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 : 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_CLEAR_FLAG(GPIO_PIN_2); 8003304: 4b0c ldr r3, [pc, #48] ; (8003338 ) 8003306: 2204 movs r2, #4 8003308: 615a str r2, [r3, #20] if((RefreshScreen == false) && (screen == true)) 800330a: 4b0c ldr r3, [pc, #48] ; (800333c ) 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 800331a: 4b09 ldr r3, [pc, #36] ; (8003340 ) 800331c: 781b ldrb r3, [r3, #0] 800331e: b2db uxtb r3, r3 8003320: 2b00 cmp r3, #0 8003322: d004 beq.n 800332e { screen = false; 8003324: 4b06 ldr r3, [pc, #24] ; (8003340 ) 8003326: 2200 movs r2, #0 8003328: 701a strb r2, [r3, #0] Display(); 800332a: f000 f8b9 bl 80034a0 } //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 : 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 ) 800334a: 4b05 ldr r3, [pc, #20] ; (8003360 ) 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 : 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 HAL_NVIC_DisableIRQ(EXTI2_IRQn); 8003374: 2008 movs r0, #8 8003376: f005 faee bl 8008956 //********************************************************* BSP_LCD_SetFont(&Font12); 800337a: 4843 ldr r0, [pc, #268] ; (8003488 ) 800337c: f7fe ff90 bl 80022a0 for(i = 0; i < 3; i++) 8003380: 2300 movs r3, #0 8003382: 607b str r3, [r7, #4] 8003384: e032 b.n 80033ec { BSP_LCD_Clear(color); 8003386: 6838 ldr r0, [r7, #0] 8003388: f7fe ffa8 bl 80022dc DrawImage(&bmLOGO_NEW, 0, 54); 800338c: 2236 movs r2, #54 ; 0x36 800338e: 2100 movs r1, #0 8003390: 483e ldr r0, [pc, #248] ; (800348c ) 8003392: f7ff fd29 bl 8002de8 RefreshScreen = true; 8003396: 4b3e ldr r3, [pc, #248] ; (8003490 ) 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 ) 80033a0: f006 fb70 bl 8009a84 while(RefreshScreen); 80033a4: bf00 nop 80033a6: 4b3a ldr r3, [pc, #232] ; (8003490 ) 80033a8: 781b ldrb r3, [r3, #0] 80033aa: b2db uxtb r3, r3 80033ac: 2b00 cmp r3, #0 80033ae: d1fa bne.n 80033a6 HAL_Delay(50); 80033b0: 2032 movs r0, #50 ; 0x32 80033b2: f005 f989 bl 80086c8 BSP_LCD_Clear(color); 80033b6: 6838 ldr r0, [r7, #0] 80033b8: f7fe ff90 bl 80022dc DrawImage(&bmLOGO_NEW, 0, 54); 80033bc: 2236 movs r2, #54 ; 0x36 80033be: 2100 movs r1, #0 80033c0: 4832 ldr r0, [pc, #200] ; (800348c ) 80033c2: f7ff fd11 bl 8002de8 RefreshScreen = true; 80033c6: 4b32 ldr r3, [pc, #200] ; (8003490 ) 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 ) 80033d0: f006 fb58 bl 8009a84 while(RefreshScreen); 80033d4: bf00 nop 80033d6: 4b2e ldr r3, [pc, #184] ; (8003490 ) 80033d8: 781b ldrb r3, [r3, #0] 80033da: b2db uxtb r3, r3 80033dc: 2b00 cmp r3, #0 80033de: d1fa bne.n 80033d6 HAL_Delay(50); 80033e0: 2032 movs r0, #50 ; 0x32 80033e2: f005 f971 bl 80086c8 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 } 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 ) 80033fa: f006 f94b bl 8009694 //********************************************************* BSP_LCD_Clear(color); 80033fe: 6838 ldr r0, [r7, #0] 8003400: f7fe ff6c bl 80022dc DrawImage(&bmLOGO_NEW, 0, 54); 8003404: 2236 movs r2, #54 ; 0x36 8003406: 2100 movs r1, #0 8003408: 4820 ldr r0, [pc, #128] ; (800348c ) 800340a: f7ff fced bl 8002de8 RefreshScreen = true; 800340e: 4b20 ldr r3, [pc, #128] ; (8003490 ) 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 ) 8003418: f006 fb34 bl 8009a84 while(RefreshScreen); 800341c: bf00 nop 800341e: 4b1c ldr r3, [pc, #112] ; (8003490 ) 8003420: 781b ldrb r3, [r3, #0] 8003422: b2db uxtb r3, r3 8003424: 2b00 cmp r3, #0 8003426: d1fa bne.n 800341e HAL_Delay(50); 8003428: 2032 movs r0, #50 ; 0x32 800342a: f005 f94d bl 80086c8 BSP_LCD_Clear(color); 800342e: 6838 ldr r0, [r7, #0] 8003430: f7fe ff54 bl 80022dc DrawImage(&bmLOGO_NEW, 0, 54); 8003434: 2236 movs r2, #54 ; 0x36 8003436: 2100 movs r1, #0 8003438: 4814 ldr r0, [pc, #80] ; (800348c ) 800343a: f7ff fcd5 bl 8002de8 RefreshScreen = true; 800343e: 4b14 ldr r3, [pc, #80] ; (8003490 ) 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 ) 8003448: f006 fb1c bl 8009a84 while(RefreshScreen); 800344c: bf00 nop 800344e: 4b10 ldr r3, [pc, #64] ; (8003490 ) 8003450: 781b ldrb r3, [r3, #0] 8003452: b2db uxtb r3, r3 8003454: 2b00 cmp r3, #0 8003456: d1fa bne.n 800344e HAL_Delay(50); 8003458: 2032 movs r0, #50 ; 0x32 800345a: f005 f935 bl 80086c8 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 ) 8003466: f006 f915 bl 8009694 HAL_Delay(500); 800346a: f44f 70fa mov.w r0, #500 ; 0x1f4 800346e: f005 f92b bl 80086c8 menu = LOGO; 8003472: 4b0a ldr r3, [pc, #40] ; (800349c ) 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 #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 : 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 ) 80034b6: 681b ldr r3, [r3, #0] 80034b8: 3301 adds r3, #1 80034ba: 4abd ldr r2, [pc, #756] ; (80037b0 ) 80034bc: 6013 str r3, [r2, #0] if(blk > 3) 80034be: 4bbc ldr r3, [pc, #752] ; (80037b0 ) 80034c0: 681b ldr r3, [r3, #0] 80034c2: 2b03 cmp r3, #3 80034c4: d905 bls.n 80034d2 { blk = 0; 80034c6: 4bba ldr r3, [pc, #744] ; (80037b0 ) 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 ) 80034d4: 681b ldr r3, [r3, #0] 80034d6: 3301 adds r3, #1 80034d8: 4ab6 ldr r2, [pc, #728] ; (80037b4 ) 80034da: 6013 str r3, [r2, #0] if(blink > 8) 80034dc: 4bb5 ldr r3, [pc, #724] ; (80037b4 ) 80034de: 681b ldr r3, [r3, #0] 80034e0: 2b08 cmp r3, #8 80034e2: d905 bls.n 80034f0 { blink = 0; 80034e4: 4bb3 ldr r3, [pc, #716] ; (80037b4 ) 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 ) 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 //*************************************************** ОТРИСОВКА СТРОКИ СТАТУСА (ВЕРХ ДИСПЛЕЯ С ЧАСАМИ И БАТАРЕЕЙ) **************************************************************// //==========================================================================================================================// //--------------------------------------------------------------------------------------------------------------------------// //==========================================================================================================================// switch(menu) 80034fe: 4baf ldr r3, [pc, #700] ; (80037bc ) 8003500: 781b ldrb r3, [r3, #0] 8003502: b2db uxtb r3, r3 8003504: 2b4e cmp r3, #78 ; 0x4e 8003506: f200 868c bhi.w 8004222 800350a: a201 add r2, pc, #4 ; (adr r2, 8003510 ) 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 ) 8003652: f7ff fbc9 bl 8002de8 timesLOGO++; 8003656: 4b5b ldr r3, [pc, #364] ; (80037c4 ) 8003658: 681b ldr r3, [r3, #0] 800365a: 3301 adds r3, #1 800365c: 4a59 ldr r2, [pc, #356] ; (80037c4 ) 800365e: 6013 str r3, [r2, #0] if(timesLOGO >= 2) 8003660: 4b58 ldr r3, [pc, #352] ; (80037c4 ) 8003662: 681b ldr r3, [r3, #0] 8003664: 2b01 cmp r3, #1 8003666: f240 85db bls.w 8004220 { LCD_SetColors(0xFFFFFFFF, 0); 800366a: 2100 movs r1, #0 800366c: f04f 30ff mov.w r0, #4294967295 8003670: f7fe fdda bl 8002228 BSP_LCD_SetFont(&Font12); 8003674: 4854 ldr r0, [pc, #336] ; (80037c8 ) 8003676: f7fe fe13 bl 80022a0 if(pardata.LANG == RUS) 800367a: 4b54 ldr r3, [pc, #336] ; (80037cc ) 800367c: f8b3 3206 ldrh.w r3, [r3, #518] ; 0x206 8003680: b29b uxth r3, r3 8003682: 2b00 cmp r3, #0 8003684: d10c bne.n 80036a0 { BSP_LCD_DisplayStringAt(165, 195, "А141", CENTER_MODE); 8003686: 2301 movs r3, #1 8003688: 4a51 ldr r2, [pc, #324] ; (80037d0 ) 800368a: 21c3 movs r1, #195 ; 0xc3 800368c: 20a5 movs r0, #165 ; 0xa5 800368e: f7fe fe91 bl 80023b4 BSP_LCD_DisplayStringAt(165, 206, "Усилитель заряда и напряжения", CENTER_MODE); 8003692: 2301 movs r3, #1 8003694: 4a4f ldr r2, [pc, #316] ; (80037d4 ) 8003696: 21ce movs r1, #206 ; 0xce 8003698: 20a5 movs r0, #165 ; 0xa5 800369a: f7fe fe8b bl 80023b4 800369e: e005 b.n 80036ac } else BSP_LCD_DisplayStringAt(165, 206, "Amplifier A141", CENTER_MODE); 80036a0: 2301 movs r3, #1 80036a2: 4a4d ldr r2, [pc, #308] ; (80037d8 ) 80036a4: 21ce movs r1, #206 ; 0xce 80036a6: 20a5 movs r0, #165 ; 0xa5 80036a8: f7fe fe84 bl 80023b4 BSP_LCD_DisplayStringAt(160, 224, (char *) _VERSION, CENTER_MODE); 80036ac: 2301 movs r3, #1 80036ae: 4a4b ldr r2, [pc, #300] ; (80037dc ) 80036b0: 21e0 movs r1, #224 ; 0xe0 80036b2: 20a0 movs r0, #160 ; 0xa0 80036b4: f7fe fe7e bl 80023b4 BSP_LCD_DisplayStringAt(160, 4, (char *) _SERIAL_DRAW, CENTER_MODE); 80036b8: 2301 movs r3, #1 80036ba: 4a49 ldr r2, [pc, #292] ; (80037e0 ) 80036bc: 2104 movs r1, #4 80036be: 20a0 movs r0, #160 ; 0xa0 80036c0: f7fe fe78 bl 80023b4 if(CORRECTION == false) { 80036c4: 4b47 ldr r3, [pc, #284] ; (80037e4 ) 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 BSP_LCD_DisplayStringAt(0, 4, ".", LEFT_MODE); 80036d4: 2303 movs r3, #3 80036d6: 4a44 ldr r2, [pc, #272] ; (80037e8 ) 80036d8: 2104 movs r1, #4 80036da: 2000 movs r0, #0 80036dc: f7fe fe6a bl 80023b4 } DrawSpinner(300, 20); 80036e0: 2114 movs r1, #20 80036e2: f44f 7096 mov.w r0, #300 ; 0x12c 80036e6: f001 f91f bl 8004928 if(clbr) 80036ea: 4b40 ldr r3, [pc, #256] ; (80037ec ) 80036ec: 781b ldrb r3, [r3, #0] 80036ee: b2db uxtb r3, r3 80036f0: 2b00 cmp r3, #0 80036f2: d00b beq.n 800370c { 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 BSP_LCD_DisplayStringAt(160, 18, "ЗАПУСК КАЛИБРОВКИ", CENTER_MODE); 8003700: 2301 movs r3, #1 8003702: 4a3b ldr r2, [pc, #236] ; (80037f0 ) 8003704: 2112 movs r1, #18 8003706: 20a0 movs r0, #160 ; 0xa0 8003708: f7fe fe54 bl 80023b4 } if(ASK_COMPLETE) 800370c: 4b39 ldr r3, [pc, #228] ; (80037f4 ) 800370e: 781b ldrb r3, [r3, #0] 8003710: b2db uxtb r3, r3 8003712: 2b00 cmp r3, #0 8003714: f000 8584 beq.w 8004220 { timesLOGO = 0; 8003718: 4b2a ldr r3, [pc, #168] ; (80037c4 ) 800371a: 2200 movs r2, #0 800371c: 601a str r2, [r3, #0] if(clbr) 800371e: 4b33 ldr r3, [pc, #204] ; (80037ec ) 8003720: 781b ldrb r3, [r3, #0] 8003722: b2db uxtb r3, r3 8003724: 2b00 cmp r3, #0 8003726: d007 beq.n 8003738 { menu = CALIBR_00; 8003728: 4b24 ldr r3, [pc, #144] ; (80037bc ) 800372a: 2201 movs r2, #1 800372c: 701a strb r2, [r3, #0] menupos = Ch1; 800372e: 4b32 ldr r3, [pc, #200] ; (80037f8 ) 8003730: 2200 movs r2, #0 8003732: 701a strb r2, [r3, #0] } else menu = MAIN; } } break; 8003734: f000 bd74 b.w 8004220 menu = MAIN; 8003738: 4b20 ldr r3, [pc, #128] ; (80037bc ) 800373a: 2200 movs r2, #0 800373c: 701a strb r2, [r3, #0] break; 800373e: f000 bd6f b.w 8004220 case MAIN: BSP_LCD_SetFont(&Font12); 8003742: 4821 ldr r0, [pc, #132] ; (80037c8 ) 8003744: f7fe fdac bl 80022a0 if(CNT_CHANNELS < 5) //todo 8003748: 4b2c ldr r3, [pc, #176] ; (80037fc ) 800374a: 681b ldr r3, [r3, #0] 800374c: 2b04 cmp r3, #4 800374e: f200 814e bhi.w 80039ee { 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 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(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(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(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_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_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 // 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 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 ) 8003806: f7fe fd0f bl 8002228 BSP_LCD_DisplayStringAt(4, 27 + 120*i, "ВХОД:", 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 ) 8003822: 2004 movs r0, #4 8003824: f7fe fdc6 bl 80023b4 BSP_LCD_DisplayStringAt(3, 46 + 120*i, "ФВЧ:", 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 ) 8003840: 2003 movs r0, #3 8003842: f7fe fdb7 bl 80023b4 BSP_LCD_DisplayStringAt(3, 65 + 120*i, "ФНЧ:", 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 ) 800385e: 2003 movs r0, #3 8003860: f7fe fda8 bl 80023b4 BSP_LCD_DisplayStringAt(4, 84 + 120*i, "Км:", 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 ) 800387c: 2004 movs r0, #4 800387e: f7fe fd99 bl 80023b4 BSP_LCD_DisplayStringAt(4, 103 + 120*i, "Кн:", 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 ) 800389a: 2004 movs r0, #4 800389c: f7fe fd8a bl 80023b4 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 } // 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 { LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 80038ba: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80038be: 489d ldr r0, [pc, #628] ; (8003b34 ) 80038c0: f7fe fcb2 bl 8002228 BSP_LCD_DisplayStringAt(164, 27 + 120*i, "ВХОД:", 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 ) 80038dc: 20a4 movs r0, #164 ; 0xa4 80038de: f7fe fd69 bl 80023b4 BSP_LCD_DisplayStringAt(163, 46 + 120*i, "ФВЧ:", 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 ) 80038fa: 20a3 movs r0, #163 ; 0xa3 80038fc: f7fe fd5a bl 80023b4 BSP_LCD_DisplayStringAt(163, 65 + 120*i, "ФНЧ:", 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 ) 8003918: 20a3 movs r0, #163 ; 0xa3 800391a: f7fe fd4b bl 80023b4 BSP_LCD_DisplayStringAt(164, 84 + 120*i, "Км:", 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 ) 8003936: 20a4 movs r0, #164 ; 0xa4 8003938: f7fe fd3c bl 80023b4 BSP_LCD_DisplayStringAt(164, 103 + 120*i, "Кн:", 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 ) 8003954: 20a4 movs r0, #164 ; 0xa4 8003956: f7fe fd2d bl 80023b4 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 } 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 BSP_LCD_DisplayStringAt(79, 8, "КАНАЛ 1", CENTER_MODE); 8003978: 2301 movs r3, #1 800397a: 4a74 ldr r2, [pc, #464] ; (8003b4c ) 800397c: 2108 movs r1, #8 800397e: 204f movs r0, #79 ; 0x4f 8003980: f7fe fd18 bl 80023b4 BSP_LCD_DisplayStringAt(79, 128, "КАНАЛ 2", CENTER_MODE); 8003984: 2301 movs r3, #1 8003986: 4a72 ldr r2, [pc, #456] ; (8003b50 ) 8003988: 2180 movs r1, #128 ; 0x80 800398a: 204f movs r0, #79 ; 0x4f 800398c: f7fe fd12 bl 80023b4 BSP_LCD_DisplayStringAt(239, 8, "КАНАЛ 3", CENTER_MODE); 8003990: 2301 movs r3, #1 8003992: 4a70 ldr r2, [pc, #448] ; (8003b54 ) 8003994: 2108 movs r1, #8 8003996: 20ef movs r0, #239 ; 0xef 8003998: f7fe fd0c bl 80023b4 BSP_LCD_DisplayStringAt(239, 128, "КАНАЛ 4", CENTER_MODE); 800399c: 2301 movs r3, #1 800399e: 4a6e ldr r2, [pc, #440] ; (8003b58 ) 80039a0: 2180 movs r1, #128 ; 0x80 80039a2: 20ef movs r0, #239 ; 0xef 80039a4: f7fe fd06 bl 80023b4 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 { 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 ) 80039be: 681b ldr r3, [r3, #0] 80039c0: 4013 ands r3, r2 80039c2: 2b00 cmp r3, #0 80039c4: d008 beq.n 80039d8 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 ) 80039ce: 681b ldr r3, [r3, #0] 80039d0: 4619 mov r1, r3 80039d2: 4610 mov r0, r2 80039d4: f000 ffca bl 800496c 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 if(MASK_CHANNELS & (1 << i)) { DrawChannel_8(i, blk); } } } break; 80039ea: f000 bc1a b.w 8004222 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 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(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(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(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(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(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(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(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_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_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 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 LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 8003a7a: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8003a7e: 482d ldr r0, [pc, #180] ; (8003b34 ) 8003a80: f7fe fbd2 bl 8002228 BSP_LCD_DisplayStringAt(0, 16 + 60*i, "ВХОД:", 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 ) 8003a9c: 2000 movs r0, #0 8003a9e: f7fe fc89 bl 80023b4 BSP_LCD_DisplayStringAt(0, 31 + 60*i, "ФВЧ:", 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 ) 8003aba: 2000 movs r0, #0 8003abc: f7fe fc7a bl 80023b4 BSP_LCD_DisplayStringAt(80, 31 + 60*i, "ФНЧ:", 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 ) 8003ad8: 2050 movs r0, #80 ; 0x50 8003ada: f7fe fc6b bl 80023b4 BSP_LCD_DisplayStringAt(0, 46 + 60*i, "Км:", 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 ) 8003af6: 2000 movs r0, #0 8003af8: f7fe fc5c bl 80023b4 BSP_LCD_DisplayStringAt(80, 46 + 60*i, "Кн:", 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 ) 8003b14: 2050 movs r0, #80 ; 0x50 8003b16: f7fe fc4d bl 80023b4 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 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 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 ) 8003b6a: f7fe fb5d bl 8002228 BSP_LCD_DisplayStringAt(160, 16 + 60*i, "ВХОД:", 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 ) 8003b86: 20a0 movs r0, #160 ; 0xa0 8003b88: f7fe fc14 bl 80023b4 BSP_LCD_DisplayStringAt(160, 31 + 60*i, "ФВЧ:", 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 ) 8003ba4: 20a0 movs r0, #160 ; 0xa0 8003ba6: f7fe fc05 bl 80023b4 BSP_LCD_DisplayStringAt(240, 31 + 60*i, "ФНЧ:", 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 ) 8003bc2: 20f0 movs r0, #240 ; 0xf0 8003bc4: f7fe fbf6 bl 80023b4 BSP_LCD_DisplayStringAt(160, 46 + 60*i, "Км:", 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 ) 8003be0: 20a0 movs r0, #160 ; 0xa0 8003be2: f7fe fbe7 bl 80023b4 BSP_LCD_DisplayStringAt(240, 46 + 60*i, "Кн:", 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 ) 8003bfe: 20f0 movs r0, #240 ; 0xf0 8003c00: f7fe fbd8 bl 80023b4 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 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 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 ) 8003c2c: 681b ldr r3, [r3, #0] 8003c2e: 4013 ands r3, r2 8003c30: 2b00 cmp r3, #0 8003c32: d008 beq.n 8003c46 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 ) 8003c3c: 681b ldr r3, [r3, #0] 8003c3e: 4619 mov r1, r3 8003c40: 4610 mov r0, r2 8003c42: f002 fa35 bl 80060b0 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 break; 8003c58: e2e3 b.n 8004222 case CALIBR_00: BSP_LCD_SetFont(&Font12); 8003c5a: 4894 ldr r0, [pc, #592] ; (8003eac ) 8003c5c: f7fe fb20 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 24, "Выберите канал для калибровки:", CENTER_MODE); 8003c6c: 2301 movs r3, #1 8003c6e: 4a90 ldr r2, [pc, #576] ; (8003eb0 ) 8003c70: 2118 movs r1, #24 8003c72: 20a0 movs r0, #160 ; 0xa0 8003c74: f7fe fb9e bl 80023b4 if(menupos != Ch1) 8003c78: 4b8e ldr r3, [pc, #568] ; (8003eb4 ) 8003c7a: 781b ldrb r3, [r3, #0] 8003c7c: b2db uxtb r3, r3 8003c7e: 2b00 cmp r3, #0 8003c80: d006 beq.n 8003c90 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 8003c8e: e005 b.n 8003c9c 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 BSP_LCD_DisplayStringAt(160, 48+64, "КАНАЛ 1", CENTER_MODE); 8003c9c: 2301 movs r3, #1 8003c9e: 4a86 ldr r2, [pc, #536] ; (8003eb8 ) 8003ca0: 2170 movs r1, #112 ; 0x70 8003ca2: 20a0 movs r0, #160 ; 0xa0 8003ca4: f7fe fb86 bl 80023b4 if(menupos != Ch2) 8003ca8: 4b82 ldr r3, [pc, #520] ; (8003eb4 ) 8003caa: 781b ldrb r3, [r3, #0] 8003cac: b2db uxtb r3, r3 8003cae: 2b01 cmp r3, #1 8003cb0: d006 beq.n 8003cc0 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 8003cbe: e005 b.n 8003ccc 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 BSP_LCD_DisplayStringAt(160, 72+64, "КАНАЛ 2", CENTER_MODE); 8003ccc: 2301 movs r3, #1 8003cce: 4a7b ldr r2, [pc, #492] ; (8003ebc ) 8003cd0: 2188 movs r1, #136 ; 0x88 8003cd2: 20a0 movs r0, #160 ; 0xa0 8003cd4: f7fe fb6e bl 80023b4 if(menupos != Ch3) 8003cd8: 4b76 ldr r3, [pc, #472] ; (8003eb4 ) 8003cda: 781b ldrb r3, [r3, #0] 8003cdc: b2db uxtb r3, r3 8003cde: 2b02 cmp r3, #2 8003ce0: d006 beq.n 8003cf0 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 8003cee: e005 b.n 8003cfc 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 BSP_LCD_DisplayStringAt(160, 96+64, "КАНАЛ 3", CENTER_MODE); 8003cfc: 2301 movs r3, #1 8003cfe: 4a70 ldr r2, [pc, #448] ; (8003ec0 ) 8003d00: 21a0 movs r1, #160 ; 0xa0 8003d02: 20a0 movs r0, #160 ; 0xa0 8003d04: f7fe fb56 bl 80023b4 if(menupos != Ch4) 8003d08: 4b6a ldr r3, [pc, #424] ; (8003eb4 ) 8003d0a: 781b ldrb r3, [r3, #0] 8003d0c: b2db uxtb r3, r3 8003d0e: 2b03 cmp r3, #3 8003d10: d006 beq.n 8003d20 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 8003d1e: e005 b.n 8003d2c 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 BSP_LCD_DisplayStringAt(160, 120+64, "КАНАЛ 4", CENTER_MODE); 8003d2c: 2301 movs r3, #1 8003d2e: 4a65 ldr r2, [pc, #404] ; (8003ec4 ) 8003d30: 21b8 movs r1, #184 ; 0xb8 8003d32: 20a0 movs r0, #160 ; 0xa0 8003d34: f7fe fb3e bl 80023b4 if(menupos != Ch5) 8003d38: 4b5e ldr r3, [pc, #376] ; (8003eb4 ) 8003d3a: 781b ldrb r3, [r3, #0] 8003d3c: b2db uxtb r3, r3 8003d3e: 2b04 cmp r3, #4 8003d40: d006 beq.n 8003d50 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 8003d4e: e005 b.n 8003d5c 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 BSP_LCD_DisplayStringAt(160, 144+64, "ВЫХОД", CENTER_MODE); 8003d5c: 2301 movs r3, #1 8003d5e: 4a5a ldr r2, [pc, #360] ; (8003ec8 ) 8003d60: 21d0 movs r1, #208 ; 0xd0 8003d62: 20a0 movs r0, #160 ; 0xa0 8003d64: f7fe fb26 bl 80023b4 break; 8003d68: e25b b.n 8004222 case CALIBR_0: // [CHARGE x1] + KU_1 BSP_LCD_SetFont(&Font12); 8003d6a: 4850 ldr r0, [pc, #320] ; (8003eac ) 8003d6c: f7fe fa98 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx0.1]:", CENTER_MODE); 8003d7c: 2301 movs r3, #1 8003d7e: 4a53 ldr r2, [pc, #332] ; (8003ecc ) 8003d80: 210a movs r1, #10 8003d82: 20a0 movs r0, #160 ; 0xa0 8003d84: f7fe fb16 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 5000мВ", CENTER_MODE); 8003d88: 2301 movs r3, #1 8003d8a: 4a51 ldr r2, [pc, #324] ; (8003ed0 ) 8003d8c: 2118 movs r1, #24 8003d8e: 20a0 movs r0, #160 ; 0xa0 8003d90: f7fe fb10 bl 80023b4 DrawButtons(); 8003d94: f003 f8b8 bl 8006f08 break; 8003d98: e243 b.n 8004222 case CALIBR_1: // CHARGE x1 + [KU_2] BSP_LCD_SetFont(&Font12); 8003d9a: 4844 ldr r0, [pc, #272] ; (8003eac ) 8003d9c: f7fe fa80 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx0.2]:", CENTER_MODE); 8003dac: 2301 movs r3, #1 8003dae: 4a49 ldr r2, [pc, #292] ; (8003ed4 ) 8003db0: 210a movs r1, #10 8003db2: 20a0 movs r0, #160 ; 0xa0 8003db4: f7fe fafe bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 5000мВ", CENTER_MODE); 8003db8: 2301 movs r3, #1 8003dba: 4a45 ldr r2, [pc, #276] ; (8003ed0 ) 8003dbc: 2118 movs r1, #24 8003dbe: 20a0 movs r0, #160 ; 0xa0 8003dc0: f7fe faf8 bl 80023b4 DrawButtons(); 8003dc4: f003 f8a0 bl 8006f08 break; 8003dc8: e22b b.n 8004222 case CALIBR_2: // CHARGE x1 + [KU_5] BSP_LCD_SetFont(&Font12); 8003dca: 4838 ldr r0, [pc, #224] ; (8003eac ) 8003dcc: f7fe fa68 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx0.5]:", CENTER_MODE); 8003ddc: 2301 movs r3, #1 8003dde: 4a3e ldr r2, [pc, #248] ; (8003ed8 ) 8003de0: 210a movs r1, #10 8003de2: 20a0 movs r0, #160 ; 0xa0 8003de4: f7fe fae6 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 5000мВ", CENTER_MODE); 8003de8: 2301 movs r3, #1 8003dea: 4a39 ldr r2, [pc, #228] ; (8003ed0 ) 8003dec: 2118 movs r1, #24 8003dee: 20a0 movs r0, #160 ; 0xa0 8003df0: f7fe fae0 bl 80023b4 DrawButtons(); 8003df4: f003 f888 bl 8006f08 break; 8003df8: e213 b.n 8004222 case CALIBR_3: // CHARGE x1 + [KU_10] BSP_LCD_SetFont(&Font12); 8003dfa: 482c ldr r0, [pc, #176] ; (8003eac ) 8003dfc: f7fe fa50 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx1]:", CENTER_MODE); 8003e0c: 2301 movs r3, #1 8003e0e: 4a33 ldr r2, [pc, #204] ; (8003edc ) 8003e10: 210a movs r1, #10 8003e12: 20a0 movs r0, #160 ; 0xa0 8003e14: f7fe face bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 5000мВ", CENTER_MODE); 8003e18: 2301 movs r3, #1 8003e1a: 4a2d ldr r2, [pc, #180] ; (8003ed0 ) 8003e1c: 2118 movs r1, #24 8003e1e: 20a0 movs r0, #160 ; 0xa0 8003e20: f7fe fac8 bl 80023b4 DrawButtons(); 8003e24: f003 f870 bl 8006f08 break; 8003e28: e1fb b.n 8004222 case CALIBR_4: // CHARGE x1 + [KU_x10] BSP_LCD_SetFont(&Font12); 8003e2a: 4820 ldr r0, [pc, #128] ; (8003eac ) 8003e2c: f7fe fa38 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx2]:", CENTER_MODE); 8003e3c: 2301 movs r3, #1 8003e3e: 4a28 ldr r2, [pc, #160] ; (8003ee0 ) 8003e40: 210a movs r1, #10 8003e42: 20a0 movs r0, #160 ; 0xa0 8003e44: f7fe fab6 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 2500мВ", CENTER_MODE); 8003e48: 2301 movs r3, #1 8003e4a: 4a26 ldr r2, [pc, #152] ; (8003ee4 ) 8003e4c: 2118 movs r1, #24 8003e4e: 20a0 movs r0, #160 ; 0xa0 8003e50: f7fe fab0 bl 80023b4 DrawButtons(); 8003e54: f003 f858 bl 8006f08 break; 8003e58: e1e3 b.n 8004222 case CALIBR_5: // [CHARGE x10] + KU_1 BSP_LCD_SetFont(&Font12); 8003e5a: 4814 ldr r0, [pc, #80] ; (8003eac ) 8003e5c: f7fe fa20 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx5]:", CENTER_MODE); 8003e6c: 2301 movs r3, #1 8003e6e: 4a1e ldr r2, [pc, #120] ; (8003ee8 ) 8003e70: 210a movs r1, #10 8003e72: 20a0 movs r0, #160 ; 0xa0 8003e74: f7fe fa9e bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 1000мВ", CENTER_MODE); 8003e78: 2301 movs r3, #1 8003e7a: 4a1c ldr r2, [pc, #112] ; (8003eec ) 8003e7c: 2118 movs r1, #24 8003e7e: 20a0 movs r0, #160 ; 0xa0 8003e80: f7fe fa98 bl 80023b4 DrawButtons(); 8003e84: f003 f840 bl 8006f08 break; 8003e88: e1cb b.n 8004222 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 ) 8003ef2: f7fe f9d5 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx10]:", CENTER_MODE); 8003f02: 2301 movs r3, #1 8003f04: 4acf ldr r2, [pc, #828] ; (8004244 ) 8003f06: 210a movs r1, #10 8003f08: 20a0 movs r0, #160 ; 0xa0 8003f0a: f7fe fa53 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 500мВ", CENTER_MODE); 8003f0e: 2301 movs r3, #1 8003f10: 4acd ldr r2, [pc, #820] ; (8004248 ) 8003f12: 2118 movs r1, #24 8003f14: 20a0 movs r0, #160 ; 0xa0 8003f16: f7fe fa4d bl 80023b4 DrawButtons(); 8003f1a: f002 fff5 bl 8006f08 break; 8003f1e: e180 b.n 8004222 case CALIBR_7: // [ICP x1] + KU_1 BSP_LCD_SetFont(&Font12); 8003f20: 48c7 ldr r0, [pc, #796] ; (8004240 ) 8003f22: f7fe f9bd bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx20]:", CENTER_MODE); 8003f32: 2301 movs r3, #1 8003f34: 4ac5 ldr r2, [pc, #788] ; (800424c ) 8003f36: 210a movs r1, #10 8003f38: 20a0 movs r0, #160 ; 0xa0 8003f3a: f7fe fa3b bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 250мВ", CENTER_MODE); 8003f3e: 2301 movs r3, #1 8003f40: 4ac3 ldr r2, [pc, #780] ; (8004250 ) 8003f42: 2118 movs r1, #24 8003f44: 20a0 movs r0, #160 ; 0xa0 8003f46: f7fe fa35 bl 80023b4 DrawButtons(); 8003f4a: f002 ffdd bl 8006f08 break; 8003f4e: e168 b.n 8004222 case CALIBR_8: // [ICP x10] + KU_1 BSP_LCD_SetFont(&Font12); 8003f50: 48bb ldr r0, [pc, #748] ; (8004240 ) 8003f52: f7fe f9a5 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx50]:", CENTER_MODE); 8003f62: 2301 movs r3, #1 8003f64: 4abb ldr r2, [pc, #748] ; (8004254 ) 8003f66: 210a movs r1, #10 8003f68: 20a0 movs r0, #160 ; 0xa0 8003f6a: f7fe fa23 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 100мВ", CENTER_MODE); 8003f6e: 2301 movs r3, #1 8003f70: 4ab9 ldr r2, [pc, #740] ; (8004258 ) 8003f72: 2118 movs r1, #24 8003f74: 20a0 movs r0, #160 ; 0xa0 8003f76: f7fe fa1d bl 80023b4 DrawButtons(); 8003f7a: f002 ffc5 bl 8006f08 break; 8003f7e: e150 b.n 8004222 case CALIBR_9: // [CHARGE x10 + KU_2 + KU_x10] BSP_LCD_SetFont(&Font12); 8003f80: 48af ldr r0, [pc, #700] ; (8004240 ) 8003f82: f7fe f98d bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx100]:", CENTER_MODE); 8003f92: 2301 movs r3, #1 8003f94: 4ab1 ldr r2, [pc, #708] ; (800425c ) 8003f96: 210a movs r1, #10 8003f98: 20a0 movs r0, #160 ; 0xa0 8003f9a: f7fe fa0b bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 50мВ", CENTER_MODE); 8003f9e: 2301 movs r3, #1 8003fa0: 4aaf ldr r2, [pc, #700] ; (8004260 ) 8003fa2: 2118 movs r1, #24 8003fa4: 20a0 movs r0, #160 ; 0xa0 8003fa6: f7fe fa05 bl 80023b4 DrawButtons(); 8003faa: f002 ffad bl 8006f08 break; 8003fae: e138 b.n 8004222 case CALIBR_10: // [CHARGE x10 + KU_5 + KU_x10] BSP_LCD_SetFont(&Font12); 8003fb0: 48a3 ldr r0, [pc, #652] ; (8004240 ) 8003fb2: f7fe f975 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx200]:", CENTER_MODE); 8003fc2: 2301 movs r3, #1 8003fc4: 4aa7 ldr r2, [pc, #668] ; (8004264 ) 8003fc6: 210a movs r1, #10 8003fc8: 20a0 movs r0, #160 ; 0xa0 8003fca: f7fe f9f3 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 25мВ", CENTER_MODE); 8003fce: 2301 movs r3, #1 8003fd0: 4aa5 ldr r2, [pc, #660] ; (8004268 ) 8003fd2: 2118 movs r1, #24 8003fd4: 20a0 movs r0, #160 ; 0xa0 8003fd6: f7fe f9ed bl 80023b4 DrawButtons(); 8003fda: f002 ff95 bl 8006f08 break; 8003fde: e120 b.n 8004222 case CALIBR_11: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 8003fe0: 4897 ldr r0, [pc, #604] ; (8004240 ) 8003fe2: f7fe f95d bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx500]:", CENTER_MODE); 8003ff2: 2301 movs r3, #1 8003ff4: 4a9d ldr r2, [pc, #628] ; (800426c ) 8003ff6: 210a movs r1, #10 8003ff8: 20a0 movs r0, #160 ; 0xa0 8003ffa: f7fe f9db bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 10мВ", CENTER_MODE); 8003ffe: 2301 movs r3, #1 8004000: 4a9b ldr r2, [pc, #620] ; (8004270 ) 8004002: 2118 movs r1, #24 8004004: 20a0 movs r0, #160 ; 0xa0 8004006: f7fe f9d5 bl 80023b4 DrawButtons(); 800400a: f002 ff7d bl 8006f08 break; 800400e: e108 b.n 8004222 case CALIBR_12: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 8004010: 488b ldr r0, [pc, #556] ; (8004240 ) 8004012: f7fe f945 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [ЗАРЯДx1000]:", CENTER_MODE); 8004022: 2301 movs r3, #1 8004024: 4a93 ldr r2, [pc, #588] ; (8004274 ) 8004026: 210a movs r1, #10 8004028: 20a0 movs r0, #160 ; 0xa0 800402a: f7fe f9c3 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 5мВ", CENTER_MODE); 800402e: 2301 movs r3, #1 8004030: 4a91 ldr r2, [pc, #580] ; (8004278 ) 8004032: 2118 movs r1, #24 8004034: 20a0 movs r0, #160 ; 0xa0 8004036: f7fe f9bd bl 80023b4 DrawButtons(); 800403a: f002 ff65 bl 8006f08 break; 800403e: e0f0 b.n 8004222 case CALIBR_13: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 8004040: 487f ldr r0, [pc, #508] ; (8004240 ) 8004042: f7fe f92d bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx1]:", CENTER_MODE); 8004052: 2301 movs r3, #1 8004054: 4a89 ldr r2, [pc, #548] ; (800427c ) 8004056: 210a movs r1, #10 8004058: 20a0 movs r0, #160 ; 0xa0 800405a: f7fe f9ab bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 5000мВ", CENTER_MODE); 800405e: 2301 movs r3, #1 8004060: 4a87 ldr r2, [pc, #540] ; (8004280 ) 8004062: 2118 movs r1, #24 8004064: 20a0 movs r0, #160 ; 0xa0 8004066: f7fe f9a5 bl 80023b4 DrawButtons(); 800406a: f002 ff4d bl 8006f08 break; 800406e: e0d8 b.n 8004222 case CALIBR_14: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 8004070: 4873 ldr r0, [pc, #460] ; (8004240 ) 8004072: f7fe f915 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx2]:", CENTER_MODE); 8004082: 2301 movs r3, #1 8004084: 4a7f ldr r2, [pc, #508] ; (8004284 ) 8004086: 210a movs r1, #10 8004088: 20a0 movs r0, #160 ; 0xa0 800408a: f7fe f993 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 2500мВ", CENTER_MODE); 800408e: 2301 movs r3, #1 8004090: 4a7d ldr r2, [pc, #500] ; (8004288 ) 8004092: 2118 movs r1, #24 8004094: 20a0 movs r0, #160 ; 0xa0 8004096: f7fe f98d bl 80023b4 DrawButtons(); 800409a: f002 ff35 bl 8006f08 break; 800409e: e0c0 b.n 8004222 case CALIBR_15: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 80040a0: 4867 ldr r0, [pc, #412] ; (8004240 ) 80040a2: f7fe f8fd bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx5]:", CENTER_MODE); 80040b2: 2301 movs r3, #1 80040b4: 4a75 ldr r2, [pc, #468] ; (800428c ) 80040b6: 210a movs r1, #10 80040b8: 20a0 movs r0, #160 ; 0xa0 80040ba: f7fe f97b bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 1000мВ", CENTER_MODE); 80040be: 2301 movs r3, #1 80040c0: 4a73 ldr r2, [pc, #460] ; (8004290 ) 80040c2: 2118 movs r1, #24 80040c4: 20a0 movs r0, #160 ; 0xa0 80040c6: f7fe f975 bl 80023b4 DrawButtons(); 80040ca: f002 ff1d bl 8006f08 break; 80040ce: e0a8 b.n 8004222 case CALIBR_16: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 80040d0: 485b ldr r0, [pc, #364] ; (8004240 ) 80040d2: f7fe f8e5 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx10]:", CENTER_MODE); 80040e2: 2301 movs r3, #1 80040e4: 4a6b ldr r2, [pc, #428] ; (8004294 ) 80040e6: 210a movs r1, #10 80040e8: 20a0 movs r0, #160 ; 0xa0 80040ea: f7fe f963 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 500мВ", CENTER_MODE); 80040ee: 2301 movs r3, #1 80040f0: 4a55 ldr r2, [pc, #340] ; (8004248 ) 80040f2: 2118 movs r1, #24 80040f4: 20a0 movs r0, #160 ; 0xa0 80040f6: f7fe f95d bl 80023b4 DrawButtons(); 80040fa: f002 ff05 bl 8006f08 break; 80040fe: e090 b.n 8004222 case CALIBR_17: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 8004100: 484f ldr r0, [pc, #316] ; (8004240 ) 8004102: f7fe f8cd bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx20]:", CENTER_MODE); 8004112: 2301 movs r3, #1 8004114: 4a60 ldr r2, [pc, #384] ; (8004298 ) 8004116: 210a movs r1, #10 8004118: 20a0 movs r0, #160 ; 0xa0 800411a: f7fe f94b bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 250мВ", CENTER_MODE); 800411e: 2301 movs r3, #1 8004120: 4a4b ldr r2, [pc, #300] ; (8004250 ) 8004122: 2118 movs r1, #24 8004124: 20a0 movs r0, #160 ; 0xa0 8004126: f7fe f945 bl 80023b4 DrawButtons(); 800412a: f002 feed bl 8006f08 break; 800412e: e078 b.n 8004222 case CALIBR_18: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 8004130: 4843 ldr r0, [pc, #268] ; (8004240 ) 8004132: f7fe f8b5 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx50]:", CENTER_MODE); 8004142: 2301 movs r3, #1 8004144: 4a55 ldr r2, [pc, #340] ; (800429c ) 8004146: 210a movs r1, #10 8004148: 20a0 movs r0, #160 ; 0xa0 800414a: f7fe f933 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 100мВ", CENTER_MODE); 800414e: 2301 movs r3, #1 8004150: 4a41 ldr r2, [pc, #260] ; (8004258 ) 8004152: 2118 movs r1, #24 8004154: 20a0 movs r0, #160 ; 0xa0 8004156: f7fe f92d bl 80023b4 DrawButtons(); 800415a: f002 fed5 bl 8006f08 break; 800415e: e060 b.n 8004222 case CALIBR_19: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 8004160: 4837 ldr r0, [pc, #220] ; (8004240 ) 8004162: f7fe f89d bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx100]:", CENTER_MODE); 8004172: 2301 movs r3, #1 8004174: 4a4a ldr r2, [pc, #296] ; (80042a0 ) 8004176: 210a movs r1, #10 8004178: 20a0 movs r0, #160 ; 0xa0 800417a: f7fe f91b bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 50мВ", CENTER_MODE); 800417e: 2301 movs r3, #1 8004180: 4a37 ldr r2, [pc, #220] ; (8004260 ) 8004182: 2118 movs r1, #24 8004184: 20a0 movs r0, #160 ; 0xa0 8004186: f7fe f915 bl 80023b4 DrawButtons(); 800418a: f002 febd bl 8006f08 break; 800418e: e048 b.n 8004222 case CALIBR_20: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 8004190: 482b ldr r0, [pc, #172] ; (8004240 ) 8004192: f7fe f885 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx200]:", CENTER_MODE); 80041a2: 2301 movs r3, #1 80041a4: 4a3f ldr r2, [pc, #252] ; (80042a4 ) 80041a6: 210a movs r1, #10 80041a8: 20a0 movs r0, #160 ; 0xa0 80041aa: f7fe f903 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 25мВ", CENTER_MODE); 80041ae: 2301 movs r3, #1 80041b0: 4a2d ldr r2, [pc, #180] ; (8004268 ) 80041b2: 2118 movs r1, #24 80041b4: 20a0 movs r0, #160 ; 0xa0 80041b6: f7fe f8fd bl 80023b4 DrawButtons(); 80041ba: f002 fea5 bl 8006f08 break; 80041be: e030 b.n 8004222 case CALIBR_21: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 80041c0: 481f ldr r0, [pc, #124] ; (8004240 ) 80041c2: f7fe f86d bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx500]:", CENTER_MODE); 80041d2: 2301 movs r3, #1 80041d4: 4a34 ldr r2, [pc, #208] ; (80042a8 ) 80041d6: 210a movs r1, #10 80041d8: 20a0 movs r0, #160 ; 0xa0 80041da: f7fe f8eb bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 10мВ", CENTER_MODE); 80041de: 2301 movs r3, #1 80041e0: 4a23 ldr r2, [pc, #140] ; (8004270 ) 80041e2: 2118 movs r1, #24 80041e4: 20a0 movs r0, #160 ; 0xa0 80041e6: f7fe f8e5 bl 80023b4 DrawButtons(); 80041ea: f002 fe8d bl 8006f08 break; 80041ee: e018 b.n 8004222 case CALIBR_22: // [CHARGE x10 + KU_10 + KU_x10] BSP_LCD_SetFont(&Font12); 80041f0: 4813 ldr r0, [pc, #76] ; (8004240 ) 80041f2: f7fe f855 bl 80022a0 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 BSP_LCD_DisplayStringAt(160, 10, "Коррeкция [IEPEx1000]:", CENTER_MODE); 8004202: 2301 movs r3, #1 8004204: 4a29 ldr r2, [pc, #164] ; (80042ac ) 8004206: 210a movs r1, #10 8004208: 20a0 movs r0, #160 ; 0xa0 800420a: f7fe f8d3 bl 80023b4 BSP_LCD_DisplayStringAt(160, 24, "Установить Uin = 5мВ", CENTER_MODE); 800420e: 2301 movs r3, #1 8004210: 4a19 ldr r2, [pc, #100] ; (8004278 ) 8004212: 2118 movs r1, #24 8004214: 20a0 movs r0, #160 ; 0xa0 8004216: f7fe f8cd bl 80023b4 DrawButtons(); 800421a: f002 fe75 bl 8006f08 break; 800421e: e000 b.n 8004222 break; 8004220: bf00 nop Redrawing = false; 8004222: 4b23 ldr r3, [pc, #140] ; (80042b0 ) 8004224: 2200 movs r2, #0 8004226: 701a strb r2, [r3, #0] RefreshScreen = true; 8004228: 4b22 ldr r3, [pc, #136] ; (80042b4 ) 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 ) 8004232: f005 fc27 bl 8009a84 //************************************************************************************************************** //************************************************************************************************************** } 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 : 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 ) 80042ce: 681b ldr r3, [r3, #0] 80042d0: 2b07 cmp r3, #7 80042d2: f200 8311 bhi.w 80048f8 80042d6: a201 add r2, pc, #4 ; (adr r2, 80042dc ) 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 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 LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 8004318: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800431c: 4885 ldr r0, [pc, #532] ; (8004534 ) 800431e: f7fd ff83 bl 8002228 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 LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 8004336: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800433a: 487f ldr r0, [pc, #508] ; (8004538 ) 800433c: f7fd ff74 bl 8002228 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 LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK); 8004350: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004354: 4879 ldr r0, [pc, #484] ; (800453c ) 8004356: f7fd ff67 bl 8002228 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(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(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(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(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 break; 80043b6: e29f b.n 80048f8 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 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 LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 80043d8: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80043dc: 4855 ldr r0, [pc, #340] ; (8004534 ) 80043de: f7fd ff23 bl 8002228 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 LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 80043f2: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80043f6: 4850 ldr r0, [pc, #320] ; (8004538 ) 80043f8: f7fd ff16 bl 8002228 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 LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK); 8004410: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004414: 4849 ldr r0, [pc, #292] ; (800453c ) 8004416: f7fd ff07 bl 8002228 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(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(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(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(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 break; 8004472: e241 b.n 80048f8 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 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 LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 8004490: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004494: 4827 ldr r0, [pc, #156] ; (8004534 ) 8004496: f7fd fec7 bl 8002228 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 LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 80044ae: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80044b2: 4821 ldr r0, [pc, #132] ; (8004538 ) 80044b4: f7fd feb8 bl 8002228 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 LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK); 80044c8: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80044cc: 481b ldr r0, [pc, #108] ; (800453c ) 80044ce: f7fd feab bl 8002228 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(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(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(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(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 break; 800452e: e1e3 b.n 80048f8 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 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 LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 8004560: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004564: 48b2 ldr r0, [pc, #712] ; (8004830 ) 8004566: f7fd fe5f bl 8002228 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 LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 800457a: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800457e: 48ad ldr r0, [pc, #692] ; (8004834 ) 8004580: f7fd fe52 bl 8002228 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 LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK); 8004598: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800459c: 48a6 ldr r0, [pc, #664] ; (8004838 ) 800459e: f7fd fe43 bl 8002228 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(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(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(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(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 break; 80045fa: e17d b.n 80048f8 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 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 LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 8004618: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800461c: 4884 ldr r0, [pc, #528] ; (8004830 ) 800461e: f7fd fe03 bl 8002228 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 LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 8004636: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800463a: 487e ldr r0, [pc, #504] ; (8004834 ) 800463c: f7fd fdf4 bl 8002228 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 LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK); 8004650: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004654: 4878 ldr r0, [pc, #480] ; (8004838 ) 8004656: f7fd fde7 bl 8002228 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(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(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(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(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 break; 80046b6: e11f b.n 80048f8 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 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 LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 80046d8: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80046dc: 4854 ldr r0, [pc, #336] ; (8004830 ) 80046de: f7fd fda3 bl 8002228 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 LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 80046f2: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80046f6: 484f ldr r0, [pc, #316] ; (8004834 ) 80046f8: f7fd fd96 bl 8002228 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 LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK); 8004710: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004714: 4848 ldr r0, [pc, #288] ; (8004838 ) 8004716: f7fd fd87 bl 8002228 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(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(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(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(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 break; 8004772: e0c1 b.n 80048f8 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 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 LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 8004790: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004794: 4826 ldr r0, [pc, #152] ; (8004830 ) 8004796: f7fd fd47 bl 8002228 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 LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 80047ae: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80047b2: 4820 ldr r0, [pc, #128] ; (8004834 ) 80047b4: f7fd fd38 bl 8002228 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 LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK); 80047c8: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80047cc: 481a ldr r0, [pc, #104] ; (8004838 ) 80047ce: f7fd fd2b bl 8002228 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(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(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(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(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 break; 800482e: e063 b.n 80048f8 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 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 LCD_SetColors(LCD_COLOR_LIGHTGRAY, LCD_COLOR_BLACK); 800485c: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004860: 482d ldr r0, [pc, #180] ; (8004918 ) 8004862: f7fd fce1 bl 8002228 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 LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 8004876: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800487a: 4828 ldr r0, [pc, #160] ; (800491c ) 800487c: f7fd fcd4 bl 8002228 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 LCD_SetColors(LCD_COLOR_DARKGRAY, LCD_COLOR_BLACK); 8004894: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004898: 4821 ldr r0, [pc, #132] ; (8004920 ) 800489a: f7fd fcc5 bl 8002228 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(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(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(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(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 break; 80048f6: bf00 nop } rotate++; 80048f8: 4b0a ldr r3, [pc, #40] ; (8004924 ) 80048fa: 681b ldr r3, [r3, #0] 80048fc: 3301 adds r3, #1 80048fe: 4a09 ldr r2, [pc, #36] ; (8004924 ) 8004900: 6013 str r3, [r2, #0] if(rotate >= 8) 8004902: 4b08 ldr r3, [pc, #32] ; (8004924 ) 8004904: 681b ldr r3, [r3, #0] 8004906: 2b07 cmp r3, #7 8004908: d902 bls.n 8004910 rotate = 0; 800490a: 4b06 ldr r3, [pc, #24] ; (8004924 ) 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 : 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 ) 800493a: 781b ldrb r3, [r3, #0] 800493c: 3301 adds r3, #1 800493e: b2da uxtb r2, r3 8004940: 4b09 ldr r3, [pc, #36] ; (8004968 ) 8004942: 701a strb r2, [r3, #0] if(spinner >= 10) 8004944: 4b08 ldr r3, [pc, #32] ; (8004968 ) 8004946: 781b ldrb r3, [r3, #0] 8004948: 2b09 cmp r3, #9 800494a: d902 bls.n 8004952 spinner = 0; 800494c: 4b06 ldr r3, [pc, #24] ; (8004968 ) 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 //} } 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 : } 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 ) 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 ) 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 ) 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 ) 80049c4: 781b ldrb r3, [r3, #0] 80049c6: b2db uxtb r3, r3 80049c8: 2b00 cmp r3, #0 80049ca: f040 815d bne.w 8004c88 { if(ACTIVE_CHANNEL == ch) 80049ce: 79fa ldrb r2, [r7, #7] 80049d0: 4b9c ldr r3, [pc, #624] ; (8004c44 ) 80049d2: 681b ldr r3, [r3, #0] 80049d4: 429a cmp r2, r3 80049d6: f040 80ae bne.w 8004b36 { 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 if(focused) 80049e6: 4b98 ldr r3, [pc, #608] ; (8004c48 ) 80049e8: 781b ldrb r3, [r3, #0] 80049ea: b2db uxtb r3, r3 80049ec: 2b00 cmp r3, #0 80049ee: d01f beq.n 8004a30 { if(blk) 80049f0: 683b ldr r3, [r7, #0] 80049f2: 2b00 cmp r3, #0 80049f4: d038 beq.n 8004a68 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 ) 80049fa: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80049fe: 79fb ldrb r3, [r7, #7] 8004a00: 4a93 ldr r2, [pc, #588] ; (8004c50 ) 8004a02: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004a06: 4b8d ldr r3, [pc, #564] ; (8004c3c ) 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 ) 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 ) 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 8004a2e: e01b b.n 8004a68 } 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 ) 8004a34: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004a38: 79fb ldrb r3, [r7, #7] 8004a3a: 4a85 ldr r2, [pc, #532] ; (8004c50 ) 8004a3c: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004a40: 4b7e ldr r3, [pc, #504] ; (8004c3c ) 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 ) 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 ) 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 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8004a68: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004a6c: 487a ldr r0, [pc, #488] ; (8004c58 ) 8004a6e: f7fd fbdb bl 8002228 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 ) 8004a76: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004a7a: 79fb ldrb r3, [r7, #7] 8004a7c: 4a78 ldr r2, [pc, #480] ; (8004c60 ) 8004a7e: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8004a82: 4b6e ldr r3, [pc, #440] ; (8004c3c ) 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 ) 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 ) 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(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 ) 8004ab6: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004aba: 79fb ldrb r3, [r7, #7] 8004abc: 4a6b ldr r2, [pc, #428] ; (8004c6c ) 8004abe: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004ac2: 4b5e ldr r3, [pc, #376] ; (8004c3c ) 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 ) 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 ) 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(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 ) 8004af0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004af4: 79fb ldrb r3, [r7, #7] 8004af6: 4a60 ldr r2, [pc, #384] ; (8004c78 ) 8004af8: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004afc: 79fb ldrb r3, [r7, #7] 8004afe: 4a4f ldr r2, [pc, #316] ; (8004c3c ) 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 ) 8004b0e: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8004b12: 2303 movs r3, #3 8004b14: f7fd fc4e bl 80023b4 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 ) 8004b1c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004b20: 79fb ldrb r3, [r7, #7] 8004b22: 4a58 ldr r2, [pc, #352] ; (8004c84 ) 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(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 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8004b36: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004b3a: 4847 ldr r0, [pc, #284] ; (8004c58 ) 8004b3c: f7fd fb74 bl 8002228 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 ) 8004b44: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004b48: 79fb ldrb r3, [r7, #7] 8004b4a: 4a41 ldr r2, [pc, #260] ; (8004c50 ) 8004b4c: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004b50: 4b3a ldr r3, [pc, #232] ; (8004c3c ) 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 ) 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 ) 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(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 ) 8004b7c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004b80: 79fb ldrb r3, [r7, #7] 8004b82: 4a37 ldr r2, [pc, #220] ; (8004c60 ) 8004b84: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8004b88: 4b2c ldr r3, [pc, #176] ; (8004c3c ) 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 ) 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 ) 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(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 ) 8004bbc: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004bc0: 79fb ldrb r3, [r7, #7] 8004bc2: 4a2a ldr r2, [pc, #168] ; (8004c6c ) 8004bc4: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004bc8: 4b1c ldr r3, [pc, #112] ; (8004c3c ) 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 ) 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 ) 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(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 ) 8004bf6: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004bfa: 79fb ldrb r3, [r7, #7] 8004bfc: 4a1e ldr r2, [pc, #120] ; (8004c78 ) 8004bfe: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004c02: 79fb ldrb r3, [r7, #7] 8004c04: 4a0d ldr r2, [pc, #52] ; (8004c3c ) 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 ) 8004c14: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8004c18: 2303 movs r3, #3 8004c1a: f7fd fbcb bl 80023b4 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 ) 8004c22: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004c26: 79fb ldrb r3, [r7, #7] 8004c28: 4a16 ldr r2, [pc, #88] ; (8004c84 ) 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 } 8004c38: f001 ba0d b.w 8006056 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 ) 8004c8a: 781b ldrb r3, [r3, #0] 8004c8c: b2db uxtb r3, r3 8004c8e: 2b01 cmp r3, #1 8004c90: f040 8162 bne.w 8004f58 if(ACTIVE_CHANNEL == ch) 8004c94: 79fa ldrb r2, [r7, #7] 8004c96: 4b9e ldr r3, [pc, #632] ; (8004f10 ) 8004c98: 681b ldr r3, [r3, #0] 8004c9a: 429a cmp r2, r3 8004c9c: f040 80b2 bne.w 8004e04 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 if(focused) 8004cac: 4b99 ldr r3, [pc, #612] ; (8004f14 ) 8004cae: 781b ldrb r3, [r3, #0] 8004cb0: b2db uxtb r3, r3 8004cb2: 2b00 cmp r3, #0 8004cb4: d023 beq.n 8004cfe if(blk) 8004cb6: 683b ldr r3, [r7, #0] 8004cb8: 2b00 cmp r3, #0 8004cba: d040 beq.n 8004d3e 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 ) 8004cc0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004cc4: 79fb ldrb r3, [r7, #7] 8004cc6: 4a95 ldr r2, [pc, #596] ; (8004f1c ) 8004cc8: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8004ccc: 4b94 ldr r3, [pc, #592] ; (8004f20 ) 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 ) 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 ) 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 8004cfc: e01f b.n 8004d3e 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 ) 8004d02: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004d06: 79fb ldrb r3, [r7, #7] 8004d08: 4a84 ldr r2, [pc, #528] ; (8004f1c ) 8004d0a: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8004d0e: 4b84 ldr r3, [pc, #528] ; (8004f20 ) 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 ) 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 ) 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 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8004d3e: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004d42: 4879 ldr r0, [pc, #484] ; (8004f28 ) 8004d44: f7fd fa70 bl 8002228 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 ) 8004d4c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004d50: 79fb ldrb r3, [r7, #7] 8004d52: 4a77 ldr r2, [pc, #476] ; (8004f30 ) 8004d54: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004d58: 4b71 ldr r3, [pc, #452] ; (8004f20 ) 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 ) 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 ) 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(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 ) 8004d84: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004d88: 79fb ldrb r3, [r7, #7] 8004d8a: 4a6c ldr r2, [pc, #432] ; (8004f3c ) 8004d8c: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004d90: 4b63 ldr r3, [pc, #396] ; (8004f20 ) 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 ) 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 ) 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(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 ) 8004dbe: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004dc2: 79fb ldrb r3, [r7, #7] 8004dc4: 4a60 ldr r2, [pc, #384] ; (8004f48 ) 8004dc6: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004dca: 79fb ldrb r3, [r7, #7] 8004dcc: 4a54 ldr r2, [pc, #336] ; (8004f20 ) 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 ) 8004ddc: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8004de0: 2303 movs r3, #3 8004de2: f7fd fae7 bl 80023b4 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 ) 8004dea: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004dee: 79fb ldrb r3, [r7, #7] 8004df0: 4a58 ldr r2, [pc, #352] ; (8004f54 ) 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 } 8004e00: f001 b929 b.w 8006056 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8004e04: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8004e08: 4847 ldr r0, [pc, #284] ; (8004f28 ) 8004e0a: f7fd fa0d bl 8002228 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 ) 8004e12: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004e16: 79fb ldrb r3, [r7, #7] 8004e18: 4a45 ldr r2, [pc, #276] ; (8004f30 ) 8004e1a: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004e1e: 4b40 ldr r3, [pc, #256] ; (8004f20 ) 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 ) 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 ) 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(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 ) 8004e4a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004e4e: 79fb ldrb r3, [r7, #7] 8004e50: 4a32 ldr r2, [pc, #200] ; (8004f1c ) 8004e52: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8004e56: 4b32 ldr r3, [pc, #200] ; (8004f20 ) 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 ) 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 ) 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(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 ) 8004e8a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004e8e: 79fb ldrb r3, [r7, #7] 8004e90: 4a2a ldr r2, [pc, #168] ; (8004f3c ) 8004e92: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004e96: 4b22 ldr r3, [pc, #136] ; (8004f20 ) 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 ) 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 ) 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(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 ) 8004ec4: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004ec8: 79fb ldrb r3, [r7, #7] 8004eca: 4a1f ldr r2, [pc, #124] ; (8004f48 ) 8004ecc: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004ed0: 79fb ldrb r3, [r7, #7] 8004ed2: 4a13 ldr r2, [pc, #76] ; (8004f20 ) 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 ) 8004ee2: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8004ee6: 2303 movs r3, #3 8004ee8: f7fd fa64 bl 80023b4 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 ) 8004ef0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004ef4: 79fb ldrb r3, [r7, #7] 8004ef6: 4a17 ldr r2, [pc, #92] ; (8004f54 ) 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 } 8004f06: f001 b8a6 b.w 8006056 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 ) 8004f5a: 781b ldrb r3, [r3, #0] 8004f5c: b2db uxtb r3, r3 8004f5e: 2b02 cmp r3, #2 8004f60: f040 8138 bne.w 80051d4 if(ACTIVE_CHANNEL == ch) 8004f64: 79fa ldrb r2, [r7, #7] 8004f66: 4bb5 ldr r3, [pc, #724] ; (800523c ) 8004f68: 681b ldr r3, [r3, #0] 8004f6a: 429a cmp r2, r3 8004f6c: f040 80af bne.w 80050ce 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 if(focused) 8004f7c: 4bb0 ldr r3, [pc, #704] ; (8005240 ) 8004f7e: 781b ldrb r3, [r3, #0] 8004f80: b2db uxtb r3, r3 8004f82: 2b00 cmp r3, #0 8004f84: d020 beq.n 8004fc8 if(blk) 8004f86: 683b ldr r3, [r7, #0] 8004f88: 2b00 cmp r3, #0 8004f8a: d03a beq.n 8005002 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 ) 8004f90: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004f94: 79fb ldrb r3, [r7, #7] 8004f96: 4aac ldr r2, [pc, #688] ; (8005248 ) 8004f98: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004f9c: 4bab ldr r3, [pc, #684] ; (800524c ) 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 ) 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 ) 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 8004fc6: e01c b.n 8005002 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 ) 8004fcc: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8004fd0: 79fb ldrb r3, [r7, #7] 8004fd2: 4a9d ldr r2, [pc, #628] ; (8005248 ) 8004fd4: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8004fd8: 4b9c ldr r3, [pc, #624] ; (800524c ) 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 ) 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 ) 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 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8005002: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8005006: 4893 ldr r0, [pc, #588] ; (8005254 ) 8005008: f7fd f90e bl 8002228 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 ) 8005010: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005014: 79fb ldrb r3, [r7, #7] 8005016: 4a91 ldr r2, [pc, #580] ; (800525c ) 8005018: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800501c: 4b8b ldr r3, [pc, #556] ; (800524c ) 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 ) 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 ) 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(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 ) 8005048: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800504c: 79fb ldrb r3, [r7, #7] 800504e: 4a86 ldr r2, [pc, #536] ; (8005268 ) 8005050: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005054: 4b7d ldr r3, [pc, #500] ; (800524c ) 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 ) 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 ) 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(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 ) 8005088: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800508c: 79fb ldrb r3, [r7, #7] 800508e: 4a79 ldr r2, [pc, #484] ; (8005274 ) 8005090: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005094: 79fb ldrb r3, [r7, #7] 8005096: 4a6d ldr r2, [pc, #436] ; (800524c ) 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 ) 80050a6: f853 2022 ldr.w r2, [r3, r2, lsl #2] 80050aa: 2303 movs r3, #3 80050ac: f7fd f982 bl 80023b4 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 ) 80050b4: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80050b8: 79fb ldrb r3, [r7, #7] 80050ba: 4a71 ldr r2, [pc, #452] ; (8005280 ) 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 } 80050ca: f000 bfc4 b.w 8006056 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 80050ce: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80050d2: 4860 ldr r0, [pc, #384] ; (8005254 ) 80050d4: f7fd f8a8 bl 8002228 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 ) 80050dc: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80050e0: 79fb ldrb r3, [r7, #7] 80050e2: 4a5e ldr r2, [pc, #376] ; (800525c ) 80050e4: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80050e8: 4b58 ldr r3, [pc, #352] ; (800524c ) 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 ) 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 ) 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(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 ) 8005114: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005118: 79fb ldrb r3, [r7, #7] 800511a: 4a53 ldr r2, [pc, #332] ; (8005268 ) 800511c: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005120: 4b4a ldr r3, [pc, #296] ; (800524c ) 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 ) 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 ) 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(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 ) 8005154: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005158: 79fb ldrb r3, [r7, #7] 800515a: 4a3b ldr r2, [pc, #236] ; (8005248 ) 800515c: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005160: 4b3a ldr r3, [pc, #232] ; (800524c ) 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 ) 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 ) 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(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 ) 800518e: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005192: 79fb ldrb r3, [r7, #7] 8005194: 4a37 ldr r2, [pc, #220] ; (8005274 ) 8005196: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800519a: 79fb ldrb r3, [r7, #7] 800519c: 4a2b ldr r2, [pc, #172] ; (800524c ) 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 ) 80051ac: f853 2022 ldr.w r2, [r3, r2, lsl #2] 80051b0: 2303 movs r3, #3 80051b2: f7fd f8ff bl 80023b4 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 ) 80051ba: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80051be: 79fb ldrb r3, [r7, #7] 80051c0: 4a2f ldr r2, [pc, #188] ; (8005280 ) 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 } 80051d0: f000 bf41 b.w 8006056 if(menupos == Km) 80051d4: 4b18 ldr r3, [pc, #96] ; (8005238 ) 80051d6: 781b ldrb r3, [r3, #0] 80051d8: b2db uxtb r3, r3 80051da: 2b03 cmp r3, #3 80051dc: f040 8158 bne.w 8005490 if(ACTIVE_CHANNEL == ch) 80051e0: 79fa ldrb r2, [r7, #7] 80051e2: 4b16 ldr r3, [pc, #88] ; (800523c ) 80051e4: 681b ldr r3, [r3, #0] 80051e6: 429a cmp r2, r3 80051e8: f040 80cf bne.w 800538a 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 if(focused) 80051f8: 4b11 ldr r3, [pc, #68] ; (8005240 ) 80051fa: 781b ldrb r3, [r3, #0] 80051fc: b2db uxtb r3, r3 80051fe: 2b00 cmp r3, #0 8005200: d040 beq.n 8005284 if(blk) 8005202: 683b ldr r3, [r7, #0] 8005204: 2b00 cmp r3, #0 8005206: d053 beq.n 80052b0 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 ) 800520c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005210: 79fb ldrb r3, [r7, #7] 8005212: 4a18 ldr r2, [pc, #96] ; (8005274 ) 8005214: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005218: 79fb ldrb r3, [r7, #7] 800521a: 4a0c ldr r2, [pc, #48] ; (800524c ) 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 ) 800522a: f853 2022 ldr.w r2, [r3, r2, lsl #2] 800522e: 2303 movs r3, #3 8005230: f7fd f8c0 bl 80023b4 8005234: e03c b.n 80052b0 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 ) 8005288: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800528c: 79fb ldrb r3, [r7, #7] 800528e: 4a95 ldr r2, [pc, #596] ; (80054e4 ) 8005290: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005294: 79fb ldrb r3, [r7, #7] 8005296: 4a94 ldr r2, [pc, #592] ; (80054e8 ) 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 ) 80052a6: f853 2022 ldr.w r2, [r3, r2, lsl #2] 80052aa: 2303 movs r3, #3 80052ac: f7fd f882 bl 80023b4 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 80052b0: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80052b4: 488e ldr r0, [pc, #568] ; (80054f0 ) 80052b6: f7fc ffb7 bl 8002228 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 ) 80052be: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80052c2: 79fb ldrb r3, [r7, #7] 80052c4: 4a8c ldr r2, [pc, #560] ; (80054f8 ) 80052c6: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80052ca: 4b87 ldr r3, [pc, #540] ; (80054e8 ) 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 ) 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 ) 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(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 ) 80052f6: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80052fa: 79fb ldrb r3, [r7, #7] 80052fc: 4a81 ldr r2, [pc, #516] ; (8005504 ) 80052fe: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005302: 4b79 ldr r3, [pc, #484] ; (80054e8 ) 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 ) 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 ) 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(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 ) 8005336: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800533a: 79fb ldrb r3, [r7, #7] 800533c: 4a74 ldr r2, [pc, #464] ; (8005510 ) 800533e: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005342: 4b69 ldr r3, [pc, #420] ; (80054e8 ) 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 ) 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 ) 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(XPOS_KN_4[ch], YPOS_KN_4[ch], str, LEFT_MODE); 800536c: 79fb ldrb r3, [r7, #7] 800536e: 4a6a ldr r2, [pc, #424] ; (8005518 ) 8005370: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005374: 79fb ldrb r3, [r7, #7] 8005376: 4a69 ldr r2, [pc, #420] ; (800551c ) 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 } 8005386: f000 be66 b.w 8006056 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 800538a: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800538e: 4858 ldr r0, [pc, #352] ; (80054f0 ) 8005390: f7fc ff4a bl 8002228 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 ) 8005398: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800539c: 79fb ldrb r3, [r7, #7] 800539e: 4a56 ldr r2, [pc, #344] ; (80054f8 ) 80053a0: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80053a4: 4b50 ldr r3, [pc, #320] ; (80054e8 ) 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 ) 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 ) 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(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 ) 80053d0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80053d4: 79fb ldrb r3, [r7, #7] 80053d6: 4a4b ldr r2, [pc, #300] ; (8005504 ) 80053d8: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 80053dc: 4b42 ldr r3, [pc, #264] ; (80054e8 ) 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 ) 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 ) 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(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 ) 8005410: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005414: 79fb ldrb r3, [r7, #7] 8005416: 4a3e ldr r2, [pc, #248] ; (8005510 ) 8005418: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800541c: 4b32 ldr r3, [pc, #200] ; (80054e8 ) 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 ) 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 ) 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(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 ) 800544a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800544e: 79fb ldrb r3, [r7, #7] 8005450: 4a24 ldr r2, [pc, #144] ; (80054e4 ) 8005452: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005456: 79fb ldrb r3, [r7, #7] 8005458: 4a23 ldr r2, [pc, #140] ; (80054e8 ) 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 ) 8005468: f853 2022 ldr.w r2, [r3, r2, lsl #2] 800546c: 2303 movs r3, #3 800546e: f7fc ffa1 bl 80023b4 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 ) 8005476: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800547a: 79fb ldrb r3, [r7, #7] 800547c: 4a27 ldr r2, [pc, #156] ; (800551c ) 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 } 800548c: f000 bde3 b.w 8006056 if(menupos == Kn) 8005490: 4b23 ldr r3, [pc, #140] ; (8005520 ) 8005492: 781b ldrb r3, [r3, #0] 8005494: b2db uxtb r3, r3 8005496: 2b04 cmp r3, #4 8005498: f040 816e bne.w 8005778 if(ACTIVE_CHANNEL == ch) 800549c: 79fa ldrb r2, [r7, #7] 800549e: 4b21 ldr r3, [pc, #132] ; (8005524 ) 80054a0: 681b ldr r3, [r3, #0] 80054a2: 429a cmp r2, r3 80054a4: f040 80c5 bne.w 8005632 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 if(focused) 80054b4: 4b1c ldr r3, [pc, #112] ; (8005528 ) 80054b6: 781b ldrb r3, [r3, #0] 80054b8: b2db uxtb r3, r3 80054ba: 2b00 cmp r3, #0 80054bc: d036 beq.n 800552c if(blk) 80054be: 683b ldr r3, [r7, #0] 80054c0: 2b00 cmp r3, #0 80054c2: d040 beq.n 8005546 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 ) 80054c8: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80054cc: 79fb ldrb r3, [r7, #7] 80054ce: 4a13 ldr r2, [pc, #76] ; (800551c ) 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 80054de: e032 b.n 8005546 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 ) 8005530: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005534: 79fb ldrb r3, [r7, #7] 8005536: 4a81 ldr r2, [pc, #516] ; (800573c ) 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 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8005546: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800554a: 487d ldr r0, [pc, #500] ; (8005740 ) 800554c: f7fc fe6c bl 8002228 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 ) 8005554: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005558: 79fb ldrb r3, [r7, #7] 800555a: 4a7b ldr r2, [pc, #492] ; (8005748 ) 800555c: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005560: 4b7a ldr r3, [pc, #488] ; (800574c ) 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 ) 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 ) 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(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 ) 800558c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005590: 79fb ldrb r3, [r7, #7] 8005592: 4a71 ldr r2, [pc, #452] ; (8005758 ) 8005594: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005598: 4b6c ldr r3, [pc, #432] ; (800574c ) 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 ) 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 ) 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(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 ) 80055cc: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80055d0: 79fb ldrb r3, [r7, #7] 80055d2: 4a64 ldr r2, [pc, #400] ; (8005764 ) 80055d4: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80055d8: 4b5c ldr r3, [pc, #368] ; (800574c ) 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 ) 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 ) 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(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 ) 8005606: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800560a: 79fb ldrb r3, [r7, #7] 800560c: 4a58 ldr r2, [pc, #352] ; (8005770 ) 800560e: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005612: 79fb ldrb r3, [r7, #7] 8005614: 4a4d ldr r2, [pc, #308] ; (800574c ) 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 ) 8005624: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005628: 2303 movs r3, #3 800562a: f7fc fec3 bl 80023b4 } 800562e: f000 bd12 b.w 8006056 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8005632: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8005636: 4842 ldr r0, [pc, #264] ; (8005740 ) 8005638: f7fc fdf6 bl 8002228 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 ) 8005640: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005644: 79fb ldrb r3, [r7, #7] 8005646: 4a40 ldr r2, [pc, #256] ; (8005748 ) 8005648: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800564c: 4b3f ldr r3, [pc, #252] ; (800574c ) 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 ) 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 ) 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(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 ) 8005678: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800567c: 79fb ldrb r3, [r7, #7] 800567e: 4a36 ldr r2, [pc, #216] ; (8005758 ) 8005680: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005684: 4b31 ldr r3, [pc, #196] ; (800574c ) 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 ) 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 ) 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(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 ) 80056b8: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80056bc: 79fb ldrb r3, [r7, #7] 80056be: 4a29 ldr r2, [pc, #164] ; (8005764 ) 80056c0: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80056c4: 4b21 ldr r3, [pc, #132] ; (800574c ) 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 ) 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 ) 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(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 ) 80056f2: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80056f6: 79fb ldrb r3, [r7, #7] 80056f8: 4a1d ldr r2, [pc, #116] ; (8005770 ) 80056fa: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80056fe: 79fb ldrb r3, [r7, #7] 8005700: 4a12 ldr r2, [pc, #72] ; (800574c ) 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 ) 8005710: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005714: 2303 movs r3, #3 8005716: f7fc fe4d bl 80023b4 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 ) 800571e: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005722: 79fb ldrb r3, [r7, #7] 8005724: 4a05 ldr r2, [pc, #20] ; (800573c ) 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 } 8005734: f000 bc8f b.w 8006056 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 ) 800577a: 781b ldrb r3, [r3, #0] 800577c: b2db uxtb r3, r3 800577e: 2b05 cmp r3, #5 8005780: f040 8182 bne.w 8005a88 if(ACTIVE_CHANNEL == ch) 8005784: 79fa ldrb r2, [r7, #7] 8005786: 4bad ldr r3, [pc, #692] ; (8005a3c ) 8005788: 681b ldr r3, [r3, #0] 800578a: 429a cmp r2, r3 800578c: f040 80d2 bne.w 8005934 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 if(blk) 800579c: 683b ldr r3, [r7, #0] 800579e: 2b00 cmp r3, #0 80057a0: d015 beq.n 80057ce 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 ) 80057a6: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80057aa: 79fb ldrb r3, [r7, #7] 80057ac: 4aa5 ldr r2, [pc, #660] ; (8005a44 ) 80057ae: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80057b2: 79fb ldrb r3, [r7, #7] 80057b4: 4aa4 ldr r2, [pc, #656] ; (8005a48 ) 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 ) 80057c4: f853 2022 ldr.w r2, [r3, r2, lsl #2] 80057c8: 2303 movs r3, #3 80057ca: f7fc fdf3 bl 80023b4 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 ) 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 ) 80057de: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80057e2: 2303 movs r3, #3 80057e4: 4a9a ldr r2, [pc, #616] ; (8005a50 ) 80057e6: f7fc fde5 bl 80023b4 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 ) 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 ) 80057fa: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80057fe: 79fb ldrb r3, [r7, #7] 8005800: 4a91 ldr r2, [pc, #580] ; (8005a48 ) 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 ) 8005810: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005814: 2303 movs r3, #3 8005816: f7fc fdcd bl 80023b4 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 ) 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 ) 800582a: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800582e: 79fb ldrb r3, [r7, #7] 8005830: 4a85 ldr r2, [pc, #532] ; (8005a48 ) 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 ) 8005840: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005844: 2303 movs r3, #3 8005846: f7fc fdb5 bl 80023b4 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 800584a: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800584e: 4881 ldr r0, [pc, #516] ; (8005a54 ) 8005850: f7fc fcea bl 8002228 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 ) 8005858: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800585c: 79fb ldrb r3, [r7, #7] 800585e: 4a7f ldr r2, [pc, #508] ; (8005a5c ) 8005860: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005864: 4b78 ldr r3, [pc, #480] ; (8005a48 ) 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 ) 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 ) 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(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 ) 8005890: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005894: 79fb ldrb r3, [r7, #7] 8005896: 4a74 ldr r2, [pc, #464] ; (8005a68 ) 8005898: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 800589c: 4b6a ldr r3, [pc, #424] ; (8005a48 ) 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 ) 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 ) 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(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 ) 80058d0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80058d4: 79fb ldrb r3, [r7, #7] 80058d6: 4a67 ldr r2, [pc, #412] ; (8005a74 ) 80058d8: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80058dc: 4b5a ldr r3, [pc, #360] ; (8005a48 ) 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 ) 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 ) 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(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 ) 800590a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800590e: 79fb ldrb r3, [r7, #7] 8005910: 4a5b ldr r2, [pc, #364] ; (8005a80 ) 8005912: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005916: 79fb ldrb r3, [r7, #7] 8005918: 4a4b ldr r2, [pc, #300] ; (8005a48 ) 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 ) 8005928: f853 2022 ldr.w r2, [r3, r2, lsl #2] 800592c: 2303 movs r3, #3 800592e: f7fc fd41 bl 80023b4 } 8005932: e390 b.n 8006056 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8005934: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8005938: 4846 ldr r0, [pc, #280] ; (8005a54 ) 800593a: f7fc fc75 bl 8002228 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 ) 8005942: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005946: 79fb ldrb r3, [r7, #7] 8005948: 4a44 ldr r2, [pc, #272] ; (8005a5c ) 800594a: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800594e: 4b3e ldr r3, [pc, #248] ; (8005a48 ) 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 ) 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 ) 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(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 ) 800597a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800597e: 79fb ldrb r3, [r7, #7] 8005980: 4a39 ldr r2, [pc, #228] ; (8005a68 ) 8005982: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005986: 4b30 ldr r3, [pc, #192] ; (8005a48 ) 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 ) 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 ) 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(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 ) 80059ba: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80059be: 79fb ldrb r3, [r7, #7] 80059c0: 4a2c ldr r2, [pc, #176] ; (8005a74 ) 80059c2: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80059c6: 4b20 ldr r3, [pc, #128] ; (8005a48 ) 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 ) 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 ) 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(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 ) 80059f4: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80059f8: 79fb ldrb r3, [r7, #7] 80059fa: 4a21 ldr r2, [pc, #132] ; (8005a80 ) 80059fc: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005a00: 79fb ldrb r3, [r7, #7] 8005a02: 4a11 ldr r2, [pc, #68] ; (8005a48 ) 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 ) 8005a12: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005a16: 2303 movs r3, #3 8005a18: f7fc fccc bl 80023b4 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 ) 8005a20: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005a24: 79fb ldrb r3, [r7, #7] 8005a26: 4a07 ldr r2, [pc, #28] ; (8005a44 ) 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 } 8005a36: e30e b.n 8006056 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 ) 8005a8a: 781b ldrb r3, [r3, #0] 8005a8c: b2db uxtb r3, r3 8005a8e: 2b06 cmp r3, #6 8005a90: f040 8182 bne.w 8005d98 if(ACTIVE_CHANNEL == ch) 8005a94: 79fa ldrb r2, [r7, #7] 8005a96: 4bad ldr r3, [pc, #692] ; (8005d4c ) 8005a98: 681b ldr r3, [r3, #0] 8005a9a: 429a cmp r2, r3 8005a9c: f040 80d2 bne.w 8005c44 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 if(blk) 8005aac: 683b ldr r3, [r7, #0] 8005aae: 2b00 cmp r3, #0 8005ab0: d017 beq.n 8005ae2 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 ) 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 ) 8005ac2: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005ac6: 79fb ldrb r3, [r7, #7] 8005ac8: 4aa3 ldr r2, [pc, #652] ; (8005d58 ) 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 ) 8005ad8: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005adc: 2303 movs r3, #3 8005ade: f7fc fc69 bl 80023b4 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 ) 8005ae6: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005aea: 79fb ldrb r3, [r7, #7] 8005aec: 4a99 ldr r2, [pc, #612] ; (8005d54 ) 8005aee: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005af2: 79fb ldrb r3, [r7, #7] 8005af4: 4a98 ldr r2, [pc, #608] ; (8005d58 ) 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 ) 8005b04: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005b08: 2303 movs r3, #3 8005b0a: f7fc fc53 bl 80023b4 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 ) 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 ) 8005b1e: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005b22: 2303 movs r3, #3 8005b24: 4a8e ldr r2, [pc, #568] ; (8005d60 ) 8005b26: f7fc fc45 bl 80023b4 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 ) 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 ) 8005b3a: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005b3e: 79fb ldrb r3, [r7, #7] 8005b40: 4a85 ldr r2, [pc, #532] ; (8005d58 ) 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 ) 8005b50: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005b54: 2303 movs r3, #3 8005b56: f7fc fc2d bl 80023b4 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8005b5a: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8005b5e: 4881 ldr r0, [pc, #516] ; (8005d64 ) 8005b60: f7fc fb62 bl 8002228 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 ) 8005b68: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005b6c: 79fb ldrb r3, [r7, #7] 8005b6e: 4a7f ldr r2, [pc, #508] ; (8005d6c ) 8005b70: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005b74: 4b78 ldr r3, [pc, #480] ; (8005d58 ) 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 ) 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 ) 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(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 ) 8005ba0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005ba4: 79fb ldrb r3, [r7, #7] 8005ba6: 4a74 ldr r2, [pc, #464] ; (8005d78 ) 8005ba8: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005bac: 4b6a ldr r3, [pc, #424] ; (8005d58 ) 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 ) 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 ) 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(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 ) 8005be0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005be4: 79fb ldrb r3, [r7, #7] 8005be6: 4a67 ldr r2, [pc, #412] ; (8005d84 ) 8005be8: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005bec: 4b5a ldr r3, [pc, #360] ; (8005d58 ) 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 ) 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 ) 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(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 ) 8005c1a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005c1e: 79fb ldrb r3, [r7, #7] 8005c20: 4a5b ldr r2, [pc, #364] ; (8005d90 ) 8005c22: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005c26: 79fb ldrb r3, [r7, #7] 8005c28: 4a4b ldr r2, [pc, #300] ; (8005d58 ) 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 ) 8005c38: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005c3c: 2303 movs r3, #3 8005c3e: f7fc fbb9 bl 80023b4 } 8005c42: e208 b.n 8006056 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8005c44: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8005c48: 4846 ldr r0, [pc, #280] ; (8005d64 ) 8005c4a: f7fc faed bl 8002228 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 ) 8005c52: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005c56: 79fb ldrb r3, [r7, #7] 8005c58: 4a44 ldr r2, [pc, #272] ; (8005d6c ) 8005c5a: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005c5e: 4b3e ldr r3, [pc, #248] ; (8005d58 ) 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 ) 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 ) 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(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 ) 8005c8a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005c8e: 79fb ldrb r3, [r7, #7] 8005c90: 4a39 ldr r2, [pc, #228] ; (8005d78 ) 8005c92: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005c96: 4b30 ldr r3, [pc, #192] ; (8005d58 ) 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 ) 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 ) 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(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 ) 8005cca: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005cce: 79fb ldrb r3, [r7, #7] 8005cd0: 4a2c ldr r2, [pc, #176] ; (8005d84 ) 8005cd2: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005cd6: 4b20 ldr r3, [pc, #128] ; (8005d58 ) 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 ) 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 ) 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(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 ) 8005d04: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005d08: 79fb ldrb r3, [r7, #7] 8005d0a: 4a21 ldr r2, [pc, #132] ; (8005d90 ) 8005d0c: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005d10: 79fb ldrb r3, [r7, #7] 8005d12: 4a11 ldr r2, [pc, #68] ; (8005d58 ) 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 ) 8005d22: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005d26: 2303 movs r3, #3 8005d28: f7fc fb44 bl 80023b4 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 ) 8005d30: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005d34: 79fb ldrb r3, [r7, #7] 8005d36: 4a07 ldr r2, [pc, #28] ; (8005d54 ) 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 } 8005d46: e186 b.n 8006056 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 ) 8005d9a: 781b ldrb r3, [r3, #0] 8005d9c: b2db uxtb r3, r3 8005d9e: 2b07 cmp r3, #7 8005da0: f040 8159 bne.w 8006056 if(ACTIVE_CHANNEL == ch) 8005da4: 79fa ldrb r2, [r7, #7] 8005da6: 4baf ldr r3, [pc, #700] ; (8006064 ) 8005da8: 681b ldr r3, [r3, #0] 8005daa: 429a cmp r2, r3 8005dac: f040 80d2 bne.w 8005f54 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 if(blk) 8005dbc: 683b ldr r3, [r7, #0] 8005dbe: 2b00 cmp r3, #0 8005dc0: d017 beq.n 8005df2 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 ) 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 ) 8005dd2: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005dd6: 79fb ldrb r3, [r7, #7] 8005dd8: 4aa5 ldr r2, [pc, #660] ; (8006070 ) 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 ) 8005de8: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005dec: 2303 movs r3, #3 8005dee: f7fc fae1 bl 80023b4 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 ) 8005df6: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005dfa: 79fb ldrb r3, [r7, #7] 8005dfc: 4a9b ldr r2, [pc, #620] ; (800606c ) 8005dfe: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005e02: 79fb ldrb r3, [r7, #7] 8005e04: 4a9a ldr r2, [pc, #616] ; (8006070 ) 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 ) 8005e14: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005e18: 2303 movs r3, #3 8005e1a: f7fc facb bl 80023b4 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 ) 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 ) 8005e2e: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005e32: 2303 movs r3, #3 8005e34: 4a90 ldr r2, [pc, #576] ; (8006078 ) 8005e36: f7fc fabd bl 80023b4 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 ) 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 ) 8005e4a: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005e4e: 79fb ldrb r3, [r7, #7] 8005e50: 4a87 ldr r2, [pc, #540] ; (8006070 ) 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 ) 8005e60: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005e64: 2303 movs r3, #3 8005e66: f7fc faa5 bl 80023b4 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8005e6a: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8005e6e: 4883 ldr r0, [pc, #524] ; (800607c ) 8005e70: f7fc f9da bl 8002228 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 ) 8005e78: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005e7c: 79fb ldrb r3, [r7, #7] 8005e7e: 4a81 ldr r2, [pc, #516] ; (8006084 ) 8005e80: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005e84: 4b7a ldr r3, [pc, #488] ; (8006070 ) 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 ) 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 ) 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(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 ) 8005eb0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005eb4: 79fb ldrb r3, [r7, #7] 8005eb6: 4a76 ldr r2, [pc, #472] ; (8006090 ) 8005eb8: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005ebc: 4b6c ldr r3, [pc, #432] ; (8006070 ) 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 ) 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 ) 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(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 ) 8005ef0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005ef4: 79fb ldrb r3, [r7, #7] 8005ef6: 4a69 ldr r2, [pc, #420] ; (800609c ) 8005ef8: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005efc: 4b5c ldr r3, [pc, #368] ; (8006070 ) 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 ) 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 ) 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(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 ) 8005f2a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005f2e: 79fb ldrb r3, [r7, #7] 8005f30: 4a5d ldr r2, [pc, #372] ; (80060a8 ) 8005f32: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005f36: 79fb ldrb r3, [r7, #7] 8005f38: 4a4d ldr r2, [pc, #308] ; (8006070 ) 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 ) 8005f48: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8005f4c: 2303 movs r3, #3 8005f4e: f7fc fa31 bl 80023b4 } 8005f52: e080 b.n 8006056 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8005f54: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8005f58: 4848 ldr r0, [pc, #288] ; (800607c ) 8005f5a: f7fc f965 bl 8002228 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 ) 8005f62: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005f66: 79fb ldrb r3, [r7, #7] 8005f68: 4a46 ldr r2, [pc, #280] ; (8006084 ) 8005f6a: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005f6e: 4b40 ldr r3, [pc, #256] ; (8006070 ) 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 ) 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 ) 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(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 ) 8005f9a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005f9e: 79fb ldrb r3, [r7, #7] 8005fa0: 4a3b ldr r2, [pc, #236] ; (8006090 ) 8005fa2: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8005fa6: 4b32 ldr r3, [pc, #200] ; (8006070 ) 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 ) 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 ) 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(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 ) 8005fda: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8005fde: 79fb ldrb r3, [r7, #7] 8005fe0: 4a2e ldr r2, [pc, #184] ; (800609c ) 8005fe2: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8005fe6: 4b22 ldr r3, [pc, #136] ; (8006070 ) 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 ) 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 ) 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(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 ) 8006014: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006018: 79fb ldrb r3, [r7, #7] 800601a: 4a23 ldr r2, [pc, #140] ; (80060a8 ) 800601c: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006020: 79fb ldrb r3, [r7, #7] 8006022: 4a13 ldr r2, [pc, #76] ; (8006070 ) 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 ) 8006032: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8006036: 2303 movs r3, #3 8006038: f7fc f9bc bl 80023b4 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 ) 8006040: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006044: 79fb ldrb r3, [r7, #7] 8006046: 4a09 ldr r2, [pc, #36] ; (800606c ) 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 } 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 : 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 ) 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 ) 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 ) 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 ) 8006108: 781b ldrb r3, [r3, #0] 800610a: b2db uxtb r3, r3 800610c: 2b00 cmp r3, #0 800610e: f040 8161 bne.w 80063d4 { if(ACTIVE_CHANNEL == ch) 8006112: 79fa ldrb r2, [r7, #7] 8006114: 4b9e ldr r3, [pc, #632] ; (8006390 ) 8006116: 681b ldr r3, [r3, #0] 8006118: 429a cmp r2, r3 800611a: f040 80b0 bne.w 800627e { 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 if(focused) 800612a: 4b9a ldr r3, [pc, #616] ; (8006394 ) 800612c: 781b ldrb r3, [r3, #0] 800612e: b2db uxtb r3, r3 8006130: 2b00 cmp r3, #0 8006132: d020 beq.n 8006176 { if(blk) 8006134: 683b ldr r3, [r7, #0] 8006136: 2b00 cmp r3, #0 8006138: d03a beq.n 80061b0 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 ) 800613e: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006142: 79fb ldrb r3, [r7, #7] 8006144: 4a95 ldr r2, [pc, #596] ; (800639c ) 8006146: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800614a: 4b8f ldr r3, [pc, #572] ; (8006388 ) 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 ) 8006156: 681b ldr r3, [r3, #0] 8006158: 4a8b ldr r2, [pc, #556] ; (8006388 ) 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 ) 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 8006174: e01c b.n 80061b0 } 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 ) 800617a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800617e: 79fb ldrb r3, [r7, #7] 8006180: 4a86 ldr r2, [pc, #536] ; (800639c ) 8006182: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006186: 4b80 ldr r3, [pc, #512] ; (8006388 ) 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 ) 8006192: 681b ldr r3, [r3, #0] 8006194: 4a7c ldr r2, [pc, #496] ; (8006388 ) 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 ) 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 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 80061b0: f04f 417f mov.w r1, #4278190080 ; 0xff000000 80061b4: 487b ldr r0, [pc, #492] ; (80063a4 ) 80061b6: f7fc f837 bl 8002228 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 ) 80061be: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80061c2: 79fb ldrb r3, [r7, #7] 80061c4: 4a79 ldr r2, [pc, #484] ; (80063ac ) 80061c6: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 80061ca: 4b6f ldr r3, [pc, #444] ; (8006388 ) 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 ) 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 ) 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(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 ) 80061fe: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006202: 79fb ldrb r3, [r7, #7] 8006204: 4a6c ldr r2, [pc, #432] ; (80063b8 ) 8006206: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800620a: 4b5f ldr r3, [pc, #380] ; (8006388 ) 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 ) 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 ) 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(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 ) 8006238: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800623c: 79fb ldrb r3, [r7, #7] 800623e: 4a61 ldr r2, [pc, #388] ; (80063c4 ) 8006240: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006244: 79fb ldrb r3, [r7, #7] 8006246: 4a50 ldr r2, [pc, #320] ; (8006388 ) 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 ) 8006256: f853 2022 ldr.w r2, [r3, r2, lsl #2] 800625a: 2303 movs r3, #3 800625c: f7fc f8aa bl 80023b4 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 ) 8006264: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006268: 79fb ldrb r3, [r7, #7] 800626a: 4a59 ldr r2, [pc, #356] ; (80063d0 ) 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 else { } } } 800627a: f000 be1c b.w 8006eb6 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 800627e: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006282: 4848 ldr r0, [pc, #288] ; (80063a4 ) 8006284: f7fb ffd0 bl 8002228 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 ) 800628c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006290: 79fb ldrb r3, [r7, #7] 8006292: 4a42 ldr r2, [pc, #264] ; (800639c ) 8006294: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006298: 4b3b ldr r3, [pc, #236] ; (8006388 ) 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 ) 80062a4: 681b ldr r3, [r3, #0] 80062a6: 4a38 ldr r2, [pc, #224] ; (8006388 ) 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 ) 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(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 ) 80062c6: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80062ca: 79fb ldrb r3, [r7, #7] 80062cc: 4a37 ldr r2, [pc, #220] ; (80063ac ) 80062ce: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 80062d2: 4b2d ldr r3, [pc, #180] ; (8006388 ) 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 ) 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 ) 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(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 ) 8006306: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800630a: 79fb ldrb r3, [r7, #7] 800630c: 4a2a ldr r2, [pc, #168] ; (80063b8 ) 800630e: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006312: 4b1d ldr r3, [pc, #116] ; (8006388 ) 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 ) 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 ) 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(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 ) 8006340: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006344: 79fb ldrb r3, [r7, #7] 8006346: 4a1f ldr r2, [pc, #124] ; (80063c4 ) 8006348: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800634c: 79fb ldrb r3, [r7, #7] 800634e: 4a0e ldr r2, [pc, #56] ; (8006388 ) 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 ) 800635e: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8006362: 2303 movs r3, #3 8006364: f7fc f826 bl 80023b4 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 ) 800636c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006370: 79fb ldrb r3, [r7, #7] 8006372: 4a17 ldr r2, [pc, #92] ; (80063d0 ) 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 } 8006382: f000 bd98 b.w 8006eb6 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 ) 80063d6: 781b ldrb r3, [r3, #0] 80063d8: b2db uxtb r3, r3 80063da: 2b01 cmp r3, #1 80063dc: f040 8164 bne.w 80066a8 if(ACTIVE_CHANNEL == ch) 80063e0: 79fa ldrb r2, [r7, #7] 80063e2: 4b9f ldr r3, [pc, #636] ; (8006660 ) 80063e4: 681b ldr r3, [r3, #0] 80063e6: 429a cmp r2, r3 80063e8: f040 80b3 bne.w 8006552 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 if(focused) 80063f8: 4b9a ldr r3, [pc, #616] ; (8006664 ) 80063fa: 781b ldrb r3, [r3, #0] 80063fc: b2db uxtb r3, r3 80063fe: 2b00 cmp r3, #0 8006400: d023 beq.n 800644a if(blk) 8006402: 683b ldr r3, [r7, #0] 8006404: 2b00 cmp r3, #0 8006406: d040 beq.n 800648a 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 ) 800640c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006410: 79fb ldrb r3, [r7, #7] 8006412: 4a96 ldr r2, [pc, #600] ; (800666c ) 8006414: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8006418: 4b95 ldr r3, [pc, #596] ; (8006670 ) 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 ) 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 ) 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 8006448: e01f b.n 800648a 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 ) 800644e: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006452: 79fb ldrb r3, [r7, #7] 8006454: 4a85 ldr r2, [pc, #532] ; (800666c ) 8006456: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 800645a: 4b85 ldr r3, [pc, #532] ; (8006670 ) 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 ) 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 ) 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 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 800648a: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800648e: 487a ldr r0, [pc, #488] ; (8006678 ) 8006490: f7fb feca bl 8002228 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 ) 8006498: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800649c: 79fb ldrb r3, [r7, #7] 800649e: 4a78 ldr r2, [pc, #480] ; (8006680 ) 80064a0: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80064a4: 4b72 ldr r3, [pc, #456] ; (8006670 ) 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 ) 80064b0: 681b ldr r3, [r3, #0] 80064b2: 4a6f ldr r2, [pc, #444] ; (8006670 ) 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 ) 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(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 ) 80064d2: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80064d6: 79fb ldrb r3, [r7, #7] 80064d8: 4a6c ldr r2, [pc, #432] ; (800668c ) 80064da: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80064de: 4b64 ldr r3, [pc, #400] ; (8006670 ) 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 ) 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 ) 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(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 ) 800650c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006510: 79fb ldrb r3, [r7, #7] 8006512: 4a61 ldr r2, [pc, #388] ; (8006698 ) 8006514: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006518: 79fb ldrb r3, [r7, #7] 800651a: 4a55 ldr r2, [pc, #340] ; (8006670 ) 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 ) 800652a: f853 2022 ldr.w r2, [r3, r2, lsl #2] 800652e: 2303 movs r3, #3 8006530: f7fb ff40 bl 80023b4 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 ) 8006538: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800653c: 79fb ldrb r3, [r7, #7] 800653e: 4a59 ldr r2, [pc, #356] ; (80066a4 ) 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 } 800654e: f000 bcb2 b.w 8006eb6 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8006552: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006556: 4848 ldr r0, [pc, #288] ; (8006678 ) 8006558: f7fb fe66 bl 8002228 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 ) 8006560: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006564: 79fb ldrb r3, [r7, #7] 8006566: 4a46 ldr r2, [pc, #280] ; (8006680 ) 8006568: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800656c: 4b40 ldr r3, [pc, #256] ; (8006670 ) 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 ) 8006578: 681b ldr r3, [r3, #0] 800657a: 4a3d ldr r2, [pc, #244] ; (8006670 ) 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 ) 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(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 ) 800659a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800659e: 79fb ldrb r3, [r7, #7] 80065a0: 4a32 ldr r2, [pc, #200] ; (800666c ) 80065a2: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 80065a6: 4b32 ldr r3, [pc, #200] ; (8006670 ) 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 ) 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 ) 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(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 ) 80065da: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80065de: 79fb ldrb r3, [r7, #7] 80065e0: 4a2a ldr r2, [pc, #168] ; (800668c ) 80065e2: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80065e6: 4b22 ldr r3, [pc, #136] ; (8006670 ) 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 ) 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 ) 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(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 ) 8006614: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006618: 79fb ldrb r3, [r7, #7] 800661a: 4a1f ldr r2, [pc, #124] ; (8006698 ) 800661c: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006620: 79fb ldrb r3, [r7, #7] 8006622: 4a13 ldr r2, [pc, #76] ; (8006670 ) 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 ) 8006632: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8006636: 2303 movs r3, #3 8006638: f7fb febc bl 80023b4 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 ) 8006640: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006644: 79fb ldrb r3, [r7, #7] 8006646: 4a17 ldr r2, [pc, #92] ; (80066a4 ) 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 } 8006656: f000 bc2e b.w 8006eb6 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 ) 80066aa: 781b ldrb r3, [r3, #0] 80066ac: b2db uxtb r3, r3 80066ae: 2b02 cmp r3, #2 80066b0: f040 8138 bne.w 8006924 if(ACTIVE_CHANNEL == ch) 80066b4: 79fa ldrb r2, [r7, #7] 80066b6: 4bb5 ldr r3, [pc, #724] ; (800698c ) 80066b8: 681b ldr r3, [r3, #0] 80066ba: 429a cmp r2, r3 80066bc: f040 80af bne.w 800681e 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 if(focused) 80066cc: 4bb0 ldr r3, [pc, #704] ; (8006990 ) 80066ce: 781b ldrb r3, [r3, #0] 80066d0: b2db uxtb r3, r3 80066d2: 2b00 cmp r3, #0 80066d4: d020 beq.n 8006718 if(blk) 80066d6: 683b ldr r3, [r7, #0] 80066d8: 2b00 cmp r3, #0 80066da: d03a beq.n 8006752 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 ) 80066e0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80066e4: 79fb ldrb r3, [r7, #7] 80066e6: 4aac ldr r2, [pc, #688] ; (8006998 ) 80066e8: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80066ec: 4bab ldr r3, [pc, #684] ; (800699c ) 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 ) 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 ) 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 8006716: e01c b.n 8006752 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 ) 800671c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006720: 79fb ldrb r3, [r7, #7] 8006722: 4a9d ldr r2, [pc, #628] ; (8006998 ) 8006724: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006728: 4b9c ldr r3, [pc, #624] ; (800699c ) 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 ) 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 ) 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 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8006752: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006756: 4893 ldr r0, [pc, #588] ; (80069a4 ) 8006758: f7fb fd66 bl 8002228 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 ) 8006760: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006764: 79fb ldrb r3, [r7, #7] 8006766: 4a91 ldr r2, [pc, #580] ; (80069ac ) 8006768: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 800676c: 4b8b ldr r3, [pc, #556] ; (800699c ) 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 ) 8006778: 681b ldr r3, [r3, #0] 800677a: 4a88 ldr r2, [pc, #544] ; (800699c ) 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 ) 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(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 ) 800679a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800679e: 79fb ldrb r3, [r7, #7] 80067a0: 4a85 ldr r2, [pc, #532] ; (80069b8 ) 80067a2: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 80067a6: 4b7d ldr r3, [pc, #500] ; (800699c ) 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 ) 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 ) 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(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 ) 80067da: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80067de: 79fb ldrb r3, [r7, #7] 80067e0: 4a78 ldr r2, [pc, #480] ; (80069c4 ) 80067e2: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80067e6: 79fb ldrb r3, [r7, #7] 80067e8: 4a6c ldr r2, [pc, #432] ; (800699c ) 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 ) 80067f8: f853 2022 ldr.w r2, [r3, r2, lsl #2] 80067fc: 2303 movs r3, #3 80067fe: f7fb fdd9 bl 80023b4 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 ) 8006806: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800680a: 79fb ldrb r3, [r7, #7] 800680c: 4a70 ldr r2, [pc, #448] ; (80069d0 ) 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 } 800681c: e34b b.n 8006eb6 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 800681e: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006822: 4860 ldr r0, [pc, #384] ; (80069a4 ) 8006824: f7fb fd00 bl 8002228 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 ) 800682c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006830: 79fb ldrb r3, [r7, #7] 8006832: 4a5e ldr r2, [pc, #376] ; (80069ac ) 8006834: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006838: 4b58 ldr r3, [pc, #352] ; (800699c ) 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 ) 8006844: 681b ldr r3, [r3, #0] 8006846: 4a55 ldr r2, [pc, #340] ; (800699c ) 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 ) 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(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 ) 8006866: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 800686a: 79fb ldrb r3, [r7, #7] 800686c: 4a52 ldr r2, [pc, #328] ; (80069b8 ) 800686e: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8006872: 4b4a ldr r3, [pc, #296] ; (800699c ) 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 ) 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 ) 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(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 ) 80068a6: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80068aa: 79fb ldrb r3, [r7, #7] 80068ac: 4a3a ldr r2, [pc, #232] ; (8006998 ) 80068ae: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80068b2: 4b3a ldr r3, [pc, #232] ; (800699c ) 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 ) 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 ) 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(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 ) 80068e0: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80068e4: 79fb ldrb r3, [r7, #7] 80068e6: 4a37 ldr r2, [pc, #220] ; (80069c4 ) 80068e8: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80068ec: 79fb ldrb r3, [r7, #7] 80068ee: 4a2b ldr r2, [pc, #172] ; (800699c ) 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 ) 80068fe: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8006902: 2303 movs r3, #3 8006904: f7fb fd56 bl 80023b4 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 ) 800690c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006910: 79fb ldrb r3, [r7, #7] 8006912: 4a2f ldr r2, [pc, #188] ; (80069d0 ) 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 } 8006922: e2c8 b.n 8006eb6 if(menupos == Km) 8006924: 4b18 ldr r3, [pc, #96] ; (8006988 ) 8006926: 781b ldrb r3, [r3, #0] 8006928: b2db uxtb r3, r3 800692a: 2b03 cmp r3, #3 800692c: f040 8158 bne.w 8006be0 if(ACTIVE_CHANNEL == ch) 8006930: 79fa ldrb r2, [r7, #7] 8006932: 4b16 ldr r3, [pc, #88] ; (800698c ) 8006934: 681b ldr r3, [r3, #0] 8006936: 429a cmp r2, r3 8006938: f040 80cf bne.w 8006ada 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 if(focused) 8006948: 4b11 ldr r3, [pc, #68] ; (8006990 ) 800694a: 781b ldrb r3, [r3, #0] 800694c: b2db uxtb r3, r3 800694e: 2b00 cmp r3, #0 8006950: d040 beq.n 80069d4 if(blk) 8006952: 683b ldr r3, [r7, #0] 8006954: 2b00 cmp r3, #0 8006956: d053 beq.n 8006a00 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 ) 800695c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006960: 79fb ldrb r3, [r7, #7] 8006962: 4a18 ldr r2, [pc, #96] ; (80069c4 ) 8006964: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006968: 79fb ldrb r3, [r7, #7] 800696a: 4a0c ldr r2, [pc, #48] ; (800699c ) 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 ) 800697a: f853 2022 ldr.w r2, [r3, r2, lsl #2] 800697e: 2303 movs r3, #3 8006980: f7fb fd18 bl 80023b4 8006984: e03c b.n 8006a00 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 ) 80069d8: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 80069dc: 79fb ldrb r3, [r7, #7] 80069de: 4a95 ldr r2, [pc, #596] ; (8006c34 ) 80069e0: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 80069e4: 79fb ldrb r3, [r7, #7] 80069e6: 4a94 ldr r2, [pc, #592] ; (8006c38 ) 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 ) 80069f6: f853 2022 ldr.w r2, [r3, r2, lsl #2] 80069fa: 2303 movs r3, #3 80069fc: f7fb fcda bl 80023b4 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8006a00: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006a04: 488e ldr r0, [pc, #568] ; (8006c40 ) 8006a06: f7fb fc0f bl 8002228 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 ) 8006a0e: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006a12: 79fb ldrb r3, [r7, #7] 8006a14: 4a8c ldr r2, [pc, #560] ; (8006c48 ) 8006a16: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006a1a: 4b87 ldr r3, [pc, #540] ; (8006c38 ) 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 ) 8006a26: 681b ldr r3, [r3, #0] 8006a28: 4a83 ldr r2, [pc, #524] ; (8006c38 ) 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 ) 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(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 ) 8006a48: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006a4c: 79fb ldrb r3, [r7, #7] 8006a4e: 4a82 ldr r2, [pc, #520] ; (8006c58 ) 8006a50: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8006a54: 4b78 ldr r3, [pc, #480] ; (8006c38 ) 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 ) 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 ) 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(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 ) 8006a88: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006a8c: 79fb ldrb r3, [r7, #7] 8006a8e: 4a75 ldr r2, [pc, #468] ; (8006c64 ) 8006a90: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006a94: 4b68 ldr r3, [pc, #416] ; (8006c38 ) 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 ) 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 ) 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(XPOS_KN_8[ch], YPOS_KN_8[ch], str, LEFT_MODE); 8006abe: 79fb ldrb r3, [r7, #7] 8006ac0: 4a6a ldr r2, [pc, #424] ; (8006c6c ) 8006ac2: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006ac6: 79fb ldrb r3, [r7, #7] 8006ac8: 4a69 ldr r2, [pc, #420] ; (8006c70 ) 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 } 8006ad8: e1ed b.n 8006eb6 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8006ada: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006ade: 4858 ldr r0, [pc, #352] ; (8006c40 ) 8006ae0: f7fb fba2 bl 8002228 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 ) 8006ae8: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006aec: 79fb ldrb r3, [r7, #7] 8006aee: 4a56 ldr r2, [pc, #344] ; (8006c48 ) 8006af0: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006af4: 4b50 ldr r3, [pc, #320] ; (8006c38 ) 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 ) 8006b00: 681b ldr r3, [r3, #0] 8006b02: 4a4d ldr r2, [pc, #308] ; (8006c38 ) 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 ) 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(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 ) 8006b22: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006b26: 79fb ldrb r3, [r7, #7] 8006b28: 4a4b ldr r2, [pc, #300] ; (8006c58 ) 8006b2a: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8006b2e: 4b42 ldr r3, [pc, #264] ; (8006c38 ) 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 ) 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 ) 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(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 ) 8006b62: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006b66: 79fb ldrb r3, [r7, #7] 8006b68: 4a3e ldr r2, [pc, #248] ; (8006c64 ) 8006b6a: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006b6e: 4b32 ldr r3, [pc, #200] ; (8006c38 ) 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 ) 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 ) 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(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 ) 8006b9c: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006ba0: 79fb ldrb r3, [r7, #7] 8006ba2: 4a24 ldr r2, [pc, #144] ; (8006c34 ) 8006ba4: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006ba8: 79fb ldrb r3, [r7, #7] 8006baa: 4a23 ldr r2, [pc, #140] ; (8006c38 ) 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 ) 8006bba: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8006bbe: 2303 movs r3, #3 8006bc0: f7fb fbf8 bl 80023b4 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 ) 8006bc8: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006bcc: 79fb ldrb r3, [r7, #7] 8006bce: 4a28 ldr r2, [pc, #160] ; (8006c70 ) 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 } 8006bde: e16a b.n 8006eb6 if(menupos == Kn) 8006be0: 4b24 ldr r3, [pc, #144] ; (8006c74 ) 8006be2: 781b ldrb r3, [r3, #0] 8006be4: b2db uxtb r3, r3 8006be6: 2b04 cmp r3, #4 8006be8: f040 814e bne.w 8006e88 if(ACTIVE_CHANNEL == ch) 8006bec: 79fa ldrb r2, [r7, #7] 8006bee: 4b17 ldr r3, [pc, #92] ; (8006c4c ) 8006bf0: 681b ldr r3, [r3, #0] 8006bf2: 429a cmp r2, r3 8006bf4: f040 80c5 bne.w 8006d82 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 if(focused) 8006c04: 4b1c ldr r3, [pc, #112] ; (8006c78 ) 8006c06: 781b ldrb r3, [r3, #0] 8006c08: b2db uxtb r3, r3 8006c0a: 2b00 cmp r3, #0 8006c0c: d036 beq.n 8006c7c if(blk) 8006c0e: 683b ldr r3, [r7, #0] 8006c10: 2b00 cmp r3, #0 8006c12: d040 beq.n 8006c96 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 ) 8006c18: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006c1c: 79fb ldrb r3, [r7, #7] 8006c1e: 4a14 ldr r2, [pc, #80] ; (8006c70 ) 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 8006c2e: e032 b.n 8006c96 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 ) 8006c80: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006c84: 79fb ldrb r3, [r7, #7] 8006c86: 4a8f ldr r2, [pc, #572] ; (8006ec4 ) 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 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8006c96: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006c9a: 488b ldr r0, [pc, #556] ; (8006ec8 ) 8006c9c: f7fb fac4 bl 8002228 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 ) 8006ca4: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006ca8: 79fb ldrb r3, [r7, #7] 8006caa: 4a89 ldr r2, [pc, #548] ; (8006ed0 ) 8006cac: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006cb0: 4b88 ldr r3, [pc, #544] ; (8006ed4 ) 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 ) 8006cbc: 681b ldr r3, [r3, #0] 8006cbe: 4a85 ldr r2, [pc, #532] ; (8006ed4 ) 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 ) 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(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 ) 8006cde: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006ce2: 79fb ldrb r3, [r7, #7] 8006ce4: 4a7f ldr r2, [pc, #508] ; (8006ee4 ) 8006ce6: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8006cea: 4b7a ldr r3, [pc, #488] ; (8006ed4 ) 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 ) 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 ) 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(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 ) 8006d1e: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006d22: 79fb ldrb r3, [r7, #7] 8006d24: 4a72 ldr r2, [pc, #456] ; (8006ef0 ) 8006d26: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006d2a: 4b6a ldr r3, [pc, #424] ; (8006ed4 ) 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 ) 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 ) 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(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 ) 8006d58: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006d5c: 79fb ldrb r3, [r7, #7] 8006d5e: 4a67 ldr r2, [pc, #412] ; (8006efc ) 8006d60: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006d64: 79fb ldrb r3, [r7, #7] 8006d66: 4a5b ldr r2, [pc, #364] ; (8006ed4 ) 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 ) 8006d76: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8006d7a: 2303 movs r3, #3 8006d7c: f7fb fb1a bl 80023b4 } 8006d80: e099 b.n 8006eb6 LCD_SetColors(LCD_COLOR_MY_YELLOW, LCD_COLOR_BLACK); 8006d82: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006d86: 4850 ldr r0, [pc, #320] ; (8006ec8 ) 8006d88: f7fb fa4e bl 8002228 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 ) 8006d90: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006d94: 79fb ldrb r3, [r7, #7] 8006d96: 4a4e ldr r2, [pc, #312] ; (8006ed0 ) 8006d98: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006d9c: 4b4d ldr r3, [pc, #308] ; (8006ed4 ) 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 ) 8006da8: 681b ldr r3, [r3, #0] 8006daa: 4a4a ldr r2, [pc, #296] ; (8006ed4 ) 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 ) 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(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 ) 8006dca: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006dce: 79fb ldrb r3, [r7, #7] 8006dd0: 4a44 ldr r2, [pc, #272] ; (8006ee4 ) 8006dd2: f832 4013 ldrh.w r4, [r2, r3, lsl #1] 8006dd6: 4b3f ldr r3, [pc, #252] ; (8006ed4 ) 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 ) 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 ) 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(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 ) 8006e0a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006e0e: 79fb ldrb r3, [r7, #7] 8006e10: 4a37 ldr r2, [pc, #220] ; (8006ef0 ) 8006e12: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006e16: 4b2f ldr r3, [pc, #188] ; (8006ed4 ) 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 ) 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 ) 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(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 ) 8006e44: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006e48: 79fb ldrb r3, [r7, #7] 8006e4a: 4a2c ldr r2, [pc, #176] ; (8006efc ) 8006e4c: f832 1013 ldrh.w r1, [r2, r3, lsl #1] 8006e50: 79fb ldrb r3, [r7, #7] 8006e52: 4a20 ldr r2, [pc, #128] ; (8006ed4 ) 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 ) 8006e62: f853 2022 ldr.w r2, [r3, r2, lsl #2] 8006e66: 2303 movs r3, #3 8006e68: f7fb faa4 bl 80023b4 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 ) 8006e70: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 8006e74: 79fb ldrb r3, [r7, #7] 8006e76: 4a13 ldr r2, [pc, #76] ; (8006ec4 ) 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 } 8006e86: e016 b.n 8006eb6 if(menupos == Kiks) 8006e88: 4b1e ldr r3, [pc, #120] ; (8006f04 ) 8006e8a: 781b ldrb r3, [r3, #0] 8006e8c: b2db uxtb r3, r3 8006e8e: 2b05 cmp r3, #5 8006e90: d102 bne.n 8006e98 if(ACTIVE_CHANNEL == ch) 8006e92: 4b11 ldr r3, [pc, #68] ; (8006ed8 ) 8006e94: 681b ldr r3, [r3, #0] } 8006e96: e00e b.n 8006eb6 if(menupos == Kikd) 8006e98: 4b1a ldr r3, [pc, #104] ; (8006f04 ) 8006e9a: 781b ldrb r3, [r3, #0] 8006e9c: b2db uxtb r3, r3 8006e9e: 2b06 cmp r3, #6 8006ea0: d102 bne.n 8006ea8 if(ACTIVE_CHANNEL == ch) 8006ea2: 4b0d ldr r3, [pc, #52] ; (8006ed8 ) 8006ea4: 681b ldr r3, [r3, #0] } 8006ea6: e006 b.n 8006eb6 if(menupos == Kike) 8006ea8: 4b16 ldr r3, [pc, #88] ; (8006f04 ) 8006eaa: 781b ldrb r3, [r3, #0] 8006eac: b2db uxtb r3, r3 8006eae: 2b07 cmp r3, #7 8006eb0: d101 bne.n 8006eb6 if(ACTIVE_CHANNEL == ch) 8006eb2: 4b09 ldr r3, [pc, #36] ; (8006ed8 ) 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 : void DrawButtons(void) { 8006f08: b580 push {r7, lr} 8006f0a: af00 add r7, sp, #0 if(menupos == Set100) 8006f0c: 4ba1 ldr r3, [pc, #644] ; (8007194 ) 8006f0e: 781b ldrb r3, [r3, #0] 8006f10: b2db uxtb r3, r3 8006f12: 2b00 cmp r3, #0 8006f14: d106 bne.n 8006f24 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 8006f22: e004 b.n 8006f2e else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 8006f24: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006f28: 489b ldr r0, [pc, #620] ; (8007198 ) 8006f2a: f7fb f97d bl 8002228 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 if(menupos == Set_100) 8006f3a: 4b96 ldr r3, [pc, #600] ; (8007194 ) 8006f3c: 781b ldrb r3, [r3, #0] 8006f3e: b2db uxtb r3, r3 8006f40: 2b01 cmp r3, #1 8006f42: d106 bne.n 8006f52 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 8006f50: e004 b.n 8006f5c else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 8006f52: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006f56: 4890 ldr r0, [pc, #576] ; (8007198 ) 8006f58: f7fb f966 bl 8002228 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 if(menupos == Set10) 8006f68: 4b8a ldr r3, [pc, #552] ; (8007194 ) 8006f6a: 781b ldrb r3, [r3, #0] 8006f6c: b2db uxtb r3, r3 8006f6e: 2b02 cmp r3, #2 8006f70: d106 bne.n 8006f80 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 8006f7e: e004 b.n 8006f8a else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 8006f80: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006f84: 4884 ldr r0, [pc, #528] ; (8007198 ) 8006f86: f7fb f94f bl 8002228 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 if(menupos == Set_10) 8006f96: 4b7f ldr r3, [pc, #508] ; (8007194 ) 8006f98: 781b ldrb r3, [r3, #0] 8006f9a: b2db uxtb r3, r3 8006f9c: 2b03 cmp r3, #3 8006f9e: d106 bne.n 8006fae 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 8006fac: e004 b.n 8006fb8 else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 8006fae: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006fb2: 4879 ldr r0, [pc, #484] ; (8007198 ) 8006fb4: f7fb f938 bl 8002228 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 if(menupos == Set1) 8006fc4: 4b73 ldr r3, [pc, #460] ; (8007194 ) 8006fc6: 781b ldrb r3, [r3, #0] 8006fc8: b2db uxtb r3, r3 8006fca: 2b04 cmp r3, #4 8006fcc: d106 bne.n 8006fdc 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 8006fda: e004 b.n 8006fe6 else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 8006fdc: f04f 417f mov.w r1, #4278190080 ; 0xff000000 8006fe0: 486d ldr r0, [pc, #436] ; (8007198 ) 8006fe2: f7fb f921 bl 8002228 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 if(menupos == Set_1) 8006ff2: 4b68 ldr r3, [pc, #416] ; (8007194 ) 8006ff4: 781b ldrb r3, [r3, #0] 8006ff6: b2db uxtb r3, r3 8006ff8: 2b05 cmp r3, #5 8006ffa: d106 bne.n 800700a 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 8007008: e004 b.n 8007014 else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 800700a: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800700e: 4862 ldr r0, [pc, #392] ; (8007198 ) 8007010: f7fb f90a bl 8002228 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 if(menupos == Next) 8007020: 4b5c ldr r3, [pc, #368] ; (8007194 ) 8007022: 781b ldrb r3, [r3, #0] 8007024: b2db uxtb r3, r3 8007026: 2b06 cmp r3, #6 8007028: d106 bne.n 8007038 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 8007036: e004 b.n 8007042 else LCD_SetColors(LCD_COLOR_GRAY, LCD_COLOR_BLACK); 8007038: f04f 417f mov.w r1, #4278190080 ; 0xff000000 800703c: 4856 ldr r0, [pc, #344] ; (8007198 ) 800703e: f7fb f8f3 bl 8002228 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 //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// if(menupos == Set100) 800704e: 4b51 ldr r3, [pc, #324] ; (8007194 ) 8007050: 781b ldrb r3, [r3, #0] 8007052: b2db uxtb r3, r3 8007054: 2b00 cmp r3, #0 8007056: d106 bne.n 8007066 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 8007064: e004 b.n 8007070 else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY); 8007066: 494c ldr r1, [pc, #304] ; (8007198 ) 8007068: f04f 407f mov.w r0, #4278190080 ; 0xff000000 800706c: f7fb f8dc bl 8002228 BSP_LCD_DisplayStringAt(160, 40+5, "+100", CENTER_MODE); 8007070: 2301 movs r3, #1 8007072: 4a4a ldr r2, [pc, #296] ; (800719c ) 8007074: 212d movs r1, #45 ; 0x2d 8007076: 20a0 movs r0, #160 ; 0xa0 8007078: f7fb f99c bl 80023b4 if(menupos == Set_100) 800707c: 4b45 ldr r3, [pc, #276] ; (8007194 ) 800707e: 781b ldrb r3, [r3, #0] 8007080: b2db uxtb r3, r3 8007082: 2b01 cmp r3, #1 8007084: d106 bne.n 8007094 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 8007092: e004 b.n 800709e else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY); 8007094: 4940 ldr r1, [pc, #256] ; (8007198 ) 8007096: f04f 407f mov.w r0, #4278190080 ; 0xff000000 800709a: f7fb f8c5 bl 8002228 BSP_LCD_DisplayStringAt(160, 65+5, "-100", CENTER_MODE); 800709e: 2301 movs r3, #1 80070a0: 4a3f ldr r2, [pc, #252] ; (80071a0 ) 80070a2: 2146 movs r1, #70 ; 0x46 80070a4: 20a0 movs r0, #160 ; 0xa0 80070a6: f7fb f985 bl 80023b4 if(menupos == Set10) 80070aa: 4b3a ldr r3, [pc, #232] ; (8007194 ) 80070ac: 781b ldrb r3, [r3, #0] 80070ae: b2db uxtb r3, r3 80070b0: 2b02 cmp r3, #2 80070b2: d106 bne.n 80070c2 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 80070c0: e004 b.n 80070cc else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY); 80070c2: 4935 ldr r1, [pc, #212] ; (8007198 ) 80070c4: f04f 407f mov.w r0, #4278190080 ; 0xff000000 80070c8: f7fb f8ae bl 8002228 BSP_LCD_DisplayStringAt(160, 90+5, "+10", CENTER_MODE); 80070cc: 2301 movs r3, #1 80070ce: 4a35 ldr r2, [pc, #212] ; (80071a4 ) 80070d0: 215f movs r1, #95 ; 0x5f 80070d2: 20a0 movs r0, #160 ; 0xa0 80070d4: f7fb f96e bl 80023b4 if(menupos == Set_10) 80070d8: 4b2e ldr r3, [pc, #184] ; (8007194 ) 80070da: 781b ldrb r3, [r3, #0] 80070dc: b2db uxtb r3, r3 80070de: 2b03 cmp r3, #3 80070e0: d106 bne.n 80070f0 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 80070ee: e004 b.n 80070fa else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY); 80070f0: 4929 ldr r1, [pc, #164] ; (8007198 ) 80070f2: f04f 407f mov.w r0, #4278190080 ; 0xff000000 80070f6: f7fb f897 bl 8002228 BSP_LCD_DisplayStringAt(160, 115+5, "-10", CENTER_MODE); 80070fa: 2301 movs r3, #1 80070fc: 4a2a ldr r2, [pc, #168] ; (80071a8 ) 80070fe: 2178 movs r1, #120 ; 0x78 8007100: 20a0 movs r0, #160 ; 0xa0 8007102: f7fb f957 bl 80023b4 if(menupos == Set1) 8007106: 4b23 ldr r3, [pc, #140] ; (8007194 ) 8007108: 781b ldrb r3, [r3, #0] 800710a: b2db uxtb r3, r3 800710c: 2b04 cmp r3, #4 800710e: d106 bne.n 800711e 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 800711c: e004 b.n 8007128 else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY); 800711e: 491e ldr r1, [pc, #120] ; (8007198 ) 8007120: f04f 407f mov.w r0, #4278190080 ; 0xff000000 8007124: f7fb f880 bl 8002228 BSP_LCD_DisplayStringAt(160, 140+5, "+1", CENTER_MODE); 8007128: 2301 movs r3, #1 800712a: 4a20 ldr r2, [pc, #128] ; (80071ac ) 800712c: 2191 movs r1, #145 ; 0x91 800712e: 20a0 movs r0, #160 ; 0xa0 8007130: f7fb f940 bl 80023b4 if(menupos == Set_1) 8007134: 4b17 ldr r3, [pc, #92] ; (8007194 ) 8007136: 781b ldrb r3, [r3, #0] 8007138: b2db uxtb r3, r3 800713a: 2b05 cmp r3, #5 800713c: d106 bne.n 800714c 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 800714a: e004 b.n 8007156 else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY); 800714c: 4912 ldr r1, [pc, #72] ; (8007198 ) 800714e: f04f 407f mov.w r0, #4278190080 ; 0xff000000 8007152: f7fb f869 bl 8002228 BSP_LCD_DisplayStringAt(160, 165+5, "-1", CENTER_MODE); 8007156: 2301 movs r3, #1 8007158: 4a15 ldr r2, [pc, #84] ; (80071b0 ) 800715a: 21aa movs r1, #170 ; 0xaa 800715c: 20a0 movs r0, #160 ; 0xa0 800715e: f7fb f929 bl 80023b4 if(menupos == Next) 8007162: 4b0c ldr r3, [pc, #48] ; (8007194 ) 8007164: 781b ldrb r3, [r3, #0] 8007166: b2db uxtb r3, r3 8007168: 2b06 cmp r3, #6 800716a: d106 bne.n 800717a 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 8007178: e004 b.n 8007184 else LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_GRAY); 800717a: 4907 ldr r1, [pc, #28] ; (8007198 ) 800717c: f04f 407f mov.w r0, #4278190080 ; 0xff000000 8007180: f7fb f852 bl 8002228 BSP_LCD_DisplayStringAt(160, 190+5, "Далее", CENTER_MODE); 8007184: 2301 movs r3, #1 8007186: 4a0b ldr r2, [pc, #44] ; (80071b4 ) 8007188: 21c3 movs r1, #195 ; 0xc3 800718a: 20a0 movs r0, #160 ; 0xa0 800718c: f7fb f912 bl 80023b4 } 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 : /* 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 ) 80071c0: 4b0e ldr r3, [pc, #56] ; (80071fc ) 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 ) 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 ) 80071d8: 4b08 ldr r3, [pc, #32] ; (80071fc ) 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 ) 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 : /******************************************************************************/ /** * @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 08007206 : /** * @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 0800720c : /** * @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 08007212 : /** * @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 08007218 : /** * @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 0800721e : /** * @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 : /** * @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 : /** * @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 : /** * @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 /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } 8007250: bf00 nop 8007252: bd80 pop {r7, pc} 08007254 : /** * @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 /* USER CODE BEGIN EXTI2_IRQn 1 */ /* USER CODE END EXTI2_IRQn 1 */ } 800725e: bf00 nop 8007260: bd80 pop {r7, pc} 08007262 : /** * @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 /* USER CODE BEGIN EXTI3_IRQn 1 */ /* USER CODE END EXTI3_IRQn 1 */ } 800726c: bf00 nop 800726e: bd80 pop {r7, pc} 08007270 : /** * @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 ) 8007276: f003 ff89 bl 800b18c /* 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 : * @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 ) 800728a: f001 fc11 bl 8008ab0 /* 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 : /** * @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 ) 800729e: f001 fc07 bl 8008ab0 /* 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 : /** * @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 ) 80072b2: f002 faf1 bl 8009898 /* 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 : /** * @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 ) 80072c6: f002 fae7 bl 8009898 /* 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 : * 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 ) 80072da: 4b06 ldr r3, [pc, #24] ; (80072f4 ) 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 : } /* 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 ) 8007300: 4a16 ldr r2, [pc, #88] ; (800735c ) 8007302: 601a str r2, [r3, #0] htim7.Init.Prescaler = (10 - 1); 8007304: 4b14 ldr r3, [pc, #80] ; (8007358 ) 8007306: 2209 movs r2, #9 8007308: 605a str r2, [r3, #4] htim7.Init.CounterMode = TIM_COUNTERMODE_UP; 800730a: 4b13 ldr r3, [pc, #76] ; (8007358 ) 800730c: 2200 movs r2, #0 800730e: 609a str r2, [r3, #8] htim7.Init.Period = (54000 - 1); 8007310: 4b11 ldr r3, [pc, #68] ; (8007358 ) 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 ) 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 ) 8007320: f003 fe64 bl 800afec 8007324: 4603 mov r3, r0 8007326: 2b00 cmp r3, #0 8007328: d001 beq.n 800732e Error_Handler(); 800732a: f7fb ffb3 bl 8003294 } 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 ) 800733c: f004 f90e bl 800b55c 8007340: 4603 mov r3, r0 8007342: 2b00 cmp r3, #0 8007344: d001 beq.n 800734a Error_Handler(); 8007346: f7fb ffa5 bl 8003294 } HAL_TIM_Base_Start_IT(&htim7); 800734a: 4803 ldr r0, [pc, #12] ; (8007358 ) 800734c: f003 fea6 bl 800b09c } 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 : 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 ) 800736e: 4293 cmp r3, r2 8007370: d10c bne.n 800738c { __HAL_RCC_TIM1_CLK_ENABLE(); 8007372: 4a1f ldr r2, [pc, #124] ; (80073f0 ) 8007374: 4b1e ldr r3, [pc, #120] ; (80073f0 ) 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 ) 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 if(tim_baseHandle->Instance == TIM5) 800738c: 687b ldr r3, [r7, #4] 800738e: 681b ldr r3, [r3, #0] 8007390: 4a18 ldr r2, [pc, #96] ; (80073f4 ) 8007392: 4293 cmp r3, r2 8007394: d10c bne.n 80073b0 __HAL_RCC_TIM5_CLK_ENABLE(); 8007396: 4a16 ldr r2, [pc, #88] ; (80073f0 ) 8007398: 4b15 ldr r3, [pc, #84] ; (80073f0 ) 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 ) 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 if(tim_baseHandle->Instance == TIM7) 80073b0: 687b ldr r3, [r7, #4] 80073b2: 681b ldr r3, [r3, #0] 80073b4: 4a10 ldr r2, [pc, #64] ; (80073f8 ) 80073b6: 4293 cmp r3, r2 80073b8: d113 bne.n 80073e2 __HAL_RCC_TIM7_CLK_ENABLE(); 80073ba: 4a0d ldr r2, [pc, #52] ; (80073f0 ) 80073bc: 4b0c ldr r3, [pc, #48] ; (80073f0 ) 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 ) 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_EnableIRQ(TIM7_IRQn); 80073dc: 2037 movs r0, #55 ; 0x37 80073de: f001 faac bl 800893a } 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 : __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 ) 800740c: 429a cmp r2, r3 800740e: d000 beq.n 8007412 if(repeat) repeat--; break; } } 8007410: e060 b.n 80074d4 __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 ) 800741e: 881b ldrh r3, [r3, #0] 8007420: b29b uxth r3, r3 8007422: 2b00 cmp r3, #0 8007424: d007 beq.n 8007436 timerKeys--; 8007426: 4b2e ldr r3, [pc, #184] ; (80074e0 ) 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 ) 8007432: 801a strh r2, [r3, #0] 8007434: e00b b.n 800744e timerKeys = 2; 8007436: 4b2a ldr r3, [pc, #168] ; (80074e0 ) 8007438: 2202 movs r2, #2 800743a: 801a strh r2, [r3, #0] if(!KEY_STATE) 800743c: 4b29 ldr r3, [pc, #164] ; (80074e4 ) 800743e: 681b ldr r3, [r3, #0] 8007440: 2b00 cmp r3, #0 8007442: d104 bne.n 800744e KEY_STATE = kbhit(); 8007444: f7f9 fa86 bl 8000954 8007448: 4602 mov r2, r0 800744a: 4b26 ldr r3, [pc, #152] ; (80074e4 ) 800744c: 601a str r2, [r3, #0] if(timerRefreshScreen) 800744e: 4b26 ldr r3, [pc, #152] ; (80074e8 ) 8007450: 881b ldrh r3, [r3, #0] 8007452: b29b uxth r3, r3 8007454: 2b00 cmp r3, #0 8007456: d007 beq.n 8007468 timerRefreshScreen--; 8007458: 4b23 ldr r3, [pc, #140] ; (80074e8 ) 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 ) 8007464: 801a strh r2, [r3, #0] 8007466: e028 b.n 80074ba timerRefreshScreen = MSEC_REFRESH[0]; 8007468: 220a movs r2, #10 800746a: 4b1f ldr r3, [pc, #124] ; (80074e8 ) 800746c: 801a strh r2, [r3, #0] Cursorblink ^= 1; 800746e: 4b1f ldr r3, [pc, #124] ; (80074ec ) 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 ) 800747c: 701a strb r2, [r3, #0] if(cntblink) 800747e: 4b1c ldr r3, [pc, #112] ; (80074f0 ) 8007480: 881b ldrh r3, [r3, #0] 8007482: b29b uxth r3, r3 8007484: 2b00 cmp r3, #0 8007486: d007 beq.n 8007498 cntblink--; 8007488: 4b19 ldr r3, [pc, #100] ; (80074f0 ) 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 ) 8007494: 801a strh r2, [r3, #0] 8007496: e00d b.n 80074b4 cntblink = 2; 8007498: 4b15 ldr r3, [pc, #84] ; (80074f0 ) 800749a: 2202 movs r2, #2 800749c: 801a strh r2, [r3, #0] blink ^= 1; 800749e: 4b15 ldr r3, [pc, #84] ; (80074f4 ) 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 ) 80074ac: 701a strb r2, [r3, #0] cntBat = 1; 80074ae: 4b12 ldr r3, [pc, #72] ; (80074f8 ) 80074b0: 2201 movs r2, #1 80074b2: 701a strb r2, [r3, #0] screen = true; 80074b4: 4b11 ldr r3, [pc, #68] ; (80074fc ) 80074b6: 2201 movs r2, #1 80074b8: 701a strb r2, [r3, #0] if(repeat) 80074ba: 4b11 ldr r3, [pc, #68] ; (8007500 ) 80074bc: 881b ldrh r3, [r3, #0] 80074be: b29b uxth r3, r3 80074c0: 2b00 cmp r3, #0 80074c2: d006 beq.n 80074d2 repeat--; 80074c4: 4b0e ldr r3, [pc, #56] ; (8007500 ) 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 ) 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 : 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 ) 800750a: 4a48 ldr r2, [pc, #288] ; (800762c ) 800750c: 601a str r2, [r3, #0] huart7.Init.BaudRate = BAUDRATE[pardata.BAUD]; 800750e: 4b48 ldr r3, [pc, #288] ; (8007630 ) 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 ) 800751a: f853 3022 ldr.w r3, [r3, r2, lsl #2] 800751e: 4a42 ldr r2, [pc, #264] ; (8007628 ) 8007520: 6053 str r3, [r2, #4] switch(pardata.INFB) 8007522: 4b43 ldr r3, [pc, #268] ; (8007630 ) 8007524: f8b3 3204 ldrh.w r3, [r3, #516] ; 0x204 8007528: b29b uxth r3, r3 800752a: 2b01 cmp r3, #1 800752c: d00a beq.n 8007544 800752e: 2b02 cmp r3, #2 8007530: d011 beq.n 8007556 8007532: 2b00 cmp r3, #0 8007534: d118 bne.n 8007568 { case 0: //NONE huart7.Init.WordLength = UART_WORDLENGTH_8B; 8007536: 4b3c ldr r3, [pc, #240] ; (8007628 ) 8007538: 2200 movs r2, #0 800753a: 609a str r2, [r3, #8] huart7.Init.Parity = UART_PARITY_NONE; 800753c: 4b3a ldr r3, [pc, #232] ; (8007628 ) 800753e: 2200 movs r2, #0 8007540: 611a str r2, [r3, #16] break; 8007542: e011 b.n 8007568 case 1: //ODD huart7.Init.WordLength = UART_WORDLENGTH_9B; 8007544: 4b38 ldr r3, [pc, #224] ; (8007628 ) 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 ) 800754e: f44f 62c0 mov.w r2, #1536 ; 0x600 8007552: 611a str r2, [r3, #16] break; 8007554: e008 b.n 8007568 case 2: //EVEN huart7.Init.WordLength = UART_WORDLENGTH_9B; 8007556: 4b34 ldr r3, [pc, #208] ; (8007628 ) 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 ) 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 ) 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 ) 8007570: 220c movs r2, #12 8007572: 615a str r2, [r3, #20] huart7.Init.HwFlowCtl = UART_HWCONTROL_NONE; 8007574: 4b2c ldr r3, [pc, #176] ; (8007628 ) 8007576: 2200 movs r2, #0 8007578: 619a str r2, [r3, #24] if(pardata.BAUD < 9) 800757a: 4b2d ldr r3, [pc, #180] ; (8007630 ) 800757c: f8b3 3202 ldrh.w r3, [r3, #514] ; 0x202 8007580: b29b uxth r3, r3 8007582: 2b08 cmp r3, #8 8007584: d803 bhi.n 800758e huart7.Init.OverSampling = UART_OVERSAMPLING_16; 8007586: 4b28 ldr r3, [pc, #160] ; (8007628 ) 8007588: 2200 movs r2, #0 800758a: 61da str r2, [r3, #28] 800758c: e003 b.n 8007596 else huart7.Init.OverSampling = UART_OVERSAMPLING_8; 800758e: 4b26 ldr r3, [pc, #152] ; (8007628 ) 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 ) 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 ) 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 ) 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 ) 80075ac: f004 f882 bl 800b6b4 80075b0: 4603 mov r3, r0 80075b2: 2b00 cmp r3, #0 80075b4: d001 beq.n 80075ba Error_Handler(); 80075b6: f7fb fe6d bl 8003294 } if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_ORE)) 80075ba: 4b1b ldr r3, [pc, #108] ; (8007628 ) 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 __HAL_UART_CLEAR_OREFLAG(&huart7); 80075c8: 4b17 ldr r3, [pc, #92] ; (8007628 ) 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 ) 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 __HAL_UART_CLEAR_PEFLAG(&huart7); 80075de: 4b12 ldr r3, [pc, #72] ; (8007628 ) 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 ) 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 __HAL_UART_CLEAR_FEFLAG(&huart7); 80075f4: 4b0c ldr r3, [pc, #48] ; (8007628 ) 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 ) 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 __HAL_UART_CLEAR_NEFLAG(&huart7); 800760a: 4b07 ldr r3, [pc, #28] ; (8007628 ) 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 ) 800761a: f002 f83b bl 8009694 HAL_Delay(1); 800761e: 2001 movs r0, #1 8007620: f001 f852 bl 80086c8 //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_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 ) 800765a: 4293 cmp r3, r2 800765c: d12f bne.n 80076be { __HAL_RCC_UART7_CLK_ENABLE(); 800765e: 4a1b ldr r2, [pc, #108] ; (80076cc ) 8007660: 4b1a ldr r3, [pc, #104] ; (80076cc ) 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 ) 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 ) 8007678: 4b14 ldr r3, [pc, #80] ; (80076cc ) 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 ) 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 ) 80076aa: f001 fe31 bl 8009310 /* 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_EnableIRQ(UART7_IRQn); 80076b8: 2052 movs r0, #82 ; 0x52 80076ba: f001 f93e bl 800893a } } 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 : } } 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 ) 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 80076e6: 4b23 ldr r3, [pc, #140] ; (8007774 ) 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 { HAL_UART_RxCpltCallback(&huart7); 80076f4: 481f ldr r0, [pc, #124] ; (8007774 ) 80076f6: f000 f8ad bl 8007854 80076fa: e002 b.n 8007702 } else { HAL_UART_IRQHandler(&huart7); 80076fc: 481d ldr r0, [pc, #116] ; (8007774 ) 80076fe: f004 fa8b bl 800bc18 } if(__HAL_UART_GET_FLAG(&huart7, UART_FLAG_ORE)) 8007702: 4b1c ldr r3, [pc, #112] ; (8007774 ) 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 __HAL_UART_CLEAR_OREFLAG(&huart7); 8007710: 4b18 ldr r3, [pc, #96] ; (8007774 ) 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 ) 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 __HAL_UART_CLEAR_PEFLAG(&huart7); 8007726: 4b13 ldr r3, [pc, #76] ; (8007774 ) 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 ) 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 __HAL_UART_CLEAR_FEFLAG(&huart7); 800773c: 4b0d ldr r3, [pc, #52] ; (8007774 ) 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 ) 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 __HAL_UART_CLEAR_NEFLAG(&huart7); 8007752: 4b08 ldr r3, [pc, #32] ; (8007774 ) 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 ) 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 __HAL_UART_CLEAR_IDLEFLAG(&huart7); 8007768: 4b02 ldr r3, [pc, #8] ; (8007774 ) 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 : 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 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 ) 800779c: 5c41 ldrb r1, [r0, r1] 800779e: 404b eors r3, r1 80077a0: 490a ldr r1, [pc, #40] ; (80077cc ) 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 } 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 : 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 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 ) 80077f4: 5c41 ldrb r1, [r0, r1] 80077f6: 404b eors r3, r1 80077f8: 490a ldr r1, [pc, #40] ; (8007824 ) 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 } 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 : 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 ) 8007838: f001 ff2c bl 8009694 TX_OK = true; 800783c: 4b04 ldr r3, [pc, #16] ; (8007850 ) 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 : 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 ) 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 : 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 ) 8007880: 460a mov r2, r1 8007882: 701a strb r2, [r3, #0] 8007884: 4b0a ldr r3, [pc, #40] ; (80078b0 ) 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 ) 8007892: f001 feff bl 8009694 HAL_UART_Abort_IT(&huart7); 8007896: 4808 ldr r0, [pc, #32] ; (80078b8 ) 8007898: f004 f898 bl 800b9cc UART_ERROR = true; 800789c: 4b07 ldr r3, [pc, #28] ; (80078bc ) 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 : //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// 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 ) 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 __HAL_UART_CLEAR_OREFLAG(&huart7); 80078e4: 4b57 ldr r3, [pc, #348] ; (8007a44 ) 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 ) 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 __HAL_UART_CLEAR_PEFLAG(&huart7); 80078fa: 4b52 ldr r3, [pc, #328] ; (8007a44 ) 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 ) 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 __HAL_UART_CLEAR_FEFLAG(&huart7); 8007910: 4b4c ldr r3, [pc, #304] ; (8007a44 ) 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 ) 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 __HAL_UART_CLEAR_NEFLAG(&huart7); 8007926: 4b47 ldr r3, [pc, #284] ; (8007a44 ) 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 TX_OK = RX_OK = UART_ERROR = false; 8007934: 2200 movs r2, #0 8007936: 4b44 ldr r3, [pc, #272] ; (8007a48 ) 8007938: 4611 mov r1, r2 800793a: 7019 strb r1, [r3, #0] 800793c: 4b43 ldr r3, [pc, #268] ; (8007a4c ) 800793e: 4611 mov r1, r2 8007940: 7019 strb r1, [r3, #0] 8007942: 4b43 ldr r3, [pc, #268] ; (8007a50 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 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 ) 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 ) 80079d0: 5499 strb r1, [r3, r2] timeout = HAL_GetTick(); 80079d2: f000 fe6d bl 80086b0 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 ) 80079e2: f001 fe57 bl 8009694 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 ) 80079ec: 4815 ldr r0, [pc, #84] ; (8007a44 ) 80079ee: f003 ff7f bl 800b8f0 80079f2: 4603 mov r3, r0 80079f4: 2b00 cmp r3, #0 80079f6: f040 8100 bne.w 8007bfa { while((!TX_OK) && (HAL_GetTick() - timeout < 50)); 80079fa: bf00 nop 80079fc: 4b14 ldr r3, [pc, #80] ; (8007a50 ) 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 8007a0c: f000 fe50 bl 80086b0 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 if(!TX_OK) 8007a1a: 4b0d ldr r3, [pc, #52] ; (8007a50 ) 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 { HAL_UART_Abort_IT(&huart7); 8007a2a: 4806 ldr r0, [pc, #24] ; (8007a44 ) 8007a2c: f003 ffce bl 800b9cc 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 ) 8007a38: f001 fe2c bl 8009694 return (-1); 8007a3c: f04f 33ff mov.w r3, #4294967295 8007a40: e0dd b.n 8007bfe 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 ) 8007a64: f001 fe16 bl 8009694 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 ) 8007a6e: 4868 ldr r0, [pc, #416] ; (8007c10 ) 8007a70: f003 fe6e bl 800b750 //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 ) 8007a7a: 4865 ldr r0, [pc, #404] ; (8007c10 ) 8007a7c: f003 fe68 bl 800b750 8007a80: 4603 mov r3, r0 8007a82: 2b00 cmp r3, #0 8007a84: f040 80b0 bne.w 8007be8 { crc = (uint16_t) ((rx[22]) << 8 | rx[21]); 8007a88: 4b60 ldr r3, [pc, #384] ; (8007c0c ) 8007a8a: 7d9b ldrb r3, [r3, #22] 8007a8c: 021b lsls r3, r3, #8 8007a8e: b21a sxth r2, r3 8007a90: 4b5e ldr r3, [pc, #376] ; (8007c0c ) 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 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 { pardata.amplif[ch].IIN = (uint16_t) ((rx[3]) << 8 | rx[4]); 8007aae: 79fb ldrb r3, [r7, #7] 8007ab0: 4a56 ldr r2, [pc, #344] ; (8007c0c ) 8007ab2: 78d2 ldrb r2, [r2, #3] 8007ab4: 0212 lsls r2, r2, #8 8007ab6: b211 sxth r1, r2 8007ab8: 4a54 ldr r2, [pc, #336] ; (8007c0c ) 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 ) 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 ) 8007ad2: 7952 ldrb r2, [r2, #5] 8007ad4: 0212 lsls r2, r2, #8 8007ad6: b211 sxth r1, r2 8007ad8: 4a4c ldr r2, [pc, #304] ; (8007c0c ) 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 ) 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 ) 8007af4: 79d2 ldrb r2, [r2, #7] 8007af6: 0212 lsls r2, r2, #8 8007af8: b211 sxth r1, r2 8007afa: 4a44 ldr r2, [pc, #272] ; (8007c0c ) 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 ) 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 ) 8007b16: 7a52 ldrb r2, [r2, #9] 8007b18: 0212 lsls r2, r2, #8 8007b1a: b211 sxth r1, r2 8007b1c: 4a3b ldr r2, [pc, #236] ; (8007c0c ) 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 ) 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 ) 8007b38: 7ad2 ldrb r2, [r2, #11] 8007b3a: 0212 lsls r2, r2, #8 8007b3c: b211 sxth r1, r2 8007b3e: 4a33 ldr r2, [pc, #204] ; (8007c0c ) 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 ) 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 ) 8007b5a: 7b52 ldrb r2, [r2, #13] 8007b5c: 0212 lsls r2, r2, #8 8007b5e: b211 sxth r1, r2 8007b60: 4a2a ldr r2, [pc, #168] ; (8007c0c ) 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 ) 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 ) 8007b7c: 7bd2 ldrb r2, [r2, #15] 8007b7e: 0212 lsls r2, r2, #8 8007b80: b211 sxth r1, r2 8007b82: 4a22 ldr r2, [pc, #136] ; (8007c0c ) 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 ) 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 ) 8007b9e: 7c52 ldrb r2, [r2, #17] 8007ba0: 0212 lsls r2, r2, #8 8007ba2: b211 sxth r1, r2 8007ba4: 4a19 ldr r2, [pc, #100] ; (8007c0c ) 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 ) 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 ) 8007bc0: 7cd2 ldrb r2, [r2, #19] 8007bc2: 0212 lsls r2, r2, #8 8007bc4: b211 sxth r1, r2 8007bc6: 4a11 ldr r2, [pc, #68] ; (8007c0c ) 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 ) 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 } else { return (-1); 8007be2: f04f 33ff mov.w r3, #4294967295 8007be6: e00a b.n 8007bfe } } 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 ) 8007bf0: f001 fd50 bl 8009694 return (-1); 8007bf4: f04f 33ff mov.w r3, #4294967295 8007bf8: e001 b.n 8007bfe } } 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 : 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 ) 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 __HAL_UART_CLEAR_OREFLAG(&huart7); 8007c38: 4ba5 ldr r3, [pc, #660] ; (8007ed0 ) 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 ) 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 __HAL_UART_CLEAR_PEFLAG(&huart7); 8007c4e: 4ba0 ldr r3, [pc, #640] ; (8007ed0 ) 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 ) 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 __HAL_UART_CLEAR_FEFLAG(&huart7); 8007c64: 4b9a ldr r3, [pc, #616] ; (8007ed0 ) 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 ) 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 __HAL_UART_CLEAR_NEFLAG(&huart7); 8007c7a: 4b95 ldr r3, [pc, #596] ; (8007ed0 ) 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 TX_OK = RX_OK = UART_ERROR = false; 8007c88: 2200 movs r2, #0 8007c8a: 4b92 ldr r3, [pc, #584] ; (8007ed4 ) 8007c8c: 4611 mov r1, r2 8007c8e: 7019 strb r1, [r3, #0] 8007c90: 4b91 ldr r3, [pc, #580] ; (8007ed8 ) 8007c92: 4611 mov r1, r2 8007c94: 7019 strb r1, [r3, #0] 8007c96: 4b91 ldr r3, [pc, #580] ; (8007edc ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 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 ) 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 ) 8007eaa: 5499 strb r1, [r3, r2] timeout = HAL_GetTick(); 8007eac: f000 fc00 bl 80086b0 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 ) 8007ebc: f001 fbea bl 8009694 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 ) 8007ec6: 4802 ldr r0, [pc, #8] ; (8007ed0 ) 8007ec8: f003 fd12 bl 800b8f0 8007ecc: e00e b.n 8007eec 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 { while((!TX_OK) && (HAL_GetTick() - timeout < 200)); 8007ef2: bf00 nop 8007ef4: 4b34 ldr r3, [pc, #208] ; (8007fc8 ) 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 8007f04: f000 fbd4 bl 80086b0 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 if(!TX_OK) 8007f12: 4b2d ldr r3, [pc, #180] ; (8007fc8 ) 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 { HAL_UART_Abort_IT(&huart7); 8007f22: 482a ldr r0, [pc, #168] ; (8007fcc ) 8007f24: f003 fd52 bl 800b9cc 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 ) 8007f30: f001 fbb0 bl 8009694 return (-1); 8007f34: f04f 33ff mov.w r3, #4294967295 8007f38: e041 b.n 8007fbe } 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 ) 8007f42: f001 fba7 bl 8009694 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 ) 8007f4c: 481f ldr r0, [pc, #124] ; (8007fcc ) 8007f4e: f003 fbff bl 800b750 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 ) 8007f5a: 481c ldr r0, [pc, #112] ; (8007fcc ) 8007f5c: f003 fbf8 bl 800b750 8007f60: 4603 mov r3, r0 8007f62: 2b00 cmp r3, #0 8007f64: d120 bne.n 8007fa8 { crc = (uint16_t) ((rx[7]) << 8 | rx[6]); 8007f66: 4b1b ldr r3, [pc, #108] ; (8007fd4 ) 8007f68: 79db ldrb r3, [r3, #7] 8007f6a: 021b lsls r3, r3, #8 8007f6c: b21a sxth r2, r3 8007f6e: 4b19 ldr r3, [pc, #100] ; (8007fd4 ) 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 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 { if(rx[0] == (ch + 1)) 8007f8a: 4b12 ldr r3, [pc, #72] ; (8007fd4 ) 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 return 0; 8007f98: 2300 movs r3, #0 8007f9a: e010 b.n 8007fbe else return (-1); 8007f9c: f04f 33ff mov.w r3, #4294967295 8007fa0: e00d b.n 8007fbe } else { return (-1); 8007fa2: f04f 33ff mov.w r3, #4294967295 8007fa6: e00a b.n 8007fbe } } 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 ) 8007fb0: f001 fb70 bl 8009694 return (-1); 8007fb4: f04f 33ff mov.w r3, #4294967295 8007fb8: e001 b.n 8007fbe } } 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 : 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 ) 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 __HAL_UART_CLEAR_OREFLAG(&huart7); 8007ffe: 4b8c ldr r3, [pc, #560] ; (8008230 ) 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 ) 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 __HAL_UART_CLEAR_PEFLAG(&huart7); 8008014: 4b86 ldr r3, [pc, #536] ; (8008230 ) 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 ) 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 __HAL_UART_CLEAR_FEFLAG(&huart7); 800802a: 4b81 ldr r3, [pc, #516] ; (8008230 ) 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 ) 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 __HAL_UART_CLEAR_NEFLAG(&huart7); 8008040: 4b7b ldr r3, [pc, #492] ; (8008230 ) 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 TX_OK = RX_OK = UART_ERROR = false; 800804e: 2200 movs r2, #0 8008050: 4b78 ldr r3, [pc, #480] ; (8008234 ) 8008052: 4611 mov r1, r2 8008054: 7019 strb r1, [r3, #0] 8008056: 4b78 ldr r3, [pc, #480] ; (8008238 ) 8008058: 4611 mov r1, r2 800805a: 7019 strb r1, [r3, #0] 800805c: 4b77 ldr r3, [pc, #476] ; (800823c ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 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 ) 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 ) 80080f2: 5499 strb r1, [r3, r2] 80080f4: e006 b.n 8008104 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 ) 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 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 ) 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 ) 8008132: 5499 strb r1, [r3, r2] timeout = HAL_GetTick(); 8008134: f000 fabc bl 80086b0 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 ) 8008144: f001 faa6 bl 8009694 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 ) 800814e: 4838 ldr r0, [pc, #224] ; (8008230 ) 8008150: f003 fbce bl 800b8f0 8008154: 4603 mov r3, r0 8008156: 2b00 cmp r3, #0 8008158: d163 bne.n 8008222 { while((!TX_OK) && (HAL_GetTick() - timeout < 200)); 800815a: bf00 nop 800815c: 4b37 ldr r3, [pc, #220] ; (800823c ) 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 800816c: f000 faa0 bl 80086b0 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 if(!TX_OK) 800817a: 4b30 ldr r3, [pc, #192] ; (800823c ) 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 { HAL_UART_Abort_IT(&huart7); 800818a: 4829 ldr r0, [pc, #164] ; (8008230 ) 800818c: f003 fc1e bl 800b9cc 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 ) 8008198: f001 fa7c bl 8009694 return (-1); 800819c: f04f 33ff mov.w r3, #4294967295 80081a0: e041 b.n 8008226 } 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 ) 80081aa: f001 fa73 bl 8009694 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 ) 80081b4: 481e ldr r0, [pc, #120] ; (8008230 ) 80081b6: f003 facb bl 800b750 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 ) 80081c2: 481b ldr r0, [pc, #108] ; (8008230 ) 80081c4: f003 fac4 bl 800b750 80081c8: 4603 mov r3, r0 80081ca: 2b00 cmp r3, #0 80081cc: d120 bne.n 8008210 { crc = (uint16_t) ((rx[7]) << 8 | rx[6]); 80081ce: 4b1f ldr r3, [pc, #124] ; (800824c ) 80081d0: 79db ldrb r3, [r3, #7] 80081d2: 021b lsls r3, r3, #8 80081d4: b21a sxth r2, r3 80081d6: 4b1d ldr r3, [pc, #116] ; (800824c ) 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 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 { if(rx[0] == (ch + 1)) 80081f2: 4b16 ldr r3, [pc, #88] ; (800824c ) 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 return 0; 8008200: 2300 movs r3, #0 8008202: e010 b.n 8008226 else return (-1); 8008204: f04f 33ff mov.w r3, #4294967295 8008208: e00d b.n 8008226 } else { return (-1); 800820a: f04f 33ff mov.w r3, #4294967295 800820e: e00a b.n 8008226 } } 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 ) 8008218: f001 fa3c bl 8009694 return (-1); 800821c: f04f 33ff mov.w r3, #4294967295 8008220: e001 b.n 8008226 } } 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 : 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 ) 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 __HAL_UART_CLEAR_OREFLAG(&huart7); 8008278: 4b87 ldr r3, [pc, #540] ; (8008498 ) 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 ) 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 __HAL_UART_CLEAR_PEFLAG(&huart7); 800828e: 4b82 ldr r3, [pc, #520] ; (8008498 ) 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 ) 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 __HAL_UART_CLEAR_FEFLAG(&huart7); 80082a4: 4b7c ldr r3, [pc, #496] ; (8008498 ) 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 ) 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 __HAL_UART_CLEAR_NEFLAG(&huart7); 80082ba: 4b77 ldr r3, [pc, #476] ; (8008498 ) 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 TX_OK = RX_OK = UART_ERROR = false; 80082c8: 2200 movs r2, #0 80082ca: 4b74 ldr r3, [pc, #464] ; (800849c ) 80082cc: 4611 mov r1, r2 80082ce: 7019 strb r1, [r3, #0] 80082d0: 4b73 ldr r3, [pc, #460] ; (80084a0 ) 80082d2: 4611 mov r1, r2 80082d4: 7019 strb r1, [r3, #0] 80082d6: 4b73 ldr r3, [pc, #460] ; (80084a4 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 ) 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 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 ) 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 ) 800839a: 5499 strb r1, [r3, r2] timeout = HAL_GetTick(); 800839c: f000 f988 bl 80086b0 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 ) 80083ac: f001 f972 bl 8009694 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 ) 80083b6: 4838 ldr r0, [pc, #224] ; (8008498 ) 80083b8: f003 fa9a bl 800b8f0 80083bc: 4603 mov r3, r0 80083be: 2b00 cmp r3, #0 80083c0: d163 bne.n 800848a { while((!TX_OK) && (HAL_GetTick() - timeout < 200)); 80083c2: bf00 nop 80083c4: 4b37 ldr r3, [pc, #220] ; (80084a4 ) 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 80083d4: f000 f96c bl 80086b0 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 if(!TX_OK) 80083e2: 4b30 ldr r3, [pc, #192] ; (80084a4 ) 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 { HAL_UART_Abort_IT(&huart7); 80083f2: 4829 ldr r0, [pc, #164] ; (8008498 ) 80083f4: f003 faea bl 800b9cc 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 ) 8008400: f001 f948 bl 8009694 return (-1); 8008404: f04f 33ff mov.w r3, #4294967295 8008408: e041 b.n 800848e } 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 ) 8008412: f001 f93f bl 8009694 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 ) 800841c: 481e ldr r0, [pc, #120] ; (8008498 ) 800841e: f003 f997 bl 800b750 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 ) 800842a: 481b ldr r0, [pc, #108] ; (8008498 ) 800842c: f003 f990 bl 800b750 8008430: 4603 mov r3, r0 8008432: 2b00 cmp r3, #0 8008434: d120 bne.n 8008478 { crc = (uint16_t) ((rx[7]) << 8 | rx[6]); 8008436: 4b1e ldr r3, [pc, #120] ; (80084b0 ) 8008438: 79db ldrb r3, [r3, #7] 800843a: 021b lsls r3, r3, #8 800843c: b21a sxth r2, r3 800843e: 4b1c ldr r3, [pc, #112] ; (80084b0 ) 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 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 { if(rx[0] == (ch + 1)) 800845a: 4b15 ldr r3, [pc, #84] ; (80084b0 ) 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 return 0; 8008468: 2300 movs r3, #0 800846a: e010 b.n 800848e else return (-1); 800846c: f04f 33ff mov.w r3, #4294967295 8008470: e00d b.n 800848e } else { return (-1); 8008472: f04f 33ff mov.w r3, #4294967295 8008476: e00a b.n 800848e } } 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 ) 8008480: f001 f908 bl 8009694 return (-1); 8008484: f04f 33ff mov.w r3, #4294967295 8008488: e001 b.n 800848e } } 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 : } } 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 { for(i = 0; i < 3; i++) 80084c8: 2300 movs r3, #0 80084ca: 73fb strb r3, [r7, #15] 80084cc: e016 b.n 80084fc { 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 80084d8: 4603 mov r3, r0 80084da: 2b00 cmp r3, #0 80084dc: d10b bne.n 80084f6 { 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 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 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 } } } } 800850e: bf00 nop 8008510: 3710 adds r7, #16 8008512: 46bd mov sp, r7 8008514: bd80 pop {r7, pc} ... 08008518 : 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 ) 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 ) 800852c: f004 fca0 bl 800ce70 MASK_CHANNELS = CNT_CHANNELS = ACTIVE_CHANNEL = 0; 8008530: 2300 movs r3, #0 8008532: 4a2c ldr r2, [pc, #176] ; (80085e4 ) 8008534: 6013 str r3, [r2, #0] 8008536: 4a2c ldr r2, [pc, #176] ; (80085e8 ) 8008538: 6013 str r3, [r2, #0] 800853a: 4a2c ldr r2, [pc, #176] ; (80085ec ) 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 { for(i = 0; i < 2; i++) 8008544: 2300 movs r3, #0 8008546: 71fb strb r3, [r7, #7] 8008548: e01d b.n 8008586 { if(ReadChannel(ch) == 0) 800854a: 79bb ldrb r3, [r7, #6] 800854c: 4618 mov r0, r3 800854e: f7ff f9b7 bl 80078c0 8008552: 4603 mov r3, r0 8008554: 2b00 cmp r3, #0 8008556: d111 bne.n 800857c { RedrawScreen(); 8008558: f7fa fef4 bl 8003344 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 ) 8008568: 681b ldr r3, [r3, #0] 800856a: 4313 orrs r3, r2 800856c: 4a1f ldr r2, [pc, #124] ; (80085ec ) 800856e: 6013 str r3, [r2, #0] CNT_CHANNELS++; 8008570: 4b1d ldr r3, [pc, #116] ; (80085e8 ) 8008572: 681b ldr r3, [r3, #0] 8008574: 3301 adds r3, #1 8008576: 4a1c ldr r2, [pc, #112] ; (80085e8 ) 8008578: 6013 str r3, [r2, #0] break; 800857a: e007 b.n 800858c } else RedrawScreen(); 800857c: f7fa fee2 bl 8003344 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 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 } } if(CNT_CHANNELS != 0) 8008598: 4b13 ldr r3, [pc, #76] ; (80085e8 ) 800859a: 681b ldr r3, [r3, #0] 800859c: 2b00 cmp r3, #0 800859e: d019 beq.n 80085d4 { for(i = 0; i < 8; i++) 80085a0: 2300 movs r3, #0 80085a2: 71fb strb r3, [r7, #7] 80085a4: e010 b.n 80085c8 { 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 ) 80085b2: 681b ldr r3, [r3, #0] 80085b4: 4013 ands r3, r2 80085b6: 2b00 cmp r3, #0 80085b8: d003 beq.n 80085c2 { ACTIVE_CHANNEL = i; 80085ba: 79fb ldrb r3, [r7, #7] 80085bc: 4a09 ldr r2, [pc, #36] ; (80085e4 ) 80085be: 6013 str r3, [r2, #0] break; 80085c0: e005 b.n 80085ce 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 } } ASK_COMPLETE = true; 80085ce: 4b03 ldr r3, [pc, #12] ; (80085dc ) 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 : * 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 ) 80085f6: 4b0b ldr r3, [pc, #44] ; (8008624 ) 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 ) 8008602: 4b08 ldr r3, [pc, #32] ; (8008624 ) 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 /* 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 /* Init the low level hardware */ HAL_MspInit(); 8008618: f7fe fdce bl 80071b8 /* 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 : * 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 ) 8008632: 681a ldr r2, [r3, #0] 8008634: 4b12 ldr r3, [pc, #72] ; (8008680 ) 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 800864c: 4603 mov r3, r0 800864e: 2b00 cmp r3, #0 8008650: d001 beq.n 8008656 { return HAL_ERROR; 8008652: 2301 movs r3, #1 8008654: e00e b.n 8008674 } /* 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_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 uwTickPrio = TickPriority; 8008668: 4a06 ldr r2, [pc, #24] ; (8008684 ) 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 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 : * @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 ) 800868e: 781b ldrb r3, [r3, #0] 8008690: 461a mov r2, r3 8008692: 4b06 ldr r3, [pc, #24] ; (80086ac ) 8008694: 681b ldr r3, [r3, #0] 8008696: 4413 add r3, r2 8008698: 4a04 ldr r2, [pc, #16] ; (80086ac ) 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 : * @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 ) 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 : * 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 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 { wait += (uint32_t)(uwTickFreq); 80086e2: 4b09 ldr r3, [pc, #36] ; (8008708 ) 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 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 { } } 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 : \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 800886e: 69fb ldr r3, [r7, #28] 8008870: 3b03 subs r3, #3 8008872: e000 b.n 8008876 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 : \note When the variable __Vendor_SysTickConfig is set to 1, then the function SysTick_Config is not included. In this case, the file device.h 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 { return (1UL); /* Reload value impossible */ 80088ba: 2301 movs r3, #1 80088bc: e00f b.n 80088de } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ 80088be: 4a0a ldr r2, [pc, #40] ; (80088e8 ) 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 ) 80088d2: 2200 movs r2, #0 80088d4: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | 80088d6: 4b04 ldr r3, [pc, #16] ; (80088e8 ) 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 : * @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 : * 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 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 : * 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 : * 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 : * @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 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 : * 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 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 { 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 } 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 80089e4: 687b ldr r3, [r7, #4] 80089e6: 6c9b ldr r3, [r3, #72] ; 0x48 80089e8: 2b00 cmp r3, #0 80089ea: d007 beq.n 80089fc { 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 { /* Check for the Timeout */ if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT) 8008a0e: f7ff fe4f bl 80086b0 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 { /* 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 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 } } /* 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 : * @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 { 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 } 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 : * @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 ) 8008abe: 681b ldr r3, [r3, #0] 8008ac0: 4a92 ldr r2, [pc, #584] ; (8008d0c ) 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 { 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 { /* 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 { 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 { /* 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 { 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 { /* 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 { 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 { /* 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 { /* 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 { 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 { /* 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 } } /* 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 { /* 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 } } 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 { /* 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 { /* 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 { 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 { /* 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 { /* 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 8008c82: 687b ldr r3, [r7, #4] 8008c84: 6c9b ldr r3, [r3, #72] ; 0x48 8008c86: 2b00 cmp r3, #0 8008c88: d007 beq.n 8008c9a { 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 { 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 } 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 { /* 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 { 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 { /* 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 } } /* 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 { /* 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 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 { /* 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 { /* 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 { 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 { 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 { 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 8008d94: e000 b.n 8008d98 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 { /* 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 return; 8008dba: bf00 nop } } } 8008dbc: 3718 adds r7, #24 8008dbe: 46bd mov sp, r7 8008dc0: bd80 pop {r7, pc} 8008dc2: bf00 nop 08008dc4 : * @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 { return HAL_ERROR; 8008dd2: 2301 movs r3, #1 8008dd4: e049 b.n 8008e6a /* 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 { /* 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 } #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 ) 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 : * @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 8008e90: 2302 movs r3, #2 8008e92: e018 b.n 8008ec6 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 /* 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 : * 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 { /* Get tick */ tickstart = HAL_GetTick(); 8008eea: f7ff fbe1 bl 80086b0 8008eee: 6178 str r0, [r7, #20] while (__HAL_DMA2D_GET_FLAG(hdma2d, DMA2D_FLAG_TC) == 0U) 8008ef0: e04b b.n 8008f8a { 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 { 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 { 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 { 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 } /* 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 { if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) 8008f54: f7ff fbac bl 80086b0 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 8008f64: 683b ldr r3, [r7, #0] 8008f66: 2b00 cmp r3, #0 8008f68: d10f bne.n 8008f8a { /* 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 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 } } } } /* 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 { /* Get tick */ tickstart = HAL_GetTick(); 8008fba: f7ff fb79 bl 80086b0 8008fbe: 6178 str r0, [r7, #20] while (__HAL_DMA2D_GET_FLAG(hdma2d, DMA2D_FLAG_CTC) == 0U) 8008fc0: e056 b.n 8009070 { 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 { 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 { 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 { 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 { 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 } /* 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 { if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) 800903a: f7ff fb39 bl 80086b0 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 800904a: 683b ldr r3, [r7, #0] 800904c: 2b00 cmp r3, #0 800904e: d10f bne.n 8009070 { /* 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 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 } } } /* 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 : * 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 80090bc: 2302 movs r3, #2 80090be: e082 b.n 80091c6 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 ) 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 800910c: 693b ldr r3, [r7, #16] 800910e: 685b ldr r3, [r3, #4] 8009110: 2b09 cmp r3, #9 8009112: d107 bne.n 8009124 { 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 } 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 { /* 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 800915e: 693b ldr r3, [r7, #16] 8009160: 685b ldr r3, [r3, #4] 8009162: 2b09 cmp r3, #9 8009164: d126 bne.n 80091b4 { 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 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 800919e: 693b ldr r3, [r7, #16] 80091a0: 685b ldr r3, [r3, #4] 80091a2: 2b09 cmp r3, #9 80091a4: d106 bne.n 80091b4 { 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 : * @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 { 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 { 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 } 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 { 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 } 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 { 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 } 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 { 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 } 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 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 : * @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 { /* 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 { /*--------------------- 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 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 { /* 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 { /* 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 { /* 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 { /* Enable SYSCFG Clock */ __HAL_RCC_SYSCFG_CLK_ENABLE(); 800949a: 4a65 ldr r2, [pc, #404] ; (8009630 ) 800949c: 4b64 ldr r3, [pc, #400] ; (8009630 ) 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 ) 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 ) 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 ) 80094da: 4293 cmp r3, r2 80094dc: d037 beq.n 800954e 80094de: 687b ldr r3, [r7, #4] 80094e0: 4a56 ldr r2, [pc, #344] ; (800963c ) 80094e2: 4293 cmp r3, r2 80094e4: d031 beq.n 800954a 80094e6: 687b ldr r3, [r7, #4] 80094e8: 4a55 ldr r2, [pc, #340] ; (8009640 ) 80094ea: 4293 cmp r3, r2 80094ec: d02b beq.n 8009546 80094ee: 687b ldr r3, [r7, #4] 80094f0: 4a54 ldr r2, [pc, #336] ; (8009644 ) 80094f2: 4293 cmp r3, r2 80094f4: d025 beq.n 8009542 80094f6: 687b ldr r3, [r7, #4] 80094f8: 4a53 ldr r2, [pc, #332] ; (8009648 ) 80094fa: 4293 cmp r3, r2 80094fc: d01f beq.n 800953e 80094fe: 687b ldr r3, [r7, #4] 8009500: 4a52 ldr r2, [pc, #328] ; (800964c ) 8009502: 4293 cmp r3, r2 8009504: d019 beq.n 800953a 8009506: 687b ldr r3, [r7, #4] 8009508: 4a51 ldr r2, [pc, #324] ; (8009650 ) 800950a: 4293 cmp r3, r2 800950c: d013 beq.n 8009536 800950e: 687b ldr r3, [r7, #4] 8009510: 4a50 ldr r2, [pc, #320] ; (8009654 ) 8009512: 4293 cmp r3, r2 8009514: d00d beq.n 8009532 8009516: 687b ldr r3, [r7, #4] 8009518: 4a4f ldr r2, [pc, #316] ; (8009658 ) 800951a: 4293 cmp r3, r2 800951c: d007 beq.n 800952e 800951e: 687b ldr r3, [r7, #4] 8009520: 4a4e ldr r2, [pc, #312] ; (800965c ) 8009522: 4293 cmp r3, r2 8009524: d101 bne.n 800952a 8009526: 2309 movs r3, #9 8009528: e012 b.n 8009550 800952a: 230a movs r3, #10 800952c: e010 b.n 8009550 800952e: 2308 movs r3, #8 8009530: e00e b.n 8009550 8009532: 2307 movs r3, #7 8009534: e00c b.n 8009550 8009536: 2306 movs r3, #6 8009538: e00a b.n 8009550 800953a: 2305 movs r3, #5 800953c: e008 b.n 8009550 800953e: 2304 movs r3, #4 8009540: e006 b.n 8009550 8009542: 2303 movs r3, #3 8009544: e004 b.n 8009550 8009546: 2302 movs r3, #2 8009548: e002 b.n 8009550 800954a: 2301 movs r3, #1 800954c: e000 b.n 8009550 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 ) 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 ) 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 { 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 ) 8009594: 69bb ldr r3, [r7, #24] 8009596: 6093 str r3, [r2, #8] temp = EXTI->FTSR; 8009598: 4b31 ldr r3, [pc, #196] ; (8009660 ) 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 { 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 ) 80095be: 69bb ldr r3, [r7, #24] 80095c0: 60d3 str r3, [r2, #12] temp = EXTI->EMR; 80095c2: 4b27 ldr r3, [pc, #156] ; (8009660 ) 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 { 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 ) 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 ) 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 { 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 ) 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 } } } } 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 : * @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 { bitstatus = GPIO_PIN_SET; 800967c: 2301 movs r3, #1 800967e: 73fb strb r3, [r7, #15] 8009680: e001 b.n 8009686 } 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 : * @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 { 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 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 : * @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 ) 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_CLEAR_IT(GPIO_Pin); 80096de: 4a05 ldr r2, [pc, #20] ; (80096f4 ) 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 } } 80096ec: bf00 nop 80096ee: 3708 adds r7, #8 80096f0: 46bd mov sp, r7 80096f2: bd80 pop {r7, pc} 80096f4: 40013c00 .word 0x40013c00 080096f8 : * @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 { return HAL_ERROR; 8009706: 2301 movs r3, #1 8009708: e0bf b.n 800988a } /* 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 { /* 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 } #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 ) 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 ) 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 ) 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 ) 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 : * @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 80098ba: 68bb ldr r3, [r7, #8] 80098bc: f003 0304 and.w r3, r3, #4 80098c0: 2b00 cmp r3, #0 80098c2: d01e beq.n 8009902 { /* 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 #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 800990c: 68bb ldr r3, [r7, #8] 800990e: f003 0302 and.w r3, r3, #2 8009912: 2b00 cmp r3, #0 8009914: d01e beq.n 8009954 { /* 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 #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 800995e: 68bb ldr r3, [r7, #8] 8009960: f003 0301 and.w r3, r3, #1 8009964: 2b00 cmp r3, #0 8009966: d016 beq.n 8009996 { /* 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 #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 80099a0: 68bb ldr r3, [r7, #8] 80099a2: f003 0308 and.w r3, r3, #8 80099a6: 2b00 cmp r3, #0 80099a8: d016 beq.n 80099d8 { /* 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 #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 : * @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 : * @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 : * 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 8009a1e: 2302 movs r3, #2 8009a20: e02c b.n 8009a7c 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 /* 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 : * @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 8009a98: 2302 movs r3, #2 8009a9a: e023 b.n 8009ae4 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 ) 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 : * 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 8009b08: 2302 movs r3, #2 8009b0a: e01c b.n 8009b46 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 : * @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 ) 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 { tmp = 4U; 8009d8a: 2304 movs r3, #4 8009d8c: 61fb str r3, [r7, #28] 8009d8e: e01b b.n 8009dc8 } 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 { tmp = 3U; 8009d98: 2303 movs r3, #3 8009d9a: 61fb str r3, [r7, #28] 8009d9c: e014 b.n 8009dc8 } 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 (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 (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 (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 { tmp = 2U; 8009dbe: 2302 movs r3, #2 8009dc0: 61fb str r3, [r7, #28] 8009dc2: e001 b.n 8009dc8 } 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 ) 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 : * 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 { return HAL_ERROR; 8009eaa: 2301 movs r3, #1 8009eac: e29b b.n 800a3e6 /* 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 { /* 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 ) 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_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) 8009ec8: 4b93 ldr r3, [pc, #588] ; (800a118 ) 8009eca: 689b ldr r3, [r3, #8] 8009ecc: f003 030c and.w r3, r3, #12 8009ed0: 2b08 cmp r3, #8 8009ed2: d112 bne.n 8009efa 8009ed4: 4b90 ldr r3, [pc, #576] ; (800a118 ) 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 { if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) 8009ee2: 4b8d ldr r3, [pc, #564] ; (800a118 ) 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 8009eee: 687b ldr r3, [r7, #4] 8009ef0: 685b ldr r3, [r3, #4] 8009ef2: 2b00 cmp r3, #0 8009ef4: d168 bne.n 8009fc8 { return HAL_ERROR; 8009ef6: 2301 movs r3, #1 8009ef8: e275 b.n 800a3e6 } } 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 8009f04: 4a84 ldr r2, [pc, #528] ; (800a118 ) 8009f06: 4b84 ldr r3, [pc, #528] ; (800a118 ) 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 8009f12: 687b ldr r3, [r7, #4] 8009f14: 685b ldr r3, [r3, #4] 8009f16: 2b00 cmp r3, #0 8009f18: d10c bne.n 8009f34 8009f1a: 4a7f ldr r2, [pc, #508] ; (800a118 ) 8009f1c: 4b7e ldr r3, [pc, #504] ; (800a118 ) 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 ) 8009f28: 4b7b ldr r3, [pc, #492] ; (800a118 ) 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 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 8009f3e: 4a76 ldr r2, [pc, #472] ; (800a118 ) 8009f40: 4b75 ldr r3, [pc, #468] ; (800a118 ) 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 ) 8009f4c: 4b72 ldr r3, [pc, #456] ; (800a118 ) 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 8009f58: 4a6f ldr r2, [pc, #444] ; (800a118 ) 8009f5a: 4b6f ldr r3, [pc, #444] ; (800a118 ) 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 ) 8009f66: 4b6c ldr r3, [pc, #432] ; (800a118 ) 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 { /* Get Start Tick*/ tickstart = HAL_GetTick(); 8009f78: f7fe fb9a bl 80086b0 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 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) 8009f80: f7fe fb96 bl 80086b0 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 { return HAL_TIMEOUT; 8009f8e: 2303 movs r3, #3 8009f90: e229 b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) 8009f92: 4b61 ldr r3, [pc, #388] ; (800a118 ) 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 8009f9e: e014 b.n 8009fca } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); 8009fa0: f7fe fb86 bl 80086b0 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 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) 8009fa8: f7fe fb82 bl 80086b0 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 { return HAL_TIMEOUT; 8009fb6: 2303 movs r3, #3 8009fb8: e215 b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) 8009fba: 4b57 ldr r3, [pc, #348] ; (800a118 ) 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 8009fc6: e000 b.n 8009fca 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 /* 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 ) 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_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) 8009fe2: 4b4d ldr r3, [pc, #308] ; (800a118 ) 8009fe4: 689b ldr r3, [r3, #8] 8009fe6: f003 030c and.w r3, r3, #12 8009fea: 2b08 cmp r3, #8 8009fec: d11c bne.n 800a028 8009fee: 4b4a ldr r3, [pc, #296] ; (800a118 ) 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 { /* 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 ) 8009ffc: 681b ldr r3, [r3, #0] 8009ffe: f003 0302 and.w r3, r3, #2 800a002: 2b00 cmp r3, #0 800a004: d005 beq.n 800a012 800a006: 687b ldr r3, [r7, #4] 800a008: 68db ldr r3, [r3, #12] 800a00a: 2b01 cmp r3, #1 800a00c: d001 beq.n 800a012 { return HAL_ERROR; 800a00e: 2301 movs r3, #1 800a010: e1e9 b.n 800a3e6 } /* 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 ) 800a014: 4b40 ldr r3, [pc, #256] ; (800a118 ) 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 } } 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 { /* Enable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_ENABLE(); 800a030: 4a39 ldr r2, [pc, #228] ; (800a118 ) 800a032: 4b39 ldr r3, [pc, #228] ; (800a118 ) 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 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 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) 800a044: f7fe fb34 bl 80086b0 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 { return HAL_TIMEOUT; 800a052: 2303 movs r3, #3 800a054: e1c7 b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) 800a056: 4b30 ldr r3, [pc, #192] ; (800a118 ) 800a058: 681b ldr r3, [r3, #0] 800a05a: f003 0302 and.w r3, r3, #2 800a05e: 2b00 cmp r3, #0 800a060: d0f0 beq.n 800a044 } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); 800a062: 492d ldr r1, [pc, #180] ; (800a118 ) 800a064: 4b2c ldr r3, [pc, #176] ; (800a118 ) 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 } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); 800a078: 4a27 ldr r2, [pc, #156] ; (800a118 ) 800a07a: 4b27 ldr r3, [pc, #156] ; (800a118 ) 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 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 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) 800a08c: f7fe fb10 bl 80086b0 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 { return HAL_TIMEOUT; 800a09a: 2303 movs r3, #3 800a09c: e1a3 b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) 800a09e: 4b1e ldr r3, [pc, #120] ; (800a118 ) 800a0a0: 681b ldr r3, [r3, #0] 800a0a2: f003 0302 and.w r3, r3, #2 800a0a6: 2b00 cmp r3, #0 800a0a8: d1f0 bne.n 800a08c } } } } /*------------------------------ 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 { /* 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 { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); 800a0be: 4a16 ldr r2, [pc, #88] ; (800a118 ) 800a0c0: 4b15 ldr r3, [pc, #84] ; (800a118 ) 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 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 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) 800a0d2: f7fe faed bl 80086b0 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 { return HAL_TIMEOUT; 800a0e0: 2303 movs r3, #3 800a0e2: e180 b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) 800a0e4: 4b0c ldr r3, [pc, #48] ; (800a118 ) 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 800a0f0: e01a b.n 800a128 } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); 800a0f2: 4a09 ldr r2, [pc, #36] ; (800a118 ) 800a0f4: 4b08 ldr r3, [pc, #32] ; (800a118 ) 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 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 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) 800a106: f7fe fad3 bl 80086b0 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 { return HAL_TIMEOUT; 800a114: 2303 movs r3, #3 800a116: e166 b.n 800a3e6 800a118: 40023800 .word 0x40023800 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) 800a11c: 4b92 ldr r3, [pc, #584] ; (800a368 ) 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 } } } } /*------------------------------ 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 /* 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 ) 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 { /* Enable Power Clock*/ __HAL_RCC_PWR_CLK_ENABLE(); 800a142: 4a89 ldr r2, [pc, #548] ; (800a368 ) 800a144: 4b88 ldr r3, [pc, #544] ; (800a368 ) 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 ) 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 ) 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 { /* Enable write access to Backup domain */ PWR->CR1 |= PWR_CR1_DBP; 800a16a: 4a80 ldr r2, [pc, #512] ; (800a36c ) 800a16c: 4b7f ldr r3, [pc, #508] ; (800a36c ) 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 800a17a: 6138 str r0, [r7, #16] while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) 800a17c: e008 b.n 800a190 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) 800a17e: f7fe fa97 bl 80086b0 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 { return HAL_TIMEOUT; 800a18c: 2303 movs r3, #3 800a18e: e12a b.n 800a3e6 while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) 800a190: 4b76 ldr r3, [pc, #472] ; (800a36c ) 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 } } } /* 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 800a1a4: 4a70 ldr r2, [pc, #448] ; (800a368 ) 800a1a6: 4b70 ldr r3, [pc, #448] ; (800a368 ) 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 800a1b2: 687b ldr r3, [r7, #4] 800a1b4: 689b ldr r3, [r3, #8] 800a1b6: 2b00 cmp r3, #0 800a1b8: d10c bne.n 800a1d4 800a1ba: 4a6b ldr r2, [pc, #428] ; (800a368 ) 800a1bc: 4b6a ldr r3, [pc, #424] ; (800a368 ) 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 ) 800a1c8: 4b67 ldr r3, [pc, #412] ; (800a368 ) 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 800a1d4: 687b ldr r3, [r7, #4] 800a1d6: 689b ldr r3, [r3, #8] 800a1d8: 2b05 cmp r3, #5 800a1da: d10c bne.n 800a1f6 800a1dc: 4a62 ldr r2, [pc, #392] ; (800a368 ) 800a1de: 4b62 ldr r3, [pc, #392] ; (800a368 ) 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 ) 800a1ea: 4b5f ldr r3, [pc, #380] ; (800a368 ) 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 800a1f6: 4a5c ldr r2, [pc, #368] ; (800a368 ) 800a1f8: 4b5b ldr r3, [pc, #364] ; (800a368 ) 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 ) 800a204: 4b58 ldr r3, [pc, #352] ; (800a368 ) 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 { /* Get Start Tick*/ tickstart = HAL_GetTick(); 800a216: f7fe fa4b bl 80086b0 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 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) 800a21e: f7fe fa47 bl 80086b0 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 { return HAL_TIMEOUT; 800a230: 2303 movs r3, #3 800a232: e0d8 b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) 800a234: 4b4c ldr r3, [pc, #304] ; (800a368 ) 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 800a240: e014 b.n 800a26c } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); 800a242: f7fe fa35 bl 80086b0 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 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) 800a24a: f7fe fa31 bl 80086b0 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 { return HAL_TIMEOUT; 800a25c: 2303 movs r3, #3 800a25e: e0c2 b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) 800a260: 4b41 ldr r3, [pc, #260] ; (800a368 ) 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 } } } /* 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_PWR_CLK_DISABLE(); 800a272: 4a3d ldr r2, [pc, #244] ; (800a368 ) 800a274: 4b3c ldr r3, [pc, #240] ; (800a368 ) 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 { /* 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 ) 800a28a: 689b ldr r3, [r3, #8] 800a28c: f003 030c and.w r3, r3, #12 800a290: 2b08 cmp r3, #8 800a292: d06d beq.n 800a370 { 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 #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 ) 800a29e: 4b32 ldr r3, [pc, #200] ; (800a368 ) 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 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 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) 800a2b0: f7fe f9fe bl 80086b0 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 { return HAL_TIMEOUT; 800a2be: 2303 movs r3, #3 800a2c0: e091 b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) 800a2c2: 4b29 ldr r3, [pc, #164] ; (800a368 ) 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 } } /* 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 ) 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 ) 800a302: 4b19 ldr r3, [pc, #100] ; (800a368 ) 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 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 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) 800a314: f7fe f9cc bl 80086b0 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 { return HAL_TIMEOUT; 800a322: 2303 movs r3, #3 800a324: e05f b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) 800a326: 4b10 ldr r3, [pc, #64] ; (800a368 ) 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 800a332: e057 b.n 800a3e4 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); 800a334: 4a0c ldr r2, [pc, #48] ; (800a368 ) 800a336: 4b0c ldr r3, [pc, #48] ; (800a368 ) 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 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 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) 800a348: f7fe f9b2 bl 80086b0 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 { return HAL_TIMEOUT; 800a356: 2303 movs r3, #3 800a358: e045 b.n 800a3e6 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) 800a35a: 4b03 ldr r3, [pc, #12] ; (800a368 ) 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 800a366: e03d b.n 800a3e4 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 ) 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 (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 (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 (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 (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 (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 (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 (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 } } } 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 : * 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 { return HAL_ERROR; 800a408: 2301 movs r3, #1 800a40a: e0d0 b.n 800a5ae /* 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 ) 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 { /* 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 ) 800a41c: 4b66 ldr r3, [pc, #408] ; (800a5b8 ) 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 ) 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 { return HAL_ERROR; 800a438: 2301 movs r3, #1 800a43a: e0b8 b.n 800a5ae } } /*-------------------------- 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 { /* 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 { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); 800a454: 4a59 ldr r2, [pc, #356] ; (800a5bc ) 800a456: 4b59 ldr r3, [pc, #356] ; (800a5bc ) 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 { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); 800a46c: 4a53 ldr r2, [pc, #332] ; (800a5bc ) 800a46e: 4b53 ldr r3, [pc, #332] ; (800a5bc ) 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 ) 800a47a: 4b50 ldr r3, [pc, #320] ; (800a5bc ) 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 { 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 { /* Check the HSE ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) 800a49e: 4b47 ldr r3, [pc, #284] ; (800a5bc ) 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 { return HAL_ERROR; 800a4aa: 2301 movs r3, #1 800a4ac: e07f b.n 800a5ae } } /* 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 { /* Check the PLL ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) 800a4b6: 4b41 ldr r3, [pc, #260] ; (800a5bc ) 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 { return HAL_ERROR; 800a4c2: 2301 movs r3, #1 800a4c4: e073 b.n 800a5ae } /* 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 ) 800a4c8: 681b ldr r3, [r3, #0] 800a4ca: f003 0302 and.w r3, r3, #2 800a4ce: 2b00 cmp r3, #0 800a4d0: d101 bne.n 800a4d6 { return HAL_ERROR; 800a4d2: 2301 movs r3, #1 800a4d4: e06b b.n 800a5ae } } __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); 800a4d6: 4939 ldr r1, [pc, #228] ; (800a5bc ) 800a4d8: 4b38 ldr r3, [pc, #224] ; (800a5bc ) 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 800a4ec: 60f8 str r0, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) 800a4ee: e00a b.n 800a506 { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) 800a4f0: f7fe f8de bl 80086b0 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 { return HAL_TIMEOUT; 800a502: 2303 movs r3, #3 800a504: e053 b.n 800a5ae while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) 800a506: 4b2d ldr r3, [pc, #180] ; (800a5bc ) 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 } } } /* Decreasing the number of wait states because of lower CPU frequency */ if (FLatency < __HAL_FLASH_GET_LATENCY()) 800a518: 4b27 ldr r3, [pc, #156] ; (800a5b8 ) 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 { /* 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 ) 800a528: 4b23 ldr r3, [pc, #140] ; (800a5b8 ) 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 ) 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 { return HAL_ERROR; 800a544: 2301 movs r3, #1 800a546: e032 b.n 800a5ae } } /*-------------------------- 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 { 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 ) 800a556: 4b19 ldr r3, [pc, #100] ; (800a5bc ) 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 { 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 ) 800a574: 4b11 ldr r3, [pc, #68] ; (800a5bc ) 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 800a58a: 4601 mov r1, r0 800a58c: 4b0b ldr r3, [pc, #44] ; (800a5bc ) 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 ) 800a598: 5cd3 ldrb r3, [r2, r3] 800a59a: fa21 f303 lsr.w r3, r1, r3 800a59e: 4a09 ldr r2, [pc, #36] ; (800a5c4 ) 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 ) 800a5a4: 681b ldr r3, [r3, #0] 800a5a6: 4618 mov r0, r3 800a5a8: f7fe f83e bl 8008628 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 : * * * @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 ) 800a5e6: 6892 ldr r2, [r2, #8] 800a5e8: f002 020c and.w r2, r2, #12 800a5ec: 2a04 cmp r2, #4 800a5ee: d007 beq.n 800a600 800a5f0: 2a08 cmp r2, #8 800a5f2: d008 beq.n 800a606 800a5f4: 2a00 cmp r2, #0 800a5f6: f040 8090 bne.w 800a71a { case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ { sysclockfreq = HSI_VALUE; 800a5fa: 4b4d ldr r3, [pc, #308] ; (800a730 ) 800a5fc: 613b str r3, [r7, #16] break; 800a5fe: e08f b.n 800a720 } case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */ { sysclockfreq = HSE_VALUE; 800a600: 4b4c ldr r3, [pc, #304] ; (800a734 ) 800a602: 613b str r3, [r7, #16] break; 800a604: e08c b.n 800a720 } 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 ) 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 ) 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 { /* 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 ) 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 ) 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 ) 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 } 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 ) 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 ) 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 } default: { sysclockfreq = HSI_VALUE; 800a71a: 4b05 ldr r3, [pc, #20] ; (800a730 ) 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 : * 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 ) 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 : * @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 800a758: 4601 mov r1, r0 800a75a: 4b05 ldr r3, [pc, #20] ; (800a770 ) 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 ) 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 : * @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 800a780: 4601 mov r1, r0 800a782: 4b05 ldr r3, [pc, #20] ; (800a798 ) 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 ) 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 : * 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 { /* 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 ) 800a7ca: 4b69 ldr r3, [pc, #420] ; (800a970 ) 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 ) 800a7d6: 4b66 ldr r3, [pc, #408] ; (800a970 ) 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 { 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 { /* 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 ) 800a7fc: 4b5c ldr r3, [pc, #368] ; (800a970 ) 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 { 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 { 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 { /* 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 ) 800a838: 4b4d ldr r3, [pc, #308] ; (800a970 ) 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 { 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 { 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 { 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 { /* 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 ) 800a886: 4b3a ldr r3, [pc, #232] ; (800a970 ) 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 ) 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 ) 800a89e: 4b35 ldr r3, [pc, #212] ; (800a974 ) 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 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 { if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) 800a8b0: f7fd fefe bl 80086b0 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 { return HAL_TIMEOUT; 800a8be: 2303 movs r3, #3 800a8c0: e38d b.n 800afde while((PWR->CR1 & PWR_CR1_DBP) == RESET) 800a8c2: 4b2c ldr r3, [pc, #176] ; (800a974 ) 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 } } /* 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 ) 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 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 { /* 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 ) 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 ) 800a8f8: 4b1d ldr r3, [pc, #116] ; (800a970 ) 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 ) 800a904: 4b1a ldr r3, [pc, #104] ; (800a970 ) 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 ) 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 ) 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 { /* Get Start Tick*/ tickstart = HAL_GetTick(); 800a920: f7fd fec6 bl 80086b0 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 { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) 800a928: f7fd fec2 bl 80086b0 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 { return HAL_TIMEOUT; 800a93a: 2303 movs r3, #3 800a93c: e34f b.n 800afde while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) 800a93e: 4b0c ldr r3, [pc, #48] ; (800a970 ) 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_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 800a958: 4805 ldr r0, [pc, #20] ; (800a970 ) 800a95a: 4b05 ldr r3, [pc, #20] ; (800a970 ) 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 ) 800a968: 400b ands r3, r1 800a96a: 4313 orrs r3, r2 800a96c: 6083 str r3, [r0, #8] 800a96e: e00b b.n 800a988 800a970: 40023800 .word 0x40023800 800a974: 40007000 .word 0x40007000 800a978: 0ffffcff .word 0x0ffffcff 800a97c: 4ab2 ldr r2, [pc, #712] ; (800ac48 ) 800a97e: 4bb2 ldr r3, [pc, #712] ; (800ac48 ) 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 ) 800a98a: 4baf ldr r3, [pc, #700] ; (800ac48 ) 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 { /* 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 ) 800a9a8: 4ba7 ldr r3, [pc, #668] ; (800ac48 ) 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 ) 800a9b8: 4ba3 ldr r3, [pc, #652] ; (800ac48 ) 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 { /* 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 ) 800a9d6: 4b9c ldr r3, [pc, #624] ; (800ac48 ) 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 { /* 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 ) 800a9f8: 4b93 ldr r3, [pc, #588] ; (800ac48 ) 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 { /* 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 ) 800aa1a: 4b8b ldr r3, [pc, #556] ; (800ac48 ) 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 { /* 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 ) 800aa3c: 4b82 ldr r3, [pc, #520] ; (800ac48 ) 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 { /* 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 ) 800aa5e: 4b7a ldr r3, [pc, #488] ; (800ac48 ) 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 { /* 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 ) 800aa80: 4b71 ldr r3, [pc, #452] ; (800ac48 ) 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 { /* 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 ) 800aaa2: 4b69 ldr r3, [pc, #420] ; (800ac48 ) 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 { /* 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 ) 800aac4: 4b60 ldr r3, [pc, #384] ; (800ac48 ) 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 { /* 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 ) 800aae6: 4b58 ldr r3, [pc, #352] ; (800ac48 ) 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 { /* 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 ) 800ab08: 4b4f ldr r3, [pc, #316] ; (800ac48 ) 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 { /* 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 ) 800ab2a: 4b47 ldr r3, [pc, #284] ; (800ac48 ) 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 { /* 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 ) 800ab4c: 4b3e ldr r3, [pc, #248] ; (800ac48 ) 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 { /* 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 ) 800ab6e: 4b36 ldr r3, [pc, #216] ; (800ac48 ) 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 { /* 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 ) 800ab90: 4b2d ldr r3, [pc, #180] ; (800ac48 ) 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 { 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 { 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 { /* 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 ) 800abd0: 4b1d ldr r3, [pc, #116] ; (800ac48 ) 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 { /* 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 ) 800abf2: 4b15 ldr r3, [pc, #84] ; (800ac48 ) 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 { /* 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 ) 800ac16: 4b0c ldr r3, [pc, #48] ; (800ac48 ) 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 { /* 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 ) 800ac3a: 4b03 ldr r3, [pc, #12] ; (800ac48 ) 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 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 { /* 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 ) 800ac64: 4b80 ldr r3, [pc, #512] ; (800ae68 ) 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 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 { /* Disable the PLLI2S */ __HAL_RCC_PLLI2S_DISABLE(); 800ac8e: 4a76 ldr r2, [pc, #472] ; (800ae68 ) 800ac90: 4b75 ldr r3, [pc, #468] ; (800ae68 ) 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 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 { if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) 800aca2: f7fd fd05 bl 80086b0 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 { /* return in case of Timeout detected */ return HAL_TIMEOUT; 800acb0: 2303 movs r3, #3 800acb2: e194 b.n 800afde while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET) 800acb4: 4b6c ldr r3, [pc, #432] ; (800ae68 ) 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 /* 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 800accc: 687b ldr r3, [r7, #4] 800acce: 6b5b ldr r3, [r3, #52] ; 0x34 800acd0: 2b00 cmp r3, #0 800acd2: d11d bne.n 800ad10 { /* 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 ) 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 ) 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 ) 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 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 ((((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 ((((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 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 ) 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 ) 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 ) 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 ) 800ad7a: 4b3b ldr r3, [pc, #236] ; (800ae68 ) 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 { /* 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 ) 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 ) 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 ) 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 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 ) 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 ) 800ae0a: 4b17 ldr r3, [pc, #92] ; (800ae68 ) 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 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 { if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) 800ae1c: f7fd fc48 bl 80086b0 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 { /* return in case of Timeout detected */ return HAL_TIMEOUT; 800ae2a: 2303 movs r3, #3 800ae2c: e0d7 b.n 800afde while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) 800ae2e: 4b0e ldr r3, [pc, #56] ; (800ae68 ) 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 } } /*-------------------------------------- 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 { /* Disable PLLSAI Clock */ __HAL_RCC_PLLSAI_DISABLE(); 800ae42: 4a09 ldr r2, [pc, #36] ; (800ae68 ) 800ae44: 4b08 ldr r3, [pc, #32] ; (800ae68 ) 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 800ae52: 6178 str r0, [r7, #20] /* Wait till PLLSAI is disabled */ while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) 800ae54: e00a b.n 800ae6c { if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) 800ae56: f7fd fc2b bl 80086b0 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 { /* return in case of Timeout detected */ return HAL_TIMEOUT; 800ae64: 2303 movs r3, #3 800ae66: e0ba b.n 800afde 800ae68: 40023800 .word 0x40023800 while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) 800ae6c: 4b5e ldr r3, [pc, #376] ; (800afe8 ) 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 /* 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 800ae86: 687b ldr r3, [r7, #4] 800ae88: 6bdb ldr r3, [r3, #60] ; 0x3c 800ae8a: 2b00 cmp r3, #0 800ae8c: d009 beq.n 800aea2 ((((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 ((((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 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 ) 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 ) 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 ) 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 ) 800aee0: 4b41 ldr r3, [pc, #260] ; (800afe8 ) 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 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 { /* 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 ) 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 ) 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 ) 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 { 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 ) 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 ) 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 ) 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 ) 800af94: 4b14 ldr r3, [pc, #80] ; (800afe8 ) 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 ) 800afaa: 4b0f ldr r3, [pc, #60] ; (800afe8 ) 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 800afb8: 6178 str r0, [r7, #20] /* Wait till PLLSAI is ready */ while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) 800afba: e008 b.n 800afce { if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) 800afbc: f7fd fb78 bl 80086b0 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 { /* return in case of Timeout detected */ return HAL_TIMEOUT; 800afca: 2303 movs r3, #3 800afcc: e007 b.n 800afde while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) 800afce: 4b06 ldr r3, [pc, #24] ; (800afe8 ) 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 } } } 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 : * 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 { return HAL_ERROR; 800affa: 2301 movs r3, #1 800affc: e049 b.n 800b092 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 { /* 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 #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 /* 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 : * @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 { return HAL_ERROR; 800b0b0: 2301 movs r3, #1 800b0b2: e054 b.n 800b15e } /* 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 ) 800b0d2: 4293 cmp r3, r2 800b0d4: d022 beq.n 800b11c 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 800b0e0: 687b ldr r3, [r7, #4] 800b0e2: 681b ldr r3, [r3, #0] 800b0e4: 4a22 ldr r2, [pc, #136] ; (800b170 ) 800b0e6: 4293 cmp r3, r2 800b0e8: d018 beq.n 800b11c 800b0ea: 687b ldr r3, [r7, #4] 800b0ec: 681b ldr r3, [r3, #0] 800b0ee: 4a21 ldr r2, [pc, #132] ; (800b174 ) 800b0f0: 4293 cmp r3, r2 800b0f2: d013 beq.n 800b11c 800b0f4: 687b ldr r3, [r7, #4] 800b0f6: 681b ldr r3, [r3, #0] 800b0f8: 4a1f ldr r2, [pc, #124] ; (800b178 ) 800b0fa: 4293 cmp r3, r2 800b0fc: d00e beq.n 800b11c 800b0fe: 687b ldr r3, [r7, #4] 800b100: 681b ldr r3, [r3, #0] 800b102: 4a1e ldr r2, [pc, #120] ; (800b17c ) 800b104: 4293 cmp r3, r2 800b106: d009 beq.n 800b11c 800b108: 687b ldr r3, [r7, #4] 800b10a: 681b ldr r3, [r3, #0] 800b10c: 4a1c ldr r2, [pc, #112] ; (800b180 ) 800b10e: 4293 cmp r3, r2 800b110: d004 beq.n 800b11c 800b112: 687b ldr r3, [r7, #4] 800b114: 681b ldr r3, [r3, #0] 800b116: 4a1b ldr r2, [pc, #108] ; (800b184 ) 800b118: 4293 cmp r3, r2 800b11a: d115 bne.n 800b148 { 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 ) 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 800b12e: 68fb ldr r3, [r7, #12] 800b130: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 800b134: d011 beq.n 800b15a { __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 } } 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 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 : * @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 { 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_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 { #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 800b1d4: e005 b.n 800b1e2 { #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_PWM_PulseFinishedCallback(htim); 800b1dc: 6878 ldr r0, [r7, #4] 800b1de: f000 f908 bl 800b3f2 #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 { 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_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 { #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 800b228: e005 b.n 800b236 { #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_PWM_PulseFinishedCallback(htim); 800b230: 6878 ldr r0, [r7, #4] 800b232: f000 f8de bl 800b3f2 #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 { 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_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 { #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 800b27c: e005 b.n 800b28a { #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_PWM_PulseFinishedCallback(htim); 800b284: 6878 ldr r0, [r7, #4] 800b286: f000 f8b4 bl 800b3f2 #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 { 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_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 { #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 800b2d0: e005 b.n 800b2de { #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_PWM_PulseFinishedCallback(htim); 800b2d8: 6878 ldr r0, [r7, #4] 800b2da: f000 f88a bl 800b3f2 #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 { 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_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 #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 { 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_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 #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 { 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_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 #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 { 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_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 #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 { 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_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 #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 : * @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 : * @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 : * @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 : * @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 : * @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 ) 800b430: 4293 cmp r3, r2 800b432: d013 beq.n 800b45c 800b434: 687b ldr r3, [r7, #4] 800b436: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 800b43a: d00f beq.n 800b45c 800b43c: 687b ldr r3, [r7, #4] 800b43e: 4a3d ldr r2, [pc, #244] ; (800b534 ) 800b440: 4293 cmp r3, r2 800b442: d00b beq.n 800b45c 800b444: 687b ldr r3, [r7, #4] 800b446: 4a3c ldr r2, [pc, #240] ; (800b538 ) 800b448: 4293 cmp r3, r2 800b44a: d007 beq.n 800b45c 800b44c: 687b ldr r3, [r7, #4] 800b44e: 4a3b ldr r2, [pc, #236] ; (800b53c ) 800b450: 4293 cmp r3, r2 800b452: d003 beq.n 800b45c 800b454: 687b ldr r3, [r7, #4] 800b456: 4a3a ldr r2, [pc, #232] ; (800b540 ) 800b458: 4293 cmp r3, r2 800b45a: d108 bne.n 800b46e { /* 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 ) 800b472: 4293 cmp r3, r2 800b474: d02b beq.n 800b4ce 800b476: 687b ldr r3, [r7, #4] 800b478: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 800b47c: d027 beq.n 800b4ce 800b47e: 687b ldr r3, [r7, #4] 800b480: 4a2c ldr r2, [pc, #176] ; (800b534 ) 800b482: 4293 cmp r3, r2 800b484: d023 beq.n 800b4ce 800b486: 687b ldr r3, [r7, #4] 800b488: 4a2b ldr r2, [pc, #172] ; (800b538 ) 800b48a: 4293 cmp r3, r2 800b48c: d01f beq.n 800b4ce 800b48e: 687b ldr r3, [r7, #4] 800b490: 4a2a ldr r2, [pc, #168] ; (800b53c ) 800b492: 4293 cmp r3, r2 800b494: d01b beq.n 800b4ce 800b496: 687b ldr r3, [r7, #4] 800b498: 4a29 ldr r2, [pc, #164] ; (800b540 ) 800b49a: 4293 cmp r3, r2 800b49c: d017 beq.n 800b4ce 800b49e: 687b ldr r3, [r7, #4] 800b4a0: 4a28 ldr r2, [pc, #160] ; (800b544 ) 800b4a2: 4293 cmp r3, r2 800b4a4: d013 beq.n 800b4ce 800b4a6: 687b ldr r3, [r7, #4] 800b4a8: 4a27 ldr r2, [pc, #156] ; (800b548 ) 800b4aa: 4293 cmp r3, r2 800b4ac: d00f beq.n 800b4ce 800b4ae: 687b ldr r3, [r7, #4] 800b4b0: 4a26 ldr r2, [pc, #152] ; (800b54c ) 800b4b2: 4293 cmp r3, r2 800b4b4: d00b beq.n 800b4ce 800b4b6: 687b ldr r3, [r7, #4] 800b4b8: 4a25 ldr r2, [pc, #148] ; (800b550 ) 800b4ba: 4293 cmp r3, r2 800b4bc: d007 beq.n 800b4ce 800b4be: 687b ldr r3, [r7, #4] 800b4c0: 4a24 ldr r2, [pc, #144] ; (800b554 ) 800b4c2: 4293 cmp r3, r2 800b4c4: d003 beq.n 800b4ce 800b4c6: 687b ldr r3, [r7, #4] 800b4c8: 4a23 ldr r2, [pc, #140] ; (800b558 ) 800b4ca: 4293 cmp r3, r2 800b4cc: d108 bne.n 800b4e0 { /* 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 ) 800b508: 4293 cmp r3, r2 800b50a: d003 beq.n 800b514 800b50c: 687b ldr r3, [r7, #4] 800b50e: 4a0c ldr r2, [pc, #48] ; (800b540 ) 800b510: 4293 cmp r3, r2 800b512: d103 bne.n 800b51c { /* 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 : * 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 800b570: 2302 movs r3, #2 800b572: e06d b.n 800b650 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 ) 800b59a: 4293 cmp r3, r2 800b59c: d004 beq.n 800b5a8 800b59e: 687b ldr r3, [r7, #4] 800b5a0: 681b ldr r3, [r3, #0] 800b5a2: 4a2f ldr r2, [pc, #188] ; (800b660 ) 800b5a4: 4293 cmp r3, r2 800b5a6: d108 bne.n 800b5ba { /* 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 ) 800b5da: 4293 cmp r3, r2 800b5dc: d022 beq.n 800b624 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 800b5e8: 687b ldr r3, [r7, #4] 800b5ea: 681b ldr r3, [r3, #0] 800b5ec: 4a1d ldr r2, [pc, #116] ; (800b664 ) 800b5ee: 4293 cmp r3, r2 800b5f0: d018 beq.n 800b624 800b5f2: 687b ldr r3, [r7, #4] 800b5f4: 681b ldr r3, [r3, #0] 800b5f6: 4a1c ldr r2, [pc, #112] ; (800b668 ) 800b5f8: 4293 cmp r3, r2 800b5fa: d013 beq.n 800b624 800b5fc: 687b ldr r3, [r7, #4] 800b5fe: 681b ldr r3, [r3, #0] 800b600: 4a1a ldr r2, [pc, #104] ; (800b66c ) 800b602: 4293 cmp r3, r2 800b604: d00e beq.n 800b624 800b606: 687b ldr r3, [r7, #4] 800b608: 681b ldr r3, [r3, #0] 800b60a: 4a15 ldr r2, [pc, #84] ; (800b660 ) 800b60c: 4293 cmp r3, r2 800b60e: d009 beq.n 800b624 800b610: 687b ldr r3, [r7, #4] 800b612: 681b ldr r3, [r3, #0] 800b614: 4a16 ldr r2, [pc, #88] ; (800b670 ) 800b616: 4293 cmp r3, r2 800b618: d004 beq.n 800b624 800b61a: 687b ldr r3, [r7, #4] 800b61c: 681b ldr r3, [r3, #0] 800b61e: 4a15 ldr r2, [pc, #84] ; (800b674 ) 800b620: 4293 cmp r3, r2 800b622: d10c bne.n 800b63e { /* 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 : * @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 : * @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 : * @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 : * 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 { return HAL_ERROR; 800b6c2: 2301 movs r3, #1 800b6c4: e040 b.n 800b748 { /* 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 { /* 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 #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 800b6f8: 4603 mov r3, r0 800b6fa: 2b01 cmp r3, #1 800b6fc: d101 bne.n 800b702 { return HAL_ERROR; 800b6fe: 2301 movs r3, #1 800b700: e022 b.n 800b748 } 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 { UART_AdvFeatureConfig(huart); 800b70a: 6878 ldr r0, [r7, #4] 800b70c: f000 ffe4 bl 800c6d8 } /* 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 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 : * @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 { if ((pData == NULL) || (Size == 0U)) 800b76a: 68bb ldr r3, [r7, #8] 800b76c: 2b00 cmp r3, #0 800b76e: d002 beq.n 800b776 800b770: 88fb ldrh r3, [r7, #6] 800b772: 2b00 cmp r3, #0 800b774: d101 bne.n 800b77a { return HAL_ERROR; 800b776: 2301 movs r3, #1 800b778: e0b6 b.n 800b8e8 } __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 800b784: 2302 movs r3, #2 800b786: e0af b.n 800b8e8 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 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 800b7c4: 68fb ldr r3, [r7, #12] 800b7c6: 691b ldr r3, [r3, #16] 800b7c8: 2b00 cmp r3, #0 800b7ca: d105 bne.n 800b7d8 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 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 800b7e2: 68fb ldr r3, [r7, #12] 800b7e4: 689b ldr r3, [r3, #8] 800b7e6: 2b00 cmp r3, #0 800b7e8: d10d bne.n 800b806 800b7ea: 68fb ldr r3, [r7, #12] 800b7ec: 691b ldr r3, [r3, #16] 800b7ee: 2b00 cmp r3, #0 800b7f0: d104 bne.n 800b7fc 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 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 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 800b810: 68fb ldr r3, [r7, #12] 800b812: 691b ldr r3, [r3, #16] 800b814: 2b00 cmp r3, #0 800b816: d104 bne.n 800b822 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 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 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 800b846: 68fb ldr r3, [r7, #12] 800b848: 691b ldr r3, [r3, #16] 800b84a: 2b00 cmp r3, #0 800b84c: d104 bne.n 800b858 { 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 } 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 { 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 800b87a: 4603 mov r3, r0 800b87c: 2b00 cmp r3, #0 800b87e: d001 beq.n 800b884 { return HAL_TIMEOUT; 800b880: 2303 movs r3, #3 800b882: e031 b.n 800b8e8 } if (pdata8bits == NULL) 800b884: 69fb ldr r3, [r7, #28] 800b886: 2b00 cmp r3, #0 800b888: d10c bne.n 800b8a4 { *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 } 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 } /* 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 } 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 : * @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 { if ((pData == NULL) || (Size == 0U)) 800b906: 68bb ldr r3, [r7, #8] 800b908: 2b00 cmp r3, #0 800b90a: d002 beq.n 800b912 800b90c: 88fb ldrh r3, [r7, #6] 800b90e: 2b00 cmp r3, #0 800b910: d101 bne.n 800b916 { return HAL_ERROR; 800b912: 2301 movs r3, #1 800b914: e04f b.n 800b9b6 } __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 800b920: 2302 movs r3, #2 800b922: e048 b.n 800b9b6 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 800b960: 68fb ldr r3, [r7, #12] 800b962: 691b ldr r3, [r3, #16] 800b964: 2b00 cmp r3, #0 800b966: d103 bne.n 800b970 { huart->TxISR = UART_TxISR_16BIT; 800b968: 68fb ldr r3, [r7, #12] 800b96a: 4a16 ldr r2, [pc, #88] ; (800b9c4 ) 800b96c: 669a str r2, [r3, #104] ; 0x68 800b96e: e002 b.n 800b976 } else { huart->TxISR = UART_TxISR_8BIT; 800b970: 68fb ldr r3, [r7, #12] 800b972: 4a15 ldr r2, [pc, #84] ; (800b9c8 ) 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 return HAL_OK; 800b9b0: 2300 movs r3, #0 800b9b2: e000 b.n 800b9b6 } 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 : * @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 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 /* 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 { 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 } /* 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 { /* 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 { 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 ) 800ba9a: 651a str r2, [r3, #80] ; 0x50 800ba9c: e003 b.n 800baa6 } 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 { /* 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 { 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 ) 800bac2: 651a str r2, [r3, #80] ; 0x50 800bac4: e003 b.n 800bace } 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 { /* 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 /* 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 { /* 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 800bb22: 4603 mov r3, r0 800bb24: 2b00 cmp r3, #0 800bb26: d004 beq.n 800bb32 { 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 } 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 { /* 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 /* 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 { /* 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 800bb8c: 4603 mov r3, r0 800bb8e: 2b00 cmp r3, #0 800bb90: d007 beq.n 800bba2 { 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 } 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 { /* 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 #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 : * @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 { /* 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 && ((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 { 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 { 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 } } /* 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 && (((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 || ((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 ) 800bc9c: 4013 ands r3, r2 800bc9e: 2b00 cmp r3, #0 800bca0: f000 810a beq.w 800beb8 { /* 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 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_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 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_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 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_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 && (((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 ((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_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 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_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 { /* 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 && ((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 { 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 { 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 ((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 { /* 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 /* 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 { /* 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 /* 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 { /* 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 ) 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 800be74: 4603 mov r3, r0 800be76: 2b00 cmp r3, #0 800be78: d017 beq.n 800beaa { /* 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 #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 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 800be90: e00b b.n 800beaa #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 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 800be98: e007 b.n 800beaa #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 #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 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 800beaa: bf00 nop return; 800beac: e18a b.n 800c1c4 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 && ((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 && ((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_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 { /* 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 && (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 { /* 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 { /* 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 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 /* 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 /* 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 /* 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 #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 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } return; 800c058: e0b6 b.n 800c1c8 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 && (nb_rx_data > 0U)) 800c07c: f8b7 30ba ldrh.w r3, [r7, #186] ; 0xba 800c080: 2b00 cmp r3, #0 800c082: f000 80a3 beq.w 800c1cc { /* 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 /* 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 /* 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 #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 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } return; 800c148: e040 b.n 800c1cc } #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 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_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 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ return; 800c172: e02e b.n 800c1d2 } #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 && ((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 { 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 { 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 } /* 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 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 { UART_EndTransmit_IT(huart); 800c1b6: 6878 ldr r0, [r7, #4] 800c1b8: f000 fde2 bl 800cd80 return; 800c1bc: bf00 nop 800c1be: e008 b.n 800c1d2 return; 800c1c0: bf00 nop 800c1c2: e006 b.n 800c1d2 return; 800c1c4: bf00 nop 800c1c6: e004 b.n 800c1d2 return; 800c1c8: bf00 nop 800c1ca: e002 b.n 800c1d2 return; 800c1cc: bf00 nop 800c1ce: e000 b.n 800c1d2 return; 800c1d0: bf00 nop } } 800c1d2: 37e8 adds r7, #232 ; 0xe8 800c1d4: 46bd mov sp, r7 800c1d6: bd80 pop {r7, pc} 0800c1d8 : * @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 : * @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 : * @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 : * @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 ) 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 ) 800c290: 4293 cmp r3, r2 800c292: d121 bne.n 800c2d8 800c294: 4ba1 ldr r3, [pc, #644] ; (800c51c ) 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 800c2a2: a201 add r2, pc, #4 ; (adr r2, 800c2a8 ) 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 800c2be: 2302 movs r3, #2 800c2c0: 77fb strb r3, [r7, #31] 800c2c2: e14d b.n 800c560 800c2c4: 2304 movs r3, #4 800c2c6: 77fb strb r3, [r7, #31] 800c2c8: e14a b.n 800c560 800c2ca: 2308 movs r3, #8 800c2cc: 77fb strb r3, [r7, #31] 800c2ce: e147 b.n 800c560 800c2d0: 2310 movs r3, #16 800c2d2: 77fb strb r3, [r7, #31] 800c2d4: bf00 nop 800c2d6: e143 b.n 800c560 800c2d8: 687b ldr r3, [r7, #4] 800c2da: 681b ldr r3, [r3, #0] 800c2dc: 4a90 ldr r2, [pc, #576] ; (800c520 ) 800c2de: 4293 cmp r3, r2 800c2e0: d134 bne.n 800c34c 800c2e2: 4b8e ldr r3, [pc, #568] ; (800c51c ) 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 800c2f0: a201 add r2, pc, #4 ; (adr r2, 800c2f8 ) 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 800c332: 2302 movs r3, #2 800c334: 77fb strb r3, [r7, #31] 800c336: e113 b.n 800c560 800c338: 2304 movs r3, #4 800c33a: 77fb strb r3, [r7, #31] 800c33c: e110 b.n 800c560 800c33e: 2308 movs r3, #8 800c340: 77fb strb r3, [r7, #31] 800c342: e10d b.n 800c560 800c344: 2310 movs r3, #16 800c346: 77fb strb r3, [r7, #31] 800c348: bf00 nop 800c34a: e109 b.n 800c560 800c34c: 687b ldr r3, [r7, #4] 800c34e: 681b ldr r3, [r3, #0] 800c350: 4a74 ldr r2, [pc, #464] ; (800c524 ) 800c352: 4293 cmp r3, r2 800c354: d120 bne.n 800c398 800c356: 4b71 ldr r3, [pc, #452] ; (800c51c ) 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 800c364: 2b10 cmp r3, #16 800c366: d802 bhi.n 800c36e 800c368: 2b00 cmp r3, #0 800c36a: d005 beq.n 800c378 800c36c: e010 b.n 800c390 800c36e: 2b20 cmp r3, #32 800c370: d005 beq.n 800c37e 800c372: 2b30 cmp r3, #48 ; 0x30 800c374: d009 beq.n 800c38a 800c376: e00b b.n 800c390 800c378: 2300 movs r3, #0 800c37a: 77fb strb r3, [r7, #31] 800c37c: e0f0 b.n 800c560 800c37e: 2302 movs r3, #2 800c380: 77fb strb r3, [r7, #31] 800c382: e0ed b.n 800c560 800c384: 2304 movs r3, #4 800c386: 77fb strb r3, [r7, #31] 800c388: e0ea b.n 800c560 800c38a: 2308 movs r3, #8 800c38c: 77fb strb r3, [r7, #31] 800c38e: e0e7 b.n 800c560 800c390: 2310 movs r3, #16 800c392: 77fb strb r3, [r7, #31] 800c394: bf00 nop 800c396: e0e3 b.n 800c560 800c398: 687b ldr r3, [r7, #4] 800c39a: 681b ldr r3, [r3, #0] 800c39c: 4a62 ldr r2, [pc, #392] ; (800c528 ) 800c39e: 4293 cmp r3, r2 800c3a0: d120 bne.n 800c3e4 800c3a2: 4b5e ldr r3, [pc, #376] ; (800c51c ) 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 800c3b0: 2b40 cmp r3, #64 ; 0x40 800c3b2: d802 bhi.n 800c3ba 800c3b4: 2b00 cmp r3, #0 800c3b6: d005 beq.n 800c3c4 800c3b8: e010 b.n 800c3dc 800c3ba: 2b80 cmp r3, #128 ; 0x80 800c3bc: d005 beq.n 800c3ca 800c3be: 2bc0 cmp r3, #192 ; 0xc0 800c3c0: d009 beq.n 800c3d6 800c3c2: e00b b.n 800c3dc 800c3c4: 2300 movs r3, #0 800c3c6: 77fb strb r3, [r7, #31] 800c3c8: e0ca b.n 800c560 800c3ca: 2302 movs r3, #2 800c3cc: 77fb strb r3, [r7, #31] 800c3ce: e0c7 b.n 800c560 800c3d0: 2304 movs r3, #4 800c3d2: 77fb strb r3, [r7, #31] 800c3d4: e0c4 b.n 800c560 800c3d6: 2308 movs r3, #8 800c3d8: 77fb strb r3, [r7, #31] 800c3da: e0c1 b.n 800c560 800c3dc: 2310 movs r3, #16 800c3de: 77fb strb r3, [r7, #31] 800c3e0: bf00 nop 800c3e2: e0bd b.n 800c560 800c3e4: 687b ldr r3, [r7, #4] 800c3e6: 681b ldr r3, [r3, #0] 800c3e8: 4a50 ldr r2, [pc, #320] ; (800c52c ) 800c3ea: 4293 cmp r3, r2 800c3ec: d124 bne.n 800c438 800c3ee: 4b4b ldr r3, [pc, #300] ; (800c51c ) 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 800c3fe: f5b3 7f80 cmp.w r3, #256 ; 0x100 800c402: d802 bhi.n 800c40a 800c404: 2b00 cmp r3, #0 800c406: d007 beq.n 800c418 800c408: e012 b.n 800c430 800c40a: f5b3 7f00 cmp.w r3, #512 ; 0x200 800c40e: d006 beq.n 800c41e 800c410: f5b3 7f40 cmp.w r3, #768 ; 0x300 800c414: d009 beq.n 800c42a 800c416: e00b b.n 800c430 800c418: 2300 movs r3, #0 800c41a: 77fb strb r3, [r7, #31] 800c41c: e0a0 b.n 800c560 800c41e: 2302 movs r3, #2 800c420: 77fb strb r3, [r7, #31] 800c422: e09d b.n 800c560 800c424: 2304 movs r3, #4 800c426: 77fb strb r3, [r7, #31] 800c428: e09a b.n 800c560 800c42a: 2308 movs r3, #8 800c42c: 77fb strb r3, [r7, #31] 800c42e: e097 b.n 800c560 800c430: 2310 movs r3, #16 800c432: 77fb strb r3, [r7, #31] 800c434: bf00 nop 800c436: e093 b.n 800c560 800c438: 687b ldr r3, [r7, #4] 800c43a: 681b ldr r3, [r3, #0] 800c43c: 4a3c ldr r2, [pc, #240] ; (800c530 ) 800c43e: 4293 cmp r3, r2 800c440: d124 bne.n 800c48c 800c442: 4b36 ldr r3, [pc, #216] ; (800c51c ) 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 800c452: f5b3 6f80 cmp.w r3, #1024 ; 0x400 800c456: d802 bhi.n 800c45e 800c458: 2b00 cmp r3, #0 800c45a: d007 beq.n 800c46c 800c45c: e012 b.n 800c484 800c45e: f5b3 6f00 cmp.w r3, #2048 ; 0x800 800c462: d006 beq.n 800c472 800c464: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 800c468: d009 beq.n 800c47e 800c46a: e00b b.n 800c484 800c46c: 2301 movs r3, #1 800c46e: 77fb strb r3, [r7, #31] 800c470: e076 b.n 800c560 800c472: 2302 movs r3, #2 800c474: 77fb strb r3, [r7, #31] 800c476: e073 b.n 800c560 800c478: 2304 movs r3, #4 800c47a: 77fb strb r3, [r7, #31] 800c47c: e070 b.n 800c560 800c47e: 2308 movs r3, #8 800c480: 77fb strb r3, [r7, #31] 800c482: e06d b.n 800c560 800c484: 2310 movs r3, #16 800c486: 77fb strb r3, [r7, #31] 800c488: bf00 nop 800c48a: e069 b.n 800c560 800c48c: 687b ldr r3, [r7, #4] 800c48e: 681b ldr r3, [r3, #0] 800c490: 4a28 ldr r2, [pc, #160] ; (800c534 ) 800c492: 4293 cmp r3, r2 800c494: d124 bne.n 800c4e0 800c496: 4b21 ldr r3, [pc, #132] ; (800c51c ) 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 800c4a6: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 800c4aa: d802 bhi.n 800c4b2 800c4ac: 2b00 cmp r3, #0 800c4ae: d007 beq.n 800c4c0 800c4b0: e012 b.n 800c4d8 800c4b2: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 800c4b6: d006 beq.n 800c4c6 800c4b8: f5b3 5f40 cmp.w r3, #12288 ; 0x3000 800c4bc: d009 beq.n 800c4d2 800c4be: e00b b.n 800c4d8 800c4c0: 2300 movs r3, #0 800c4c2: 77fb strb r3, [r7, #31] 800c4c4: e04c b.n 800c560 800c4c6: 2302 movs r3, #2 800c4c8: 77fb strb r3, [r7, #31] 800c4ca: e049 b.n 800c560 800c4cc: 2304 movs r3, #4 800c4ce: 77fb strb r3, [r7, #31] 800c4d0: e046 b.n 800c560 800c4d2: 2308 movs r3, #8 800c4d4: 77fb strb r3, [r7, #31] 800c4d6: e043 b.n 800c560 800c4d8: 2310 movs r3, #16 800c4da: 77fb strb r3, [r7, #31] 800c4dc: bf00 nop 800c4de: e03f b.n 800c560 800c4e0: 687b ldr r3, [r7, #4] 800c4e2: 681b ldr r3, [r3, #0] 800c4e4: 4a14 ldr r2, [pc, #80] ; (800c538 ) 800c4e6: 4293 cmp r3, r2 800c4e8: d138 bne.n 800c55c 800c4ea: 4b0c ldr r3, [pc, #48] ; (800c51c ) 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 800c4fa: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 800c4fe: d802 bhi.n 800c506 800c500: 2b00 cmp r3, #0 800c502: d01b beq.n 800c53c 800c504: e026 b.n 800c554 800c506: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 800c50a: d01a beq.n 800c542 800c50c: f5b3 4f40 cmp.w r3, #49152 ; 0xc000 800c510: d01d beq.n 800c54e 800c512: e01f b.n 800c554 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 800c542: 2302 movs r3, #2 800c544: 77fb strb r3, [r7, #31] 800c546: e00b b.n 800c560 800c548: 2304 movs r3, #4 800c54a: 77fb strb r3, [r7, #31] 800c54c: e008 b.n 800c560 800c54e: 2308 movs r3, #8 800c550: 77fb strb r3, [r7, #31] 800c552: e005 b.n 800c560 800c554: 2310 movs r3, #16 800c556: 77fb strb r3, [r7, #31] 800c558: bf00 nop 800c55a: e001 b.n 800c560 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 { switch (clocksource) 800c56a: 7ffb ldrb r3, [r7, #31] 800c56c: 2b08 cmp r3, #8 800c56e: d828 bhi.n 800c5c2 800c570: a201 add r2, pc, #4 ; (adr r2, 800c578 ) 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 800c5a0: 61b8 str r0, [r7, #24] break; 800c5a2: e013 b.n 800c5cc case UART_CLOCKSOURCE_PCLK2: pclk = HAL_RCC_GetPCLK2Freq(); 800c5a4: f7fe f8e8 bl 800a778 800c5a8: 61b8 str r0, [r7, #24] break; 800c5aa: e00f b.n 800c5cc case UART_CLOCKSOURCE_HSI: pclk = (uint32_t) HSI_VALUE; 800c5ac: 4b49 ldr r3, [pc, #292] ; (800c6d4 ) 800c5ae: 61bb str r3, [r7, #24] break; 800c5b0: e00c b.n 800c5cc case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); 800c5b2: f7fe f80b bl 800a5cc 800c5b6: 61b8 str r0, [r7, #24] break; 800c5b8: e008 b.n 800c5cc 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 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 { 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 800c5ee: 693b ldr r3, [r7, #16] 800c5f0: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 800c5f4: d212 bcs.n 800c61c { 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 } else { ret = HAL_ERROR; 800c61c: 2301 movs r3, #1 800c61e: 77bb strb r3, [r7, #30] 800c620: e04c b.n 800c6bc } } } else { switch (clocksource) 800c622: 7ffb ldrb r3, [r7, #31] 800c624: 2b08 cmp r3, #8 800c626: d828 bhi.n 800c67a 800c628: a201 add r2, pc, #4 ; (adr r2, 800c630 ) 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 800c658: 61b8 str r0, [r7, #24] break; 800c65a: e013 b.n 800c684 case UART_CLOCKSOURCE_PCLK2: pclk = HAL_RCC_GetPCLK2Freq(); 800c65c: f7fe f88c bl 800a778 800c660: 61b8 str r0, [r7, #24] break; 800c662: e00f b.n 800c684 case UART_CLOCKSOURCE_HSI: pclk = (uint32_t) HSI_VALUE; 800c664: 4b1b ldr r3, [pc, #108] ; (800c6d4 ) 800c666: 61bb str r3, [r7, #24] break; 800c668: e00c b.n 800c684 case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); 800c66a: f7fd ffaf bl 800a5cc 800c66e: 61b8 str r0, [r7, #24] break; 800c670: e008 b.n 800c684 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 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 { /* 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 800c6a4: 693b ldr r3, [r7, #16] 800c6a6: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 800c6aa: d205 bcs.n 800c6b8 { 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 } 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 : * @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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 : * @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 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 { /* 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 800c854: 4603 mov r3, r0 800c856: 2b00 cmp r3, #0 800c858: d001 beq.n 800c85e { /* Timeout occurred */ return HAL_TIMEOUT; 800c85a: 2303 movs r3, #3 800c85c: e023 b.n 800c8a6 } } #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 { /* 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 800c880: 4603 mov r3, r0 800c882: 2b00 cmp r3, #0 800c884: d001 beq.n 800c88a { /* Timeout occurred */ return HAL_TIMEOUT; 800c886: 2303 movs r3, #3 800c888: e00d b.n 800c8a6 } } #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 : * @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 { /* 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 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) 800c8ca: f7fb fef1 bl 80086b0 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 800c8da: 6fbb ldr r3, [r7, #120] ; 0x78 800c8dc: 2b00 cmp r3, #0 800c8de: d13e bne.n 800c95e { /* 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 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 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 } 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 { 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 { /* 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 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 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 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 } } } } 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 : * @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 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 /* 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 { 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 } /* 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 : * (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 #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 : * 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 { 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 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 800cb88: e000 b.n 800cb8c 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 : * 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 { 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 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 800cc02: e000 b.n 800cc06 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 : * 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 { 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 { /* 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 /* 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 huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF); huart->pTxBuffPtr++; huart->TxXferCount--; } } } 800cc8c: e013 b.n 800ccb6 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 : * 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 { 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 { /* 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 /* 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 huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL); huart->pTxBuffPtr += 2U; huart->TxXferCount--; } } } 800cd42: e017 b.n 800cd74 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 : * @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 /* 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 #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 : .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 /* Copy the data segment initializers from flash to SRAM */ movs r1, #0 800cdd8: 2100 movs r1, #0 b LoopCopyDataInit 800cdda: e003 b.n 800cde4 0800cddc : CopyDataInit: ldr r3, =_sidata 800cddc: 4b0c ldr r3, [pc, #48] ; (800ce10 ) 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: ldr r0, =_sdata 800cde4: 480b ldr r0, [pc, #44] ; (800ce14 ) ldr r3, =_edata 800cde6: 4b0c ldr r3, [pc, #48] ; (800ce18 ) 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 ldr r2, =_sbss 800cdee: 4a0b ldr r2, [pc, #44] ; (800ce1c ) b LoopFillZerobss 800cdf0: e002 b.n 800cdf8 0800cdf2 : /* 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: ldr r3, = _ebss 800cdf8: 4b09 ldr r3, [pc, #36] ; (800ce20 ) cmp r2, r3 800cdfa: 429a cmp r2, r3 bcc FillZerobss 800cdfc: d3f9 bcc.n 800cdf2 /* Call the clock system initialization function.*/ bl SystemInit 800cdfe: f7fa fa69 bl 80072d4 /* 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
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 : * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop 800ce24: e7fe b.n 800ce24 ... 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 : 800ce70: 4402 add r2, r0 800ce72: 4603 mov r3, r0 800ce74: 4293 cmp r3, r2 800ce76: d100 bne.n 800ce7a 800ce78: 4770 bx lr 800ce7a: f803 1b01 strb.w r1, [r3], #1 800ce7e: e7f9 b.n 800ce74 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