A141 Amplifier.elf: file format elf32-littlearm Sections: Idx Name Size VMA LMA File off Algn 0 .isr_vector 000000c0 08000000 08000000 00010000 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 1 .text 00006f28 080000c0 080000c0 000100c0 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 2 .rodata 000004a4 08006fe8 08006fe8 00016fe8 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 3 .ARM 00000008 0800748c 0800748c 0001748c 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 4 .init_array 00000004 08007494 08007494 00017494 2**2 CONTENTS, ALLOC, LOAD, DATA 5 .fini_array 00000004 08007498 08007498 00017498 2**2 CONTENTS, ALLOC, LOAD, DATA 6 .data 00000010 20000000 0800749c 00020000 2**2 CONTENTS, ALLOC, LOAD, DATA 7 .bss 00000398 20000010 080074ac 00020010 2**2 ALLOC 8 ._user_heap_stack 00000600 200003a8 080074ac 000203a8 2**0 ALLOC 9 .ARM.attributes 00000028 00000000 00000000 00020010 2**0 CONTENTS, READONLY 10 .debug_info 0001130a 00000000 00000000 00020038 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_abbrev 000029ed 00000000 00000000 00031342 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_aranges 00000e40 00000000 00000000 00033d30 2**3 CONTENTS, READONLY, DEBUGGING 13 .debug_ranges 00000d18 00000000 00000000 00034b70 2**3 CONTENTS, READONLY, DEBUGGING 14 .debug_line 00007152 00000000 00000000 00035888 2**0 CONTENTS, READONLY, DEBUGGING 15 .debug_str 000045bb 00000000 00000000 0003c9da 2**0 CONTENTS, READONLY, DEBUGGING 16 .comment 0000007c 00000000 00000000 00040f95 2**0 CONTENTS, READONLY 17 .debug_frame 00003434 00000000 00000000 00041014 2**2 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 080000c0 <__do_global_dtors_aux>: 80000c0: b510 push {r4, lr} 80000c2: 4c06 ldr r4, [pc, #24] ; (80000dc <__do_global_dtors_aux+0x1c>) 80000c4: 7823 ldrb r3, [r4, #0] 80000c6: 2b00 cmp r3, #0 80000c8: d107 bne.n 80000da <__do_global_dtors_aux+0x1a> 80000ca: 4b05 ldr r3, [pc, #20] ; (80000e0 <__do_global_dtors_aux+0x20>) 80000cc: 2b00 cmp r3, #0 80000ce: d002 beq.n 80000d6 <__do_global_dtors_aux+0x16> 80000d0: 4804 ldr r0, [pc, #16] ; (80000e4 <__do_global_dtors_aux+0x24>) 80000d2: e000 b.n 80000d6 <__do_global_dtors_aux+0x16> 80000d4: bf00 nop 80000d6: 2301 movs r3, #1 80000d8: 7023 strb r3, [r4, #0] 80000da: bd10 pop {r4, pc} 80000dc: 20000010 .word 0x20000010 80000e0: 00000000 .word 0x00000000 80000e4: 08006fd0 .word 0x08006fd0 080000e8 : 80000e8: 4b04 ldr r3, [pc, #16] ; (80000fc ) 80000ea: b510 push {r4, lr} 80000ec: 2b00 cmp r3, #0 80000ee: d003 beq.n 80000f8 80000f0: 4903 ldr r1, [pc, #12] ; (8000100 ) 80000f2: 4804 ldr r0, [pc, #16] ; (8000104 ) 80000f4: e000 b.n 80000f8 80000f6: bf00 nop 80000f8: bd10 pop {r4, pc} 80000fa: 46c0 nop ; (mov r8, r8) 80000fc: 00000000 .word 0x00000000 8000100: 20000014 .word 0x20000014 8000104: 08006fd0 .word 0x08006fd0 08000108 <__udivsi3>: 8000108: 2200 movs r2, #0 800010a: 0843 lsrs r3, r0, #1 800010c: 428b cmp r3, r1 800010e: d374 bcc.n 80001fa <__udivsi3+0xf2> 8000110: 0903 lsrs r3, r0, #4 8000112: 428b cmp r3, r1 8000114: d35f bcc.n 80001d6 <__udivsi3+0xce> 8000116: 0a03 lsrs r3, r0, #8 8000118: 428b cmp r3, r1 800011a: d344 bcc.n 80001a6 <__udivsi3+0x9e> 800011c: 0b03 lsrs r3, r0, #12 800011e: 428b cmp r3, r1 8000120: d328 bcc.n 8000174 <__udivsi3+0x6c> 8000122: 0c03 lsrs r3, r0, #16 8000124: 428b cmp r3, r1 8000126: d30d bcc.n 8000144 <__udivsi3+0x3c> 8000128: 22ff movs r2, #255 ; 0xff 800012a: 0209 lsls r1, r1, #8 800012c: ba12 rev r2, r2 800012e: 0c03 lsrs r3, r0, #16 8000130: 428b cmp r3, r1 8000132: d302 bcc.n 800013a <__udivsi3+0x32> 8000134: 1212 asrs r2, r2, #8 8000136: 0209 lsls r1, r1, #8 8000138: d065 beq.n 8000206 <__udivsi3+0xfe> 800013a: 0b03 lsrs r3, r0, #12 800013c: 428b cmp r3, r1 800013e: d319 bcc.n 8000174 <__udivsi3+0x6c> 8000140: e000 b.n 8000144 <__udivsi3+0x3c> 8000142: 0a09 lsrs r1, r1, #8 8000144: 0bc3 lsrs r3, r0, #15 8000146: 428b cmp r3, r1 8000148: d301 bcc.n 800014e <__udivsi3+0x46> 800014a: 03cb lsls r3, r1, #15 800014c: 1ac0 subs r0, r0, r3 800014e: 4152 adcs r2, r2 8000150: 0b83 lsrs r3, r0, #14 8000152: 428b cmp r3, r1 8000154: d301 bcc.n 800015a <__udivsi3+0x52> 8000156: 038b lsls r3, r1, #14 8000158: 1ac0 subs r0, r0, r3 800015a: 4152 adcs r2, r2 800015c: 0b43 lsrs r3, r0, #13 800015e: 428b cmp r3, r1 8000160: d301 bcc.n 8000166 <__udivsi3+0x5e> 8000162: 034b lsls r3, r1, #13 8000164: 1ac0 subs r0, r0, r3 8000166: 4152 adcs r2, r2 8000168: 0b03 lsrs r3, r0, #12 800016a: 428b cmp r3, r1 800016c: d301 bcc.n 8000172 <__udivsi3+0x6a> 800016e: 030b lsls r3, r1, #12 8000170: 1ac0 subs r0, r0, r3 8000172: 4152 adcs r2, r2 8000174: 0ac3 lsrs r3, r0, #11 8000176: 428b cmp r3, r1 8000178: d301 bcc.n 800017e <__udivsi3+0x76> 800017a: 02cb lsls r3, r1, #11 800017c: 1ac0 subs r0, r0, r3 800017e: 4152 adcs r2, r2 8000180: 0a83 lsrs r3, r0, #10 8000182: 428b cmp r3, r1 8000184: d301 bcc.n 800018a <__udivsi3+0x82> 8000186: 028b lsls r3, r1, #10 8000188: 1ac0 subs r0, r0, r3 800018a: 4152 adcs r2, r2 800018c: 0a43 lsrs r3, r0, #9 800018e: 428b cmp r3, r1 8000190: d301 bcc.n 8000196 <__udivsi3+0x8e> 8000192: 024b lsls r3, r1, #9 8000194: 1ac0 subs r0, r0, r3 8000196: 4152 adcs r2, r2 8000198: 0a03 lsrs r3, r0, #8 800019a: 428b cmp r3, r1 800019c: d301 bcc.n 80001a2 <__udivsi3+0x9a> 800019e: 020b lsls r3, r1, #8 80001a0: 1ac0 subs r0, r0, r3 80001a2: 4152 adcs r2, r2 80001a4: d2cd bcs.n 8000142 <__udivsi3+0x3a> 80001a6: 09c3 lsrs r3, r0, #7 80001a8: 428b cmp r3, r1 80001aa: d301 bcc.n 80001b0 <__udivsi3+0xa8> 80001ac: 01cb lsls r3, r1, #7 80001ae: 1ac0 subs r0, r0, r3 80001b0: 4152 adcs r2, r2 80001b2: 0983 lsrs r3, r0, #6 80001b4: 428b cmp r3, r1 80001b6: d301 bcc.n 80001bc <__udivsi3+0xb4> 80001b8: 018b lsls r3, r1, #6 80001ba: 1ac0 subs r0, r0, r3 80001bc: 4152 adcs r2, r2 80001be: 0943 lsrs r3, r0, #5 80001c0: 428b cmp r3, r1 80001c2: d301 bcc.n 80001c8 <__udivsi3+0xc0> 80001c4: 014b lsls r3, r1, #5 80001c6: 1ac0 subs r0, r0, r3 80001c8: 4152 adcs r2, r2 80001ca: 0903 lsrs r3, r0, #4 80001cc: 428b cmp r3, r1 80001ce: d301 bcc.n 80001d4 <__udivsi3+0xcc> 80001d0: 010b lsls r3, r1, #4 80001d2: 1ac0 subs r0, r0, r3 80001d4: 4152 adcs r2, r2 80001d6: 08c3 lsrs r3, r0, #3 80001d8: 428b cmp r3, r1 80001da: d301 bcc.n 80001e0 <__udivsi3+0xd8> 80001dc: 00cb lsls r3, r1, #3 80001de: 1ac0 subs r0, r0, r3 80001e0: 4152 adcs r2, r2 80001e2: 0883 lsrs r3, r0, #2 80001e4: 428b cmp r3, r1 80001e6: d301 bcc.n 80001ec <__udivsi3+0xe4> 80001e8: 008b lsls r3, r1, #2 80001ea: 1ac0 subs r0, r0, r3 80001ec: 4152 adcs r2, r2 80001ee: 0843 lsrs r3, r0, #1 80001f0: 428b cmp r3, r1 80001f2: d301 bcc.n 80001f8 <__udivsi3+0xf0> 80001f4: 004b lsls r3, r1, #1 80001f6: 1ac0 subs r0, r0, r3 80001f8: 4152 adcs r2, r2 80001fa: 1a41 subs r1, r0, r1 80001fc: d200 bcs.n 8000200 <__udivsi3+0xf8> 80001fe: 4601 mov r1, r0 8000200: 4152 adcs r2, r2 8000202: 4610 mov r0, r2 8000204: 4770 bx lr 8000206: e7ff b.n 8000208 <__udivsi3+0x100> 8000208: b501 push {r0, lr} 800020a: 2000 movs r0, #0 800020c: f000 f806 bl 800021c <__aeabi_idiv0> 8000210: bd02 pop {r1, pc} 8000212: 46c0 nop ; (mov r8, r8) 08000214 <__aeabi_uidivmod>: 8000214: 2900 cmp r1, #0 8000216: d0f7 beq.n 8000208 <__udivsi3+0x100> 8000218: e776 b.n 8000108 <__udivsi3> 800021a: 4770 bx lr 0800021c <__aeabi_idiv0>: 800021c: 4770 bx lr 800021e: 46c0 nop ; (mov r8, r8) 08000220 <__aeabi_cdrcmple>: 8000220: 4684 mov ip, r0 8000222: 1c10 adds r0, r2, #0 8000224: 4662 mov r2, ip 8000226: 468c mov ip, r1 8000228: 1c19 adds r1, r3, #0 800022a: 4663 mov r3, ip 800022c: e000 b.n 8000230 <__aeabi_cdcmpeq> 800022e: 46c0 nop ; (mov r8, r8) 08000230 <__aeabi_cdcmpeq>: 8000230: b51f push {r0, r1, r2, r3, r4, lr} 8000232: f000 ff3f bl 80010b4 <__ledf2> 8000236: 2800 cmp r0, #0 8000238: d401 bmi.n 800023e <__aeabi_cdcmpeq+0xe> 800023a: 2100 movs r1, #0 800023c: 42c8 cmn r0, r1 800023e: bd1f pop {r0, r1, r2, r3, r4, pc} 08000240 <__aeabi_dcmpeq>: 8000240: b510 push {r4, lr} 8000242: f000 fe99 bl 8000f78 <__eqdf2> 8000246: 4240 negs r0, r0 8000248: 3001 adds r0, #1 800024a: bd10 pop {r4, pc} 0800024c <__aeabi_dcmplt>: 800024c: b510 push {r4, lr} 800024e: f000 ff31 bl 80010b4 <__ledf2> 8000252: 2800 cmp r0, #0 8000254: db01 blt.n 800025a <__aeabi_dcmplt+0xe> 8000256: 2000 movs r0, #0 8000258: bd10 pop {r4, pc} 800025a: 2001 movs r0, #1 800025c: bd10 pop {r4, pc} 800025e: 46c0 nop ; (mov r8, r8) 08000260 <__aeabi_dcmple>: 8000260: b510 push {r4, lr} 8000262: f000 ff27 bl 80010b4 <__ledf2> 8000266: 2800 cmp r0, #0 8000268: dd01 ble.n 800026e <__aeabi_dcmple+0xe> 800026a: 2000 movs r0, #0 800026c: bd10 pop {r4, pc} 800026e: 2001 movs r0, #1 8000270: bd10 pop {r4, pc} 8000272: 46c0 nop ; (mov r8, r8) 08000274 <__aeabi_dcmpgt>: 8000274: b510 push {r4, lr} 8000276: f000 feb9 bl 8000fec <__gedf2> 800027a: 2800 cmp r0, #0 800027c: dc01 bgt.n 8000282 <__aeabi_dcmpgt+0xe> 800027e: 2000 movs r0, #0 8000280: bd10 pop {r4, pc} 8000282: 2001 movs r0, #1 8000284: bd10 pop {r4, pc} 8000286: 46c0 nop ; (mov r8, r8) 08000288 <__aeabi_dcmpge>: 8000288: b510 push {r4, lr} 800028a: f000 feaf bl 8000fec <__gedf2> 800028e: 2800 cmp r0, #0 8000290: da01 bge.n 8000296 <__aeabi_dcmpge+0xe> 8000292: 2000 movs r0, #0 8000294: bd10 pop {r4, pc} 8000296: 2001 movs r0, #1 8000298: bd10 pop {r4, pc} 800029a: 46c0 nop ; (mov r8, r8) 0800029c <__aeabi_cfrcmple>: 800029c: 4684 mov ip, r0 800029e: 1c08 adds r0, r1, #0 80002a0: 4661 mov r1, ip 80002a2: e7ff b.n 80002a4 <__aeabi_cfcmpeq> 080002a4 <__aeabi_cfcmpeq>: 80002a4: b51f push {r0, r1, r2, r3, r4, lr} 80002a6: f000 fb03 bl 80008b0 <__lesf2> 80002aa: 2800 cmp r0, #0 80002ac: d401 bmi.n 80002b2 <__aeabi_cfcmpeq+0xe> 80002ae: 2100 movs r1, #0 80002b0: 42c8 cmn r0, r1 80002b2: bd1f pop {r0, r1, r2, r3, r4, pc} 080002b4 <__aeabi_fcmpeq>: 80002b4: b510 push {r4, lr} 80002b6: f000 fa95 bl 80007e4 <__eqsf2> 80002ba: 4240 negs r0, r0 80002bc: 3001 adds r0, #1 80002be: bd10 pop {r4, pc} 080002c0 <__aeabi_fcmplt>: 80002c0: b510 push {r4, lr} 80002c2: f000 faf5 bl 80008b0 <__lesf2> 80002c6: 2800 cmp r0, #0 80002c8: db01 blt.n 80002ce <__aeabi_fcmplt+0xe> 80002ca: 2000 movs r0, #0 80002cc: bd10 pop {r4, pc} 80002ce: 2001 movs r0, #1 80002d0: bd10 pop {r4, pc} 80002d2: 46c0 nop ; (mov r8, r8) 080002d4 <__aeabi_fcmple>: 80002d4: b510 push {r4, lr} 80002d6: f000 faeb bl 80008b0 <__lesf2> 80002da: 2800 cmp r0, #0 80002dc: dd01 ble.n 80002e2 <__aeabi_fcmple+0xe> 80002de: 2000 movs r0, #0 80002e0: bd10 pop {r4, pc} 80002e2: 2001 movs r0, #1 80002e4: bd10 pop {r4, pc} 80002e6: 46c0 nop ; (mov r8, r8) 080002e8 <__aeabi_fcmpgt>: 80002e8: b510 push {r4, lr} 80002ea: f000 faa1 bl 8000830 <__gesf2> 80002ee: 2800 cmp r0, #0 80002f0: dc01 bgt.n 80002f6 <__aeabi_fcmpgt+0xe> 80002f2: 2000 movs r0, #0 80002f4: bd10 pop {r4, pc} 80002f6: 2001 movs r0, #1 80002f8: bd10 pop {r4, pc} 80002fa: 46c0 nop ; (mov r8, r8) 080002fc <__aeabi_fcmpge>: 80002fc: b510 push {r4, lr} 80002fe: f000 fa97 bl 8000830 <__gesf2> 8000302: 2800 cmp r0, #0 8000304: da01 bge.n 800030a <__aeabi_fcmpge+0xe> 8000306: 2000 movs r0, #0 8000308: bd10 pop {r4, pc} 800030a: 2001 movs r0, #1 800030c: bd10 pop {r4, pc} 800030e: 46c0 nop ; (mov r8, r8) 08000310 <__aeabi_uldivmod>: 8000310: 2b00 cmp r3, #0 8000312: d111 bne.n 8000338 <__aeabi_uldivmod+0x28> 8000314: 2a00 cmp r2, #0 8000316: d10f bne.n 8000338 <__aeabi_uldivmod+0x28> 8000318: 2900 cmp r1, #0 800031a: d100 bne.n 800031e <__aeabi_uldivmod+0xe> 800031c: 2800 cmp r0, #0 800031e: d002 beq.n 8000326 <__aeabi_uldivmod+0x16> 8000320: 2100 movs r1, #0 8000322: 43c9 mvns r1, r1 8000324: 1c08 adds r0, r1, #0 8000326: b407 push {r0, r1, r2} 8000328: 4802 ldr r0, [pc, #8] ; (8000334 <__aeabi_uldivmod+0x24>) 800032a: a102 add r1, pc, #8 ; (adr r1, 8000334 <__aeabi_uldivmod+0x24>) 800032c: 1840 adds r0, r0, r1 800032e: 9002 str r0, [sp, #8] 8000330: bd03 pop {r0, r1, pc} 8000332: 46c0 nop ; (mov r8, r8) 8000334: fffffee9 .word 0xfffffee9 8000338: b403 push {r0, r1} 800033a: 4668 mov r0, sp 800033c: b501 push {r0, lr} 800033e: 9802 ldr r0, [sp, #8] 8000340: f000 f848 bl 80003d4 <__udivmoddi4> 8000344: 9b01 ldr r3, [sp, #4] 8000346: 469e mov lr, r3 8000348: b002 add sp, #8 800034a: bc0c pop {r2, r3} 800034c: 4770 bx lr 800034e: 46c0 nop ; (mov r8, r8) 08000350 <__aeabi_lmul>: 8000350: b5f0 push {r4, r5, r6, r7, lr} 8000352: 46ce mov lr, r9 8000354: 4647 mov r7, r8 8000356: 0415 lsls r5, r2, #16 8000358: 0c2d lsrs r5, r5, #16 800035a: 002e movs r6, r5 800035c: b580 push {r7, lr} 800035e: 0407 lsls r7, r0, #16 8000360: 0c14 lsrs r4, r2, #16 8000362: 0c3f lsrs r7, r7, #16 8000364: 4699 mov r9, r3 8000366: 0c03 lsrs r3, r0, #16 8000368: 437e muls r6, r7 800036a: 435d muls r5, r3 800036c: 4367 muls r7, r4 800036e: 4363 muls r3, r4 8000370: 197f adds r7, r7, r5 8000372: 0c34 lsrs r4, r6, #16 8000374: 19e4 adds r4, r4, r7 8000376: 469c mov ip, r3 8000378: 42a5 cmp r5, r4 800037a: d903 bls.n 8000384 <__aeabi_lmul+0x34> 800037c: 2380 movs r3, #128 ; 0x80 800037e: 025b lsls r3, r3, #9 8000380: 4698 mov r8, r3 8000382: 44c4 add ip, r8 8000384: 464b mov r3, r9 8000386: 4351 muls r1, r2 8000388: 4343 muls r3, r0 800038a: 0436 lsls r6, r6, #16 800038c: 0c36 lsrs r6, r6, #16 800038e: 0c25 lsrs r5, r4, #16 8000390: 0424 lsls r4, r4, #16 8000392: 4465 add r5, ip 8000394: 19a4 adds r4, r4, r6 8000396: 1859 adds r1, r3, r1 8000398: 1949 adds r1, r1, r5 800039a: 0020 movs r0, r4 800039c: bc0c pop {r2, r3} 800039e: 4690 mov r8, r2 80003a0: 4699 mov r9, r3 80003a2: bdf0 pop {r4, r5, r6, r7, pc} 080003a4 <__aeabi_f2uiz>: 80003a4: 219e movs r1, #158 ; 0x9e 80003a6: b510 push {r4, lr} 80003a8: 05c9 lsls r1, r1, #23 80003aa: 1c04 adds r4, r0, #0 80003ac: f7ff ffa6 bl 80002fc <__aeabi_fcmpge> 80003b0: 2800 cmp r0, #0 80003b2: d103 bne.n 80003bc <__aeabi_f2uiz+0x18> 80003b4: 1c20 adds r0, r4, #0 80003b6: f000 fd79 bl 8000eac <__aeabi_f2iz> 80003ba: bd10 pop {r4, pc} 80003bc: 219e movs r1, #158 ; 0x9e 80003be: 1c20 adds r0, r4, #0 80003c0: 05c9 lsls r1, r1, #23 80003c2: f000 fbd7 bl 8000b74 <__aeabi_fsub> 80003c6: f000 fd71 bl 8000eac <__aeabi_f2iz> 80003ca: 2380 movs r3, #128 ; 0x80 80003cc: 061b lsls r3, r3, #24 80003ce: 469c mov ip, r3 80003d0: 4460 add r0, ip 80003d2: e7f2 b.n 80003ba <__aeabi_f2uiz+0x16> 080003d4 <__udivmoddi4>: 80003d4: b5f0 push {r4, r5, r6, r7, lr} 80003d6: 4657 mov r7, sl 80003d8: 464e mov r6, r9 80003da: 4645 mov r5, r8 80003dc: 46de mov lr, fp 80003de: b5e0 push {r5, r6, r7, lr} 80003e0: 0004 movs r4, r0 80003e2: b083 sub sp, #12 80003e4: 000d movs r5, r1 80003e6: 4692 mov sl, r2 80003e8: 4699 mov r9, r3 80003ea: 428b cmp r3, r1 80003ec: d82f bhi.n 800044e <__udivmoddi4+0x7a> 80003ee: d02c beq.n 800044a <__udivmoddi4+0x76> 80003f0: 4649 mov r1, r9 80003f2: 4650 mov r0, sl 80003f4: f000 ff30 bl 8001258 <__clzdi2> 80003f8: 0029 movs r1, r5 80003fa: 0006 movs r6, r0 80003fc: 0020 movs r0, r4 80003fe: f000 ff2b bl 8001258 <__clzdi2> 8000402: 1a33 subs r3, r6, r0 8000404: 4698 mov r8, r3 8000406: 3b20 subs r3, #32 8000408: 469b mov fp, r3 800040a: d500 bpl.n 800040e <__udivmoddi4+0x3a> 800040c: e074 b.n 80004f8 <__udivmoddi4+0x124> 800040e: 4653 mov r3, sl 8000410: 465a mov r2, fp 8000412: 4093 lsls r3, r2 8000414: 001f movs r7, r3 8000416: 4653 mov r3, sl 8000418: 4642 mov r2, r8 800041a: 4093 lsls r3, r2 800041c: 001e movs r6, r3 800041e: 42af cmp r7, r5 8000420: d829 bhi.n 8000476 <__udivmoddi4+0xa2> 8000422: d026 beq.n 8000472 <__udivmoddi4+0x9e> 8000424: 465b mov r3, fp 8000426: 1ba4 subs r4, r4, r6 8000428: 41bd sbcs r5, r7 800042a: 2b00 cmp r3, #0 800042c: da00 bge.n 8000430 <__udivmoddi4+0x5c> 800042e: e079 b.n 8000524 <__udivmoddi4+0x150> 8000430: 2200 movs r2, #0 8000432: 2300 movs r3, #0 8000434: 9200 str r2, [sp, #0] 8000436: 9301 str r3, [sp, #4] 8000438: 2301 movs r3, #1 800043a: 465a mov r2, fp 800043c: 4093 lsls r3, r2 800043e: 9301 str r3, [sp, #4] 8000440: 2301 movs r3, #1 8000442: 4642 mov r2, r8 8000444: 4093 lsls r3, r2 8000446: 9300 str r3, [sp, #0] 8000448: e019 b.n 800047e <__udivmoddi4+0xaa> 800044a: 4282 cmp r2, r0 800044c: d9d0 bls.n 80003f0 <__udivmoddi4+0x1c> 800044e: 2200 movs r2, #0 8000450: 2300 movs r3, #0 8000452: 9200 str r2, [sp, #0] 8000454: 9301 str r3, [sp, #4] 8000456: 9b0c ldr r3, [sp, #48] ; 0x30 8000458: 2b00 cmp r3, #0 800045a: d001 beq.n 8000460 <__udivmoddi4+0x8c> 800045c: 601c str r4, [r3, #0] 800045e: 605d str r5, [r3, #4] 8000460: 9800 ldr r0, [sp, #0] 8000462: 9901 ldr r1, [sp, #4] 8000464: b003 add sp, #12 8000466: bc3c pop {r2, r3, r4, r5} 8000468: 4690 mov r8, r2 800046a: 4699 mov r9, r3 800046c: 46a2 mov sl, r4 800046e: 46ab mov fp, r5 8000470: bdf0 pop {r4, r5, r6, r7, pc} 8000472: 42a3 cmp r3, r4 8000474: d9d6 bls.n 8000424 <__udivmoddi4+0x50> 8000476: 2200 movs r2, #0 8000478: 2300 movs r3, #0 800047a: 9200 str r2, [sp, #0] 800047c: 9301 str r3, [sp, #4] 800047e: 4643 mov r3, r8 8000480: 2b00 cmp r3, #0 8000482: d0e8 beq.n 8000456 <__udivmoddi4+0x82> 8000484: 07fb lsls r3, r7, #31 8000486: 0872 lsrs r2, r6, #1 8000488: 431a orrs r2, r3 800048a: 4646 mov r6, r8 800048c: 087b lsrs r3, r7, #1 800048e: e00e b.n 80004ae <__udivmoddi4+0xda> 8000490: 42ab cmp r3, r5 8000492: d101 bne.n 8000498 <__udivmoddi4+0xc4> 8000494: 42a2 cmp r2, r4 8000496: d80c bhi.n 80004b2 <__udivmoddi4+0xde> 8000498: 1aa4 subs r4, r4, r2 800049a: 419d sbcs r5, r3 800049c: 2001 movs r0, #1 800049e: 1924 adds r4, r4, r4 80004a0: 416d adcs r5, r5 80004a2: 2100 movs r1, #0 80004a4: 3e01 subs r6, #1 80004a6: 1824 adds r4, r4, r0 80004a8: 414d adcs r5, r1 80004aa: 2e00 cmp r6, #0 80004ac: d006 beq.n 80004bc <__udivmoddi4+0xe8> 80004ae: 42ab cmp r3, r5 80004b0: d9ee bls.n 8000490 <__udivmoddi4+0xbc> 80004b2: 3e01 subs r6, #1 80004b4: 1924 adds r4, r4, r4 80004b6: 416d adcs r5, r5 80004b8: 2e00 cmp r6, #0 80004ba: d1f8 bne.n 80004ae <__udivmoddi4+0xda> 80004bc: 465b mov r3, fp 80004be: 9800 ldr r0, [sp, #0] 80004c0: 9901 ldr r1, [sp, #4] 80004c2: 1900 adds r0, r0, r4 80004c4: 4169 adcs r1, r5 80004c6: 2b00 cmp r3, #0 80004c8: db22 blt.n 8000510 <__udivmoddi4+0x13c> 80004ca: 002b movs r3, r5 80004cc: 465a mov r2, fp 80004ce: 40d3 lsrs r3, r2 80004d0: 002a movs r2, r5 80004d2: 4644 mov r4, r8 80004d4: 40e2 lsrs r2, r4 80004d6: 001c movs r4, r3 80004d8: 465b mov r3, fp 80004da: 0015 movs r5, r2 80004dc: 2b00 cmp r3, #0 80004de: db2c blt.n 800053a <__udivmoddi4+0x166> 80004e0: 0026 movs r6, r4 80004e2: 409e lsls r6, r3 80004e4: 0033 movs r3, r6 80004e6: 0026 movs r6, r4 80004e8: 4647 mov r7, r8 80004ea: 40be lsls r6, r7 80004ec: 0032 movs r2, r6 80004ee: 1a80 subs r0, r0, r2 80004f0: 4199 sbcs r1, r3 80004f2: 9000 str r0, [sp, #0] 80004f4: 9101 str r1, [sp, #4] 80004f6: e7ae b.n 8000456 <__udivmoddi4+0x82> 80004f8: 4642 mov r2, r8 80004fa: 2320 movs r3, #32 80004fc: 1a9b subs r3, r3, r2 80004fe: 4652 mov r2, sl 8000500: 40da lsrs r2, r3 8000502: 4641 mov r1, r8 8000504: 0013 movs r3, r2 8000506: 464a mov r2, r9 8000508: 408a lsls r2, r1 800050a: 0017 movs r7, r2 800050c: 431f orrs r7, r3 800050e: e782 b.n 8000416 <__udivmoddi4+0x42> 8000510: 4642 mov r2, r8 8000512: 2320 movs r3, #32 8000514: 1a9b subs r3, r3, r2 8000516: 002a movs r2, r5 8000518: 4646 mov r6, r8 800051a: 409a lsls r2, r3 800051c: 0023 movs r3, r4 800051e: 40f3 lsrs r3, r6 8000520: 4313 orrs r3, r2 8000522: e7d5 b.n 80004d0 <__udivmoddi4+0xfc> 8000524: 4642 mov r2, r8 8000526: 2320 movs r3, #32 8000528: 2100 movs r1, #0 800052a: 1a9b subs r3, r3, r2 800052c: 2200 movs r2, #0 800052e: 9100 str r1, [sp, #0] 8000530: 9201 str r2, [sp, #4] 8000532: 2201 movs r2, #1 8000534: 40da lsrs r2, r3 8000536: 9201 str r2, [sp, #4] 8000538: e782 b.n 8000440 <__udivmoddi4+0x6c> 800053a: 4642 mov r2, r8 800053c: 2320 movs r3, #32 800053e: 0026 movs r6, r4 8000540: 1a9b subs r3, r3, r2 8000542: 40de lsrs r6, r3 8000544: 002f movs r7, r5 8000546: 46b4 mov ip, r6 8000548: 4097 lsls r7, r2 800054a: 4666 mov r6, ip 800054c: 003b movs r3, r7 800054e: 4333 orrs r3, r6 8000550: e7c9 b.n 80004e6 <__udivmoddi4+0x112> 8000552: 46c0 nop ; (mov r8, r8) 08000554 <__aeabi_fdiv>: 8000554: b5f0 push {r4, r5, r6, r7, lr} 8000556: 4657 mov r7, sl 8000558: 464e mov r6, r9 800055a: 46de mov lr, fp 800055c: 4645 mov r5, r8 800055e: b5e0 push {r5, r6, r7, lr} 8000560: 0244 lsls r4, r0, #9 8000562: 0043 lsls r3, r0, #1 8000564: 0fc6 lsrs r6, r0, #31 8000566: b083 sub sp, #12 8000568: 1c0f adds r7, r1, #0 800056a: 0a64 lsrs r4, r4, #9 800056c: 0e1b lsrs r3, r3, #24 800056e: 46b2 mov sl, r6 8000570: d053 beq.n 800061a <__aeabi_fdiv+0xc6> 8000572: 2bff cmp r3, #255 ; 0xff 8000574: d027 beq.n 80005c6 <__aeabi_fdiv+0x72> 8000576: 2280 movs r2, #128 ; 0x80 8000578: 00e4 lsls r4, r4, #3 800057a: 04d2 lsls r2, r2, #19 800057c: 4314 orrs r4, r2 800057e: 227f movs r2, #127 ; 0x7f 8000580: 4252 negs r2, r2 8000582: 4690 mov r8, r2 8000584: 4498 add r8, r3 8000586: 2300 movs r3, #0 8000588: 4699 mov r9, r3 800058a: 469b mov fp, r3 800058c: 027d lsls r5, r7, #9 800058e: 0078 lsls r0, r7, #1 8000590: 0ffb lsrs r3, r7, #31 8000592: 0a6d lsrs r5, r5, #9 8000594: 0e00 lsrs r0, r0, #24 8000596: 9300 str r3, [sp, #0] 8000598: d024 beq.n 80005e4 <__aeabi_fdiv+0x90> 800059a: 28ff cmp r0, #255 ; 0xff 800059c: d046 beq.n 800062c <__aeabi_fdiv+0xd8> 800059e: 2380 movs r3, #128 ; 0x80 80005a0: 2100 movs r1, #0 80005a2: 00ed lsls r5, r5, #3 80005a4: 04db lsls r3, r3, #19 80005a6: 431d orrs r5, r3 80005a8: 387f subs r0, #127 ; 0x7f 80005aa: 4647 mov r7, r8 80005ac: 1a38 subs r0, r7, r0 80005ae: 464f mov r7, r9 80005b0: 430f orrs r7, r1 80005b2: 00bf lsls r7, r7, #2 80005b4: 46b9 mov r9, r7 80005b6: 0033 movs r3, r6 80005b8: 9a00 ldr r2, [sp, #0] 80005ba: 4f87 ldr r7, [pc, #540] ; (80007d8 <__aeabi_fdiv+0x284>) 80005bc: 4053 eors r3, r2 80005be: 464a mov r2, r9 80005c0: 58ba ldr r2, [r7, r2] 80005c2: 9301 str r3, [sp, #4] 80005c4: 4697 mov pc, r2 80005c6: 2c00 cmp r4, #0 80005c8: d14e bne.n 8000668 <__aeabi_fdiv+0x114> 80005ca: 2308 movs r3, #8 80005cc: 4699 mov r9, r3 80005ce: 33f7 adds r3, #247 ; 0xf7 80005d0: 4698 mov r8, r3 80005d2: 3bfd subs r3, #253 ; 0xfd 80005d4: 469b mov fp, r3 80005d6: 027d lsls r5, r7, #9 80005d8: 0078 lsls r0, r7, #1 80005da: 0ffb lsrs r3, r7, #31 80005dc: 0a6d lsrs r5, r5, #9 80005de: 0e00 lsrs r0, r0, #24 80005e0: 9300 str r3, [sp, #0] 80005e2: d1da bne.n 800059a <__aeabi_fdiv+0x46> 80005e4: 2d00 cmp r5, #0 80005e6: d126 bne.n 8000636 <__aeabi_fdiv+0xe2> 80005e8: 2000 movs r0, #0 80005ea: 2101 movs r1, #1 80005ec: 0033 movs r3, r6 80005ee: 9a00 ldr r2, [sp, #0] 80005f0: 4f7a ldr r7, [pc, #488] ; (80007dc <__aeabi_fdiv+0x288>) 80005f2: 4053 eors r3, r2 80005f4: 4642 mov r2, r8 80005f6: 1a10 subs r0, r2, r0 80005f8: 464a mov r2, r9 80005fa: 430a orrs r2, r1 80005fc: 0092 lsls r2, r2, #2 80005fe: 58ba ldr r2, [r7, r2] 8000600: 001d movs r5, r3 8000602: 4697 mov pc, r2 8000604: 9b00 ldr r3, [sp, #0] 8000606: 002c movs r4, r5 8000608: 469a mov sl, r3 800060a: 468b mov fp, r1 800060c: 465b mov r3, fp 800060e: 2b02 cmp r3, #2 8000610: d131 bne.n 8000676 <__aeabi_fdiv+0x122> 8000612: 4653 mov r3, sl 8000614: 21ff movs r1, #255 ; 0xff 8000616: 2400 movs r4, #0 8000618: e038 b.n 800068c <__aeabi_fdiv+0x138> 800061a: 2c00 cmp r4, #0 800061c: d117 bne.n 800064e <__aeabi_fdiv+0xfa> 800061e: 2304 movs r3, #4 8000620: 4699 mov r9, r3 8000622: 2300 movs r3, #0 8000624: 4698 mov r8, r3 8000626: 3301 adds r3, #1 8000628: 469b mov fp, r3 800062a: e7af b.n 800058c <__aeabi_fdiv+0x38> 800062c: 20ff movs r0, #255 ; 0xff 800062e: 2d00 cmp r5, #0 8000630: d10b bne.n 800064a <__aeabi_fdiv+0xf6> 8000632: 2102 movs r1, #2 8000634: e7da b.n 80005ec <__aeabi_fdiv+0x98> 8000636: 0028 movs r0, r5 8000638: f000 fdf0 bl 800121c <__clzsi2> 800063c: 1f43 subs r3, r0, #5 800063e: 409d lsls r5, r3 8000640: 2376 movs r3, #118 ; 0x76 8000642: 425b negs r3, r3 8000644: 1a18 subs r0, r3, r0 8000646: 2100 movs r1, #0 8000648: e7af b.n 80005aa <__aeabi_fdiv+0x56> 800064a: 2103 movs r1, #3 800064c: e7ad b.n 80005aa <__aeabi_fdiv+0x56> 800064e: 0020 movs r0, r4 8000650: f000 fde4 bl 800121c <__clzsi2> 8000654: 1f43 subs r3, r0, #5 8000656: 409c lsls r4, r3 8000658: 2376 movs r3, #118 ; 0x76 800065a: 425b negs r3, r3 800065c: 1a1b subs r3, r3, r0 800065e: 4698 mov r8, r3 8000660: 2300 movs r3, #0 8000662: 4699 mov r9, r3 8000664: 469b mov fp, r3 8000666: e791 b.n 800058c <__aeabi_fdiv+0x38> 8000668: 230c movs r3, #12 800066a: 4699 mov r9, r3 800066c: 33f3 adds r3, #243 ; 0xf3 800066e: 4698 mov r8, r3 8000670: 3bfc subs r3, #252 ; 0xfc 8000672: 469b mov fp, r3 8000674: e78a b.n 800058c <__aeabi_fdiv+0x38> 8000676: 2b03 cmp r3, #3 8000678: d100 bne.n 800067c <__aeabi_fdiv+0x128> 800067a: e0a5 b.n 80007c8 <__aeabi_fdiv+0x274> 800067c: 4655 mov r5, sl 800067e: 2b01 cmp r3, #1 8000680: d000 beq.n 8000684 <__aeabi_fdiv+0x130> 8000682: e081 b.n 8000788 <__aeabi_fdiv+0x234> 8000684: 2301 movs r3, #1 8000686: 2100 movs r1, #0 8000688: 2400 movs r4, #0 800068a: 402b ands r3, r5 800068c: 0264 lsls r4, r4, #9 800068e: 05c9 lsls r1, r1, #23 8000690: 0a60 lsrs r0, r4, #9 8000692: 07db lsls r3, r3, #31 8000694: 4308 orrs r0, r1 8000696: 4318 orrs r0, r3 8000698: b003 add sp, #12 800069a: bc3c pop {r2, r3, r4, r5} 800069c: 4690 mov r8, r2 800069e: 4699 mov r9, r3 80006a0: 46a2 mov sl, r4 80006a2: 46ab mov fp, r5 80006a4: bdf0 pop {r4, r5, r6, r7, pc} 80006a6: 2480 movs r4, #128 ; 0x80 80006a8: 2300 movs r3, #0 80006aa: 03e4 lsls r4, r4, #15 80006ac: 21ff movs r1, #255 ; 0xff 80006ae: e7ed b.n 800068c <__aeabi_fdiv+0x138> 80006b0: 21ff movs r1, #255 ; 0xff 80006b2: 2400 movs r4, #0 80006b4: e7ea b.n 800068c <__aeabi_fdiv+0x138> 80006b6: 2301 movs r3, #1 80006b8: 1a59 subs r1, r3, r1 80006ba: 291b cmp r1, #27 80006bc: dd66 ble.n 800078c <__aeabi_fdiv+0x238> 80006be: 9a01 ldr r2, [sp, #4] 80006c0: 4013 ands r3, r2 80006c2: 2100 movs r1, #0 80006c4: 2400 movs r4, #0 80006c6: e7e1 b.n 800068c <__aeabi_fdiv+0x138> 80006c8: 2380 movs r3, #128 ; 0x80 80006ca: 03db lsls r3, r3, #15 80006cc: 421c tst r4, r3 80006ce: d038 beq.n 8000742 <__aeabi_fdiv+0x1ee> 80006d0: 421d tst r5, r3 80006d2: d051 beq.n 8000778 <__aeabi_fdiv+0x224> 80006d4: 431c orrs r4, r3 80006d6: 0264 lsls r4, r4, #9 80006d8: 0a64 lsrs r4, r4, #9 80006da: 0033 movs r3, r6 80006dc: 21ff movs r1, #255 ; 0xff 80006de: e7d5 b.n 800068c <__aeabi_fdiv+0x138> 80006e0: 0163 lsls r3, r4, #5 80006e2: 016c lsls r4, r5, #5 80006e4: 42a3 cmp r3, r4 80006e6: d23b bcs.n 8000760 <__aeabi_fdiv+0x20c> 80006e8: 261b movs r6, #27 80006ea: 2100 movs r1, #0 80006ec: 3801 subs r0, #1 80006ee: 2501 movs r5, #1 80006f0: 001f movs r7, r3 80006f2: 0049 lsls r1, r1, #1 80006f4: 005b lsls r3, r3, #1 80006f6: 2f00 cmp r7, #0 80006f8: db01 blt.n 80006fe <__aeabi_fdiv+0x1aa> 80006fa: 429c cmp r4, r3 80006fc: d801 bhi.n 8000702 <__aeabi_fdiv+0x1ae> 80006fe: 1b1b subs r3, r3, r4 8000700: 4329 orrs r1, r5 8000702: 3e01 subs r6, #1 8000704: 2e00 cmp r6, #0 8000706: d1f3 bne.n 80006f0 <__aeabi_fdiv+0x19c> 8000708: 001c movs r4, r3 800070a: 1e63 subs r3, r4, #1 800070c: 419c sbcs r4, r3 800070e: 430c orrs r4, r1 8000710: 0001 movs r1, r0 8000712: 317f adds r1, #127 ; 0x7f 8000714: 2900 cmp r1, #0 8000716: ddce ble.n 80006b6 <__aeabi_fdiv+0x162> 8000718: 0763 lsls r3, r4, #29 800071a: d004 beq.n 8000726 <__aeabi_fdiv+0x1d2> 800071c: 230f movs r3, #15 800071e: 4023 ands r3, r4 8000720: 2b04 cmp r3, #4 8000722: d000 beq.n 8000726 <__aeabi_fdiv+0x1d2> 8000724: 3404 adds r4, #4 8000726: 0123 lsls r3, r4, #4 8000728: d503 bpl.n 8000732 <__aeabi_fdiv+0x1de> 800072a: 0001 movs r1, r0 800072c: 4b2c ldr r3, [pc, #176] ; (80007e0 <__aeabi_fdiv+0x28c>) 800072e: 3180 adds r1, #128 ; 0x80 8000730: 401c ands r4, r3 8000732: 29fe cmp r1, #254 ; 0xfe 8000734: dd0d ble.n 8000752 <__aeabi_fdiv+0x1fe> 8000736: 2301 movs r3, #1 8000738: 9a01 ldr r2, [sp, #4] 800073a: 21ff movs r1, #255 ; 0xff 800073c: 4013 ands r3, r2 800073e: 2400 movs r4, #0 8000740: e7a4 b.n 800068c <__aeabi_fdiv+0x138> 8000742: 2380 movs r3, #128 ; 0x80 8000744: 03db lsls r3, r3, #15 8000746: 431c orrs r4, r3 8000748: 0264 lsls r4, r4, #9 800074a: 0a64 lsrs r4, r4, #9 800074c: 0033 movs r3, r6 800074e: 21ff movs r1, #255 ; 0xff 8000750: e79c b.n 800068c <__aeabi_fdiv+0x138> 8000752: 2301 movs r3, #1 8000754: 9a01 ldr r2, [sp, #4] 8000756: 01a4 lsls r4, r4, #6 8000758: 0a64 lsrs r4, r4, #9 800075a: b2c9 uxtb r1, r1 800075c: 4013 ands r3, r2 800075e: e795 b.n 800068c <__aeabi_fdiv+0x138> 8000760: 1b1b subs r3, r3, r4 8000762: 261a movs r6, #26 8000764: 2101 movs r1, #1 8000766: e7c2 b.n 80006ee <__aeabi_fdiv+0x19a> 8000768: 9b00 ldr r3, [sp, #0] 800076a: 468b mov fp, r1 800076c: 469a mov sl, r3 800076e: 2400 movs r4, #0 8000770: e74c b.n 800060c <__aeabi_fdiv+0xb8> 8000772: 0263 lsls r3, r4, #9 8000774: d5e5 bpl.n 8000742 <__aeabi_fdiv+0x1ee> 8000776: 2500 movs r5, #0 8000778: 2480 movs r4, #128 ; 0x80 800077a: 03e4 lsls r4, r4, #15 800077c: 432c orrs r4, r5 800077e: 0264 lsls r4, r4, #9 8000780: 0a64 lsrs r4, r4, #9 8000782: 9b00 ldr r3, [sp, #0] 8000784: 21ff movs r1, #255 ; 0xff 8000786: e781 b.n 800068c <__aeabi_fdiv+0x138> 8000788: 9501 str r5, [sp, #4] 800078a: e7c1 b.n 8000710 <__aeabi_fdiv+0x1bc> 800078c: 0023 movs r3, r4 800078e: 2020 movs r0, #32 8000790: 40cb lsrs r3, r1 8000792: 1a41 subs r1, r0, r1 8000794: 408c lsls r4, r1 8000796: 1e61 subs r1, r4, #1 8000798: 418c sbcs r4, r1 800079a: 431c orrs r4, r3 800079c: 0763 lsls r3, r4, #29 800079e: d004 beq.n 80007aa <__aeabi_fdiv+0x256> 80007a0: 230f movs r3, #15 80007a2: 4023 ands r3, r4 80007a4: 2b04 cmp r3, #4 80007a6: d000 beq.n 80007aa <__aeabi_fdiv+0x256> 80007a8: 3404 adds r4, #4 80007aa: 0163 lsls r3, r4, #5 80007ac: d505 bpl.n 80007ba <__aeabi_fdiv+0x266> 80007ae: 2301 movs r3, #1 80007b0: 9a01 ldr r2, [sp, #4] 80007b2: 2101 movs r1, #1 80007b4: 4013 ands r3, r2 80007b6: 2400 movs r4, #0 80007b8: e768 b.n 800068c <__aeabi_fdiv+0x138> 80007ba: 2301 movs r3, #1 80007bc: 9a01 ldr r2, [sp, #4] 80007be: 01a4 lsls r4, r4, #6 80007c0: 0a64 lsrs r4, r4, #9 80007c2: 4013 ands r3, r2 80007c4: 2100 movs r1, #0 80007c6: e761 b.n 800068c <__aeabi_fdiv+0x138> 80007c8: 2380 movs r3, #128 ; 0x80 80007ca: 03db lsls r3, r3, #15 80007cc: 431c orrs r4, r3 80007ce: 0264 lsls r4, r4, #9 80007d0: 0a64 lsrs r4, r4, #9 80007d2: 4653 mov r3, sl 80007d4: 21ff movs r1, #255 ; 0xff 80007d6: e759 b.n 800068c <__aeabi_fdiv+0x138> 80007d8: 08006fe8 .word 0x08006fe8 80007dc: 08007028 .word 0x08007028 80007e0: f7ffffff .word 0xf7ffffff 080007e4 <__eqsf2>: 80007e4: b570 push {r4, r5, r6, lr} 80007e6: 0042 lsls r2, r0, #1 80007e8: 0245 lsls r5, r0, #9 80007ea: 024e lsls r6, r1, #9 80007ec: 004c lsls r4, r1, #1 80007ee: 0fc3 lsrs r3, r0, #31 80007f0: 0a6d lsrs r5, r5, #9 80007f2: 0e12 lsrs r2, r2, #24 80007f4: 0a76 lsrs r6, r6, #9 80007f6: 0e24 lsrs r4, r4, #24 80007f8: 0fc9 lsrs r1, r1, #31 80007fa: 2001 movs r0, #1 80007fc: 2aff cmp r2, #255 ; 0xff 80007fe: d006 beq.n 800080e <__eqsf2+0x2a> 8000800: 2cff cmp r4, #255 ; 0xff 8000802: d003 beq.n 800080c <__eqsf2+0x28> 8000804: 42a2 cmp r2, r4 8000806: d101 bne.n 800080c <__eqsf2+0x28> 8000808: 42b5 cmp r5, r6 800080a: d006 beq.n 800081a <__eqsf2+0x36> 800080c: bd70 pop {r4, r5, r6, pc} 800080e: 2d00 cmp r5, #0 8000810: d1fc bne.n 800080c <__eqsf2+0x28> 8000812: 2cff cmp r4, #255 ; 0xff 8000814: d1fa bne.n 800080c <__eqsf2+0x28> 8000816: 2e00 cmp r6, #0 8000818: d1f8 bne.n 800080c <__eqsf2+0x28> 800081a: 428b cmp r3, r1 800081c: d006 beq.n 800082c <__eqsf2+0x48> 800081e: 2001 movs r0, #1 8000820: 2a00 cmp r2, #0 8000822: d1f3 bne.n 800080c <__eqsf2+0x28> 8000824: 0028 movs r0, r5 8000826: 1e45 subs r5, r0, #1 8000828: 41a8 sbcs r0, r5 800082a: e7ef b.n 800080c <__eqsf2+0x28> 800082c: 2000 movs r0, #0 800082e: e7ed b.n 800080c <__eqsf2+0x28> 08000830 <__gesf2>: 8000830: b5f0 push {r4, r5, r6, r7, lr} 8000832: 0042 lsls r2, r0, #1 8000834: 0245 lsls r5, r0, #9 8000836: 024c lsls r4, r1, #9 8000838: 0fc3 lsrs r3, r0, #31 800083a: 0048 lsls r0, r1, #1 800083c: 0a6d lsrs r5, r5, #9 800083e: 0e12 lsrs r2, r2, #24 8000840: 0a64 lsrs r4, r4, #9 8000842: 0e00 lsrs r0, r0, #24 8000844: 0fc9 lsrs r1, r1, #31 8000846: 2aff cmp r2, #255 ; 0xff 8000848: d01e beq.n 8000888 <__gesf2+0x58> 800084a: 28ff cmp r0, #255 ; 0xff 800084c: d021 beq.n 8000892 <__gesf2+0x62> 800084e: 2a00 cmp r2, #0 8000850: d10a bne.n 8000868 <__gesf2+0x38> 8000852: 426e negs r6, r5 8000854: 416e adcs r6, r5 8000856: b2f6 uxtb r6, r6 8000858: 2800 cmp r0, #0 800085a: d10f bne.n 800087c <__gesf2+0x4c> 800085c: 2c00 cmp r4, #0 800085e: d10d bne.n 800087c <__gesf2+0x4c> 8000860: 2000 movs r0, #0 8000862: 2d00 cmp r5, #0 8000864: d009 beq.n 800087a <__gesf2+0x4a> 8000866: e005 b.n 8000874 <__gesf2+0x44> 8000868: 2800 cmp r0, #0 800086a: d101 bne.n 8000870 <__gesf2+0x40> 800086c: 2c00 cmp r4, #0 800086e: d001 beq.n 8000874 <__gesf2+0x44> 8000870: 428b cmp r3, r1 8000872: d011 beq.n 8000898 <__gesf2+0x68> 8000874: 2101 movs r1, #1 8000876: 4258 negs r0, r3 8000878: 4308 orrs r0, r1 800087a: bdf0 pop {r4, r5, r6, r7, pc} 800087c: 2e00 cmp r6, #0 800087e: d0f7 beq.n 8000870 <__gesf2+0x40> 8000880: 2001 movs r0, #1 8000882: 3901 subs r1, #1 8000884: 4308 orrs r0, r1 8000886: e7f8 b.n 800087a <__gesf2+0x4a> 8000888: 2d00 cmp r5, #0 800088a: d0de beq.n 800084a <__gesf2+0x1a> 800088c: 2002 movs r0, #2 800088e: 4240 negs r0, r0 8000890: e7f3 b.n 800087a <__gesf2+0x4a> 8000892: 2c00 cmp r4, #0 8000894: d0db beq.n 800084e <__gesf2+0x1e> 8000896: e7f9 b.n 800088c <__gesf2+0x5c> 8000898: 4282 cmp r2, r0 800089a: dceb bgt.n 8000874 <__gesf2+0x44> 800089c: db04 blt.n 80008a8 <__gesf2+0x78> 800089e: 42a5 cmp r5, r4 80008a0: d8e8 bhi.n 8000874 <__gesf2+0x44> 80008a2: 2000 movs r0, #0 80008a4: 42a5 cmp r5, r4 80008a6: d2e8 bcs.n 800087a <__gesf2+0x4a> 80008a8: 2101 movs r1, #1 80008aa: 1e58 subs r0, r3, #1 80008ac: 4308 orrs r0, r1 80008ae: e7e4 b.n 800087a <__gesf2+0x4a> 080008b0 <__lesf2>: 80008b0: b5f0 push {r4, r5, r6, r7, lr} 80008b2: 0042 lsls r2, r0, #1 80008b4: 024d lsls r5, r1, #9 80008b6: 004c lsls r4, r1, #1 80008b8: 0246 lsls r6, r0, #9 80008ba: 0a76 lsrs r6, r6, #9 80008bc: 0e12 lsrs r2, r2, #24 80008be: 0fc3 lsrs r3, r0, #31 80008c0: 0a6d lsrs r5, r5, #9 80008c2: 0e24 lsrs r4, r4, #24 80008c4: 0fc9 lsrs r1, r1, #31 80008c6: 2aff cmp r2, #255 ; 0xff 80008c8: d016 beq.n 80008f8 <__lesf2+0x48> 80008ca: 2cff cmp r4, #255 ; 0xff 80008cc: d018 beq.n 8000900 <__lesf2+0x50> 80008ce: 2a00 cmp r2, #0 80008d0: d10a bne.n 80008e8 <__lesf2+0x38> 80008d2: 4270 negs r0, r6 80008d4: 4170 adcs r0, r6 80008d6: b2c0 uxtb r0, r0 80008d8: 2c00 cmp r4, #0 80008da: d015 beq.n 8000908 <__lesf2+0x58> 80008dc: 2800 cmp r0, #0 80008de: d005 beq.n 80008ec <__lesf2+0x3c> 80008e0: 2001 movs r0, #1 80008e2: 3901 subs r1, #1 80008e4: 4308 orrs r0, r1 80008e6: bdf0 pop {r4, r5, r6, r7, pc} 80008e8: 2c00 cmp r4, #0 80008ea: d013 beq.n 8000914 <__lesf2+0x64> 80008ec: 4299 cmp r1, r3 80008ee: d014 beq.n 800091a <__lesf2+0x6a> 80008f0: 2001 movs r0, #1 80008f2: 425b negs r3, r3 80008f4: 4318 orrs r0, r3 80008f6: e7f6 b.n 80008e6 <__lesf2+0x36> 80008f8: 2002 movs r0, #2 80008fa: 2e00 cmp r6, #0 80008fc: d1f3 bne.n 80008e6 <__lesf2+0x36> 80008fe: e7e4 b.n 80008ca <__lesf2+0x1a> 8000900: 2002 movs r0, #2 8000902: 2d00 cmp r5, #0 8000904: d1ef bne.n 80008e6 <__lesf2+0x36> 8000906: e7e2 b.n 80008ce <__lesf2+0x1e> 8000908: 2d00 cmp r5, #0 800090a: d1e7 bne.n 80008dc <__lesf2+0x2c> 800090c: 2000 movs r0, #0 800090e: 2e00 cmp r6, #0 8000910: d0e9 beq.n 80008e6 <__lesf2+0x36> 8000912: e7ed b.n 80008f0 <__lesf2+0x40> 8000914: 2d00 cmp r5, #0 8000916: d1e9 bne.n 80008ec <__lesf2+0x3c> 8000918: e7ea b.n 80008f0 <__lesf2+0x40> 800091a: 42a2 cmp r2, r4 800091c: dc06 bgt.n 800092c <__lesf2+0x7c> 800091e: dbdf blt.n 80008e0 <__lesf2+0x30> 8000920: 42ae cmp r6, r5 8000922: d803 bhi.n 800092c <__lesf2+0x7c> 8000924: 2000 movs r0, #0 8000926: 42ae cmp r6, r5 8000928: d3da bcc.n 80008e0 <__lesf2+0x30> 800092a: e7dc b.n 80008e6 <__lesf2+0x36> 800092c: 2001 movs r0, #1 800092e: 4249 negs r1, r1 8000930: 4308 orrs r0, r1 8000932: e7d8 b.n 80008e6 <__lesf2+0x36> 08000934 <__aeabi_fmul>: 8000934: b5f8 push {r3, r4, r5, r6, r7, lr} 8000936: 4657 mov r7, sl 8000938: 464e mov r6, r9 800093a: 4645 mov r5, r8 800093c: 46de mov lr, fp 800093e: b5e0 push {r5, r6, r7, lr} 8000940: 0247 lsls r7, r0, #9 8000942: 0046 lsls r6, r0, #1 8000944: 4688 mov r8, r1 8000946: 0a7f lsrs r7, r7, #9 8000948: 0e36 lsrs r6, r6, #24 800094a: 0fc4 lsrs r4, r0, #31 800094c: 2e00 cmp r6, #0 800094e: d047 beq.n 80009e0 <__aeabi_fmul+0xac> 8000950: 2eff cmp r6, #255 ; 0xff 8000952: d024 beq.n 800099e <__aeabi_fmul+0x6a> 8000954: 00fb lsls r3, r7, #3 8000956: 2780 movs r7, #128 ; 0x80 8000958: 04ff lsls r7, r7, #19 800095a: 431f orrs r7, r3 800095c: 2300 movs r3, #0 800095e: 4699 mov r9, r3 8000960: 469a mov sl, r3 8000962: 3e7f subs r6, #127 ; 0x7f 8000964: 4643 mov r3, r8 8000966: 025d lsls r5, r3, #9 8000968: 0058 lsls r0, r3, #1 800096a: 0fdb lsrs r3, r3, #31 800096c: 0a6d lsrs r5, r5, #9 800096e: 0e00 lsrs r0, r0, #24 8000970: 4698 mov r8, r3 8000972: d043 beq.n 80009fc <__aeabi_fmul+0xc8> 8000974: 28ff cmp r0, #255 ; 0xff 8000976: d03b beq.n 80009f0 <__aeabi_fmul+0xbc> 8000978: 00eb lsls r3, r5, #3 800097a: 2580 movs r5, #128 ; 0x80 800097c: 2200 movs r2, #0 800097e: 04ed lsls r5, r5, #19 8000980: 431d orrs r5, r3 8000982: 387f subs r0, #127 ; 0x7f 8000984: 1836 adds r6, r6, r0 8000986: 1c73 adds r3, r6, #1 8000988: 4641 mov r1, r8 800098a: 469b mov fp, r3 800098c: 464b mov r3, r9 800098e: 4061 eors r1, r4 8000990: 4313 orrs r3, r2 8000992: 2b0f cmp r3, #15 8000994: d864 bhi.n 8000a60 <__aeabi_fmul+0x12c> 8000996: 4875 ldr r0, [pc, #468] ; (8000b6c <__aeabi_fmul+0x238>) 8000998: 009b lsls r3, r3, #2 800099a: 58c3 ldr r3, [r0, r3] 800099c: 469f mov pc, r3 800099e: 2f00 cmp r7, #0 80009a0: d142 bne.n 8000a28 <__aeabi_fmul+0xf4> 80009a2: 2308 movs r3, #8 80009a4: 4699 mov r9, r3 80009a6: 3b06 subs r3, #6 80009a8: 26ff movs r6, #255 ; 0xff 80009aa: 469a mov sl, r3 80009ac: e7da b.n 8000964 <__aeabi_fmul+0x30> 80009ae: 4641 mov r1, r8 80009b0: 2a02 cmp r2, #2 80009b2: d028 beq.n 8000a06 <__aeabi_fmul+0xd2> 80009b4: 2a03 cmp r2, #3 80009b6: d100 bne.n 80009ba <__aeabi_fmul+0x86> 80009b8: e0ce b.n 8000b58 <__aeabi_fmul+0x224> 80009ba: 2a01 cmp r2, #1 80009bc: d000 beq.n 80009c0 <__aeabi_fmul+0x8c> 80009be: e0ac b.n 8000b1a <__aeabi_fmul+0x1e6> 80009c0: 4011 ands r1, r2 80009c2: 2000 movs r0, #0 80009c4: 2200 movs r2, #0 80009c6: b2cc uxtb r4, r1 80009c8: 0240 lsls r0, r0, #9 80009ca: 05d2 lsls r2, r2, #23 80009cc: 0a40 lsrs r0, r0, #9 80009ce: 07e4 lsls r4, r4, #31 80009d0: 4310 orrs r0, r2 80009d2: 4320 orrs r0, r4 80009d4: bc3c pop {r2, r3, r4, r5} 80009d6: 4690 mov r8, r2 80009d8: 4699 mov r9, r3 80009da: 46a2 mov sl, r4 80009dc: 46ab mov fp, r5 80009de: bdf8 pop {r3, r4, r5, r6, r7, pc} 80009e0: 2f00 cmp r7, #0 80009e2: d115 bne.n 8000a10 <__aeabi_fmul+0xdc> 80009e4: 2304 movs r3, #4 80009e6: 4699 mov r9, r3 80009e8: 3b03 subs r3, #3 80009ea: 2600 movs r6, #0 80009ec: 469a mov sl, r3 80009ee: e7b9 b.n 8000964 <__aeabi_fmul+0x30> 80009f0: 20ff movs r0, #255 ; 0xff 80009f2: 2202 movs r2, #2 80009f4: 2d00 cmp r5, #0 80009f6: d0c5 beq.n 8000984 <__aeabi_fmul+0x50> 80009f8: 2203 movs r2, #3 80009fa: e7c3 b.n 8000984 <__aeabi_fmul+0x50> 80009fc: 2d00 cmp r5, #0 80009fe: d119 bne.n 8000a34 <__aeabi_fmul+0x100> 8000a00: 2000 movs r0, #0 8000a02: 2201 movs r2, #1 8000a04: e7be b.n 8000984 <__aeabi_fmul+0x50> 8000a06: 2401 movs r4, #1 8000a08: 22ff movs r2, #255 ; 0xff 8000a0a: 400c ands r4, r1 8000a0c: 2000 movs r0, #0 8000a0e: e7db b.n 80009c8 <__aeabi_fmul+0x94> 8000a10: 0038 movs r0, r7 8000a12: f000 fc03 bl 800121c <__clzsi2> 8000a16: 2676 movs r6, #118 ; 0x76 8000a18: 1f43 subs r3, r0, #5 8000a1a: 409f lsls r7, r3 8000a1c: 2300 movs r3, #0 8000a1e: 4276 negs r6, r6 8000a20: 1a36 subs r6, r6, r0 8000a22: 4699 mov r9, r3 8000a24: 469a mov sl, r3 8000a26: e79d b.n 8000964 <__aeabi_fmul+0x30> 8000a28: 230c movs r3, #12 8000a2a: 4699 mov r9, r3 8000a2c: 3b09 subs r3, #9 8000a2e: 26ff movs r6, #255 ; 0xff 8000a30: 469a mov sl, r3 8000a32: e797 b.n 8000964 <__aeabi_fmul+0x30> 8000a34: 0028 movs r0, r5 8000a36: f000 fbf1 bl 800121c <__clzsi2> 8000a3a: 1f43 subs r3, r0, #5 8000a3c: 409d lsls r5, r3 8000a3e: 2376 movs r3, #118 ; 0x76 8000a40: 425b negs r3, r3 8000a42: 1a18 subs r0, r3, r0 8000a44: 2200 movs r2, #0 8000a46: e79d b.n 8000984 <__aeabi_fmul+0x50> 8000a48: 2080 movs r0, #128 ; 0x80 8000a4a: 2400 movs r4, #0 8000a4c: 03c0 lsls r0, r0, #15 8000a4e: 22ff movs r2, #255 ; 0xff 8000a50: e7ba b.n 80009c8 <__aeabi_fmul+0x94> 8000a52: 003d movs r5, r7 8000a54: 4652 mov r2, sl 8000a56: e7ab b.n 80009b0 <__aeabi_fmul+0x7c> 8000a58: 003d movs r5, r7 8000a5a: 0021 movs r1, r4 8000a5c: 4652 mov r2, sl 8000a5e: e7a7 b.n 80009b0 <__aeabi_fmul+0x7c> 8000a60: 0c3b lsrs r3, r7, #16 8000a62: 469c mov ip, r3 8000a64: 042a lsls r2, r5, #16 8000a66: 0c12 lsrs r2, r2, #16 8000a68: 0c2b lsrs r3, r5, #16 8000a6a: 0014 movs r4, r2 8000a6c: 4660 mov r0, ip 8000a6e: 4665 mov r5, ip 8000a70: 043f lsls r7, r7, #16 8000a72: 0c3f lsrs r7, r7, #16 8000a74: 437c muls r4, r7 8000a76: 4342 muls r2, r0 8000a78: 435d muls r5, r3 8000a7a: 437b muls r3, r7 8000a7c: 0c27 lsrs r7, r4, #16 8000a7e: 189b adds r3, r3, r2 8000a80: 18ff adds r7, r7, r3 8000a82: 42ba cmp r2, r7 8000a84: d903 bls.n 8000a8e <__aeabi_fmul+0x15a> 8000a86: 2380 movs r3, #128 ; 0x80 8000a88: 025b lsls r3, r3, #9 8000a8a: 469c mov ip, r3 8000a8c: 4465 add r5, ip 8000a8e: 0424 lsls r4, r4, #16 8000a90: 043a lsls r2, r7, #16 8000a92: 0c24 lsrs r4, r4, #16 8000a94: 1912 adds r2, r2, r4 8000a96: 0193 lsls r3, r2, #6 8000a98: 1e5c subs r4, r3, #1 8000a9a: 41a3 sbcs r3, r4 8000a9c: 0c3f lsrs r7, r7, #16 8000a9e: 0e92 lsrs r2, r2, #26 8000aa0: 197d adds r5, r7, r5 8000aa2: 431a orrs r2, r3 8000aa4: 01ad lsls r5, r5, #6 8000aa6: 4315 orrs r5, r2 8000aa8: 012b lsls r3, r5, #4 8000aaa: d504 bpl.n 8000ab6 <__aeabi_fmul+0x182> 8000aac: 2301 movs r3, #1 8000aae: 465e mov r6, fp 8000ab0: 086a lsrs r2, r5, #1 8000ab2: 401d ands r5, r3 8000ab4: 4315 orrs r5, r2 8000ab6: 0032 movs r2, r6 8000ab8: 327f adds r2, #127 ; 0x7f 8000aba: 2a00 cmp r2, #0 8000abc: dd25 ble.n 8000b0a <__aeabi_fmul+0x1d6> 8000abe: 076b lsls r3, r5, #29 8000ac0: d004 beq.n 8000acc <__aeabi_fmul+0x198> 8000ac2: 230f movs r3, #15 8000ac4: 402b ands r3, r5 8000ac6: 2b04 cmp r3, #4 8000ac8: d000 beq.n 8000acc <__aeabi_fmul+0x198> 8000aca: 3504 adds r5, #4 8000acc: 012b lsls r3, r5, #4 8000ace: d503 bpl.n 8000ad8 <__aeabi_fmul+0x1a4> 8000ad0: 0032 movs r2, r6 8000ad2: 4b27 ldr r3, [pc, #156] ; (8000b70 <__aeabi_fmul+0x23c>) 8000ad4: 3280 adds r2, #128 ; 0x80 8000ad6: 401d ands r5, r3 8000ad8: 2afe cmp r2, #254 ; 0xfe 8000ada: dc94 bgt.n 8000a06 <__aeabi_fmul+0xd2> 8000adc: 2401 movs r4, #1 8000ade: 01a8 lsls r0, r5, #6 8000ae0: 0a40 lsrs r0, r0, #9 8000ae2: b2d2 uxtb r2, r2 8000ae4: 400c ands r4, r1 8000ae6: e76f b.n 80009c8 <__aeabi_fmul+0x94> 8000ae8: 2080 movs r0, #128 ; 0x80 8000aea: 03c0 lsls r0, r0, #15 8000aec: 4207 tst r7, r0 8000aee: d007 beq.n 8000b00 <__aeabi_fmul+0x1cc> 8000af0: 4205 tst r5, r0 8000af2: d105 bne.n 8000b00 <__aeabi_fmul+0x1cc> 8000af4: 4328 orrs r0, r5 8000af6: 0240 lsls r0, r0, #9 8000af8: 0a40 lsrs r0, r0, #9 8000afa: 4644 mov r4, r8 8000afc: 22ff movs r2, #255 ; 0xff 8000afe: e763 b.n 80009c8 <__aeabi_fmul+0x94> 8000b00: 4338 orrs r0, r7 8000b02: 0240 lsls r0, r0, #9 8000b04: 0a40 lsrs r0, r0, #9 8000b06: 22ff movs r2, #255 ; 0xff 8000b08: e75e b.n 80009c8 <__aeabi_fmul+0x94> 8000b0a: 2401 movs r4, #1 8000b0c: 1aa3 subs r3, r4, r2 8000b0e: 2b1b cmp r3, #27 8000b10: dd05 ble.n 8000b1e <__aeabi_fmul+0x1ea> 8000b12: 400c ands r4, r1 8000b14: 2200 movs r2, #0 8000b16: 2000 movs r0, #0 8000b18: e756 b.n 80009c8 <__aeabi_fmul+0x94> 8000b1a: 465e mov r6, fp 8000b1c: e7cb b.n 8000ab6 <__aeabi_fmul+0x182> 8000b1e: 002a movs r2, r5 8000b20: 2020 movs r0, #32 8000b22: 40da lsrs r2, r3 8000b24: 1ac3 subs r3, r0, r3 8000b26: 409d lsls r5, r3 8000b28: 002b movs r3, r5 8000b2a: 1e5d subs r5, r3, #1 8000b2c: 41ab sbcs r3, r5 8000b2e: 4313 orrs r3, r2 8000b30: 075a lsls r2, r3, #29 8000b32: d004 beq.n 8000b3e <__aeabi_fmul+0x20a> 8000b34: 220f movs r2, #15 8000b36: 401a ands r2, r3 8000b38: 2a04 cmp r2, #4 8000b3a: d000 beq.n 8000b3e <__aeabi_fmul+0x20a> 8000b3c: 3304 adds r3, #4 8000b3e: 015a lsls r2, r3, #5 8000b40: d504 bpl.n 8000b4c <__aeabi_fmul+0x218> 8000b42: 2401 movs r4, #1 8000b44: 2201 movs r2, #1 8000b46: 400c ands r4, r1 8000b48: 2000 movs r0, #0 8000b4a: e73d b.n 80009c8 <__aeabi_fmul+0x94> 8000b4c: 2401 movs r4, #1 8000b4e: 019b lsls r3, r3, #6 8000b50: 0a58 lsrs r0, r3, #9 8000b52: 400c ands r4, r1 8000b54: 2200 movs r2, #0 8000b56: e737 b.n 80009c8 <__aeabi_fmul+0x94> 8000b58: 2080 movs r0, #128 ; 0x80 8000b5a: 2401 movs r4, #1 8000b5c: 03c0 lsls r0, r0, #15 8000b5e: 4328 orrs r0, r5 8000b60: 0240 lsls r0, r0, #9 8000b62: 0a40 lsrs r0, r0, #9 8000b64: 400c ands r4, r1 8000b66: 22ff movs r2, #255 ; 0xff 8000b68: e72e b.n 80009c8 <__aeabi_fmul+0x94> 8000b6a: 46c0 nop ; (mov r8, r8) 8000b6c: 08007068 .word 0x08007068 8000b70: f7ffffff .word 0xf7ffffff 08000b74 <__aeabi_fsub>: 8000b74: b5f0 push {r4, r5, r6, r7, lr} 8000b76: 464f mov r7, r9 8000b78: 46d6 mov lr, sl 8000b7a: 4646 mov r6, r8 8000b7c: 0044 lsls r4, r0, #1 8000b7e: b5c0 push {r6, r7, lr} 8000b80: 0fc2 lsrs r2, r0, #31 8000b82: 0247 lsls r7, r0, #9 8000b84: 0248 lsls r0, r1, #9 8000b86: 0a40 lsrs r0, r0, #9 8000b88: 4684 mov ip, r0 8000b8a: 4666 mov r6, ip 8000b8c: 0a7b lsrs r3, r7, #9 8000b8e: 0048 lsls r0, r1, #1 8000b90: 0fc9 lsrs r1, r1, #31 8000b92: 469a mov sl, r3 8000b94: 0e24 lsrs r4, r4, #24 8000b96: 0015 movs r5, r2 8000b98: 00db lsls r3, r3, #3 8000b9a: 0e00 lsrs r0, r0, #24 8000b9c: 4689 mov r9, r1 8000b9e: 00f6 lsls r6, r6, #3 8000ba0: 28ff cmp r0, #255 ; 0xff 8000ba2: d100 bne.n 8000ba6 <__aeabi_fsub+0x32> 8000ba4: e08f b.n 8000cc6 <__aeabi_fsub+0x152> 8000ba6: 2101 movs r1, #1 8000ba8: 464f mov r7, r9 8000baa: 404f eors r7, r1 8000bac: 0039 movs r1, r7 8000bae: 4291 cmp r1, r2 8000bb0: d066 beq.n 8000c80 <__aeabi_fsub+0x10c> 8000bb2: 1a22 subs r2, r4, r0 8000bb4: 2a00 cmp r2, #0 8000bb6: dc00 bgt.n 8000bba <__aeabi_fsub+0x46> 8000bb8: e09d b.n 8000cf6 <__aeabi_fsub+0x182> 8000bba: 2800 cmp r0, #0 8000bbc: d13d bne.n 8000c3a <__aeabi_fsub+0xc6> 8000bbe: 2e00 cmp r6, #0 8000bc0: d100 bne.n 8000bc4 <__aeabi_fsub+0x50> 8000bc2: e08b b.n 8000cdc <__aeabi_fsub+0x168> 8000bc4: 1e51 subs r1, r2, #1 8000bc6: 2900 cmp r1, #0 8000bc8: d000 beq.n 8000bcc <__aeabi_fsub+0x58> 8000bca: e0b5 b.n 8000d38 <__aeabi_fsub+0x1c4> 8000bcc: 2401 movs r4, #1 8000bce: 1b9b subs r3, r3, r6 8000bd0: 015a lsls r2, r3, #5 8000bd2: d544 bpl.n 8000c5e <__aeabi_fsub+0xea> 8000bd4: 019b lsls r3, r3, #6 8000bd6: 099f lsrs r7, r3, #6 8000bd8: 0038 movs r0, r7 8000bda: f000 fb1f bl 800121c <__clzsi2> 8000bde: 3805 subs r0, #5 8000be0: 4087 lsls r7, r0 8000be2: 4284 cmp r4, r0 8000be4: dd00 ble.n 8000be8 <__aeabi_fsub+0x74> 8000be6: e096 b.n 8000d16 <__aeabi_fsub+0x1a2> 8000be8: 1b04 subs r4, r0, r4 8000bea: 003a movs r2, r7 8000bec: 2020 movs r0, #32 8000bee: 3401 adds r4, #1 8000bf0: 40e2 lsrs r2, r4 8000bf2: 1b04 subs r4, r0, r4 8000bf4: 40a7 lsls r7, r4 8000bf6: 003b movs r3, r7 8000bf8: 1e5f subs r7, r3, #1 8000bfa: 41bb sbcs r3, r7 8000bfc: 2400 movs r4, #0 8000bfe: 4313 orrs r3, r2 8000c00: 075a lsls r2, r3, #29 8000c02: d004 beq.n 8000c0e <__aeabi_fsub+0x9a> 8000c04: 220f movs r2, #15 8000c06: 401a ands r2, r3 8000c08: 2a04 cmp r2, #4 8000c0a: d000 beq.n 8000c0e <__aeabi_fsub+0x9a> 8000c0c: 3304 adds r3, #4 8000c0e: 015a lsls r2, r3, #5 8000c10: d527 bpl.n 8000c62 <__aeabi_fsub+0xee> 8000c12: 3401 adds r4, #1 8000c14: 2cff cmp r4, #255 ; 0xff 8000c16: d100 bne.n 8000c1a <__aeabi_fsub+0xa6> 8000c18: e079 b.n 8000d0e <__aeabi_fsub+0x19a> 8000c1a: 2201 movs r2, #1 8000c1c: 019b lsls r3, r3, #6 8000c1e: 0a5b lsrs r3, r3, #9 8000c20: b2e4 uxtb r4, r4 8000c22: 402a ands r2, r5 8000c24: 025b lsls r3, r3, #9 8000c26: 05e4 lsls r4, r4, #23 8000c28: 0a58 lsrs r0, r3, #9 8000c2a: 07d2 lsls r2, r2, #31 8000c2c: 4320 orrs r0, r4 8000c2e: 4310 orrs r0, r2 8000c30: bc1c pop {r2, r3, r4} 8000c32: 4690 mov r8, r2 8000c34: 4699 mov r9, r3 8000c36: 46a2 mov sl, r4 8000c38: bdf0 pop {r4, r5, r6, r7, pc} 8000c3a: 2cff cmp r4, #255 ; 0xff 8000c3c: d0e0 beq.n 8000c00 <__aeabi_fsub+0x8c> 8000c3e: 2180 movs r1, #128 ; 0x80 8000c40: 04c9 lsls r1, r1, #19 8000c42: 430e orrs r6, r1 8000c44: 2a1b cmp r2, #27 8000c46: dc7b bgt.n 8000d40 <__aeabi_fsub+0x1cc> 8000c48: 0031 movs r1, r6 8000c4a: 2020 movs r0, #32 8000c4c: 40d1 lsrs r1, r2 8000c4e: 1a82 subs r2, r0, r2 8000c50: 4096 lsls r6, r2 8000c52: 1e72 subs r2, r6, #1 8000c54: 4196 sbcs r6, r2 8000c56: 430e orrs r6, r1 8000c58: 1b9b subs r3, r3, r6 8000c5a: 015a lsls r2, r3, #5 8000c5c: d4ba bmi.n 8000bd4 <__aeabi_fsub+0x60> 8000c5e: 075a lsls r2, r3, #29 8000c60: d1d0 bne.n 8000c04 <__aeabi_fsub+0x90> 8000c62: 2201 movs r2, #1 8000c64: 08df lsrs r7, r3, #3 8000c66: 402a ands r2, r5 8000c68: 2cff cmp r4, #255 ; 0xff 8000c6a: d133 bne.n 8000cd4 <__aeabi_fsub+0x160> 8000c6c: 2f00 cmp r7, #0 8000c6e: d100 bne.n 8000c72 <__aeabi_fsub+0xfe> 8000c70: e0a8 b.n 8000dc4 <__aeabi_fsub+0x250> 8000c72: 2380 movs r3, #128 ; 0x80 8000c74: 03db lsls r3, r3, #15 8000c76: 433b orrs r3, r7 8000c78: 025b lsls r3, r3, #9 8000c7a: 0a5b lsrs r3, r3, #9 8000c7c: 24ff movs r4, #255 ; 0xff 8000c7e: e7d1 b.n 8000c24 <__aeabi_fsub+0xb0> 8000c80: 1a21 subs r1, r4, r0 8000c82: 2900 cmp r1, #0 8000c84: dd4c ble.n 8000d20 <__aeabi_fsub+0x1ac> 8000c86: 2800 cmp r0, #0 8000c88: d02a beq.n 8000ce0 <__aeabi_fsub+0x16c> 8000c8a: 2cff cmp r4, #255 ; 0xff 8000c8c: d0b8 beq.n 8000c00 <__aeabi_fsub+0x8c> 8000c8e: 2080 movs r0, #128 ; 0x80 8000c90: 04c0 lsls r0, r0, #19 8000c92: 4306 orrs r6, r0 8000c94: 291b cmp r1, #27 8000c96: dd00 ble.n 8000c9a <__aeabi_fsub+0x126> 8000c98: e0af b.n 8000dfa <__aeabi_fsub+0x286> 8000c9a: 0030 movs r0, r6 8000c9c: 2720 movs r7, #32 8000c9e: 40c8 lsrs r0, r1 8000ca0: 1a79 subs r1, r7, r1 8000ca2: 408e lsls r6, r1 8000ca4: 1e71 subs r1, r6, #1 8000ca6: 418e sbcs r6, r1 8000ca8: 4306 orrs r6, r0 8000caa: 199b adds r3, r3, r6 8000cac: 0159 lsls r1, r3, #5 8000cae: d5d6 bpl.n 8000c5e <__aeabi_fsub+0xea> 8000cb0: 3401 adds r4, #1 8000cb2: 2cff cmp r4, #255 ; 0xff 8000cb4: d100 bne.n 8000cb8 <__aeabi_fsub+0x144> 8000cb6: e085 b.n 8000dc4 <__aeabi_fsub+0x250> 8000cb8: 2201 movs r2, #1 8000cba: 497a ldr r1, [pc, #488] ; (8000ea4 <__aeabi_fsub+0x330>) 8000cbc: 401a ands r2, r3 8000cbe: 085b lsrs r3, r3, #1 8000cc0: 400b ands r3, r1 8000cc2: 4313 orrs r3, r2 8000cc4: e79c b.n 8000c00 <__aeabi_fsub+0x8c> 8000cc6: 2e00 cmp r6, #0 8000cc8: d000 beq.n 8000ccc <__aeabi_fsub+0x158> 8000cca: e770 b.n 8000bae <__aeabi_fsub+0x3a> 8000ccc: e76b b.n 8000ba6 <__aeabi_fsub+0x32> 8000cce: 1e3b subs r3, r7, #0 8000cd0: d1c5 bne.n 8000c5e <__aeabi_fsub+0xea> 8000cd2: 2200 movs r2, #0 8000cd4: 027b lsls r3, r7, #9 8000cd6: 0a5b lsrs r3, r3, #9 8000cd8: b2e4 uxtb r4, r4 8000cda: e7a3 b.n 8000c24 <__aeabi_fsub+0xb0> 8000cdc: 0014 movs r4, r2 8000cde: e78f b.n 8000c00 <__aeabi_fsub+0x8c> 8000ce0: 2e00 cmp r6, #0 8000ce2: d04d beq.n 8000d80 <__aeabi_fsub+0x20c> 8000ce4: 1e48 subs r0, r1, #1 8000ce6: 2800 cmp r0, #0 8000ce8: d157 bne.n 8000d9a <__aeabi_fsub+0x226> 8000cea: 199b adds r3, r3, r6 8000cec: 2401 movs r4, #1 8000cee: 015a lsls r2, r3, #5 8000cf0: d5b5 bpl.n 8000c5e <__aeabi_fsub+0xea> 8000cf2: 2402 movs r4, #2 8000cf4: e7e0 b.n 8000cb8 <__aeabi_fsub+0x144> 8000cf6: 2a00 cmp r2, #0 8000cf8: d125 bne.n 8000d46 <__aeabi_fsub+0x1d2> 8000cfa: 1c62 adds r2, r4, #1 8000cfc: b2d2 uxtb r2, r2 8000cfe: 2a01 cmp r2, #1 8000d00: dd72 ble.n 8000de8 <__aeabi_fsub+0x274> 8000d02: 1b9f subs r7, r3, r6 8000d04: 017a lsls r2, r7, #5 8000d06: d535 bpl.n 8000d74 <__aeabi_fsub+0x200> 8000d08: 1af7 subs r7, r6, r3 8000d0a: 000d movs r5, r1 8000d0c: e764 b.n 8000bd8 <__aeabi_fsub+0x64> 8000d0e: 2201 movs r2, #1 8000d10: 2300 movs r3, #0 8000d12: 402a ands r2, r5 8000d14: e786 b.n 8000c24 <__aeabi_fsub+0xb0> 8000d16: 003b movs r3, r7 8000d18: 4a63 ldr r2, [pc, #396] ; (8000ea8 <__aeabi_fsub+0x334>) 8000d1a: 1a24 subs r4, r4, r0 8000d1c: 4013 ands r3, r2 8000d1e: e76f b.n 8000c00 <__aeabi_fsub+0x8c> 8000d20: 2900 cmp r1, #0 8000d22: d16c bne.n 8000dfe <__aeabi_fsub+0x28a> 8000d24: 1c61 adds r1, r4, #1 8000d26: b2c8 uxtb r0, r1 8000d28: 2801 cmp r0, #1 8000d2a: dd4e ble.n 8000dca <__aeabi_fsub+0x256> 8000d2c: 29ff cmp r1, #255 ; 0xff 8000d2e: d049 beq.n 8000dc4 <__aeabi_fsub+0x250> 8000d30: 199b adds r3, r3, r6 8000d32: 085b lsrs r3, r3, #1 8000d34: 000c movs r4, r1 8000d36: e763 b.n 8000c00 <__aeabi_fsub+0x8c> 8000d38: 2aff cmp r2, #255 ; 0xff 8000d3a: d041 beq.n 8000dc0 <__aeabi_fsub+0x24c> 8000d3c: 000a movs r2, r1 8000d3e: e781 b.n 8000c44 <__aeabi_fsub+0xd0> 8000d40: 2601 movs r6, #1 8000d42: 1b9b subs r3, r3, r6 8000d44: e789 b.n 8000c5a <__aeabi_fsub+0xe6> 8000d46: 2c00 cmp r4, #0 8000d48: d01c beq.n 8000d84 <__aeabi_fsub+0x210> 8000d4a: 28ff cmp r0, #255 ; 0xff 8000d4c: d021 beq.n 8000d92 <__aeabi_fsub+0x21e> 8000d4e: 2480 movs r4, #128 ; 0x80 8000d50: 04e4 lsls r4, r4, #19 8000d52: 4252 negs r2, r2 8000d54: 4323 orrs r3, r4 8000d56: 2a1b cmp r2, #27 8000d58: dd00 ble.n 8000d5c <__aeabi_fsub+0x1e8> 8000d5a: e096 b.n 8000e8a <__aeabi_fsub+0x316> 8000d5c: 001c movs r4, r3 8000d5e: 2520 movs r5, #32 8000d60: 40d4 lsrs r4, r2 8000d62: 1aaa subs r2, r5, r2 8000d64: 4093 lsls r3, r2 8000d66: 1e5a subs r2, r3, #1 8000d68: 4193 sbcs r3, r2 8000d6a: 4323 orrs r3, r4 8000d6c: 1af3 subs r3, r6, r3 8000d6e: 0004 movs r4, r0 8000d70: 000d movs r5, r1 8000d72: e72d b.n 8000bd0 <__aeabi_fsub+0x5c> 8000d74: 2f00 cmp r7, #0 8000d76: d000 beq.n 8000d7a <__aeabi_fsub+0x206> 8000d78: e72e b.n 8000bd8 <__aeabi_fsub+0x64> 8000d7a: 2200 movs r2, #0 8000d7c: 2400 movs r4, #0 8000d7e: e7a9 b.n 8000cd4 <__aeabi_fsub+0x160> 8000d80: 000c movs r4, r1 8000d82: e73d b.n 8000c00 <__aeabi_fsub+0x8c> 8000d84: 2b00 cmp r3, #0 8000d86: d058 beq.n 8000e3a <__aeabi_fsub+0x2c6> 8000d88: 43d2 mvns r2, r2 8000d8a: 2a00 cmp r2, #0 8000d8c: d0ee beq.n 8000d6c <__aeabi_fsub+0x1f8> 8000d8e: 28ff cmp r0, #255 ; 0xff 8000d90: d1e1 bne.n 8000d56 <__aeabi_fsub+0x1e2> 8000d92: 0033 movs r3, r6 8000d94: 24ff movs r4, #255 ; 0xff 8000d96: 000d movs r5, r1 8000d98: e732 b.n 8000c00 <__aeabi_fsub+0x8c> 8000d9a: 29ff cmp r1, #255 ; 0xff 8000d9c: d010 beq.n 8000dc0 <__aeabi_fsub+0x24c> 8000d9e: 0001 movs r1, r0 8000da0: e778 b.n 8000c94 <__aeabi_fsub+0x120> 8000da2: 2b00 cmp r3, #0 8000da4: d06e beq.n 8000e84 <__aeabi_fsub+0x310> 8000da6: 24ff movs r4, #255 ; 0xff 8000da8: 2e00 cmp r6, #0 8000daa: d100 bne.n 8000dae <__aeabi_fsub+0x23a> 8000dac: e728 b.n 8000c00 <__aeabi_fsub+0x8c> 8000dae: 2280 movs r2, #128 ; 0x80 8000db0: 4651 mov r1, sl 8000db2: 03d2 lsls r2, r2, #15 8000db4: 4211 tst r1, r2 8000db6: d003 beq.n 8000dc0 <__aeabi_fsub+0x24c> 8000db8: 4661 mov r1, ip 8000dba: 4211 tst r1, r2 8000dbc: d100 bne.n 8000dc0 <__aeabi_fsub+0x24c> 8000dbe: 0033 movs r3, r6 8000dc0: 24ff movs r4, #255 ; 0xff 8000dc2: e71d b.n 8000c00 <__aeabi_fsub+0x8c> 8000dc4: 24ff movs r4, #255 ; 0xff 8000dc6: 2300 movs r3, #0 8000dc8: e72c b.n 8000c24 <__aeabi_fsub+0xb0> 8000dca: 2c00 cmp r4, #0 8000dcc: d1e9 bne.n 8000da2 <__aeabi_fsub+0x22e> 8000dce: 2b00 cmp r3, #0 8000dd0: d063 beq.n 8000e9a <__aeabi_fsub+0x326> 8000dd2: 2e00 cmp r6, #0 8000dd4: d100 bne.n 8000dd8 <__aeabi_fsub+0x264> 8000dd6: e713 b.n 8000c00 <__aeabi_fsub+0x8c> 8000dd8: 199b adds r3, r3, r6 8000dda: 015a lsls r2, r3, #5 8000ddc: d400 bmi.n 8000de0 <__aeabi_fsub+0x26c> 8000dde: e73e b.n 8000c5e <__aeabi_fsub+0xea> 8000de0: 4a31 ldr r2, [pc, #196] ; (8000ea8 <__aeabi_fsub+0x334>) 8000de2: 000c movs r4, r1 8000de4: 4013 ands r3, r2 8000de6: e70b b.n 8000c00 <__aeabi_fsub+0x8c> 8000de8: 2c00 cmp r4, #0 8000dea: d11e bne.n 8000e2a <__aeabi_fsub+0x2b6> 8000dec: 2b00 cmp r3, #0 8000dee: d12f bne.n 8000e50 <__aeabi_fsub+0x2dc> 8000df0: 2e00 cmp r6, #0 8000df2: d04f beq.n 8000e94 <__aeabi_fsub+0x320> 8000df4: 0033 movs r3, r6 8000df6: 000d movs r5, r1 8000df8: e702 b.n 8000c00 <__aeabi_fsub+0x8c> 8000dfa: 2601 movs r6, #1 8000dfc: e755 b.n 8000caa <__aeabi_fsub+0x136> 8000dfe: 2c00 cmp r4, #0 8000e00: d11f bne.n 8000e42 <__aeabi_fsub+0x2ce> 8000e02: 2b00 cmp r3, #0 8000e04: d043 beq.n 8000e8e <__aeabi_fsub+0x31a> 8000e06: 43c9 mvns r1, r1 8000e08: 2900 cmp r1, #0 8000e0a: d00b beq.n 8000e24 <__aeabi_fsub+0x2b0> 8000e0c: 28ff cmp r0, #255 ; 0xff 8000e0e: d039 beq.n 8000e84 <__aeabi_fsub+0x310> 8000e10: 291b cmp r1, #27 8000e12: dc44 bgt.n 8000e9e <__aeabi_fsub+0x32a> 8000e14: 001c movs r4, r3 8000e16: 2720 movs r7, #32 8000e18: 40cc lsrs r4, r1 8000e1a: 1a79 subs r1, r7, r1 8000e1c: 408b lsls r3, r1 8000e1e: 1e59 subs r1, r3, #1 8000e20: 418b sbcs r3, r1 8000e22: 4323 orrs r3, r4 8000e24: 199b adds r3, r3, r6 8000e26: 0004 movs r4, r0 8000e28: e740 b.n 8000cac <__aeabi_fsub+0x138> 8000e2a: 2b00 cmp r3, #0 8000e2c: d11a bne.n 8000e64 <__aeabi_fsub+0x2f0> 8000e2e: 2e00 cmp r6, #0 8000e30: d124 bne.n 8000e7c <__aeabi_fsub+0x308> 8000e32: 2780 movs r7, #128 ; 0x80 8000e34: 2200 movs r2, #0 8000e36: 03ff lsls r7, r7, #15 8000e38: e71b b.n 8000c72 <__aeabi_fsub+0xfe> 8000e3a: 0033 movs r3, r6 8000e3c: 0004 movs r4, r0 8000e3e: 000d movs r5, r1 8000e40: e6de b.n 8000c00 <__aeabi_fsub+0x8c> 8000e42: 28ff cmp r0, #255 ; 0xff 8000e44: d01e beq.n 8000e84 <__aeabi_fsub+0x310> 8000e46: 2480 movs r4, #128 ; 0x80 8000e48: 04e4 lsls r4, r4, #19 8000e4a: 4249 negs r1, r1 8000e4c: 4323 orrs r3, r4 8000e4e: e7df b.n 8000e10 <__aeabi_fsub+0x29c> 8000e50: 2e00 cmp r6, #0 8000e52: d100 bne.n 8000e56 <__aeabi_fsub+0x2e2> 8000e54: e6d4 b.n 8000c00 <__aeabi_fsub+0x8c> 8000e56: 1b9f subs r7, r3, r6 8000e58: 017a lsls r2, r7, #5 8000e5a: d400 bmi.n 8000e5e <__aeabi_fsub+0x2ea> 8000e5c: e737 b.n 8000cce <__aeabi_fsub+0x15a> 8000e5e: 1af3 subs r3, r6, r3 8000e60: 000d movs r5, r1 8000e62: e6cd b.n 8000c00 <__aeabi_fsub+0x8c> 8000e64: 24ff movs r4, #255 ; 0xff 8000e66: 2e00 cmp r6, #0 8000e68: d100 bne.n 8000e6c <__aeabi_fsub+0x2f8> 8000e6a: e6c9 b.n 8000c00 <__aeabi_fsub+0x8c> 8000e6c: 2280 movs r2, #128 ; 0x80 8000e6e: 4650 mov r0, sl 8000e70: 03d2 lsls r2, r2, #15 8000e72: 4210 tst r0, r2 8000e74: d0a4 beq.n 8000dc0 <__aeabi_fsub+0x24c> 8000e76: 4660 mov r0, ip 8000e78: 4210 tst r0, r2 8000e7a: d1a1 bne.n 8000dc0 <__aeabi_fsub+0x24c> 8000e7c: 0033 movs r3, r6 8000e7e: 000d movs r5, r1 8000e80: 24ff movs r4, #255 ; 0xff 8000e82: e6bd b.n 8000c00 <__aeabi_fsub+0x8c> 8000e84: 0033 movs r3, r6 8000e86: 24ff movs r4, #255 ; 0xff 8000e88: e6ba b.n 8000c00 <__aeabi_fsub+0x8c> 8000e8a: 2301 movs r3, #1 8000e8c: e76e b.n 8000d6c <__aeabi_fsub+0x1f8> 8000e8e: 0033 movs r3, r6 8000e90: 0004 movs r4, r0 8000e92: e6b5 b.n 8000c00 <__aeabi_fsub+0x8c> 8000e94: 2700 movs r7, #0 8000e96: 2200 movs r2, #0 8000e98: e71c b.n 8000cd4 <__aeabi_fsub+0x160> 8000e9a: 0033 movs r3, r6 8000e9c: e6b0 b.n 8000c00 <__aeabi_fsub+0x8c> 8000e9e: 2301 movs r3, #1 8000ea0: e7c0 b.n 8000e24 <__aeabi_fsub+0x2b0> 8000ea2: 46c0 nop ; (mov r8, r8) 8000ea4: 7dffffff .word 0x7dffffff 8000ea8: fbffffff .word 0xfbffffff 08000eac <__aeabi_f2iz>: 8000eac: 0241 lsls r1, r0, #9 8000eae: 0043 lsls r3, r0, #1 8000eb0: 0fc2 lsrs r2, r0, #31 8000eb2: 0a49 lsrs r1, r1, #9 8000eb4: 0e1b lsrs r3, r3, #24 8000eb6: 2000 movs r0, #0 8000eb8: 2b7e cmp r3, #126 ; 0x7e 8000eba: dd0d ble.n 8000ed8 <__aeabi_f2iz+0x2c> 8000ebc: 2b9d cmp r3, #157 ; 0x9d 8000ebe: dc0c bgt.n 8000eda <__aeabi_f2iz+0x2e> 8000ec0: 2080 movs r0, #128 ; 0x80 8000ec2: 0400 lsls r0, r0, #16 8000ec4: 4301 orrs r1, r0 8000ec6: 2b95 cmp r3, #149 ; 0x95 8000ec8: dc0a bgt.n 8000ee0 <__aeabi_f2iz+0x34> 8000eca: 2096 movs r0, #150 ; 0x96 8000ecc: 1ac3 subs r3, r0, r3 8000ece: 40d9 lsrs r1, r3 8000ed0: 4248 negs r0, r1 8000ed2: 2a00 cmp r2, #0 8000ed4: d100 bne.n 8000ed8 <__aeabi_f2iz+0x2c> 8000ed6: 0008 movs r0, r1 8000ed8: 4770 bx lr 8000eda: 4b03 ldr r3, [pc, #12] ; (8000ee8 <__aeabi_f2iz+0x3c>) 8000edc: 18d0 adds r0, r2, r3 8000ede: e7fb b.n 8000ed8 <__aeabi_f2iz+0x2c> 8000ee0: 3b96 subs r3, #150 ; 0x96 8000ee2: 4099 lsls r1, r3 8000ee4: e7f4 b.n 8000ed0 <__aeabi_f2iz+0x24> 8000ee6: 46c0 nop ; (mov r8, r8) 8000ee8: 7fffffff .word 0x7fffffff 08000eec <__aeabi_ui2f>: 8000eec: b510 push {r4, lr} 8000eee: 1e04 subs r4, r0, #0 8000ef0: d027 beq.n 8000f42 <__aeabi_ui2f+0x56> 8000ef2: f000 f993 bl 800121c <__clzsi2> 8000ef6: 239e movs r3, #158 ; 0x9e 8000ef8: 1a1b subs r3, r3, r0 8000efa: 2b96 cmp r3, #150 ; 0x96 8000efc: dc0a bgt.n 8000f14 <__aeabi_ui2f+0x28> 8000efe: 2296 movs r2, #150 ; 0x96 8000f00: 1ad2 subs r2, r2, r3 8000f02: 4094 lsls r4, r2 8000f04: 0264 lsls r4, r4, #9 8000f06: 0a64 lsrs r4, r4, #9 8000f08: b2db uxtb r3, r3 8000f0a: 0264 lsls r4, r4, #9 8000f0c: 05db lsls r3, r3, #23 8000f0e: 0a60 lsrs r0, r4, #9 8000f10: 4318 orrs r0, r3 8000f12: bd10 pop {r4, pc} 8000f14: 2b99 cmp r3, #153 ; 0x99 8000f16: dc17 bgt.n 8000f48 <__aeabi_ui2f+0x5c> 8000f18: 2299 movs r2, #153 ; 0x99 8000f1a: 1ad2 subs r2, r2, r3 8000f1c: 2a00 cmp r2, #0 8000f1e: dd27 ble.n 8000f70 <__aeabi_ui2f+0x84> 8000f20: 4094 lsls r4, r2 8000f22: 0022 movs r2, r4 8000f24: 4c13 ldr r4, [pc, #76] ; (8000f74 <__aeabi_ui2f+0x88>) 8000f26: 4014 ands r4, r2 8000f28: 0751 lsls r1, r2, #29 8000f2a: d004 beq.n 8000f36 <__aeabi_ui2f+0x4a> 8000f2c: 210f movs r1, #15 8000f2e: 400a ands r2, r1 8000f30: 2a04 cmp r2, #4 8000f32: d000 beq.n 8000f36 <__aeabi_ui2f+0x4a> 8000f34: 3404 adds r4, #4 8000f36: 0162 lsls r2, r4, #5 8000f38: d412 bmi.n 8000f60 <__aeabi_ui2f+0x74> 8000f3a: 01a4 lsls r4, r4, #6 8000f3c: 0a64 lsrs r4, r4, #9 8000f3e: b2db uxtb r3, r3 8000f40: e7e3 b.n 8000f0a <__aeabi_ui2f+0x1e> 8000f42: 2300 movs r3, #0 8000f44: 2400 movs r4, #0 8000f46: e7e0 b.n 8000f0a <__aeabi_ui2f+0x1e> 8000f48: 22b9 movs r2, #185 ; 0xb9 8000f4a: 0021 movs r1, r4 8000f4c: 1ad2 subs r2, r2, r3 8000f4e: 4091 lsls r1, r2 8000f50: 000a movs r2, r1 8000f52: 1e51 subs r1, r2, #1 8000f54: 418a sbcs r2, r1 8000f56: 2105 movs r1, #5 8000f58: 1a09 subs r1, r1, r0 8000f5a: 40cc lsrs r4, r1 8000f5c: 4314 orrs r4, r2 8000f5e: e7db b.n 8000f18 <__aeabi_ui2f+0x2c> 8000f60: 4b04 ldr r3, [pc, #16] ; (8000f74 <__aeabi_ui2f+0x88>) 8000f62: 401c ands r4, r3 8000f64: 239f movs r3, #159 ; 0x9f 8000f66: 01a4 lsls r4, r4, #6 8000f68: 1a1b subs r3, r3, r0 8000f6a: 0a64 lsrs r4, r4, #9 8000f6c: b2db uxtb r3, r3 8000f6e: e7cc b.n 8000f0a <__aeabi_ui2f+0x1e> 8000f70: 0022 movs r2, r4 8000f72: e7d7 b.n 8000f24 <__aeabi_ui2f+0x38> 8000f74: fbffffff .word 0xfbffffff 08000f78 <__eqdf2>: 8000f78: b5f0 push {r4, r5, r6, r7, lr} 8000f7a: 464f mov r7, r9 8000f7c: 4646 mov r6, r8 8000f7e: 46d6 mov lr, sl 8000f80: 005c lsls r4, r3, #1 8000f82: b5c0 push {r6, r7, lr} 8000f84: 031f lsls r7, r3, #12 8000f86: 0fdb lsrs r3, r3, #31 8000f88: 469a mov sl, r3 8000f8a: 4b17 ldr r3, [pc, #92] ; (8000fe8 <__eqdf2+0x70>) 8000f8c: 030e lsls r6, r1, #12 8000f8e: 004d lsls r5, r1, #1 8000f90: 4684 mov ip, r0 8000f92: 4680 mov r8, r0 8000f94: 0b36 lsrs r6, r6, #12 8000f96: 0d6d lsrs r5, r5, #21 8000f98: 0fc9 lsrs r1, r1, #31 8000f9a: 4691 mov r9, r2 8000f9c: 0b3f lsrs r7, r7, #12 8000f9e: 0d64 lsrs r4, r4, #21 8000fa0: 2001 movs r0, #1 8000fa2: 429d cmp r5, r3 8000fa4: d008 beq.n 8000fb8 <__eqdf2+0x40> 8000fa6: 429c cmp r4, r3 8000fa8: d001 beq.n 8000fae <__eqdf2+0x36> 8000faa: 42a5 cmp r5, r4 8000fac: d00b beq.n 8000fc6 <__eqdf2+0x4e> 8000fae: bc1c pop {r2, r3, r4} 8000fb0: 4690 mov r8, r2 8000fb2: 4699 mov r9, r3 8000fb4: 46a2 mov sl, r4 8000fb6: bdf0 pop {r4, r5, r6, r7, pc} 8000fb8: 4663 mov r3, ip 8000fba: 4333 orrs r3, r6 8000fbc: d1f7 bne.n 8000fae <__eqdf2+0x36> 8000fbe: 42ac cmp r4, r5 8000fc0: d1f5 bne.n 8000fae <__eqdf2+0x36> 8000fc2: 433a orrs r2, r7 8000fc4: d1f3 bne.n 8000fae <__eqdf2+0x36> 8000fc6: 2001 movs r0, #1 8000fc8: 42be cmp r6, r7 8000fca: d1f0 bne.n 8000fae <__eqdf2+0x36> 8000fcc: 45c8 cmp r8, r9 8000fce: d1ee bne.n 8000fae <__eqdf2+0x36> 8000fd0: 4551 cmp r1, sl 8000fd2: d007 beq.n 8000fe4 <__eqdf2+0x6c> 8000fd4: 2d00 cmp r5, #0 8000fd6: d1ea bne.n 8000fae <__eqdf2+0x36> 8000fd8: 4663 mov r3, ip 8000fda: 431e orrs r6, r3 8000fdc: 0030 movs r0, r6 8000fde: 1e46 subs r6, r0, #1 8000fe0: 41b0 sbcs r0, r6 8000fe2: e7e4 b.n 8000fae <__eqdf2+0x36> 8000fe4: 2000 movs r0, #0 8000fe6: e7e2 b.n 8000fae <__eqdf2+0x36> 8000fe8: 000007ff .word 0x000007ff 08000fec <__gedf2>: 8000fec: b5f0 push {r4, r5, r6, r7, lr} 8000fee: 4645 mov r5, r8 8000ff0: 46de mov lr, fp 8000ff2: 4657 mov r7, sl 8000ff4: 464e mov r6, r9 8000ff6: b5e0 push {r5, r6, r7, lr} 8000ff8: 031f lsls r7, r3, #12 8000ffa: 0b3d lsrs r5, r7, #12 8000ffc: 4f2c ldr r7, [pc, #176] ; (80010b0 <__gedf2+0xc4>) 8000ffe: 030e lsls r6, r1, #12 8001000: 004c lsls r4, r1, #1 8001002: 46ab mov fp, r5 8001004: 005d lsls r5, r3, #1 8001006: 4684 mov ip, r0 8001008: 0b36 lsrs r6, r6, #12 800100a: 0d64 lsrs r4, r4, #21 800100c: 0fc9 lsrs r1, r1, #31 800100e: 4690 mov r8, r2 8001010: 0d6d lsrs r5, r5, #21 8001012: 0fdb lsrs r3, r3, #31 8001014: 42bc cmp r4, r7 8001016: d02a beq.n 800106e <__gedf2+0x82> 8001018: 4f25 ldr r7, [pc, #148] ; (80010b0 <__gedf2+0xc4>) 800101a: 42bd cmp r5, r7 800101c: d02d beq.n 800107a <__gedf2+0x8e> 800101e: 2c00 cmp r4, #0 8001020: d10f bne.n 8001042 <__gedf2+0x56> 8001022: 4330 orrs r0, r6 8001024: 0007 movs r7, r0 8001026: 4681 mov r9, r0 8001028: 4278 negs r0, r7 800102a: 4178 adcs r0, r7 800102c: b2c0 uxtb r0, r0 800102e: 2d00 cmp r5, #0 8001030: d117 bne.n 8001062 <__gedf2+0x76> 8001032: 465f mov r7, fp 8001034: 433a orrs r2, r7 8001036: d114 bne.n 8001062 <__gedf2+0x76> 8001038: 464b mov r3, r9 800103a: 2000 movs r0, #0 800103c: 2b00 cmp r3, #0 800103e: d00a beq.n 8001056 <__gedf2+0x6a> 8001040: e006 b.n 8001050 <__gedf2+0x64> 8001042: 2d00 cmp r5, #0 8001044: d102 bne.n 800104c <__gedf2+0x60> 8001046: 4658 mov r0, fp 8001048: 4302 orrs r2, r0 800104a: d001 beq.n 8001050 <__gedf2+0x64> 800104c: 4299 cmp r1, r3 800104e: d018 beq.n 8001082 <__gedf2+0x96> 8001050: 4248 negs r0, r1 8001052: 2101 movs r1, #1 8001054: 4308 orrs r0, r1 8001056: bc3c pop {r2, r3, r4, r5} 8001058: 4690 mov r8, r2 800105a: 4699 mov r9, r3 800105c: 46a2 mov sl, r4 800105e: 46ab mov fp, r5 8001060: bdf0 pop {r4, r5, r6, r7, pc} 8001062: 2800 cmp r0, #0 8001064: d0f2 beq.n 800104c <__gedf2+0x60> 8001066: 2001 movs r0, #1 8001068: 3b01 subs r3, #1 800106a: 4318 orrs r0, r3 800106c: e7f3 b.n 8001056 <__gedf2+0x6a> 800106e: 0037 movs r7, r6 8001070: 4307 orrs r7, r0 8001072: d0d1 beq.n 8001018 <__gedf2+0x2c> 8001074: 2002 movs r0, #2 8001076: 4240 negs r0, r0 8001078: e7ed b.n 8001056 <__gedf2+0x6a> 800107a: 465f mov r7, fp 800107c: 4317 orrs r7, r2 800107e: d0ce beq.n 800101e <__gedf2+0x32> 8001080: e7f8 b.n 8001074 <__gedf2+0x88> 8001082: 42ac cmp r4, r5 8001084: dce4 bgt.n 8001050 <__gedf2+0x64> 8001086: da03 bge.n 8001090 <__gedf2+0xa4> 8001088: 1e48 subs r0, r1, #1 800108a: 2101 movs r1, #1 800108c: 4308 orrs r0, r1 800108e: e7e2 b.n 8001056 <__gedf2+0x6a> 8001090: 455e cmp r6, fp 8001092: d8dd bhi.n 8001050 <__gedf2+0x64> 8001094: d006 beq.n 80010a4 <__gedf2+0xb8> 8001096: 2000 movs r0, #0 8001098: 455e cmp r6, fp 800109a: d2dc bcs.n 8001056 <__gedf2+0x6a> 800109c: 2301 movs r3, #1 800109e: 1e48 subs r0, r1, #1 80010a0: 4318 orrs r0, r3 80010a2: e7d8 b.n 8001056 <__gedf2+0x6a> 80010a4: 45c4 cmp ip, r8 80010a6: d8d3 bhi.n 8001050 <__gedf2+0x64> 80010a8: 2000 movs r0, #0 80010aa: 45c4 cmp ip, r8 80010ac: d3f6 bcc.n 800109c <__gedf2+0xb0> 80010ae: e7d2 b.n 8001056 <__gedf2+0x6a> 80010b0: 000007ff .word 0x000007ff 080010b4 <__ledf2>: 80010b4: b5f0 push {r4, r5, r6, r7, lr} 80010b6: 464e mov r6, r9 80010b8: 4645 mov r5, r8 80010ba: 46de mov lr, fp 80010bc: 4657 mov r7, sl 80010be: 005c lsls r4, r3, #1 80010c0: b5e0 push {r5, r6, r7, lr} 80010c2: 031f lsls r7, r3, #12 80010c4: 0fdb lsrs r3, r3, #31 80010c6: 4699 mov r9, r3 80010c8: 4b2a ldr r3, [pc, #168] ; (8001174 <__ledf2+0xc0>) 80010ca: 030e lsls r6, r1, #12 80010cc: 004d lsls r5, r1, #1 80010ce: 0fc9 lsrs r1, r1, #31 80010d0: 4684 mov ip, r0 80010d2: 0b36 lsrs r6, r6, #12 80010d4: 0d6d lsrs r5, r5, #21 80010d6: 468b mov fp, r1 80010d8: 4690 mov r8, r2 80010da: 0b3f lsrs r7, r7, #12 80010dc: 0d64 lsrs r4, r4, #21 80010de: 429d cmp r5, r3 80010e0: d020 beq.n 8001124 <__ledf2+0x70> 80010e2: 4b24 ldr r3, [pc, #144] ; (8001174 <__ledf2+0xc0>) 80010e4: 429c cmp r4, r3 80010e6: d022 beq.n 800112e <__ledf2+0x7a> 80010e8: 2d00 cmp r5, #0 80010ea: d112 bne.n 8001112 <__ledf2+0x5e> 80010ec: 4330 orrs r0, r6 80010ee: 4243 negs r3, r0 80010f0: 4143 adcs r3, r0 80010f2: b2db uxtb r3, r3 80010f4: 2c00 cmp r4, #0 80010f6: d01f beq.n 8001138 <__ledf2+0x84> 80010f8: 2b00 cmp r3, #0 80010fa: d00c beq.n 8001116 <__ledf2+0x62> 80010fc: 464b mov r3, r9 80010fe: 2001 movs r0, #1 8001100: 3b01 subs r3, #1 8001102: 4303 orrs r3, r0 8001104: 0018 movs r0, r3 8001106: bc3c pop {r2, r3, r4, r5} 8001108: 4690 mov r8, r2 800110a: 4699 mov r9, r3 800110c: 46a2 mov sl, r4 800110e: 46ab mov fp, r5 8001110: bdf0 pop {r4, r5, r6, r7, pc} 8001112: 2c00 cmp r4, #0 8001114: d016 beq.n 8001144 <__ledf2+0x90> 8001116: 45cb cmp fp, r9 8001118: d017 beq.n 800114a <__ledf2+0x96> 800111a: 465b mov r3, fp 800111c: 4259 negs r1, r3 800111e: 2301 movs r3, #1 8001120: 430b orrs r3, r1 8001122: e7ef b.n 8001104 <__ledf2+0x50> 8001124: 0031 movs r1, r6 8001126: 2302 movs r3, #2 8001128: 4301 orrs r1, r0 800112a: d1eb bne.n 8001104 <__ledf2+0x50> 800112c: e7d9 b.n 80010e2 <__ledf2+0x2e> 800112e: 0039 movs r1, r7 8001130: 2302 movs r3, #2 8001132: 4311 orrs r1, r2 8001134: d1e6 bne.n 8001104 <__ledf2+0x50> 8001136: e7d7 b.n 80010e8 <__ledf2+0x34> 8001138: 433a orrs r2, r7 800113a: d1dd bne.n 80010f8 <__ledf2+0x44> 800113c: 2300 movs r3, #0 800113e: 2800 cmp r0, #0 8001140: d0e0 beq.n 8001104 <__ledf2+0x50> 8001142: e7ea b.n 800111a <__ledf2+0x66> 8001144: 433a orrs r2, r7 8001146: d1e6 bne.n 8001116 <__ledf2+0x62> 8001148: e7e7 b.n 800111a <__ledf2+0x66> 800114a: 42a5 cmp r5, r4 800114c: dce5 bgt.n 800111a <__ledf2+0x66> 800114e: db05 blt.n 800115c <__ledf2+0xa8> 8001150: 42be cmp r6, r7 8001152: d8e2 bhi.n 800111a <__ledf2+0x66> 8001154: d007 beq.n 8001166 <__ledf2+0xb2> 8001156: 2300 movs r3, #0 8001158: 42be cmp r6, r7 800115a: d2d3 bcs.n 8001104 <__ledf2+0x50> 800115c: 4659 mov r1, fp 800115e: 2301 movs r3, #1 8001160: 3901 subs r1, #1 8001162: 430b orrs r3, r1 8001164: e7ce b.n 8001104 <__ledf2+0x50> 8001166: 45c4 cmp ip, r8 8001168: d8d7 bhi.n 800111a <__ledf2+0x66> 800116a: 2300 movs r3, #0 800116c: 45c4 cmp ip, r8 800116e: d3f5 bcc.n 800115c <__ledf2+0xa8> 8001170: e7c8 b.n 8001104 <__ledf2+0x50> 8001172: 46c0 nop ; (mov r8, r8) 8001174: 000007ff .word 0x000007ff 08001178 <__aeabi_f2d>: 8001178: 0041 lsls r1, r0, #1 800117a: 0e09 lsrs r1, r1, #24 800117c: 1c4b adds r3, r1, #1 800117e: b570 push {r4, r5, r6, lr} 8001180: b2db uxtb r3, r3 8001182: 0246 lsls r6, r0, #9 8001184: 0a75 lsrs r5, r6, #9 8001186: 0fc4 lsrs r4, r0, #31 8001188: 2b01 cmp r3, #1 800118a: dd14 ble.n 80011b6 <__aeabi_f2d+0x3e> 800118c: 23e0 movs r3, #224 ; 0xe0 800118e: 009b lsls r3, r3, #2 8001190: 076d lsls r5, r5, #29 8001192: 0b36 lsrs r6, r6, #12 8001194: 18cb adds r3, r1, r3 8001196: 2100 movs r1, #0 8001198: 0d0a lsrs r2, r1, #20 800119a: 0028 movs r0, r5 800119c: 0512 lsls r2, r2, #20 800119e: 4d1c ldr r5, [pc, #112] ; (8001210 <__aeabi_f2d+0x98>) 80011a0: 4332 orrs r2, r6 80011a2: 055b lsls r3, r3, #21 80011a4: 402a ands r2, r5 80011a6: 085b lsrs r3, r3, #1 80011a8: 4313 orrs r3, r2 80011aa: 005b lsls r3, r3, #1 80011ac: 07e4 lsls r4, r4, #31 80011ae: 085b lsrs r3, r3, #1 80011b0: 4323 orrs r3, r4 80011b2: 0019 movs r1, r3 80011b4: bd70 pop {r4, r5, r6, pc} 80011b6: 2900 cmp r1, #0 80011b8: d114 bne.n 80011e4 <__aeabi_f2d+0x6c> 80011ba: 2d00 cmp r5, #0 80011bc: d01e beq.n 80011fc <__aeabi_f2d+0x84> 80011be: 0028 movs r0, r5 80011c0: f000 f82c bl 800121c <__clzsi2> 80011c4: 280a cmp r0, #10 80011c6: dc1c bgt.n 8001202 <__aeabi_f2d+0x8a> 80011c8: 230b movs r3, #11 80011ca: 002a movs r2, r5 80011cc: 1a1b subs r3, r3, r0 80011ce: 40da lsrs r2, r3 80011d0: 0003 movs r3, r0 80011d2: 3315 adds r3, #21 80011d4: 409d lsls r5, r3 80011d6: 4b0f ldr r3, [pc, #60] ; (8001214 <__aeabi_f2d+0x9c>) 80011d8: 0312 lsls r2, r2, #12 80011da: 1a1b subs r3, r3, r0 80011dc: 055b lsls r3, r3, #21 80011de: 0b16 lsrs r6, r2, #12 80011e0: 0d5b lsrs r3, r3, #21 80011e2: e7d8 b.n 8001196 <__aeabi_f2d+0x1e> 80011e4: 2d00 cmp r5, #0 80011e6: d006 beq.n 80011f6 <__aeabi_f2d+0x7e> 80011e8: 0b32 lsrs r2, r6, #12 80011ea: 2680 movs r6, #128 ; 0x80 80011ec: 0336 lsls r6, r6, #12 80011ee: 076d lsls r5, r5, #29 80011f0: 4316 orrs r6, r2 80011f2: 4b09 ldr r3, [pc, #36] ; (8001218 <__aeabi_f2d+0xa0>) 80011f4: e7cf b.n 8001196 <__aeabi_f2d+0x1e> 80011f6: 4b08 ldr r3, [pc, #32] ; (8001218 <__aeabi_f2d+0xa0>) 80011f8: 2600 movs r6, #0 80011fa: e7cc b.n 8001196 <__aeabi_f2d+0x1e> 80011fc: 2300 movs r3, #0 80011fe: 2600 movs r6, #0 8001200: e7c9 b.n 8001196 <__aeabi_f2d+0x1e> 8001202: 0003 movs r3, r0 8001204: 002a movs r2, r5 8001206: 3b0b subs r3, #11 8001208: 409a lsls r2, r3 800120a: 2500 movs r5, #0 800120c: e7e3 b.n 80011d6 <__aeabi_f2d+0x5e> 800120e: 46c0 nop ; (mov r8, r8) 8001210: 800fffff .word 0x800fffff 8001214: 00000389 .word 0x00000389 8001218: 000007ff .word 0x000007ff 0800121c <__clzsi2>: 800121c: 211c movs r1, #28 800121e: 2301 movs r3, #1 8001220: 041b lsls r3, r3, #16 8001222: 4298 cmp r0, r3 8001224: d301 bcc.n 800122a <__clzsi2+0xe> 8001226: 0c00 lsrs r0, r0, #16 8001228: 3910 subs r1, #16 800122a: 0a1b lsrs r3, r3, #8 800122c: 4298 cmp r0, r3 800122e: d301 bcc.n 8001234 <__clzsi2+0x18> 8001230: 0a00 lsrs r0, r0, #8 8001232: 3908 subs r1, #8 8001234: 091b lsrs r3, r3, #4 8001236: 4298 cmp r0, r3 8001238: d301 bcc.n 800123e <__clzsi2+0x22> 800123a: 0900 lsrs r0, r0, #4 800123c: 3904 subs r1, #4 800123e: a202 add r2, pc, #8 ; (adr r2, 8001248 <__clzsi2+0x2c>) 8001240: 5c10 ldrb r0, [r2, r0] 8001242: 1840 adds r0, r0, r1 8001244: 4770 bx lr 8001246: 46c0 nop ; (mov r8, r8) 8001248: 02020304 .word 0x02020304 800124c: 01010101 .word 0x01010101 ... 08001258 <__clzdi2>: 8001258: b510 push {r4, lr} 800125a: 2900 cmp r1, #0 800125c: d103 bne.n 8001266 <__clzdi2+0xe> 800125e: f7ff ffdd bl 800121c <__clzsi2> 8001262: 3020 adds r0, #32 8001264: e002 b.n 800126c <__clzdi2+0x14> 8001266: 1c08 adds r0, r1, #0 8001268: f7ff ffd8 bl 800121c <__clzsi2> 800126c: bd10 pop {r4, pc} 800126e: 46c0 nop ; (mov r8, r8) 08001270 : //------------------------------------------------------ // Êîíôèãóðàöèÿ è êîððåêöèÿ êàíàëà ïðåîáðàçîâàíèÿ //------------------------------------------------------ void SetAndCorrect(void) { 8001270: b580 push {r7, lr} 8001272: b082 sub sp, #8 8001274: af00 add r7, sp, #0 float fKU, sens_f; uint32_t k; switch(pardata.IIN) 8001276: 4bd3 ldr r3, [pc, #844] ; (80015c4 ) 8001278: 88db ldrh r3, [r3, #6] 800127a: b29b uxth r3, r3 800127c: 2b00 cmp r3, #0 800127e: d002 beq.n 8001286 8001280: 2b01 cmp r3, #1 8001282: d037 beq.n 80012f4 8001284: e06f b.n 8001366 { case CHARGE: // ZAR HAL_GPIO_WritePin(GPIOB, (A2_Pin | A3_Pin), GPIO_PIN_RESET); 8001286: 4bd0 ldr r3, [pc, #832] ; (80015c8 ) 8001288: 2200 movs r2, #0 800128a: 210c movs r1, #12 800128c: 0018 movs r0, r3 800128e: f003 fc3e bl 8004b0e if(pardata.IKU < Ku1) 8001292: 4bcc ldr r3, [pc, #816] ; (80015c4 ) 8001294: 899b ldrh r3, [r3, #12] 8001296: b29b uxth r3, r3 8001298: 2b02 cmp r3, #2 800129a: d80c bhi.n 80012b6 { HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_RESET); 800129c: 4bca ldr r3, [pc, #808] ; (80015c8 ) 800129e: 2200 movs r2, #0 80012a0: 2101 movs r1, #1 80012a2: 0018 movs r0, r3 80012a4: f003 fc33 bl 8004b0e HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_SET); 80012a8: 4bc7 ldr r3, [pc, #796] ; (80015c8 ) 80012aa: 2201 movs r2, #1 80012ac: 2102 movs r1, #2 80012ae: 0018 movs r0, r3 80012b0: f003 fc2d bl 8004b0e else { HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET); } break; 80012b4: e057 b.n 8001366 if(pardata.IKU > Ku100) // >= x200 80012b6: 4bc3 ldr r3, [pc, #780] ; (80015c4 ) 80012b8: 899b ldrh r3, [r3, #12] 80012ba: b29b uxth r3, r3 80012bc: 2b09 cmp r3, #9 80012be: d90c bls.n 80012da HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_SET); 80012c0: 4bc1 ldr r3, [pc, #772] ; (80015c8 ) 80012c2: 2201 movs r2, #1 80012c4: 2101 movs r1, #1 80012c6: 0018 movs r0, r3 80012c8: f003 fc21 bl 8004b0e HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET); 80012cc: 4bbe ldr r3, [pc, #760] ; (80015c8 ) 80012ce: 2200 movs r2, #0 80012d0: 2102 movs r1, #2 80012d2: 0018 movs r0, r3 80012d4: f003 fc1b bl 8004b0e break; 80012d8: e045 b.n 8001366 HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_RESET); 80012da: 4bbb ldr r3, [pc, #748] ; (80015c8 ) 80012dc: 2200 movs r2, #0 80012de: 2101 movs r1, #1 80012e0: 0018 movs r0, r3 80012e2: f003 fc14 bl 8004b0e HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET); 80012e6: 4bb8 ldr r3, [pc, #736] ; (80015c8 ) 80012e8: 2200 movs r2, #0 80012ea: 2102 movs r1, #2 80012ec: 0018 movs r0, r3 80012ee: f003 fc0e bl 8004b0e break; 80012f2: e038 b.n 8001366 case ICP: // ICP if(pardata.IKU) 80012f6: 899b ldrh r3, [r3, #12] 80012f8: b29b uxth r3, r3 80012fa: 2b02 cmp r3, #2 80012fc: d802 bhi.n 8001304 pardata.IKU=Ku1; 80012fe: 4bb1 ldr r3, [pc, #708] ; (80015c4 ) 8001300: 2203 movs r2, #3 8001302: 819a strh r2, [r3, #12] } if(pardata.IKU > Ku100) // >= x200 8001304: 4baf ldr r3, [pc, #700] ; (80015c4 ) 8001306: 899b ldrh r3, [r3, #12] 8001308: b29b uxth r3, r3 800130a: 2b09 cmp r3, #9 800130c: d912 bls.n 8001334 { HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_SET); 800130e: 4bae ldr r3, [pc, #696] ; (80015c8 ) 8001310: 2201 movs r2, #1 8001312: 2101 movs r1, #1 8001314: 0018 movs r0, r3 8001316: f003 fbfa bl 8004b0e HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET); 800131a: 4bab ldr r3, [pc, #684] ; (80015c8 ) 800131c: 2200 movs r2, #0 800131e: 2102 movs r1, #2 8001320: 0018 movs r0, r3 8001322: f003 fbf4 bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A2_Pin | A3_Pin), GPIO_PIN_SET); 8001326: 4ba8 ldr r3, [pc, #672] ; (80015c8 ) 8001328: 2201 movs r2, #1 800132a: 210c movs r1, #12 800132c: 0018 movs r0, r3 800132e: f003 fbee bl 8004b0e HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, A2_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB, A3_Pin, GPIO_PIN_RESET); } break; 8001332: e017 b.n 8001364 HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_RESET); 8001334: 4ba4 ldr r3, [pc, #656] ; (80015c8 ) 8001336: 2200 movs r2, #0 8001338: 2101 movs r1, #1 800133a: 0018 movs r0, r3 800133c: f003 fbe7 bl 8004b0e HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET); 8001340: 4ba1 ldr r3, [pc, #644] ; (80015c8 ) 8001342: 2200 movs r2, #0 8001344: 2102 movs r1, #2 8001346: 0018 movs r0, r3 8001348: f003 fbe1 bl 8004b0e HAL_GPIO_WritePin(GPIOB, A2_Pin, GPIO_PIN_SET); 800134c: 4b9e ldr r3, [pc, #632] ; (80015c8 ) 800134e: 2201 movs r2, #1 8001350: 2104 movs r1, #4 8001352: 0018 movs r0, r3 8001354: f003 fbdb bl 8004b0e HAL_GPIO_WritePin(GPIOB, A3_Pin, GPIO_PIN_RESET); 8001358: 4b9b ldr r3, [pc, #620] ; (80015c8 ) 800135a: 2200 movs r2, #0 800135c: 2108 movs r1, #8 800135e: 0018 movs r0, r3 8001360: f003 fbd5 bl 8004b0e break; 8001364: 46c0 nop ; (mov r8, r8) } switch(pardata.IKU) 8001366: 4b97 ldr r3, [pc, #604] ; (80015c4 ) 8001368: 899b ldrh r3, [r3, #12] 800136a: b29b uxth r3, r3 800136c: 2b0c cmp r3, #12 800136e: d853 bhi.n 8001418 8001370: 009a lsls r2, r3, #2 8001372: 4b96 ldr r3, [pc, #600] ; (80015cc ) 8001374: 18d3 adds r3, r2, r3 8001376: 681b ldr r3, [r3, #0] 8001378: 469f mov pc, r3 {//todo case Ku0_1: case Ku1: // 0.1, 1 HAL_GPIO_WritePin(GPIOB, (A4_Pin | A5_Pin | A6_Pin), GPIO_PIN_RESET); 800137a: 4b93 ldr r3, [pc, #588] ; (80015c8 ) 800137c: 2200 movs r2, #0 800137e: 2170 movs r1, #112 ; 0x70 8001380: 0018 movs r0, r3 8001382: f003 fbc4 bl 8004b0e break; 8001386: e047 b.n 8001418 case Ku0_2: case Ku2: // 0.2, 2 HAL_GPIO_WritePin(GPIOB, A4_Pin, GPIO_PIN_SET); 8001388: 4b8f ldr r3, [pc, #572] ; (80015c8 ) 800138a: 2201 movs r2, #1 800138c: 2110 movs r1, #16 800138e: 0018 movs r0, r3 8001390: f003 fbbd bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A5_Pin | A6_Pin), GPIO_PIN_RESET); 8001394: 4b8c ldr r3, [pc, #560] ; (80015c8 ) 8001396: 2200 movs r2, #0 8001398: 2160 movs r1, #96 ; 0x60 800139a: 0018 movs r0, r3 800139c: f003 fbb7 bl 8004b0e break; 80013a0: e03a b.n 8001418 case Ku0_5: case Ku5: // 0.5, 5 HAL_GPIO_WritePin(GPIOB, A5_Pin, GPIO_PIN_SET); 80013a2: 4b89 ldr r3, [pc, #548] ; (80015c8 ) 80013a4: 2201 movs r2, #1 80013a6: 2120 movs r1, #32 80013a8: 0018 movs r0, r3 80013aa: f003 fbb0 bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A4_Pin | A6_Pin), GPIO_PIN_RESET); 80013ae: 4b86 ldr r3, [pc, #536] ; (80015c8 ) 80013b0: 2200 movs r2, #0 80013b2: 2150 movs r1, #80 ; 0x50 80013b4: 0018 movs r0, r3 80013b6: f003 fbaa bl 8004b0e break; 80013ba: e02d b.n 8001418 case Ku10: // 10 HAL_GPIO_WritePin(GPIOB, A6_Pin, GPIO_PIN_RESET); 80013bc: 4b82 ldr r3, [pc, #520] ; (80015c8 ) 80013be: 2200 movs r2, #0 80013c0: 2140 movs r1, #64 ; 0x40 80013c2: 0018 movs r0, r3 80013c4: f003 fba3 bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A4_Pin | A5_Pin), GPIO_PIN_SET); 80013c8: 4b7f ldr r3, [pc, #508] ; (80015c8 ) 80013ca: 2201 movs r2, #1 80013cc: 2130 movs r1, #48 ; 0x30 80013ce: 0018 movs r0, r3 80013d0: f003 fb9d bl 8004b0e break; 80013d4: e020 b.n 8001418 case Ku20: case Ku200: // 20, 200 HAL_GPIO_WritePin(GPIOB, (A4_Pin | A6_Pin), GPIO_PIN_SET); 80013d6: 4b7c ldr r3, [pc, #496] ; (80015c8 ) 80013d8: 2201 movs r2, #1 80013da: 2150 movs r1, #80 ; 0x50 80013dc: 0018 movs r0, r3 80013de: f003 fb96 bl 8004b0e HAL_GPIO_WritePin(GPIOB, A5_Pin, GPIO_PIN_RESET); 80013e2: 4b79 ldr r3, [pc, #484] ; (80015c8 ) 80013e4: 2200 movs r2, #0 80013e6: 2120 movs r1, #32 80013e8: 0018 movs r0, r3 80013ea: f003 fb90 bl 8004b0e break; 80013ee: e013 b.n 8001418 case Ku50: case Ku500: // 50, 500 HAL_GPIO_WritePin(GPIOB, (A5_Pin | A6_Pin), GPIO_PIN_SET); 80013f0: 4b75 ldr r3, [pc, #468] ; (80015c8 ) 80013f2: 2201 movs r2, #1 80013f4: 2160 movs r1, #96 ; 0x60 80013f6: 0018 movs r0, r3 80013f8: f003 fb89 bl 8004b0e HAL_GPIO_WritePin(GPIOB, A4_Pin, GPIO_PIN_RESET); 80013fc: 4b72 ldr r3, [pc, #456] ; (80015c8 ) 80013fe: 2200 movs r2, #0 8001400: 2110 movs r1, #16 8001402: 0018 movs r0, r3 8001404: f003 fb83 bl 8004b0e break; 8001408: e006 b.n 8001418 case Ku100: case Ku1000: // 100, 1000 HAL_GPIO_WritePin(GPIOB, (A4_Pin | A5_Pin | A6_Pin), GPIO_PIN_SET); 800140a: 4b6f ldr r3, [pc, #444] ; (80015c8 ) 800140c: 2201 movs r2, #1 800140e: 2170 movs r1, #112 ; 0x70 8001410: 0018 movs r0, r3 8001412: f003 fb7c bl 8004b0e break; 8001416: 46c0 nop ; (mov r8, r8) } if(clbr) 8001418: 4b6d ldr r3, [pc, #436] ; (80015d0 ) 800141a: 781b ldrb r3, [r3, #0] 800141c: b2db uxtb r3, r3 800141e: 2b00 cmp r3, #0 8001420: d015 beq.n 800144e { HAL_GPIO_WritePin(GPIOB, (A7_Pin | A8_Pin), GPIO_PIN_SET); //HP 2HZ 8001422: 23c0 movs r3, #192 ; 0xc0 8001424: 005b lsls r3, r3, #1 8001426: 4868 ldr r0, [pc, #416] ; (80015c8 ) 8001428: 2201 movs r2, #1 800142a: 0019 movs r1, r3 800142c: f003 fb6f bl 8004b0e HAL_GPIO_WritePin(GPIOB, A9_Pin, GPIO_PIN_RESET); //HP 2HZ 8001430: 2380 movs r3, #128 ; 0x80 8001432: 009b lsls r3, r3, #2 8001434: 4864 ldr r0, [pc, #400] ; (80015c8 ) 8001436: 2200 movs r2, #0 8001438: 0019 movs r1, r3 800143a: f003 fb68 bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin | A12_Pin), GPIO_PIN_SET); //LP 100kHz 800143e: 23e0 movs r3, #224 ; 0xe0 8001440: 015b lsls r3, r3, #5 8001442: 4861 ldr r0, [pc, #388] ; (80015c8 ) 8001444: 2201 movs r2, #1 8001446: 0019 movs r1, r3 8001448: f003 fb61 bl 8004b0e 800144c: e0ce b.n 80015ec } else { switch(pardata.IFV) // HPF 800144e: 4b5d ldr r3, [pc, #372] ; (80015c4 ) 8001450: 891b ldrh r3, [r3, #8] 8001452: b29b uxth r3, r3 8001454: 2b04 cmp r3, #4 8001456: d847 bhi.n 80014e8 8001458: 009a lsls r2, r3, #2 800145a: 4b5e ldr r3, [pc, #376] ; (80015d4 ) 800145c: 18d3 adds r3, r2, r3 800145e: 681b ldr r3, [r3, #0] 8001460: 469f mov pc, r3 { case Hp0_2: // 0,2 Hz HAL_GPIO_WritePin(GPIOB, (A7_Pin | A8_Pin | A9_Pin), GPIO_PIN_RESET); 8001462: 23e0 movs r3, #224 ; 0xe0 8001464: 009b lsls r3, r3, #2 8001466: 4858 ldr r0, [pc, #352] ; (80015c8 ) 8001468: 2200 movs r2, #0 800146a: 0019 movs r1, r3 800146c: f003 fb4f bl 8004b0e break; 8001470: e03a b.n 80014e8 case Hp0_3: // 0,3 Hz HAL_GPIO_WritePin(GPIOB, A7_Pin, GPIO_PIN_SET); 8001472: 4b55 ldr r3, [pc, #340] ; (80015c8 ) 8001474: 2201 movs r2, #1 8001476: 2180 movs r1, #128 ; 0x80 8001478: 0018 movs r0, r3 800147a: f003 fb48 bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A8_Pin | A9_Pin), GPIO_PIN_RESET); 800147e: 23c0 movs r3, #192 ; 0xc0 8001480: 009b lsls r3, r3, #2 8001482: 4851 ldr r0, [pc, #324] ; (80015c8 ) 8001484: 2200 movs r2, #0 8001486: 0019 movs r1, r3 8001488: f003 fb41 bl 8004b0e break; 800148c: e02c b.n 80014e8 case Hp1: // 1 Hz HAL_GPIO_WritePin(GPIOB, A8_Pin, GPIO_PIN_SET); 800148e: 2380 movs r3, #128 ; 0x80 8001490: 005b lsls r3, r3, #1 8001492: 484d ldr r0, [pc, #308] ; (80015c8 ) 8001494: 2201 movs r2, #1 8001496: 0019 movs r1, r3 8001498: f003 fb39 bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A7_Pin | A9_Pin), GPIO_PIN_RESET); 800149c: 23a0 movs r3, #160 ; 0xa0 800149e: 009b lsls r3, r3, #2 80014a0: 4849 ldr r0, [pc, #292] ; (80015c8 ) 80014a2: 2200 movs r2, #0 80014a4: 0019 movs r1, r3 80014a6: f003 fb32 bl 8004b0e break; 80014aa: e01d b.n 80014e8 case Hp2: // 2 Hz HAL_GPIO_WritePin(GPIOB, (A7_Pin | A8_Pin), GPIO_PIN_SET); 80014ac: 23c0 movs r3, #192 ; 0xc0 80014ae: 005b lsls r3, r3, #1 80014b0: 4845 ldr r0, [pc, #276] ; (80015c8 ) 80014b2: 2201 movs r2, #1 80014b4: 0019 movs r1, r3 80014b6: f003 fb2a bl 8004b0e HAL_GPIO_WritePin(GPIOB, A9_Pin, GPIO_PIN_RESET); 80014ba: 2380 movs r3, #128 ; 0x80 80014bc: 009b lsls r3, r3, #2 80014be: 4842 ldr r0, [pc, #264] ; (80015c8 ) 80014c0: 2200 movs r2, #0 80014c2: 0019 movs r1, r3 80014c4: f003 fb23 bl 8004b0e break; 80014c8: e00e b.n 80014e8 case Hp10: // 10 Hz HAL_GPIO_WritePin(GPIOB, A9_Pin, GPIO_PIN_SET); 80014ca: 2380 movs r3, #128 ; 0x80 80014cc: 009b lsls r3, r3, #2 80014ce: 483e ldr r0, [pc, #248] ; (80015c8 ) 80014d0: 2201 movs r2, #1 80014d2: 0019 movs r1, r3 80014d4: f003 fb1b bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A7_Pin | A8_Pin), GPIO_PIN_RESET); 80014d8: 23c0 movs r3, #192 ; 0xc0 80014da: 005b lsls r3, r3, #1 80014dc: 483a ldr r0, [pc, #232] ; (80015c8 ) 80014de: 2200 movs r2, #0 80014e0: 0019 movs r1, r3 80014e2: f003 fb14 bl 8004b0e break; 80014e6: 46c0 nop ; (mov r8, r8) } switch(pardata.IFN) //LPF 80014e8: 4b36 ldr r3, [pc, #216] ; (80015c4 ) 80014ea: 895b ldrh r3, [r3, #10] 80014ec: b29b uxth r3, r3 80014ee: 2b07 cmp r3, #7 80014f0: d900 bls.n 80014f4 80014f2: e07b b.n 80015ec 80014f4: 009a lsls r2, r3, #2 80014f6: 4b38 ldr r3, [pc, #224] ; (80015d8 ) 80014f8: 18d3 adds r3, r2, r3 80014fa: 681b ldr r3, [r3, #0] 80014fc: 469f mov pc, r3 { case Lp200: // 200 Hz HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin | A12_Pin), GPIO_PIN_RESET); 80014fe: 23e0 movs r3, #224 ; 0xe0 8001500: 015b lsls r3, r3, #5 8001502: 4831 ldr r0, [pc, #196] ; (80015c8 ) 8001504: 2200 movs r2, #0 8001506: 0019 movs r1, r3 8001508: f003 fb01 bl 8004b0e break; // 500 Hz 800150c: e06e b.n 80015ec case Lp500: HAL_GPIO_WritePin(GPIOB, A10_Pin, GPIO_PIN_SET); 800150e: 2380 movs r3, #128 ; 0x80 8001510: 00db lsls r3, r3, #3 8001512: 482d ldr r0, [pc, #180] ; (80015c8 ) 8001514: 2201 movs r2, #1 8001516: 0019 movs r1, r3 8001518: f003 faf9 bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A11_Pin | A12_Pin), GPIO_PIN_RESET); 800151c: 23c0 movs r3, #192 ; 0xc0 800151e: 015b lsls r3, r3, #5 8001520: 4829 ldr r0, [pc, #164] ; (80015c8 ) 8001522: 2200 movs r2, #0 8001524: 0019 movs r1, r3 8001526: f003 faf2 bl 8004b0e break; 800152a: e05f b.n 80015ec case Lp1000: // 1 kHz HAL_GPIO_WritePin(GPIOB, A11_Pin, GPIO_PIN_SET); 800152c: 2380 movs r3, #128 ; 0x80 800152e: 011b lsls r3, r3, #4 8001530: 4825 ldr r0, [pc, #148] ; (80015c8 ) 8001532: 2201 movs r2, #1 8001534: 0019 movs r1, r3 8001536: f003 faea bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A10_Pin | A12_Pin), GPIO_PIN_RESET); 800153a: 23a0 movs r3, #160 ; 0xa0 800153c: 015b lsls r3, r3, #5 800153e: 4822 ldr r0, [pc, #136] ; (80015c8 ) 8001540: 2200 movs r2, #0 8001542: 0019 movs r1, r3 8001544: f003 fae3 bl 8004b0e break; 8001548: e050 b.n 80015ec case Lp5000: // 5 kHz HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin), GPIO_PIN_SET); 800154a: 23c0 movs r3, #192 ; 0xc0 800154c: 011b lsls r3, r3, #4 800154e: 481e ldr r0, [pc, #120] ; (80015c8 ) 8001550: 2201 movs r2, #1 8001552: 0019 movs r1, r3 8001554: f003 fadb bl 8004b0e HAL_GPIO_WritePin(GPIOB, A12_Pin, GPIO_PIN_RESET); 8001558: 2380 movs r3, #128 ; 0x80 800155a: 015b lsls r3, r3, #5 800155c: 481a ldr r0, [pc, #104] ; (80015c8 ) 800155e: 2200 movs r2, #0 8001560: 0019 movs r1, r3 8001562: f003 fad4 bl 8004b0e break; 8001566: e041 b.n 80015ec case Lp10000: // 10 kHz HAL_GPIO_WritePin(GPIOB, A12_Pin, GPIO_PIN_SET); 8001568: 2380 movs r3, #128 ; 0x80 800156a: 015b lsls r3, r3, #5 800156c: 4816 ldr r0, [pc, #88] ; (80015c8 ) 800156e: 2201 movs r2, #1 8001570: 0019 movs r1, r3 8001572: f003 facc bl 8004b0e HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin), GPIO_PIN_RESET); 8001576: 23c0 movs r3, #192 ; 0xc0 8001578: 011b lsls r3, r3, #4 800157a: 4813 ldr r0, [pc, #76] ; (80015c8 ) 800157c: 2200 movs r2, #0 800157e: 0019 movs r1, r3 8001580: f003 fac5 bl 8004b0e break; 8001584: e032 b.n 80015ec case Lp20000: // 20 kHz HAL_GPIO_WritePin(GPIOB, (A12_Pin | A10_Pin), GPIO_PIN_SET); 8001586: 23a0 movs r3, #160 ; 0xa0 8001588: 015b lsls r3, r3, #5 800158a: 480f ldr r0, [pc, #60] ; (80015c8 ) 800158c: 2201 movs r2, #1 800158e: 0019 movs r1, r3 8001590: f003 fabd bl 8004b0e HAL_GPIO_WritePin(GPIOB, A11_Pin, GPIO_PIN_RESET); 8001594: 2380 movs r3, #128 ; 0x80 8001596: 011b lsls r3, r3, #4 8001598: 480b ldr r0, [pc, #44] ; (80015c8 ) 800159a: 2200 movs r2, #0 800159c: 0019 movs r1, r3 800159e: f003 fab6 bl 8004b0e break; 80015a2: e023 b.n 80015ec case Lp50000: // 50 kHz HAL_GPIO_WritePin(GPIOB, (A12_Pin | A11_Pin), GPIO_PIN_SET); 80015a4: 23c0 movs r3, #192 ; 0xc0 80015a6: 015b lsls r3, r3, #5 80015a8: 4807 ldr r0, [pc, #28] ; (80015c8 ) 80015aa: 2201 movs r2, #1 80015ac: 0019 movs r1, r3 80015ae: f003 faae bl 8004b0e HAL_GPIO_WritePin(GPIOB, A10_Pin, GPIO_PIN_RESET); 80015b2: 2380 movs r3, #128 ; 0x80 80015b4: 00db lsls r3, r3, #3 80015b6: 4804 ldr r0, [pc, #16] ; (80015c8 ) 80015b8: 2200 movs r2, #0 80015ba: 0019 movs r1, r3 80015bc: f003 faa7 bl 8004b0e break; 80015c0: e014 b.n 80015ec 80015c2: 46c0 nop ; (mov r8, r8) 80015c4: 20000098 .word 0x20000098 80015c8: 50000400 .word 0x50000400 80015cc: 080070a8 .word 0x080070a8 80015d0: 20000034 .word 0x20000034 80015d4: 080070dc .word 0x080070dc 80015d8: 080070f0 .word 0x080070f0 case Lp100000: // 100 kHz HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin | A12_Pin), GPIO_PIN_SET); 80015dc: 23e0 movs r3, #224 ; 0xe0 80015de: 015b lsls r3, r3, #5 80015e0: 48a6 ldr r0, [pc, #664] ; (800187c ) 80015e2: 2201 movs r2, #1 80015e4: 0019 movs r1, r3 80015e6: f003 fa92 bl 8004b0e break; 80015ea: 46c0 nop ; (mov r8, r8) } } fKU = (float) CorrWord[pardata.IIN][pardata.IKU]; 80015ec: 4ba4 ldr r3, [pc, #656] ; (8001880 ) 80015ee: 88db ldrh r3, [r3, #6] 80015f0: b29b uxth r3, r3 80015f2: 0019 movs r1, r3 80015f4: 4ba2 ldr r3, [pc, #648] ; (8001880 ) 80015f6: 899b ldrh r3, [r3, #12] 80015f8: b29b uxth r3, r3 80015fa: 0018 movs r0, r3 80015fc: 4aa1 ldr r2, [pc, #644] ; (8001884 ) 80015fe: 000b movs r3, r1 8001600: 009b lsls r3, r3, #2 8001602: 185b adds r3, r3, r1 8001604: 009b lsls r3, r3, #2 8001606: 181b adds r3, r3, r0 8001608: 005b lsls r3, r3, #1 800160a: 5a9b ldrh r3, [r3, r2] 800160c: b29b uxth r3, r3 800160e: 0018 movs r0, r3 8001610: f7ff fc6c bl 8000eec <__aeabi_ui2f> 8001614: 1c03 adds r3, r0, #0 8001616: 607b str r3, [r7, #4] if(DVD > 0xfff) { DVD = 0xfff; } */ if (pardata.SENS>=0.0001&&pardata.SENS<0.001) {OffsetKuDisplay=0; kNormToDAC=pardata.SENS*10000;} // òàêèå çíà÷åíèÿ íå äîïóñòèìû 8001618: 4b99 ldr r3, [pc, #612] ; (8001880 ) 800161a: 6a1b ldr r3, [r3, #32] 800161c: 1c18 adds r0, r3, #0 800161e: f7ff fdab bl 8001178 <__aeabi_f2d> 8001622: 4a99 ldr r2, [pc, #612] ; (8001888 ) 8001624: 4b99 ldr r3, [pc, #612] ; (800188c ) 8001626: f7fe fe2f bl 8000288 <__aeabi_dcmpge> 800162a: 1e03 subs r3, r0, #0 800162c: d018 beq.n 8001660 800162e: 4b94 ldr r3, [pc, #592] ; (8001880 ) 8001630: 6a1b ldr r3, [r3, #32] 8001632: 1c18 adds r0, r3, #0 8001634: f7ff fda0 bl 8001178 <__aeabi_f2d> 8001638: 4a95 ldr r2, [pc, #596] ; (8001890 ) 800163a: 4b96 ldr r3, [pc, #600] ; (8001894 ) 800163c: f7fe fe06 bl 800024c <__aeabi_dcmplt> 8001640: 1e03 subs r3, r0, #0 8001642: d00d beq.n 8001660 8001644: 4b94 ldr r3, [pc, #592] ; (8001898 ) 8001646: 2200 movs r2, #0 8001648: 601a str r2, [r3, #0] 800164a: 4b8d ldr r3, [pc, #564] ; (8001880 ) 800164c: 6a1b ldr r3, [r3, #32] 800164e: 4993 ldr r1, [pc, #588] ; (800189c ) 8001650: 1c18 adds r0, r3, #0 8001652: f7ff f96f bl 8000934 <__aeabi_fmul> 8001656: 1c03 adds r3, r0, #0 8001658: 1c1a adds r2, r3, #0 800165a: 4b91 ldr r3, [pc, #580] ; (80018a0 ) 800165c: 601a str r2, [r3, #0] 800165e: e0f9 b.n 8001854 else if (pardata.SENS>=0.001&&pardata.SENS<0.01){OffsetKuDisplay=0; kNormToDAC=pardata.SENS*1000;} 8001660: 4b87 ldr r3, [pc, #540] ; (8001880 ) 8001662: 6a1b ldr r3, [r3, #32] 8001664: 1c18 adds r0, r3, #0 8001666: f7ff fd87 bl 8001178 <__aeabi_f2d> 800166a: 4a89 ldr r2, [pc, #548] ; (8001890 ) 800166c: 4b89 ldr r3, [pc, #548] ; (8001894 ) 800166e: f7fe fe0b bl 8000288 <__aeabi_dcmpge> 8001672: 1e03 subs r3, r0, #0 8001674: d018 beq.n 80016a8 8001676: 4b82 ldr r3, [pc, #520] ; (8001880 ) 8001678: 6a1b ldr r3, [r3, #32] 800167a: 1c18 adds r0, r3, #0 800167c: f7ff fd7c bl 8001178 <__aeabi_f2d> 8001680: 4a88 ldr r2, [pc, #544] ; (80018a4 ) 8001682: 4b89 ldr r3, [pc, #548] ; (80018a8 ) 8001684: f7fe fde2 bl 800024c <__aeabi_dcmplt> 8001688: 1e03 subs r3, r0, #0 800168a: d00d beq.n 80016a8 800168c: 4b82 ldr r3, [pc, #520] ; (8001898 ) 800168e: 2200 movs r2, #0 8001690: 601a str r2, [r3, #0] 8001692: 4b7b ldr r3, [pc, #492] ; (8001880 ) 8001694: 6a1b ldr r3, [r3, #32] 8001696: 4985 ldr r1, [pc, #532] ; (80018ac ) 8001698: 1c18 adds r0, r3, #0 800169a: f7ff f94b bl 8000934 <__aeabi_fmul> 800169e: 1c03 adds r3, r0, #0 80016a0: 1c1a adds r2, r3, #0 80016a2: 4b7f ldr r3, [pc, #508] ; (80018a0 ) 80016a4: 601a str r2, [r3, #0] 80016a6: e0d5 b.n 8001854 else if (pardata.SENS>=0.01&&pardata.SENS<0.1){OffsetKuDisplay=3; kNormToDAC=pardata.SENS*100;} 80016a8: 4b75 ldr r3, [pc, #468] ; (8001880 ) 80016aa: 6a1b ldr r3, [r3, #32] 80016ac: 1c18 adds r0, r3, #0 80016ae: f7ff fd63 bl 8001178 <__aeabi_f2d> 80016b2: 4a7c ldr r2, [pc, #496] ; (80018a4 ) 80016b4: 4b7c ldr r3, [pc, #496] ; (80018a8 ) 80016b6: f7fe fde7 bl 8000288 <__aeabi_dcmpge> 80016ba: 1e03 subs r3, r0, #0 80016bc: d018 beq.n 80016f0 80016be: 4b70 ldr r3, [pc, #448] ; (8001880 ) 80016c0: 6a1b ldr r3, [r3, #32] 80016c2: 1c18 adds r0, r3, #0 80016c4: f7ff fd58 bl 8001178 <__aeabi_f2d> 80016c8: 4a79 ldr r2, [pc, #484] ; (80018b0 ) 80016ca: 4b7a ldr r3, [pc, #488] ; (80018b4 ) 80016cc: f7fe fdbe bl 800024c <__aeabi_dcmplt> 80016d0: 1e03 subs r3, r0, #0 80016d2: d00d beq.n 80016f0 80016d4: 4b70 ldr r3, [pc, #448] ; (8001898 ) 80016d6: 2203 movs r2, #3 80016d8: 601a str r2, [r3, #0] 80016da: 4b69 ldr r3, [pc, #420] ; (8001880 ) 80016dc: 6a1b ldr r3, [r3, #32] 80016de: 4976 ldr r1, [pc, #472] ; (80018b8 ) 80016e0: 1c18 adds r0, r3, #0 80016e2: f7ff f927 bl 8000934 <__aeabi_fmul> 80016e6: 1c03 adds r3, r0, #0 80016e8: 1c1a adds r2, r3, #0 80016ea: 4b6d ldr r3, [pc, #436] ; (80018a0 ) 80016ec: 601a str r2, [r3, #0] 80016ee: e0b1 b.n 8001854 else if (pardata.SENS>=0.1&&pardata.SENS<1){OffsetKuDisplay=6; kNormToDAC=pardata.SENS*10;} 80016f0: 4b63 ldr r3, [pc, #396] ; (8001880 ) 80016f2: 6a1b ldr r3, [r3, #32] 80016f4: 1c18 adds r0, r3, #0 80016f6: f7ff fd3f bl 8001178 <__aeabi_f2d> 80016fa: 4a6d ldr r2, [pc, #436] ; (80018b0 ) 80016fc: 4b6d ldr r3, [pc, #436] ; (80018b4 ) 80016fe: f7fe fdc3 bl 8000288 <__aeabi_dcmpge> 8001702: 1e03 subs r3, r0, #0 8001704: d016 beq.n 8001734 8001706: 4b5e ldr r3, [pc, #376] ; (8001880 ) 8001708: 6a1b ldr r3, [r3, #32] 800170a: 21fe movs r1, #254 ; 0xfe 800170c: 0589 lsls r1, r1, #22 800170e: 1c18 adds r0, r3, #0 8001710: f7fe fdd6 bl 80002c0 <__aeabi_fcmplt> 8001714: 1e03 subs r3, r0, #0 8001716: d00d beq.n 8001734 8001718: 4b5f ldr r3, [pc, #380] ; (8001898 ) 800171a: 2206 movs r2, #6 800171c: 601a str r2, [r3, #0] 800171e: 4b58 ldr r3, [pc, #352] ; (8001880 ) 8001720: 6a1b ldr r3, [r3, #32] 8001722: 4966 ldr r1, [pc, #408] ; (80018bc ) 8001724: 1c18 adds r0, r3, #0 8001726: f7ff f905 bl 8000934 <__aeabi_fmul> 800172a: 1c03 adds r3, r0, #0 800172c: 1c1a adds r2, r3, #0 800172e: 4b5c ldr r3, [pc, #368] ; (80018a0 ) 8001730: 601a str r2, [r3, #0] 8001732: e08f b.n 8001854 else if (pardata.SENS>=1&&pardata.SENS<10){OffsetKuDisplay=9; kNormToDAC=pardata.SENS/1;} 8001734: 4b52 ldr r3, [pc, #328] ; (8001880 ) 8001736: 6a1b ldr r3, [r3, #32] 8001738: 21fe movs r1, #254 ; 0xfe 800173a: 0589 lsls r1, r1, #22 800173c: 1c18 adds r0, r3, #0 800173e: f7fe fddd bl 80002fc <__aeabi_fcmpge> 8001742: 1e03 subs r3, r0, #0 8001744: d00f beq.n 8001766 8001746: 4b4e ldr r3, [pc, #312] ; (8001880 ) 8001748: 6a1b ldr r3, [r3, #32] 800174a: 495c ldr r1, [pc, #368] ; (80018bc ) 800174c: 1c18 adds r0, r3, #0 800174e: f7fe fdb7 bl 80002c0 <__aeabi_fcmplt> 8001752: 1e03 subs r3, r0, #0 8001754: d007 beq.n 8001766 8001756: 4b50 ldr r3, [pc, #320] ; (8001898 ) 8001758: 2209 movs r2, #9 800175a: 601a str r2, [r3, #0] 800175c: 4b48 ldr r3, [pc, #288] ; (8001880 ) 800175e: 6a1a ldr r2, [r3, #32] 8001760: 4b4f ldr r3, [pc, #316] ; (80018a0 ) 8001762: 601a str r2, [r3, #0] 8001764: e076 b.n 8001854 else if (pardata.SENS>=10&&pardata.SENS<100){OffsetKuDisplay=12; kNormToDAC=pardata.SENS/10;} 8001766: 4b46 ldr r3, [pc, #280] ; (8001880 ) 8001768: 6a1b ldr r3, [r3, #32] 800176a: 4954 ldr r1, [pc, #336] ; (80018bc ) 800176c: 1c18 adds r0, r3, #0 800176e: f7fe fdc5 bl 80002fc <__aeabi_fcmpge> 8001772: 1e03 subs r3, r0, #0 8001774: d015 beq.n 80017a2 8001776: 4b42 ldr r3, [pc, #264] ; (8001880 ) 8001778: 6a1b ldr r3, [r3, #32] 800177a: 494f ldr r1, [pc, #316] ; (80018b8 ) 800177c: 1c18 adds r0, r3, #0 800177e: f7fe fd9f bl 80002c0 <__aeabi_fcmplt> 8001782: 1e03 subs r3, r0, #0 8001784: d00d beq.n 80017a2 8001786: 4b44 ldr r3, [pc, #272] ; (8001898 ) 8001788: 220c movs r2, #12 800178a: 601a str r2, [r3, #0] 800178c: 4b3c ldr r3, [pc, #240] ; (8001880 ) 800178e: 6a1b ldr r3, [r3, #32] 8001790: 494a ldr r1, [pc, #296] ; (80018bc ) 8001792: 1c18 adds r0, r3, #0 8001794: f7fe fede bl 8000554 <__aeabi_fdiv> 8001798: 1c03 adds r3, r0, #0 800179a: 1c1a adds r2, r3, #0 800179c: 4b40 ldr r3, [pc, #256] ; (80018a0 ) 800179e: 601a str r2, [r3, #0] 80017a0: e058 b.n 8001854 else if (pardata.SENS>=100&&pardata.SENS<1000){OffsetKuDisplay=15; kNormToDAC=pardata.SENS/100;} 80017a2: 4b37 ldr r3, [pc, #220] ; (8001880 ) 80017a4: 6a1b ldr r3, [r3, #32] 80017a6: 4944 ldr r1, [pc, #272] ; (80018b8 ) 80017a8: 1c18 adds r0, r3, #0 80017aa: f7fe fda7 bl 80002fc <__aeabi_fcmpge> 80017ae: 1e03 subs r3, r0, #0 80017b0: d015 beq.n 80017de 80017b2: 4b33 ldr r3, [pc, #204] ; (8001880 ) 80017b4: 6a1b ldr r3, [r3, #32] 80017b6: 493d ldr r1, [pc, #244] ; (80018ac ) 80017b8: 1c18 adds r0, r3, #0 80017ba: f7fe fd81 bl 80002c0 <__aeabi_fcmplt> 80017be: 1e03 subs r3, r0, #0 80017c0: d00d beq.n 80017de 80017c2: 4b35 ldr r3, [pc, #212] ; (8001898 ) 80017c4: 220f movs r2, #15 80017c6: 601a str r2, [r3, #0] 80017c8: 4b2d ldr r3, [pc, #180] ; (8001880 ) 80017ca: 6a1b ldr r3, [r3, #32] 80017cc: 493a ldr r1, [pc, #232] ; (80018b8 ) 80017ce: 1c18 adds r0, r3, #0 80017d0: f7fe fec0 bl 8000554 <__aeabi_fdiv> 80017d4: 1c03 adds r3, r0, #0 80017d6: 1c1a adds r2, r3, #0 80017d8: 4b31 ldr r3, [pc, #196] ; (80018a0 ) 80017da: 601a str r2, [r3, #0] 80017dc: e03a b.n 8001854 else if (pardata.SENS>=1000&&pardata.SENS<10000){OffsetKuDisplay=18; kNormToDAC=pardata.SENS/1000;} 80017de: 4b28 ldr r3, [pc, #160] ; (8001880 ) 80017e0: 6a1b ldr r3, [r3, #32] 80017e2: 4932 ldr r1, [pc, #200] ; (80018ac ) 80017e4: 1c18 adds r0, r3, #0 80017e6: f7fe fd89 bl 80002fc <__aeabi_fcmpge> 80017ea: 1e03 subs r3, r0, #0 80017ec: d015 beq.n 800181a 80017ee: 4b24 ldr r3, [pc, #144] ; (8001880 ) 80017f0: 6a1b ldr r3, [r3, #32] 80017f2: 492a ldr r1, [pc, #168] ; (800189c ) 80017f4: 1c18 adds r0, r3, #0 80017f6: f7fe fd63 bl 80002c0 <__aeabi_fcmplt> 80017fa: 1e03 subs r3, r0, #0 80017fc: d00d beq.n 800181a 80017fe: 4b26 ldr r3, [pc, #152] ; (8001898 ) 8001800: 2212 movs r2, #18 8001802: 601a str r2, [r3, #0] 8001804: 4b1e ldr r3, [pc, #120] ; (8001880 ) 8001806: 6a1b ldr r3, [r3, #32] 8001808: 4928 ldr r1, [pc, #160] ; (80018ac ) 800180a: 1c18 adds r0, r3, #0 800180c: f7fe fea2 bl 8000554 <__aeabi_fdiv> 8001810: 1c03 adds r3, r0, #0 8001812: 1c1a adds r2, r3, #0 8001814: 4b22 ldr r3, [pc, #136] ; (80018a0 ) 8001816: 601a str r2, [r3, #0] 8001818: e01c b.n 8001854 else if (pardata.SENS>=10000&&pardata.SENS<100000){OffsetKuDisplay=21; kNormToDAC=pardata.SENS/10000;} 800181a: 4b19 ldr r3, [pc, #100] ; (8001880 ) 800181c: 6a1b ldr r3, [r3, #32] 800181e: 491f ldr r1, [pc, #124] ; (800189c ) 8001820: 1c18 adds r0, r3, #0 8001822: f7fe fd6b bl 80002fc <__aeabi_fcmpge> 8001826: 1e03 subs r3, r0, #0 8001828: d014 beq.n 8001854 800182a: 4b15 ldr r3, [pc, #84] ; (8001880 ) 800182c: 6a1b ldr r3, [r3, #32] 800182e: 4924 ldr r1, [pc, #144] ; (80018c0 ) 8001830: 1c18 adds r0, r3, #0 8001832: f7fe fd45 bl 80002c0 <__aeabi_fcmplt> 8001836: 1e03 subs r3, r0, #0 8001838: d00c beq.n 8001854 800183a: 4b17 ldr r3, [pc, #92] ; (8001898 ) 800183c: 2215 movs r2, #21 800183e: 601a str r2, [r3, #0] 8001840: 4b0f ldr r3, [pc, #60] ; (8001880 ) 8001842: 6a1b ldr r3, [r3, #32] 8001844: 4915 ldr r1, [pc, #84] ; (800189c ) 8001846: 1c18 adds r0, r3, #0 8001848: f7fe fe84 bl 8000554 <__aeabi_fdiv> 800184c: 1c03 adds r3, r0, #0 800184e: 1c1a adds r2, r3, #0 8001850: 4b13 ldr r3, [pc, #76] ; (80018a0 ) 8001852: 601a str r2, [r3, #0] //void setDAC(void) //from 1210 DVD = fKU/kNormToDAC; // Äåëèì êîðåêòèðîâî÷ííûé ìíîæèòåëü íà êîýôèöèåíò 8001854: 4b12 ldr r3, [pc, #72] ; (80018a0 ) 8001856: 681b ldr r3, [r3, #0] 8001858: 1c19 adds r1, r3, #0 800185a: 6878 ldr r0, [r7, #4] 800185c: f7fe fe7a bl 8000554 <__aeabi_fdiv> 8001860: 1c03 adds r3, r0, #0 8001862: 1c18 adds r0, r3, #0 8001864: f7fe fd9e bl 80003a4 <__aeabi_f2uiz> 8001868: 0003 movs r3, r0 800186a: b29a uxth r2, r3 800186c: 4b15 ldr r3, [pc, #84] ; (80018c4 ) 800186e: 801a strh r2, [r3, #0] WRDAC(); 8001870: f000 f8f6 bl 8001a60 // Load RDAC } 8001874: 46c0 nop ; (mov r8, r8) 8001876: 46bd mov sp, r7 8001878: b002 add sp, #8 800187a: bd80 pop {r7, pc} 800187c: 50000400 .word 0x50000400 8001880: 20000098 .word 0x20000098 8001884: 20000048 .word 0x20000048 8001888: eb1c432d .word 0xeb1c432d 800188c: 3f1a36e2 .word 0x3f1a36e2 8001890: d2f1a9fc .word 0xd2f1a9fc 8001894: 3f50624d .word 0x3f50624d 8001898: 2000003c .word 0x2000003c 800189c: 461c4000 .word 0x461c4000 80018a0: 20000044 .word 0x20000044 80018a4: 47ae147b .word 0x47ae147b 80018a8: 3f847ae1 .word 0x3f847ae1 80018ac: 447a0000 .word 0x447a0000 80018b0: 9999999a .word 0x9999999a 80018b4: 3fb99999 .word 0x3fb99999 80018b8: 42c80000 .word 0x42c80000 80018bc: 41200000 .word 0x41200000 80018c0: 47c35000 .word 0x47c35000 80018c4: 20000040 .word 0x20000040 080018c8 : void initCalibr(void) { 80018c8: b580 push {r7, lr} 80018ca: af00 add r7, sp, #0 pardata.IKE = 0; 80018cc: 4b60 ldr r3, [pc, #384] ; (8001a50 ) 80018ce: 2200 movs r2, #0 80018d0: 81da strh r2, [r3, #14] pardata.IKD = 0; 80018d2: 4b5f ldr r3, [pc, #380] ; (8001a50 ) 80018d4: 2200 movs r2, #0 80018d6: 821a strh r2, [r3, #16] pardata.IKS = 1; 80018d8: 4b5d ldr r3, [pc, #372] ; (8001a50 ) 80018da: 2201 movs r2, #1 80018dc: 825a strh r2, [r3, #18] pardata.IFV = Hp1; 80018de: 4b5c ldr r3, [pc, #368] ; (8001a50 ) 80018e0: 2202 movs r2, #2 80018e2: 811a strh r2, [r3, #8] pardata.IFN = Lp100000; 80018e4: 4b5a ldr r3, [pc, #360] ; (8001a50 ) 80018e6: 2207 movs r2, #7 80018e8: 815a strh r2, [r3, #10] switch(faseClbr) 80018ea: 4b5a ldr r3, [pc, #360] ; (8001a54 ) 80018ec: 681b ldr r3, [r3, #0] 80018ee: 2b16 cmp r3, #22 80018f0: d900 bls.n 80018f4 80018f2: e0a5 b.n 8001a40 80018f4: 009a lsls r2, r3, #2 80018f6: 4b58 ldr r3, [pc, #352] ; (8001a58 ) 80018f8: 18d3 adds r3, r2, r3 80018fa: 681b ldr r3, [r3, #0] 80018fc: 469f mov pc, r3 { case 0: // CHARGE 0.1 pardata.IIN = CHARGE; 80018fe: 4b54 ldr r3, [pc, #336] ; (8001a50 ) 8001900: 2200 movs r2, #0 8001902: 80da strh r2, [r3, #6] pardata.IKU = Ku0_1; 8001904: 4b52 ldr r3, [pc, #328] ; (8001a50 ) 8001906: 2200 movs r2, #0 8001908: 819a strh r2, [r3, #12] break; 800190a: e099 b.n 8001a40 case 1: // CHARGE 0.2 pardata.IIN = CHARGE; 800190c: 4b50 ldr r3, [pc, #320] ; (8001a50 ) 800190e: 2200 movs r2, #0 8001910: 80da strh r2, [r3, #6] pardata.IKU = Ku0_2; 8001912: 4b4f ldr r3, [pc, #316] ; (8001a50 ) 8001914: 2201 movs r2, #1 8001916: 819a strh r2, [r3, #12] break; 8001918: e092 b.n 8001a40 case 2: // CHARGE 0.5 pardata.IIN = CHARGE; 800191a: 4b4d ldr r3, [pc, #308] ; (8001a50 ) 800191c: 2200 movs r2, #0 800191e: 80da strh r2, [r3, #6] pardata.IKU = Ku0_5; 8001920: 4b4b ldr r3, [pc, #300] ; (8001a50 ) 8001922: 2202 movs r2, #2 8001924: 819a strh r2, [r3, #12] break; 8001926: e08b b.n 8001a40 case 3: // CHARGE 1 pardata.IIN = CHARGE; 8001928: 4b49 ldr r3, [pc, #292] ; (8001a50 ) 800192a: 2200 movs r2, #0 800192c: 80da strh r2, [r3, #6] pardata.IKU = Ku1; 800192e: 4b48 ldr r3, [pc, #288] ; (8001a50 ) 8001930: 2203 movs r2, #3 8001932: 819a strh r2, [r3, #12] break; 8001934: e084 b.n 8001a40 case 4: // CHARGE 2 pardata.IIN = CHARGE; 8001936: 4b46 ldr r3, [pc, #280] ; (8001a50 ) 8001938: 2200 movs r2, #0 800193a: 80da strh r2, [r3, #6] pardata.IKU = Ku2; 800193c: 4b44 ldr r3, [pc, #272] ; (8001a50 ) 800193e: 2204 movs r2, #4 8001940: 819a strh r2, [r3, #12] break; 8001942: e07d b.n 8001a40 case 5: // CHARGE 5 pardata.IIN = CHARGE; 8001944: 4b42 ldr r3, [pc, #264] ; (8001a50 ) 8001946: 2200 movs r2, #0 8001948: 80da strh r2, [r3, #6] pardata.IKU = Ku5; 800194a: 4b41 ldr r3, [pc, #260] ; (8001a50 ) 800194c: 2205 movs r2, #5 800194e: 819a strh r2, [r3, #12] break; 8001950: e076 b.n 8001a40 case 6: // CHARGE 10 pardata.IIN = CHARGE; 8001952: 4b3f ldr r3, [pc, #252] ; (8001a50 ) 8001954: 2200 movs r2, #0 8001956: 80da strh r2, [r3, #6] pardata.IKU = Ku10; 8001958: 4b3d ldr r3, [pc, #244] ; (8001a50 ) 800195a: 2206 movs r2, #6 800195c: 819a strh r2, [r3, #12] break; 800195e: e06f b.n 8001a40 case 7: // CHARGE 20 pardata.IIN = CHARGE; 8001960: 4b3b ldr r3, [pc, #236] ; (8001a50 ) 8001962: 2200 movs r2, #0 8001964: 80da strh r2, [r3, #6] pardata.IKU = Ku20; 8001966: 4b3a ldr r3, [pc, #232] ; (8001a50 ) 8001968: 2207 movs r2, #7 800196a: 819a strh r2, [r3, #12] break; 800196c: e068 b.n 8001a40 case 8: // CHARGE 50 pardata.IIN = CHARGE; 800196e: 4b38 ldr r3, [pc, #224] ; (8001a50 ) 8001970: 2200 movs r2, #0 8001972: 80da strh r2, [r3, #6] pardata.IKU = Ku50; 8001974: 4b36 ldr r3, [pc, #216] ; (8001a50 ) 8001976: 2208 movs r2, #8 8001978: 819a strh r2, [r3, #12] break; 800197a: e061 b.n 8001a40 case 9: // CHARGE 100 pardata.IIN = CHARGE; 800197c: 4b34 ldr r3, [pc, #208] ; (8001a50 ) 800197e: 2200 movs r2, #0 8001980: 80da strh r2, [r3, #6] pardata.IKU = Ku100; 8001982: 4b33 ldr r3, [pc, #204] ; (8001a50 ) 8001984: 2209 movs r2, #9 8001986: 819a strh r2, [r3, #12] break; 8001988: e05a b.n 8001a40 case 10:// CHARGE 200 pardata.IIN = CHARGE; 800198a: 4b31 ldr r3, [pc, #196] ; (8001a50 ) 800198c: 2200 movs r2, #0 800198e: 80da strh r2, [r3, #6] pardata.IKU = Ku200; 8001990: 4b2f ldr r3, [pc, #188] ; (8001a50 ) 8001992: 220a movs r2, #10 8001994: 819a strh r2, [r3, #12] break; 8001996: e053 b.n 8001a40 case 11:// CHARGE 500 pardata.IIN = CHARGE; 8001998: 4b2d ldr r3, [pc, #180] ; (8001a50 ) 800199a: 2200 movs r2, #0 800199c: 80da strh r2, [r3, #6] pardata.IKU = Ku500; 800199e: 4b2c ldr r3, [pc, #176] ; (8001a50 ) 80019a0: 220b movs r2, #11 80019a2: 819a strh r2, [r3, #12] break; 80019a4: e04c b.n 8001a40 case 12:// CHARGE 1000 pardata.IIN = CHARGE; 80019a6: 4b2a ldr r3, [pc, #168] ; (8001a50 ) 80019a8: 2200 movs r2, #0 80019aa: 80da strh r2, [r3, #6] pardata.IKU = Ku1000; 80019ac: 4b28 ldr r3, [pc, #160] ; (8001a50 ) 80019ae: 220c movs r2, #12 80019b0: 819a strh r2, [r3, #12] break; 80019b2: e045 b.n 8001a40 case 13: // ICP 1 pardata.IIN = ICP; 80019b4: 4b26 ldr r3, [pc, #152] ; (8001a50 ) 80019b6: 2201 movs r2, #1 80019b8: 80da strh r2, [r3, #6] pardata.IKU = Ku1; 80019ba: 4b25 ldr r3, [pc, #148] ; (8001a50 ) 80019bc: 2203 movs r2, #3 80019be: 819a strh r2, [r3, #12] break; 80019c0: e03e b.n 8001a40 case 14: // ICP 2 pardata.IIN = ICP; 80019c2: 4b23 ldr r3, [pc, #140] ; (8001a50 ) 80019c4: 2201 movs r2, #1 80019c6: 80da strh r2, [r3, #6] pardata.IKU = Ku2; 80019c8: 4b21 ldr r3, [pc, #132] ; (8001a50 ) 80019ca: 2204 movs r2, #4 80019cc: 819a strh r2, [r3, #12] break; 80019ce: e037 b.n 8001a40 case 15: // ICP 5 pardata.IIN = ICP; 80019d0: 4b1f ldr r3, [pc, #124] ; (8001a50 ) 80019d2: 2201 movs r2, #1 80019d4: 80da strh r2, [r3, #6] pardata.IKU = Ku5; 80019d6: 4b1e ldr r3, [pc, #120] ; (8001a50 ) 80019d8: 2205 movs r2, #5 80019da: 819a strh r2, [r3, #12] break; 80019dc: e030 b.n 8001a40 case 16: // ICP 10 pardata.IIN = ICP; 80019de: 4b1c ldr r3, [pc, #112] ; (8001a50 ) 80019e0: 2201 movs r2, #1 80019e2: 80da strh r2, [r3, #6] pardata.IKU = Ku10; 80019e4: 4b1a ldr r3, [pc, #104] ; (8001a50 ) 80019e6: 2206 movs r2, #6 80019e8: 819a strh r2, [r3, #12] break; 80019ea: e029 b.n 8001a40 case 17: // ICP 20 pardata.IIN = ICP; 80019ec: 4b18 ldr r3, [pc, #96] ; (8001a50 ) 80019ee: 2201 movs r2, #1 80019f0: 80da strh r2, [r3, #6] pardata.IKU = Ku20; 80019f2: 4b17 ldr r3, [pc, #92] ; (8001a50 ) 80019f4: 2207 movs r2, #7 80019f6: 819a strh r2, [r3, #12] break; 80019f8: e022 b.n 8001a40 case 18: // ICP 50 pardata.IIN = ICP; 80019fa: 4b15 ldr r3, [pc, #84] ; (8001a50 ) 80019fc: 2201 movs r2, #1 80019fe: 80da strh r2, [r3, #6] pardata.IKU = Ku50; 8001a00: 4b13 ldr r3, [pc, #76] ; (8001a50 ) 8001a02: 2208 movs r2, #8 8001a04: 819a strh r2, [r3, #12] break; 8001a06: e01b b.n 8001a40 case 19: // ICP 100 pardata.IIN = ICP; 8001a08: 4b11 ldr r3, [pc, #68] ; (8001a50 ) 8001a0a: 2201 movs r2, #1 8001a0c: 80da strh r2, [r3, #6] pardata.IKU = Ku100; 8001a0e: 4b10 ldr r3, [pc, #64] ; (8001a50 ) 8001a10: 2209 movs r2, #9 8001a12: 819a strh r2, [r3, #12] break; 8001a14: e014 b.n 8001a40 case 20: // ICP 200 pardata.IIN = ICP; 8001a16: 4b0e ldr r3, [pc, #56] ; (8001a50 ) 8001a18: 2201 movs r2, #1 8001a1a: 80da strh r2, [r3, #6] pardata.IKU = Ku200; 8001a1c: 4b0c ldr r3, [pc, #48] ; (8001a50 ) 8001a1e: 220a movs r2, #10 8001a20: 819a strh r2, [r3, #12] break; 8001a22: e00d b.n 8001a40 case 21: // ICP 500 pardata.IIN = ICP; 8001a24: 4b0a ldr r3, [pc, #40] ; (8001a50 ) 8001a26: 2201 movs r2, #1 8001a28: 80da strh r2, [r3, #6] pardata.IKU = Ku500; 8001a2a: 4b09 ldr r3, [pc, #36] ; (8001a50 ) 8001a2c: 220b movs r2, #11 8001a2e: 819a strh r2, [r3, #12] break; 8001a30: e006 b.n 8001a40 case 22: // ICP 1000 pardata.IIN = ICP; 8001a32: 4b07 ldr r3, [pc, #28] ; (8001a50 ) 8001a34: 2201 movs r2, #1 8001a36: 80da strh r2, [r3, #6] pardata.IKU = Ku1000; 8001a38: 4b05 ldr r3, [pc, #20] ; (8001a50 ) 8001a3a: 220c movs r2, #12 8001a3c: 819a strh r2, [r3, #12] break; 8001a3e: 46c0 nop ; (mov r8, r8) } clbr = true; 8001a40: 4b06 ldr r3, [pc, #24] ; (8001a5c ) 8001a42: 2201 movs r2, #1 8001a44: 701a strb r2, [r3, #0] SetAndCorrect(); 8001a46: f7ff fc13 bl 8001270 } 8001a4a: 46c0 nop ; (mov r8, r8) 8001a4c: 46bd mov sp, r7 8001a4e: bd80 pop {r7, pc} 8001a50: 20000098 .word 0x20000098 8001a54: 20000030 .word 0x20000030 8001a58: 08007110 .word 0x08007110 8001a5c: 20000034 .word 0x20000034 08001a60 : //****************************************************************************** // Çàïèñü â íîìèðóþùèé óñèëèòåëü //****************************************************************************** void WRDAC(void) { 8001a60: b580 push {r7, lr} 8001a62: b082 sub sp, #8 8001a64: af00 add r7, sp, #0 uint8_t i; uint16_t dvd = DVD; 8001a66: 1d3b adds r3, r7, #4 8001a68: 4a2a ldr r2, [pc, #168] ; (8001b14 ) 8001a6a: 8812 ldrh r2, [r2, #0] 8001a6c: 801a strh r2, [r3, #0] dvd <<= 4; 8001a6e: 1d3b adds r3, r7, #4 8001a70: 1d3a adds r2, r7, #4 8001a72: 8812 ldrh r2, [r2, #0] 8001a74: 0112 lsls r2, r2, #4 8001a76: 801a strh r2, [r3, #0] for(i = 0; i < 12; i++) 8001a78: 1dfb adds r3, r7, #7 8001a7a: 2200 movs r2, #0 8001a7c: 701a strb r2, [r3, #0] 8001a7e: e02b b.n 8001ad8 { if(dvd & 0x8000) 8001a80: 1d3b adds r3, r7, #4 8001a82: 2200 movs r2, #0 8001a84: 5e9b ldrsh r3, [r3, r2] 8001a86: 2b00 cmp r3, #0 8001a88: da07 bge.n 8001a9a HAL_GPIO_WritePin(GPIOB, STD_Pin, GPIO_PIN_SET); 8001a8a: 2380 movs r3, #128 ; 0x80 8001a8c: 01db lsls r3, r3, #7 8001a8e: 4822 ldr r0, [pc, #136] ; (8001b18 ) 8001a90: 2201 movs r2, #1 8001a92: 0019 movs r1, r3 8001a94: f003 f83b bl 8004b0e 8001a98: e006 b.n 8001aa8 else HAL_GPIO_WritePin(GPIOB, STD_Pin, GPIO_PIN_RESET); 8001a9a: 2380 movs r3, #128 ; 0x80 8001a9c: 01db lsls r3, r3, #7 8001a9e: 481e ldr r0, [pc, #120] ; (8001b18 ) 8001aa0: 2200 movs r2, #0 8001aa2: 0019 movs r1, r3 8001aa4: f003 f833 bl 8004b0e HAL_GPIO_WritePin(GPIOB, SCK_Pin, GPIO_PIN_RESET); 8001aa8: 2380 movs r3, #128 ; 0x80 8001aaa: 021b lsls r3, r3, #8 8001aac: 481a ldr r0, [pc, #104] ; (8001b18 ) 8001aae: 2200 movs r2, #0 8001ab0: 0019 movs r1, r3 8001ab2: f003 f82c bl 8004b0e HAL_GPIO_WritePin(GPIOB, SCK_Pin, GPIO_PIN_SET); 8001ab6: 2380 movs r3, #128 ; 0x80 8001ab8: 021b lsls r3, r3, #8 8001aba: 4817 ldr r0, [pc, #92] ; (8001b18 ) 8001abc: 2201 movs r2, #1 8001abe: 0019 movs r1, r3 8001ac0: f003 f825 bl 8004b0e dvd <<= 1; 8001ac4: 1d3a adds r2, r7, #4 8001ac6: 1d3b adds r3, r7, #4 8001ac8: 881b ldrh r3, [r3, #0] 8001aca: 18db adds r3, r3, r3 8001acc: 8013 strh r3, [r2, #0] for(i = 0; i < 12; i++) 8001ace: 1dfb adds r3, r7, #7 8001ad0: 781a ldrb r2, [r3, #0] 8001ad2: 1dfb adds r3, r7, #7 8001ad4: 3201 adds r2, #1 8001ad6: 701a strb r2, [r3, #0] 8001ad8: 1dfb adds r3, r7, #7 8001ada: 781b ldrb r3, [r3, #0] 8001adc: 2b0b cmp r3, #11 8001ade: d9cf bls.n 8001a80 } HAL_GPIO_WritePin(GPIOB, FL_Pin, GPIO_PIN_RESET); 8001ae0: 2380 movs r3, #128 ; 0x80 8001ae2: 019b lsls r3, r3, #6 8001ae4: 480c ldr r0, [pc, #48] ; (8001b18 ) 8001ae6: 2200 movs r2, #0 8001ae8: 0019 movs r1, r3 8001aea: f003 f810 bl 8004b0e HAL_GPIO_WritePin(GPIOB, FL_Pin, GPIO_PIN_SET); 8001aee: 2380 movs r3, #128 ; 0x80 8001af0: 019b lsls r3, r3, #6 8001af2: 4809 ldr r0, [pc, #36] ; (8001b18 ) 8001af4: 2201 movs r2, #1 8001af6: 0019 movs r1, r3 8001af8: f003 f809 bl 8004b0e HAL_GPIO_WritePin(GPIOB, STD_Pin, GPIO_PIN_SET); 8001afc: 2380 movs r3, #128 ; 0x80 8001afe: 01db lsls r3, r3, #7 8001b00: 4805 ldr r0, [pc, #20] ; (8001b18 ) 8001b02: 2201 movs r2, #1 8001b04: 0019 movs r1, r3 8001b06: f003 f802 bl 8004b0e } 8001b0a: 46c0 nop ; (mov r8, r8) 8001b0c: 46bd mov sp, r7 8001b0e: b002 add sp, #8 8001b10: bd80 pop {r7, pc} 8001b12: 46c0 nop ; (mov r8, r8) 8001b14: 20000040 .word 0x20000040 8001b18: 50000400 .word 0x50000400 08001b1c : void MX_FLASH_Init(void) { 8001b1c: b580 push {r7, lr} 8001b1e: af00 add r7, sp, #0 __HAL_RCC_SYSCFG_CLK_ENABLE(); 8001b20: 4b06 ldr r3, [pc, #24] ; (8001b3c ) 8001b22: 4a06 ldr r2, [pc, #24] ; (8001b3c ) 8001b24: 6b52 ldr r2, [r2, #52] ; 0x34 8001b26: 2101 movs r1, #1 8001b28: 430a orrs r2, r1 8001b2a: 635a str r2, [r3, #52] ; 0x34 rdPar(); 8001b2c: f000 f866 bl 8001bfc rdCorr(); 8001b30: f000 f97a bl 8001e28 } 8001b34: 46c0 nop ; (mov r8, r8) 8001b36: 46bd mov sp, r7 8001b38: bd80 pop {r7, pc} 8001b3a: 46c0 nop ; (mov r8, r8) 8001b3c: 40021000 .word 0x40021000 08001b40 : void wrPar(void) { 8001b40: b580 push {r7, lr} 8001b42: b084 sub sp, #16 8001b44: af00 add r7, sp, #0 uint8_t i, len; uint32_t *pData, Address; len = sizeof(UserData_TypeDef); 8001b46: 1cfb adds r3, r7, #3 8001b48: 2228 movs r2, #40 ; 0x28 8001b4a: 701a strb r2, [r3, #0] len >>= 2; 8001b4c: 1cfb adds r3, r7, #3 8001b4e: 1cfa adds r2, r7, #3 8001b50: 7812 ldrb r2, [r2, #0] 8001b52: 0892 lsrs r2, r2, #2 8001b54: 701a strb r2, [r3, #0] HAL_FLASH_Unlock(); 8001b56: f002 fbc7 bl 80042e8 FLASH_PageErase(USERPAGE); 8001b5a: 4b24 ldr r3, [pc, #144] ; (8001bec ) 8001b5c: 0018 movs r0, r3 8001b5e: f002 fd35 bl 80045cc CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); 8001b62: 4b23 ldr r3, [pc, #140] ; (8001bf0 ) 8001b64: 4a22 ldr r2, [pc, #136] ; (8001bf0 ) 8001b66: 6852 ldr r2, [r2, #4] 8001b68: 2108 movs r1, #8 8001b6a: 438a bics r2, r1 8001b6c: 605a str r2, [r3, #4] CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); 8001b6e: 4b20 ldr r3, [pc, #128] ; (8001bf0 ) 8001b70: 4a1f ldr r2, [pc, #124] ; (8001bf0 ) 8001b72: 6852 ldr r2, [r2, #4] 8001b74: 491f ldr r1, [pc, #124] ; (8001bf4 ) 8001b76: 400a ands r2, r1 8001b78: 605a str r2, [r3, #4] FLASH_WaitForLastOperation(100); 8001b7a: 2064 movs r0, #100 ; 0x64 8001b7c: f002 fc18 bl 80043b0 Address = USERPAGE; 8001b80: 4b1a ldr r3, [pc, #104] ; (8001bec ) 8001b82: 607b str r3, [r7, #4] pData = (uint32_t *) &pardata; 8001b84: 4b1c ldr r3, [pc, #112] ; (8001bf8 ) 8001b86: 60bb str r3, [r7, #8] for(i = 0; i < len; i++) 8001b88: 230f movs r3, #15 8001b8a: 18fb adds r3, r7, r3 8001b8c: 2200 movs r2, #0 8001b8e: 701a strb r2, [r3, #0] 8001b90: e012 b.n 8001bb8 { HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, *pData++); 8001b92: 68bb ldr r3, [r7, #8] 8001b94: 1d1a adds r2, r3, #4 8001b96: 60ba str r2, [r7, #8] 8001b98: 681a ldr r2, [r3, #0] 8001b9a: 687b ldr r3, [r7, #4] 8001b9c: 0019 movs r1, r3 8001b9e: 2002 movs r0, #2 8001ba0: f002 fb66 bl 8004270 Address += 4; 8001ba4: 687b ldr r3, [r7, #4] 8001ba6: 3304 adds r3, #4 8001ba8: 607b str r3, [r7, #4] for(i = 0; i < len; i++) 8001baa: 230f movs r3, #15 8001bac: 18fb adds r3, r7, r3 8001bae: 781a ldrb r2, [r3, #0] 8001bb0: 230f movs r3, #15 8001bb2: 18fb adds r3, r7, r3 8001bb4: 3201 adds r2, #1 8001bb6: 701a strb r2, [r3, #0] 8001bb8: 230f movs r3, #15 8001bba: 18fa adds r2, r7, r3 8001bbc: 1cfb adds r3, r7, #3 8001bbe: 7812 ldrb r2, [r2, #0] 8001bc0: 781b ldrb r3, [r3, #0] 8001bc2: 429a cmp r2, r3 8001bc4: d3e5 bcc.n 8001b92 } CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); 8001bc6: 4b0a ldr r3, [pc, #40] ; (8001bf0 ) 8001bc8: 4a09 ldr r2, [pc, #36] ; (8001bf0 ) 8001bca: 6852 ldr r2, [r2, #4] 8001bcc: 2108 movs r1, #8 8001bce: 438a bics r2, r1 8001bd0: 605a str r2, [r3, #4] CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); 8001bd2: 4b07 ldr r3, [pc, #28] ; (8001bf0 ) 8001bd4: 4a06 ldr r2, [pc, #24] ; (8001bf0 ) 8001bd6: 6852 ldr r2, [r2, #4] 8001bd8: 4906 ldr r1, [pc, #24] ; (8001bf4 ) 8001bda: 400a ands r2, r1 8001bdc: 605a str r2, [r3, #4] HAL_FLASH_Lock(); 8001bde: f002 fbd3 bl 8004388 } 8001be2: 46c0 nop ; (mov r8, r8) 8001be4: 46bd mov sp, r7 8001be6: b004 add sp, #16 8001be8: bd80 pop {r7, pc} 8001bea: 46c0 nop ; (mov r8, r8) 8001bec: 0801ff00 .word 0x0801ff00 8001bf0: 40022000 .word 0x40022000 8001bf4: fffffdff .word 0xfffffdff 8001bf8: 20000098 .word 0x20000098 08001bfc : void rdPar(void) { 8001bfc: b590 push {r4, r7, lr} 8001bfe: b083 sub sp, #12 8001c00: af00 add r7, sp, #0 uint8_t rewrite = 0; 8001c02: 1dfb adds r3, r7, #7 8001c04: 2200 movs r2, #0 8001c06: 701a strb r2, [r3, #0] memcpy((void *) &pardata, (void *) USERPAGE, sizeof(UserData_TypeDef)); 8001c08: 4b54 ldr r3, [pc, #336] ; (8001d5c ) 8001c0a: 4a55 ldr r2, [pc, #340] ; (8001d60 ) 8001c0c: ca13 ldmia r2!, {r0, r1, r4} 8001c0e: c313 stmia r3!, {r0, r1, r4} 8001c10: ca13 ldmia r2!, {r0, r1, r4} 8001c12: c313 stmia r3!, {r0, r1, r4} 8001c14: ca13 ldmia r2!, {r0, r1, r4} 8001c16: c313 stmia r3!, {r0, r1, r4} 8001c18: 6812 ldr r2, [r2, #0] 8001c1a: 601a str r2, [r3, #0] //pardata.OWN = 0; if((pardata.OWN != MY_ADDRESS) || (pardata.OWN == 0)) 8001c1c: 4b4f ldr r3, [pc, #316] ; (8001d5c ) 8001c1e: 881b ldrh r3, [r3, #0] 8001c20: b29b uxth r3, r3 8001c22: 2b03 cmp r3, #3 8001c24: d104 bne.n 8001c30 8001c26: 4b4d ldr r3, [pc, #308] ; (8001d5c ) 8001c28: 881b ldrh r3, [r3, #0] 8001c2a: b29b uxth r3, r3 8001c2c: 2b00 cmp r3, #0 8001c2e: d132 bne.n 8001c96 { pardata.OWN = MY_ADDRESS; 8001c30: 4b4a ldr r3, [pc, #296] ; (8001d5c ) 8001c32: 2203 movs r2, #3 8001c34: 801a strh r2, [r3, #0] pardata.BAUD = 7; //115200 8001c36: 4b49 ldr r3, [pc, #292] ; (8001d5c ) 8001c38: 2207 movs r2, #7 8001c3a: 805a strh r2, [r3, #2] pardata.INFB = 0; 8001c3c: 4b47 ldr r3, [pc, #284] ; (8001d5c ) 8001c3e: 2200 movs r2, #0 8001c40: 809a strh r2, [r3, #4] pardata.IIN = CHARGE; 8001c42: 4b46 ldr r3, [pc, #280] ; (8001d5c ) 8001c44: 2200 movs r2, #0 8001c46: 80da strh r2, [r3, #6] pardata.IFV = Hp0_2; 8001c48: 4b44 ldr r3, [pc, #272] ; (8001d5c ) 8001c4a: 2200 movs r2, #0 8001c4c: 811a strh r2, [r3, #8] pardata.IFN = Lp100000; 8001c4e: 4b43 ldr r3, [pc, #268] ; (8001d5c ) 8001c50: 2207 movs r2, #7 8001c52: 815a strh r2, [r3, #10] pardata.IKU = Ku1; 8001c54: 4b41 ldr r3, [pc, #260] ; (8001d5c ) 8001c56: 2203 movs r2, #3 8001c58: 819a strh r2, [r3, #12] pardata.IKE = 0; 8001c5a: 4b40 ldr r3, [pc, #256] ; (8001d5c ) 8001c5c: 2200 movs r2, #0 8001c5e: 81da strh r2, [r3, #14] pardata.IKD = 0; 8001c60: 4b3e ldr r3, [pc, #248] ; (8001d5c ) 8001c62: 2200 movs r2, #0 8001c64: 821a strh r2, [r3, #16] pardata.IKS = 1; 8001c66: 4b3d ldr r3, [pc, #244] ; (8001d5c ) 8001c68: 2201 movs r2, #1 8001c6a: 825a strh r2, [r3, #18] pardata.IPZ = 0; 8001c6c: 4b3b ldr r3, [pc, #236] ; (8001d5c ) 8001c6e: 2200 movs r2, #0 8001c70: 829a strh r2, [r3, #20] pardata.OPZ = 0; 8001c72: 4b3a ldr r3, [pc, #232] ; (8001d5c ) 8001c74: 2200 movs r2, #0 8001c76: 82da strh r2, [r3, #22] pardata.VAL = Accel; 8001c78: 4b38 ldr r3, [pc, #224] ; (8001d5c ) 8001c7a: 2200 movs r2, #0 8001c7c: 831a strh r2, [r3, #24] pardata.KCOND = 1.00001f; 8001c7e: 4b37 ldr r3, [pc, #220] ; (8001d5c ) 8001c80: 4a38 ldr r2, [pc, #224] ; (8001d64 ) 8001c82: 61da str r2, [r3, #28] pardata.SENS = 1.00001f; 8001c84: 4b35 ldr r3, [pc, #212] ; (8001d5c ) 8001c86: 4a37 ldr r2, [pc, #220] ; (8001d64 ) 8001c88: 621a str r2, [r3, #32] pardata.ACCEL = 10.00001f; 8001c8a: 4b34 ldr r3, [pc, #208] ; (8001d5c ) 8001c8c: 4a36 ldr r2, [pc, #216] ; (8001d68 ) 8001c8e: 625a str r2, [r3, #36] ; 0x24 rewrite = 1; 8001c90: 1dfb adds r3, r7, #7 8001c92: 2201 movs r2, #1 8001c94: 701a strb r2, [r3, #0] } if((pardata.IKE == 0) && (pardata.IKD == 0) && (pardata.IKS == 0)) { 8001c96: 4b31 ldr r3, [pc, #196] ; (8001d5c ) 8001c98: 89db ldrh r3, [r3, #14] 8001c9a: b29b uxth r3, r3 8001c9c: 2b00 cmp r3, #0 8001c9e: d115 bne.n 8001ccc 8001ca0: 4b2e ldr r3, [pc, #184] ; (8001d5c ) 8001ca2: 8a1b ldrh r3, [r3, #16] 8001ca4: b29b uxth r3, r3 8001ca6: 2b00 cmp r3, #0 8001ca8: d110 bne.n 8001ccc 8001caa: 4b2c ldr r3, [pc, #176] ; (8001d5c ) 8001cac: 8a5b ldrh r3, [r3, #18] 8001cae: b29b uxth r3, r3 8001cb0: 2b00 cmp r3, #0 8001cb2: d10b bne.n 8001ccc pardata.IKE = 0; 8001cb4: 4b29 ldr r3, [pc, #164] ; (8001d5c ) 8001cb6: 2200 movs r2, #0 8001cb8: 81da strh r2, [r3, #14] pardata.IKD = 0; 8001cba: 4b28 ldr r3, [pc, #160] ; (8001d5c ) 8001cbc: 2200 movs r2, #0 8001cbe: 821a strh r2, [r3, #16] pardata.IKS = 1; 8001cc0: 4b26 ldr r3, [pc, #152] ; (8001d5c ) 8001cc2: 2201 movs r2, #1 8001cc4: 825a strh r2, [r3, #18] rewrite = true; 8001cc6: 1dfb adds r3, r7, #7 8001cc8: 2201 movs r2, #1 8001cca: 701a strb r2, [r3, #0] } if(pardata.SENS == 0.0f) { 8001ccc: 4b23 ldr r3, [pc, #140] ; (8001d5c ) 8001cce: 6a1b ldr r3, [r3, #32] 8001cd0: 2100 movs r1, #0 8001cd2: 1c18 adds r0, r3, #0 8001cd4: f7fe faee bl 80002b4 <__aeabi_fcmpeq> 8001cd8: 1e03 subs r3, r0, #0 8001cda: d006 beq.n 8001cea pardata.SENS = 1.0f; 8001cdc: 4b1f ldr r3, [pc, #124] ; (8001d5c ) 8001cde: 22fe movs r2, #254 ; 0xfe 8001ce0: 0592 lsls r2, r2, #22 8001ce2: 621a str r2, [r3, #32] rewrite = true; 8001ce4: 1dfb adds r3, r7, #7 8001ce6: 2201 movs r2, #1 8001ce8: 701a strb r2, [r3, #0] } if(pardata.IFN > Lp100000) { 8001cea: 4b1c ldr r3, [pc, #112] ; (8001d5c ) 8001cec: 895b ldrh r3, [r3, #10] 8001cee: b29b uxth r3, r3 8001cf0: 2b07 cmp r3, #7 8001cf2: d905 bls.n 8001d00 pardata.IFN = Lp100000; 8001cf4: 4b19 ldr r3, [pc, #100] ; (8001d5c ) 8001cf6: 2207 movs r2, #7 8001cf8: 815a strh r2, [r3, #10] rewrite = true; 8001cfa: 1dfb adds r3, r7, #7 8001cfc: 2201 movs r2, #1 8001cfe: 701a strb r2, [r3, #0] } if(pardata.IFV > Hp10) { 8001d00: 4b16 ldr r3, [pc, #88] ; (8001d5c ) 8001d02: 891b ldrh r3, [r3, #8] 8001d04: b29b uxth r3, r3 8001d06: 2b04 cmp r3, #4 8001d08: d905 bls.n 8001d16 pardata.IFN = Hp10; 8001d0a: 4b14 ldr r3, [pc, #80] ; (8001d5c ) 8001d0c: 2204 movs r2, #4 8001d0e: 815a strh r2, [r3, #10] rewrite = true; 8001d10: 1dfb adds r3, r7, #7 8001d12: 2201 movs r2, #1 8001d14: 701a strb r2, [r3, #0] } if(pardata.IKU > Ku1000) { 8001d16: 4b11 ldr r3, [pc, #68] ; (8001d5c ) 8001d18: 899b ldrh r3, [r3, #12] 8001d1a: b29b uxth r3, r3 8001d1c: 2b0c cmp r3, #12 8001d1e: d905 bls.n 8001d2c pardata.IKU = Ku1000; 8001d20: 4b0e ldr r3, [pc, #56] ; (8001d5c ) 8001d22: 220c movs r2, #12 8001d24: 819a strh r2, [r3, #12] rewrite = true; 8001d26: 1dfb adds r3, r7, #7 8001d28: 2201 movs r2, #1 8001d2a: 701a strb r2, [r3, #0] } if(pardata.VAL > Nython) { 8001d2c: 4b0b ldr r3, [pc, #44] ; (8001d5c ) 8001d2e: 8b1b ldrh r3, [r3, #24] 8001d30: b29b uxth r3, r3 8001d32: 2b05 cmp r3, #5 8001d34: d905 bls.n 8001d42 pardata.VAL = Accel; 8001d36: 4b09 ldr r3, [pc, #36] ; (8001d5c ) 8001d38: 2200 movs r2, #0 8001d3a: 831a strh r2, [r3, #24] rewrite = true; 8001d3c: 1dfb adds r3, r7, #7 8001d3e: 2201 movs r2, #1 8001d40: 701a strb r2, [r3, #0] } ///////////////////////////// if(rewrite) 8001d42: 1dfb adds r3, r7, #7 8001d44: 781b ldrb r3, [r3, #0] 8001d46: 2b00 cmp r3, #0 8001d48: d004 beq.n 8001d54 { rewrite = 0; 8001d4a: 1dfb adds r3, r7, #7 8001d4c: 2200 movs r2, #0 8001d4e: 701a strb r2, [r3, #0] wrPar(); 8001d50: f7ff fef6 bl 8001b40 } ///////////////////////////// } 8001d54: 46c0 nop ; (mov r8, r8) 8001d56: 46bd mov sp, r7 8001d58: b003 add sp, #12 8001d5a: bd90 pop {r4, r7, pc} 8001d5c: 20000098 .word 0x20000098 8001d60: 0801ff00 .word 0x0801ff00 8001d64: 3f800054 .word 0x3f800054 8001d68: 4120000a .word 0x4120000a 08001d6c : void wrCorr(void) { 8001d6c: b580 push {r7, lr} 8001d6e: b084 sub sp, #16 8001d70: af00 add r7, sp, #0 uint8_t i, len; uint32_t *pData, Address; len = sizeof(CorrWord); 8001d72: 1cfb adds r3, r7, #3 8001d74: 2250 movs r2, #80 ; 0x50 8001d76: 701a strb r2, [r3, #0] len >>= 2; 8001d78: 1cfb adds r3, r7, #3 8001d7a: 1cfa adds r2, r7, #3 8001d7c: 7812 ldrb r2, [r2, #0] 8001d7e: 0892 lsrs r2, r2, #2 8001d80: 701a strb r2, [r3, #0] HAL_FLASH_Unlock(); 8001d82: f002 fab1 bl 80042e8 FLASH_PageErase(CORRPAGE); 8001d86: 4b24 ldr r3, [pc, #144] ; (8001e18 ) 8001d88: 0018 movs r0, r3 8001d8a: f002 fc1f bl 80045cc CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); 8001d8e: 4b23 ldr r3, [pc, #140] ; (8001e1c ) 8001d90: 4a22 ldr r2, [pc, #136] ; (8001e1c ) 8001d92: 6852 ldr r2, [r2, #4] 8001d94: 2108 movs r1, #8 8001d96: 438a bics r2, r1 8001d98: 605a str r2, [r3, #4] CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); 8001d9a: 4b20 ldr r3, [pc, #128] ; (8001e1c ) 8001d9c: 4a1f ldr r2, [pc, #124] ; (8001e1c ) 8001d9e: 6852 ldr r2, [r2, #4] 8001da0: 491f ldr r1, [pc, #124] ; (8001e20 ) 8001da2: 400a ands r2, r1 8001da4: 605a str r2, [r3, #4] FLASH_WaitForLastOperation(100); 8001da6: 2064 movs r0, #100 ; 0x64 8001da8: f002 fb02 bl 80043b0 Address = CORRPAGE; 8001dac: 4b1a ldr r3, [pc, #104] ; (8001e18 ) 8001dae: 607b str r3, [r7, #4] pData = (uint32_t *) &CorrWord; 8001db0: 4b1c ldr r3, [pc, #112] ; (8001e24 ) 8001db2: 60bb str r3, [r7, #8] for(i = 0; i < len; i++) 8001db4: 230f movs r3, #15 8001db6: 18fb adds r3, r7, r3 8001db8: 2200 movs r2, #0 8001dba: 701a strb r2, [r3, #0] 8001dbc: e012 b.n 8001de4 { HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, *pData++); 8001dbe: 68bb ldr r3, [r7, #8] 8001dc0: 1d1a adds r2, r3, #4 8001dc2: 60ba str r2, [r7, #8] 8001dc4: 681a ldr r2, [r3, #0] 8001dc6: 687b ldr r3, [r7, #4] 8001dc8: 0019 movs r1, r3 8001dca: 2002 movs r0, #2 8001dcc: f002 fa50 bl 8004270 Address += 4; 8001dd0: 687b ldr r3, [r7, #4] 8001dd2: 3304 adds r3, #4 8001dd4: 607b str r3, [r7, #4] for(i = 0; i < len; i++) 8001dd6: 230f movs r3, #15 8001dd8: 18fb adds r3, r7, r3 8001dda: 781a ldrb r2, [r3, #0] 8001ddc: 230f movs r3, #15 8001dde: 18fb adds r3, r7, r3 8001de0: 3201 adds r2, #1 8001de2: 701a strb r2, [r3, #0] 8001de4: 230f movs r3, #15 8001de6: 18fa adds r2, r7, r3 8001de8: 1cfb adds r3, r7, #3 8001dea: 7812 ldrb r2, [r2, #0] 8001dec: 781b ldrb r3, [r3, #0] 8001dee: 429a cmp r2, r3 8001df0: d3e5 bcc.n 8001dbe } CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); 8001df2: 4b0a ldr r3, [pc, #40] ; (8001e1c ) 8001df4: 4a09 ldr r2, [pc, #36] ; (8001e1c ) 8001df6: 6852 ldr r2, [r2, #4] 8001df8: 2108 movs r1, #8 8001dfa: 438a bics r2, r1 8001dfc: 605a str r2, [r3, #4] CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); 8001dfe: 4b07 ldr r3, [pc, #28] ; (8001e1c ) 8001e00: 4a06 ldr r2, [pc, #24] ; (8001e1c ) 8001e02: 6852 ldr r2, [r2, #4] 8001e04: 4906 ldr r1, [pc, #24] ; (8001e20 ) 8001e06: 400a ands r2, r1 8001e08: 605a str r2, [r3, #4] HAL_FLASH_Lock(); 8001e0a: f002 fabd bl 8004388 } 8001e0e: 46c0 nop ; (mov r8, r8) 8001e10: 46bd mov sp, r7 8001e12: b004 add sp, #16 8001e14: bd80 pop {r7, pc} 8001e16: 46c0 nop ; (mov r8, r8) 8001e18: 0801ff80 .word 0x0801ff80 8001e1c: 40022000 .word 0x40022000 8001e20: fffffdff .word 0xfffffdff 8001e24: 20000048 .word 0x20000048 08001e28 : void rdCorr(void) { 8001e28: b5b0 push {r4, r5, r7, lr} 8001e2a: b082 sub sp, #8 8001e2c: af00 add r7, sp, #0 uint8_t i, j; memcpy((void *) &CorrWord, (void *) CORRPAGE, sizeof(CorrWord)); 8001e2e: 4b2b ldr r3, [pc, #172] ; (8001edc ) 8001e30: 4a2b ldr r2, [pc, #172] ; (8001ee0 ) 8001e32: 0018 movs r0, r3 8001e34: 0011 movs r1, r2 8001e36: 2350 movs r3, #80 ; 0x50 8001e38: 001a movs r2, r3 8001e3a: f005 f8b7 bl 8006fac if(((CorrWord[0][0] == 0xffff) || (CorrWord[0][1] == 0xffff)) || ((CorrWord[0][0] == 0) || (CorrWord[0][1] == 0))) 8001e3e: 4b27 ldr r3, [pc, #156] ; (8001edc ) 8001e40: 881b ldrh r3, [r3, #0] 8001e42: b29b uxth r3, r3 8001e44: 4a27 ldr r2, [pc, #156] ; (8001ee4 ) 8001e46: 4293 cmp r3, r2 8001e48: d00f beq.n 8001e6a 8001e4a: 4b24 ldr r3, [pc, #144] ; (8001edc ) 8001e4c: 885b ldrh r3, [r3, #2] 8001e4e: b29b uxth r3, r3 8001e50: 4a24 ldr r2, [pc, #144] ; (8001ee4 ) 8001e52: 4293 cmp r3, r2 8001e54: d009 beq.n 8001e6a 8001e56: 4b21 ldr r3, [pc, #132] ; (8001edc ) 8001e58: 881b ldrh r3, [r3, #0] 8001e5a: b29b uxth r3, r3 8001e5c: 2b00 cmp r3, #0 8001e5e: d004 beq.n 8001e6a 8001e60: 4b1e ldr r3, [pc, #120] ; (8001edc ) 8001e62: 885b ldrh r3, [r3, #2] 8001e64: b29b uxth r3, r3 8001e66: 2b00 cmp r3, #0 8001e68: d134 bne.n 8001ed4 { for(j = 0; j < 2; j++) 8001e6a: 1dbb adds r3, r7, #6 8001e6c: 2200 movs r2, #0 8001e6e: 701a strb r2, [r3, #0] 8001e70: e02a b.n 8001ec8 { for(i = 0; i < 20; i++) { 8001e72: 1dfb adds r3, r7, #7 8001e74: 2200 movs r2, #0 8001e76: 701a strb r2, [r3, #0] 8001e78: e01d b.n 8001eb6 CorrWord[j][i] = FACTORY_CORR[j][i]; 8001e7a: 1dbb adds r3, r7, #6 8001e7c: 781a ldrb r2, [r3, #0] 8001e7e: 1dfb adds r3, r7, #7 8001e80: 7818 ldrb r0, [r3, #0] 8001e82: 1dbb adds r3, r7, #6 8001e84: 7819 ldrb r1, [r3, #0] 8001e86: 1dfb adds r3, r7, #7 8001e88: 781d ldrb r5, [r3, #0] 8001e8a: 4c17 ldr r4, [pc, #92] ; (8001ee8 ) 8001e8c: 000b movs r3, r1 8001e8e: 009b lsls r3, r3, #2 8001e90: 185b adds r3, r3, r1 8001e92: 009b lsls r3, r3, #2 8001e94: 195b adds r3, r3, r5 8001e96: 005b lsls r3, r3, #1 8001e98: 5b1c ldrh r4, [r3, r4] 8001e9a: 4910 ldr r1, [pc, #64] ; (8001edc ) 8001e9c: 0013 movs r3, r2 8001e9e: 009b lsls r3, r3, #2 8001ea0: 189b adds r3, r3, r2 8001ea2: 009b lsls r3, r3, #2 8001ea4: 181b adds r3, r3, r0 8001ea6: 005b lsls r3, r3, #1 8001ea8: 1c22 adds r2, r4, #0 8001eaa: 525a strh r2, [r3, r1] for(i = 0; i < 20; i++) { 8001eac: 1dfb adds r3, r7, #7 8001eae: 781a ldrb r2, [r3, #0] 8001eb0: 1dfb adds r3, r7, #7 8001eb2: 3201 adds r2, #1 8001eb4: 701a strb r2, [r3, #0] 8001eb6: 1dfb adds r3, r7, #7 8001eb8: 781b ldrb r3, [r3, #0] 8001eba: 2b13 cmp r3, #19 8001ebc: d9dd bls.n 8001e7a for(j = 0; j < 2; j++) 8001ebe: 1dbb adds r3, r7, #6 8001ec0: 781a ldrb r2, [r3, #0] 8001ec2: 1dbb adds r3, r7, #6 8001ec4: 3201 adds r2, #1 8001ec6: 701a strb r2, [r3, #0] 8001ec8: 1dbb adds r3, r7, #6 8001eca: 781b ldrb r3, [r3, #0] 8001ecc: 2b01 cmp r3, #1 8001ece: d9d0 bls.n 8001e72 } } wrCorr(); 8001ed0: f7ff ff4c bl 8001d6c } } 8001ed4: 46c0 nop ; (mov r8, r8) 8001ed6: 46bd mov sp, r7 8001ed8: b002 add sp, #8 8001eda: bdb0 pop {r4, r5, r7, pc} 8001edc: 20000048 .word 0x20000048 8001ee0: 0801ff80 .word 0x0801ff80 8001ee4: 0000ffff .word 0x0000ffff 8001ee8: 0800716c .word 0x0800716c 08001eec : * Output * EVENT_OUT * EXTI */ void MX_GPIO_Init(void) { 8001eec: b580 push {r7, lr} 8001eee: b088 sub sp, #32 8001ef0: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; 8001ef2: 230c movs r3, #12 8001ef4: 18fb adds r3, r7, r3 8001ef6: 0018 movs r0, r3 8001ef8: 2314 movs r3, #20 8001efa: 001a movs r2, r3 8001efc: 2100 movs r1, #0 8001efe: f005 f85e bl 8006fbe /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOA_CLK_ENABLE(); 8001f02: 4b5a ldr r3, [pc, #360] ; (800206c ) 8001f04: 4a59 ldr r2, [pc, #356] ; (800206c ) 8001f06: 6ad2 ldr r2, [r2, #44] ; 0x2c 8001f08: 2101 movs r1, #1 8001f0a: 430a orrs r2, r1 8001f0c: 62da str r2, [r3, #44] ; 0x2c 8001f0e: 4b57 ldr r3, [pc, #348] ; (800206c ) 8001f10: 6adb ldr r3, [r3, #44] ; 0x2c 8001f12: 2201 movs r2, #1 8001f14: 4013 ands r3, r2 8001f16: 60bb str r3, [r7, #8] 8001f18: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOB_CLK_ENABLE(); 8001f1a: 4b54 ldr r3, [pc, #336] ; (800206c ) 8001f1c: 4a53 ldr r2, [pc, #332] ; (800206c ) 8001f1e: 6ad2 ldr r2, [r2, #44] ; 0x2c 8001f20: 2102 movs r1, #2 8001f22: 430a orrs r2, r1 8001f24: 62da str r2, [r3, #44] ; 0x2c 8001f26: 4b51 ldr r3, [pc, #324] ; (800206c ) 8001f28: 6adb ldr r3, [r3, #44] ; 0x2c 8001f2a: 2202 movs r2, #2 8001f2c: 4013 ands r3, r2 8001f2e: 607b str r3, [r7, #4] 8001f30: 687b ldr r3, [r7, #4] /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, PER_Pin|RE_Pin, GPIO_PIN_RESET); 8001f32: 2388 movs r3, #136 ; 0x88 8001f34: 0059 lsls r1, r3, #1 8001f36: 23a0 movs r3, #160 ; 0xa0 8001f38: 05db lsls r3, r3, #23 8001f3a: 2200 movs r2, #0 8001f3c: 0018 movs r0, r3 8001f3e: f002 fde6 bl 8004b0e /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, A0_Pin|A1_Pin|A2_Pin|A10_Pin 8001f42: 494b ldr r1, [pc, #300] ; (8002070 ) 8001f44: 4b4b ldr r3, [pc, #300] ; (8002074 ) 8001f46: 2200 movs r2, #0 8001f48: 0018 movs r0, r3 8001f4a: f002 fde0 bl 8004b0e |A11_Pin|A12_Pin|A3_Pin|A4_Pin |A5_Pin|A6_Pin|A7_Pin|A8_Pin |A9_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, FL_Pin|STD_Pin|SCK_Pin, GPIO_PIN_SET); 8001f4e: 23e0 movs r3, #224 ; 0xe0 8001f50: 021b lsls r3, r3, #8 8001f52: 4848 ldr r0, [pc, #288] ; (8002074 ) 8001f54: 2201 movs r2, #1 8001f56: 0019 movs r1, r3 8001f58: f002 fdd9 bl 8004b0e /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = PER_Pin; 8001f5c: 230c movs r3, #12 8001f5e: 18fb adds r3, r7, r3 8001f60: 2210 movs r2, #16 8001f62: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 8001f64: 230c movs r3, #12 8001f66: 18fb adds r3, r7, r3 8001f68: 2201 movs r2, #1 8001f6a: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; 8001f6c: 230c movs r3, #12 8001f6e: 18fb adds r3, r7, r3 8001f70: 2200 movs r2, #0 8001f72: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; 8001f74: 230c movs r3, #12 8001f76: 18fb adds r3, r7, r3 8001f78: 2202 movs r2, #2 8001f7a: 60da str r2, [r3, #12] HAL_GPIO_Init(PER_GPIO_Port, &GPIO_InitStruct); 8001f7c: 230c movs r3, #12 8001f7e: 18fa adds r2, r7, r3 8001f80: 23a0 movs r3, #160 ; 0xa0 8001f82: 05db lsls r3, r3, #23 8001f84: 0011 movs r1, r2 8001f86: 0018 movs r0, r3 8001f88: f002 fb42 bl 8004610 /*Configure GPIO pins : PBPin PBPin PBPin PBPin PBPin PBPin PBPin PBPin PBPin PBPin PBPin PBPin PBPin */ GPIO_InitStruct.Pin = A0_Pin|A1_Pin|A2_Pin|A10_Pin 8001f8c: 230c movs r3, #12 8001f8e: 18fb adds r3, r7, r3 8001f90: 4a37 ldr r2, [pc, #220] ; (8002070 ) 8001f92: 601a str r2, [r3, #0] |A11_Pin|A12_Pin|A3_Pin|A4_Pin |A5_Pin|A6_Pin|A7_Pin|A8_Pin |A9_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 8001f94: 230c movs r3, #12 8001f96: 18fb adds r3, r7, r3 8001f98: 2201 movs r2, #1 8001f9a: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; 8001f9c: 230c movs r3, #12 8001f9e: 18fb adds r3, r7, r3 8001fa0: 2200 movs r2, #0 8001fa2: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 8001fa4: 230c movs r3, #12 8001fa6: 18fb adds r3, r7, r3 8001fa8: 2200 movs r2, #0 8001faa: 60da str r2, [r3, #12] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 8001fac: 230c movs r3, #12 8001fae: 18fb adds r3, r7, r3 8001fb0: 4a30 ldr r2, [pc, #192] ; (8002074 ) 8001fb2: 0019 movs r1, r3 8001fb4: 0010 movs r0, r2 8001fb6: f002 fb2b bl 8004610 /*Configure GPIO pins : PBPin PBPin PBPin */ GPIO_InitStruct.Pin = FL_Pin|STD_Pin|SCK_Pin; 8001fba: 230c movs r3, #12 8001fbc: 18fb adds r3, r7, r3 8001fbe: 22e0 movs r2, #224 ; 0xe0 8001fc0: 0212 lsls r2, r2, #8 8001fc2: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 8001fc4: 230c movs r3, #12 8001fc6: 18fb adds r3, r7, r3 8001fc8: 2201 movs r2, #1 8001fca: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; 8001fcc: 230c movs r3, #12 8001fce: 18fb adds r3, r7, r3 8001fd0: 2200 movs r2, #0 8001fd2: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 8001fd4: 230c movs r3, #12 8001fd6: 18fb adds r3, r7, r3 8001fd8: 2203 movs r2, #3 8001fda: 60da str r2, [r3, #12] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 8001fdc: 230c movs r3, #12 8001fde: 18fb adds r3, r7, r3 8001fe0: 4a24 ldr r2, [pc, #144] ; (8002074 ) 8001fe2: 0019 movs r1, r3 8001fe4: 0010 movs r0, r2 8001fe6: f002 fb13 bl 8004610 /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = RE_Pin; 8001fea: 230c movs r3, #12 8001fec: 18fb adds r3, r7, r3 8001fee: 2280 movs r2, #128 ; 0x80 8001ff0: 0052 lsls r2, r2, #1 8001ff2: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 8001ff4: 230c movs r3, #12 8001ff6: 18fb adds r3, r7, r3 8001ff8: 2201 movs r2, #1 8001ffa: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; 8001ffc: 230c movs r3, #12 8001ffe: 18fb adds r3, r7, r3 8002000: 2200 movs r2, #0 8002002: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 8002004: 230c movs r3, #12 8002006: 18fb adds r3, r7, r3 8002008: 2203 movs r2, #3 800200a: 60da str r2, [r3, #12] HAL_GPIO_Init(RE_GPIO_Port, &GPIO_InitStruct); 800200c: 230c movs r3, #12 800200e: 18fa adds r2, r7, r3 8002010: 23a0 movs r3, #160 ; 0xa0 8002012: 05db lsls r3, r3, #23 8002014: 0011 movs r1, r2 8002016: 0018 movs r0, r3 8002018: f002 fafa bl 8004610 /*Configure GPIO pins : PAPin PAPin PAPin */ GPIO_InitStruct.Pin = UPER_Pin|OP_Pin|KZ_Pin; 800201c: 230c movs r3, #12 800201e: 18fb adds r3, r7, r3 8002020: 2207 movs r2, #7 8002022: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; 8002024: 230c movs r3, #12 8002026: 18fb adds r3, r7, r3 8002028: 4a13 ldr r2, [pc, #76] ; (8002078 ) 800202a: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; 800202c: 230c movs r3, #12 800202e: 18fb adds r3, r7, r3 8002030: 2200 movs r2, #0 8002032: 609a str r2, [r3, #8] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 8002034: 230c movs r3, #12 8002036: 18fa adds r2, r7, r3 8002038: 23a0 movs r3, #160 ; 0xa0 800203a: 05db lsls r3, r3, #23 800203c: 0011 movs r1, r2 800203e: 0018 movs r0, r3 8002040: f002 fae6 bl 8004610 /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI0_1_IRQn, 1, 0); 8002044: 2200 movs r2, #0 8002046: 2101 movs r1, #1 8002048: 2005 movs r0, #5 800204a: f002 f845 bl 80040d8 HAL_NVIC_EnableIRQ(EXTI0_1_IRQn); 800204e: 2005 movs r0, #5 8002050: f002 f858 bl 8004104 HAL_NVIC_SetPriority(EXTI2_3_IRQn, 1, 0); 8002054: 2200 movs r2, #0 8002056: 2101 movs r1, #1 8002058: 2006 movs r0, #6 800205a: f002 f83d bl 80040d8 HAL_NVIC_EnableIRQ(EXTI2_3_IRQn); 800205e: 2006 movs r0, #6 8002060: f002 f850 bl 8004104 } 8002064: 46c0 nop ; (mov r8, r8) 8002066: 46bd mov sp, r7 8002068: b008 add sp, #32 800206a: bd80 pop {r7, pc} 800206c: 40021000 .word 0x40021000 8002070: 00001fff .word 0x00001fff 8002074: 50000400 .word 0x50000400 8002078: 10310000 .word 0x10310000 0800207c
: /** * @brief The application entry point. * @retval int */ int main(void) { 800207c: b580 push {r7, lr} 800207e: af00 add r7, sp, #0 HAL_Init(); 8002080: f001 feee bl 8003e60 SystemClock_Config(); 8002084: f000 f834 bl 80020f0 MX_GPIO_Init(); 8002088: f7ff ff30 bl 8001eec MX_FLASH_Init(); 800208c: f7ff fd46 bl 8001b1c MX_TIM7_Init(); 8002090: f000 f93a bl 8002308 //pardata.OWN = 1; // was defined in my.h SetAndCorrect(); 8002094: f7ff f8ec bl 8001270 MX_USART1_UART_Init(); 8002098: f000 f9ac bl 80023f4 while (1) { if(needClbr) 800209c: 4b11 ldr r3, [pc, #68] ; (80020e4 ) 800209e: 781b ldrb r3, [r3, #0] 80020a0: b2db uxtb r3, r3 80020a2: 2b00 cmp r3, #0 80020a4: d004 beq.n 80020b0 { needClbr = false; 80020a6: 4b0f ldr r3, [pc, #60] ; (80020e4 ) 80020a8: 2200 movs r2, #0 80020aa: 701a strb r2, [r3, #0] initCalibr(); 80020ac: f7ff fc0c bl 80018c8 } if(needSave) 80020b0: 4b0d ldr r3, [pc, #52] ; (80020e8 ) 80020b2: 781b ldrb r3, [r3, #0] 80020b4: b2db uxtb r3, r3 80020b6: 2b00 cmp r3, #0 80020b8: d006 beq.n 80020c8 { needSave = false; 80020ba: 4b0b ldr r3, [pc, #44] ; (80020e8 ) 80020bc: 2200 movs r2, #0 80020be: 701a strb r2, [r3, #0] SetAndCorrect(); 80020c0: f7ff f8d6 bl 8001270 wrPar(); 80020c4: f7ff fd3c bl 8001b40 } if(needCorr) 80020c8: 4b08 ldr r3, [pc, #32] ; (80020ec ) 80020ca: 781b ldrb r3, [r3, #0] 80020cc: b2db uxtb r3, r3 80020ce: 2b00 cmp r3, #0 80020d0: d0e4 beq.n 800209c { needCorr = false; 80020d2: 4b06 ldr r3, [pc, #24] ; (80020ec ) 80020d4: 2200 movs r2, #0 80020d6: 701a strb r2, [r3, #0] SetAndCorrect(); 80020d8: f7ff f8ca bl 8001270 wrCorr(); 80020dc: f7ff fe46 bl 8001d6c if(needClbr) 80020e0: e7dc b.n 800209c 80020e2: 46c0 nop ; (mov r8, r8) 80020e4: 2000002e .word 0x2000002e 80020e8: 20000037 .word 0x20000037 80020ec: 20000038 .word 0x20000038 080020f0 : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { 80020f0: b580 push {r7, lr} 80020f2: b09c sub sp, #112 ; 0x70 80020f4: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; 80020f6: 2338 movs r3, #56 ; 0x38 80020f8: 18fb adds r3, r7, r3 80020fa: 0018 movs r0, r3 80020fc: 2338 movs r3, #56 ; 0x38 80020fe: 001a movs r2, r3 8002100: 2100 movs r1, #0 8002102: f004 ff5c bl 8006fbe RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; 8002106: 2324 movs r3, #36 ; 0x24 8002108: 18fb adds r3, r7, r3 800210a: 0018 movs r0, r3 800210c: 2314 movs r3, #20 800210e: 001a movs r2, r3 8002110: 2100 movs r1, #0 8002112: f004 ff54 bl 8006fbe RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; 8002116: 003b movs r3, r7 8002118: 0018 movs r0, r3 800211a: 2324 movs r3, #36 ; 0x24 800211c: 001a movs r2, r3 800211e: 2100 movs r1, #0 8002120: f004 ff4d bl 8006fbe /** Configure the main internal regulator output voltage */ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); 8002124: 4b2f ldr r3, [pc, #188] ; (80021e4 ) 8002126: 4a2f ldr r2, [pc, #188] ; (80021e4 ) 8002128: 6812 ldr r2, [r2, #0] 800212a: 492f ldr r1, [pc, #188] ; (80021e8 ) 800212c: 400a ands r2, r1 800212e: 2180 movs r1, #128 ; 0x80 8002130: 0109 lsls r1, r1, #4 8002132: 430a orrs r2, r1 8002134: 601a str r2, [r3, #0] /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; 8002136: 2338 movs r3, #56 ; 0x38 8002138: 18fb adds r3, r7, r3 800213a: 2202 movs r2, #2 800213c: 601a str r2, [r3, #0] RCC_OscInitStruct.HSIState = RCC_HSI_ON; 800213e: 2338 movs r3, #56 ; 0x38 8002140: 18fb adds r3, r7, r3 8002142: 2201 movs r2, #1 8002144: 60da str r2, [r3, #12] RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; 8002146: 2338 movs r3, #56 ; 0x38 8002148: 18fb adds r3, r7, r3 800214a: 2210 movs r2, #16 800214c: 611a str r2, [r3, #16] RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; 800214e: 2338 movs r3, #56 ; 0x38 8002150: 18fb adds r3, r7, r3 8002152: 2202 movs r2, #2 8002154: 629a str r2, [r3, #40] ; 0x28 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; 8002156: 2338 movs r3, #56 ; 0x38 8002158: 18fb adds r3, r7, r3 800215a: 2200 movs r2, #0 800215c: 62da str r2, [r3, #44] ; 0x2c RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_3; 800215e: 2338 movs r3, #56 ; 0x38 8002160: 18fb adds r3, r7, r3 8002162: 2200 movs r2, #0 8002164: 631a str r2, [r3, #48] ; 0x30 RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_3; 8002166: 2338 movs r3, #56 ; 0x38 8002168: 18fb adds r3, r7, r3 800216a: 2280 movs r2, #128 ; 0x80 800216c: 0412 lsls r2, r2, #16 800216e: 635a str r2, [r3, #52] ; 0x34 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 8002170: 2338 movs r3, #56 ; 0x38 8002172: 18fb adds r3, r7, r3 8002174: 0018 movs r0, r3 8002176: f002 fd03 bl 8004b80 800217a: 1e03 subs r3, r0, #0 800217c: d001 beq.n 8002182 { Error_Handler(); 800217e: f000 f835 bl 80021ec } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK 8002182: 2324 movs r3, #36 ; 0x24 8002184: 18fb adds r3, r7, r3 8002186: 220f movs r2, #15 8002188: 601a str r2, [r3, #0] |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; 800218a: 2324 movs r3, #36 ; 0x24 800218c: 18fb adds r3, r7, r3 800218e: 2203 movs r2, #3 8002190: 605a str r2, [r3, #4] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV2; 8002192: 2324 movs r3, #36 ; 0x24 8002194: 18fb adds r3, r7, r3 8002196: 2280 movs r2, #128 ; 0x80 8002198: 609a str r2, [r3, #8] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; 800219a: 2324 movs r3, #36 ; 0x24 800219c: 18fb adds r3, r7, r3 800219e: 2200 movs r2, #0 80021a0: 60da str r2, [r3, #12] RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; 80021a2: 2324 movs r3, #36 ; 0x24 80021a4: 18fb adds r3, r7, r3 80021a6: 2200 movs r2, #0 80021a8: 611a str r2, [r3, #16] if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) 80021aa: 2324 movs r3, #36 ; 0x24 80021ac: 18fb adds r3, r7, r3 80021ae: 2100 movs r1, #0 80021b0: 0018 movs r0, r3 80021b2: f003 f8b7 bl 8005324 80021b6: 1e03 subs r3, r0, #0 80021b8: d001 beq.n 80021be { Error_Handler(); 80021ba: f000 f817 bl 80021ec } PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; 80021be: 003b movs r3, r7 80021c0: 2201 movs r2, #1 80021c2: 601a str r2, [r3, #0] PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; 80021c4: 003b movs r3, r7 80021c6: 2200 movs r2, #0 80021c8: 609a str r2, [r3, #8] if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 80021ca: 003b movs r3, r7 80021cc: 0018 movs r0, r3 80021ce: f003 fac9 bl 8005764 80021d2: 1e03 subs r3, r0, #0 80021d4: d001 beq.n 80021da { Error_Handler(); 80021d6: f000 f809 bl 80021ec } } 80021da: 46c0 nop ; (mov r8, r8) 80021dc: 46bd mov sp, r7 80021de: b01c add sp, #112 ; 0x70 80021e0: bd80 pop {r7, pc} 80021e2: 46c0 nop ; (mov r8, r8) 80021e4: 40007000 .word 0x40007000 80021e8: ffffe7ff .word 0xffffe7ff 080021ec : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { 80021ec: b580 push {r7, lr} 80021ee: 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"); 80021f0: 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) 80021f2: e7fe b.n 80021f2 080021f4 : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { 80021f4: b580 push {r7, lr} 80021f6: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); 80021f8: 4b07 ldr r3, [pc, #28] ; (8002218 ) 80021fa: 4a07 ldr r2, [pc, #28] ; (8002218 ) 80021fc: 6b52 ldr r2, [r2, #52] ; 0x34 80021fe: 2101 movs r1, #1 8002200: 430a orrs r2, r1 8002202: 635a str r2, [r3, #52] ; 0x34 __HAL_RCC_PWR_CLK_ENABLE(); 8002204: 4b04 ldr r3, [pc, #16] ; (8002218 ) 8002206: 4a04 ldr r2, [pc, #16] ; (8002218 ) 8002208: 6b92 ldr r2, [r2, #56] ; 0x38 800220a: 2180 movs r1, #128 ; 0x80 800220c: 0549 lsls r1, r1, #21 800220e: 430a orrs r2, r1 8002210: 639a str r2, [r3, #56] ; 0x38 /* System interrupt init*/ /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } 8002212: 46c0 nop ; (mov r8, r8) 8002214: 46bd mov sp, r7 8002216: bd80 pop {r7, pc} 8002218: 40021000 .word 0x40021000 0800221c : /******************************************************************************/ /** * @brief This function handles Non maskable Interrupt. */ void NMI_Handler(void) { 800221c: b580 push {r7, lr} 800221e: 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) 8002220: e7fe b.n 8002220 08002222 : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { 8002222: b580 push {r7, lr} 8002224: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) 8002226: e7fe b.n 8002226 08002228 : /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { 8002228: b580 push {r7, lr} 800222a: af00 add r7, sp, #0 /* USER CODE END SVC_IRQn 0 */ /* USER CODE BEGIN SVC_IRQn 1 */ /* USER CODE END SVC_IRQn 1 */ } 800222c: 46c0 nop ; (mov r8, r8) 800222e: 46bd mov sp, r7 8002230: bd80 pop {r7, pc} 08002232 : /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { 8002232: b580 push {r7, lr} 8002234: af00 add r7, sp, #0 /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } 8002236: 46c0 nop ; (mov r8, r8) 8002238: 46bd mov sp, r7 800223a: bd80 pop {r7, pc} 0800223c : /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { 800223c: b580 push {r7, lr} 800223e: af00 add r7, sp, #0 /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); 8002240: f001 fe62 bl 8003f08 if(timeout) 8002244: 4b17 ldr r3, [pc, #92] ; (80022a4 ) 8002246: 781b ldrb r3, [r3, #0] 8002248: 2b00 cmp r3, #0 800224a: d006 beq.n 800225a timeout--; 800224c: 4b15 ldr r3, [pc, #84] ; (80022a4 ) 800224e: 781b ldrb r3, [r3, #0] 8002250: 3b01 subs r3, #1 8002252: b2da uxtb r2, r3 8002254: 4b13 ldr r3, [pc, #76] ; (80022a4 ) 8002256: 701a strb r2, [r3, #0] } else send = false; } } 8002258: e020 b.n 800229c if(iolen) 800225a: 4b13 ldr r3, [pc, #76] ; (80022a8 ) 800225c: 781b ldrb r3, [r3, #0] 800225e: 2b00 cmp r3, #0 8002260: d002 beq.n 8002268 iolen = 0; 8002262: 4b11 ldr r3, [pc, #68] ; (80022a8 ) 8002264: 2200 movs r2, #0 8002266: 701a strb r2, [r3, #0] if(sendreq) 8002268: 4b10 ldr r3, [pc, #64] ; (80022ac ) 800226a: 781b ldrb r3, [r3, #0] 800226c: 2b00 cmp r3, #0 800226e: d012 beq.n 8002296 sendreq = false; 8002270: 4b0e ldr r3, [pc, #56] ; (80022ac ) 8002272: 2200 movs r2, #0 8002274: 701a strb r2, [r3, #0] send = true; 8002276: 4b0e ldr r3, [pc, #56] ; (80022b0 ) 8002278: 2201 movs r2, #1 800227a: 701a strb r2, [r3, #0] timeout = time35[pardata.BAUD]; 800227c: 4b0d ldr r3, [pc, #52] ; (80022b4 ) 800227e: 885b ldrh r3, [r3, #2] 8002280: b29b uxth r3, r3 8002282: 001a movs r2, r3 8002284: 4b0c ldr r3, [pc, #48] ; (80022b8 ) 8002286: 0052 lsls r2, r2, #1 8002288: 5ad3 ldrh r3, [r2, r3] 800228a: b2da uxtb r2, r3 800228c: 4b05 ldr r3, [pc, #20] ; (80022a4 ) 800228e: 701a strb r2, [r3, #0] StartTransfer(); 8002290: f001 fd52 bl 8003d38 } 8002294: e002 b.n 800229c send = false; 8002296: 4b06 ldr r3, [pc, #24] ; (80022b0 ) 8002298: 2200 movs r2, #0 800229a: 701a strb r2, [r3, #0] } 800229c: 46c0 nop ; (mov r8, r8) 800229e: 46bd mov sp, r7 80022a0: bd80 pop {r7, pc} 80022a2: 46c0 nop ; (mov r8, r8) 80022a4: 20000288 .word 0x20000288 80022a8: 20000035 .word 0x20000035 80022ac: 20000036 .word 0x20000036 80022b0: 20000005 .word 0x20000005 80022b4: 20000098 .word 0x20000098 80022b8: 080071bc .word 0x080071bc 080022bc : /** * @brief This function handles EXTI line 0 and line 1 interrupts. */ void EXTI0_1_IRQHandler(void) { 80022bc: b580 push {r7, lr} 80022be: af00 add r7, sp, #0 /* USER CODE BEGIN EXTI0_1_IRQn 0 */ /* USER CODE END EXTI0_1_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); 80022c0: 2001 movs r0, #1 80022c2: f002 fc41 bl 8004b48 HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1); 80022c6: 2002 movs r0, #2 80022c8: f002 fc3e bl 8004b48 /* USER CODE BEGIN EXTI0_1_IRQn 1 */ /* USER CODE END EXTI0_1_IRQn 1 */ } 80022cc: 46c0 nop ; (mov r8, r8) 80022ce: 46bd mov sp, r7 80022d0: bd80 pop {r7, pc} 080022d2 : /** * @brief This function handles EXTI line 2 and line 3 interrupts. */ void EXTI2_3_IRQHandler(void) { 80022d2: b580 push {r7, lr} 80022d4: af00 add r7, sp, #0 /* USER CODE BEGIN EXTI2_3_IRQn 0 */ /* USER CODE END EXTI2_3_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2); 80022d6: 2004 movs r0, #4 80022d8: f002 fc36 bl 8004b48 /* USER CODE BEGIN EXTI2_3_IRQn 1 */ /* USER CODE END EXTI2_3_IRQn 1 */ } 80022dc: 46c0 nop ; (mov r8, r8) 80022de: 46bd mov sp, r7 80022e0: bd80 pop {r7, pc} ... 080022e4 : */ /* USER CODE BEGIN 1 */ void TIM7_IRQHandler(void) { 80022e4: b580 push {r7, lr} 80022e6: af00 add r7, sp, #0 HAL_TIM_IRQHandler(&htim7); 80022e8: 4b03 ldr r3, [pc, #12] ; (80022f8 ) 80022ea: 0018 movs r0, r3 80022ec: f003 fc1e bl 8005b2c } 80022f0: 46c0 nop ; (mov r8, r8) 80022f2: 46bd mov sp, r7 80022f4: bd80 pop {r7, pc} 80022f6: 46c0 nop ; (mov r8, r8) 80022f8: 200000c0 .word 0x200000c0 080022fc : * @brief Setup the microcontroller system. * @param None * @retval None */ void SystemInit (void) { 80022fc: b580 push {r7, lr} 80022fe: af00 add r7, sp, #0 /* Configure the Vector Table location add offset address ------------------*/ #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 */ } 8002300: 46c0 nop ; (mov r8, r8) 8002302: 46bd mov sp, r7 8002304: bd80 pop {r7, pc} ... 08002308 : /* TIM7 init function */ void MX_TIM7_Init(void) { 8002308: b580 push {r7, lr} 800230a: b082 sub sp, #8 800230c: af00 add r7, sp, #0 TIM_MasterConfigTypeDef sMasterConfig = {0}; 800230e: 003b movs r3, r7 8002310: 0018 movs r0, r3 8002312: 2308 movs r3, #8 8002314: 001a movs r2, r3 8002316: 2100 movs r1, #0 8002318: f004 fe51 bl 8006fbe htim7.Instance = TIM7; 800231c: 4b17 ldr r3, [pc, #92] ; (800237c ) 800231e: 4a18 ldr r2, [pc, #96] ; (8002380 ) 8002320: 601a str r2, [r3, #0] htim7.Init.Prescaler = 0; 8002322: 4b16 ldr r3, [pc, #88] ; (800237c ) 8002324: 2200 movs r2, #0 8002326: 605a str r2, [r3, #4] htim7.Init.CounterMode = TIM_COUNTERMODE_UP; 8002328: 4b14 ldr r3, [pc, #80] ; (800237c ) 800232a: 2200 movs r2, #0 800232c: 609a str r2, [r3, #8] htim7.Init.Period = 7999; // Irq's 1ms 800232e: 4b13 ldr r3, [pc, #76] ; (800237c ) 8002330: 4a14 ldr r2, [pc, #80] ; (8002384 ) 8002332: 60da str r2, [r3, #12] htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; 8002334: 4b11 ldr r3, [pc, #68] ; (800237c ) 8002336: 2200 movs r2, #0 8002338: 615a str r2, [r3, #20] if (HAL_TIM_Base_Init(&htim7) != HAL_OK) 800233a: 4b10 ldr r3, [pc, #64] ; (800237c ) 800233c: 0018 movs r0, r3 800233e: f003 fb63 bl 8005a08 8002342: 1e03 subs r3, r0, #0 8002344: d001 beq.n 800234a { Error_Handler(); 8002346: f7ff ff51 bl 80021ec } sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; 800234a: 003b movs r3, r7 800234c: 2220 movs r2, #32 800234e: 601a str r2, [r3, #0] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; 8002350: 003b movs r3, r7 8002352: 2200 movs r2, #0 8002354: 605a str r2, [r3, #4] if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK) 8002356: 003a movs r2, r7 8002358: 4b08 ldr r3, [pc, #32] ; (800237c ) 800235a: 0011 movs r1, r2 800235c: 0018 movs r0, r3 800235e: f003 fd4b bl 8005df8 8002362: 1e03 subs r3, r0, #0 8002364: d001 beq.n 800236a { Error_Handler(); 8002366: f7ff ff41 bl 80021ec } /* USER CODE BEGIN TIM7_Init 2 */ HAL_TIM_Base_Start_IT(&htim7); 800236a: 4b04 ldr r3, [pc, #16] ; (800237c ) 800236c: 0018 movs r0, r3 800236e: f003 fb8b bl 8005a88 /* USER CODE END TIM7_Init 2 */ } 8002372: 46c0 nop ; (mov r8, r8) 8002374: 46bd mov sp, r7 8002376: b002 add sp, #8 8002378: bd80 pop {r7, pc} 800237a: 46c0 nop ; (mov r8, r8) 800237c: 200000c0 .word 0x200000c0 8002380: 40001400 .word 0x40001400 8002384: 00001f3f .word 0x00001f3f 08002388 : void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) { 8002388: b580 push {r7, lr} 800238a: b082 sub sp, #8 800238c: af00 add r7, sp, #0 800238e: 6078 str r0, [r7, #4] if(tim_baseHandle->Instance==TIM7) 8002390: 687b ldr r3, [r7, #4] 8002392: 681b ldr r3, [r3, #0] 8002394: 4a0a ldr r2, [pc, #40] ; (80023c0 ) 8002396: 4293 cmp r3, r2 8002398: d10d bne.n 80023b6 { /* USER CODE BEGIN TIM7_MspInit 0 */ /* USER CODE END TIM7_MspInit 0 */ /* TIM7 clock enable */ __HAL_RCC_TIM7_CLK_ENABLE(); 800239a: 4b0a ldr r3, [pc, #40] ; (80023c4 ) 800239c: 4a09 ldr r2, [pc, #36] ; (80023c4 ) 800239e: 6b92 ldr r2, [r2, #56] ; 0x38 80023a0: 2120 movs r1, #32 80023a2: 430a orrs r2, r1 80023a4: 639a str r2, [r3, #56] ; 0x38 /* TIM7 interrupt Init */ HAL_NVIC_SetPriority(TIM7_IRQn, 2, 0); 80023a6: 2200 movs r2, #0 80023a8: 2102 movs r1, #2 80023aa: 2012 movs r0, #18 80023ac: f001 fe94 bl 80040d8 HAL_NVIC_EnableIRQ(TIM7_IRQn); 80023b0: 2012 movs r0, #18 80023b2: f001 fea7 bl 8004104 /* USER CODE BEGIN TIM7_MspInit 1 */ /* USER CODE END TIM7_MspInit 1 */ } } 80023b6: 46c0 nop ; (mov r8, r8) 80023b8: 46bd mov sp, r7 80023ba: b002 add sp, #8 80023bc: bd80 pop {r7, pc} 80023be: 46c0 nop ; (mov r8, r8) 80023c0: 40001400 .word 0x40001400 80023c4: 40021000 .word 0x40021000 080023c8 : /* USER CODE BEGIN 1 */ /* USER CODE BEGIN 1 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { 80023c8: b580 push {r7, lr} 80023ca: b082 sub sp, #8 80023cc: af00 add r7, sp, #0 80023ce: 6078 str r0, [r7, #4] if((uint32_t) htim->Instance == TIM7_SOURCE) //TIM2_IRQs every 1024 Hz 80023d0: 687b ldr r3, [r7, #4] 80023d2: 681b ldr r3, [r3, #0] 80023d4: 001a movs r2, r3 80023d6: 4b06 ldr r3, [pc, #24] ; (80023f0 ) 80023d8: 429a cmp r2, r3 80023da: d104 bne.n 80023e6 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); 80023dc: 687b ldr r3, [r7, #4] 80023de: 681b ldr r3, [r3, #0] 80023e0: 2202 movs r2, #2 80023e2: 4252 negs r2, r2 80023e4: 611a str r2, [r3, #16] timerKZ--; if(!timerKZ) AMP_STATUS &= ~KZ_Pin; }*/ } } 80023e6: 46c0 nop ; (mov r8, r8) 80023e8: 46bd mov sp, r7 80023ea: b002 add sp, #8 80023ec: bd80 pop {r7, pc} 80023ee: 46c0 nop ; (mov r8, r8) 80023f0: 40001400 .word 0x40001400 080023f4 : const int8_t inversely[] = {3, 1, -1,-3}; static const uint32_t BAUDRATE[] = {4800, 7200, 9600, 14400, 19200, 38400, 57600, 115200, 128000, 230400}; void MX_USART1_UART_Init(void) { 80023f4: b580 push {r7, lr} 80023f6: af00 add r7, sp, #0 huart1.Instance = USART1; 80023f8: 4b4a ldr r3, [pc, #296] ; (8002524 ) 80023fa: 4a4b ldr r2, [pc, #300] ; (8002528 ) 80023fc: 601a str r2, [r3, #0] huart1.Init.BaudRate = BAUDRATE[pardata.BAUD]; 80023fe: 4b4b ldr r3, [pc, #300] ; (800252c ) 8002400: 885b ldrh r3, [r3, #2] 8002402: b29b uxth r3, r3 8002404: 001a movs r2, r3 8002406: 4b4a ldr r3, [pc, #296] ; (8002530 ) 8002408: 0092 lsls r2, r2, #2 800240a: 58d2 ldr r2, [r2, r3] 800240c: 4b45 ldr r3, [pc, #276] ; (8002524 ) 800240e: 605a str r2, [r3, #4] huart1.Init.WordLength = UART_WORDLENGTH_8B; 8002410: 4b44 ldr r3, [pc, #272] ; (8002524 ) 8002412: 2200 movs r2, #0 8002414: 609a str r2, [r3, #8] huart1.Init.StopBits = UART_STOPBITS_1; 8002416: 4b43 ldr r3, [pc, #268] ; (8002524 ) 8002418: 2200 movs r2, #0 800241a: 60da str r2, [r3, #12] switch(pardata.INFB) 800241c: 4b43 ldr r3, [pc, #268] ; (800252c ) 800241e: 889b ldrh r3, [r3, #4] 8002420: b29b uxth r3, r3 8002422: 2b01 cmp r3, #1 8002424: d00a beq.n 800243c 8002426: 2b02 cmp r3, #2 8002428: d011 beq.n 800244e 800242a: 2b00 cmp r3, #0 800242c: d118 bne.n 8002460 { case 0: //NONE huart1.Init.WordLength = UART_WORDLENGTH_8B; 800242e: 4b3d ldr r3, [pc, #244] ; (8002524 ) 8002430: 2200 movs r2, #0 8002432: 609a str r2, [r3, #8] huart1.Init.Parity = UART_PARITY_NONE; 8002434: 4b3b ldr r3, [pc, #236] ; (8002524 ) 8002436: 2200 movs r2, #0 8002438: 611a str r2, [r3, #16] break; 800243a: e011 b.n 8002460 case 1: //ODD huart1.Init.WordLength = UART_WORDLENGTH_9B; 800243c: 4b39 ldr r3, [pc, #228] ; (8002524 ) 800243e: 2280 movs r2, #128 ; 0x80 8002440: 0152 lsls r2, r2, #5 8002442: 609a str r2, [r3, #8] huart1.Init.Parity = UART_PARITY_ODD; 8002444: 4b37 ldr r3, [pc, #220] ; (8002524 ) 8002446: 22c0 movs r2, #192 ; 0xc0 8002448: 00d2 lsls r2, r2, #3 800244a: 611a str r2, [r3, #16] break; 800244c: e008 b.n 8002460 case 2: //EVEN huart1.Init.WordLength = UART_WORDLENGTH_9B; 800244e: 4b35 ldr r3, [pc, #212] ; (8002524 ) 8002450: 2280 movs r2, #128 ; 0x80 8002452: 0152 lsls r2, r2, #5 8002454: 609a str r2, [r3, #8] huart1.Init.Parity = UART_PARITY_EVEN; 8002456: 4b33 ldr r3, [pc, #204] ; (8002524 ) 8002458: 2280 movs r2, #128 ; 0x80 800245a: 00d2 lsls r2, r2, #3 800245c: 611a str r2, [r3, #16] break; 800245e: 46c0 nop ; (mov r8, r8) } if(pardata.BAUD < 7) 8002460: 4b32 ldr r3, [pc, #200] ; (800252c ) 8002462: 885b ldrh r3, [r3, #2] 8002464: b29b uxth r3, r3 8002466: 2b06 cmp r3, #6 8002468: d804 bhi.n 8002474 huart1.Init.OverSampling = UART_OVERSAMPLING_8; 800246a: 4b2e ldr r3, [pc, #184] ; (8002524 ) 800246c: 2280 movs r2, #128 ; 0x80 800246e: 0212 lsls r2, r2, #8 8002470: 61da str r2, [r3, #28] 8002472: e002 b.n 800247a else huart1.Init.OverSampling = UART_OVERSAMPLING_16; 8002474: 4b2b ldr r3, [pc, #172] ; (8002524 ) 8002476: 2200 movs r2, #0 8002478: 61da str r2, [r3, #28] huart1.Init.Mode = UART_MODE_TX_RX; 800247a: 4b2a ldr r3, [pc, #168] ; (8002524 ) 800247c: 220c movs r2, #12 800247e: 615a str r2, [r3, #20] huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; 8002480: 4b28 ldr r3, [pc, #160] ; (8002524 ) 8002482: 2200 movs r2, #0 8002484: 619a str r2, [r3, #24] huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; 8002486: 4b27 ldr r3, [pc, #156] ; (8002524 ) 8002488: 2200 movs r2, #0 800248a: 621a str r2, [r3, #32] huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; 800248c: 4b25 ldr r3, [pc, #148] ; (8002524 ) 800248e: 2200 movs r2, #0 8002490: 625a str r2, [r3, #36] ; 0x24 if(HAL_UART_Init(&huart1) != HAL_OK) { 8002492: 4b24 ldr r3, [pc, #144] ; (8002524 ) 8002494: 0018 movs r0, r3 8002496: f003 fd0d bl 8005eb4 800249a: 1e03 subs r3, r0, #0 800249c: d001 beq.n 80024a2 Error_Handler(); 800249e: f7ff fea5 bl 80021ec } if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE)) 80024a2: 4b20 ldr r3, [pc, #128] ; (8002524 ) 80024a4: 681b ldr r3, [r3, #0] 80024a6: 69db ldr r3, [r3, #28] 80024a8: 2208 movs r2, #8 80024aa: 4013 ands r3, r2 80024ac: 2b08 cmp r3, #8 80024ae: d103 bne.n 80024b8 __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); 80024b0: 4b1c ldr r3, [pc, #112] ; (8002524 ) 80024b2: 681b ldr r3, [r3, #0] 80024b4: 2208 movs r2, #8 80024b6: 621a str r2, [r3, #32] if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_PE)) 80024b8: 4b1a ldr r3, [pc, #104] ; (8002524 ) 80024ba: 681b ldr r3, [r3, #0] 80024bc: 69db ldr r3, [r3, #28] 80024be: 2201 movs r2, #1 80024c0: 4013 ands r3, r2 80024c2: 2b01 cmp r3, #1 80024c4: d103 bne.n 80024ce __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_PE); 80024c6: 4b17 ldr r3, [pc, #92] ; (8002524 ) 80024c8: 681b ldr r3, [r3, #0] 80024ca: 2201 movs r2, #1 80024cc: 621a str r2, [r3, #32] if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_FE)) 80024ce: 4b15 ldr r3, [pc, #84] ; (8002524 ) 80024d0: 681b ldr r3, [r3, #0] 80024d2: 69db ldr r3, [r3, #28] 80024d4: 2202 movs r2, #2 80024d6: 4013 ands r3, r2 80024d8: 2b02 cmp r3, #2 80024da: d103 bne.n 80024e4 __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_FE); 80024dc: 4b11 ldr r3, [pc, #68] ; (8002524 ) 80024de: 681b ldr r3, [r3, #0] 80024e0: 2202 movs r2, #2 80024e2: 621a str r2, [r3, #32] if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_NE)) 80024e4: 4b0f ldr r3, [pc, #60] ; (8002524 ) 80024e6: 681b ldr r3, [r3, #0] 80024e8: 69db ldr r3, [r3, #28] 80024ea: 2204 movs r2, #4 80024ec: 4013 ands r3, r2 80024ee: 2b04 cmp r3, #4 80024f0: d103 bne.n 80024fa __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_NE); 80024f2: 4b0c ldr r3, [pc, #48] ; (8002524 ) 80024f4: 681b ldr r3, [r3, #0] 80024f6: 2204 movs r2, #4 80024f8: 621a str r2, [r3, #32] HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET); 80024fa: 2380 movs r3, #128 ; 0x80 80024fc: 0059 lsls r1, r3, #1 80024fe: 23a0 movs r3, #160 ; 0xa0 8002500: 05db lsls r3, r3, #23 8002502: 2200 movs r2, #0 8002504: 0018 movs r0, r3 8002506: f002 fb02 bl 8004b0e SET_BIT(huart1.Instance->CR1, USART_CR1_RXNEIE | USART_CR1_PEIE); 800250a: 4b06 ldr r3, [pc, #24] ; (8002524 ) 800250c: 681b ldr r3, [r3, #0] 800250e: 4a05 ldr r2, [pc, #20] ; (8002524 ) 8002510: 6812 ldr r2, [r2, #0] 8002512: 6812 ldr r2, [r2, #0] 8002514: 2190 movs r1, #144 ; 0x90 8002516: 0049 lsls r1, r1, #1 8002518: 430a orrs r2, r1 800251a: 601a str r2, [r3, #0] } 800251c: 46c0 nop ; (mov r8, r8) 800251e: 46bd mov sp, r7 8002520: bd80 pop {r7, pc} 8002522: 46c0 nop ; (mov r8, r8) 8002524: 20000104 .word 0x20000104 8002528: 40013800 .word 0x40013800 800252c: 20000098 .word 0x20000098 8002530: 0800741c .word 0x0800741c 08002534 : void MX_USART1_UART_DeInit(void) { 8002534: b580 push {r7, lr} 8002536: af00 add r7, sp, #0 if(HAL_UART_DeInit(&huart1) != HAL_OK) { 8002538: 4b06 ldr r3, [pc, #24] ; (8002554 ) 800253a: 0018 movs r0, r3 800253c: f003 fd0e bl 8005f5c 8002540: 1e03 subs r3, r0, #0 8002542: d001 beq.n 8002548 Error_Handler(); 8002544: f7ff fe52 bl 80021ec } HAL_NVIC_DisableIRQ(USART1_IRQn); 8002548: 201b movs r0, #27 800254a: f001 fdeb bl 8004124 } 800254e: 46c0 nop ; (mov r8, r8) 8002550: 46bd mov sp, r7 8002552: bd80 pop {r7, pc} 8002554: 20000104 .word 0x20000104 08002558 : void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) { 8002558: b580 push {r7, lr} 800255a: b088 sub sp, #32 800255c: af00 add r7, sp, #0 800255e: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; 8002560: 230c movs r3, #12 8002562: 18fb adds r3, r7, r3 8002564: 0018 movs r0, r3 8002566: 2314 movs r3, #20 8002568: 001a movs r2, r3 800256a: 2100 movs r1, #0 800256c: f004 fd27 bl 8006fbe if(uartHandle->Instance==USART1) 8002570: 687b ldr r3, [r7, #4] 8002572: 681b ldr r3, [r3, #0] 8002574: 4a1f ldr r2, [pc, #124] ; (80025f4 ) 8002576: 4293 cmp r3, r2 8002578: d137 bne.n 80025ea { __HAL_RCC_USART1_CLK_ENABLE(); 800257a: 4b1f ldr r3, [pc, #124] ; (80025f8 ) 800257c: 4a1e ldr r2, [pc, #120] ; (80025f8 ) 800257e: 6b52 ldr r2, [r2, #52] ; 0x34 8002580: 2180 movs r1, #128 ; 0x80 8002582: 01c9 lsls r1, r1, #7 8002584: 430a orrs r2, r1 8002586: 635a str r2, [r3, #52] ; 0x34 __HAL_RCC_GPIOA_CLK_ENABLE(); 8002588: 4b1b ldr r3, [pc, #108] ; (80025f8 ) 800258a: 4a1b ldr r2, [pc, #108] ; (80025f8 ) 800258c: 6ad2 ldr r2, [r2, #44] ; 0x2c 800258e: 2101 movs r1, #1 8002590: 430a orrs r2, r1 8002592: 62da str r2, [r3, #44] ; 0x2c 8002594: 4b18 ldr r3, [pc, #96] ; (80025f8 ) 8002596: 6adb ldr r3, [r3, #44] ; 0x2c 8002598: 2201 movs r2, #1 800259a: 4013 ands r3, r2 800259c: 60bb str r3, [r7, #8] 800259e: 68bb ldr r3, [r7, #8] /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; 80025a0: 230c movs r3, #12 80025a2: 18fb adds r3, r7, r3 80025a4: 22c0 movs r2, #192 ; 0xc0 80025a6: 00d2 lsls r2, r2, #3 80025a8: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 80025aa: 230c movs r3, #12 80025ac: 18fb adds r3, r7, r3 80025ae: 2202 movs r2, #2 80025b0: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; 80025b2: 230c movs r3, #12 80025b4: 18fb adds r3, r7, r3 80025b6: 2200 movs r2, #0 80025b8: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 80025ba: 230c movs r3, #12 80025bc: 18fb adds r3, r7, r3 80025be: 2203 movs r2, #3 80025c0: 60da str r2, [r3, #12] GPIO_InitStruct.Alternate = GPIO_AF4_USART1; 80025c2: 230c movs r3, #12 80025c4: 18fb adds r3, r7, r3 80025c6: 2204 movs r2, #4 80025c8: 611a str r2, [r3, #16] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 80025ca: 230c movs r3, #12 80025cc: 18fa adds r2, r7, r3 80025ce: 23a0 movs r3, #160 ; 0xa0 80025d0: 05db lsls r3, r3, #23 80025d2: 0011 movs r1, r2 80025d4: 0018 movs r0, r3 80025d6: f002 f81b bl 8004610 /* USART1 interrupt Init */ HAL_NVIC_SetPriority(USART1_IRQn, 3, 0); 80025da: 2200 movs r2, #0 80025dc: 2103 movs r1, #3 80025de: 201b movs r0, #27 80025e0: f001 fd7a bl 80040d8 HAL_NVIC_EnableIRQ(USART1_IRQn); 80025e4: 201b movs r0, #27 80025e6: f001 fd8d bl 8004104 } } 80025ea: 46c0 nop ; (mov r8, r8) 80025ec: 46bd mov sp, r7 80025ee: b008 add sp, #32 80025f0: bd80 pop {r7, pc} 80025f2: 46c0 nop ; (mov r8, r8) 80025f4: 40013800 .word 0x40013800 80025f8: 40021000 .word 0x40021000 080025fc : void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) { 80025fc: b580 push {r7, lr} 80025fe: b082 sub sp, #8 8002600: af00 add r7, sp, #0 8002602: 6078 str r0, [r7, #4] if(uartHandle->Instance==USART1) 8002604: 687b ldr r3, [r7, #4] 8002606: 681b ldr r3, [r3, #0] 8002608: 4a0b ldr r2, [pc, #44] ; (8002638 ) 800260a: 4293 cmp r3, r2 800260c: d110 bne.n 8002630 { /* USER CODE BEGIN USART1_MspDeInit 0 */ /* USER CODE END USART1_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART1_CLK_DISABLE(); 800260e: 4b0b ldr r3, [pc, #44] ; (800263c ) 8002610: 4a0a ldr r2, [pc, #40] ; (800263c ) 8002612: 6b52 ldr r2, [r2, #52] ; 0x34 8002614: 490a ldr r1, [pc, #40] ; (8002640 ) 8002616: 400a ands r2, r1 8002618: 635a str r2, [r3, #52] ; 0x34 /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); 800261a: 23c0 movs r3, #192 ; 0xc0 800261c: 00da lsls r2, r3, #3 800261e: 23a0 movs r3, #160 ; 0xa0 8002620: 05db lsls r3, r3, #23 8002622: 0011 movs r1, r2 8002624: 0018 movs r0, r3 8002626: f002 f971 bl 800490c /* USART1 interrupt Deinit */ HAL_NVIC_DisableIRQ(USART1_IRQn); 800262a: 201b movs r0, #27 800262c: f001 fd7a bl 8004124 /* USER CODE BEGIN USART1_MspDeInit 1 */ /* USER CODE END USART1_MspDeInit 1 */ } } 8002630: 46c0 nop ; (mov r8, r8) 8002632: 46bd mov sp, r7 8002634: b002 add sp, #8 8002636: bd80 pop {r7, pc} 8002638: 40013800 .word 0x40013800 800263c: 40021000 .word 0x40021000 8002640: ffffbfff .word 0xffffbfff 08002644 : /* USER CODE BEGIN 1 */ void USART1_IRQHandler(void) { 8002644: b580 push {r7, lr} 8002646: af00 add r7, sp, #0 if((__HAL_UART_GET_IT_SOURCE(&huart1, UART_IT_RXNE)) && (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE))) 8002648: 4b22 ldr r3, [pc, #136] ; (80026d4 ) 800264a: 681b ldr r3, [r3, #0] 800264c: 681b ldr r3, [r3, #0] 800264e: 2220 movs r2, #32 8002650: 4013 ands r3, r2 8002652: d00b beq.n 800266c 8002654: 4b1f ldr r3, [pc, #124] ; (80026d4 ) 8002656: 681b ldr r3, [r3, #0] 8002658: 69db ldr r3, [r3, #28] 800265a: 2220 movs r2, #32 800265c: 4013 ands r3, r2 800265e: 2b20 cmp r3, #32 8002660: d104 bne.n 800266c { HAL_UART_RxCpltCallback(&huart1); 8002662: 4b1c ldr r3, [pc, #112] ; (80026d4 ) 8002664: 0018 movs r0, r3 8002666: f000 f929 bl 80028bc 800266a: e003 b.n 8002674 } else { HAL_UART_IRQHandler(&huart1); 800266c: 4b19 ldr r3, [pc, #100] ; (80026d4 ) 800266e: 0018 movs r0, r3 8002670: f003 fd1c bl 80060ac } if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE)) 8002674: 4b17 ldr r3, [pc, #92] ; (80026d4 ) 8002676: 681b ldr r3, [r3, #0] 8002678: 69db ldr r3, [r3, #28] 800267a: 2208 movs r2, #8 800267c: 4013 ands r3, r2 800267e: 2b08 cmp r3, #8 8002680: d103 bne.n 800268a __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); 8002682: 4b14 ldr r3, [pc, #80] ; (80026d4 ) 8002684: 681b ldr r3, [r3, #0] 8002686: 2208 movs r2, #8 8002688: 621a str r2, [r3, #32] if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_PE)) 800268a: 4b12 ldr r3, [pc, #72] ; (80026d4 ) 800268c: 681b ldr r3, [r3, #0] 800268e: 69db ldr r3, [r3, #28] 8002690: 2201 movs r2, #1 8002692: 4013 ands r3, r2 8002694: 2b01 cmp r3, #1 8002696: d103 bne.n 80026a0 __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_PE); 8002698: 4b0e ldr r3, [pc, #56] ; (80026d4 ) 800269a: 681b ldr r3, [r3, #0] 800269c: 2201 movs r2, #1 800269e: 621a str r2, [r3, #32] if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_FE)) 80026a0: 4b0c ldr r3, [pc, #48] ; (80026d4 ) 80026a2: 681b ldr r3, [r3, #0] 80026a4: 69db ldr r3, [r3, #28] 80026a6: 2202 movs r2, #2 80026a8: 4013 ands r3, r2 80026aa: 2b02 cmp r3, #2 80026ac: d103 bne.n 80026b6 __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_FE); 80026ae: 4b09 ldr r3, [pc, #36] ; (80026d4 ) 80026b0: 681b ldr r3, [r3, #0] 80026b2: 2202 movs r2, #2 80026b4: 621a str r2, [r3, #32] if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_NE)) 80026b6: 4b07 ldr r3, [pc, #28] ; (80026d4 ) 80026b8: 681b ldr r3, [r3, #0] 80026ba: 69db ldr r3, [r3, #28] 80026bc: 2204 movs r2, #4 80026be: 4013 ands r3, r2 80026c0: 2b04 cmp r3, #4 80026c2: d103 bne.n 80026cc __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_NE); 80026c4: 4b03 ldr r3, [pc, #12] ; (80026d4 ) 80026c6: 681b ldr r3, [r3, #0] 80026c8: 2204 movs r2, #4 80026ca: 621a str r2, [r3, #32] } 80026cc: 46c0 nop ; (mov r8, r8) 80026ce: 46bd mov sp, r7 80026d0: bd80 pop {r7, pc} 80026d2: 46c0 nop ; (mov r8, r8) 80026d4: 20000104 .word 0x20000104 080026d8 : /* USER CODE END 1 */ void strtOut(uint16_t n) { 80026d8: b590 push {r4, r7, lr} 80026da: b085 sub sp, #20 80026dc: af00 add r7, sp, #0 80026de: 0002 movs r2, r0 80026e0: 1dbb adds r3, r7, #6 80026e2: 801a strh r2, [r3, #0] uint16_t crc; if(tx[0]) 80026e4: 4b1d ldr r3, [pc, #116] ; (800275c ) 80026e6: 781b ldrb r3, [r3, #0] 80026e8: 2b00 cmp r3, #0 80026ea: d02f beq.n 800274c { lastbyte = n + 2; //���������� ������������ ������ 80026ec: 1dbb adds r3, r7, #6 80026ee: 881b ldrh r3, [r3, #0] 80026f0: 3302 adds r3, #2 80026f2: b29a uxth r2, r3 80026f4: 4b1a ldr r3, [pc, #104] ; (8002760 ) 80026f6: 801a strh r2, [r3, #0] crc = Crc16_TX(n); //���������� CRC16 80026f8: 230e movs r3, #14 80026fa: 18fc adds r4, r7, r3 80026fc: 1dbb adds r3, r7, #6 80026fe: 881b ldrh r3, [r3, #0] 8002700: 0018 movs r0, r3 8002702: f000 f875 bl 80027f0 8002706: 0003 movs r3, r0 8002708: 8023 strh r3, [r4, #0] tx[n] = lo(crc); //������ CRC16 800270a: 1dbb adds r3, r7, #6 800270c: 881b ldrh r3, [r3, #0] 800270e: 220e movs r2, #14 8002710: 18ba adds r2, r7, r2 8002712: 8812 ldrh r2, [r2, #0] 8002714: b2d1 uxtb r1, r2 8002716: 4a11 ldr r2, [pc, #68] ; (800275c ) 8002718: 54d1 strb r1, [r2, r3] tx[n + 1] = hi(crc); // � ��������� 2 ����� 800271a: 1dbb adds r3, r7, #6 800271c: 881b ldrh r3, [r3, #0] 800271e: 3301 adds r3, #1 8002720: 220e movs r2, #14 8002722: 18ba adds r2, r7, r2 8002724: 8812 ldrh r2, [r2, #0] 8002726: 0a12 lsrs r2, r2, #8 8002728: b292 uxth r2, r2 800272a: b2d1 uxtb r1, r2 800272c: 4a0b ldr r2, [pc, #44] ; (800275c ) 800272e: 54d1 strb r1, [r2, r3] HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_SET); //����������� RS485 �� �������� 8002730: 2380 movs r3, #128 ; 0x80 8002732: 0059 lsls r1, r3, #1 8002734: 23a0 movs r3, #160 ; 0xa0 8002736: 05db lsls r3, r3, #23 8002738: 2201 movs r2, #1 800273a: 0018 movs r0, r3 800273c: f002 f9e7 bl 8004b0e ioa = 1; 8002740: 4b08 ldr r3, [pc, #32] ; (8002764 ) 8002742: 2201 movs r2, #1 8002744: 701a strb r2, [r3, #0] sendreq = true; 8002746: 4b08 ldr r3, [pc, #32] ; (8002768 ) 8002748: 2201 movs r2, #1 800274a: 701a strb r2, [r3, #0] } iolen = 0; 800274c: 4b07 ldr r3, [pc, #28] ; (800276c ) 800274e: 2200 movs r2, #0 8002750: 701a strb r2, [r3, #0] } 8002752: 46c0 nop ; (mov r8, r8) 8002754: 46bd mov sp, r7 8002756: b005 add sp, #20 8002758: bd90 pop {r4, r7, pc} 800275a: 46c0 nop ; (mov r8, r8) 800275c: 20000188 .word 0x20000188 8002760: 2000028a .word 0x2000028a 8002764: 20000100 .word 0x20000100 8002768: 20000036 .word 0x20000036 800276c: 20000035 .word 0x20000035 08002770 : uint16_t Crc16(uint16_t len) { 8002770: b580 push {r7, lr} 8002772: b084 sub sp, #16 8002774: af00 add r7, sp, #0 8002776: 0002 movs r2, r0 8002778: 1dbb adds r3, r7, #6 800277a: 801a strh r2, [r3, #0] uint16_t i; uint16_t crc = 0xFFFF; 800277c: 230c movs r3, #12 800277e: 18fb adds r3, r7, r3 8002780: 2201 movs r2, #1 8002782: 4252 negs r2, r2 8002784: 801a strh r2, [r3, #0] for(i = 0; i < len; i++) { 8002786: 230e movs r3, #14 8002788: 18fb adds r3, r7, r3 800278a: 2200 movs r2, #0 800278c: 801a strh r2, [r3, #0] 800278e: e01d b.n 80027cc crc = (crc >> 8) ^ Crc16Table[(crc & 0xFF) ^ iobuf[i]]; 8002790: 230c movs r3, #12 8002792: 18fb adds r3, r7, r3 8002794: 881b ldrh r3, [r3, #0] 8002796: 0a1b lsrs r3, r3, #8 8002798: b299 uxth r1, r3 800279a: 230c movs r3, #12 800279c: 18fb adds r3, r7, r3 800279e: 881b ldrh r3, [r3, #0] 80027a0: 22ff movs r2, #255 ; 0xff 80027a2: 4013 ands r3, r2 80027a4: 220e movs r2, #14 80027a6: 18ba adds r2, r7, r2 80027a8: 8812 ldrh r2, [r2, #0] 80027aa: 480f ldr r0, [pc, #60] ; (80027e8 ) 80027ac: 5c82 ldrb r2, [r0, r2] 80027ae: 405a eors r2, r3 80027b0: 4b0e ldr r3, [pc, #56] ; (80027ec ) 80027b2: 0052 lsls r2, r2, #1 80027b4: 5ad2 ldrh r2, [r2, r3] 80027b6: 230c movs r3, #12 80027b8: 18fb adds r3, r7, r3 80027ba: 404a eors r2, r1 80027bc: 801a strh r2, [r3, #0] for(i = 0; i < len; i++) { 80027be: 230e movs r3, #14 80027c0: 18fb adds r3, r7, r3 80027c2: 881a ldrh r2, [r3, #0] 80027c4: 230e movs r3, #14 80027c6: 18fb adds r3, r7, r3 80027c8: 3201 adds r2, #1 80027ca: 801a strh r2, [r3, #0] 80027cc: 230e movs r3, #14 80027ce: 18fa adds r2, r7, r3 80027d0: 1dbb adds r3, r7, #6 80027d2: 8812 ldrh r2, [r2, #0] 80027d4: 881b ldrh r3, [r3, #0] 80027d6: 429a cmp r2, r3 80027d8: d3da bcc.n 8002790 } return crc; 80027da: 230c movs r3, #12 80027dc: 18fb adds r3, r7, r3 80027de: 881b ldrh r3, [r3, #0] } 80027e0: 0018 movs r0, r3 80027e2: 46bd mov sp, r7 80027e4: b004 add sp, #16 80027e6: bd80 pop {r7, pc} 80027e8: 2000028c .word 0x2000028c 80027ec: 080071f4 .word 0x080071f4 080027f0 : uint16_t Crc16_TX(uint16_t len) { 80027f0: b580 push {r7, lr} 80027f2: b084 sub sp, #16 80027f4: af00 add r7, sp, #0 80027f6: 0002 movs r2, r0 80027f8: 1dbb adds r3, r7, #6 80027fa: 801a strh r2, [r3, #0] uint16_t i; uint16_t crc = 0xFFFF; 80027fc: 230c movs r3, #12 80027fe: 18fb adds r3, r7, r3 8002800: 2201 movs r2, #1 8002802: 4252 negs r2, r2 8002804: 801a strh r2, [r3, #0] for(i = 0; i < len; i++) { 8002806: 230e movs r3, #14 8002808: 18fb adds r3, r7, r3 800280a: 2200 movs r2, #0 800280c: 801a strh r2, [r3, #0] 800280e: e01d b.n 800284c crc = (crc >> 8) ^ Crc16Table[(crc & 0xFF) ^ tx[i]]; 8002810: 230c movs r3, #12 8002812: 18fb adds r3, r7, r3 8002814: 881b ldrh r3, [r3, #0] 8002816: 0a1b lsrs r3, r3, #8 8002818: b299 uxth r1, r3 800281a: 230c movs r3, #12 800281c: 18fb adds r3, r7, r3 800281e: 881b ldrh r3, [r3, #0] 8002820: 22ff movs r2, #255 ; 0xff 8002822: 4013 ands r3, r2 8002824: 220e movs r2, #14 8002826: 18ba adds r2, r7, r2 8002828: 8812 ldrh r2, [r2, #0] 800282a: 480f ldr r0, [pc, #60] ; (8002868 ) 800282c: 5c82 ldrb r2, [r0, r2] 800282e: 405a eors r2, r3 8002830: 4b0e ldr r3, [pc, #56] ; (800286c ) 8002832: 0052 lsls r2, r2, #1 8002834: 5ad2 ldrh r2, [r2, r3] 8002836: 230c movs r3, #12 8002838: 18fb adds r3, r7, r3 800283a: 404a eors r2, r1 800283c: 801a strh r2, [r3, #0] for(i = 0; i < len; i++) { 800283e: 230e movs r3, #14 8002840: 18fb adds r3, r7, r3 8002842: 881a ldrh r2, [r3, #0] 8002844: 230e movs r3, #14 8002846: 18fb adds r3, r7, r3 8002848: 3201 adds r2, #1 800284a: 801a strh r2, [r3, #0] 800284c: 230e movs r3, #14 800284e: 18fa adds r2, r7, r3 8002850: 1dbb adds r3, r7, #6 8002852: 8812 ldrh r2, [r2, #0] 8002854: 881b ldrh r3, [r3, #0] 8002856: 429a cmp r2, r3 8002858: d3da bcc.n 8002810 } return crc; 800285a: 230c movs r3, #12 800285c: 18fb adds r3, r7, r3 800285e: 881b ldrh r3, [r3, #0] } 8002860: 0018 movs r0, r3 8002862: 46bd mov sp, r7 8002864: b004 add sp, #16 8002866: bd80 pop {r7, pc} 8002868: 20000188 .word 0x20000188 800286c: 080071f4 .word 0x080071f4 08002870 : void SetBaudRate() { 8002870: b580 push {r7, lr} 8002872: af00 add r7, sp, #0 timeout = time35[pardata.BAUD]; 8002874: 4b0c ldr r3, [pc, #48] ; (80028a8 ) 8002876: 885b ldrh r3, [r3, #2] 8002878: b29b uxth r3, r3 800287a: 001a movs r2, r3 800287c: 4b0b ldr r3, [pc, #44] ; (80028ac ) 800287e: 0052 lsls r2, r2, #1 8002880: 5ad3 ldrh r3, [r2, r3] 8002882: b2da uxtb r2, r3 8002884: 4b0a ldr r3, [pc, #40] ; (80028b0 ) 8002886: 701a strb r2, [r3, #0] delayREDE = sendtime[pardata.BAUD]; 8002888: 4b07 ldr r3, [pc, #28] ; (80028a8 ) 800288a: 885b ldrh r3, [r3, #2] 800288c: b29b uxth r3, r3 800288e: 001a movs r2, r3 8002890: 4b08 ldr r3, [pc, #32] ; (80028b4 ) 8002892: 0052 lsls r2, r2, #1 8002894: 5ad2 ldrh r2, [r2, r3] 8002896: 4b08 ldr r3, [pc, #32] ; (80028b8 ) 8002898: 801a strh r2, [r3, #0] MX_USART1_UART_DeInit(); 800289a: f7ff fe4b bl 8002534 MX_USART1_UART_Init(); 800289e: f7ff fda9 bl 80023f4 } 80028a2: 46c0 nop ; (mov r8, r8) 80028a4: 46bd mov sp, r7 80028a6: bd80 pop {r7, pc} 80028a8: 20000098 .word 0x20000098 80028ac: 08007408 .word 0x08007408 80028b0: 20000288 .word 0x20000288 80028b4: 080073f4 .word 0x080073f4 80028b8: 20000102 .word 0x20000102 080028bc : void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { 80028bc: b5b0 push {r4, r5, r7, lr} 80028be: b088 sub sp, #32 80028c0: af00 add r7, sp, #0 80028c2: 6078 str r0, [r7, #4] usfloat f; uint8_t tmp, tmp1; uint16_t tmp16; float tmpf; timeout = time35[pardata.BAUD]; 80028c4: 4bd5 ldr r3, [pc, #852] ; (8002c1c ) 80028c6: 885b ldrh r3, [r3, #2] 80028c8: b29b uxth r3, r3 80028ca: 001a movs r2, r3 80028cc: 4bd4 ldr r3, [pc, #848] ; (8002c20 ) 80028ce: 0052 lsls r2, r2, #1 80028d0: 5ad3 ldrh r3, [r2, r3] 80028d2: b2da uxtb r2, r3 80028d4: 4bd3 ldr r3, [pc, #844] ; (8002c24 ) 80028d6: 701a strb r2, [r3, #0] iobuf[iolen++] = (uint8_t) (USART1->RDR & 0xFF); 80028d8: 4bd3 ldr r3, [pc, #844] ; (8002c28 ) 80028da: 781b ldrb r3, [r3, #0] 80028dc: 1c5a adds r2, r3, #1 80028de: b2d1 uxtb r1, r2 80028e0: 4ad1 ldr r2, [pc, #836] ; (8002c28 ) 80028e2: 7011 strb r1, [r2, #0] 80028e4: 001a movs r2, r3 80028e6: 4bd1 ldr r3, [pc, #836] ; (8002c2c ) 80028e8: 6a5b ldr r3, [r3, #36] ; 0x24 80028ea: b2d9 uxtb r1, r3 80028ec: 4bd0 ldr r3, [pc, #832] ; (8002c30 ) 80028ee: 5499 strb r1, [r3, r2] if((iobuf[0] == pardata.OWN) || (!iobuf[0])) 80028f0: 4bcf ldr r3, [pc, #828] ; (8002c30 ) 80028f2: 781b ldrb r3, [r3, #0] 80028f4: b29a uxth r2, r3 80028f6: 4bc9 ldr r3, [pc, #804] ; (8002c1c ) 80028f8: 881b ldrh r3, [r3, #0] 80028fa: b29b uxth r3, r3 80028fc: 429a cmp r2, r3 80028fe: d005 beq.n 800290c 8002900: 4bcb ldr r3, [pc, #812] ; (8002c30 ) 8002902: 781b ldrb r3, [r3, #0] 8002904: 2b00 cmp r3, #0 8002906: d001 beq.n 800290c 8002908: f001 f9a6 bl 8003c58 { if(iolen > 1) 800290c: 4bc6 ldr r3, [pc, #792] ; (8002c28 ) 800290e: 781b ldrb r3, [r3, #0] 8002910: 2b01 cmp r3, #1 8002912: d801 bhi.n 8002918 8002914: f001 f9a0 bl 8003c58 { if(iolen == 2) 8002918: 4bc3 ldr r3, [pc, #780] ; (8002c28 ) 800291a: 781b ldrb r3, [r3, #0] 800291c: 2b02 cmp r3, #2 800291e: d124 bne.n 800296a { switch(iobuf[1]) 8002920: 4bc3 ldr r3, [pc, #780] ; (8002c30 ) 8002922: 785b ldrb r3, [r3, #1] 8002924: 2b03 cmp r3, #3 8002926: d002 beq.n 800292e 8002928: 2b10 cmp r3, #16 800292a: d004 beq.n 8002936 800292c: e007 b.n 800293e { case 0x03: lastbyte = 7; 800292e: 4bc1 ldr r3, [pc, #772] ; (8002c34 ) 8002930: 2207 movs r2, #7 8002932: 801a strh r2, [r3, #0] break; 8002934: e019 b.n 800296a case 0x10: lastbyte = 6; 8002936: 4bbf ldr r3, [pc, #764] ; (8002c34 ) 8002938: 2206 movs r2, #6 800293a: 801a strh r2, [r3, #0] break; 800293c: e015 b.n 800296a default: lastbyte = 3; 800293e: 4bbd ldr r3, [pc, #756] ; (8002c34 ) 8002940: 2203 movs r2, #3 8002942: 801a strh r2, [r3, #0] tx[0] = iobuf[0]; 8002944: 4bba ldr r3, [pc, #744] ; (8002c30 ) 8002946: 781a ldrb r2, [r3, #0] 8002948: 4bbb ldr r3, [pc, #748] ; (8002c38 ) 800294a: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 800294c: 4bb8 ldr r3, [pc, #736] ; (8002c30 ) 800294e: 785b ldrb r3, [r3, #1] 8002950: 2280 movs r2, #128 ; 0x80 8002952: 4252 negs r2, r2 8002954: 4313 orrs r3, r2 8002956: b2da uxtb r2, r3 8002958: 4bb7 ldr r3, [pc, #732] ; (8002c38 ) 800295a: 705a strb r2, [r3, #1] tx[2] = 0x03; 800295c: 4bb6 ldr r3, [pc, #728] ; (8002c38 ) 800295e: 2203 movs r2, #3 8002960: 709a strb r2, [r3, #2] strtOut(3); 8002962: 2003 movs r0, #3 8002964: f7ff feb8 bl 80026d8 break; 8002968: 46c0 nop ; (mov r8, r8) } } if(iolen > lastbyte) 800296a: 4baf ldr r3, [pc, #700] ; (8002c28 ) 800296c: 781b ldrb r3, [r3, #0] 800296e: b29a uxth r2, r3 8002970: 4bb0 ldr r3, [pc, #704] ; (8002c34 ) 8002972: 881b ldrh r3, [r3, #0] 8002974: 429a cmp r2, r3 8002976: d801 bhi.n 800297c 8002978: f001 f96e bl 8003c58 { switch(iobuf[1]) 800297c: 4bac ldr r3, [pc, #688] ; (8002c30 ) 800297e: 785b ldrb r3, [r3, #1] 8002980: 2b03 cmp r3, #3 8002982: d004 beq.n 800298e 8002984: 2b10 cmp r3, #16 8002986: d100 bne.n 800298a 8002988: e267 b.n 8002e5a } } } //iolen++; } 800298a: f001 f965 bl 8003c58 iolen = 0; 800298e: 4ba6 ldr r3, [pc, #664] ; (8002c28 ) 8002990: 2200 movs r2, #0 8002992: 701a strb r2, [r3, #0] crc.ch[0] = iobuf[6]; 8002994: 4ba6 ldr r3, [pc, #664] ; (8002c30 ) 8002996: 799a ldrb r2, [r3, #6] 8002998: 2314 movs r3, #20 800299a: 18fb adds r3, r7, r3 800299c: 701a strb r2, [r3, #0] crc.ch[1] = iobuf[7]; 800299e: 4ba4 ldr r3, [pc, #656] ; (8002c30 ) 80029a0: 79da ldrb r2, [r3, #7] 80029a2: 2314 movs r3, #20 80029a4: 18fb adds r3, r7, r3 80029a6: 705a strb r2, [r3, #1] if(crc.sh == Crc16(6)) // ïðè êîððåêòíîì çíà÷åíèè CRC 80029a8: 2314 movs r3, #20 80029aa: 18fb adds r3, r7, r3 80029ac: 881c ldrh r4, [r3, #0] 80029ae: 2006 movs r0, #6 80029b0: f7ff fede bl 8002770 80029b4: 0003 movs r3, r0 80029b6: 429c cmp r4, r3 80029b8: d001 beq.n 80029be 80029ba: f001 f94c bl 8003c56 addr.ch[1] = iobuf[2]; //ñò áàéò àäðåñà ðåãèñòðà 80029be: 4b9c ldr r3, [pc, #624] ; (8002c30 ) 80029c0: 789a ldrb r2, [r3, #2] 80029c2: 2310 movs r3, #16 80029c4: 18fb adds r3, r7, r3 80029c6: 705a strb r2, [r3, #1] addr.ch[0] = iobuf[3]; // ìë áàéò àäðåñà ðåãèñòðà 80029c8: 4b99 ldr r3, [pc, #612] ; (8002c30 ) 80029ca: 78da ldrb r2, [r3, #3] 80029cc: 2310 movs r3, #16 80029ce: 18fb adds r3, r7, r3 80029d0: 701a strb r2, [r3, #0] regs.ch[1] = iobuf[4]; // ñò áàéò êîë-âà ðåãèñòðîâ (ñëîâ) 80029d2: 4b97 ldr r3, [pc, #604] ; (8002c30 ) 80029d4: 791a ldrb r2, [r3, #4] 80029d6: 230c movs r3, #12 80029d8: 18fb adds r3, r7, r3 80029da: 705a strb r2, [r3, #1] regs.ch[0] = iobuf[5]; // ìë áàéò êîë-âî ðåãèñòðîâ (ñëîâ) 80029dc: 4b94 ldr r3, [pc, #592] ; (8002c30 ) 80029de: 795a ldrb r2, [r3, #5] 80029e0: 230c movs r3, #12 80029e2: 18fb adds r3, r7, r3 80029e4: 701a strb r2, [r3, #0] if(addr.sh == 1000) // ×òåíèå áàéòà ÃÃ…ÃÅÃÃÓÇÊÈ 80029e6: 2310 movs r3, #16 80029e8: 18fb adds r3, r7, r3 80029ea: 881a ldrh r2, [r3, #0] 80029ec: 23fa movs r3, #250 ; 0xfa 80029ee: 009b lsls r3, r3, #2 80029f0: 429a cmp r2, r3 80029f2: d142 bne.n 8002a7a if(regs.ch[0] != 1) // åñëè çàïðîøåí íå ÎÄÈà ðåãèñòð 80029f4: 230c movs r3, #12 80029f6: 18fb adds r3, r7, r3 80029f8: 781b ldrb r3, [r3, #0] 80029fa: 2b01 cmp r3, #1 80029fc: d013 beq.n 8002a26 tx[0] = iobuf[0]; 80029fe: 4b8c ldr r3, [pc, #560] ; (8002c30 ) 8002a00: 781a ldrb r2, [r3, #0] 8002a02: 4b8d ldr r3, [pc, #564] ; (8002c38 ) 8002a04: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 8002a06: 4b8a ldr r3, [pc, #552] ; (8002c30 ) 8002a08: 785b ldrb r3, [r3, #1] 8002a0a: 2280 movs r2, #128 ; 0x80 8002a0c: 4252 negs r2, r2 8002a0e: 4313 orrs r3, r2 8002a10: b2da uxtb r2, r3 8002a12: 4b89 ldr r3, [pc, #548] ; (8002c38 ) 8002a14: 705a strb r2, [r3, #1] tx[2] = 0x03; 8002a16: 4b88 ldr r3, [pc, #544] ; (8002c38 ) 8002a18: 2203 movs r2, #3 8002a1a: 709a strb r2, [r3, #2] strtOut(3); 8002a1c: 2003 movs r0, #3 8002a1e: f7ff fe5b bl 80026d8 break; 8002a22: f001 f918 bl 8003c56 tx[0] = iobuf[0]; 8002a26: 4b82 ldr r3, [pc, #520] ; (8002c30 ) 8002a28: 781a ldrb r2, [r3, #0] 8002a2a: 4b83 ldr r3, [pc, #524] ; (8002c38 ) 8002a2c: 701a strb r2, [r3, #0] tx[1] = iobuf[1]; 8002a2e: 4b80 ldr r3, [pc, #512] ; (8002c30 ) 8002a30: 785a ldrb r2, [r3, #1] 8002a32: 4b81 ldr r3, [pc, #516] ; (8002c38 ) 8002a34: 705a strb r2, [r3, #1] tx[2] = regs.ch[0] << 1; // êîë-âî áàéò 8002a36: 230c movs r3, #12 8002a38: 18fb adds r3, r7, r3 8002a3a: 781b ldrb r3, [r3, #0] 8002a3c: 18db adds r3, r3, r3 8002a3e: b2da uxtb r2, r3 8002a40: 4b7d ldr r3, [pc, #500] ; (8002c38 ) 8002a42: 709a strb r2, [r3, #2] tx[3] = 0; 8002a44: 4b7c ldr r3, [pc, #496] ; (8002c38 ) 8002a46: 2200 movs r2, #0 8002a48: 70da strb r2, [r3, #3] tx[4] = lo(AMP_STATUS); 8002a4a: 4b7c ldr r3, [pc, #496] ; (8002c3c ) 8002a4c: 881b ldrh r3, [r3, #0] 8002a4e: b29b uxth r3, r3 8002a50: b2da uxtb r2, r3 8002a52: 4b79 ldr r3, [pc, #484] ; (8002c38 ) 8002a54: 711a strb r2, [r3, #4] tx[5] = hi(AMP_STATUS); 8002a56: 4b79 ldr r3, [pc, #484] ; (8002c3c ) 8002a58: 881b ldrh r3, [r3, #0] 8002a5a: b29b uxth r3, r3 8002a5c: 0a1b lsrs r3, r3, #8 8002a5e: b29b uxth r3, r3 8002a60: b2da uxtb r2, r3 8002a62: 4b75 ldr r3, [pc, #468] ; (8002c38 ) 8002a64: 715a strb r2, [r3, #5] strtOut(3 + tx[2]); 8002a66: 4b74 ldr r3, [pc, #464] ; (8002c38 ) 8002a68: 789b ldrb r3, [r3, #2] 8002a6a: b29b uxth r3, r3 8002a6c: 3303 adds r3, #3 8002a6e: b29b uxth r3, r3 8002a70: 0018 movs r0, r3 8002a72: f7ff fe31 bl 80026d8 break; 8002a76: f001 f8ee bl 8003c56 switch(addr.sh) 8002a7a: 2310 movs r3, #16 8002a7c: 18fb adds r3, r7, r3 8002a7e: 881b ldrh r3, [r3, #0] 8002a80: 4a6f ldr r2, [pc, #444] ; (8002c40 ) 8002a82: 4293 cmp r3, r2 8002a84: d100 bne.n 8002a88 8002a86: e111 b.n 8002cac 8002a88: 4a6d ldr r2, [pc, #436] ; (8002c40 ) 8002a8a: 4293 cmp r3, r2 8002a8c: dc0b bgt.n 8002aa6 8002a8e: 4a6d ldr r2, [pc, #436] ; (8002c44 ) 8002a90: 4293 cmp r3, r2 8002a92: da00 bge.n 8002a96 8002a94: e1cc b.n 8002e30 8002a96: 4a6c ldr r2, [pc, #432] ; (8002c48 ) 8002a98: 4293 cmp r3, r2 8002a9a: dd19 ble.n 8002ad0 8002a9c: 4a6b ldr r2, [pc, #428] ; (8002c4c ) 8002a9e: 4293 cmp r3, r2 8002aa0: d100 bne.n 8002aa4 8002aa2: e07a b.n 8002b9a 8002aa4: e1c4 b.n 8002e30 8002aa6: 4a6a ldr r2, [pc, #424] ; (8002c50 ) 8002aa8: 4293 cmp r3, r2 8002aaa: d100 bne.n 8002aae 8002aac: e075 b.n 8002b9a 8002aae: 4a68 ldr r2, [pc, #416] ; (8002c50 ) 8002ab0: 4293 cmp r3, r2 8002ab2: dc04 bgt.n 8002abe 8002ab4: 4a67 ldr r2, [pc, #412] ; (8002c54 ) 8002ab6: 4293 cmp r3, r2 8002ab8: d100 bne.n 8002abc 8002aba: e158 b.n 8002d6e 8002abc: e1b8 b.n 8002e30 8002abe: 4a66 ldr r2, [pc, #408] ; (8002c58 ) 8002ac0: 4293 cmp r3, r2 8002ac2: d100 bne.n 8002ac6 8002ac4: e0f2 b.n 8002cac 8002ac6: 4a65 ldr r2, [pc, #404] ; (8002c5c ) 8002ac8: 4293 cmp r3, r2 8002aca: d100 bne.n 8002ace 8002acc: e14f b.n 8002d6e 8002ace: e1af b.n 8002e30 if(regs.ch[0] > (5011 - addr.sh)) 8002ad0: 230c movs r3, #12 8002ad2: 18fb adds r3, r7, r3 8002ad4: 781b ldrb r3, [r3, #0] 8002ad6: 001a movs r2, r3 8002ad8: 2310 movs r3, #16 8002ada: 18fb adds r3, r7, r3 8002adc: 881b ldrh r3, [r3, #0] 8002ade: 0019 movs r1, r3 8002ae0: 4b5f ldr r3, [pc, #380] ; (8002c60 ) 8002ae2: 1a5b subs r3, r3, r1 8002ae4: 429a cmp r2, r3 8002ae6: dd12 ble.n 8002b0e tx[0] = iobuf[0]; 8002ae8: 4b51 ldr r3, [pc, #324] ; (8002c30 ) 8002aea: 781a ldrb r2, [r3, #0] 8002aec: 4b52 ldr r3, [pc, #328] ; (8002c38 ) 8002aee: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 8002af0: 4b4f ldr r3, [pc, #316] ; (8002c30 ) 8002af2: 785b ldrb r3, [r3, #1] 8002af4: 2280 movs r2, #128 ; 0x80 8002af6: 4252 negs r2, r2 8002af8: 4313 orrs r3, r2 8002afa: b2da uxtb r2, r3 8002afc: 4b4e ldr r3, [pc, #312] ; (8002c38 ) 8002afe: 705a strb r2, [r3, #1] tx[2] = 0x03; 8002b00: 4b4d ldr r3, [pc, #308] ; (8002c38 ) 8002b02: 2203 movs r2, #3 8002b04: 709a strb r2, [r3, #2] strtOut(3); 8002b06: 2003 movs r0, #3 8002b08: f7ff fde6 bl 80026d8 break; 8002b0c: e1a3 b.n 8002e56 tx[0] = iobuf[0]; 8002b0e: 4b48 ldr r3, [pc, #288] ; (8002c30 ) 8002b10: 781a ldrb r2, [r3, #0] 8002b12: 4b49 ldr r3, [pc, #292] ; (8002c38 ) 8002b14: 701a strb r2, [r3, #0] tx[1] = iobuf[1]; 8002b16: 4b46 ldr r3, [pc, #280] ; (8002c30 ) 8002b18: 785a ldrb r2, [r3, #1] 8002b1a: 4b47 ldr r3, [pc, #284] ; (8002c38 ) 8002b1c: 705a strb r2, [r3, #1] tx[2] = regs.ch[0] << 1; 8002b1e: 230c movs r3, #12 8002b20: 18fb adds r3, r7, r3 8002b22: 781b ldrb r3, [r3, #0] 8002b24: 18db adds r3, r3, r3 8002b26: b2da uxtb r2, r3 8002b28: 4b43 ldr r3, [pc, #268] ; (8002c38 ) 8002b2a: 709a strb r2, [r3, #2] pch = (uint8_t *) &pardata.IIN + ((addr.sh - 5001) << 1); 8002b2c: 2310 movs r3, #16 8002b2e: 18fb adds r3, r7, r3 8002b30: 881b ldrh r3, [r3, #0] 8002b32: 4a4c ldr r2, [pc, #304] ; (8002c64 ) 8002b34: 4694 mov ip, r2 8002b36: 4463 add r3, ip 8002b38: 005b lsls r3, r3, #1 8002b3a: 001a movs r2, r3 8002b3c: 4b4a ldr r3, [pc, #296] ; (8002c68 ) 8002b3e: 18d3 adds r3, r2, r3 8002b40: 61bb str r3, [r7, #24] for(j = 0; j < tx[2]; j++) 8002b42: 231f movs r3, #31 8002b44: 18fb adds r3, r7, r3 8002b46: 2200 movs r2, #0 8002b48: 701a strb r2, [r3, #0] 8002b4a: e016 b.n 8002b7a tx[j + 3] = *(pch + (j ^ 1)); 8002b4c: 231f movs r3, #31 8002b4e: 18fb adds r3, r7, r3 8002b50: 781b ldrb r3, [r3, #0] 8002b52: 3303 adds r3, #3 8002b54: 221f movs r2, #31 8002b56: 18ba adds r2, r7, r2 8002b58: 7812 ldrb r2, [r2, #0] 8002b5a: 2101 movs r1, #1 8002b5c: 404a eors r2, r1 8002b5e: b2d2 uxtb r2, r2 8002b60: 0011 movs r1, r2 8002b62: 69ba ldr r2, [r7, #24] 8002b64: 1852 adds r2, r2, r1 8002b66: 7811 ldrb r1, [r2, #0] 8002b68: 4a33 ldr r2, [pc, #204] ; (8002c38 ) 8002b6a: 54d1 strb r1, [r2, r3] for(j = 0; j < tx[2]; j++) 8002b6c: 231f movs r3, #31 8002b6e: 18fb adds r3, r7, r3 8002b70: 781a ldrb r2, [r3, #0] 8002b72: 231f movs r3, #31 8002b74: 18fb adds r3, r7, r3 8002b76: 3201 adds r2, #1 8002b78: 701a strb r2, [r3, #0] 8002b7a: 4b2f ldr r3, [pc, #188] ; (8002c38 ) 8002b7c: 789b ldrb r3, [r3, #2] 8002b7e: 221f movs r2, #31 8002b80: 18ba adds r2, r7, r2 8002b82: 7812 ldrb r2, [r2, #0] 8002b84: 429a cmp r2, r3 8002b86: d3e1 bcc.n 8002b4c strtOut(3 + tx[2]); 8002b88: 4b2b ldr r3, [pc, #172] ; (8002c38 ) 8002b8a: 789b ldrb r3, [r3, #2] 8002b8c: b29b uxth r3, r3 8002b8e: 3303 adds r3, #3 8002b90: b29b uxth r3, r3 8002b92: 0018 movs r0, r3 8002b94: f7ff fda0 bl 80026d8 break; 8002b98: e15d b.n 8002e56 tmp = 3; 8002b9a: 231e movs r3, #30 8002b9c: 18fb adds r3, r7, r3 8002b9e: 2203 movs r2, #3 8002ba0: 701a strb r2, [r3, #0] tx[0] = iobuf[0]; 8002ba2: 4b23 ldr r3, [pc, #140] ; (8002c30 ) 8002ba4: 781a ldrb r2, [r3, #0] 8002ba6: 4b24 ldr r3, [pc, #144] ; (8002c38 ) 8002ba8: 701a strb r2, [r3, #0] tx[1] = iobuf[1]; 8002baa: 4b21 ldr r3, [pc, #132] ; (8002c30 ) 8002bac: 785a ldrb r2, [r3, #1] 8002bae: 4b22 ldr r3, [pc, #136] ; (8002c38 ) 8002bb0: 705a strb r2, [r3, #1] tx[2] = regs.ch[0] << 2; // êîë-âî áàéò äàííûõ 8002bb2: 230c movs r3, #12 8002bb4: 18fb adds r3, r7, r3 8002bb6: 781b ldrb r3, [r3, #0] 8002bb8: 009b lsls r3, r3, #2 8002bba: b2da uxtb r2, r3 8002bbc: 4b1e ldr r3, [pc, #120] ; (8002c38 ) 8002bbe: 709a strb r2, [r3, #2] if(addr.sh == 7002) 8002bc0: 2310 movs r3, #16 8002bc2: 18fb adds r3, r7, r3 8002bc4: 881b ldrh r3, [r3, #0] 8002bc6: 4a21 ldr r2, [pc, #132] ; (8002c4c ) 8002bc8: 4293 cmp r3, r2 8002bca: d10c bne.n 8002be6 tmp <<= 1; //tmp=6 8002bcc: 231e movs r3, #30 8002bce: 18fa adds r2, r7, r3 8002bd0: 231e movs r3, #30 8002bd2: 18fb adds r3, r7, r3 8002bd4: 781b ldrb r3, [r3, #0] 8002bd6: 18db adds r3, r3, r3 8002bd8: 7013 strb r3, [r2, #0] tx[2] >>= 1; //êîë-âî ñëîâ äàííûõ 8002bda: 4b17 ldr r3, [pc, #92] ; (8002c38 ) 8002bdc: 789b ldrb r3, [r3, #2] 8002bde: 085b lsrs r3, r3, #1 8002be0: b2da uxtb r2, r3 8002be2: 4b15 ldr r3, [pc, #84] ; (8002c38 ) 8002be4: 709a strb r2, [r3, #2] if(regs.ch[0] > tmp) 8002be6: 230c movs r3, #12 8002be8: 18fb adds r3, r7, r3 8002bea: 781b ldrb r3, [r3, #0] 8002bec: 221e movs r2, #30 8002bee: 18ba adds r2, r7, r2 8002bf0: 7812 ldrb r2, [r2, #0] 8002bf2: 429a cmp r2, r3 8002bf4: d23a bcs.n 8002c6c tx[0] = iobuf[0]; 8002bf6: 4b0e ldr r3, [pc, #56] ; (8002c30 ) 8002bf8: 781a ldrb r2, [r3, #0] 8002bfa: 4b0f ldr r3, [pc, #60] ; (8002c38 ) 8002bfc: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 8002bfe: 4b0c ldr r3, [pc, #48] ; (8002c30 ) 8002c00: 785b ldrb r3, [r3, #1] 8002c02: 2280 movs r2, #128 ; 0x80 8002c04: 4252 negs r2, r2 8002c06: 4313 orrs r3, r2 8002c08: b2da uxtb r2, r3 8002c0a: 4b0b ldr r3, [pc, #44] ; (8002c38 ) 8002c0c: 705a strb r2, [r3, #1] tx[2] = 0x03; 8002c0e: 4b0a ldr r3, [pc, #40] ; (8002c38 ) 8002c10: 2203 movs r2, #3 8002c12: 709a strb r2, [r3, #2] strtOut(3); 8002c14: 2003 movs r0, #3 8002c16: f7ff fd5f bl 80026d8 break; 8002c1a: e11c b.n 8002e56 8002c1c: 20000098 .word 0x20000098 8002c20: 08007408 .word 0x08007408 8002c24: 20000288 .word 0x20000288 8002c28: 20000035 .word 0x20000035 8002c2c: 40013800 .word 0x40013800 8002c30: 2000028c .word 0x2000028c 8002c34: 2000028a .word 0x2000028a 8002c38: 20000188 .word 0x20000188 8002c3c: 2000002c .word 0x2000002c 8002c40: 00001b5c .word 0x00001b5c 8002c44: 00001389 .word 0x00001389 8002c48: 00001392 .word 0x00001392 8002c4c: 00001b5a .word 0x00001b5a 8002c50: 00001d4d .word 0x00001d4d 8002c54: 00001b5e .word 0x00001b5e 8002c58: 00001d4e .word 0x00001d4e 8002c5c: 00001d4f .word 0x00001d4f 8002c60: 00001393 .word 0x00001393 8002c64: ffffec77 .word 0xffffec77 8002c68: 2000009e .word 0x2000009e f.fl = pardata.KCOND; 8002c6c: 4be9 ldr r3, [pc, #932] ; (8003014 ) 8002c6e: 69db ldr r3, [r3, #28] 8002c70: 60bb str r3, [r7, #8] tx[3] = f.ch[3]; 8002c72: 2308 movs r3, #8 8002c74: 18fb adds r3, r7, r3 8002c76: 78da ldrb r2, [r3, #3] 8002c78: 4be7 ldr r3, [pc, #924] ; (8003018 ) 8002c7a: 70da strb r2, [r3, #3] tx[4] = f.ch[2]; 8002c7c: 2308 movs r3, #8 8002c7e: 18fb adds r3, r7, r3 8002c80: 789a ldrb r2, [r3, #2] 8002c82: 4be5 ldr r3, [pc, #916] ; (8003018 ) 8002c84: 711a strb r2, [r3, #4] tx[5] = f.ch[1]; 8002c86: 2308 movs r3, #8 8002c88: 18fb adds r3, r7, r3 8002c8a: 785a ldrb r2, [r3, #1] 8002c8c: 4be2 ldr r3, [pc, #904] ; (8003018 ) 8002c8e: 715a strb r2, [r3, #5] tx[6] = f.ch[0]; 8002c90: 2308 movs r3, #8 8002c92: 18fb adds r3, r7, r3 8002c94: 781a ldrb r2, [r3, #0] 8002c96: 4be0 ldr r3, [pc, #896] ; (8003018 ) 8002c98: 719a strb r2, [r3, #6] strtOut(3 + tx[2]); 8002c9a: 4bdf ldr r3, [pc, #892] ; (8003018 ) 8002c9c: 789b ldrb r3, [r3, #2] 8002c9e: b29b uxth r3, r3 8002ca0: 3303 adds r3, #3 8002ca2: b29b uxth r3, r3 8002ca4: 0018 movs r0, r3 8002ca6: f7ff fd17 bl 80026d8 break; 8002caa: e0d4 b.n 8002e56 tmp = 2; 8002cac: 231e movs r3, #30 8002cae: 18fb adds r3, r7, r3 8002cb0: 2202 movs r2, #2 8002cb2: 701a strb r2, [r3, #0] tx[0] = iobuf[0]; 8002cb4: 4bd9 ldr r3, [pc, #868] ; (800301c ) 8002cb6: 781a ldrb r2, [r3, #0] 8002cb8: 4bd7 ldr r3, [pc, #860] ; (8003018 ) 8002cba: 701a strb r2, [r3, #0] tx[1] = iobuf[1]; 8002cbc: 4bd7 ldr r3, [pc, #860] ; (800301c ) 8002cbe: 785a ldrb r2, [r3, #1] 8002cc0: 4bd5 ldr r3, [pc, #852] ; (8003018 ) 8002cc2: 705a strb r2, [r3, #1] tx[2] = regs.ch[0] << 2; 8002cc4: 230c movs r3, #12 8002cc6: 18fb adds r3, r7, r3 8002cc8: 781b ldrb r3, [r3, #0] 8002cca: 009b lsls r3, r3, #2 8002ccc: b2da uxtb r2, r3 8002cce: 4bd2 ldr r3, [pc, #840] ; (8003018 ) 8002cd0: 709a strb r2, [r3, #2] if(addr.sh == 7004) 8002cd2: 2310 movs r3, #16 8002cd4: 18fb adds r3, r7, r3 8002cd6: 881b ldrh r3, [r3, #0] 8002cd8: 4ad1 ldr r2, [pc, #836] ; (8003020 ) 8002cda: 4293 cmp r3, r2 8002cdc: d10c bne.n 8002cf8 tmp <<= 1; 8002cde: 231e movs r3, #30 8002ce0: 18fa adds r2, r7, r3 8002ce2: 231e movs r3, #30 8002ce4: 18fb adds r3, r7, r3 8002ce6: 781b ldrb r3, [r3, #0] 8002ce8: 18db adds r3, r3, r3 8002cea: 7013 strb r3, [r2, #0] tx[2] >>= 1; 8002cec: 4bca ldr r3, [pc, #808] ; (8003018 ) 8002cee: 789b ldrb r3, [r3, #2] 8002cf0: 085b lsrs r3, r3, #1 8002cf2: b2da uxtb r2, r3 8002cf4: 4bc8 ldr r3, [pc, #800] ; (8003018 ) 8002cf6: 709a strb r2, [r3, #2] if(regs.ch[0] > tmp) 8002cf8: 230c movs r3, #12 8002cfa: 18fb adds r3, r7, r3 8002cfc: 781b ldrb r3, [r3, #0] 8002cfe: 221e movs r2, #30 8002d00: 18ba adds r2, r7, r2 8002d02: 7812 ldrb r2, [r2, #0] 8002d04: 429a cmp r2, r3 8002d06: d212 bcs.n 8002d2e tx[0] = iobuf[0]; 8002d08: 4bc4 ldr r3, [pc, #784] ; (800301c ) 8002d0a: 781a ldrb r2, [r3, #0] 8002d0c: 4bc2 ldr r3, [pc, #776] ; (8003018 ) 8002d0e: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 8002d10: 4bc2 ldr r3, [pc, #776] ; (800301c ) 8002d12: 785b ldrb r3, [r3, #1] 8002d14: 2280 movs r2, #128 ; 0x80 8002d16: 4252 negs r2, r2 8002d18: 4313 orrs r3, r2 8002d1a: b2da uxtb r2, r3 8002d1c: 4bbe ldr r3, [pc, #760] ; (8003018 ) 8002d1e: 705a strb r2, [r3, #1] tx[2] = 0x03; 8002d20: 4bbd ldr r3, [pc, #756] ; (8003018 ) 8002d22: 2203 movs r2, #3 8002d24: 709a strb r2, [r3, #2] strtOut(3); 8002d26: 2003 movs r0, #3 8002d28: f7ff fcd6 bl 80026d8 break; 8002d2c: e093 b.n 8002e56 f.fl = pardata.SENS; 8002d2e: 4bb9 ldr r3, [pc, #740] ; (8003014 ) 8002d30: 6a1b ldr r3, [r3, #32] 8002d32: 60bb str r3, [r7, #8] tx[3] = f.ch[3]; 8002d34: 2308 movs r3, #8 8002d36: 18fb adds r3, r7, r3 8002d38: 78da ldrb r2, [r3, #3] 8002d3a: 4bb7 ldr r3, [pc, #732] ; (8003018 ) 8002d3c: 70da strb r2, [r3, #3] tx[4] = f.ch[2]; 8002d3e: 2308 movs r3, #8 8002d40: 18fb adds r3, r7, r3 8002d42: 789a ldrb r2, [r3, #2] 8002d44: 4bb4 ldr r3, [pc, #720] ; (8003018 ) 8002d46: 711a strb r2, [r3, #4] tx[5] = f.ch[1]; 8002d48: 2308 movs r3, #8 8002d4a: 18fb adds r3, r7, r3 8002d4c: 785a ldrb r2, [r3, #1] 8002d4e: 4bb2 ldr r3, [pc, #712] ; (8003018 ) 8002d50: 715a strb r2, [r3, #5] tx[6] = f.ch[0]; 8002d52: 2308 movs r3, #8 8002d54: 18fb adds r3, r7, r3 8002d56: 781a ldrb r2, [r3, #0] 8002d58: 4baf ldr r3, [pc, #700] ; (8003018 ) 8002d5a: 719a strb r2, [r3, #6] strtOut(3 + tx[2]); 8002d5c: 4bae ldr r3, [pc, #696] ; (8003018 ) 8002d5e: 789b ldrb r3, [r3, #2] 8002d60: b29b uxth r3, r3 8002d62: 3303 adds r3, #3 8002d64: b29b uxth r3, r3 8002d66: 0018 movs r0, r3 8002d68: f7ff fcb6 bl 80026d8 break; 8002d6c: e073 b.n 8002e56 tmp = 1; 8002d6e: 231e movs r3, #30 8002d70: 18fb adds r3, r7, r3 8002d72: 2201 movs r2, #1 8002d74: 701a strb r2, [r3, #0] tx[0] = iobuf[0]; 8002d76: 4ba9 ldr r3, [pc, #676] ; (800301c ) 8002d78: 781a ldrb r2, [r3, #0] 8002d7a: 4ba7 ldr r3, [pc, #668] ; (8003018 ) 8002d7c: 701a strb r2, [r3, #0] tx[1] = iobuf[1]; 8002d7e: 4ba7 ldr r3, [pc, #668] ; (800301c ) 8002d80: 785a ldrb r2, [r3, #1] 8002d82: 4ba5 ldr r3, [pc, #660] ; (8003018 ) 8002d84: 705a strb r2, [r3, #1] tx[2] = regs.ch[0] << 2; 8002d86: 230c movs r3, #12 8002d88: 18fb adds r3, r7, r3 8002d8a: 781b ldrb r3, [r3, #0] 8002d8c: 009b lsls r3, r3, #2 8002d8e: b2da uxtb r2, r3 8002d90: 4ba1 ldr r3, [pc, #644] ; (8003018 ) 8002d92: 709a strb r2, [r3, #2] if(addr.sh == 7006) 8002d94: 2310 movs r3, #16 8002d96: 18fb adds r3, r7, r3 8002d98: 881b ldrh r3, [r3, #0] 8002d9a: 4aa2 ldr r2, [pc, #648] ; (8003024 ) 8002d9c: 4293 cmp r3, r2 8002d9e: d10c bne.n 8002dba tmp <<= 1; 8002da0: 231e movs r3, #30 8002da2: 18fa adds r2, r7, r3 8002da4: 231e movs r3, #30 8002da6: 18fb adds r3, r7, r3 8002da8: 781b ldrb r3, [r3, #0] 8002daa: 18db adds r3, r3, r3 8002dac: 7013 strb r3, [r2, #0] tx[2] >>= 1; 8002dae: 4b9a ldr r3, [pc, #616] ; (8003018 ) 8002db0: 789b ldrb r3, [r3, #2] 8002db2: 085b lsrs r3, r3, #1 8002db4: b2da uxtb r2, r3 8002db6: 4b98 ldr r3, [pc, #608] ; (8003018 ) 8002db8: 709a strb r2, [r3, #2] if(regs.ch[0] > tmp) 8002dba: 230c movs r3, #12 8002dbc: 18fb adds r3, r7, r3 8002dbe: 781b ldrb r3, [r3, #0] 8002dc0: 221e movs r2, #30 8002dc2: 18ba adds r2, r7, r2 8002dc4: 7812 ldrb r2, [r2, #0] 8002dc6: 429a cmp r2, r3 8002dc8: d212 bcs.n 8002df0 tx[0] = iobuf[0]; 8002dca: 4b94 ldr r3, [pc, #592] ; (800301c ) 8002dcc: 781a ldrb r2, [r3, #0] 8002dce: 4b92 ldr r3, [pc, #584] ; (8003018 ) 8002dd0: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 8002dd2: 4b92 ldr r3, [pc, #584] ; (800301c ) 8002dd4: 785b ldrb r3, [r3, #1] 8002dd6: 2280 movs r2, #128 ; 0x80 8002dd8: 4252 negs r2, r2 8002dda: 4313 orrs r3, r2 8002ddc: b2da uxtb r2, r3 8002dde: 4b8e ldr r3, [pc, #568] ; (8003018 ) 8002de0: 705a strb r2, [r3, #1] tx[2] = 0x03; 8002de2: 4b8d ldr r3, [pc, #564] ; (8003018 ) 8002de4: 2203 movs r2, #3 8002de6: 709a strb r2, [r3, #2] strtOut(3); 8002de8: 2003 movs r0, #3 8002dea: f7ff fc75 bl 80026d8 break; 8002dee: e032 b.n 8002e56 f.fl = pardata.ACCEL; 8002df0: 4b88 ldr r3, [pc, #544] ; (8003014 ) 8002df2: 6a5b ldr r3, [r3, #36] ; 0x24 8002df4: 60bb str r3, [r7, #8] tx[3] = f.ch[3]; 8002df6: 2308 movs r3, #8 8002df8: 18fb adds r3, r7, r3 8002dfa: 78da ldrb r2, [r3, #3] 8002dfc: 4b86 ldr r3, [pc, #536] ; (8003018 ) 8002dfe: 70da strb r2, [r3, #3] tx[4] = f.ch[2]; 8002e00: 2308 movs r3, #8 8002e02: 18fb adds r3, r7, r3 8002e04: 789a ldrb r2, [r3, #2] 8002e06: 4b84 ldr r3, [pc, #528] ; (8003018 ) 8002e08: 711a strb r2, [r3, #4] tx[5] = f.ch[1]; 8002e0a: 2308 movs r3, #8 8002e0c: 18fb adds r3, r7, r3 8002e0e: 785a ldrb r2, [r3, #1] 8002e10: 4b81 ldr r3, [pc, #516] ; (8003018 ) 8002e12: 715a strb r2, [r3, #5] tx[6] = f.ch[0]; 8002e14: 2308 movs r3, #8 8002e16: 18fb adds r3, r7, r3 8002e18: 781a ldrb r2, [r3, #0] 8002e1a: 4b7f ldr r3, [pc, #508] ; (8003018 ) 8002e1c: 719a strb r2, [r3, #6] strtOut(3 + tx[2]); 8002e1e: 4b7e ldr r3, [pc, #504] ; (8003018 ) 8002e20: 789b ldrb r3, [r3, #2] 8002e22: b29b uxth r3, r3 8002e24: 3303 adds r3, #3 8002e26: b29b uxth r3, r3 8002e28: 0018 movs r0, r3 8002e2a: f7ff fc55 bl 80026d8 break; 8002e2e: e012 b.n 8002e56 tx[0] = iobuf[0]; 8002e30: 4b7a ldr r3, [pc, #488] ; (800301c ) 8002e32: 781a ldrb r2, [r3, #0] 8002e34: 4b78 ldr r3, [pc, #480] ; (8003018 ) 8002e36: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 8002e38: 4b78 ldr r3, [pc, #480] ; (800301c ) 8002e3a: 785b ldrb r3, [r3, #1] 8002e3c: 2280 movs r2, #128 ; 0x80 8002e3e: 4252 negs r2, r2 8002e40: 4313 orrs r3, r2 8002e42: b2da uxtb r2, r3 8002e44: 4b74 ldr r3, [pc, #464] ; (8003018 ) 8002e46: 705a strb r2, [r3, #1] tx[2] = 0x02; 8002e48: 4b73 ldr r3, [pc, #460] ; (8003018 ) 8002e4a: 2202 movs r2, #2 8002e4c: 709a strb r2, [r3, #2] strtOut(3); 8002e4e: 2003 movs r0, #3 8002e50: f7ff fc42 bl 80026d8 break; 8002e54: 46c0 nop ; (mov r8, r8) break; 8002e56: f000 fefe bl 8003c56 addr.ch[1] = iobuf[2]; 8002e5a: 4b70 ldr r3, [pc, #448] ; (800301c ) 8002e5c: 789a ldrb r2, [r3, #2] 8002e5e: 2310 movs r3, #16 8002e60: 18fb adds r3, r7, r3 8002e62: 705a strb r2, [r3, #1] addr.ch[0] = iobuf[3]; 8002e64: 4b6d ldr r3, [pc, #436] ; (800301c ) 8002e66: 78da ldrb r2, [r3, #3] 8002e68: 2310 movs r3, #16 8002e6a: 18fb adds r3, r7, r3 8002e6c: 701a strb r2, [r3, #0] regs.ch[1] = iobuf[4]; 8002e6e: 4b6b ldr r3, [pc, #428] ; (800301c ) 8002e70: 791a ldrb r2, [r3, #4] 8002e72: 230c movs r3, #12 8002e74: 18fb adds r3, r7, r3 8002e76: 705a strb r2, [r3, #1] regs.ch[0] = iobuf[5]; 8002e78: 4b68 ldr r3, [pc, #416] ; (800301c ) 8002e7a: 795a ldrb r2, [r3, #5] 8002e7c: 230c movs r3, #12 8002e7e: 18fb adds r3, r7, r3 8002e80: 701a strb r2, [r3, #0] switch(addr.sh) // ЗапиÑÑŒ pardata 8002e82: 2310 movs r3, #16 8002e84: 18fb adds r3, r7, r3 8002e86: 881b ldrh r3, [r3, #0] 8002e88: 4a67 ldr r2, [pc, #412] ; (8003028 ) 8002e8a: 4293 cmp r3, r2 8002e8c: d101 bne.n 8002e92 8002e8e: f000 fba4 bl 80035da 8002e92: 4a65 ldr r2, [pc, #404] ; (8003028 ) 8002e94: 4293 cmp r3, r2 8002e96: dc13 bgt.n 8002ec0 8002e98: 4a64 ldr r2, [pc, #400] ; (800302c ) 8002e9a: 4293 cmp r3, r2 8002e9c: dc08 bgt.n 8002eb0 8002e9e: 4a64 ldr r2, [pc, #400] ; (8003030 ) 8002ea0: 4293 cmp r3, r2 8002ea2: db00 blt.n 8002ea6 8002ea4: e0d8 b.n 8003058 8002ea6: 4a63 ldr r2, [pc, #396] ; (8003034 ) 8002ea8: 4293 cmp r3, r2 8002eaa: d029 beq.n 8002f00 8002eac: f000 feb4 bl 8003c18 8002eb0: 4a61 ldr r2, [pc, #388] ; (8003038 ) 8002eb2: 4694 mov ip, r2 8002eb4: 4463 add r3, ip 8002eb6: 2b09 cmp r3, #9 8002eb8: d901 bls.n 8002ebe 8002eba: f000 fead bl 8003c18 8002ebe: e2ac b.n 800341a 8002ec0: 4a5e ldr r2, [pc, #376] ; (800303c ) 8002ec2: 4293 cmp r3, r2 8002ec4: d101 bne.n 8002eca 8002ec6: f000 fb88 bl 80035da 8002eca: 4a5c ldr r2, [pc, #368] ; (800303c ) 8002ecc: 4293 cmp r3, r2 8002ece: dc0b bgt.n 8002ee8 8002ed0: 4a53 ldr r2, [pc, #332] ; (8003020 ) 8002ed2: 4293 cmp r3, r2 8002ed4: d101 bne.n 8002eda 8002ed6: f000 fd03 bl 80038e0 8002eda: 4a52 ldr r2, [pc, #328] ; (8003024 ) 8002edc: 4293 cmp r3, r2 8002ede: d101 bne.n 8002ee4 8002ee0: f000 fddc bl 8003a9c 8002ee4: f000 fe98 bl 8003c18 8002ee8: 4a55 ldr r2, [pc, #340] ; (8003040 ) 8002eea: 4293 cmp r3, r2 8002eec: d101 bne.n 8002ef2 8002eee: f000 fcf7 bl 80038e0 8002ef2: 4a54 ldr r2, [pc, #336] ; (8003044 ) 8002ef4: 4293 cmp r3, r2 8002ef6: d101 bne.n 8002efc 8002ef8: f000 fdd0 bl 8003a9c 8002efc: f000 fe8c bl 8003c18 if((regs.ch[0] > 1) || (iobuf[6] != (regs.ch[0] << 1))) 8002f00: 230c movs r3, #12 8002f02: 18fb adds r3, r7, r3 8002f04: 781b ldrb r3, [r3, #0] 8002f06: 2b01 cmp r3, #1 8002f08: d808 bhi.n 8002f1c 8002f0a: 4b44 ldr r3, [pc, #272] ; (800301c ) 8002f0c: 799b ldrb r3, [r3, #6] 8002f0e: 001a movs r2, r3 8002f10: 230c movs r3, #12 8002f12: 18fb adds r3, r7, r3 8002f14: 781b ldrb r3, [r3, #0] 8002f16: 005b lsls r3, r3, #1 8002f18: 429a cmp r2, r3 8002f1a: d013 beq.n 8002f44 tx[0] = iobuf[0]; 8002f1c: 4b3f ldr r3, [pc, #252] ; (800301c ) 8002f1e: 781a ldrb r2, [r3, #0] 8002f20: 4b3d ldr r3, [pc, #244] ; (8003018 ) 8002f22: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 8002f24: 4b3d ldr r3, [pc, #244] ; (800301c ) 8002f26: 785b ldrb r3, [r3, #1] 8002f28: 2280 movs r2, #128 ; 0x80 8002f2a: 4252 negs r2, r2 8002f2c: 4313 orrs r3, r2 8002f2e: b2da uxtb r2, r3 8002f30: 4b39 ldr r3, [pc, #228] ; (8003018 ) 8002f32: 705a strb r2, [r3, #1] tx[2] = 0x03; 8002f34: 4b38 ldr r3, [pc, #224] ; (8003018 ) 8002f36: 2203 movs r2, #3 8002f38: 709a strb r2, [r3, #2] strtOut(3); 8002f3a: 2003 movs r0, #3 8002f3c: f7ff fbcc bl 80026d8 break; 8002f40: f000 fe7d bl 8003c3e j = 8 + iobuf[6]; 8002f44: 4b35 ldr r3, [pc, #212] ; (800301c ) 8002f46: 799a ldrb r2, [r3, #6] 8002f48: 231f movs r3, #31 8002f4a: 18fb adds r3, r7, r3 8002f4c: 3208 adds r2, #8 8002f4e: 701a strb r2, [r3, #0] if(iolen > j) 8002f50: 4b3d ldr r3, [pc, #244] ; (8003048 ) 8002f52: 781b ldrb r3, [r3, #0] 8002f54: 221f movs r2, #31 8002f56: 18ba adds r2, r7, r2 8002f58: 7812 ldrb r2, [r2, #0] 8002f5a: 429a cmp r2, r3 8002f5c: d301 bcc.n 8002f62 8002f5e: f000 fe6e bl 8003c3e iolen = 0; 8002f62: 4b39 ldr r3, [pc, #228] ; (8003048 ) 8002f64: 2200 movs r2, #0 8002f66: 701a strb r2, [r3, #0] crc.ch[0] = iobuf[j - 1]; 8002f68: 231f movs r3, #31 8002f6a: 18fb adds r3, r7, r3 8002f6c: 781b ldrb r3, [r3, #0] 8002f6e: 3b01 subs r3, #1 8002f70: 4a2a ldr r2, [pc, #168] ; (800301c ) 8002f72: 5cd2 ldrb r2, [r2, r3] 8002f74: 2314 movs r3, #20 8002f76: 18fb adds r3, r7, r3 8002f78: 701a strb r2, [r3, #0] crc.ch[1] = iobuf[j]; 8002f7a: 231f movs r3, #31 8002f7c: 18fb adds r3, r7, r3 8002f7e: 781b ldrb r3, [r3, #0] 8002f80: 4a26 ldr r2, [pc, #152] ; (800301c ) 8002f82: 5cd2 ldrb r2, [r2, r3] 8002f84: 2314 movs r3, #20 8002f86: 18fb adds r3, r7, r3 8002f88: 705a strb r2, [r3, #1] if(crc.sh == Crc16(j - 1)) 8002f8a: 2314 movs r3, #20 8002f8c: 18fb adds r3, r7, r3 8002f8e: 881c ldrh r4, [r3, #0] 8002f90: 231f movs r3, #31 8002f92: 18fb adds r3, r7, r3 8002f94: 781b ldrb r3, [r3, #0] 8002f96: b29b uxth r3, r3 8002f98: 3b01 subs r3, #1 8002f9a: b29b uxth r3, r3 8002f9c: 0018 movs r0, r3 8002f9e: f7ff fbe7 bl 8002770 8002fa2: 0003 movs r3, r0 8002fa4: 429c cmp r4, r3 8002fa6: d001 beq.n 8002fac 8002fa8: f000 fe49 bl 8003c3e if(!iobuf[8]) 8002fac: 4b1b ldr r3, [pc, #108] ; (800301c ) 8002fae: 7a1b ldrb r3, [r3, #8] 8002fb0: 2b00 cmp r3, #0 8002fb2: d106 bne.n 8002fc2 faseClbr = 0; 8002fb4: 4b25 ldr r3, [pc, #148] ; (800304c ) 8002fb6: 2200 movs r2, #0 8002fb8: 601a str r2, [r3, #0] clbr = false; 8002fba: 4b25 ldr r3, [pc, #148] ; (8003050 ) 8002fbc: 2200 movs r2, #0 8002fbe: 701a strb r2, [r3, #0] 8002fc0: e008 b.n 8002fd4 needClbr = true; 8002fc2: 4b24 ldr r3, [pc, #144] ; (8003054 ) 8002fc4: 2201 movs r2, #1 8002fc6: 701a strb r2, [r3, #0] faseClbr = iobuf[8] - 1; 8002fc8: 4b14 ldr r3, [pc, #80] ; (800301c ) 8002fca: 7a1b ldrb r3, [r3, #8] 8002fcc: 3b01 subs r3, #1 8002fce: 001a movs r2, r3 8002fd0: 4b1e ldr r3, [pc, #120] ; (800304c ) 8002fd2: 601a str r2, [r3, #0] for(j = 0; j < 6; j++) { 8002fd4: 231f movs r3, #31 8002fd6: 18fb adds r3, r7, r3 8002fd8: 2200 movs r2, #0 8002fda: 701a strb r2, [r3, #0] 8002fdc: e010 b.n 8003000 tx[j] = iobuf[j]; 8002fde: 231f movs r3, #31 8002fe0: 18fb adds r3, r7, r3 8002fe2: 781b ldrb r3, [r3, #0] 8002fe4: 221f movs r2, #31 8002fe6: 18ba adds r2, r7, r2 8002fe8: 7812 ldrb r2, [r2, #0] 8002fea: 490c ldr r1, [pc, #48] ; (800301c ) 8002fec: 5c89 ldrb r1, [r1, r2] 8002fee: 4a0a ldr r2, [pc, #40] ; (8003018 ) 8002ff0: 54d1 strb r1, [r2, r3] for(j = 0; j < 6; j++) { 8002ff2: 231f movs r3, #31 8002ff4: 18fb adds r3, r7, r3 8002ff6: 781a ldrb r2, [r3, #0] 8002ff8: 231f movs r3, #31 8002ffa: 18fb adds r3, r7, r3 8002ffc: 3201 adds r2, #1 8002ffe: 701a strb r2, [r3, #0] 8003000: 231f movs r3, #31 8003002: 18fb adds r3, r7, r3 8003004: 781b ldrb r3, [r3, #0] 8003006: 2b05 cmp r3, #5 8003008: d9e9 bls.n 8002fde strtOut(6); 800300a: 2006 movs r0, #6 800300c: f7ff fb64 bl 80026d8 break; 8003010: f000 fe15 bl 8003c3e 8003014: 20000098 .word 0x20000098 8003018: 20000188 .word 0x20000188 800301c: 2000028c .word 0x2000028c 8003020: 00001b5c .word 0x00001b5c 8003024: 00001b5e .word 0x00001b5e 8003028: 00001b5a .word 0x00001b5a 800302c: 00000bcf .word 0x00000bcf 8003030: 00000bb9 .word 0x00000bb9 8003034: 00000bb8 .word 0x00000bb8 8003038: ffffec77 .word 0xffffec77 800303c: 00001d4d .word 0x00001d4d 8003040: 00001d4e .word 0x00001d4e 8003044: 00001d4f .word 0x00001d4f 8003048: 20000035 .word 0x20000035 800304c: 20000030 .word 0x20000030 8003050: 20000034 .word 0x20000034 8003054: 2000002e .word 0x2000002e if((regs.ch[0] > 1) || (iobuf[6] != (regs.ch[0] << 1))) 8003058: 230c movs r3, #12 800305a: 18fb adds r3, r7, r3 800305c: 781b ldrb r3, [r3, #0] 800305e: 2b01 cmp r3, #1 8003060: d808 bhi.n 8003074 8003062: 4bd7 ldr r3, [pc, #860] ; (80033c0 ) 8003064: 799b ldrb r3, [r3, #6] 8003066: 001a movs r2, r3 8003068: 230c movs r3, #12 800306a: 18fb adds r3, r7, r3 800306c: 781b ldrb r3, [r3, #0] 800306e: 005b lsls r3, r3, #1 8003070: 429a cmp r2, r3 8003072: d013 beq.n 800309c tx[0] = iobuf[0]; 8003074: 4bd2 ldr r3, [pc, #840] ; (80033c0 ) 8003076: 781a ldrb r2, [r3, #0] 8003078: 4bd2 ldr r3, [pc, #840] ; (80033c4 ) 800307a: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 800307c: 4bd0 ldr r3, [pc, #832] ; (80033c0 ) 800307e: 785b ldrb r3, [r3, #1] 8003080: 2280 movs r2, #128 ; 0x80 8003082: 4252 negs r2, r2 8003084: 4313 orrs r3, r2 8003086: b2da uxtb r2, r3 8003088: 4bce ldr r3, [pc, #824] ; (80033c4 ) 800308a: 705a strb r2, [r3, #1] tx[2] = 0x03; 800308c: 4bcd ldr r3, [pc, #820] ; (80033c4 ) 800308e: 2203 movs r2, #3 8003090: 709a strb r2, [r3, #2] strtOut(3); 8003092: 2003 movs r0, #3 8003094: f7ff fb20 bl 80026d8 break; 8003098: f000 fdd3 bl 8003c42 j = 8 + iobuf[6]; 800309c: 4bc8 ldr r3, [pc, #800] ; (80033c0 ) 800309e: 799a ldrb r2, [r3, #6] 80030a0: 231f movs r3, #31 80030a2: 18fb adds r3, r7, r3 80030a4: 3208 adds r2, #8 80030a6: 701a strb r2, [r3, #0] if(iolen > j) 80030a8: 4bc7 ldr r3, [pc, #796] ; (80033c8 ) 80030aa: 781b ldrb r3, [r3, #0] 80030ac: 221f movs r2, #31 80030ae: 18ba adds r2, r7, r2 80030b0: 7812 ldrb r2, [r2, #0] 80030b2: 429a cmp r2, r3 80030b4: d301 bcc.n 80030ba 80030b6: f000 fdc4 bl 8003c42 iolen = 0; 80030ba: 4bc3 ldr r3, [pc, #780] ; (80033c8 ) 80030bc: 2200 movs r2, #0 80030be: 701a strb r2, [r3, #0] crc.ch[0] = iobuf[j - 1]; 80030c0: 231f movs r3, #31 80030c2: 18fb adds r3, r7, r3 80030c4: 781b ldrb r3, [r3, #0] 80030c6: 3b01 subs r3, #1 80030c8: 4abd ldr r2, [pc, #756] ; (80033c0 ) 80030ca: 5cd2 ldrb r2, [r2, r3] 80030cc: 2314 movs r3, #20 80030ce: 18fb adds r3, r7, r3 80030d0: 701a strb r2, [r3, #0] crc.ch[1] = iobuf[j]; 80030d2: 231f movs r3, #31 80030d4: 18fb adds r3, r7, r3 80030d6: 781b ldrb r3, [r3, #0] 80030d8: 4ab9 ldr r2, [pc, #740] ; (80033c0 ) 80030da: 5cd2 ldrb r2, [r2, r3] 80030dc: 2314 movs r3, #20 80030de: 18fb adds r3, r7, r3 80030e0: 705a strb r2, [r3, #1] if(crc.sh == Crc16(j - 1)) 80030e2: 2314 movs r3, #20 80030e4: 18fb adds r3, r7, r3 80030e6: 881c ldrh r4, [r3, #0] 80030e8: 231f movs r3, #31 80030ea: 18fb adds r3, r7, r3 80030ec: 781b ldrb r3, [r3, #0] 80030ee: b29b uxth r3, r3 80030f0: 3b01 subs r3, #1 80030f2: b29b uxth r3, r3 80030f4: 0018 movs r0, r3 80030f6: f7ff fb3b bl 8002770 80030fa: 0003 movs r3, r0 80030fc: 429c cmp r4, r3 80030fe: d001 beq.n 8003104 8003100: f000 fd9f bl 8003c42 if(clbr) 8003104: 4bb1 ldr r3, [pc, #708] ; (80033cc ) 8003106: 781b ldrb r3, [r3, #0] 8003108: b2db uxtb r3, r3 800310a: 2b00 cmp r3, #0 800310c: d100 bne.n 8003110 800310e: e152 b.n 80033b6 switch(iobuf[8]) 8003110: 4bab ldr r3, [pc, #684] ; (80033c0 ) 8003112: 7a1b ldrb r3, [r3, #8] 8003114: 2b64 cmp r3, #100 ; 0x64 8003116: d100 bne.n 800311a 8003118: e0d9 b.n 80032ce 800311a: dc05 bgt.n 8003128 800311c: 2b01 cmp r3, #1 800311e: d00c beq.n 800313a 8003120: 2b0a cmp r3, #10 8003122: d100 bne.n 8003126 8003124: e06c b.n 8003200 8003126: e142 b.n 80033ae 8003128: 2b8a cmp r3, #138 ; 0x8a 800312a: d100 bne.n 800312e 800312c: e09c b.n 8003268 800312e: 2be4 cmp r3, #228 ; 0xe4 8003130: d100 bne.n 8003134 8003132: e0ff b.n 8003334 8003134: 2b81 cmp r3, #129 ; 0x81 8003136: d032 beq.n 800319e 8003138: e139 b.n 80033ae if(CorrWord[pardata.IIN][pardata.IKU] < 4095) 800313a: 4ba5 ldr r3, [pc, #660] ; (80033d0 ) 800313c: 88db ldrh r3, [r3, #6] 800313e: b29b uxth r3, r3 8003140: 0019 movs r1, r3 8003142: 4ba3 ldr r3, [pc, #652] ; (80033d0 ) 8003144: 899b ldrh r3, [r3, #12] 8003146: b29b uxth r3, r3 8003148: 0018 movs r0, r3 800314a: 4aa2 ldr r2, [pc, #648] ; (80033d4 ) 800314c: 000b movs r3, r1 800314e: 009b lsls r3, r3, #2 8003150: 185b adds r3, r3, r1 8003152: 009b lsls r3, r3, #2 8003154: 181b adds r3, r3, r0 8003156: 005b lsls r3, r3, #1 8003158: 5a9b ldrh r3, [r3, r2] 800315a: b29b uxth r3, r3 800315c: 4a9e ldr r2, [pc, #632] ; (80033d8 ) 800315e: 4293 cmp r3, r2 8003160: d900 bls.n 8003164 8003162: e119 b.n 8003398 CorrWord[pardata.IIN][pardata.IKU]++; 8003164: 4b9a ldr r3, [pc, #616] ; (80033d0 ) 8003166: 88db ldrh r3, [r3, #6] 8003168: b29b uxth r3, r3 800316a: 001a movs r2, r3 800316c: 4b98 ldr r3, [pc, #608] ; (80033d0 ) 800316e: 899b ldrh r3, [r3, #12] 8003170: b29b uxth r3, r3 8003172: 0019 movs r1, r3 8003174: 4897 ldr r0, [pc, #604] ; (80033d4 ) 8003176: 0013 movs r3, r2 8003178: 009b lsls r3, r3, #2 800317a: 189b adds r3, r3, r2 800317c: 009b lsls r3, r3, #2 800317e: 185b adds r3, r3, r1 8003180: 005b lsls r3, r3, #1 8003182: 5a1b ldrh r3, [r3, r0] 8003184: b29b uxth r3, r3 8003186: 3301 adds r3, #1 8003188: b29c uxth r4, r3 800318a: 4892 ldr r0, [pc, #584] ; (80033d4 ) 800318c: 0013 movs r3, r2 800318e: 009b lsls r3, r3, #2 8003190: 189b adds r3, r3, r2 8003192: 009b lsls r3, r3, #2 8003194: 185b adds r3, r3, r1 8003196: 005b lsls r3, r3, #1 8003198: 1c22 adds r2, r4, #0 800319a: 521a strh r2, [r3, r0] break; 800319c: e0fc b.n 8003398 if(CorrWord[pardata.IIN][pardata.IKU] > 0) 800319e: 4b8c ldr r3, [pc, #560] ; (80033d0 ) 80031a0: 88db ldrh r3, [r3, #6] 80031a2: b29b uxth r3, r3 80031a4: 0019 movs r1, r3 80031a6: 4b8a ldr r3, [pc, #552] ; (80033d0 ) 80031a8: 899b ldrh r3, [r3, #12] 80031aa: b29b uxth r3, r3 80031ac: 0018 movs r0, r3 80031ae: 4a89 ldr r2, [pc, #548] ; (80033d4 ) 80031b0: 000b movs r3, r1 80031b2: 009b lsls r3, r3, #2 80031b4: 185b adds r3, r3, r1 80031b6: 009b lsls r3, r3, #2 80031b8: 181b adds r3, r3, r0 80031ba: 005b lsls r3, r3, #1 80031bc: 5a9b ldrh r3, [r3, r2] 80031be: b29b uxth r3, r3 80031c0: 2b00 cmp r3, #0 80031c2: d100 bne.n 80031c6 80031c4: e0ea b.n 800339c CorrWord[pardata.IIN][pardata.IKU]--; 80031c6: 4b82 ldr r3, [pc, #520] ; (80033d0 ) 80031c8: 88db ldrh r3, [r3, #6] 80031ca: b29b uxth r3, r3 80031cc: 001a movs r2, r3 80031ce: 4b80 ldr r3, [pc, #512] ; (80033d0 ) 80031d0: 899b ldrh r3, [r3, #12] 80031d2: b29b uxth r3, r3 80031d4: 0019 movs r1, r3 80031d6: 487f ldr r0, [pc, #508] ; (80033d4 ) 80031d8: 0013 movs r3, r2 80031da: 009b lsls r3, r3, #2 80031dc: 189b adds r3, r3, r2 80031de: 009b lsls r3, r3, #2 80031e0: 185b adds r3, r3, r1 80031e2: 005b lsls r3, r3, #1 80031e4: 5a1b ldrh r3, [r3, r0] 80031e6: b29b uxth r3, r3 80031e8: 3b01 subs r3, #1 80031ea: b29c uxth r4, r3 80031ec: 4879 ldr r0, [pc, #484] ; (80033d4 ) 80031ee: 0013 movs r3, r2 80031f0: 009b lsls r3, r3, #2 80031f2: 189b adds r3, r3, r2 80031f4: 009b lsls r3, r3, #2 80031f6: 185b adds r3, r3, r1 80031f8: 005b lsls r3, r3, #1 80031fa: 1c22 adds r2, r4, #0 80031fc: 521a strh r2, [r3, r0] break; 80031fe: e0cd b.n 800339c if(CorrWord[pardata.IIN][pardata.IKU] < 4085) 8003200: 4b73 ldr r3, [pc, #460] ; (80033d0 ) 8003202: 88db ldrh r3, [r3, #6] 8003204: b29b uxth r3, r3 8003206: 0019 movs r1, r3 8003208: 4b71 ldr r3, [pc, #452] ; (80033d0 ) 800320a: 899b ldrh r3, [r3, #12] 800320c: b29b uxth r3, r3 800320e: 0018 movs r0, r3 8003210: 4a70 ldr r2, [pc, #448] ; (80033d4 ) 8003212: 000b movs r3, r1 8003214: 009b lsls r3, r3, #2 8003216: 185b adds r3, r3, r1 8003218: 009b lsls r3, r3, #2 800321a: 181b adds r3, r3, r0 800321c: 005b lsls r3, r3, #1 800321e: 5a9b ldrh r3, [r3, r2] 8003220: b29b uxth r3, r3 8003222: 4a6e ldr r2, [pc, #440] ; (80033dc ) 8003224: 4293 cmp r3, r2 8003226: d900 bls.n 800322a 8003228: e0ba b.n 80033a0 CorrWord[pardata.IIN][pardata.IKU] += 10; 800322a: 4b69 ldr r3, [pc, #420] ; (80033d0 ) 800322c: 88db ldrh r3, [r3, #6] 800322e: b29a uxth r2, r3 8003230: 0011 movs r1, r2 8003232: 4b67 ldr r3, [pc, #412] ; (80033d0 ) 8003234: 899b ldrh r3, [r3, #12] 8003236: b29b uxth r3, r3 8003238: 001c movs r4, r3 800323a: 0010 movs r0, r2 800323c: 001d movs r5, r3 800323e: 4a65 ldr r2, [pc, #404] ; (80033d4 ) 8003240: 0003 movs r3, r0 8003242: 009b lsls r3, r3, #2 8003244: 181b adds r3, r3, r0 8003246: 009b lsls r3, r3, #2 8003248: 195b adds r3, r3, r5 800324a: 005b lsls r3, r3, #1 800324c: 5a9b ldrh r3, [r3, r2] 800324e: b29b uxth r3, r3 8003250: 330a adds r3, #10 8003252: b298 uxth r0, r3 8003254: 4a5f ldr r2, [pc, #380] ; (80033d4 ) 8003256: 000b movs r3, r1 8003258: 009b lsls r3, r3, #2 800325a: 185b adds r3, r3, r1 800325c: 009b lsls r3, r3, #2 800325e: 191b adds r3, r3, r4 8003260: 005b lsls r3, r3, #1 8003262: 1c01 adds r1, r0, #0 8003264: 5299 strh r1, [r3, r2] break; 8003266: e09b b.n 80033a0 if(CorrWord[pardata.IIN][pardata.IKU] > 10) 8003268: 4b59 ldr r3, [pc, #356] ; (80033d0 ) 800326a: 88db ldrh r3, [r3, #6] 800326c: b29b uxth r3, r3 800326e: 0019 movs r1, r3 8003270: 4b57 ldr r3, [pc, #348] ; (80033d0 ) 8003272: 899b ldrh r3, [r3, #12] 8003274: b29b uxth r3, r3 8003276: 0018 movs r0, r3 8003278: 4a56 ldr r2, [pc, #344] ; (80033d4 ) 800327a: 000b movs r3, r1 800327c: 009b lsls r3, r3, #2 800327e: 185b adds r3, r3, r1 8003280: 009b lsls r3, r3, #2 8003282: 181b adds r3, r3, r0 8003284: 005b lsls r3, r3, #1 8003286: 5a9b ldrh r3, [r3, r2] 8003288: b29b uxth r3, r3 800328a: 2b0a cmp r3, #10 800328c: d800 bhi.n 8003290 800328e: e089 b.n 80033a4 CorrWord[pardata.IIN][pardata.IKU] -= 10; 8003290: 4b4f ldr r3, [pc, #316] ; (80033d0 ) 8003292: 88db ldrh r3, [r3, #6] 8003294: b29a uxth r2, r3 8003296: 0011 movs r1, r2 8003298: 4b4d ldr r3, [pc, #308] ; (80033d0 ) 800329a: 899b ldrh r3, [r3, #12] 800329c: b29b uxth r3, r3 800329e: 001c movs r4, r3 80032a0: 0010 movs r0, r2 80032a2: 001d movs r5, r3 80032a4: 4a4b ldr r2, [pc, #300] ; (80033d4 ) 80032a6: 0003 movs r3, r0 80032a8: 009b lsls r3, r3, #2 80032aa: 181b adds r3, r3, r0 80032ac: 009b lsls r3, r3, #2 80032ae: 195b adds r3, r3, r5 80032b0: 005b lsls r3, r3, #1 80032b2: 5a9b ldrh r3, [r3, r2] 80032b4: b29b uxth r3, r3 80032b6: 3b0a subs r3, #10 80032b8: b298 uxth r0, r3 80032ba: 4a46 ldr r2, [pc, #280] ; (80033d4 ) 80032bc: 000b movs r3, r1 80032be: 009b lsls r3, r3, #2 80032c0: 185b adds r3, r3, r1 80032c2: 009b lsls r3, r3, #2 80032c4: 191b adds r3, r3, r4 80032c6: 005b lsls r3, r3, #1 80032c8: 1c01 adds r1, r0, #0 80032ca: 5299 strh r1, [r3, r2] break; 80032cc: e06a b.n 80033a4 if(CorrWord[pardata.IIN][pardata.IKU] < 3995) 80032ce: 4b40 ldr r3, [pc, #256] ; (80033d0 ) 80032d0: 88db ldrh r3, [r3, #6] 80032d2: b29b uxth r3, r3 80032d4: 0019 movs r1, r3 80032d6: 4b3e ldr r3, [pc, #248] ; (80033d0 ) 80032d8: 899b ldrh r3, [r3, #12] 80032da: b29b uxth r3, r3 80032dc: 0018 movs r0, r3 80032de: 4a3d ldr r2, [pc, #244] ; (80033d4 ) 80032e0: 000b movs r3, r1 80032e2: 009b lsls r3, r3, #2 80032e4: 185b adds r3, r3, r1 80032e6: 009b lsls r3, r3, #2 80032e8: 181b adds r3, r3, r0 80032ea: 005b lsls r3, r3, #1 80032ec: 5a9b ldrh r3, [r3, r2] 80032ee: b29b uxth r3, r3 80032f0: 4a3b ldr r2, [pc, #236] ; (80033e0 ) 80032f2: 4293 cmp r3, r2 80032f4: d858 bhi.n 80033a8 CorrWord[pardata.IIN][pardata.IKU] += 100; 80032f6: 4b36 ldr r3, [pc, #216] ; (80033d0 ) 80032f8: 88db ldrh r3, [r3, #6] 80032fa: b29a uxth r2, r3 80032fc: 0011 movs r1, r2 80032fe: 4b34 ldr r3, [pc, #208] ; (80033d0 ) 8003300: 899b ldrh r3, [r3, #12] 8003302: b29b uxth r3, r3 8003304: 001c movs r4, r3 8003306: 0010 movs r0, r2 8003308: 001d movs r5, r3 800330a: 4a32 ldr r2, [pc, #200] ; (80033d4 ) 800330c: 0003 movs r3, r0 800330e: 009b lsls r3, r3, #2 8003310: 181b adds r3, r3, r0 8003312: 009b lsls r3, r3, #2 8003314: 195b adds r3, r3, r5 8003316: 005b lsls r3, r3, #1 8003318: 5a9b ldrh r3, [r3, r2] 800331a: b29b uxth r3, r3 800331c: 3364 adds r3, #100 ; 0x64 800331e: b298 uxth r0, r3 8003320: 4a2c ldr r2, [pc, #176] ; (80033d4 ) 8003322: 000b movs r3, r1 8003324: 009b lsls r3, r3, #2 8003326: 185b adds r3, r3, r1 8003328: 009b lsls r3, r3, #2 800332a: 191b adds r3, r3, r4 800332c: 005b lsls r3, r3, #1 800332e: 1c01 adds r1, r0, #0 8003330: 5299 strh r1, [r3, r2] break; 8003332: e039 b.n 80033a8 if(CorrWord[pardata.IIN][pardata.IKU] > 100) 8003334: 4b26 ldr r3, [pc, #152] ; (80033d0 ) 8003336: 88db ldrh r3, [r3, #6] 8003338: b29b uxth r3, r3 800333a: 0019 movs r1, r3 800333c: 4b24 ldr r3, [pc, #144] ; (80033d0 ) 800333e: 899b ldrh r3, [r3, #12] 8003340: b29b uxth r3, r3 8003342: 0018 movs r0, r3 8003344: 4a23 ldr r2, [pc, #140] ; (80033d4 ) 8003346: 000b movs r3, r1 8003348: 009b lsls r3, r3, #2 800334a: 185b adds r3, r3, r1 800334c: 009b lsls r3, r3, #2 800334e: 181b adds r3, r3, r0 8003350: 005b lsls r3, r3, #1 8003352: 5a9b ldrh r3, [r3, r2] 8003354: b29b uxth r3, r3 8003356: 2b64 cmp r3, #100 ; 0x64 8003358: d928 bls.n 80033ac CorrWord[pardata.IIN][pardata.IKU] -= 100; 800335a: 4b1d ldr r3, [pc, #116] ; (80033d0 ) 800335c: 88db ldrh r3, [r3, #6] 800335e: b29a uxth r2, r3 8003360: 0011 movs r1, r2 8003362: 4b1b ldr r3, [pc, #108] ; (80033d0 ) 8003364: 899b ldrh r3, [r3, #12] 8003366: b29b uxth r3, r3 8003368: 001c movs r4, r3 800336a: 0010 movs r0, r2 800336c: 001d movs r5, r3 800336e: 4a19 ldr r2, [pc, #100] ; (80033d4 ) 8003370: 0003 movs r3, r0 8003372: 009b lsls r3, r3, #2 8003374: 181b adds r3, r3, r0 8003376: 009b lsls r3, r3, #2 8003378: 195b adds r3, r3, r5 800337a: 005b lsls r3, r3, #1 800337c: 5a9b ldrh r3, [r3, r2] 800337e: b29b uxth r3, r3 8003380: 3b64 subs r3, #100 ; 0x64 8003382: b298 uxth r0, r3 8003384: 4a13 ldr r2, [pc, #76] ; (80033d4 ) 8003386: 000b movs r3, r1 8003388: 009b lsls r3, r3, #2 800338a: 185b adds r3, r3, r1 800338c: 009b lsls r3, r3, #2 800338e: 191b adds r3, r3, r4 8003390: 005b lsls r3, r3, #1 8003392: 1c01 adds r1, r0, #0 8003394: 5299 strh r1, [r3, r2] break; 8003396: e009 b.n 80033ac break; 8003398: 46c0 nop ; (mov r8, r8) 800339a: e008 b.n 80033ae break; 800339c: 46c0 nop ; (mov r8, r8) 800339e: e006 b.n 80033ae break; 80033a0: 46c0 nop ; (mov r8, r8) 80033a2: e004 b.n 80033ae break; 80033a4: 46c0 nop ; (mov r8, r8) 80033a6: e002 b.n 80033ae break; 80033a8: 46c0 nop ; (mov r8, r8) 80033aa: e000 b.n 80033ae break; 80033ac: 46c0 nop ; (mov r8, r8) SetAndCorrect(); 80033ae: f7fd ff5f bl 8001270 wrCorr(); 80033b2: f7fe fcdb bl 8001d6c for(j = 0; j < 6; j++) { 80033b6: 231f movs r3, #31 80033b8: 18fb adds r3, r7, r3 80033ba: 2200 movs r2, #0 80033bc: 701a strb r2, [r3, #0] 80033be: e022 b.n 8003406 80033c0: 2000028c .word 0x2000028c 80033c4: 20000188 .word 0x20000188 80033c8: 20000035 .word 0x20000035 80033cc: 20000034 .word 0x20000034 80033d0: 20000098 .word 0x20000098 80033d4: 20000048 .word 0x20000048 80033d8: 00000ffe .word 0x00000ffe 80033dc: 00000ff4 .word 0x00000ff4 80033e0: 00000f9a .word 0x00000f9a tx[j] = iobuf[j]; 80033e4: 231f movs r3, #31 80033e6: 18fb adds r3, r7, r3 80033e8: 781b ldrb r3, [r3, #0] 80033ea: 221f movs r2, #31 80033ec: 18ba adds r2, r7, r2 80033ee: 7812 ldrb r2, [r2, #0] 80033f0: 49de ldr r1, [pc, #888] ; (800376c ) 80033f2: 5c89 ldrb r1, [r1, r2] 80033f4: 4ade ldr r2, [pc, #888] ; (8003770 ) 80033f6: 54d1 strb r1, [r2, r3] for(j = 0; j < 6; j++) { 80033f8: 231f movs r3, #31 80033fa: 18fb adds r3, r7, r3 80033fc: 781a ldrb r2, [r3, #0] 80033fe: 231f movs r3, #31 8003400: 18fb adds r3, r7, r3 8003402: 3201 adds r2, #1 8003404: 701a strb r2, [r3, #0] 8003406: 231f movs r3, #31 8003408: 18fb adds r3, r7, r3 800340a: 781b ldrb r3, [r3, #0] 800340c: 2b05 cmp r3, #5 800340e: d9e9 bls.n 80033e4 strtOut(6); 8003410: 2006 movs r0, #6 8003412: f7ff f961 bl 80026d8 break; 8003416: f000 fc14 bl 8003c42 if((regs.ch[0] > (5011 - addr.sh)) || (iobuf[6] != (regs.ch[0] << 1))) 800341a: 230c movs r3, #12 800341c: 18fb adds r3, r7, r3 800341e: 781b ldrb r3, [r3, #0] 8003420: 001a movs r2, r3 8003422: 2310 movs r3, #16 8003424: 18fb adds r3, r7, r3 8003426: 881b ldrh r3, [r3, #0] 8003428: 0019 movs r1, r3 800342a: 4bd2 ldr r3, [pc, #840] ; (8003774 ) 800342c: 1a5b subs r3, r3, r1 800342e: 429a cmp r2, r3 8003430: dc08 bgt.n 8003444 8003432: 4bce ldr r3, [pc, #824] ; (800376c ) 8003434: 799b ldrb r3, [r3, #6] 8003436: 001a movs r2, r3 8003438: 230c movs r3, #12 800343a: 18fb adds r3, r7, r3 800343c: 781b ldrb r3, [r3, #0] 800343e: 005b lsls r3, r3, #1 8003440: 429a cmp r2, r3 8003442: d012 beq.n 800346a tx[0] = iobuf[0]; 8003444: 4bc9 ldr r3, [pc, #804] ; (800376c ) 8003446: 781a ldrb r2, [r3, #0] 8003448: 4bc9 ldr r3, [pc, #804] ; (8003770 ) 800344a: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 800344c: 4bc7 ldr r3, [pc, #796] ; (800376c ) 800344e: 785b ldrb r3, [r3, #1] 8003450: 2280 movs r2, #128 ; 0x80 8003452: 4252 negs r2, r2 8003454: 4313 orrs r3, r2 8003456: b2da uxtb r2, r3 8003458: 4bc5 ldr r3, [pc, #788] ; (8003770 ) 800345a: 705a strb r2, [r3, #1] tx[2] = 0x03; 800345c: 4bc4 ldr r3, [pc, #784] ; (8003770 ) 800345e: 2203 movs r2, #3 8003460: 709a strb r2, [r3, #2] strtOut(3); 8003462: 2003 movs r0, #3 8003464: f7ff f938 bl 80026d8 8003468: e0b6 b.n 80035d8 j = 8 + iobuf[6]; 800346a: 4bc0 ldr r3, [pc, #768] ; (800376c ) 800346c: 799a ldrb r2, [r3, #6] 800346e: 231f movs r3, #31 8003470: 18fb adds r3, r7, r3 8003472: 3208 adds r2, #8 8003474: 701a strb r2, [r3, #0] if(iolen > j) 8003476: 4bc0 ldr r3, [pc, #768] ; (8003778 ) 8003478: 781b ldrb r3, [r3, #0] 800347a: 221f movs r2, #31 800347c: 18ba adds r2, r7, r2 800347e: 7812 ldrb r2, [r2, #0] 8003480: 429a cmp r2, r3 8003482: d301 bcc.n 8003488 8003484: f000 fbdf bl 8003c46 iolen = 0; 8003488: 4bbb ldr r3, [pc, #748] ; (8003778 ) 800348a: 2200 movs r2, #0 800348c: 701a strb r2, [r3, #0] crc.ch[0] = iobuf[j - 1]; 800348e: 231f movs r3, #31 8003490: 18fb adds r3, r7, r3 8003492: 781b ldrb r3, [r3, #0] 8003494: 3b01 subs r3, #1 8003496: 4ab5 ldr r2, [pc, #724] ; (800376c ) 8003498: 5cd2 ldrb r2, [r2, r3] 800349a: 2314 movs r3, #20 800349c: 18fb adds r3, r7, r3 800349e: 701a strb r2, [r3, #0] crc.ch[1] = iobuf[j]; 80034a0: 231f movs r3, #31 80034a2: 18fb adds r3, r7, r3 80034a4: 781b ldrb r3, [r3, #0] 80034a6: 4ab1 ldr r2, [pc, #708] ; (800376c ) 80034a8: 5cd2 ldrb r2, [r2, r3] 80034aa: 2314 movs r3, #20 80034ac: 18fb adds r3, r7, r3 80034ae: 705a strb r2, [r3, #1] if(crc.sh == Crc16(j - 1)) 80034b0: 2314 movs r3, #20 80034b2: 18fb adds r3, r7, r3 80034b4: 881c ldrh r4, [r3, #0] 80034b6: 231f movs r3, #31 80034b8: 18fb adds r3, r7, r3 80034ba: 781b ldrb r3, [r3, #0] 80034bc: b29b uxth r3, r3 80034be: 3b01 subs r3, #1 80034c0: b29b uxth r3, r3 80034c2: 0018 movs r0, r3 80034c4: f7ff f954 bl 8002770 80034c8: 0003 movs r3, r0 80034ca: 429c cmp r4, r3 80034cc: d001 beq.n 80034d2 80034ce: f000 fbba bl 8003c46 pch = (uint8_t *) &pardata.IIN + ((addr.sh - 5001) << 1); 80034d2: 2310 movs r3, #16 80034d4: 18fb adds r3, r7, r3 80034d6: 881b ldrh r3, [r3, #0] 80034d8: 4aa8 ldr r2, [pc, #672] ; (800377c ) 80034da: 4694 mov ip, r2 80034dc: 4463 add r3, ip 80034de: 005b lsls r3, r3, #1 80034e0: 001a movs r2, r3 80034e2: 4ba7 ldr r3, [pc, #668] ; (8003780 ) 80034e4: 18d3 adds r3, r2, r3 80034e6: 61bb str r3, [r7, #24] for(j = 0; j < iobuf[6]; j++) 80034e8: 231f movs r3, #31 80034ea: 18fb adds r3, r7, r3 80034ec: 2200 movs r2, #0 80034ee: 701a strb r2, [r3, #0] 80034f0: e016 b.n 8003520 *(pch + (j ^ 1)) = iobuf[j + 7]; 80034f2: 231f movs r3, #31 80034f4: 18fb adds r3, r7, r3 80034f6: 781b ldrb r3, [r3, #0] 80034f8: 2201 movs r2, #1 80034fa: 4053 eors r3, r2 80034fc: b2db uxtb r3, r3 80034fe: 001a movs r2, r3 8003500: 69bb ldr r3, [r7, #24] 8003502: 189b adds r3, r3, r2 8003504: 221f movs r2, #31 8003506: 18ba adds r2, r7, r2 8003508: 7812 ldrb r2, [r2, #0] 800350a: 3207 adds r2, #7 800350c: 4997 ldr r1, [pc, #604] ; (800376c ) 800350e: 5c8a ldrb r2, [r1, r2] 8003510: 701a strb r2, [r3, #0] for(j = 0; j < iobuf[6]; j++) 8003512: 231f movs r3, #31 8003514: 18fb adds r3, r7, r3 8003516: 781a ldrb r2, [r3, #0] 8003518: 231f movs r3, #31 800351a: 18fb adds r3, r7, r3 800351c: 3201 adds r2, #1 800351e: 701a strb r2, [r3, #0] 8003520: 4b92 ldr r3, [pc, #584] ; (800376c ) 8003522: 799b ldrb r3, [r3, #6] 8003524: 221f movs r2, #31 8003526: 18ba adds r2, r7, r2 8003528: 7812 ldrb r2, [r2, #0] 800352a: 429a cmp r2, r3 800352c: d3e1 bcc.n 80034f2 if((pardata.IIN > ICP) || (pardata.IKU > Ku1000) || (pardata.IFV > Hp10) || (pardata.IFN > Lp100000) || (pardata.VAL > mV)) 800352e: 4b95 ldr r3, [pc, #596] ; (8003784 ) 8003530: 88db ldrh r3, [r3, #6] 8003532: b29b uxth r3, r3 8003534: 2b01 cmp r3, #1 8003536: d813 bhi.n 8003560 8003538: 4b92 ldr r3, [pc, #584] ; (8003784 ) 800353a: 899b ldrh r3, [r3, #12] 800353c: b29b uxth r3, r3 800353e: 2b0c cmp r3, #12 8003540: d80e bhi.n 8003560 8003542: 4b90 ldr r3, [pc, #576] ; (8003784 ) 8003544: 891b ldrh r3, [r3, #8] 8003546: b29b uxth r3, r3 8003548: 2b04 cmp r3, #4 800354a: d809 bhi.n 8003560 800354c: 4b8d ldr r3, [pc, #564] ; (8003784 ) 800354e: 895b ldrh r3, [r3, #10] 8003550: b29b uxth r3, r3 8003552: 2b07 cmp r3, #7 8003554: d804 bhi.n 8003560 8003556: 4b8b ldr r3, [pc, #556] ; (8003784 ) 8003558: 8b1b ldrh r3, [r3, #24] 800355a: b29b uxth r3, r3 800355c: 2b08 cmp r3, #8 800355e: d914 bls.n 800358a rdCorr(); 8003560: f7fe fc62 bl 8001e28 tx[0] = iobuf[0]; 8003564: 4b81 ldr r3, [pc, #516] ; (800376c ) 8003566: 781a ldrb r2, [r3, #0] 8003568: 4b81 ldr r3, [pc, #516] ; (8003770 ) 800356a: 701a strb r2, [r3, #0] tx[1] = (iobuf[1] | 0x80); 800356c: 4b7f ldr r3, [pc, #508] ; (800376c ) 800356e: 785b ldrb r3, [r3, #1] 8003570: 2280 movs r2, #128 ; 0x80 8003572: 4252 negs r2, r2 8003574: 4313 orrs r3, r2 8003576: b2da uxtb r2, r3 8003578: 4b7d ldr r3, [pc, #500] ; (8003770 ) 800357a: 705a strb r2, [r3, #1] tx[2] = 0x03; 800357c: 4b7c ldr r3, [pc, #496] ; (8003770 ) 800357e: 2203 movs r2, #3 8003580: 709a strb r2, [r3, #2] strtOut(3); 8003582: 2003 movs r0, #3 8003584: f7ff f8a8 bl 80026d8 8003588: e026 b.n 80035d8 needSave = true; 800358a: 4b7f ldr r3, [pc, #508] ; (8003788 ) 800358c: 2201 movs r2, #1 800358e: 701a strb r2, [r3, #0] if(iobuf[0]) 8003590: 4b76 ldr r3, [pc, #472] ; (800376c ) 8003592: 781b ldrb r3, [r3, #0] 8003594: 2b00 cmp r3, #0 8003596: d100 bne.n 800359a 8003598: e355 b.n 8003c46 for(j = 0; j < 6; j++) { 800359a: 231f movs r3, #31 800359c: 18fb adds r3, r7, r3 800359e: 2200 movs r2, #0 80035a0: 701a strb r2, [r3, #0] 80035a2: e010 b.n 80035c6 tx[j] = iobuf[j]; 80035a4: 231f movs r3, #31 80035a6: 18fb adds r3, r7, r3 80035a8: 781b ldrb r3, [r3, #0] 80035aa: 221f movs r2, #31 80035ac: 18ba adds r2, r7, r2 80035ae: 7812 ldrb r2, [r2, #0] 80035b0: 496e ldr r1, [pc, #440] ; (800376c ) 80035b2: 5c89 ldrb r1, [r1, r2] 80035b4: 4a6e ldr r2, [pc, #440] ; (8003770 ) 80035b6: 54d1 strb r1, [r2, r3] for(j = 0; j < 6; j++) { 80035b8: 231f movs r3, #31 80035ba: 18fb adds r3, r7, r3 80035bc: 781a ldrb r2, [r3, #0] 80035be: 231f movs r3, #31 80035c0: 18fb adds r3, r7, r3 80035c2: 3201 adds r2, #1 80035c4: 701a strb r2, [r3, #0] 80035c6: 231f movs r3, #31 80035c8: 18fb adds r3, r7, r3 80035ca: 781b ldrb r3, [r3, #0] 80035cc: 2b05 cmp r3, #5 80035ce: d9e9 bls.n 80035a4 strtOut(6); 80035d0: 2006 movs r0, #6 80035d2: f7ff f881 bl 80026d8 break; 80035d6: e336 b.n 8003c46 80035d8: e335 b.n 8003c46 tmp = 3; 80035da: 231e movs r3, #30 80035dc: 18fb adds r3, r7, r3 80035de: 2203 movs r2, #3 80035e0: 701a strb r2, [r3, #0] tmp1 = 2; 80035e2: 231d movs r3, #29 80035e4: 18fb adds r3, r7, r3 80035e6: 2202 movs r2, #2 80035e8: 701a strb r2, [r3, #0] if(addr.sh == 7002) 80035ea: 2310 movs r3, #16 80035ec: 18fb adds r3, r7, r3 80035ee: 881b ldrh r3, [r3, #0] 80035f0: 4a66 ldr r2, [pc, #408] ; (800378c ) 80035f2: 4293 cmp r3, r2 80035f4: d10a bne.n 800360c tmp <<= 1; 80035f6: 231e movs r3, #30 80035f8: 18fa adds r2, r7, r3 80035fa: 231e movs r3, #30 80035fc: 18fb adds r3, r7, r3 80035fe: 781b ldrb r3, [r3, #0] 8003600: 18db adds r3, r3, r3 8003602: 7013 strb r3, [r2, #0] tmp1 = 1; 8003604: 231d movs r3, #29 8003606: 18fb adds r3, r7, r3 8003608: 2201 movs r2, #1 800360a: 701a strb r2, [r3, #0] if((regs.ch[0] > tmp) || (iobuf[6] != (regs.ch[0] << tmp1))) 800360c: 230c movs r3, #12 800360e: 18fb adds r3, r7, r3 8003610: 781b ldrb r3, [r3, #0] 8003612: 221e movs r2, #30 8003614: 18ba adds r2, r7, r2 8003616: 7812 ldrb r2, [r2, #0] 8003618: 429a cmp r2, r3 800361a: d30d bcc.n 8003638 800361c: 4b53 ldr r3, [pc, #332] ; (800376c ) 800361e: 799b ldrb r3, [r3, #6] 8003620: 001a movs r2, r3 8003622: 230c movs r3, #12 8003624: 18fb adds r3, r7, r3 8003626: 781b ldrb r3, [r3, #0] 8003628: 0019 movs r1, r3 800362a: 231d movs r3, #29 800362c: 18fb adds r3, r7, r3 800362e: 781b ldrb r3, [r3, #0] 8003630: 4099 lsls r1, r3 8003632: 000b movs r3, r1 8003634: 429a cmp r2, r3 8003636: d012 beq.n 800365e tx[0] = iobuf[0]; 8003638: 4b4c ldr r3, [pc, #304] ; (800376c ) 800363a: 781a ldrb r2, [r3, #0] 800363c: 4b4c ldr r3, [pc, #304] ; (8003770 ) 800363e: 701a strb r2, [r3, #0] tx[1] |= 0x80; //Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð° функции на ошибку 8003640: 4b4b ldr r3, [pc, #300] ; (8003770 ) 8003642: 785b ldrb r3, [r3, #1] 8003644: 2280 movs r2, #128 ; 0x80 8003646: 4252 negs r2, r2 8003648: 4313 orrs r3, r2 800364a: b2da uxtb r2, r3 800364c: 4b48 ldr r3, [pc, #288] ; (8003770 ) 800364e: 705a strb r2, [r3, #1] tx[2] = 0x03; //ÐÐ´Ñ€ÐµÑ Ð´Ð°Ð½Ð½Ñ‹Ñ… указанный в запроÑе не доÑтупен 8003650: 4b47 ldr r3, [pc, #284] ; (8003770 ) 8003652: 2203 movs r2, #3 8003654: 709a strb r2, [r3, #2] strtOut(3); 8003656: 2003 movs r0, #3 8003658: f7ff f83e bl 80026d8 break; 800365c: e2f5 b.n 8003c4a j = 8 + iobuf[6]; 800365e: 4b43 ldr r3, [pc, #268] ; (800376c ) 8003660: 799a ldrb r2, [r3, #6] 8003662: 231f movs r3, #31 8003664: 18fb adds r3, r7, r3 8003666: 3208 adds r2, #8 8003668: 701a strb r2, [r3, #0] if(iolen > j) 800366a: 4b43 ldr r3, [pc, #268] ; (8003778 ) 800366c: 781b ldrb r3, [r3, #0] 800366e: 221f movs r2, #31 8003670: 18ba adds r2, r7, r2 8003672: 7812 ldrb r2, [r2, #0] 8003674: 429a cmp r2, r3 8003676: d300 bcc.n 800367a 8003678: e2e7 b.n 8003c4a crc.ch[0] = iobuf[j - 1]; 800367a: 231f movs r3, #31 800367c: 18fb adds r3, r7, r3 800367e: 781b ldrb r3, [r3, #0] 8003680: 3b01 subs r3, #1 8003682: 4a3a ldr r2, [pc, #232] ; (800376c ) 8003684: 5cd2 ldrb r2, [r2, r3] 8003686: 2314 movs r3, #20 8003688: 18fb adds r3, r7, r3 800368a: 701a strb r2, [r3, #0] crc.ch[1] = iobuf[j]; 800368c: 231f movs r3, #31 800368e: 18fb adds r3, r7, r3 8003690: 781b ldrb r3, [r3, #0] 8003692: 4a36 ldr r2, [pc, #216] ; (800376c ) 8003694: 5cd2 ldrb r2, [r2, r3] 8003696: 2314 movs r3, #20 8003698: 18fb adds r3, r7, r3 800369a: 705a strb r2, [r3, #1] if(crc.sh == Crc16(j - 1)) 800369c: 2314 movs r3, #20 800369e: 18fb adds r3, r7, r3 80036a0: 881c ldrh r4, [r3, #0] 80036a2: 231f movs r3, #31 80036a4: 18fb adds r3, r7, r3 80036a6: 781b ldrb r3, [r3, #0] 80036a8: b29b uxth r3, r3 80036aa: 3b01 subs r3, #1 80036ac: b29b uxth r3, r3 80036ae: 0018 movs r0, r3 80036b0: f7ff f85e bl 8002770 80036b4: 0003 movs r3, r0 80036b6: 429c cmp r4, r3 80036b8: d000 beq.n 80036bc 80036ba: e2c6 b.n 8003c4a if(iobuf[6] == 4) 80036bc: 4b2b ldr r3, [pc, #172] ; (800376c ) 80036be: 799b ldrb r3, [r3, #6] 80036c0: 2b04 cmp r3, #4 80036c2: d128 bne.n 8003716 for(j = 0; j < 4; j++) 80036c4: 231f movs r3, #31 80036c6: 18fb adds r3, r7, r3 80036c8: 2200 movs r2, #0 80036ca: 701a strb r2, [r3, #0] 80036cc: e014 b.n 80036f8 f.ch[3 - j] = iobuf[7 + j]; 80036ce: 231f movs r3, #31 80036d0: 18fb adds r3, r7, r3 80036d2: 781b ldrb r3, [r3, #0] 80036d4: 2203 movs r2, #3 80036d6: 1ad3 subs r3, r2, r3 80036d8: 221f movs r2, #31 80036da: 18ba adds r2, r7, r2 80036dc: 7812 ldrb r2, [r2, #0] 80036de: 3207 adds r2, #7 80036e0: 4922 ldr r1, [pc, #136] ; (800376c ) 80036e2: 5c89 ldrb r1, [r1, r2] 80036e4: 2208 movs r2, #8 80036e6: 18ba adds r2, r7, r2 80036e8: 54d1 strb r1, [r2, r3] for(j = 0; j < 4; j++) 80036ea: 231f movs r3, #31 80036ec: 18fb adds r3, r7, r3 80036ee: 781a ldrb r2, [r3, #0] 80036f0: 231f movs r3, #31 80036f2: 18fb adds r3, r7, r3 80036f4: 3201 adds r2, #1 80036f6: 701a strb r2, [r3, #0] 80036f8: 231f movs r3, #31 80036fa: 18fb adds r3, r7, r3 80036fc: 781b ldrb r3, [r3, #0] 80036fe: 2b03 cmp r3, #3 8003700: d9e5 bls.n 80036ce pardata.KCOND = f.fl; 8003702: 68ba ldr r2, [r7, #8] 8003704: 4b1f ldr r3, [pc, #124] ; (8003784 ) 8003706: 61da str r2, [r3, #28] needSave = true; 8003708: 4b1f ldr r3, [pc, #124] ; (8003788 ) 800370a: 2201 movs r2, #1 800370c: 701a strb r2, [r3, #0] strtOut(6); 800370e: 2006 movs r0, #6 8003710: f7fe ffe2 bl 80026d8 break; 8003714: e299 b.n 8003c4a if(iobuf[6] == 8) 8003716: 4b15 ldr r3, [pc, #84] ; (800376c ) 8003718: 799b ldrb r3, [r3, #6] 800371a: 2b08 cmp r3, #8 800371c: d15c bne.n 80037d8 for(j = 0; j < 4; j++) 800371e: 231f movs r3, #31 8003720: 18fb adds r3, r7, r3 8003722: 2200 movs r2, #0 8003724: 701a strb r2, [r3, #0] 8003726: e014 b.n 8003752 f.ch[3 - j] = iobuf[7 + j]; 8003728: 231f movs r3, #31 800372a: 18fb adds r3, r7, r3 800372c: 781b ldrb r3, [r3, #0] 800372e: 2203 movs r2, #3 8003730: 1ad3 subs r3, r2, r3 8003732: 221f movs r2, #31 8003734: 18ba adds r2, r7, r2 8003736: 7812 ldrb r2, [r2, #0] 8003738: 3207 adds r2, #7 800373a: 490c ldr r1, [pc, #48] ; (800376c ) 800373c: 5c89 ldrb r1, [r1, r2] 800373e: 2208 movs r2, #8 8003740: 18ba adds r2, r7, r2 8003742: 54d1 strb r1, [r2, r3] for(j = 0; j < 4; j++) 8003744: 231f movs r3, #31 8003746: 18fb adds r3, r7, r3 8003748: 781a ldrb r2, [r3, #0] 800374a: 231f movs r3, #31 800374c: 18fb adds r3, r7, r3 800374e: 3201 adds r2, #1 8003750: 701a strb r2, [r3, #0] 8003752: 231f movs r3, #31 8003754: 18fb adds r3, r7, r3 8003756: 781b ldrb r3, [r3, #0] 8003758: 2b03 cmp r3, #3 800375a: d9e5 bls.n 8003728 pardata.KCOND = f.fl; 800375c: 68ba ldr r2, [r7, #8] 800375e: 4b09 ldr r3, [pc, #36] ; (8003784 ) 8003760: 61da str r2, [r3, #28] for(j = 0; j < 4; j++) 8003762: 231f movs r3, #31 8003764: 18fb adds r3, r7, r3 8003766: 2200 movs r2, #0 8003768: 701a strb r2, [r3, #0] 800376a: e026 b.n 80037ba 800376c: 2000028c .word 0x2000028c 8003770: 20000188 .word 0x20000188 8003774: 00001393 .word 0x00001393 8003778: 20000035 .word 0x20000035 800377c: ffffec77 .word 0xffffec77 8003780: 2000009e .word 0x2000009e 8003784: 20000098 .word 0x20000098 8003788: 20000037 .word 0x20000037 800378c: 00001b5a .word 0x00001b5a f.ch[3 - j] = iobuf[11 + j]; 8003790: 231f movs r3, #31 8003792: 18fb adds r3, r7, r3 8003794: 781b ldrb r3, [r3, #0] 8003796: 2203 movs r2, #3 8003798: 1ad3 subs r3, r2, r3 800379a: 221f movs r2, #31 800379c: 18ba adds r2, r7, r2 800379e: 7812 ldrb r2, [r2, #0] 80037a0: 320b adds r2, #11 80037a2: 49df ldr r1, [pc, #892] ; (8003b20 ) 80037a4: 5c89 ldrb r1, [r1, r2] 80037a6: 2208 movs r2, #8 80037a8: 18ba adds r2, r7, r2 80037aa: 54d1 strb r1, [r2, r3] for(j = 0; j < 4; j++) 80037ac: 231f movs r3, #31 80037ae: 18fb adds r3, r7, r3 80037b0: 781a ldrb r2, [r3, #0] 80037b2: 231f movs r3, #31 80037b4: 18fb adds r3, r7, r3 80037b6: 3201 adds r2, #1 80037b8: 701a strb r2, [r3, #0] 80037ba: 231f movs r3, #31 80037bc: 18fb adds r3, r7, r3 80037be: 781b ldrb r3, [r3, #0] 80037c0: 2b03 cmp r3, #3 80037c2: d9e5 bls.n 8003790 pardata.SENS = f.fl; 80037c4: 68ba ldr r2, [r7, #8] 80037c6: 4bd7 ldr r3, [pc, #860] ; (8003b24 ) 80037c8: 621a str r2, [r3, #32] needSave = true; 80037ca: 4bd7 ldr r3, [pc, #860] ; (8003b28 ) 80037cc: 2201 movs r2, #1 80037ce: 701a strb r2, [r3, #0] strtOut(6); 80037d0: 2006 movs r0, #6 80037d2: f7fe ff81 bl 80026d8 break; 80037d6: e238 b.n 8003c4a if(iobuf[6] == 12) 80037d8: 4bd1 ldr r3, [pc, #836] ; (8003b20 ) 80037da: 799b ldrb r3, [r3, #6] 80037dc: 2b0c cmp r3, #12 80037de: d16c bne.n 80038ba for(j = 0; j < 4; j++) 80037e0: 231f movs r3, #31 80037e2: 18fb adds r3, r7, r3 80037e4: 2200 movs r2, #0 80037e6: 701a strb r2, [r3, #0] 80037e8: e014 b.n 8003814 f.ch[3 - j] = iobuf[7 + j]; 80037ea: 231f movs r3, #31 80037ec: 18fb adds r3, r7, r3 80037ee: 781b ldrb r3, [r3, #0] 80037f0: 2203 movs r2, #3 80037f2: 1ad3 subs r3, r2, r3 80037f4: 221f movs r2, #31 80037f6: 18ba adds r2, r7, r2 80037f8: 7812 ldrb r2, [r2, #0] 80037fa: 3207 adds r2, #7 80037fc: 49c8 ldr r1, [pc, #800] ; (8003b20 ) 80037fe: 5c89 ldrb r1, [r1, r2] 8003800: 2208 movs r2, #8 8003802: 18ba adds r2, r7, r2 8003804: 54d1 strb r1, [r2, r3] for(j = 0; j < 4; j++) 8003806: 231f movs r3, #31 8003808: 18fb adds r3, r7, r3 800380a: 781a ldrb r2, [r3, #0] 800380c: 231f movs r3, #31 800380e: 18fb adds r3, r7, r3 8003810: 3201 adds r2, #1 8003812: 701a strb r2, [r3, #0] 8003814: 231f movs r3, #31 8003816: 18fb adds r3, r7, r3 8003818: 781b ldrb r3, [r3, #0] 800381a: 2b03 cmp r3, #3 800381c: d9e5 bls.n 80037ea pardata.KCOND = f.fl; 800381e: 68ba ldr r2, [r7, #8] 8003820: 4bc0 ldr r3, [pc, #768] ; (8003b24 ) 8003822: 61da str r2, [r3, #28] for(j = 0; j < 4; j++) 8003824: 231f movs r3, #31 8003826: 18fb adds r3, r7, r3 8003828: 2200 movs r2, #0 800382a: 701a strb r2, [r3, #0] 800382c: e014 b.n 8003858 f.ch[3 - j] = iobuf[11 + j]; 800382e: 231f movs r3, #31 8003830: 18fb adds r3, r7, r3 8003832: 781b ldrb r3, [r3, #0] 8003834: 2203 movs r2, #3 8003836: 1ad3 subs r3, r2, r3 8003838: 221f movs r2, #31 800383a: 18ba adds r2, r7, r2 800383c: 7812 ldrb r2, [r2, #0] 800383e: 320b adds r2, #11 8003840: 49b7 ldr r1, [pc, #732] ; (8003b20 ) 8003842: 5c89 ldrb r1, [r1, r2] 8003844: 2208 movs r2, #8 8003846: 18ba adds r2, r7, r2 8003848: 54d1 strb r1, [r2, r3] for(j = 0; j < 4; j++) 800384a: 231f movs r3, #31 800384c: 18fb adds r3, r7, r3 800384e: 781a ldrb r2, [r3, #0] 8003850: 231f movs r3, #31 8003852: 18fb adds r3, r7, r3 8003854: 3201 adds r2, #1 8003856: 701a strb r2, [r3, #0] 8003858: 231f movs r3, #31 800385a: 18fb adds r3, r7, r3 800385c: 781b ldrb r3, [r3, #0] 800385e: 2b03 cmp r3, #3 8003860: d9e5 bls.n 800382e pardata.SENS = f.fl; 8003862: 68ba ldr r2, [r7, #8] 8003864: 4baf ldr r3, [pc, #700] ; (8003b24 ) 8003866: 621a str r2, [r3, #32] for(j = 0; j < 4; j++) 8003868: 231f movs r3, #31 800386a: 18fb adds r3, r7, r3 800386c: 2200 movs r2, #0 800386e: 701a strb r2, [r3, #0] 8003870: e014 b.n 800389c f.ch[3 - j] = iobuf[15 + j]; 8003872: 231f movs r3, #31 8003874: 18fb adds r3, r7, r3 8003876: 781b ldrb r3, [r3, #0] 8003878: 2203 movs r2, #3 800387a: 1ad3 subs r3, r2, r3 800387c: 221f movs r2, #31 800387e: 18ba adds r2, r7, r2 8003880: 7812 ldrb r2, [r2, #0] 8003882: 320f adds r2, #15 8003884: 49a6 ldr r1, [pc, #664] ; (8003b20 ) 8003886: 5c89 ldrb r1, [r1, r2] 8003888: 2208 movs r2, #8 800388a: 18ba adds r2, r7, r2 800388c: 54d1 strb r1, [r2, r3] for(j = 0; j < 4; j++) 800388e: 231f movs r3, #31 8003890: 18fb adds r3, r7, r3 8003892: 781a ldrb r2, [r3, #0] 8003894: 231f movs r3, #31 8003896: 18fb adds r3, r7, r3 8003898: 3201 adds r2, #1 800389a: 701a strb r2, [r3, #0] 800389c: 231f movs r3, #31 800389e: 18fb adds r3, r7, r3 80038a0: 781b ldrb r3, [r3, #0] 80038a2: 2b03 cmp r3, #3 80038a4: d9e5 bls.n 8003872 pardata.ACCEL = f.fl; 80038a6: 68ba ldr r2, [r7, #8] 80038a8: 4b9e ldr r3, [pc, #632] ; (8003b24 ) 80038aa: 625a str r2, [r3, #36] ; 0x24 needSave = true; 80038ac: 4b9e ldr r3, [pc, #632] ; (8003b28 ) 80038ae: 2201 movs r2, #1 80038b0: 701a strb r2, [r3, #0] strtOut(6); 80038b2: 2006 movs r0, #6 80038b4: f7fe ff10 bl 80026d8 break; 80038b8: e1c7 b.n 8003c4a tx[0] = iobuf[0]; 80038ba: 4b99 ldr r3, [pc, #612] ; (8003b20 ) 80038bc: 781a ldrb r2, [r3, #0] 80038be: 4b9b ldr r3, [pc, #620] ; (8003b2c ) 80038c0: 701a strb r2, [r3, #0] tx[1] |= 0x80; //Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð° функции на ошибку 80038c2: 4b9a ldr r3, [pc, #616] ; (8003b2c ) 80038c4: 785b ldrb r3, [r3, #1] 80038c6: 2280 movs r2, #128 ; 0x80 80038c8: 4252 negs r2, r2 80038ca: 4313 orrs r3, r2 80038cc: b2da uxtb r2, r3 80038ce: 4b97 ldr r3, [pc, #604] ; (8003b2c ) 80038d0: 705a strb r2, [r3, #1] tx[2] = 0x03; //ÐÐ´Ñ€ÐµÑ Ð´Ð°Ð½Ð½Ñ‹Ñ… указанный в запроÑе не доÑтупен 80038d2: 4b96 ldr r3, [pc, #600] ; (8003b2c ) 80038d4: 2203 movs r2, #3 80038d6: 709a strb r2, [r3, #2] strtOut(3); 80038d8: 2003 movs r0, #3 80038da: f7fe fefd bl 80026d8 break; 80038de: e1b4 b.n 8003c4a tmp = 2; 80038e0: 231e movs r3, #30 80038e2: 18fb adds r3, r7, r3 80038e4: 2202 movs r2, #2 80038e6: 701a strb r2, [r3, #0] tmp1 = 2; 80038e8: 231d movs r3, #29 80038ea: 18fb adds r3, r7, r3 80038ec: 2202 movs r2, #2 80038ee: 701a strb r2, [r3, #0] if(addr.sh == 7004) 80038f0: 2310 movs r3, #16 80038f2: 18fb adds r3, r7, r3 80038f4: 881b ldrh r3, [r3, #0] 80038f6: 4a8e ldr r2, [pc, #568] ; (8003b30 ) 80038f8: 4293 cmp r3, r2 80038fa: d10a bne.n 8003912 tmp <<= 1; 80038fc: 231e movs r3, #30 80038fe: 18fa adds r2, r7, r3 8003900: 231e movs r3, #30 8003902: 18fb adds r3, r7, r3 8003904: 781b ldrb r3, [r3, #0] 8003906: 18db adds r3, r3, r3 8003908: 7013 strb r3, [r2, #0] tmp1 = 1; 800390a: 231d movs r3, #29 800390c: 18fb adds r3, r7, r3 800390e: 2201 movs r2, #1 8003910: 701a strb r2, [r3, #0] if((regs.ch[0] > tmp) || (iobuf[6] != (regs.ch[0] << tmp1))) 8003912: 230c movs r3, #12 8003914: 18fb adds r3, r7, r3 8003916: 781b ldrb r3, [r3, #0] 8003918: 221e movs r2, #30 800391a: 18ba adds r2, r7, r2 800391c: 7812 ldrb r2, [r2, #0] 800391e: 429a cmp r2, r3 8003920: d30d bcc.n 800393e 8003922: 4b7f ldr r3, [pc, #508] ; (8003b20 ) 8003924: 799b ldrb r3, [r3, #6] 8003926: 001a movs r2, r3 8003928: 230c movs r3, #12 800392a: 18fb adds r3, r7, r3 800392c: 781b ldrb r3, [r3, #0] 800392e: 0019 movs r1, r3 8003930: 231d movs r3, #29 8003932: 18fb adds r3, r7, r3 8003934: 781b ldrb r3, [r3, #0] 8003936: 4099 lsls r1, r3 8003938: 000b movs r3, r1 800393a: 429a cmp r2, r3 800393c: d012 beq.n 8003964 tx[0] = iobuf[0]; 800393e: 4b78 ldr r3, [pc, #480] ; (8003b20 ) 8003940: 781a ldrb r2, [r3, #0] 8003942: 4b7a ldr r3, [pc, #488] ; (8003b2c ) 8003944: 701a strb r2, [r3, #0] tx[1] |= 0x80; //Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð° функции на ошибку 8003946: 4b79 ldr r3, [pc, #484] ; (8003b2c ) 8003948: 785b ldrb r3, [r3, #1] 800394a: 2280 movs r2, #128 ; 0x80 800394c: 4252 negs r2, r2 800394e: 4313 orrs r3, r2 8003950: b2da uxtb r2, r3 8003952: 4b76 ldr r3, [pc, #472] ; (8003b2c ) 8003954: 705a strb r2, [r3, #1] tx[2] = 0x03; //ÐÐ´Ñ€ÐµÑ Ð´Ð°Ð½Ð½Ñ‹Ñ… указанный в запроÑе не доÑтупен 8003956: 4b75 ldr r3, [pc, #468] ; (8003b2c ) 8003958: 2203 movs r2, #3 800395a: 709a strb r2, [r3, #2] strtOut(3); 800395c: 2003 movs r0, #3 800395e: f7fe febb bl 80026d8 break; 8003962: e174 b.n 8003c4e j = 8 + iobuf[6]; 8003964: 4b6e ldr r3, [pc, #440] ; (8003b20 ) 8003966: 799a ldrb r2, [r3, #6] 8003968: 231f movs r3, #31 800396a: 18fb adds r3, r7, r3 800396c: 3208 adds r2, #8 800396e: 701a strb r2, [r3, #0] if(iolen > j) 8003970: 4b70 ldr r3, [pc, #448] ; (8003b34 ) 8003972: 781b ldrb r3, [r3, #0] 8003974: 221f movs r2, #31 8003976: 18ba adds r2, r7, r2 8003978: 7812 ldrb r2, [r2, #0] 800397a: 429a cmp r2, r3 800397c: d300 bcc.n 8003980 800397e: e166 b.n 8003c4e crc.ch[0] = iobuf[j - 1]; 8003980: 231f movs r3, #31 8003982: 18fb adds r3, r7, r3 8003984: 781b ldrb r3, [r3, #0] 8003986: 3b01 subs r3, #1 8003988: 4a65 ldr r2, [pc, #404] ; (8003b20 ) 800398a: 5cd2 ldrb r2, [r2, r3] 800398c: 2314 movs r3, #20 800398e: 18fb adds r3, r7, r3 8003990: 701a strb r2, [r3, #0] crc.ch[1] = iobuf[j]; 8003992: 231f movs r3, #31 8003994: 18fb adds r3, r7, r3 8003996: 781b ldrb r3, [r3, #0] 8003998: 4a61 ldr r2, [pc, #388] ; (8003b20 ) 800399a: 5cd2 ldrb r2, [r2, r3] 800399c: 2314 movs r3, #20 800399e: 18fb adds r3, r7, r3 80039a0: 705a strb r2, [r3, #1] if(crc.sh == Crc16(j - 1)) 80039a2: 2314 movs r3, #20 80039a4: 18fb adds r3, r7, r3 80039a6: 881c ldrh r4, [r3, #0] 80039a8: 231f movs r3, #31 80039aa: 18fb adds r3, r7, r3 80039ac: 781b ldrb r3, [r3, #0] 80039ae: b29b uxth r3, r3 80039b0: 3b01 subs r3, #1 80039b2: b29b uxth r3, r3 80039b4: 0018 movs r0, r3 80039b6: f7fe fedb bl 8002770 80039ba: 0003 movs r3, r0 80039bc: 429c cmp r4, r3 80039be: d000 beq.n 80039c2 80039c0: e145 b.n 8003c4e if(iobuf[6] == 4) 80039c2: 4b57 ldr r3, [pc, #348] ; (8003b20 ) 80039c4: 799b ldrb r3, [r3, #6] 80039c6: 2b04 cmp r3, #4 80039c8: d128 bne.n 8003a1c for(j = 0; j < 4; j++) 80039ca: 231f movs r3, #31 80039cc: 18fb adds r3, r7, r3 80039ce: 2200 movs r2, #0 80039d0: 701a strb r2, [r3, #0] 80039d2: e014 b.n 80039fe f.ch[3 - j] = iobuf[7 + j]; 80039d4: 231f movs r3, #31 80039d6: 18fb adds r3, r7, r3 80039d8: 781b ldrb r3, [r3, #0] 80039da: 2203 movs r2, #3 80039dc: 1ad3 subs r3, r2, r3 80039de: 221f movs r2, #31 80039e0: 18ba adds r2, r7, r2 80039e2: 7812 ldrb r2, [r2, #0] 80039e4: 3207 adds r2, #7 80039e6: 494e ldr r1, [pc, #312] ; (8003b20 ) 80039e8: 5c89 ldrb r1, [r1, r2] 80039ea: 2208 movs r2, #8 80039ec: 18ba adds r2, r7, r2 80039ee: 54d1 strb r1, [r2, r3] for(j = 0; j < 4; j++) 80039f0: 231f movs r3, #31 80039f2: 18fb adds r3, r7, r3 80039f4: 781a ldrb r2, [r3, #0] 80039f6: 231f movs r3, #31 80039f8: 18fb adds r3, r7, r3 80039fa: 3201 adds r2, #1 80039fc: 701a strb r2, [r3, #0] 80039fe: 231f movs r3, #31 8003a00: 18fb adds r3, r7, r3 8003a02: 781b ldrb r3, [r3, #0] 8003a04: 2b03 cmp r3, #3 8003a06: d9e5 bls.n 80039d4 pardata.SENS = f.fl; 8003a08: 68ba ldr r2, [r7, #8] 8003a0a: 4b46 ldr r3, [pc, #280] ; (8003b24 ) 8003a0c: 621a str r2, [r3, #32] needSave = true; 8003a0e: 4b46 ldr r3, [pc, #280] ; (8003b28 ) 8003a10: 2201 movs r2, #1 8003a12: 701a strb r2, [r3, #0] strtOut(6); 8003a14: 2006 movs r0, #6 8003a16: f7fe fe5f bl 80026d8 break; 8003a1a: e118 b.n 8003c4e if(iobuf[6] == 8) 8003a1c: 4b40 ldr r3, [pc, #256] ; (8003b20 ) 8003a1e: 799b ldrb r3, [r3, #6] 8003a20: 2b08 cmp r3, #8 8003a22: d128 bne.n 8003a76 for(j = 0; j < 4; j++) 8003a24: 231f movs r3, #31 8003a26: 18fb adds r3, r7, r3 8003a28: 2200 movs r2, #0 8003a2a: 701a strb r2, [r3, #0] 8003a2c: e014 b.n 8003a58 f.ch[3 - j] = iobuf[7 + j]; 8003a2e: 231f movs r3, #31 8003a30: 18fb adds r3, r7, r3 8003a32: 781b ldrb r3, [r3, #0] 8003a34: 2203 movs r2, #3 8003a36: 1ad3 subs r3, r2, r3 8003a38: 221f movs r2, #31 8003a3a: 18ba adds r2, r7, r2 8003a3c: 7812 ldrb r2, [r2, #0] 8003a3e: 3207 adds r2, #7 8003a40: 4937 ldr r1, [pc, #220] ; (8003b20 ) 8003a42: 5c89 ldrb r1, [r1, r2] 8003a44: 2208 movs r2, #8 8003a46: 18ba adds r2, r7, r2 8003a48: 54d1 strb r1, [r2, r3] for(j = 0; j < 4; j++) 8003a4a: 231f movs r3, #31 8003a4c: 18fb adds r3, r7, r3 8003a4e: 781a ldrb r2, [r3, #0] 8003a50: 231f movs r3, #31 8003a52: 18fb adds r3, r7, r3 8003a54: 3201 adds r2, #1 8003a56: 701a strb r2, [r3, #0] 8003a58: 231f movs r3, #31 8003a5a: 18fb adds r3, r7, r3 8003a5c: 781b ldrb r3, [r3, #0] 8003a5e: 2b03 cmp r3, #3 8003a60: d9e5 bls.n 8003a2e pardata.ACCEL = f.fl; 8003a62: 68ba ldr r2, [r7, #8] 8003a64: 4b2f ldr r3, [pc, #188] ; (8003b24 ) 8003a66: 625a str r2, [r3, #36] ; 0x24 needSave = true; 8003a68: 4b2f ldr r3, [pc, #188] ; (8003b28 ) 8003a6a: 2201 movs r2, #1 8003a6c: 701a strb r2, [r3, #0] strtOut(6); 8003a6e: 2006 movs r0, #6 8003a70: f7fe fe32 bl 80026d8 break; 8003a74: e0eb b.n 8003c4e tx[0] = iobuf[0]; 8003a76: 4b2a ldr r3, [pc, #168] ; (8003b20 ) 8003a78: 781a ldrb r2, [r3, #0] 8003a7a: 4b2c ldr r3, [pc, #176] ; (8003b2c ) 8003a7c: 701a strb r2, [r3, #0] tx[1] |= 0x80; //Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð° функции на ошибку 8003a7e: 4b2b ldr r3, [pc, #172] ; (8003b2c ) 8003a80: 785b ldrb r3, [r3, #1] 8003a82: 2280 movs r2, #128 ; 0x80 8003a84: 4252 negs r2, r2 8003a86: 4313 orrs r3, r2 8003a88: b2da uxtb r2, r3 8003a8a: 4b28 ldr r3, [pc, #160] ; (8003b2c ) 8003a8c: 705a strb r2, [r3, #1] tx[2] = 0x03; //ÐÐ´Ñ€ÐµÑ Ð´Ð°Ð½Ð½Ñ‹Ñ… указанный в запроÑе не доÑтупен 8003a8e: 4b27 ldr r3, [pc, #156] ; (8003b2c ) 8003a90: 2203 movs r2, #3 8003a92: 709a strb r2, [r3, #2] strtOut(3); 8003a94: 2003 movs r0, #3 8003a96: f7fe fe1f bl 80026d8 break; 8003a9a: e0d8 b.n 8003c4e tmp = 1; 8003a9c: 231e movs r3, #30 8003a9e: 18fb adds r3, r7, r3 8003aa0: 2201 movs r2, #1 8003aa2: 701a strb r2, [r3, #0] tmp1 = 2; 8003aa4: 231d movs r3, #29 8003aa6: 18fb adds r3, r7, r3 8003aa8: 2202 movs r2, #2 8003aaa: 701a strb r2, [r3, #0] if(addr.sh == 7006) 8003aac: 2310 movs r3, #16 8003aae: 18fb adds r3, r7, r3 8003ab0: 881b ldrh r3, [r3, #0] 8003ab2: 4a21 ldr r2, [pc, #132] ; (8003b38 ) 8003ab4: 4293 cmp r3, r2 8003ab6: d10a bne.n 8003ace tmp <<= 1; 8003ab8: 231e movs r3, #30 8003aba: 18fa adds r2, r7, r3 8003abc: 231e movs r3, #30 8003abe: 18fb adds r3, r7, r3 8003ac0: 781b ldrb r3, [r3, #0] 8003ac2: 18db adds r3, r3, r3 8003ac4: 7013 strb r3, [r2, #0] tmp1 = 1; 8003ac6: 231d movs r3, #29 8003ac8: 18fb adds r3, r7, r3 8003aca: 2201 movs r2, #1 8003acc: 701a strb r2, [r3, #0] if((regs.ch[0] > tmp) || (iobuf[6] != (regs.ch[0] << tmp1))) 8003ace: 230c movs r3, #12 8003ad0: 18fb adds r3, r7, r3 8003ad2: 781b ldrb r3, [r3, #0] 8003ad4: 221e movs r2, #30 8003ad6: 18ba adds r2, r7, r2 8003ad8: 7812 ldrb r2, [r2, #0] 8003ada: 429a cmp r2, r3 8003adc: d30d bcc.n 8003afa 8003ade: 4b10 ldr r3, [pc, #64] ; (8003b20 ) 8003ae0: 799b ldrb r3, [r3, #6] 8003ae2: 001a movs r2, r3 8003ae4: 230c movs r3, #12 8003ae6: 18fb adds r3, r7, r3 8003ae8: 781b ldrb r3, [r3, #0] 8003aea: 0019 movs r1, r3 8003aec: 231d movs r3, #29 8003aee: 18fb adds r3, r7, r3 8003af0: 781b ldrb r3, [r3, #0] 8003af2: 4099 lsls r1, r3 8003af4: 000b movs r3, r1 8003af6: 429a cmp r2, r3 8003af8: d020 beq.n 8003b3c tx[0] = iobuf[0]; 8003afa: 4b09 ldr r3, [pc, #36] ; (8003b20 ) 8003afc: 781a ldrb r2, [r3, #0] 8003afe: 4b0b ldr r3, [pc, #44] ; (8003b2c ) 8003b00: 701a strb r2, [r3, #0] tx[1] |= 0x80; //Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð° функции на ошибку 8003b02: 4b0a ldr r3, [pc, #40] ; (8003b2c ) 8003b04: 785b ldrb r3, [r3, #1] 8003b06: 2280 movs r2, #128 ; 0x80 8003b08: 4252 negs r2, r2 8003b0a: 4313 orrs r3, r2 8003b0c: b2da uxtb r2, r3 8003b0e: 4b07 ldr r3, [pc, #28] ; (8003b2c ) 8003b10: 705a strb r2, [r3, #1] tx[2] = 0x03; //ÐÐ´Ñ€ÐµÑ Ð´Ð°Ð½Ð½Ñ‹Ñ… указанный в запроÑе не доÑтупен 8003b12: 4b06 ldr r3, [pc, #24] ; (8003b2c ) 8003b14: 2203 movs r2, #3 8003b16: 709a strb r2, [r3, #2] strtOut(3); 8003b18: 2003 movs r0, #3 8003b1a: f7fe fddd bl 80026d8 break; 8003b1e: e098 b.n 8003c52 8003b20: 2000028c .word 0x2000028c 8003b24: 20000098 .word 0x20000098 8003b28: 20000037 .word 0x20000037 8003b2c: 20000188 .word 0x20000188 8003b30: 00001b5c .word 0x00001b5c 8003b34: 20000035 .word 0x20000035 8003b38: 00001b5e .word 0x00001b5e j = 8 + iobuf[6]; 8003b3c: 4b48 ldr r3, [pc, #288] ; (8003c60 ) 8003b3e: 799a ldrb r2, [r3, #6] 8003b40: 231f movs r3, #31 8003b42: 18fb adds r3, r7, r3 8003b44: 3208 adds r2, #8 8003b46: 701a strb r2, [r3, #0] if(iolen > j) 8003b48: 4b46 ldr r3, [pc, #280] ; (8003c64 ) 8003b4a: 781b ldrb r3, [r3, #0] 8003b4c: 221f movs r2, #31 8003b4e: 18ba adds r2, r7, r2 8003b50: 7812 ldrb r2, [r2, #0] 8003b52: 429a cmp r2, r3 8003b54: d300 bcc.n 8003b58 8003b56: e07c b.n 8003c52 crc.ch[0] = iobuf[j - 1]; 8003b58: 231f movs r3, #31 8003b5a: 18fb adds r3, r7, r3 8003b5c: 781b ldrb r3, [r3, #0] 8003b5e: 3b01 subs r3, #1 8003b60: 4a3f ldr r2, [pc, #252] ; (8003c60 ) 8003b62: 5cd2 ldrb r2, [r2, r3] 8003b64: 2314 movs r3, #20 8003b66: 18fb adds r3, r7, r3 8003b68: 701a strb r2, [r3, #0] crc.ch[1] = iobuf[j]; 8003b6a: 231f movs r3, #31 8003b6c: 18fb adds r3, r7, r3 8003b6e: 781b ldrb r3, [r3, #0] 8003b70: 4a3b ldr r2, [pc, #236] ; (8003c60 ) 8003b72: 5cd2 ldrb r2, [r2, r3] 8003b74: 2314 movs r3, #20 8003b76: 18fb adds r3, r7, r3 8003b78: 705a strb r2, [r3, #1] if(crc.sh == Crc16(j - 1)) 8003b7a: 2314 movs r3, #20 8003b7c: 18fb adds r3, r7, r3 8003b7e: 881c ldrh r4, [r3, #0] 8003b80: 231f movs r3, #31 8003b82: 18fb adds r3, r7, r3 8003b84: 781b ldrb r3, [r3, #0] 8003b86: b29b uxth r3, r3 8003b88: 3b01 subs r3, #1 8003b8a: b29b uxth r3, r3 8003b8c: 0018 movs r0, r3 8003b8e: f7fe fdef bl 8002770 8003b92: 0003 movs r3, r0 8003b94: 429c cmp r4, r3 8003b96: d15c bne.n 8003c52 if(iobuf[6] == 4) 8003b98: 4b31 ldr r3, [pc, #196] ; (8003c60 ) 8003b9a: 799b ldrb r3, [r3, #6] 8003b9c: 2b04 cmp r3, #4 8003b9e: d128 bne.n 8003bf2 for(j = 0; j < 4; j++) 8003ba0: 231f movs r3, #31 8003ba2: 18fb adds r3, r7, r3 8003ba4: 2200 movs r2, #0 8003ba6: 701a strb r2, [r3, #0] 8003ba8: e014 b.n 8003bd4 f.ch[3 - j] = iobuf[3 + j]; 8003baa: 231f movs r3, #31 8003bac: 18fb adds r3, r7, r3 8003bae: 781b ldrb r3, [r3, #0] 8003bb0: 2203 movs r2, #3 8003bb2: 1ad3 subs r3, r2, r3 8003bb4: 221f movs r2, #31 8003bb6: 18ba adds r2, r7, r2 8003bb8: 7812 ldrb r2, [r2, #0] 8003bba: 3203 adds r2, #3 8003bbc: 4928 ldr r1, [pc, #160] ; (8003c60 ) 8003bbe: 5c89 ldrb r1, [r1, r2] 8003bc0: 2208 movs r2, #8 8003bc2: 18ba adds r2, r7, r2 8003bc4: 54d1 strb r1, [r2, r3] for(j = 0; j < 4; j++) 8003bc6: 231f movs r3, #31 8003bc8: 18fb adds r3, r7, r3 8003bca: 781a ldrb r2, [r3, #0] 8003bcc: 231f movs r3, #31 8003bce: 18fb adds r3, r7, r3 8003bd0: 3201 adds r2, #1 8003bd2: 701a strb r2, [r3, #0] 8003bd4: 231f movs r3, #31 8003bd6: 18fb adds r3, r7, r3 8003bd8: 781b ldrb r3, [r3, #0] 8003bda: 2b03 cmp r3, #3 8003bdc: d9e5 bls.n 8003baa pardata.ACCEL = f.fl; 8003bde: 68ba ldr r2, [r7, #8] 8003be0: 4b21 ldr r3, [pc, #132] ; (8003c68 ) 8003be2: 625a str r2, [r3, #36] ; 0x24 needSave = true; 8003be4: 4b21 ldr r3, [pc, #132] ; (8003c6c ) 8003be6: 2201 movs r2, #1 8003be8: 701a strb r2, [r3, #0] strtOut(6); 8003bea: 2006 movs r0, #6 8003bec: f7fe fd74 bl 80026d8 break; 8003bf0: e02f b.n 8003c52 tx[0] = iobuf[0]; 8003bf2: 4b1b ldr r3, [pc, #108] ; (8003c60 ) 8003bf4: 781a ldrb r2, [r3, #0] 8003bf6: 4b1e ldr r3, [pc, #120] ; (8003c70 ) 8003bf8: 701a strb r2, [r3, #0] tx[1] |= 0x80; //Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð° функции на ошибку 8003bfa: 4b1d ldr r3, [pc, #116] ; (8003c70 ) 8003bfc: 785b ldrb r3, [r3, #1] 8003bfe: 2280 movs r2, #128 ; 0x80 8003c00: 4252 negs r2, r2 8003c02: 4313 orrs r3, r2 8003c04: b2da uxtb r2, r3 8003c06: 4b1a ldr r3, [pc, #104] ; (8003c70 ) 8003c08: 705a strb r2, [r3, #1] tx[2] = 0x03; //ÐÐ´Ñ€ÐµÑ Ð´Ð°Ð½Ð½Ñ‹Ñ… указанный в запроÑе не доÑтупен 8003c0a: 4b19 ldr r3, [pc, #100] ; (8003c70 ) 8003c0c: 2203 movs r2, #3 8003c0e: 709a strb r2, [r3, #2] strtOut(3); 8003c10: 2003 movs r0, #3 8003c12: f7fe fd61 bl 80026d8 break; 8003c16: e01c b.n 8003c52 tx[0] = iobuf[0]; 8003c18: 4b11 ldr r3, [pc, #68] ; (8003c60 ) 8003c1a: 781a ldrb r2, [r3, #0] 8003c1c: 4b14 ldr r3, [pc, #80] ; (8003c70 ) 8003c1e: 701a strb r2, [r3, #0] tx[1] |= 0x80; //Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð° функции на ошибку 8003c20: 4b13 ldr r3, [pc, #76] ; (8003c70 ) 8003c22: 785b ldrb r3, [r3, #1] 8003c24: 2280 movs r2, #128 ; 0x80 8003c26: 4252 negs r2, r2 8003c28: 4313 orrs r3, r2 8003c2a: b2da uxtb r2, r3 8003c2c: 4b10 ldr r3, [pc, #64] ; (8003c70 ) 8003c2e: 705a strb r2, [r3, #1] tx[2] = 0x02; //ÐÐ´Ñ€ÐµÑ Ð´Ð°Ð½Ð½Ñ‹Ñ… указанный в запроÑе не доÑтупен 8003c30: 4b0f ldr r3, [pc, #60] ; (8003c70 ) 8003c32: 2202 movs r2, #2 8003c34: 709a strb r2, [r3, #2] strtOut(3); 8003c36: 2003 movs r0, #3 8003c38: f7fe fd4e bl 80026d8 break; 8003c3c: e00a b.n 8003c54 break; 8003c3e: 46c0 nop ; (mov r8, r8) 8003c40: e00a b.n 8003c58 break; 8003c42: 46c0 nop ; (mov r8, r8) 8003c44: e008 b.n 8003c58 break; 8003c46: 46c0 nop ; (mov r8, r8) 8003c48: e006 b.n 8003c58 break; 8003c4a: 46c0 nop ; (mov r8, r8) 8003c4c: e004 b.n 8003c58 break; 8003c4e: 46c0 nop ; (mov r8, r8) 8003c50: e002 b.n 8003c58 break; 8003c52: 46c0 nop ; (mov r8, r8) break; 8003c54: e000 b.n 8003c58 break; 8003c56: 46c0 nop ; (mov r8, r8) } 8003c58: 46c0 nop ; (mov r8, r8) 8003c5a: 46bd mov sp, r7 8003c5c: b008 add sp, #32 8003c5e: bdb0 pop {r4, r5, r7, pc} 8003c60: 2000028c .word 0x2000028c 8003c64: 20000035 .word 0x20000035 8003c68: 20000098 .word 0x20000098 8003c6c: 20000037 .word 0x20000037 8003c70: 20000188 .word 0x20000188 08003c74 : void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { 8003c74: b580 push {r7, lr} 8003c76: b084 sub sp, #16 8003c78: af00 add r7, sp, #0 8003c7a: 6078 str r0, [r7, #4] __IO uint16_t a; a = delayREDE; 8003c7c: 4b2a ldr r3, [pc, #168] ; (8003d28 ) 8003c7e: 881b ldrh r3, [r3, #0] 8003c80: b29a uxth r2, r3 8003c82: 230e movs r3, #14 8003c84: 18fb adds r3, r7, r3 8003c86: 801a strh r2, [r3, #0] while(a) 8003c88: e02c b.n 8003ce4 { a--; a++; a--; a++; a--; 8003c8a: 230e movs r3, #14 8003c8c: 18fb adds r3, r7, r3 8003c8e: 881b ldrh r3, [r3, #0] 8003c90: b29b uxth r3, r3 8003c92: 3b01 subs r3, #1 8003c94: b29a uxth r2, r3 8003c96: 230e movs r3, #14 8003c98: 18fb adds r3, r7, r3 8003c9a: 801a strh r2, [r3, #0] 8003c9c: 230e movs r3, #14 8003c9e: 18fb adds r3, r7, r3 8003ca0: 881b ldrh r3, [r3, #0] 8003ca2: b29b uxth r3, r3 8003ca4: 3301 adds r3, #1 8003ca6: b29a uxth r2, r3 8003ca8: 230e movs r3, #14 8003caa: 18fb adds r3, r7, r3 8003cac: 801a strh r2, [r3, #0] 8003cae: 230e movs r3, #14 8003cb0: 18fb adds r3, r7, r3 8003cb2: 881b ldrh r3, [r3, #0] 8003cb4: b29b uxth r3, r3 8003cb6: 3b01 subs r3, #1 8003cb8: b29a uxth r2, r3 8003cba: 230e movs r3, #14 8003cbc: 18fb adds r3, r7, r3 8003cbe: 801a strh r2, [r3, #0] 8003cc0: 230e movs r3, #14 8003cc2: 18fb adds r3, r7, r3 8003cc4: 881b ldrh r3, [r3, #0] 8003cc6: b29b uxth r3, r3 8003cc8: 3301 adds r3, #1 8003cca: b29a uxth r2, r3 8003ccc: 230e movs r3, #14 8003cce: 18fb adds r3, r7, r3 8003cd0: 801a strh r2, [r3, #0] 8003cd2: 230e movs r3, #14 8003cd4: 18fb adds r3, r7, r3 8003cd6: 881b ldrh r3, [r3, #0] 8003cd8: b29b uxth r3, r3 8003cda: 3b01 subs r3, #1 8003cdc: b29a uxth r2, r3 8003cde: 230e movs r3, #14 8003ce0: 18fb adds r3, r7, r3 8003ce2: 801a strh r2, [r3, #0] while(a) 8003ce4: 230e movs r3, #14 8003ce6: 18fb adds r3, r7, r3 8003ce8: 881b ldrh r3, [r3, #0] 8003cea: b29b uxth r3, r3 8003cec: 2b00 cmp r3, #0 8003cee: d1cc bne.n 8003c8a } if(setbaud) 8003cf0: 4b0e ldr r3, [pc, #56] ; (8003d2c ) 8003cf2: 781b ldrb r3, [r3, #0] 8003cf4: 2b00 cmp r3, #0 8003cf6: d007 beq.n 8003d08 { setbaud = false; 8003cf8: 4b0c ldr r3, [pc, #48] ; (8003d2c ) 8003cfa: 2200 movs r2, #0 8003cfc: 701a strb r2, [r3, #0] needSave = true; 8003cfe: 4b0c ldr r3, [pc, #48] ; (8003d30 ) 8003d00: 2201 movs r2, #1 8003d02: 701a strb r2, [r3, #0] SetBaudRate(); 8003d04: f7fe fdb4 bl 8002870 } __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_TC); 8003d08: 4b0a ldr r3, [pc, #40] ; (8003d34 ) 8003d0a: 681b ldr r3, [r3, #0] 8003d0c: 2240 movs r2, #64 ; 0x40 8003d0e: 621a str r2, [r3, #32] HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET); 8003d10: 2380 movs r3, #128 ; 0x80 8003d12: 0059 lsls r1, r3, #1 8003d14: 23a0 movs r3, #160 ; 0xa0 8003d16: 05db lsls r3, r3, #23 8003d18: 2200 movs r2, #0 8003d1a: 0018 movs r0, r3 8003d1c: f000 fef7 bl 8004b0e } 8003d20: 46c0 nop ; (mov r8, r8) 8003d22: 46bd mov sp, r7 8003d24: b004 add sp, #16 8003d26: bd80 pop {r7, pc} 8003d28: 20000102 .word 0x20000102 8003d2c: 20000004 .word 0x20000004 8003d30: 20000037 .word 0x20000037 8003d34: 20000104 .word 0x20000104 08003d38 : void StartTransfer(void) { 8003d38: b580 push {r7, lr} 8003d3a: b082 sub sp, #8 8003d3c: af00 add r7, sp, #0 while(a) { a--; a++; a--; a++; a--; }*/ HAL_UART_Transmit_IT(&huart1, tx, lastbyte); 8003d3e: 4b05 ldr r3, [pc, #20] ; (8003d54 ) 8003d40: 881a ldrh r2, [r3, #0] 8003d42: 4905 ldr r1, [pc, #20] ; (8003d58 ) 8003d44: 4b05 ldr r3, [pc, #20] ; (8003d5c ) 8003d46: 0018 movs r0, r3 8003d48: f002 f942 bl 8005fd0 } 8003d4c: 46c0 nop ; (mov r8, r8) 8003d4e: 46bd mov sp, r7 8003d50: b002 add sp, #8 8003d52: bd80 pop {r7, pc} 8003d54: 2000028a .word 0x2000028a 8003d58: 20000188 .word 0x20000188 8003d5c: 20000104 .word 0x20000104 08003d60 : void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { 8003d60: b580 push {r7, lr} 8003d62: b082 sub sp, #8 8003d64: af00 add r7, sp, #0 8003d66: 0002 movs r2, r0 8003d68: 1dbb adds r3, r7, #6 8003d6a: 801a strh r2, [r3, #0] if(GPIO_Pin == UPER_Pin) // Overdrive 8003d6c: 1dbb adds r3, r7, #6 8003d6e: 881b ldrh r3, [r3, #0] 8003d70: 2b01 cmp r3, #1 8003d72: d12a bne.n 8003dca { __HAL_GPIO_EXTI_CLEAR_FLAG(UPER_Pin); 8003d74: 4b38 ldr r3, [pc, #224] ; (8003e58 ) 8003d76: 2201 movs r2, #1 8003d78: 615a str r2, [r3, #20] if(HAL_GPIO_ReadPin(GPIOA, UPER_Pin) == GPIO_PIN_SET) 8003d7a: 23a0 movs r3, #160 ; 0xa0 8003d7c: 05db lsls r3, r3, #23 8003d7e: 2101 movs r1, #1 8003d80: 0018 movs r0, r3 8003d82: f000 fea7 bl 8004ad4 8003d86: 0003 movs r3, r0 8003d88: 2b01 cmp r3, #1 8003d8a: d10f bne.n 8003dac { //timerUPER = 1000; HAL_GPIO_WritePin(GPIOA, PER_Pin, GPIO_PIN_SET); 8003d8c: 23a0 movs r3, #160 ; 0xa0 8003d8e: 05db lsls r3, r3, #23 8003d90: 2201 movs r2, #1 8003d92: 2110 movs r1, #16 8003d94: 0018 movs r0, r3 8003d96: f000 feba bl 8004b0e AMP_STATUS |= UPER_Pin; 8003d9a: 4b30 ldr r3, [pc, #192] ; (8003e5c ) 8003d9c: 881b ldrh r3, [r3, #0] 8003d9e: b29b uxth r3, r3 8003da0: 2201 movs r2, #1 8003da2: 4313 orrs r3, r2 8003da4: b29a uxth r2, r3 8003da6: 4b2d ldr r3, [pc, #180] ; (8003e5c ) 8003da8: 801a strh r2, [r3, #0] 8003daa: e00e b.n 8003dca } else { AMP_STATUS &= ~UPER_Pin; 8003dac: 4b2b ldr r3, [pc, #172] ; (8003e5c ) 8003dae: 881b ldrh r3, [r3, #0] 8003db0: b29b uxth r3, r3 8003db2: 2201 movs r2, #1 8003db4: 4393 bics r3, r2 8003db6: b29a uxth r2, r3 8003db8: 4b28 ldr r3, [pc, #160] ; (8003e5c ) 8003dba: 801a strh r2, [r3, #0] HAL_GPIO_WritePin(GPIOA, PER_Pin, GPIO_PIN_RESET); 8003dbc: 23a0 movs r3, #160 ; 0xa0 8003dbe: 05db lsls r3, r3, #23 8003dc0: 2200 movs r2, #0 8003dc2: 2110 movs r1, #16 8003dc4: 0018 movs r0, r3 8003dc6: f000 fea2 bl 8004b0e } } if(GPIO_Pin == OP_Pin) // OP 8003dca: 1dbb adds r3, r7, #6 8003dcc: 881b ldrh r3, [r3, #0] 8003dce: 2b02 cmp r3, #2 8003dd0: d11c bne.n 8003e0c { __HAL_GPIO_EXTI_CLEAR_FLAG(OP_Pin); 8003dd2: 4b21 ldr r3, [pc, #132] ; (8003e58 ) 8003dd4: 2202 movs r2, #2 8003dd6: 615a str r2, [r3, #20] if(HAL_GPIO_ReadPin(GPIOA, OP_Pin) == GPIO_PIN_SET) 8003dd8: 23a0 movs r3, #160 ; 0xa0 8003dda: 05db lsls r3, r3, #23 8003ddc: 2102 movs r1, #2 8003dde: 0018 movs r0, r3 8003de0: f000 fe78 bl 8004ad4 8003de4: 0003 movs r3, r0 8003de6: 2b01 cmp r3, #1 8003de8: d108 bne.n 8003dfc { //timerOP = 1000; AMP_STATUS |= OP_Pin; 8003dea: 4b1c ldr r3, [pc, #112] ; (8003e5c ) 8003dec: 881b ldrh r3, [r3, #0] 8003dee: b29b uxth r3, r3 8003df0: 2202 movs r2, #2 8003df2: 4313 orrs r3, r2 8003df4: b29a uxth r2, r3 8003df6: 4b19 ldr r3, [pc, #100] ; (8003e5c ) 8003df8: 801a strh r2, [r3, #0] 8003dfa: e007 b.n 8003e0c } else { AMP_STATUS &= ~OP_Pin; 8003dfc: 4b17 ldr r3, [pc, #92] ; (8003e5c ) 8003dfe: 881b ldrh r3, [r3, #0] 8003e00: b29b uxth r3, r3 8003e02: 2202 movs r2, #2 8003e04: 4393 bics r3, r2 8003e06: b29a uxth r2, r3 8003e08: 4b14 ldr r3, [pc, #80] ; (8003e5c ) 8003e0a: 801a strh r2, [r3, #0] } } if(GPIO_Pin == KZ_Pin) // KZ 8003e0c: 1dbb adds r3, r7, #6 8003e0e: 881b ldrh r3, [r3, #0] 8003e10: 2b04 cmp r3, #4 8003e12: d11c bne.n 8003e4e { __HAL_GPIO_EXTI_CLEAR_FLAG(KZ_Pin); 8003e14: 4b10 ldr r3, [pc, #64] ; (8003e58 ) 8003e16: 2204 movs r2, #4 8003e18: 615a str r2, [r3, #20] if(HAL_GPIO_ReadPin(GPIOA, KZ_Pin) == GPIO_PIN_SET) 8003e1a: 23a0 movs r3, #160 ; 0xa0 8003e1c: 05db lsls r3, r3, #23 8003e1e: 2104 movs r1, #4 8003e20: 0018 movs r0, r3 8003e22: f000 fe57 bl 8004ad4 8003e26: 0003 movs r3, r0 8003e28: 2b01 cmp r3, #1 8003e2a: d108 bne.n 8003e3e { //timerKZ = 1000; AMP_STATUS |= KZ_Pin; 8003e2c: 4b0b ldr r3, [pc, #44] ; (8003e5c ) 8003e2e: 881b ldrh r3, [r3, #0] 8003e30: b29b uxth r3, r3 8003e32: 2204 movs r2, #4 8003e34: 4313 orrs r3, r2 8003e36: b29a uxth r2, r3 8003e38: 4b08 ldr r3, [pc, #32] ; (8003e5c ) 8003e3a: 801a strh r2, [r3, #0] else { AMP_STATUS &= ~KZ_Pin; } } } 8003e3c: e007 b.n 8003e4e AMP_STATUS &= ~KZ_Pin; 8003e3e: 4b07 ldr r3, [pc, #28] ; (8003e5c ) 8003e40: 881b ldrh r3, [r3, #0] 8003e42: b29b uxth r3, r3 8003e44: 2204 movs r2, #4 8003e46: 4393 bics r3, r2 8003e48: b29a uxth r2, r3 8003e4a: 4b04 ldr r3, [pc, #16] ; (8003e5c ) 8003e4c: 801a strh r2, [r3, #0] } 8003e4e: 46c0 nop ; (mov r8, r8) 8003e50: 46bd mov sp, r7 8003e52: b002 add sp, #8 8003e54: bd80 pop {r7, pc} 8003e56: 46c0 nop ; (mov r8, r8) 8003e58: 40010400 .word 0x40010400 8003e5c: 2000002c .word 0x2000002c 08003e60 : * In the default implementation,Systick is used as source of time base. * the tick variable is incremented each 1ms in its ISR. * @retval HAL status */ HAL_StatusTypeDef HAL_Init(void) { 8003e60: b580 push {r7, lr} 8003e62: b082 sub sp, #8 8003e64: af00 add r7, sp, #0 HAL_StatusTypeDef status = HAL_OK; 8003e66: 1dfb adds r3, r7, #7 8003e68: 2200 movs r2, #0 8003e6a: 701a strb r2, [r3, #0] #if (BUFFER_CACHE_DISABLE != 0) __HAL_FLASH_BUFFER_CACHE_DISABLE(); #endif /* BUFFER_CACHE_DISABLE */ #if (PREREAD_ENABLE != 0) __HAL_FLASH_PREREAD_BUFFER_ENABLE(); 8003e6c: 4b0b ldr r3, [pc, #44] ; (8003e9c ) 8003e6e: 4a0b ldr r2, [pc, #44] ; (8003e9c ) 8003e70: 6812 ldr r2, [r2, #0] 8003e72: 2140 movs r1, #64 ; 0x40 8003e74: 430a orrs r2, r1 8003e76: 601a str r2, [r3, #0] #if (PREFETCH_ENABLE != 0) __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); #endif /* PREFETCH_ENABLE */ /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is MSI) */ if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) 8003e78: 2000 movs r0, #0 8003e7a: f000 f811 bl 8003ea0 8003e7e: 1e03 subs r3, r0, #0 8003e80: d003 beq.n 8003e8a { status = HAL_ERROR; 8003e82: 1dfb adds r3, r7, #7 8003e84: 2201 movs r2, #1 8003e86: 701a strb r2, [r3, #0] 8003e88: e001 b.n 8003e8e } else { /* Init the low level hardware */ HAL_MspInit(); 8003e8a: f7fe f9b3 bl 80021f4 } /* Return function status */ return status; 8003e8e: 1dfb adds r3, r7, #7 8003e90: 781b ldrb r3, [r3, #0] } 8003e92: 0018 movs r0, r3 8003e94: 46bd mov sp, r7 8003e96: b002 add sp, #8 8003e98: bd80 pop {r7, pc} 8003e9a: 46c0 nop ; (mov r8, r8) 8003e9c: 40022000 .word 0x40022000 08003ea0 : * implementation in user file. * @param TickPriority Tick interrupt priority. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { 8003ea0: b590 push {r4, r7, lr} 8003ea2: b083 sub sp, #12 8003ea4: af00 add r7, sp, #0 8003ea6: 6078 str r0, [r7, #4] /* Configure the SysTick to have interrupt in 1ms time basis*/ if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) 8003ea8: 4b14 ldr r3, [pc, #80] ; (8003efc ) 8003eaa: 681c ldr r4, [r3, #0] 8003eac: 4b14 ldr r3, [pc, #80] ; (8003f00 ) 8003eae: 781b ldrb r3, [r3, #0] 8003eb0: 0019 movs r1, r3 8003eb2: 23fa movs r3, #250 ; 0xfa 8003eb4: 0098 lsls r0, r3, #2 8003eb6: f7fc f927 bl 8000108 <__udivsi3> 8003eba: 0003 movs r3, r0 8003ebc: 0019 movs r1, r3 8003ebe: 0020 movs r0, r4 8003ec0: f7fc f922 bl 8000108 <__udivsi3> 8003ec4: 0003 movs r3, r0 8003ec6: 0018 movs r0, r3 8003ec8: f000 f93c bl 8004144 8003ecc: 1e03 subs r3, r0, #0 8003ece: d001 beq.n 8003ed4 { return HAL_ERROR; 8003ed0: 2301 movs r3, #1 8003ed2: e00f b.n 8003ef4 } /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) 8003ed4: 687b ldr r3, [r7, #4] 8003ed6: 2b03 cmp r3, #3 8003ed8: d80b bhi.n 8003ef2 { HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); 8003eda: 6879 ldr r1, [r7, #4] 8003edc: 2301 movs r3, #1 8003ede: 425b negs r3, r3 8003ee0: 2200 movs r2, #0 8003ee2: 0018 movs r0, r3 8003ee4: f000 f8f8 bl 80040d8 uwTickPrio = TickPriority; 8003ee8: 4b06 ldr r3, [pc, #24] ; (8003f04 ) 8003eea: 687a ldr r2, [r7, #4] 8003eec: 601a str r2, [r3, #0] { return HAL_ERROR; } /* Return function status */ return HAL_OK; 8003eee: 2300 movs r3, #0 8003ef0: e000 b.n 8003ef4 return HAL_ERROR; 8003ef2: 2301 movs r3, #1 } 8003ef4: 0018 movs r0, r3 8003ef6: 46bd mov sp, r7 8003ef8: b003 add sp, #12 8003efa: bd90 pop {r4, r7, pc} 8003efc: 20000000 .word 0x20000000 8003f00: 2000000c .word 0x2000000c 8003f04: 20000008 .word 0x20000008 08003f08 : * @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) { 8003f08: b580 push {r7, lr} 8003f0a: af00 add r7, sp, #0 uwTick += uwTickFreq; 8003f0c: 4b05 ldr r3, [pc, #20] ; (8003f24 ) 8003f0e: 781b ldrb r3, [r3, #0] 8003f10: 001a movs r2, r3 8003f12: 4b05 ldr r3, [pc, #20] ; (8003f28 ) 8003f14: 681b ldr r3, [r3, #0] 8003f16: 18d2 adds r2, r2, r3 8003f18: 4b03 ldr r3, [pc, #12] ; (8003f28 ) 8003f1a: 601a str r2, [r3, #0] } 8003f1c: 46c0 nop ; (mov r8, r8) 8003f1e: 46bd mov sp, r7 8003f20: bd80 pop {r7, pc} 8003f22: 46c0 nop ; (mov r8, r8) 8003f24: 2000000c .word 0x2000000c 8003f28: 2000038c .word 0x2000038c 08003f2c : * @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) { 8003f2c: b580 push {r7, lr} 8003f2e: af00 add r7, sp, #0 return uwTick; 8003f30: 4b02 ldr r3, [pc, #8] ; (8003f3c ) 8003f32: 681b ldr r3, [r3, #0] } 8003f34: 0018 movs r0, r3 8003f36: 46bd mov sp, r7 8003f38: bd80 pop {r7, pc} 8003f3a: 46c0 nop ; (mov r8, r8) 8003f3c: 2000038c .word 0x2000038c 08003f40 <__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) { 8003f40: b580 push {r7, lr} 8003f42: b082 sub sp, #8 8003f44: af00 add r7, sp, #0 8003f46: 0002 movs r2, r0 8003f48: 1dfb adds r3, r7, #7 8003f4a: 701a strb r2, [r3, #0] if ((int32_t)(IRQn) >= 0) 8003f4c: 1dfb adds r3, r7, #7 8003f4e: 781b ldrb r3, [r3, #0] 8003f50: 2b7f cmp r3, #127 ; 0x7f 8003f52: d809 bhi.n 8003f68 <__NVIC_EnableIRQ+0x28> { NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 8003f54: 4b06 ldr r3, [pc, #24] ; (8003f70 <__NVIC_EnableIRQ+0x30>) 8003f56: 1dfa adds r2, r7, #7 8003f58: 7812 ldrb r2, [r2, #0] 8003f5a: 0011 movs r1, r2 8003f5c: 221f movs r2, #31 8003f5e: 400a ands r2, r1 8003f60: 2101 movs r1, #1 8003f62: 4091 lsls r1, r2 8003f64: 000a movs r2, r1 8003f66: 601a str r2, [r3, #0] } } 8003f68: 46c0 nop ; (mov r8, r8) 8003f6a: 46bd mov sp, r7 8003f6c: b002 add sp, #8 8003f6e: bd80 pop {r7, pc} 8003f70: e000e100 .word 0xe000e100 08003f74 <__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) { 8003f74: b580 push {r7, lr} 8003f76: b082 sub sp, #8 8003f78: af00 add r7, sp, #0 8003f7a: 0002 movs r2, r0 8003f7c: 1dfb adds r3, r7, #7 8003f7e: 701a strb r2, [r3, #0] if ((int32_t)(IRQn) >= 0) 8003f80: 1dfb adds r3, r7, #7 8003f82: 781b ldrb r3, [r3, #0] 8003f84: 2b7f cmp r3, #127 ; 0x7f 8003f86: d80e bhi.n 8003fa6 <__NVIC_DisableIRQ+0x32> { NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 8003f88: 4909 ldr r1, [pc, #36] ; (8003fb0 <__NVIC_DisableIRQ+0x3c>) 8003f8a: 1dfb adds r3, r7, #7 8003f8c: 781b ldrb r3, [r3, #0] 8003f8e: 001a movs r2, r3 8003f90: 231f movs r3, #31 8003f92: 4013 ands r3, r2 8003f94: 2201 movs r2, #1 8003f96: 409a lsls r2, r3 8003f98: 0013 movs r3, r2 8003f9a: 2280 movs r2, #128 ; 0x80 8003f9c: 508b str r3, [r1, r2] \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"); 8003f9e: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); 8003fa2: f3bf 8f6f isb sy __DSB(); __ISB(); } } 8003fa6: 46c0 nop ; (mov r8, r8) 8003fa8: 46bd mov sp, r7 8003faa: b002 add sp, #8 8003fac: bd80 pop {r7, pc} 8003fae: 46c0 nop ; (mov r8, r8) 8003fb0: e000e100 .word 0xe000e100 08003fb4 <__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) { 8003fb4: b5b0 push {r4, r5, r7, lr} 8003fb6: b082 sub sp, #8 8003fb8: af00 add r7, sp, #0 8003fba: 0002 movs r2, r0 8003fbc: 6039 str r1, [r7, #0] 8003fbe: 1dfb adds r3, r7, #7 8003fc0: 701a strb r2, [r3, #0] if ((int32_t)(IRQn) >= 0) 8003fc2: 1dfb adds r3, r7, #7 8003fc4: 781b ldrb r3, [r3, #0] 8003fc6: 2b7f cmp r3, #127 ; 0x7f 8003fc8: d828 bhi.n 800401c <__NVIC_SetPriority+0x68> { NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | 8003fca: 4c2f ldr r4, [pc, #188] ; (8004088 <__NVIC_SetPriority+0xd4>) 8003fcc: 1dfb adds r3, r7, #7 8003fce: 781b ldrb r3, [r3, #0] 8003fd0: b25b sxtb r3, r3 8003fd2: 089b lsrs r3, r3, #2 8003fd4: 492c ldr r1, [pc, #176] ; (8004088 <__NVIC_SetPriority+0xd4>) 8003fd6: 1dfa adds r2, r7, #7 8003fd8: 7812 ldrb r2, [r2, #0] 8003fda: b252 sxtb r2, r2 8003fdc: 0892 lsrs r2, r2, #2 8003fde: 32c0 adds r2, #192 ; 0xc0 8003fe0: 0092 lsls r2, r2, #2 8003fe2: 5852 ldr r2, [r2, r1] 8003fe4: 1df9 adds r1, r7, #7 8003fe6: 7809 ldrb r1, [r1, #0] 8003fe8: 0008 movs r0, r1 8003fea: 2103 movs r1, #3 8003fec: 4001 ands r1, r0 8003fee: 00c9 lsls r1, r1, #3 8003ff0: 20ff movs r0, #255 ; 0xff 8003ff2: 4088 lsls r0, r1 8003ff4: 0001 movs r1, r0 8003ff6: 43c9 mvns r1, r1 8003ff8: 4011 ands r1, r2 (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); 8003ffa: 683a ldr r2, [r7, #0] 8003ffc: 0192 lsls r2, r2, #6 8003ffe: 20ff movs r0, #255 ; 0xff 8004000: 4010 ands r0, r2 8004002: 1dfa adds r2, r7, #7 8004004: 7812 ldrb r2, [r2, #0] 8004006: 0015 movs r5, r2 8004008: 2203 movs r2, #3 800400a: 402a ands r2, r5 800400c: 00d2 lsls r2, r2, #3 800400e: 4090 lsls r0, r2 8004010: 0002 movs r2, r0 NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | 8004012: 430a orrs r2, r1 8004014: 33c0 adds r3, #192 ; 0xc0 8004016: 009b lsls r3, r3, #2 8004018: 511a str r2, [r3, r4] else { SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); } } 800401a: e031 b.n 8004080 <__NVIC_SetPriority+0xcc> SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | 800401c: 4c1b ldr r4, [pc, #108] ; (800408c <__NVIC_SetPriority+0xd8>) 800401e: 1dfb adds r3, r7, #7 8004020: 781b ldrb r3, [r3, #0] 8004022: 001a movs r2, r3 8004024: 230f movs r3, #15 8004026: 4013 ands r3, r2 8004028: 3b08 subs r3, #8 800402a: 0899 lsrs r1, r3, #2 800402c: 4a17 ldr r2, [pc, #92] ; (800408c <__NVIC_SetPriority+0xd8>) 800402e: 1dfb adds r3, r7, #7 8004030: 781b ldrb r3, [r3, #0] 8004032: 0018 movs r0, r3 8004034: 230f movs r3, #15 8004036: 4003 ands r3, r0 8004038: 3b08 subs r3, #8 800403a: 089b lsrs r3, r3, #2 800403c: 3306 adds r3, #6 800403e: 009b lsls r3, r3, #2 8004040: 18d3 adds r3, r2, r3 8004042: 3304 adds r3, #4 8004044: 681b ldr r3, [r3, #0] 8004046: 1dfa adds r2, r7, #7 8004048: 7812 ldrb r2, [r2, #0] 800404a: 0010 movs r0, r2 800404c: 2203 movs r2, #3 800404e: 4002 ands r2, r0 8004050: 00d2 lsls r2, r2, #3 8004052: 20ff movs r0, #255 ; 0xff 8004054: 4090 lsls r0, r2 8004056: 0002 movs r2, r0 8004058: 43d2 mvns r2, r2 800405a: 401a ands r2, r3 (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); 800405c: 683b ldr r3, [r7, #0] 800405e: 019b lsls r3, r3, #6 8004060: 20ff movs r0, #255 ; 0xff 8004062: 4018 ands r0, r3 8004064: 1dfb adds r3, r7, #7 8004066: 781b ldrb r3, [r3, #0] 8004068: 001d movs r5, r3 800406a: 2303 movs r3, #3 800406c: 402b ands r3, r5 800406e: 00db lsls r3, r3, #3 8004070: 4098 lsls r0, r3 8004072: 0003 movs r3, r0 SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | 8004074: 431a orrs r2, r3 8004076: 1d8b adds r3, r1, #6 8004078: 009b lsls r3, r3, #2 800407a: 18e3 adds r3, r4, r3 800407c: 3304 adds r3, #4 800407e: 601a str r2, [r3, #0] } 8004080: 46c0 nop ; (mov r8, r8) 8004082: 46bd mov sp, r7 8004084: b002 add sp, #8 8004086: bdb0 pop {r4, r5, r7, pc} 8004088: e000e100 .word 0xe000e100 800408c: e000ed00 .word 0xe000ed00 08004090 : \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) { 8004090: b580 push {r7, lr} 8004092: b082 sub sp, #8 8004094: af00 add r7, sp, #0 8004096: 6078 str r0, [r7, #4] if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) 8004098: 687b ldr r3, [r7, #4] 800409a: 3b01 subs r3, #1 800409c: 4a0c ldr r2, [pc, #48] ; (80040d0 ) 800409e: 4293 cmp r3, r2 80040a0: d901 bls.n 80040a6 { return (1UL); /* Reload value impossible */ 80040a2: 2301 movs r3, #1 80040a4: e010 b.n 80040c8 } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ 80040a6: 4b0b ldr r3, [pc, #44] ; (80040d4 ) 80040a8: 687a ldr r2, [r7, #4] 80040aa: 3a01 subs r2, #1 80040ac: 605a str r2, [r3, #4] NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ 80040ae: 2301 movs r3, #1 80040b0: 425b negs r3, r3 80040b2: 2103 movs r1, #3 80040b4: 0018 movs r0, r3 80040b6: f7ff ff7d bl 8003fb4 <__NVIC_SetPriority> SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ 80040ba: 4b06 ldr r3, [pc, #24] ; (80040d4 ) 80040bc: 2200 movs r2, #0 80040be: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | 80040c0: 4b04 ldr r3, [pc, #16] ; (80040d4 ) 80040c2: 2207 movs r2, #7 80040c4: 601a str r2, [r3, #0] SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */ 80040c6: 2300 movs r3, #0 } 80040c8: 0018 movs r0, r3 80040ca: 46bd mov sp, r7 80040cc: b002 add sp, #8 80040ce: bd80 pop {r7, pc} 80040d0: 00ffffff .word 0x00ffffff 80040d4: e000e010 .word 0xe000e010 080040d8 : * with stm32l0xx devices, this parameter is a dummy value and it is ignored, because * no subpriority supported in Cortex M0+ based products. * @retval None */ void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) { 80040d8: b580 push {r7, lr} 80040da: b084 sub sp, #16 80040dc: af00 add r7, sp, #0 80040de: 60b9 str r1, [r7, #8] 80040e0: 607a str r2, [r7, #4] 80040e2: 230f movs r3, #15 80040e4: 18fb adds r3, r7, r3 80040e6: 1c02 adds r2, r0, #0 80040e8: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); NVIC_SetPriority(IRQn,PreemptPriority); 80040ea: 68ba ldr r2, [r7, #8] 80040ec: 230f movs r3, #15 80040ee: 18fb adds r3, r7, r3 80040f0: 781b ldrb r3, [r3, #0] 80040f2: b25b sxtb r3, r3 80040f4: 0011 movs r1, r2 80040f6: 0018 movs r0, r3 80040f8: f7ff ff5c bl 8003fb4 <__NVIC_SetPriority> } 80040fc: 46c0 nop ; (mov r8, r8) 80040fe: 46bd mov sp, r7 8004100: b004 add sp, #16 8004102: bd80 pop {r7, pc} 08004104 : * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to stm32l0xx.h file) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { 8004104: b580 push {r7, lr} 8004106: b082 sub sp, #8 8004108: af00 add r7, sp, #0 800410a: 0002 movs r2, r0 800410c: 1dfb adds r3, r7, #7 800410e: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); 8004110: 1dfb adds r3, r7, #7 8004112: 781b ldrb r3, [r3, #0] 8004114: b25b sxtb r3, r3 8004116: 0018 movs r0, r3 8004118: f7ff ff12 bl 8003f40 <__NVIC_EnableIRQ> } 800411c: 46c0 nop ; (mov r8, r8) 800411e: 46bd mov sp, r7 8004120: b002 add sp, #8 8004122: bd80 pop {r7, pc} 08004124 : * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to stm32l0xx.h file) * @retval None */ void HAL_NVIC_DisableIRQ(IRQn_Type IRQn) { 8004124: b580 push {r7, lr} 8004126: b082 sub sp, #8 8004128: af00 add r7, sp, #0 800412a: 0002 movs r2, r0 800412c: 1dfb adds r3, r7, #7 800412e: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Disable interrupt */ NVIC_DisableIRQ(IRQn); 8004130: 1dfb adds r3, r7, #7 8004132: 781b ldrb r3, [r3, #0] 8004134: b25b sxtb r3, r3 8004136: 0018 movs r0, r3 8004138: f7ff ff1c bl 8003f74 <__NVIC_DisableIRQ> } 800413c: 46c0 nop ; (mov r8, r8) 800413e: 46bd mov sp, r7 8004140: b002 add sp, #8 8004142: bd80 pop {r7, pc} 08004144 : * @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) { 8004144: b580 push {r7, lr} 8004146: b082 sub sp, #8 8004148: af00 add r7, sp, #0 800414a: 6078 str r0, [r7, #4] return SysTick_Config(TicksNumb); 800414c: 687b ldr r3, [r7, #4] 800414e: 0018 movs r0, r3 8004150: f7ff ff9e bl 8004090 8004154: 0003 movs r3, r0 } 8004156: 0018 movs r0, r3 8004158: 46bd mov sp, r7 800415a: b002 add sp, #8 800415c: bd80 pop {r7, pc} 0800415e : * @param hdma pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Channel. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) { 800415e: b580 push {r7, lr} 8004160: b084 sub sp, #16 8004162: af00 add r7, sp, #0 8004164: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; 8004166: 230f movs r3, #15 8004168: 18fb adds r3, r7, r3 800416a: 2200 movs r2, #0 800416c: 701a strb r2, [r3, #0] /* Check the DMA peripheral state */ if(hdma->State != HAL_DMA_STATE_BUSY) 800416e: 687b ldr r3, [r7, #4] 8004170: 2225 movs r2, #37 ; 0x25 8004172: 5c9b ldrb r3, [r3, r2] 8004174: b2db uxtb r3, r3 8004176: 2b02 cmp r3, #2 8004178: d008 beq.n 800418c { hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; 800417a: 687b ldr r3, [r7, #4] 800417c: 2204 movs r2, #4 800417e: 63da str r2, [r3, #60] ; 0x3c /* Process Unlocked */ __HAL_UNLOCK(hdma); 8004180: 687b ldr r3, [r7, #4] 8004182: 2224 movs r2, #36 ; 0x24 8004184: 2100 movs r1, #0 8004186: 5499 strb r1, [r3, r2] return HAL_ERROR; 8004188: 2301 movs r3, #1 800418a: e024 b.n 80041d6 } else { /* Disable DMA IT */ __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); 800418c: 687b ldr r3, [r7, #4] 800418e: 681b ldr r3, [r3, #0] 8004190: 687a ldr r2, [r7, #4] 8004192: 6812 ldr r2, [r2, #0] 8004194: 6812 ldr r2, [r2, #0] 8004196: 210e movs r1, #14 8004198: 438a bics r2, r1 800419a: 601a str r2, [r3, #0] /* Disable the channel */ __HAL_DMA_DISABLE(hdma); 800419c: 687b ldr r3, [r7, #4] 800419e: 681b ldr r3, [r3, #0] 80041a0: 687a ldr r2, [r7, #4] 80041a2: 6812 ldr r2, [r2, #0] 80041a4: 6812 ldr r2, [r2, #0] 80041a6: 2101 movs r1, #1 80041a8: 438a bics r2, r1 80041aa: 601a str r2, [r3, #0] /* Clear all flags */ hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU)); 80041ac: 687b ldr r3, [r7, #4] 80041ae: 6c1b ldr r3, [r3, #64] ; 0x40 80041b0: 687a ldr r2, [r7, #4] 80041b2: 6c52 ldr r2, [r2, #68] ; 0x44 80041b4: 211c movs r1, #28 80041b6: 400a ands r2, r1 80041b8: 2101 movs r1, #1 80041ba: 4091 lsls r1, r2 80041bc: 000a movs r2, r1 80041be: 605a str r2, [r3, #4] /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; 80041c0: 687b ldr r3, [r7, #4] 80041c2: 2225 movs r2, #37 ; 0x25 80041c4: 2101 movs r1, #1 80041c6: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hdma); 80041c8: 687b ldr r3, [r7, #4] 80041ca: 2224 movs r2, #36 ; 0x24 80041cc: 2100 movs r1, #0 80041ce: 5499 strb r1, [r3, r2] return status; 80041d0: 230f movs r3, #15 80041d2: 18fb adds r3, r7, r3 80041d4: 781b ldrb r3, [r3, #0] } } 80041d6: 0018 movs r0, r3 80041d8: 46bd mov sp, r7 80041da: b004 add sp, #16 80041dc: bd80 pop {r7, pc} 080041de : * @param hdma pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Channel. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) { 80041de: b580 push {r7, lr} 80041e0: b084 sub sp, #16 80041e2: af00 add r7, sp, #0 80041e4: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; 80041e6: 230f movs r3, #15 80041e8: 18fb adds r3, r7, r3 80041ea: 2200 movs r2, #0 80041ec: 701a strb r2, [r3, #0] if(HAL_DMA_STATE_BUSY != hdma->State) 80041ee: 687b ldr r3, [r7, #4] 80041f0: 2225 movs r2, #37 ; 0x25 80041f2: 5c9b ldrb r3, [r3, r2] 80041f4: b2db uxtb r3, r3 80041f6: 2b02 cmp r3, #2 80041f8: d007 beq.n 800420a { /* no transfer ongoing */ hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; 80041fa: 687b ldr r3, [r7, #4] 80041fc: 2204 movs r2, #4 80041fe: 63da str r2, [r3, #60] ; 0x3c status = HAL_ERROR; 8004200: 230f movs r3, #15 8004202: 18fb adds r3, r7, r3 8004204: 2201 movs r2, #1 8004206: 701a strb r2, [r3, #0] 8004208: e02a b.n 8004260 } else { /* Disable DMA IT */ __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); 800420a: 687b ldr r3, [r7, #4] 800420c: 681b ldr r3, [r3, #0] 800420e: 687a ldr r2, [r7, #4] 8004210: 6812 ldr r2, [r2, #0] 8004212: 6812 ldr r2, [r2, #0] 8004214: 210e movs r1, #14 8004216: 438a bics r2, r1 8004218: 601a str r2, [r3, #0] /* Disable the channel */ __HAL_DMA_DISABLE(hdma); 800421a: 687b ldr r3, [r7, #4] 800421c: 681b ldr r3, [r3, #0] 800421e: 687a ldr r2, [r7, #4] 8004220: 6812 ldr r2, [r2, #0] 8004222: 6812 ldr r2, [r2, #0] 8004224: 2101 movs r1, #1 8004226: 438a bics r2, r1 8004228: 601a str r2, [r3, #0] /* Clear all flags */ hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU)); 800422a: 687b ldr r3, [r7, #4] 800422c: 6c1b ldr r3, [r3, #64] ; 0x40 800422e: 687a ldr r2, [r7, #4] 8004230: 6c52 ldr r2, [r2, #68] ; 0x44 8004232: 211c movs r1, #28 8004234: 400a ands r2, r1 8004236: 2101 movs r1, #1 8004238: 4091 lsls r1, r2 800423a: 000a movs r2, r1 800423c: 605a str r2, [r3, #4] /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; 800423e: 687b ldr r3, [r7, #4] 8004240: 2225 movs r2, #37 ; 0x25 8004242: 2101 movs r1, #1 8004244: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hdma); 8004246: 687b ldr r3, [r7, #4] 8004248: 2224 movs r2, #36 ; 0x24 800424a: 2100 movs r1, #0 800424c: 5499 strb r1, [r3, r2] /* Call User Abort callback */ if(hdma->XferAbortCallback != NULL) 800424e: 687b ldr r3, [r7, #4] 8004250: 6b9b ldr r3, [r3, #56] ; 0x38 8004252: 2b00 cmp r3, #0 8004254: d004 beq.n 8004260 { hdma->XferAbortCallback(hdma); 8004256: 687b ldr r3, [r7, #4] 8004258: 6b9b ldr r3, [r3, #56] ; 0x38 800425a: 687a ldr r2, [r7, #4] 800425c: 0010 movs r0, r2 800425e: 4798 blx r3 } } return status; 8004260: 230f movs r3, #15 8004262: 18fb adds r3, r7, r3 8004264: 781b ldrb r3, [r3, #0] } 8004266: 0018 movs r0, r3 8004268: 46bd mov sp, r7 800426a: b004 add sp, #16 800426c: bd80 pop {r7, pc} ... 08004270 : * @param Data Specifie the data to be programmed * * @retval HAL_StatusTypeDef HAL Status */ HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data) { 8004270: b590 push {r4, r7, lr} 8004272: b087 sub sp, #28 8004274: af00 add r7, sp, #0 8004276: 60f8 str r0, [r7, #12] 8004278: 60b9 str r1, [r7, #8] 800427a: 607a str r2, [r7, #4] HAL_StatusTypeDef status = HAL_ERROR; 800427c: 2317 movs r3, #23 800427e: 18fb adds r3, r7, r3 8004280: 2201 movs r2, #1 8004282: 701a strb r2, [r3, #0] /* Process Locked */ __HAL_LOCK(&pFlash); 8004284: 4b16 ldr r3, [pc, #88] ; (80042e0 ) 8004286: 7c1b ldrb r3, [r3, #16] 8004288: 2b01 cmp r3, #1 800428a: d101 bne.n 8004290 800428c: 2302 movs r3, #2 800428e: e023 b.n 80042d8 8004290: 4b13 ldr r3, [pc, #76] ; (80042e0 ) 8004292: 2201 movs r2, #1 8004294: 741a strb r2, [r3, #16] /* Check the parameters */ assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 8004296: 2317 movs r3, #23 8004298: 18fc adds r4, r7, r3 800429a: 4b12 ldr r3, [pc, #72] ; (80042e4 ) 800429c: 0018 movs r0, r3 800429e: f000 f887 bl 80043b0 80042a2: 0003 movs r3, r0 80042a4: 7023 strb r3, [r4, #0] if(status == HAL_OK) 80042a6: 2317 movs r3, #23 80042a8: 18fb adds r3, r7, r3 80042aa: 781b ldrb r3, [r3, #0] 80042ac: 2b00 cmp r3, #0 80042ae: d10d bne.n 80042cc { /* Clean the error context */ pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 80042b0: 4b0b ldr r3, [pc, #44] ; (80042e0 ) 80042b2: 2200 movs r2, #0 80042b4: 615a str r2, [r3, #20] /*Program word (32-bit) at a specified address.*/ *(__IO uint32_t *)Address = Data; 80042b6: 68bb ldr r3, [r7, #8] 80042b8: 687a ldr r2, [r7, #4] 80042ba: 601a str r2, [r3, #0] /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 80042bc: 2317 movs r3, #23 80042be: 18fc adds r4, r7, r3 80042c0: 4b08 ldr r3, [pc, #32] ; (80042e4 ) 80042c2: 0018 movs r0, r3 80042c4: f000 f874 bl 80043b0 80042c8: 0003 movs r3, r0 80042ca: 7023 strb r3, [r4, #0] } /* Process Unlocked */ __HAL_UNLOCK(&pFlash); 80042cc: 4b04 ldr r3, [pc, #16] ; (80042e0 ) 80042ce: 2200 movs r2, #0 80042d0: 741a strb r2, [r3, #16] return status; 80042d2: 2317 movs r3, #23 80042d4: 18fb adds r3, r7, r3 80042d6: 781b ldrb r3, [r3, #0] } 80042d8: 0018 movs r0, r3 80042da: 46bd mov sp, r7 80042dc: b007 add sp, #28 80042de: bd90 pop {r4, r7, pc} 80042e0: 20000390 .word 0x20000390 80042e4: 0000c350 .word 0x0000c350 080042e8 : /** * @brief Unlock the FLASH control register access * @retval HAL Status */ HAL_StatusTypeDef HAL_FLASH_Unlock(void) { 80042e8: b580 push {r7, lr} 80042ea: b086 sub sp, #24 80042ec: af00 add r7, sp, #0 uint32_t primask_bit; /* Unlocking FLASH_PECR register access*/ if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) 80042ee: 4b21 ldr r3, [pc, #132] ; (8004374 ) 80042f0: 685b ldr r3, [r3, #4] 80042f2: 2201 movs r2, #1 80042f4: 4013 ands r3, r2 80042f6: 2b01 cmp r3, #1 80042f8: d118 bne.n 800432c __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); 80042fa: f3ef 8310 mrs r3, PRIMASK 80042fe: 60fb str r3, [r7, #12] return(result); 8004300: 68fb ldr r3, [r7, #12] { /* Disable interrupts to avoid any interruption during unlock sequence */ primask_bit = __get_PRIMASK(); 8004302: 617b str r3, [r7, #20] __ASM volatile ("cpsid i" : : : "memory"); 8004304: b672 cpsid i __disable_irq(); WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY1); 8004306: 4b1b ldr r3, [pc, #108] ; (8004374 ) 8004308: 4a1b ldr r2, [pc, #108] ; (8004378 ) 800430a: 60da str r2, [r3, #12] WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY2); 800430c: 4b19 ldr r3, [pc, #100] ; (8004374 ) 800430e: 4a1b ldr r2, [pc, #108] ; (800437c ) 8004310: 60da str r2, [r3, #12] 8004312: 697b ldr r3, [r7, #20] 8004314: 613b str r3, [r7, #16] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); 8004316: 693b ldr r3, [r7, #16] 8004318: f383 8810 msr PRIMASK, r3 /* Re-enable the interrupts: restore previous priority mask */ __set_PRIMASK(primask_bit); if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) 800431c: 4b15 ldr r3, [pc, #84] ; (8004374 ) 800431e: 685b ldr r3, [r3, #4] 8004320: 2201 movs r2, #1 8004322: 4013 ands r3, r2 8004324: 2b01 cmp r3, #1 8004326: d101 bne.n 800432c { return HAL_ERROR; 8004328: 2301 movs r3, #1 800432a: e01f b.n 800436c } } if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PRGLOCK)) 800432c: 4b11 ldr r3, [pc, #68] ; (8004374 ) 800432e: 685b ldr r3, [r3, #4] 8004330: 2202 movs r2, #2 8004332: 4013 ands r3, r2 8004334: 2b02 cmp r3, #2 8004336: d118 bne.n 800436a __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); 8004338: f3ef 8310 mrs r3, PRIMASK 800433c: 607b str r3, [r7, #4] return(result); 800433e: 687b ldr r3, [r7, #4] { /* Disable interrupts to avoid any interruption during unlock sequence */ primask_bit = __get_PRIMASK(); 8004340: 617b str r3, [r7, #20] __ASM volatile ("cpsid i" : : : "memory"); 8004342: b672 cpsid i __disable_irq(); /* Unlocking the program memory access */ WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY1); 8004344: 4b0b ldr r3, [pc, #44] ; (8004374 ) 8004346: 4a0e ldr r2, [pc, #56] ; (8004380 ) 8004348: 611a str r2, [r3, #16] WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY2); 800434a: 4b0a ldr r3, [pc, #40] ; (8004374 ) 800434c: 4a0d ldr r2, [pc, #52] ; (8004384 ) 800434e: 611a str r2, [r3, #16] 8004350: 697b ldr r3, [r7, #20] 8004352: 60bb str r3, [r7, #8] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); 8004354: 68bb ldr r3, [r7, #8] 8004356: f383 8810 msr PRIMASK, r3 /* Re-enable the interrupts: restore previous priority mask */ __set_PRIMASK(primask_bit); if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PRGLOCK)) 800435a: 4b06 ldr r3, [pc, #24] ; (8004374 ) 800435c: 685b ldr r3, [r3, #4] 800435e: 2202 movs r2, #2 8004360: 4013 ands r3, r2 8004362: 2b02 cmp r3, #2 8004364: d101 bne.n 800436a { return HAL_ERROR; 8004366: 2301 movs r3, #1 8004368: e000 b.n 800436c } } return HAL_OK; 800436a: 2300 movs r3, #0 } 800436c: 0018 movs r0, r3 800436e: 46bd mov sp, r7 8004370: b006 add sp, #24 8004372: bd80 pop {r7, pc} 8004374: 40022000 .word 0x40022000 8004378: 89abcdef .word 0x89abcdef 800437c: 02030405 .word 0x02030405 8004380: 8c9daebf .word 0x8c9daebf 8004384: 13141516 .word 0x13141516 08004388 : /** * @brief Locks the FLASH control register access * @retval HAL Status */ HAL_StatusTypeDef HAL_FLASH_Lock(void) { 8004388: b580 push {r7, lr} 800438a: af00 add r7, sp, #0 /* Set the PRGLOCK Bit to lock the FLASH Registers access */ SET_BIT(FLASH->PECR, FLASH_PECR_PRGLOCK); 800438c: 4b07 ldr r3, [pc, #28] ; (80043ac ) 800438e: 4a07 ldr r2, [pc, #28] ; (80043ac ) 8004390: 6852 ldr r2, [r2, #4] 8004392: 2102 movs r1, #2 8004394: 430a orrs r2, r1 8004396: 605a str r2, [r3, #4] /* Set the PELOCK Bit to lock the PECR Register access */ SET_BIT(FLASH->PECR, FLASH_PECR_PELOCK); 8004398: 4b04 ldr r3, [pc, #16] ; (80043ac ) 800439a: 4a04 ldr r2, [pc, #16] ; (80043ac ) 800439c: 6852 ldr r2, [r2, #4] 800439e: 2101 movs r1, #1 80043a0: 430a orrs r2, r1 80043a2: 605a str r2, [r3, #4] return HAL_OK; 80043a4: 2300 movs r3, #0 } 80043a6: 0018 movs r0, r3 80043a8: 46bd mov sp, r7 80043aa: bd80 pop {r7, pc} 80043ac: 40022000 .word 0x40022000 080043b0 : * @brief Wait for a FLASH operation to complete. * @param Timeout maximum flash operation timeout * @retval HAL Status */ HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) { 80043b0: b580 push {r7, lr} 80043b2: b084 sub sp, #16 80043b4: af00 add r7, sp, #0 80043b6: 6078 str r0, [r7, #4] /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. Even if the FLASH operation fails, the BUSY flag will be reset and an error flag will be set */ uint32_t tickstart = HAL_GetTick(); 80043b8: f7ff fdb8 bl 8003f2c 80043bc: 0003 movs r3, r0 80043be: 60fb str r3, [r7, #12] while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) 80043c0: e00f b.n 80043e2 { if (Timeout != HAL_MAX_DELAY) 80043c2: 687b ldr r3, [r7, #4] 80043c4: 3301 adds r3, #1 80043c6: d00c beq.n 80043e2 { if((Timeout == 0U) || ((HAL_GetTick()-tickstart) > Timeout)) 80043c8: 687b ldr r3, [r7, #4] 80043ca: 2b00 cmp r3, #0 80043cc: d007 beq.n 80043de 80043ce: f7ff fdad bl 8003f2c 80043d2: 0002 movs r2, r0 80043d4: 68fb ldr r3, [r7, #12] 80043d6: 1ad2 subs r2, r2, r3 80043d8: 687b ldr r3, [r7, #4] 80043da: 429a cmp r2, r3 80043dc: d901 bls.n 80043e2 { return HAL_TIMEOUT; 80043de: 2303 movs r3, #3 80043e0: e052 b.n 8004488 while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) 80043e2: 4b2b ldr r3, [pc, #172] ; (8004490 ) 80043e4: 699b ldr r3, [r3, #24] 80043e6: 2201 movs r2, #1 80043e8: 4013 ands r3, r2 80043ea: 2b01 cmp r3, #1 80043ec: d0e9 beq.n 80043c2 } } } /* Check FLASH End of Operation flag */ if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP)) 80043ee: 4b28 ldr r3, [pc, #160] ; (8004490 ) 80043f0: 699b ldr r3, [r3, #24] 80043f2: 2202 movs r2, #2 80043f4: 4013 ands r3, r2 80043f6: 2b02 cmp r3, #2 80043f8: d102 bne.n 8004400 { /* Clear FLASH End of Operation pending bit */ __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 80043fa: 4b25 ldr r3, [pc, #148] ; (8004490 ) 80043fc: 2202 movs r2, #2 80043fe: 619a str r2, [r3, #24] } if( __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || 8004400: 4b23 ldr r3, [pc, #140] ; (8004490 ) 8004402: 699a ldr r2, [r3, #24] 8004404: 2380 movs r3, #128 ; 0x80 8004406: 005b lsls r3, r3, #1 8004408: 401a ands r2, r3 800440a: 2380 movs r3, #128 ; 0x80 800440c: 005b lsls r3, r3, #1 800440e: 429a cmp r2, r3 8004410: d035 beq.n 800447e __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 8004412: 4b1f ldr r3, [pc, #124] ; (8004490 ) 8004414: 699a ldr r2, [r3, #24] 8004416: 2380 movs r3, #128 ; 0x80 8004418: 009b lsls r3, r3, #2 800441a: 401a ands r2, r3 if( __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || 800441c: 2380 movs r3, #128 ; 0x80 800441e: 009b lsls r3, r3, #2 8004420: 429a cmp r2, r3 8004422: d02c beq.n 800447e __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 8004424: 4b1a ldr r3, [pc, #104] ; (8004490 ) 8004426: 699a ldr r2, [r3, #24] 8004428: 2380 movs r3, #128 ; 0x80 800442a: 00db lsls r3, r3, #3 800442c: 401a ands r2, r3 __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 800442e: 2380 movs r3, #128 ; 0x80 8004430: 00db lsls r3, r3, #3 8004432: 429a cmp r2, r3 8004434: d023 beq.n 800447e __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 8004436: 4b16 ldr r3, [pc, #88] ; (8004490 ) 8004438: 699a ldr r2, [r3, #24] 800443a: 2380 movs r3, #128 ; 0x80 800443c: 011b lsls r3, r3, #4 800443e: 401a ands r2, r3 __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 8004440: 2380 movs r3, #128 ; 0x80 8004442: 011b lsls r3, r3, #4 8004444: 429a cmp r2, r3 8004446: d01a beq.n 800447e __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 8004448: 4b11 ldr r3, [pc, #68] ; (8004490 ) 800444a: 699a ldr r2, [r3, #24] 800444c: 2380 movs r3, #128 ; 0x80 800444e: 019b lsls r3, r3, #6 8004450: 401a ands r2, r3 __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 8004452: 2380 movs r3, #128 ; 0x80 8004454: 019b lsls r3, r3, #6 8004456: 429a cmp r2, r3 8004458: d011 beq.n 800447e __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 800445a: 4b0d ldr r3, [pc, #52] ; (8004490 ) 800445c: 699a ldr r2, [r3, #24] 800445e: 2380 movs r3, #128 ; 0x80 8004460: 029b lsls r3, r3, #10 8004462: 401a ands r2, r3 __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 8004464: 2380 movs r3, #128 ; 0x80 8004466: 029b lsls r3, r3, #10 8004468: 429a cmp r2, r3 800446a: d008 beq.n 800447e __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) 800446c: 4b08 ldr r3, [pc, #32] ; (8004490 ) 800446e: 699a ldr r2, [r3, #24] 8004470: 2380 movs r3, #128 ; 0x80 8004472: 025b lsls r3, r3, #9 8004474: 401a ands r2, r3 __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 8004476: 2380 movs r3, #128 ; 0x80 8004478: 025b lsls r3, r3, #9 800447a: 429a cmp r2, r3 800447c: d103 bne.n 8004486 * cut of the STM32L031xx device or the first cut of the STM32L041xx * device, this error should be ignored. The revId of the device * can be retrieved via the HAL_GetREVID() function. * */ FLASH_SetErrorCode(); 800447e: f000 f809 bl 8004494 return HAL_ERROR; 8004482: 2301 movs r3, #1 8004484: e000 b.n 8004488 } /* There is no error flag set */ return HAL_OK; 8004486: 2300 movs r3, #0 } 8004488: 0018 movs r0, r3 800448a: 46bd mov sp, r7 800448c: b004 add sp, #16 800448e: bd80 pop {r7, pc} 8004490: 40022000 .word 0x40022000 08004494 : /** * @brief Set the specific FLASH error flag. * @retval None */ static void FLASH_SetErrorCode(void) { 8004494: b580 push {r7, lr} 8004496: b082 sub sp, #8 8004498: af00 add r7, sp, #0 uint32_t flags = 0; 800449a: 2300 movs r3, #0 800449c: 607b str r3, [r7, #4] if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR)) 800449e: 4b49 ldr r3, [pc, #292] ; (80045c4 ) 80044a0: 699a ldr r2, [r3, #24] 80044a2: 2380 movs r3, #128 ; 0x80 80044a4: 005b lsls r3, r3, #1 80044a6: 401a ands r2, r3 80044a8: 2380 movs r3, #128 ; 0x80 80044aa: 005b lsls r3, r3, #1 80044ac: 429a cmp r2, r3 80044ae: d10a bne.n 80044c6 { pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; 80044b0: 4b45 ldr r3, [pc, #276] ; (80045c8 ) 80044b2: 695b ldr r3, [r3, #20] 80044b4: 2202 movs r2, #2 80044b6: 431a orrs r2, r3 80044b8: 4b43 ldr r3, [pc, #268] ; (80045c8 ) 80044ba: 615a str r2, [r3, #20] flags |= FLASH_FLAG_WRPERR; 80044bc: 687b ldr r3, [r7, #4] 80044be: 2280 movs r2, #128 ; 0x80 80044c0: 0052 lsls r2, r2, #1 80044c2: 4313 orrs r3, r2 80044c4: 607b str r3, [r7, #4] } if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR)) 80044c6: 4b3f ldr r3, [pc, #252] ; (80045c4 ) 80044c8: 699a ldr r2, [r3, #24] 80044ca: 2380 movs r3, #128 ; 0x80 80044cc: 009b lsls r3, r3, #2 80044ce: 401a ands r2, r3 80044d0: 2380 movs r3, #128 ; 0x80 80044d2: 009b lsls r3, r3, #2 80044d4: 429a cmp r2, r3 80044d6: d10a bne.n 80044ee { pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; 80044d8: 4b3b ldr r3, [pc, #236] ; (80045c8 ) 80044da: 695b ldr r3, [r3, #20] 80044dc: 2201 movs r2, #1 80044de: 431a orrs r2, r3 80044e0: 4b39 ldr r3, [pc, #228] ; (80045c8 ) 80044e2: 615a str r2, [r3, #20] flags |= FLASH_FLAG_PGAERR; 80044e4: 687b ldr r3, [r7, #4] 80044e6: 2280 movs r2, #128 ; 0x80 80044e8: 0092 lsls r2, r2, #2 80044ea: 4313 orrs r3, r2 80044ec: 607b str r3, [r7, #4] } if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR)) 80044ee: 4b35 ldr r3, [pc, #212] ; (80045c4 ) 80044f0: 699a ldr r2, [r3, #24] 80044f2: 2380 movs r3, #128 ; 0x80 80044f4: 00db lsls r3, r3, #3 80044f6: 401a ands r2, r3 80044f8: 2380 movs r3, #128 ; 0x80 80044fa: 00db lsls r3, r3, #3 80044fc: 429a cmp r2, r3 80044fe: d10a bne.n 8004516 { pFlash.ErrorCode |= HAL_FLASH_ERROR_SIZE; 8004500: 4b31 ldr r3, [pc, #196] ; (80045c8 ) 8004502: 695b ldr r3, [r3, #20] 8004504: 2208 movs r2, #8 8004506: 431a orrs r2, r3 8004508: 4b2f ldr r3, [pc, #188] ; (80045c8 ) 800450a: 615a str r2, [r3, #20] flags |= FLASH_FLAG_SIZERR; 800450c: 687b ldr r3, [r7, #4] 800450e: 2280 movs r2, #128 ; 0x80 8004510: 00d2 lsls r2, r2, #3 8004512: 4313 orrs r3, r2 8004514: 607b str r3, [r7, #4] } if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR)) 8004516: 4b2b ldr r3, [pc, #172] ; (80045c4 ) 8004518: 699a ldr r2, [r3, #24] 800451a: 2380 movs r3, #128 ; 0x80 800451c: 011b lsls r3, r3, #4 800451e: 401a ands r2, r3 8004520: 2380 movs r3, #128 ; 0x80 8004522: 011b lsls r3, r3, #4 8004524: 429a cmp r2, r3 8004526: d10a bne.n 800453e * cut of the STM32L031xx device or the first cut of the STM32L041xx * device, this error should be ignored. The revId of the device * can be retrieved via the HAL_GetREVID() function. * */ pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV; 8004528: 4b27 ldr r3, [pc, #156] ; (80045c8 ) 800452a: 695b ldr r3, [r3, #20] 800452c: 2204 movs r2, #4 800452e: 431a orrs r2, r3 8004530: 4b25 ldr r3, [pc, #148] ; (80045c8 ) 8004532: 615a str r2, [r3, #20] flags |= FLASH_FLAG_OPTVERR; 8004534: 687b ldr r3, [r7, #4] 8004536: 2280 movs r2, #128 ; 0x80 8004538: 0112 lsls r2, r2, #4 800453a: 4313 orrs r3, r2 800453c: 607b str r3, [r7, #4] } if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR)) 800453e: 4b21 ldr r3, [pc, #132] ; (80045c4 ) 8004540: 699a ldr r2, [r3, #24] 8004542: 2380 movs r3, #128 ; 0x80 8004544: 019b lsls r3, r3, #6 8004546: 401a ands r2, r3 8004548: 2380 movs r3, #128 ; 0x80 800454a: 019b lsls r3, r3, #6 800454c: 429a cmp r2, r3 800454e: d10a bne.n 8004566 { pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; 8004550: 4b1d ldr r3, [pc, #116] ; (80045c8 ) 8004552: 695b ldr r3, [r3, #20] 8004554: 2210 movs r2, #16 8004556: 431a orrs r2, r3 8004558: 4b1b ldr r3, [pc, #108] ; (80045c8 ) 800455a: 615a str r2, [r3, #20] flags |= FLASH_FLAG_RDERR; 800455c: 687b ldr r3, [r7, #4] 800455e: 2280 movs r2, #128 ; 0x80 8004560: 0192 lsls r2, r2, #6 8004562: 4313 orrs r3, r2 8004564: 607b str r3, [r7, #4] } if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR)) 8004566: 4b17 ldr r3, [pc, #92] ; (80045c4 ) 8004568: 699a ldr r2, [r3, #24] 800456a: 2380 movs r3, #128 ; 0x80 800456c: 029b lsls r3, r3, #10 800456e: 401a ands r2, r3 8004570: 2380 movs r3, #128 ; 0x80 8004572: 029b lsls r3, r3, #10 8004574: 429a cmp r2, r3 8004576: d109 bne.n 800458c { pFlash.ErrorCode |= HAL_FLASH_ERROR_FWWERR; 8004578: 4b13 ldr r3, [pc, #76] ; (80045c8 ) 800457a: 695b ldr r3, [r3, #20] 800457c: 2220 movs r2, #32 800457e: 431a orrs r2, r3 8004580: 4b11 ldr r3, [pc, #68] ; (80045c8 ) 8004582: 615a str r2, [r3, #20] flags |= HAL_FLASH_ERROR_FWWERR; 8004584: 687b ldr r3, [r7, #4] 8004586: 2220 movs r2, #32 8004588: 4313 orrs r3, r2 800458a: 607b str r3, [r7, #4] } if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR)) 800458c: 4b0d ldr r3, [pc, #52] ; (80045c4 ) 800458e: 699a ldr r2, [r3, #24] 8004590: 2380 movs r3, #128 ; 0x80 8004592: 025b lsls r3, r3, #9 8004594: 401a ands r2, r3 8004596: 2380 movs r3, #128 ; 0x80 8004598: 025b lsls r3, r3, #9 800459a: 429a cmp r2, r3 800459c: d10a bne.n 80045b4 { pFlash.ErrorCode |= HAL_FLASH_ERROR_NOTZERO; 800459e: 4b0a ldr r3, [pc, #40] ; (80045c8 ) 80045a0: 695b ldr r3, [r3, #20] 80045a2: 2240 movs r2, #64 ; 0x40 80045a4: 431a orrs r2, r3 80045a6: 4b08 ldr r3, [pc, #32] ; (80045c8 ) 80045a8: 615a str r2, [r3, #20] flags |= FLASH_FLAG_NOTZEROERR; 80045aa: 687b ldr r3, [r7, #4] 80045ac: 2280 movs r2, #128 ; 0x80 80045ae: 0252 lsls r2, r2, #9 80045b0: 4313 orrs r3, r2 80045b2: 607b str r3, [r7, #4] } /* Clear FLASH error pending bits */ __HAL_FLASH_CLEAR_FLAG(flags); 80045b4: 4b03 ldr r3, [pc, #12] ; (80045c4 ) 80045b6: 687a ldr r2, [r7, #4] 80045b8: 619a str r2, [r3, #24] } 80045ba: 46c0 nop ; (mov r8, r8) 80045bc: 46bd mov sp, r7 80045be: b002 add sp, #8 80045c0: bd80 pop {r7, pc} 80045c2: 46c0 nop ; (mov r8, r8) 80045c4: 40022000 .word 0x40022000 80045c8: 20000390 .word 0x20000390 080045cc : * @note A Page is erased in the Program memory only if the address to load * is the start address of a page (multiple of @ref FLASH_PAGE_SIZE bytes). * @retval None */ void FLASH_PageErase(uint32_t PageAddress) { 80045cc: b580 push {r7, lr} 80045ce: b082 sub sp, #8 80045d0: af00 add r7, sp, #0 80045d2: 6078 str r0, [r7, #4] /* Clean the error context */ pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 80045d4: 4b0c ldr r3, [pc, #48] ; (8004608 ) 80045d6: 2200 movs r2, #0 80045d8: 615a str r2, [r3, #20] /* Set the ERASE bit */ SET_BIT(FLASH->PECR, FLASH_PECR_ERASE); 80045da: 4b0c ldr r3, [pc, #48] ; (800460c ) 80045dc: 4a0b ldr r2, [pc, #44] ; (800460c ) 80045de: 6852 ldr r2, [r2, #4] 80045e0: 2180 movs r1, #128 ; 0x80 80045e2: 0089 lsls r1, r1, #2 80045e4: 430a orrs r2, r1 80045e6: 605a str r2, [r3, #4] /* Set PROG bit */ SET_BIT(FLASH->PECR, FLASH_PECR_PROG); 80045e8: 4b08 ldr r3, [pc, #32] ; (800460c ) 80045ea: 4a08 ldr r2, [pc, #32] ; (800460c ) 80045ec: 6852 ldr r2, [r2, #4] 80045ee: 2108 movs r1, #8 80045f0: 430a orrs r2, r1 80045f2: 605a str r2, [r3, #4] /* Write 00000000h to the first word of the program page to erase */ *(__IO uint32_t *)(uint32_t)(PageAddress & ~(FLASH_PAGE_SIZE - 1)) = 0x00000000; 80045f4: 687b ldr r3, [r7, #4] 80045f6: 227f movs r2, #127 ; 0x7f 80045f8: 4393 bics r3, r2 80045fa: 2200 movs r2, #0 80045fc: 601a str r2, [r3, #0] } 80045fe: 46c0 nop ; (mov r8, r8) 8004600: 46bd mov sp, r7 8004602: b002 add sp, #8 8004604: bd80 pop {r7, pc} 8004606: 46c0 nop ; (mov r8, r8) 8004608: 20000390 .word 0x20000390 800460c: 40022000 .word 0x40022000 08004610 : * @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) { 8004610: b580 push {r7, lr} 8004612: b086 sub sp, #24 8004614: af00 add r7, sp, #0 8004616: 6078 str r0, [r7, #4] 8004618: 6039 str r1, [r7, #0] uint32_t position = 0x00U; 800461a: 2300 movs r3, #0 800461c: 617b str r3, [r7, #20] uint32_t iocurrent = 0x00U; 800461e: 2300 movs r3, #0 8004620: 60fb str r3, [r7, #12] uint32_t temp = 0x00U; 8004622: 2300 movs r3, #0 8004624: 613b str r3, [r7, #16] assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, (GPIO_Init->Pin))); /* Configure the port pins */ while (((GPIO_Init->Pin) >> position) != 0) 8004626: e155 b.n 80048d4 { /* Get the IO position */ iocurrent = (GPIO_Init->Pin) & (1U << position); 8004628: 683b ldr r3, [r7, #0] 800462a: 681b ldr r3, [r3, #0] 800462c: 2101 movs r1, #1 800462e: 697a ldr r2, [r7, #20] 8004630: 4091 lsls r1, r2 8004632: 000a movs r2, r1 8004634: 4013 ands r3, r2 8004636: 60fb str r3, [r7, #12] if (iocurrent) 8004638: 68fb ldr r3, [r7, #12] 800463a: 2b00 cmp r3, #0 800463c: d100 bne.n 8004640 800463e: e146 b.n 80048ce { /*--------------------- GPIO Mode Configuration ------------------------*/ /* In case of Output or Alternate function mode selection */ if ((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) || 8004640: 683b ldr r3, [r7, #0] 8004642: 685b ldr r3, [r3, #4] 8004644: 2b01 cmp r3, #1 8004646: d00b beq.n 8004660 8004648: 683b ldr r3, [r7, #0] 800464a: 685b ldr r3, [r3, #4] 800464c: 2b02 cmp r3, #2 800464e: d007 beq.n 8004660 (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 8004650: 683b ldr r3, [r7, #0] 8004652: 685b ldr r3, [r3, #4] if ((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) || 8004654: 2b11 cmp r3, #17 8004656: d003 beq.n 8004660 (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 8004658: 683b ldr r3, [r7, #0] 800465a: 685b ldr r3, [r3, #4] 800465c: 2b12 cmp r3, #18 800465e: d130 bne.n 80046c2 { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; 8004660: 687b ldr r3, [r7, #4] 8004662: 689b ldr r3, [r3, #8] 8004664: 613b str r3, [r7, #16] temp &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U)); 8004666: 697b ldr r3, [r7, #20] 8004668: 005b lsls r3, r3, #1 800466a: 2203 movs r2, #3 800466c: 409a lsls r2, r3 800466e: 0013 movs r3, r2 8004670: 43da mvns r2, r3 8004672: 693b ldr r3, [r7, #16] 8004674: 4013 ands r3, r2 8004676: 613b str r3, [r7, #16] temp |= (GPIO_Init->Speed << (position * 2U)); 8004678: 683b ldr r3, [r7, #0] 800467a: 68da ldr r2, [r3, #12] 800467c: 697b ldr r3, [r7, #20] 800467e: 005b lsls r3, r3, #1 8004680: 409a lsls r2, r3 8004682: 0013 movs r3, r2 8004684: 693a ldr r2, [r7, #16] 8004686: 4313 orrs r3, r2 8004688: 613b str r3, [r7, #16] GPIOx->OSPEEDR = temp; 800468a: 687b ldr r3, [r7, #4] 800468c: 693a ldr r2, [r7, #16] 800468e: 609a str r2, [r3, #8] /* Configure the IO Output Type */ temp = GPIOx->OTYPER; 8004690: 687b ldr r3, [r7, #4] 8004692: 685b ldr r3, [r3, #4] 8004694: 613b str r3, [r7, #16] temp &= ~(GPIO_OTYPER_OT_0 << position) ; 8004696: 2201 movs r2, #1 8004698: 697b ldr r3, [r7, #20] 800469a: 409a lsls r2, r3 800469c: 0013 movs r3, r2 800469e: 43da mvns r2, r3 80046a0: 693b ldr r3, [r7, #16] 80046a2: 4013 ands r3, r2 80046a4: 613b str r3, [r7, #16] temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4U) << position); 80046a6: 683b ldr r3, [r7, #0] 80046a8: 685b ldr r3, [r3, #4] 80046aa: 091b lsrs r3, r3, #4 80046ac: 2201 movs r2, #1 80046ae: 401a ands r2, r3 80046b0: 697b ldr r3, [r7, #20] 80046b2: 409a lsls r2, r3 80046b4: 0013 movs r3, r2 80046b6: 693a ldr r2, [r7, #16] 80046b8: 4313 orrs r3, r2 80046ba: 613b str r3, [r7, #16] GPIOx->OTYPER = temp; 80046bc: 687b ldr r3, [r7, #4] 80046be: 693a ldr r2, [r7, #16] 80046c0: 605a str r2, [r3, #4] } /* Activate the Pull-up or Pull down resistor for the current IO */ temp = GPIOx->PUPDR; 80046c2: 687b ldr r3, [r7, #4] 80046c4: 68db ldr r3, [r3, #12] 80046c6: 613b str r3, [r7, #16] temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); 80046c8: 697b ldr r3, [r7, #20] 80046ca: 005b lsls r3, r3, #1 80046cc: 2203 movs r2, #3 80046ce: 409a lsls r2, r3 80046d0: 0013 movs r3, r2 80046d2: 43da mvns r2, r3 80046d4: 693b ldr r3, [r7, #16] 80046d6: 4013 ands r3, r2 80046d8: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Pull) << (position * 2U)); 80046da: 683b ldr r3, [r7, #0] 80046dc: 689a ldr r2, [r3, #8] 80046de: 697b ldr r3, [r7, #20] 80046e0: 005b lsls r3, r3, #1 80046e2: 409a lsls r2, r3 80046e4: 0013 movs r3, r2 80046e6: 693a ldr r2, [r7, #16] 80046e8: 4313 orrs r3, r2 80046ea: 613b str r3, [r7, #16] GPIOx->PUPDR = temp; 80046ec: 687b ldr r3, [r7, #4] 80046ee: 693a ldr r2, [r7, #16] 80046f0: 60da str r2, [r3, #12] /* In case of Alternate function mode selection */ if ((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 80046f2: 683b ldr r3, [r7, #0] 80046f4: 685b ldr r3, [r3, #4] 80046f6: 2b02 cmp r3, #2 80046f8: d003 beq.n 8004702 80046fa: 683b ldr r3, [r7, #0] 80046fc: 685b ldr r3, [r3, #4] 80046fe: 2b12 cmp r3, #18 8004700: d123 bne.n 800474a /* Check the Alternate function parameters */ assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); /* Configure Alternate function mapped with the current IO */ temp = GPIOx->AFR[position >> 3U]; 8004702: 697b ldr r3, [r7, #20] 8004704: 08da lsrs r2, r3, #3 8004706: 687b ldr r3, [r7, #4] 8004708: 3208 adds r2, #8 800470a: 0092 lsls r2, r2, #2 800470c: 58d3 ldr r3, [r2, r3] 800470e: 613b str r3, [r7, #16] temp &= ~(0xFUL << ((uint32_t)(position & 0x07UL) * 4U)); 8004710: 697b ldr r3, [r7, #20] 8004712: 2207 movs r2, #7 8004714: 4013 ands r3, r2 8004716: 009b lsls r3, r3, #2 8004718: 220f movs r2, #15 800471a: 409a lsls r2, r3 800471c: 0013 movs r3, r2 800471e: 43da mvns r2, r3 8004720: 693b ldr r3, [r7, #16] 8004722: 4013 ands r3, r2 8004724: 613b str r3, [r7, #16] temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07U) * 4U)); 8004726: 683b ldr r3, [r7, #0] 8004728: 691a ldr r2, [r3, #16] 800472a: 697b ldr r3, [r7, #20] 800472c: 2107 movs r1, #7 800472e: 400b ands r3, r1 8004730: 009b lsls r3, r3, #2 8004732: 409a lsls r2, r3 8004734: 0013 movs r3, r2 8004736: 693a ldr r2, [r7, #16] 8004738: 4313 orrs r3, r2 800473a: 613b str r3, [r7, #16] GPIOx->AFR[position >> 3U] = temp; 800473c: 697b ldr r3, [r7, #20] 800473e: 08da lsrs r2, r3, #3 8004740: 687b ldr r3, [r7, #4] 8004742: 3208 adds r2, #8 8004744: 0092 lsls r2, r2, #2 8004746: 6939 ldr r1, [r7, #16] 8004748: 50d1 str r1, [r2, r3] } /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ temp = GPIOx->MODER; 800474a: 687b ldr r3, [r7, #4] 800474c: 681b ldr r3, [r3, #0] 800474e: 613b str r3, [r7, #16] temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); 8004750: 697b ldr r3, [r7, #20] 8004752: 005b lsls r3, r3, #1 8004754: 2203 movs r2, #3 8004756: 409a lsls r2, r3 8004758: 0013 movs r3, r2 800475a: 43da mvns r2, r3 800475c: 693b ldr r3, [r7, #16] 800475e: 4013 ands r3, r2 8004760: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); 8004762: 683b ldr r3, [r7, #0] 8004764: 685b ldr r3, [r3, #4] 8004766: 2203 movs r2, #3 8004768: 401a ands r2, r3 800476a: 697b ldr r3, [r7, #20] 800476c: 005b lsls r3, r3, #1 800476e: 409a lsls r2, r3 8004770: 0013 movs r3, r2 8004772: 693a ldr r2, [r7, #16] 8004774: 4313 orrs r3, r2 8004776: 613b str r3, [r7, #16] GPIOx->MODER = temp; 8004778: 687b ldr r3, [r7, #4] 800477a: 693a ldr r2, [r7, #16] 800477c: 601a str r2, [r3, #0] /*--------------------- EXTI Mode Configuration ------------------------*/ /* Configure the External Interrupt or event for the current IO */ if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) 800477e: 683b ldr r3, [r7, #0] 8004780: 685a ldr r2, [r3, #4] 8004782: 2380 movs r3, #128 ; 0x80 8004784: 055b lsls r3, r3, #21 8004786: 4013 ands r3, r2 8004788: d100 bne.n 800478c 800478a: e0a0 b.n 80048ce { /* Enable SYSCFG Clock */ __HAL_RCC_SYSCFG_CLK_ENABLE(); 800478c: 4b57 ldr r3, [pc, #348] ; (80048ec ) 800478e: 4a57 ldr r2, [pc, #348] ; (80048ec ) 8004790: 6b52 ldr r2, [r2, #52] ; 0x34 8004792: 2101 movs r1, #1 8004794: 430a orrs r2, r1 8004796: 635a str r2, [r3, #52] ; 0x34 temp = SYSCFG->EXTICR[position >> 2U]; 8004798: 4a55 ldr r2, [pc, #340] ; (80048f0 ) 800479a: 697b ldr r3, [r7, #20] 800479c: 089b lsrs r3, r3, #2 800479e: 3302 adds r3, #2 80047a0: 009b lsls r3, r3, #2 80047a2: 589b ldr r3, [r3, r2] 80047a4: 613b str r3, [r7, #16] CLEAR_BIT(temp, (0x0FUL) << (4U * (position & 0x03U))); 80047a6: 697b ldr r3, [r7, #20] 80047a8: 2203 movs r2, #3 80047aa: 4013 ands r3, r2 80047ac: 009b lsls r3, r3, #2 80047ae: 220f movs r2, #15 80047b0: 409a lsls r2, r3 80047b2: 0013 movs r3, r2 80047b4: 43da mvns r2, r3 80047b6: 693b ldr r3, [r7, #16] 80047b8: 4013 ands r3, r2 80047ba: 613b str r3, [r7, #16] SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03U))); 80047bc: 687a ldr r2, [r7, #4] 80047be: 23a0 movs r3, #160 ; 0xa0 80047c0: 05db lsls r3, r3, #23 80047c2: 429a cmp r2, r3 80047c4: d01f beq.n 8004806 80047c6: 687b ldr r3, [r7, #4] 80047c8: 4a4a ldr r2, [pc, #296] ; (80048f4 ) 80047ca: 4293 cmp r3, r2 80047cc: d019 beq.n 8004802 80047ce: 687b ldr r3, [r7, #4] 80047d0: 4a49 ldr r2, [pc, #292] ; (80048f8 ) 80047d2: 4293 cmp r3, r2 80047d4: d013 beq.n 80047fe 80047d6: 687b ldr r3, [r7, #4] 80047d8: 4a48 ldr r2, [pc, #288] ; (80048fc ) 80047da: 4293 cmp r3, r2 80047dc: d00d beq.n 80047fa 80047de: 687b ldr r3, [r7, #4] 80047e0: 4a47 ldr r2, [pc, #284] ; (8004900 ) 80047e2: 4293 cmp r3, r2 80047e4: d007 beq.n 80047f6 80047e6: 687b ldr r3, [r7, #4] 80047e8: 4a46 ldr r2, [pc, #280] ; (8004904 ) 80047ea: 4293 cmp r3, r2 80047ec: d101 bne.n 80047f2 80047ee: 2305 movs r3, #5 80047f0: e00a b.n 8004808 80047f2: 2306 movs r3, #6 80047f4: e008 b.n 8004808 80047f6: 2304 movs r3, #4 80047f8: e006 b.n 8004808 80047fa: 2303 movs r3, #3 80047fc: e004 b.n 8004808 80047fe: 2302 movs r3, #2 8004800: e002 b.n 8004808 8004802: 2301 movs r3, #1 8004804: e000 b.n 8004808 8004806: 2300 movs r3, #0 8004808: 697a ldr r2, [r7, #20] 800480a: 2103 movs r1, #3 800480c: 400a ands r2, r1 800480e: 0092 lsls r2, r2, #2 8004810: 4093 lsls r3, r2 8004812: 693a ldr r2, [r7, #16] 8004814: 4313 orrs r3, r2 8004816: 613b str r3, [r7, #16] SYSCFG->EXTICR[position >> 2U] = temp; 8004818: 4935 ldr r1, [pc, #212] ; (80048f0 ) 800481a: 697b ldr r3, [r7, #20] 800481c: 089b lsrs r3, r3, #2 800481e: 3302 adds r3, #2 8004820: 009b lsls r3, r3, #2 8004822: 693a ldr r2, [r7, #16] 8004824: 505a str r2, [r3, r1] /* Clear EXTI line configuration */ temp = EXTI->IMR; 8004826: 4b38 ldr r3, [pc, #224] ; (8004908 ) 8004828: 681b ldr r3, [r3, #0] 800482a: 613b str r3, [r7, #16] temp &= ~((uint32_t)iocurrent); 800482c: 68fb ldr r3, [r7, #12] 800482e: 43da mvns r2, r3 8004830: 693b ldr r3, [r7, #16] 8004832: 4013 ands r3, r2 8004834: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) 8004836: 683b ldr r3, [r7, #0] 8004838: 685a ldr r2, [r3, #4] 800483a: 2380 movs r3, #128 ; 0x80 800483c: 025b lsls r3, r3, #9 800483e: 4013 ands r3, r2 8004840: d003 beq.n 800484a { temp |= iocurrent; 8004842: 693a ldr r2, [r7, #16] 8004844: 68fb ldr r3, [r7, #12] 8004846: 4313 orrs r3, r2 8004848: 613b str r3, [r7, #16] } EXTI->IMR = temp; 800484a: 4b2f ldr r3, [pc, #188] ; (8004908 ) 800484c: 693a ldr r2, [r7, #16] 800484e: 601a str r2, [r3, #0] temp = EXTI->EMR; 8004850: 4b2d ldr r3, [pc, #180] ; (8004908 ) 8004852: 685b ldr r3, [r3, #4] 8004854: 613b str r3, [r7, #16] temp &= ~((uint32_t)iocurrent); 8004856: 68fb ldr r3, [r7, #12] 8004858: 43da mvns r2, r3 800485a: 693b ldr r3, [r7, #16] 800485c: 4013 ands r3, r2 800485e: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) 8004860: 683b ldr r3, [r7, #0] 8004862: 685a ldr r2, [r3, #4] 8004864: 2380 movs r3, #128 ; 0x80 8004866: 029b lsls r3, r3, #10 8004868: 4013 ands r3, r2 800486a: d003 beq.n 8004874 { temp |= iocurrent; 800486c: 693a ldr r2, [r7, #16] 800486e: 68fb ldr r3, [r7, #12] 8004870: 4313 orrs r3, r2 8004872: 613b str r3, [r7, #16] } EXTI->EMR = temp; 8004874: 4b24 ldr r3, [pc, #144] ; (8004908 ) 8004876: 693a ldr r2, [r7, #16] 8004878: 605a str r2, [r3, #4] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR; 800487a: 4b23 ldr r3, [pc, #140] ; (8004908 ) 800487c: 689b ldr r3, [r3, #8] 800487e: 613b str r3, [r7, #16] temp &= ~((uint32_t)iocurrent); 8004880: 68fb ldr r3, [r7, #12] 8004882: 43da mvns r2, r3 8004884: 693b ldr r3, [r7, #16] 8004886: 4013 ands r3, r2 8004888: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) 800488a: 683b ldr r3, [r7, #0] 800488c: 685a ldr r2, [r3, #4] 800488e: 2380 movs r3, #128 ; 0x80 8004890: 035b lsls r3, r3, #13 8004892: 4013 ands r3, r2 8004894: d003 beq.n 800489e { temp |= iocurrent; 8004896: 693a ldr r2, [r7, #16] 8004898: 68fb ldr r3, [r7, #12] 800489a: 4313 orrs r3, r2 800489c: 613b str r3, [r7, #16] } EXTI->RTSR = temp; 800489e: 4b1a ldr r3, [pc, #104] ; (8004908 ) 80048a0: 693a ldr r2, [r7, #16] 80048a2: 609a str r2, [r3, #8] temp = EXTI->FTSR; 80048a4: 4b18 ldr r3, [pc, #96] ; (8004908 ) 80048a6: 68db ldr r3, [r3, #12] 80048a8: 613b str r3, [r7, #16] temp &= ~((uint32_t)iocurrent); 80048aa: 68fb ldr r3, [r7, #12] 80048ac: 43da mvns r2, r3 80048ae: 693b ldr r3, [r7, #16] 80048b0: 4013 ands r3, r2 80048b2: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) 80048b4: 683b ldr r3, [r7, #0] 80048b6: 685a ldr r2, [r3, #4] 80048b8: 2380 movs r3, #128 ; 0x80 80048ba: 039b lsls r3, r3, #14 80048bc: 4013 ands r3, r2 80048be: d003 beq.n 80048c8 { temp |= iocurrent; 80048c0: 693a ldr r2, [r7, #16] 80048c2: 68fb ldr r3, [r7, #12] 80048c4: 4313 orrs r3, r2 80048c6: 613b str r3, [r7, #16] } EXTI->FTSR = temp; 80048c8: 4b0f ldr r3, [pc, #60] ; (8004908 ) 80048ca: 693a ldr r2, [r7, #16] 80048cc: 60da str r2, [r3, #12] } } position++; 80048ce: 697b ldr r3, [r7, #20] 80048d0: 3301 adds r3, #1 80048d2: 617b str r3, [r7, #20] while (((GPIO_Init->Pin) >> position) != 0) 80048d4: 683b ldr r3, [r7, #0] 80048d6: 681a ldr r2, [r3, #0] 80048d8: 697b ldr r3, [r7, #20] 80048da: 40da lsrs r2, r3 80048dc: 1e13 subs r3, r2, #0 80048de: d000 beq.n 80048e2 80048e0: e6a2 b.n 8004628 } } 80048e2: 46c0 nop ; (mov r8, r8) 80048e4: 46bd mov sp, r7 80048e6: b006 add sp, #24 80048e8: bd80 pop {r7, pc} 80048ea: 46c0 nop ; (mov r8, r8) 80048ec: 40021000 .word 0x40021000 80048f0: 40010000 .word 0x40010000 80048f4: 50000400 .word 0x50000400 80048f8: 50000800 .word 0x50000800 80048fc: 50000c00 .word 0x50000c00 8004900: 50001000 .word 0x50001000 8004904: 50001c00 .word 0x50001c00 8004908: 40010400 .word 0x40010400 0800490c : * This parameter can be one of GPIO_PIN_x where x can be (0..15). * All port bits are not necessarily available on all GPIOs. * @retval None */ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) { 800490c: b580 push {r7, lr} 800490e: b086 sub sp, #24 8004910: af00 add r7, sp, #0 8004912: 6078 str r0, [r7, #4] 8004914: 6039 str r1, [r7, #0] uint32_t position = 0x00U; 8004916: 2300 movs r3, #0 8004918: 617b str r3, [r7, #20] uint32_t iocurrent = 0x00U; 800491a: 2300 movs r3, #0 800491c: 613b str r3, [r7, #16] uint32_t tmp = 0x00U; 800491e: 2300 movs r3, #0 8004920: 60fb str r3, [r7, #12] /* Check the parameters */ assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, GPIO_Pin)); /* Configure the port pins */ while ((GPIO_Pin >> position) != 0) 8004922: e0be b.n 8004aa2 { /* Get the IO position */ iocurrent = (GPIO_Pin) & (1U << position); 8004924: 2201 movs r2, #1 8004926: 697b ldr r3, [r7, #20] 8004928: 409a lsls r2, r3 800492a: 0013 movs r3, r2 800492c: 683a ldr r2, [r7, #0] 800492e: 4013 ands r3, r2 8004930: 613b str r3, [r7, #16] if (iocurrent) 8004932: 693b ldr r3, [r7, #16] 8004934: 2b00 cmp r3, #0 8004936: d100 bne.n 800493a 8004938: e0b0 b.n 8004a9c { /*------------------------- EXTI Mode Configuration --------------------*/ /* Clear the External Interrupt or Event for the current IO */ tmp = SYSCFG->EXTICR[position >> 2U]; 800493a: 4a5f ldr r2, [pc, #380] ; (8004ab8 ) 800493c: 697b ldr r3, [r7, #20] 800493e: 089b lsrs r3, r3, #2 8004940: 3302 adds r3, #2 8004942: 009b lsls r3, r3, #2 8004944: 589b ldr r3, [r3, r2] 8004946: 60fb str r3, [r7, #12] tmp &= ((0x0FUL) << (4U * (position & 0x03U))); 8004948: 697b ldr r3, [r7, #20] 800494a: 2203 movs r2, #3 800494c: 4013 ands r3, r2 800494e: 009b lsls r3, r3, #2 8004950: 220f movs r2, #15 8004952: 409a lsls r2, r3 8004954: 68fb ldr r3, [r7, #12] 8004956: 4013 ands r3, r2 8004958: 60fb str r3, [r7, #12] if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) 800495a: 687a ldr r2, [r7, #4] 800495c: 23a0 movs r3, #160 ; 0xa0 800495e: 05db lsls r3, r3, #23 8004960: 429a cmp r2, r3 8004962: d01f beq.n 80049a4 8004964: 687b ldr r3, [r7, #4] 8004966: 4a55 ldr r2, [pc, #340] ; (8004abc ) 8004968: 4293 cmp r3, r2 800496a: d019 beq.n 80049a0 800496c: 687b ldr r3, [r7, #4] 800496e: 4a54 ldr r2, [pc, #336] ; (8004ac0 ) 8004970: 4293 cmp r3, r2 8004972: d013 beq.n 800499c 8004974: 687b ldr r3, [r7, #4] 8004976: 4a53 ldr r2, [pc, #332] ; (8004ac4 ) 8004978: 4293 cmp r3, r2 800497a: d00d beq.n 8004998 800497c: 687b ldr r3, [r7, #4] 800497e: 4a52 ldr r2, [pc, #328] ; (8004ac8 ) 8004980: 4293 cmp r3, r2 8004982: d007 beq.n 8004994 8004984: 687b ldr r3, [r7, #4] 8004986: 4a51 ldr r2, [pc, #324] ; (8004acc ) 8004988: 4293 cmp r3, r2 800498a: d101 bne.n 8004990 800498c: 2305 movs r3, #5 800498e: e00a b.n 80049a6 8004990: 2306 movs r3, #6 8004992: e008 b.n 80049a6 8004994: 2304 movs r3, #4 8004996: e006 b.n 80049a6 8004998: 2303 movs r3, #3 800499a: e004 b.n 80049a6 800499c: 2302 movs r3, #2 800499e: e002 b.n 80049a6 80049a0: 2301 movs r3, #1 80049a2: e000 b.n 80049a6 80049a4: 2300 movs r3, #0 80049a6: 697a ldr r2, [r7, #20] 80049a8: 2103 movs r1, #3 80049aa: 400a ands r2, r1 80049ac: 0092 lsls r2, r2, #2 80049ae: 4093 lsls r3, r2 80049b0: 001a movs r2, r3 80049b2: 68fb ldr r3, [r7, #12] 80049b4: 429a cmp r2, r3 80049b6: d132 bne.n 8004a1e { /* Clear EXTI line configuration */ EXTI->IMR &= ~((uint32_t)iocurrent); 80049b8: 4b45 ldr r3, [pc, #276] ; (8004ad0 ) 80049ba: 4a45 ldr r2, [pc, #276] ; (8004ad0 ) 80049bc: 6812 ldr r2, [r2, #0] 80049be: 6939 ldr r1, [r7, #16] 80049c0: 43c9 mvns r1, r1 80049c2: 400a ands r2, r1 80049c4: 601a str r2, [r3, #0] EXTI->EMR &= ~((uint32_t)iocurrent); 80049c6: 4b42 ldr r3, [pc, #264] ; (8004ad0 ) 80049c8: 4a41 ldr r2, [pc, #260] ; (8004ad0 ) 80049ca: 6852 ldr r2, [r2, #4] 80049cc: 6939 ldr r1, [r7, #16] 80049ce: 43c9 mvns r1, r1 80049d0: 400a ands r2, r1 80049d2: 605a str r2, [r3, #4] /* Clear Rising Falling edge configuration */ EXTI->RTSR &= ~((uint32_t)iocurrent); 80049d4: 4b3e ldr r3, [pc, #248] ; (8004ad0 ) 80049d6: 4a3e ldr r2, [pc, #248] ; (8004ad0 ) 80049d8: 6892 ldr r2, [r2, #8] 80049da: 6939 ldr r1, [r7, #16] 80049dc: 43c9 mvns r1, r1 80049de: 400a ands r2, r1 80049e0: 609a str r2, [r3, #8] EXTI->FTSR &= ~((uint32_t)iocurrent); 80049e2: 4b3b ldr r3, [pc, #236] ; (8004ad0 ) 80049e4: 4a3a ldr r2, [pc, #232] ; (8004ad0 ) 80049e6: 68d2 ldr r2, [r2, #12] 80049e8: 6939 ldr r1, [r7, #16] 80049ea: 43c9 mvns r1, r1 80049ec: 400a ands r2, r1 80049ee: 60da str r2, [r3, #12] tmp = (0x0FUL) << (4U * (position & 0x03U)); 80049f0: 697b ldr r3, [r7, #20] 80049f2: 2203 movs r2, #3 80049f4: 4013 ands r3, r2 80049f6: 009b lsls r3, r3, #2 80049f8: 220f movs r2, #15 80049fa: 409a lsls r2, r3 80049fc: 0013 movs r3, r2 80049fe: 60fb str r3, [r7, #12] SYSCFG->EXTICR[position >> 2U] &= ~tmp; 8004a00: 482d ldr r0, [pc, #180] ; (8004ab8 ) 8004a02: 697b ldr r3, [r7, #20] 8004a04: 089b lsrs r3, r3, #2 8004a06: 492c ldr r1, [pc, #176] ; (8004ab8 ) 8004a08: 697a ldr r2, [r7, #20] 8004a0a: 0892 lsrs r2, r2, #2 8004a0c: 3202 adds r2, #2 8004a0e: 0092 lsls r2, r2, #2 8004a10: 5852 ldr r2, [r2, r1] 8004a12: 68f9 ldr r1, [r7, #12] 8004a14: 43c9 mvns r1, r1 8004a16: 400a ands r2, r1 8004a18: 3302 adds r3, #2 8004a1a: 009b lsls r3, r3, #2 8004a1c: 501a str r2, [r3, r0] } /*------------------------- GPIO Mode Configuration --------------------*/ /* Configure IO Direction in Input Floting Mode */ GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2U)); 8004a1e: 687b ldr r3, [r7, #4] 8004a20: 681a ldr r2, [r3, #0] 8004a22: 697b ldr r3, [r7, #20] 8004a24: 005b lsls r3, r3, #1 8004a26: 2103 movs r1, #3 8004a28: 4099 lsls r1, r3 8004a2a: 000b movs r3, r1 8004a2c: 431a orrs r2, r3 8004a2e: 687b ldr r3, [r7, #4] 8004a30: 601a str r2, [r3, #0] /* Configure the default Alternate Function in current IO */ GPIOx->AFR[position >> 3U] &= ~(0xFUL << ((uint32_t)(position & 0x07UL) * 4U)); 8004a32: 697b ldr r3, [r7, #20] 8004a34: 08da lsrs r2, r3, #3 8004a36: 697b ldr r3, [r7, #20] 8004a38: 08d9 lsrs r1, r3, #3 8004a3a: 687b ldr r3, [r7, #4] 8004a3c: 3108 adds r1, #8 8004a3e: 0089 lsls r1, r1, #2 8004a40: 58cb ldr r3, [r1, r3] 8004a42: 6979 ldr r1, [r7, #20] 8004a44: 2007 movs r0, #7 8004a46: 4001 ands r1, r0 8004a48: 0089 lsls r1, r1, #2 8004a4a: 200f movs r0, #15 8004a4c: 4088 lsls r0, r1 8004a4e: 0001 movs r1, r0 8004a50: 43c9 mvns r1, r1 8004a52: 4019 ands r1, r3 8004a54: 687b ldr r3, [r7, #4] 8004a56: 3208 adds r2, #8 8004a58: 0092 lsls r2, r2, #2 8004a5a: 50d1 str r1, [r2, r3] /* Deactivate the Pull-up oand Pull-down resistor for the current IO */ GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); 8004a5c: 687b ldr r3, [r7, #4] 8004a5e: 68db ldr r3, [r3, #12] 8004a60: 697a ldr r2, [r7, #20] 8004a62: 0052 lsls r2, r2, #1 8004a64: 2103 movs r1, #3 8004a66: 4091 lsls r1, r2 8004a68: 000a movs r2, r1 8004a6a: 43d2 mvns r2, r2 8004a6c: 401a ands r2, r3 8004a6e: 687b ldr r3, [r7, #4] 8004a70: 60da str r2, [r3, #12] /* Configure the default value IO Output Type */ GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position); 8004a72: 687b ldr r3, [r7, #4] 8004a74: 685b ldr r3, [r3, #4] 8004a76: 2101 movs r1, #1 8004a78: 697a ldr r2, [r7, #20] 8004a7a: 4091 lsls r1, r2 8004a7c: 000a movs r2, r1 8004a7e: 43d2 mvns r2, r2 8004a80: 401a ands r2, r3 8004a82: 687b ldr r3, [r7, #4] 8004a84: 605a str r2, [r3, #4] /* Configure the default value for IO Speed */ GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U)); 8004a86: 687b ldr r3, [r7, #4] 8004a88: 689b ldr r3, [r3, #8] 8004a8a: 697a ldr r2, [r7, #20] 8004a8c: 0052 lsls r2, r2, #1 8004a8e: 2103 movs r1, #3 8004a90: 4091 lsls r1, r2 8004a92: 000a movs r2, r1 8004a94: 43d2 mvns r2, r2 8004a96: 401a ands r2, r3 8004a98: 687b ldr r3, [r7, #4] 8004a9a: 609a str r2, [r3, #8] } position++; 8004a9c: 697b ldr r3, [r7, #20] 8004a9e: 3301 adds r3, #1 8004aa0: 617b str r3, [r7, #20] while ((GPIO_Pin >> position) != 0) 8004aa2: 683a ldr r2, [r7, #0] 8004aa4: 697b ldr r3, [r7, #20] 8004aa6: 40da lsrs r2, r3 8004aa8: 1e13 subs r3, r2, #0 8004aaa: d000 beq.n 8004aae 8004aac: e73a b.n 8004924 } } 8004aae: 46c0 nop ; (mov r8, r8) 8004ab0: 46bd mov sp, r7 8004ab2: b006 add sp, #24 8004ab4: bd80 pop {r7, pc} 8004ab6: 46c0 nop ; (mov r8, r8) 8004ab8: 40010000 .word 0x40010000 8004abc: 50000400 .word 0x50000400 8004ac0: 50000800 .word 0x50000800 8004ac4: 50000c00 .word 0x50000c00 8004ac8: 50001000 .word 0x50001000 8004acc: 50001c00 .word 0x50001c00 8004ad0: 40010400 .word 0x40010400 08004ad4 : * This parameter can be GPIO_PIN_x where x can be (0..15). * All port bits are not necessarily available on all GPIOs. * @retval The input port pin value. */ GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) { 8004ad4: b580 push {r7, lr} 8004ad6: b084 sub sp, #16 8004ad8: af00 add r7, sp, #0 8004ada: 6078 str r0, [r7, #4] 8004adc: 000a movs r2, r1 8004ade: 1cbb adds r3, r7, #2 8004ae0: 801a strh r2, [r3, #0] GPIO_PinState bitstatus; /* Check the parameters */ assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, GPIO_Pin)); if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET) 8004ae2: 687b ldr r3, [r7, #4] 8004ae4: 691b ldr r3, [r3, #16] 8004ae6: 1cba adds r2, r7, #2 8004ae8: 8812 ldrh r2, [r2, #0] 8004aea: 4013 ands r3, r2 8004aec: d004 beq.n 8004af8 { bitstatus = GPIO_PIN_SET; 8004aee: 230f movs r3, #15 8004af0: 18fb adds r3, r7, r3 8004af2: 2201 movs r2, #1 8004af4: 701a strb r2, [r3, #0] 8004af6: e003 b.n 8004b00 } else { bitstatus = GPIO_PIN_RESET; 8004af8: 230f movs r3, #15 8004afa: 18fb adds r3, r7, r3 8004afc: 2200 movs r2, #0 8004afe: 701a strb r2, [r3, #0] } return bitstatus; 8004b00: 230f movs r3, #15 8004b02: 18fb adds r3, r7, r3 8004b04: 781b ldrb r3, [r3, #0] } 8004b06: 0018 movs r0, r3 8004b08: 46bd mov sp, r7 8004b0a: b004 add sp, #16 8004b0c: bd80 pop {r7, pc} 08004b0e : * GPIO_PIN_RESET: to clear the port pin * GPIO_PIN_SET: to set the port pin * @retval None */ void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { 8004b0e: b580 push {r7, lr} 8004b10: b082 sub sp, #8 8004b12: af00 add r7, sp, #0 8004b14: 6078 str r0, [r7, #4] 8004b16: 0008 movs r0, r1 8004b18: 0011 movs r1, r2 8004b1a: 1cbb adds r3, r7, #2 8004b1c: 1c02 adds r2, r0, #0 8004b1e: 801a strh r2, [r3, #0] 8004b20: 1c7b adds r3, r7, #1 8004b22: 1c0a adds r2, r1, #0 8004b24: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if (PinState != GPIO_PIN_RESET) 8004b26: 1c7b adds r3, r7, #1 8004b28: 781b ldrb r3, [r3, #0] 8004b2a: 2b00 cmp r3, #0 8004b2c: d004 beq.n 8004b38 { GPIOx->BSRR = GPIO_Pin; 8004b2e: 1cbb adds r3, r7, #2 8004b30: 881a ldrh r2, [r3, #0] 8004b32: 687b ldr r3, [r7, #4] 8004b34: 619a str r2, [r3, #24] } else { GPIOx->BRR = GPIO_Pin ; } } 8004b36: e003 b.n 8004b40 GPIOx->BRR = GPIO_Pin ; 8004b38: 1cbb adds r3, r7, #2 8004b3a: 881a ldrh r2, [r3, #0] 8004b3c: 687b ldr r3, [r7, #4] 8004b3e: 629a str r2, [r3, #40] ; 0x28 } 8004b40: 46c0 nop ; (mov r8, r8) 8004b42: 46bd mov sp, r7 8004b44: b002 add sp, #8 8004b46: bd80 pop {r7, pc} 08004b48 : * @brief This function handles EXTI interrupt request. * @param GPIO_Pin Specifies the pins connected to the EXTI line. * @retval None */ void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) { 8004b48: b580 push {r7, lr} 8004b4a: b082 sub sp, #8 8004b4c: af00 add r7, sp, #0 8004b4e: 0002 movs r2, r0 8004b50: 1dbb adds r3, r7, #6 8004b52: 801a strh r2, [r3, #0] /* EXTI line interrupt detected */ if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) 8004b54: 4b09 ldr r3, [pc, #36] ; (8004b7c ) 8004b56: 695b ldr r3, [r3, #20] 8004b58: 1dba adds r2, r7, #6 8004b5a: 8812 ldrh r2, [r2, #0] 8004b5c: 4013 ands r3, r2 8004b5e: d008 beq.n 8004b72 { __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); 8004b60: 4b06 ldr r3, [pc, #24] ; (8004b7c ) 8004b62: 1dba adds r2, r7, #6 8004b64: 8812 ldrh r2, [r2, #0] 8004b66: 615a str r2, [r3, #20] HAL_GPIO_EXTI_Callback(GPIO_Pin); 8004b68: 1dbb adds r3, r7, #6 8004b6a: 881b ldrh r3, [r3, #0] 8004b6c: 0018 movs r0, r3 8004b6e: f7ff f8f7 bl 8003d60 } } 8004b72: 46c0 nop ; (mov r8, r8) 8004b74: 46bd mov sp, r7 8004b76: b002 add sp, #8 8004b78: bd80 pop {r7, pc} 8004b7a: 46c0 nop ; (mov r8, r8) 8004b7c: 40010400 .word 0x40010400 08004b80 : * supported by this macro. 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) { 8004b80: b590 push {r4, r7, lr} 8004b82: b08b sub sp, #44 ; 0x2c 8004b84: af00 add r7, sp, #0 8004b86: 6078 str r0, [r7, #4] uint32_t hsi_state; HAL_StatusTypeDef status; uint32_t sysclk_source, pll_config; /* Check Null pointer */ if(RCC_OscInitStruct == NULL) 8004b88: 687b ldr r3, [r7, #4] 8004b8a: 2b00 cmp r3, #0 8004b8c: d102 bne.n 8004b94 { return HAL_ERROR; 8004b8e: 2301 movs r3, #1 8004b90: f000 fbbe bl 8005310 } /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); 8004b94: 4bc9 ldr r3, [pc, #804] ; (8004ebc ) 8004b96: 68db ldr r3, [r3, #12] 8004b98: 220c movs r2, #12 8004b9a: 4013 ands r3, r2 8004b9c: 61fb str r3, [r7, #28] pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); 8004b9e: 4bc7 ldr r3, [pc, #796] ; (8004ebc ) 8004ba0: 68da ldr r2, [r3, #12] 8004ba2: 2380 movs r3, #128 ; 0x80 8004ba4: 025b lsls r3, r3, #9 8004ba6: 4013 ands r3, r2 8004ba8: 61bb str r3, [r7, #24] /*------------------------------- HSE Configuration ------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) 8004baa: 687b ldr r3, [r7, #4] 8004bac: 681b ldr r3, [r3, #0] 8004bae: 2201 movs r2, #1 8004bb0: 4013 ands r3, r2 8004bb2: d100 bne.n 8004bb6 8004bb4: e07e b.n 8004cb4 { /* Check the parameters */ assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) 8004bb6: 69fb ldr r3, [r7, #28] 8004bb8: 2b08 cmp r3, #8 8004bba: d007 beq.n 8004bcc || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) 8004bbc: 69fb ldr r3, [r7, #28] 8004bbe: 2b0c cmp r3, #12 8004bc0: d112 bne.n 8004be8 8004bc2: 69ba ldr r2, [r7, #24] 8004bc4: 2380 movs r3, #128 ; 0x80 8004bc6: 025b lsls r3, r3, #9 8004bc8: 429a cmp r2, r3 8004bca: d10d bne.n 8004be8 { if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) 8004bcc: 4bbb ldr r3, [pc, #748] ; (8004ebc ) 8004bce: 681a ldr r2, [r3, #0] 8004bd0: 2380 movs r3, #128 ; 0x80 8004bd2: 029b lsls r3, r3, #10 8004bd4: 4013 ands r3, r2 8004bd6: d100 bne.n 8004bda 8004bd8: e06b b.n 8004cb2 8004bda: 687b ldr r3, [r7, #4] 8004bdc: 685b ldr r3, [r3, #4] 8004bde: 2b00 cmp r3, #0 8004be0: d167 bne.n 8004cb2 { return HAL_ERROR; 8004be2: 2301 movs r3, #1 8004be4: f000 fb94 bl 8005310 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); 8004be8: 687b ldr r3, [r7, #4] 8004bea: 685a ldr r2, [r3, #4] 8004bec: 2380 movs r3, #128 ; 0x80 8004bee: 025b lsls r3, r3, #9 8004bf0: 429a cmp r2, r3 8004bf2: d107 bne.n 8004c04 8004bf4: 4bb1 ldr r3, [pc, #708] ; (8004ebc ) 8004bf6: 4ab1 ldr r2, [pc, #708] ; (8004ebc ) 8004bf8: 6812 ldr r2, [r2, #0] 8004bfa: 2180 movs r1, #128 ; 0x80 8004bfc: 0249 lsls r1, r1, #9 8004bfe: 430a orrs r2, r1 8004c00: 601a str r2, [r3, #0] 8004c02: e027 b.n 8004c54 8004c04: 687b ldr r3, [r7, #4] 8004c06: 685a ldr r2, [r3, #4] 8004c08: 23a0 movs r3, #160 ; 0xa0 8004c0a: 02db lsls r3, r3, #11 8004c0c: 429a cmp r2, r3 8004c0e: d10e bne.n 8004c2e 8004c10: 4baa ldr r3, [pc, #680] ; (8004ebc ) 8004c12: 4aaa ldr r2, [pc, #680] ; (8004ebc ) 8004c14: 6812 ldr r2, [r2, #0] 8004c16: 2180 movs r1, #128 ; 0x80 8004c18: 02c9 lsls r1, r1, #11 8004c1a: 430a orrs r2, r1 8004c1c: 601a str r2, [r3, #0] 8004c1e: 4ba7 ldr r3, [pc, #668] ; (8004ebc ) 8004c20: 4aa6 ldr r2, [pc, #664] ; (8004ebc ) 8004c22: 6812 ldr r2, [r2, #0] 8004c24: 2180 movs r1, #128 ; 0x80 8004c26: 0249 lsls r1, r1, #9 8004c28: 430a orrs r2, r1 8004c2a: 601a str r2, [r3, #0] 8004c2c: e012 b.n 8004c54 8004c2e: 4ba3 ldr r3, [pc, #652] ; (8004ebc ) 8004c30: 4aa2 ldr r2, [pc, #648] ; (8004ebc ) 8004c32: 6812 ldr r2, [r2, #0] 8004c34: 49a2 ldr r1, [pc, #648] ; (8004ec0 ) 8004c36: 400a ands r2, r1 8004c38: 601a str r2, [r3, #0] 8004c3a: 4ba0 ldr r3, [pc, #640] ; (8004ebc ) 8004c3c: 681a ldr r2, [r3, #0] 8004c3e: 2380 movs r3, #128 ; 0x80 8004c40: 025b lsls r3, r3, #9 8004c42: 4013 ands r3, r2 8004c44: 60fb str r3, [r7, #12] 8004c46: 68fb ldr r3, [r7, #12] 8004c48: 4b9c ldr r3, [pc, #624] ; (8004ebc ) 8004c4a: 4a9c ldr r2, [pc, #624] ; (8004ebc ) 8004c4c: 6812 ldr r2, [r2, #0] 8004c4e: 499d ldr r1, [pc, #628] ; (8004ec4 ) 8004c50: 400a ands r2, r1 8004c52: 601a str r2, [r3, #0] /* Check the HSE State */ if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) 8004c54: 687b ldr r3, [r7, #4] 8004c56: 685b ldr r3, [r3, #4] 8004c58: 2b00 cmp r3, #0 8004c5a: d015 beq.n 8004c88 { /* Get Start Tick */ tickstart = HAL_GetTick(); 8004c5c: f7ff f966 bl 8003f2c 8004c60: 0003 movs r3, r0 8004c62: 617b str r3, [r7, #20] /* Wait till HSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) 8004c64: e009 b.n 8004c7a { if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) 8004c66: f7ff f961 bl 8003f2c 8004c6a: 0002 movs r2, r0 8004c6c: 697b ldr r3, [r7, #20] 8004c6e: 1ad3 subs r3, r2, r3 8004c70: 2b64 cmp r3, #100 ; 0x64 8004c72: d902 bls.n 8004c7a { return HAL_TIMEOUT; 8004c74: 2303 movs r3, #3 8004c76: f000 fb4b bl 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) 8004c7a: 4b90 ldr r3, [pc, #576] ; (8004ebc ) 8004c7c: 681a ldr r2, [r3, #0] 8004c7e: 2380 movs r3, #128 ; 0x80 8004c80: 029b lsls r3, r3, #10 8004c82: 4013 ands r3, r2 8004c84: d0ef beq.n 8004c66 8004c86: e015 b.n 8004cb4 } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); 8004c88: f7ff f950 bl 8003f2c 8004c8c: 0003 movs r3, r0 8004c8e: 617b str r3, [r7, #20] /* Wait till HSE is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) 8004c90: e008 b.n 8004ca4 { if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) 8004c92: f7ff f94b bl 8003f2c 8004c96: 0002 movs r2, r0 8004c98: 697b ldr r3, [r7, #20] 8004c9a: 1ad3 subs r3, r2, r3 8004c9c: 2b64 cmp r3, #100 ; 0x64 8004c9e: d901 bls.n 8004ca4 { return HAL_TIMEOUT; 8004ca0: 2303 movs r3, #3 8004ca2: e335 b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) 8004ca4: 4b85 ldr r3, [pc, #532] ; (8004ebc ) 8004ca6: 681a ldr r2, [r3, #0] 8004ca8: 2380 movs r3, #128 ; 0x80 8004caa: 029b lsls r3, r3, #10 8004cac: 4013 ands r3, r2 8004cae: d1f0 bne.n 8004c92 8004cb0: e000 b.n 8004cb4 if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) 8004cb2: 46c0 nop ; (mov r8, r8) } } } } /*----------------------------- HSI Configuration --------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) 8004cb4: 687b ldr r3, [r7, #4] 8004cb6: 681b ldr r3, [r3, #0] 8004cb8: 2202 movs r2, #2 8004cba: 4013 ands r3, r2 8004cbc: d100 bne.n 8004cc0 8004cbe: e099 b.n 8004df4 { /* Check the parameters */ assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); hsi_state = RCC_OscInitStruct->HSIState; 8004cc0: 687b ldr r3, [r7, #4] 8004cc2: 68db ldr r3, [r3, #12] 8004cc4: 627b str r3, [r7, #36] ; 0x24 #if defined(RCC_CR_HSIOUTEN) if((hsi_state & RCC_HSI_OUTEN) != 0U) 8004cc6: 6a7b ldr r3, [r7, #36] ; 0x24 8004cc8: 2220 movs r2, #32 8004cca: 4013 ands r3, r2 8004ccc: d009 beq.n 8004ce2 { /* HSI Output enable for timer requested */ SET_BIT(RCC->CR, RCC_CR_HSIOUTEN); 8004cce: 4b7b ldr r3, [pc, #492] ; (8004ebc ) 8004cd0: 4a7a ldr r2, [pc, #488] ; (8004ebc ) 8004cd2: 6812 ldr r2, [r2, #0] 8004cd4: 2120 movs r1, #32 8004cd6: 430a orrs r2, r1 8004cd8: 601a str r2, [r3, #0] hsi_state &= ~RCC_CR_HSIOUTEN; 8004cda: 6a7b ldr r3, [r7, #36] ; 0x24 8004cdc: 2220 movs r2, #32 8004cde: 4393 bics r3, r2 8004ce0: 627b str r3, [r7, #36] ; 0x24 } #endif /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) 8004ce2: 69fb ldr r3, [r7, #28] 8004ce4: 2b04 cmp r3, #4 8004ce6: d005 beq.n 8004cf4 || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) 8004ce8: 69fb ldr r3, [r7, #28] 8004cea: 2b0c cmp r3, #12 8004cec: d13f bne.n 8004d6e 8004cee: 69bb ldr r3, [r7, #24] 8004cf0: 2b00 cmp r3, #0 8004cf2: d13c bne.n 8004d6e { /* When HSI is used as system clock it will not disabled */ if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (hsi_state == RCC_HSI_OFF)) 8004cf4: 4b71 ldr r3, [pc, #452] ; (8004ebc ) 8004cf6: 681b ldr r3, [r3, #0] 8004cf8: 2204 movs r2, #4 8004cfa: 4013 ands r3, r2 8004cfc: d004 beq.n 8004d08 8004cfe: 6a7b ldr r3, [r7, #36] ; 0x24 8004d00: 2b00 cmp r3, #0 8004d02: d101 bne.n 8004d08 { return HAL_ERROR; 8004d04: 2301 movs r3, #1 8004d06: e303 b.n 8005310 } /* Otherwise, just the calibration and HSI or HSIdiv4 are allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); 8004d08: 4a6c ldr r2, [pc, #432] ; (8004ebc ) 8004d0a: 4b6c ldr r3, [pc, #432] ; (8004ebc ) 8004d0c: 685b ldr r3, [r3, #4] 8004d0e: 496e ldr r1, [pc, #440] ; (8004ec8 ) 8004d10: 4019 ands r1, r3 8004d12: 687b ldr r3, [r7, #4] 8004d14: 691b ldr r3, [r3, #16] 8004d16: 021b lsls r3, r3, #8 8004d18: 430b orrs r3, r1 8004d1a: 6053 str r3, [r2, #4] /* Enable the Internal High Speed oscillator (HSI or HSIdiv4) */ __HAL_RCC_HSI_CONFIG(hsi_state); 8004d1c: 4b67 ldr r3, [pc, #412] ; (8004ebc ) 8004d1e: 4a67 ldr r2, [pc, #412] ; (8004ebc ) 8004d20: 6812 ldr r2, [r2, #0] 8004d22: 2109 movs r1, #9 8004d24: 438a bics r2, r1 8004d26: 0011 movs r1, r2 8004d28: 6a7a ldr r2, [r7, #36] ; 0x24 8004d2a: 430a orrs r2, r1 8004d2c: 601a str r2, [r3, #0] } /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; 8004d2e: f000 fc41 bl 80055b4 8004d32: 0001 movs r1, r0 8004d34: 4b61 ldr r3, [pc, #388] ; (8004ebc ) 8004d36: 68db ldr r3, [r3, #12] 8004d38: 091b lsrs r3, r3, #4 8004d3a: 220f movs r2, #15 8004d3c: 4013 ands r3, r2 8004d3e: 4a63 ldr r2, [pc, #396] ; (8004ecc ) 8004d40: 5cd3 ldrb r3, [r2, r3] 8004d42: 000a movs r2, r1 8004d44: 40da lsrs r2, r3 8004d46: 4b62 ldr r3, [pc, #392] ; (8004ed0 ) 8004d48: 601a str r2, [r3, #0] /* Configure the source of time base considering new system clocks settings*/ status = HAL_InitTick (uwTickPrio); 8004d4a: 4b62 ldr r3, [pc, #392] ; (8004ed4 ) 8004d4c: 681b ldr r3, [r3, #0] 8004d4e: 2213 movs r2, #19 8004d50: 18bc adds r4, r7, r2 8004d52: 0018 movs r0, r3 8004d54: f7ff f8a4 bl 8003ea0 8004d58: 0003 movs r3, r0 8004d5a: 7023 strb r3, [r4, #0] if(status != HAL_OK) 8004d5c: 2313 movs r3, #19 8004d5e: 18fb adds r3, r7, r3 8004d60: 781b ldrb r3, [r3, #0] 8004d62: 2b00 cmp r3, #0 8004d64: d046 beq.n 8004df4 { return status; 8004d66: 2313 movs r3, #19 8004d68: 18fb adds r3, r7, r3 8004d6a: 781b ldrb r3, [r3, #0] 8004d6c: e2d0 b.n 8005310 } } else { /* Check the HSI State */ if(hsi_state != RCC_HSI_OFF) 8004d6e: 6a7b ldr r3, [r7, #36] ; 0x24 8004d70: 2b00 cmp r3, #0 8004d72: d026 beq.n 8004dc2 { /* Enable the Internal High Speed oscillator (HSI or HSIdiv4) */ __HAL_RCC_HSI_CONFIG(hsi_state); 8004d74: 4b51 ldr r3, [pc, #324] ; (8004ebc ) 8004d76: 4a51 ldr r2, [pc, #324] ; (8004ebc ) 8004d78: 6812 ldr r2, [r2, #0] 8004d7a: 2109 movs r1, #9 8004d7c: 438a bics r2, r1 8004d7e: 0011 movs r1, r2 8004d80: 6a7a ldr r2, [r7, #36] ; 0x24 8004d82: 430a orrs r2, r1 8004d84: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 8004d86: f7ff f8d1 bl 8003f2c 8004d8a: 0003 movs r3, r0 8004d8c: 617b str r3, [r7, #20] /* Wait till HSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) 8004d8e: e008 b.n 8004da2 { if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) 8004d90: f7ff f8cc bl 8003f2c 8004d94: 0002 movs r2, r0 8004d96: 697b ldr r3, [r7, #20] 8004d98: 1ad3 subs r3, r2, r3 8004d9a: 2b02 cmp r3, #2 8004d9c: d901 bls.n 8004da2 { return HAL_TIMEOUT; 8004d9e: 2303 movs r3, #3 8004da0: e2b6 b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) 8004da2: 4b46 ldr r3, [pc, #280] ; (8004ebc ) 8004da4: 681b ldr r3, [r3, #0] 8004da6: 2204 movs r2, #4 8004da8: 4013 ands r3, r2 8004daa: d0f1 beq.n 8004d90 } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); 8004dac: 4a43 ldr r2, [pc, #268] ; (8004ebc ) 8004dae: 4b43 ldr r3, [pc, #268] ; (8004ebc ) 8004db0: 685b ldr r3, [r3, #4] 8004db2: 4945 ldr r1, [pc, #276] ; (8004ec8 ) 8004db4: 4019 ands r1, r3 8004db6: 687b ldr r3, [r7, #4] 8004db8: 691b ldr r3, [r3, #16] 8004dba: 021b lsls r3, r3, #8 8004dbc: 430b orrs r3, r1 8004dbe: 6053 str r3, [r2, #4] 8004dc0: e018 b.n 8004df4 } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); 8004dc2: 4b3e ldr r3, [pc, #248] ; (8004ebc ) 8004dc4: 4a3d ldr r2, [pc, #244] ; (8004ebc ) 8004dc6: 6812 ldr r2, [r2, #0] 8004dc8: 2101 movs r1, #1 8004dca: 438a bics r2, r1 8004dcc: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 8004dce: f7ff f8ad bl 8003f2c 8004dd2: 0003 movs r3, r0 8004dd4: 617b str r3, [r7, #20] /* Wait till HSI is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) 8004dd6: e008 b.n 8004dea { if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) 8004dd8: f7ff f8a8 bl 8003f2c 8004ddc: 0002 movs r2, r0 8004dde: 697b ldr r3, [r7, #20] 8004de0: 1ad3 subs r3, r2, r3 8004de2: 2b02 cmp r3, #2 8004de4: d901 bls.n 8004dea { return HAL_TIMEOUT; 8004de6: 2303 movs r3, #3 8004de8: e292 b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) 8004dea: 4b34 ldr r3, [pc, #208] ; (8004ebc ) 8004dec: 681b ldr r3, [r3, #0] 8004dee: 2204 movs r2, #4 8004df0: 4013 ands r3, r2 8004df2: d1f1 bne.n 8004dd8 } } } } /*----------------------------- MSI Configuration --------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) 8004df4: 687b ldr r3, [r7, #4] 8004df6: 681b ldr r3, [r3, #0] 8004df8: 2210 movs r2, #16 8004dfa: 4013 ands r3, r2 8004dfc: d100 bne.n 8004e00 8004dfe: e0a1 b.n 8004f44 { /* When the MSI is used as system clock it will not be disabled */ if(sysclk_source == RCC_CFGR_SWS_MSI) 8004e00: 69fb ldr r3, [r7, #28] 8004e02: 2b00 cmp r3, #0 8004e04: d141 bne.n 8004e8a { if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) 8004e06: 4b2d ldr r3, [pc, #180] ; (8004ebc ) 8004e08: 681a ldr r2, [r3, #0] 8004e0a: 2380 movs r3, #128 ; 0x80 8004e0c: 009b lsls r3, r3, #2 8004e0e: 4013 ands r3, r2 8004e10: d005 beq.n 8004e1e 8004e12: 687b ldr r3, [r7, #4] 8004e14: 69db ldr r3, [r3, #28] 8004e16: 2b00 cmp r3, #0 8004e18: d101 bne.n 8004e1e { return HAL_ERROR; 8004e1a: 2301 movs r3, #1 8004e1c: e278 b.n 8005310 /* Check MSICalibrationValue and MSIClockRange input parameters */ assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); /* Selects the Multiple Speed oscillator (MSI) clock range .*/ __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); 8004e1e: 4a27 ldr r2, [pc, #156] ; (8004ebc ) 8004e20: 4b26 ldr r3, [pc, #152] ; (8004ebc ) 8004e22: 685b ldr r3, [r3, #4] 8004e24: 492c ldr r1, [pc, #176] ; (8004ed8 ) 8004e26: 4019 ands r1, r3 8004e28: 687b ldr r3, [r7, #4] 8004e2a: 6a5b ldr r3, [r3, #36] ; 0x24 8004e2c: 430b orrs r3, r1 8004e2e: 6053 str r3, [r2, #4] /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); 8004e30: 4a22 ldr r2, [pc, #136] ; (8004ebc ) 8004e32: 4b22 ldr r3, [pc, #136] ; (8004ebc ) 8004e34: 685b ldr r3, [r3, #4] 8004e36: 021b lsls r3, r3, #8 8004e38: 0a19 lsrs r1, r3, #8 8004e3a: 687b ldr r3, [r7, #4] 8004e3c: 6a1b ldr r3, [r3, #32] 8004e3e: 061b lsls r3, r3, #24 8004e40: 430b orrs r3, r1 8004e42: 6053 str r3, [r2, #4] /* Update the SystemCoreClock global variable */ SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) 8004e44: 687b ldr r3, [r7, #4] 8004e46: 6a5b ldr r3, [r3, #36] ; 0x24 8004e48: 0b5b lsrs r3, r3, #13 8004e4a: 3301 adds r3, #1 8004e4c: 2280 movs r2, #128 ; 0x80 8004e4e: 0212 lsls r2, r2, #8 8004e50: 409a lsls r2, r3 >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; 8004e52: 4b1a ldr r3, [pc, #104] ; (8004ebc ) 8004e54: 68db ldr r3, [r3, #12] 8004e56: 091b lsrs r3, r3, #4 8004e58: 210f movs r1, #15 8004e5a: 400b ands r3, r1 8004e5c: 491b ldr r1, [pc, #108] ; (8004ecc ) 8004e5e: 5ccb ldrb r3, [r1, r3] 8004e60: 40da lsrs r2, r3 SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) 8004e62: 4b1b ldr r3, [pc, #108] ; (8004ed0 ) 8004e64: 601a str r2, [r3, #0] /* Configure the source of time base considering new system clocks settings*/ status = HAL_InitTick (uwTickPrio); 8004e66: 4b1b ldr r3, [pc, #108] ; (8004ed4 ) 8004e68: 681b ldr r3, [r3, #0] 8004e6a: 2213 movs r2, #19 8004e6c: 18bc adds r4, r7, r2 8004e6e: 0018 movs r0, r3 8004e70: f7ff f816 bl 8003ea0 8004e74: 0003 movs r3, r0 8004e76: 7023 strb r3, [r4, #0] if(status != HAL_OK) 8004e78: 2313 movs r3, #19 8004e7a: 18fb adds r3, r7, r3 8004e7c: 781b ldrb r3, [r3, #0] 8004e7e: 2b00 cmp r3, #0 8004e80: d060 beq.n 8004f44 { return status; 8004e82: 2313 movs r3, #19 8004e84: 18fb adds r3, r7, r3 8004e86: 781b ldrb r3, [r3, #0] 8004e88: e242 b.n 8005310 { /* Check MSI State */ assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); /* Check the MSI State */ if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) 8004e8a: 687b ldr r3, [r7, #4] 8004e8c: 69db ldr r3, [r3, #28] 8004e8e: 2b00 cmp r3, #0 8004e90: d03e beq.n 8004f10 { /* Enable the Multi Speed oscillator (MSI). */ __HAL_RCC_MSI_ENABLE(); 8004e92: 4b0a ldr r3, [pc, #40] ; (8004ebc ) 8004e94: 4a09 ldr r2, [pc, #36] ; (8004ebc ) 8004e96: 6812 ldr r2, [r2, #0] 8004e98: 2180 movs r1, #128 ; 0x80 8004e9a: 0049 lsls r1, r1, #1 8004e9c: 430a orrs r2, r1 8004e9e: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 8004ea0: f7ff f844 bl 8003f2c 8004ea4: 0003 movs r3, r0 8004ea6: 617b str r3, [r7, #20] /* Wait till MSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) 8004ea8: e018 b.n 8004edc { if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) 8004eaa: f7ff f83f bl 8003f2c 8004eae: 0002 movs r2, r0 8004eb0: 697b ldr r3, [r7, #20] 8004eb2: 1ad3 subs r3, r2, r3 8004eb4: 2b02 cmp r3, #2 8004eb6: d911 bls.n 8004edc { return HAL_TIMEOUT; 8004eb8: 2303 movs r3, #3 8004eba: e229 b.n 8005310 8004ebc: 40021000 .word 0x40021000 8004ec0: fffeffff .word 0xfffeffff 8004ec4: fffbffff .word 0xfffbffff 8004ec8: ffffe0ff .word 0xffffe0ff 8004ecc: 080071d0 .word 0x080071d0 8004ed0: 20000000 .word 0x20000000 8004ed4: 20000008 .word 0x20000008 8004ed8: ffff1fff .word 0xffff1fff while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) 8004edc: 4bca ldr r3, [pc, #808] ; (8005208 ) 8004ede: 681a ldr r2, [r3, #0] 8004ee0: 2380 movs r3, #128 ; 0x80 8004ee2: 009b lsls r3, r3, #2 8004ee4: 4013 ands r3, r2 8004ee6: d0e0 beq.n 8004eaa /* Check MSICalibrationValue and MSIClockRange input parameters */ assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); /* Selects the Multiple Speed oscillator (MSI) clock range .*/ __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); 8004ee8: 4ac7 ldr r2, [pc, #796] ; (8005208 ) 8004eea: 4bc7 ldr r3, [pc, #796] ; (8005208 ) 8004eec: 685b ldr r3, [r3, #4] 8004eee: 49c7 ldr r1, [pc, #796] ; (800520c ) 8004ef0: 4019 ands r1, r3 8004ef2: 687b ldr r3, [r7, #4] 8004ef4: 6a5b ldr r3, [r3, #36] ; 0x24 8004ef6: 430b orrs r3, r1 8004ef8: 6053 str r3, [r2, #4] /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); 8004efa: 4ac3 ldr r2, [pc, #780] ; (8005208 ) 8004efc: 4bc2 ldr r3, [pc, #776] ; (8005208 ) 8004efe: 685b ldr r3, [r3, #4] 8004f00: 021b lsls r3, r3, #8 8004f02: 0a19 lsrs r1, r3, #8 8004f04: 687b ldr r3, [r7, #4] 8004f06: 6a1b ldr r3, [r3, #32] 8004f08: 061b lsls r3, r3, #24 8004f0a: 430b orrs r3, r1 8004f0c: 6053 str r3, [r2, #4] 8004f0e: e019 b.n 8004f44 } else { /* Disable the Multi Speed oscillator (MSI). */ __HAL_RCC_MSI_DISABLE(); 8004f10: 4bbd ldr r3, [pc, #756] ; (8005208 ) 8004f12: 4abd ldr r2, [pc, #756] ; (8005208 ) 8004f14: 6812 ldr r2, [r2, #0] 8004f16: 49be ldr r1, [pc, #760] ; (8005210 ) 8004f18: 400a ands r2, r1 8004f1a: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 8004f1c: f7ff f806 bl 8003f2c 8004f20: 0003 movs r3, r0 8004f22: 617b str r3, [r7, #20] /* Wait till MSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) 8004f24: e008 b.n 8004f38 { if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) 8004f26: f7ff f801 bl 8003f2c 8004f2a: 0002 movs r2, r0 8004f2c: 697b ldr r3, [r7, #20] 8004f2e: 1ad3 subs r3, r2, r3 8004f30: 2b02 cmp r3, #2 8004f32: d901 bls.n 8004f38 { return HAL_TIMEOUT; 8004f34: 2303 movs r3, #3 8004f36: e1eb b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) 8004f38: 4bb3 ldr r3, [pc, #716] ; (8005208 ) 8004f3a: 681a ldr r2, [r3, #0] 8004f3c: 2380 movs r3, #128 ; 0x80 8004f3e: 009b lsls r3, r3, #2 8004f40: 4013 ands r3, r2 8004f42: d1f0 bne.n 8004f26 } } } } /*------------------------------ LSI Configuration -------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) 8004f44: 687b ldr r3, [r7, #4] 8004f46: 681b ldr r3, [r3, #0] 8004f48: 2208 movs r2, #8 8004f4a: 4013 ands r3, r2 8004f4c: d036 beq.n 8004fbc { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check the LSI State */ if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) 8004f4e: 687b ldr r3, [r7, #4] 8004f50: 695b ldr r3, [r3, #20] 8004f52: 2b00 cmp r3, #0 8004f54: d019 beq.n 8004f8a { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); 8004f56: 4bac ldr r3, [pc, #688] ; (8005208 ) 8004f58: 4aab ldr r2, [pc, #684] ; (8005208 ) 8004f5a: 6d12 ldr r2, [r2, #80] ; 0x50 8004f5c: 2101 movs r1, #1 8004f5e: 430a orrs r2, r1 8004f60: 651a str r2, [r3, #80] ; 0x50 /* Get Start Tick */ tickstart = HAL_GetTick(); 8004f62: f7fe ffe3 bl 8003f2c 8004f66: 0003 movs r3, r0 8004f68: 617b str r3, [r7, #20] /* Wait till LSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) 8004f6a: e008 b.n 8004f7e { if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) 8004f6c: f7fe ffde bl 8003f2c 8004f70: 0002 movs r2, r0 8004f72: 697b ldr r3, [r7, #20] 8004f74: 1ad3 subs r3, r2, r3 8004f76: 2b02 cmp r3, #2 8004f78: d901 bls.n 8004f7e { return HAL_TIMEOUT; 8004f7a: 2303 movs r3, #3 8004f7c: e1c8 b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) 8004f7e: 4ba2 ldr r3, [pc, #648] ; (8005208 ) 8004f80: 6d1b ldr r3, [r3, #80] ; 0x50 8004f82: 2202 movs r2, #2 8004f84: 4013 ands r3, r2 8004f86: d0f1 beq.n 8004f6c 8004f88: e018 b.n 8004fbc } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); 8004f8a: 4b9f ldr r3, [pc, #636] ; (8005208 ) 8004f8c: 4a9e ldr r2, [pc, #632] ; (8005208 ) 8004f8e: 6d12 ldr r2, [r2, #80] ; 0x50 8004f90: 2101 movs r1, #1 8004f92: 438a bics r2, r1 8004f94: 651a str r2, [r3, #80] ; 0x50 /* Get Start Tick */ tickstart = HAL_GetTick(); 8004f96: f7fe ffc9 bl 8003f2c 8004f9a: 0003 movs r3, r0 8004f9c: 617b str r3, [r7, #20] /* Wait till LSI is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) 8004f9e: e008 b.n 8004fb2 { if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) 8004fa0: f7fe ffc4 bl 8003f2c 8004fa4: 0002 movs r2, r0 8004fa6: 697b ldr r3, [r7, #20] 8004fa8: 1ad3 subs r3, r2, r3 8004faa: 2b02 cmp r3, #2 8004fac: d901 bls.n 8004fb2 { return HAL_TIMEOUT; 8004fae: 2303 movs r3, #3 8004fb0: e1ae b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) 8004fb2: 4b95 ldr r3, [pc, #596] ; (8005208 ) 8004fb4: 6d1b ldr r3, [r3, #80] ; 0x50 8004fb6: 2202 movs r2, #2 8004fb8: 4013 ands r3, r2 8004fba: d1f1 bne.n 8004fa0 } } } } /*------------------------------ LSE Configuration -------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) 8004fbc: 687b ldr r3, [r7, #4] 8004fbe: 681b ldr r3, [r3, #0] 8004fc0: 2204 movs r2, #4 8004fc2: 4013 ands r3, r2 8004fc4: d100 bne.n 8004fc8 8004fc6: e0af b.n 8005128 { FlagStatus pwrclkchanged = RESET; 8004fc8: 2323 movs r3, #35 ; 0x23 8004fca: 18fb adds r3, r7, r3 8004fcc: 2200 movs r2, #0 8004fce: 701a strb r2, [r3, #0] /* 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()) 8004fd0: 4b8d ldr r3, [pc, #564] ; (8005208 ) 8004fd2: 6b9a ldr r2, [r3, #56] ; 0x38 8004fd4: 2380 movs r3, #128 ; 0x80 8004fd6: 055b lsls r3, r3, #21 8004fd8: 4013 ands r3, r2 8004fda: d10a bne.n 8004ff2 { __HAL_RCC_PWR_CLK_ENABLE(); 8004fdc: 4b8a ldr r3, [pc, #552] ; (8005208 ) 8004fde: 4a8a ldr r2, [pc, #552] ; (8005208 ) 8004fe0: 6b92 ldr r2, [r2, #56] ; 0x38 8004fe2: 2180 movs r1, #128 ; 0x80 8004fe4: 0549 lsls r1, r1, #21 8004fe6: 430a orrs r2, r1 8004fe8: 639a str r2, [r3, #56] ; 0x38 pwrclkchanged = SET; 8004fea: 2323 movs r3, #35 ; 0x23 8004fec: 18fb adds r3, r7, r3 8004fee: 2201 movs r2, #1 8004ff0: 701a strb r2, [r3, #0] } if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) 8004ff2: 4b88 ldr r3, [pc, #544] ; (8005214 ) 8004ff4: 681a ldr r2, [r3, #0] 8004ff6: 2380 movs r3, #128 ; 0x80 8004ff8: 005b lsls r3, r3, #1 8004ffa: 4013 ands r3, r2 8004ffc: d11a bne.n 8005034 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR, PWR_CR_DBP); 8004ffe: 4b85 ldr r3, [pc, #532] ; (8005214 ) 8005000: 4a84 ldr r2, [pc, #528] ; (8005214 ) 8005002: 6812 ldr r2, [r2, #0] 8005004: 2180 movs r1, #128 ; 0x80 8005006: 0049 lsls r1, r1, #1 8005008: 430a orrs r2, r1 800500a: 601a str r2, [r3, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); 800500c: f7fe ff8e bl 8003f2c 8005010: 0003 movs r3, r0 8005012: 617b str r3, [r7, #20] while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) 8005014: e008 b.n 8005028 { if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) 8005016: f7fe ff89 bl 8003f2c 800501a: 0002 movs r2, r0 800501c: 697b ldr r3, [r7, #20] 800501e: 1ad3 subs r3, r2, r3 8005020: 2b64 cmp r3, #100 ; 0x64 8005022: d901 bls.n 8005028 { return HAL_TIMEOUT; 8005024: 2303 movs r3, #3 8005026: e173 b.n 8005310 while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) 8005028: 4b7a ldr r3, [pc, #488] ; (8005214 ) 800502a: 681a ldr r2, [r3, #0] 800502c: 2380 movs r3, #128 ; 0x80 800502e: 005b lsls r3, r3, #1 8005030: 4013 ands r3, r2 8005032: d0f0 beq.n 8005016 } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); 8005034: 687b ldr r3, [r7, #4] 8005036: 689a ldr r2, [r3, #8] 8005038: 2380 movs r3, #128 ; 0x80 800503a: 005b lsls r3, r3, #1 800503c: 429a cmp r2, r3 800503e: d107 bne.n 8005050 8005040: 4b71 ldr r3, [pc, #452] ; (8005208 ) 8005042: 4a71 ldr r2, [pc, #452] ; (8005208 ) 8005044: 6d12 ldr r2, [r2, #80] ; 0x50 8005046: 2180 movs r1, #128 ; 0x80 8005048: 0049 lsls r1, r1, #1 800504a: 430a orrs r2, r1 800504c: 651a str r2, [r3, #80] ; 0x50 800504e: e031 b.n 80050b4 8005050: 687b ldr r3, [r7, #4] 8005052: 689b ldr r3, [r3, #8] 8005054: 2b00 cmp r3, #0 8005056: d10c bne.n 8005072 8005058: 4b6b ldr r3, [pc, #428] ; (8005208 ) 800505a: 4a6b ldr r2, [pc, #428] ; (8005208 ) 800505c: 6d12 ldr r2, [r2, #80] ; 0x50 800505e: 496c ldr r1, [pc, #432] ; (8005210 ) 8005060: 400a ands r2, r1 8005062: 651a str r2, [r3, #80] ; 0x50 8005064: 4b68 ldr r3, [pc, #416] ; (8005208 ) 8005066: 4a68 ldr r2, [pc, #416] ; (8005208 ) 8005068: 6d12 ldr r2, [r2, #80] ; 0x50 800506a: 496b ldr r1, [pc, #428] ; (8005218 ) 800506c: 400a ands r2, r1 800506e: 651a str r2, [r3, #80] ; 0x50 8005070: e020 b.n 80050b4 8005072: 687b ldr r3, [r7, #4] 8005074: 689a ldr r2, [r3, #8] 8005076: 23a0 movs r3, #160 ; 0xa0 8005078: 00db lsls r3, r3, #3 800507a: 429a cmp r2, r3 800507c: d10e bne.n 800509c 800507e: 4b62 ldr r3, [pc, #392] ; (8005208 ) 8005080: 4a61 ldr r2, [pc, #388] ; (8005208 ) 8005082: 6d12 ldr r2, [r2, #80] ; 0x50 8005084: 2180 movs r1, #128 ; 0x80 8005086: 00c9 lsls r1, r1, #3 8005088: 430a orrs r2, r1 800508a: 651a str r2, [r3, #80] ; 0x50 800508c: 4b5e ldr r3, [pc, #376] ; (8005208 ) 800508e: 4a5e ldr r2, [pc, #376] ; (8005208 ) 8005090: 6d12 ldr r2, [r2, #80] ; 0x50 8005092: 2180 movs r1, #128 ; 0x80 8005094: 0049 lsls r1, r1, #1 8005096: 430a orrs r2, r1 8005098: 651a str r2, [r3, #80] ; 0x50 800509a: e00b b.n 80050b4 800509c: 4b5a ldr r3, [pc, #360] ; (8005208 ) 800509e: 4a5a ldr r2, [pc, #360] ; (8005208 ) 80050a0: 6d12 ldr r2, [r2, #80] ; 0x50 80050a2: 495b ldr r1, [pc, #364] ; (8005210 ) 80050a4: 400a ands r2, r1 80050a6: 651a str r2, [r3, #80] ; 0x50 80050a8: 4b57 ldr r3, [pc, #348] ; (8005208 ) 80050aa: 4a57 ldr r2, [pc, #348] ; (8005208 ) 80050ac: 6d12 ldr r2, [r2, #80] ; 0x50 80050ae: 495a ldr r1, [pc, #360] ; (8005218 ) 80050b0: 400a ands r2, r1 80050b2: 651a str r2, [r3, #80] ; 0x50 /* Check the LSE State */ if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) 80050b4: 687b ldr r3, [r7, #4] 80050b6: 689b ldr r3, [r3, #8] 80050b8: 2b00 cmp r3, #0 80050ba: d015 beq.n 80050e8 { /* Get Start Tick */ tickstart = HAL_GetTick(); 80050bc: f7fe ff36 bl 8003f2c 80050c0: 0003 movs r3, r0 80050c2: 617b str r3, [r7, #20] /* Wait till LSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) 80050c4: e009 b.n 80050da { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) 80050c6: f7fe ff31 bl 8003f2c 80050ca: 0002 movs r2, r0 80050cc: 697b ldr r3, [r7, #20] 80050ce: 1ad3 subs r3, r2, r3 80050d0: 4a52 ldr r2, [pc, #328] ; (800521c ) 80050d2: 4293 cmp r3, r2 80050d4: d901 bls.n 80050da { return HAL_TIMEOUT; 80050d6: 2303 movs r3, #3 80050d8: e11a b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) 80050da: 4b4b ldr r3, [pc, #300] ; (8005208 ) 80050dc: 6d1a ldr r2, [r3, #80] ; 0x50 80050de: 2380 movs r3, #128 ; 0x80 80050e0: 009b lsls r3, r3, #2 80050e2: 4013 ands r3, r2 80050e4: d0ef beq.n 80050c6 80050e6: e014 b.n 8005112 } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); 80050e8: f7fe ff20 bl 8003f2c 80050ec: 0003 movs r3, r0 80050ee: 617b str r3, [r7, #20] /* Wait till LSE is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) 80050f0: e009 b.n 8005106 { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) 80050f2: f7fe ff1b bl 8003f2c 80050f6: 0002 movs r2, r0 80050f8: 697b ldr r3, [r7, #20] 80050fa: 1ad3 subs r3, r2, r3 80050fc: 4a47 ldr r2, [pc, #284] ; (800521c ) 80050fe: 4293 cmp r3, r2 8005100: d901 bls.n 8005106 { return HAL_TIMEOUT; 8005102: 2303 movs r3, #3 8005104: e104 b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) 8005106: 4b40 ldr r3, [pc, #256] ; (8005208 ) 8005108: 6d1a ldr r2, [r3, #80] ; 0x50 800510a: 2380 movs r3, #128 ; 0x80 800510c: 009b lsls r3, r3, #2 800510e: 4013 ands r3, r2 8005110: d1ef bne.n 80050f2 } } } /* Require to disable power clock if necessary */ if(pwrclkchanged == SET) 8005112: 2323 movs r3, #35 ; 0x23 8005114: 18fb adds r3, r7, r3 8005116: 781b ldrb r3, [r3, #0] 8005118: 2b01 cmp r3, #1 800511a: d105 bne.n 8005128 { __HAL_RCC_PWR_CLK_DISABLE(); 800511c: 4b3a ldr r3, [pc, #232] ; (8005208 ) 800511e: 4a3a ldr r2, [pc, #232] ; (8005208 ) 8005120: 6b92 ldr r2, [r2, #56] ; 0x38 8005122: 493f ldr r1, [pc, #252] ; (8005220 ) 8005124: 400a ands r2, r1 8005126: 639a str r2, [r3, #56] ; 0x38 } } #if defined(RCC_HSI48_SUPPORT) /*----------------------------- HSI48 Configuration --------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48) 8005128: 687b ldr r3, [r7, #4] 800512a: 681b ldr r3, [r3, #0] 800512c: 2220 movs r2, #32 800512e: 4013 ands r3, r2 8005130: d049 beq.n 80051c6 { /* Check the parameters */ assert_param(IS_RCC_HSI48(RCC_OscInitStruct->HSI48State)); /* Check the HSI48 State */ if(RCC_OscInitStruct->HSI48State != RCC_HSI48_OFF) 8005132: 687b ldr r3, [r7, #4] 8005134: 699b ldr r3, [r3, #24] 8005136: 2b00 cmp r3, #0 8005138: d026 beq.n 8005188 { /* Enable the Internal High Speed oscillator (HSI48). */ __HAL_RCC_HSI48_ENABLE(); 800513a: 4b33 ldr r3, [pc, #204] ; (8005208 ) 800513c: 4a32 ldr r2, [pc, #200] ; (8005208 ) 800513e: 6892 ldr r2, [r2, #8] 8005140: 2101 movs r1, #1 8005142: 430a orrs r2, r1 8005144: 609a str r2, [r3, #8] 8005146: 4b30 ldr r3, [pc, #192] ; (8005208 ) 8005148: 4a2f ldr r2, [pc, #188] ; (8005208 ) 800514a: 6b52 ldr r2, [r2, #52] ; 0x34 800514c: 2101 movs r1, #1 800514e: 430a orrs r2, r1 8005150: 635a str r2, [r3, #52] ; 0x34 8005152: 4b34 ldr r3, [pc, #208] ; (8005224 ) 8005154: 4a33 ldr r2, [pc, #204] ; (8005224 ) 8005156: 6a12 ldr r2, [r2, #32] 8005158: 2180 movs r1, #128 ; 0x80 800515a: 0189 lsls r1, r1, #6 800515c: 430a orrs r2, r1 800515e: 621a str r2, [r3, #32] /* Get Start Tick */ tickstart = HAL_GetTick(); 8005160: f7fe fee4 bl 8003f2c 8005164: 0003 movs r3, r0 8005166: 617b str r3, [r7, #20] /* Wait till HSI48 is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) == 0U) 8005168: e008 b.n 800517c { if((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE) 800516a: f7fe fedf bl 8003f2c 800516e: 0002 movs r2, r0 8005170: 697b ldr r3, [r7, #20] 8005172: 1ad3 subs r3, r2, r3 8005174: 2b02 cmp r3, #2 8005176: d901 bls.n 800517c { return HAL_TIMEOUT; 8005178: 2303 movs r3, #3 800517a: e0c9 b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) == 0U) 800517c: 4b22 ldr r3, [pc, #136] ; (8005208 ) 800517e: 689b ldr r3, [r3, #8] 8005180: 2202 movs r2, #2 8005182: 4013 ands r3, r2 8005184: d0f1 beq.n 800516a 8005186: e01e b.n 80051c6 } } else { /* Disable the Internal High Speed oscillator (HSI48). */ __HAL_RCC_HSI48_DISABLE(); 8005188: 4b1f ldr r3, [pc, #124] ; (8005208 ) 800518a: 4a1f ldr r2, [pc, #124] ; (8005208 ) 800518c: 6892 ldr r2, [r2, #8] 800518e: 2101 movs r1, #1 8005190: 438a bics r2, r1 8005192: 609a str r2, [r3, #8] 8005194: 4b23 ldr r3, [pc, #140] ; (8005224 ) 8005196: 4a23 ldr r2, [pc, #140] ; (8005224 ) 8005198: 6a12 ldr r2, [r2, #32] 800519a: 4923 ldr r1, [pc, #140] ; (8005228 ) 800519c: 400a ands r2, r1 800519e: 621a str r2, [r3, #32] /* Get Start Tick */ tickstart = HAL_GetTick(); 80051a0: f7fe fec4 bl 8003f2c 80051a4: 0003 movs r3, r0 80051a6: 617b str r3, [r7, #20] /* Wait till HSI48 is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) != 0U) 80051a8: e008 b.n 80051bc { if((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE) 80051aa: f7fe febf bl 8003f2c 80051ae: 0002 movs r2, r0 80051b0: 697b ldr r3, [r7, #20] 80051b2: 1ad3 subs r3, r2, r3 80051b4: 2b02 cmp r3, #2 80051b6: d901 bls.n 80051bc { return HAL_TIMEOUT; 80051b8: 2303 movs r3, #3 80051ba: e0a9 b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) != 0U) 80051bc: 4b12 ldr r3, [pc, #72] ; (8005208 ) 80051be: 689b ldr r3, [r3, #8] 80051c0: 2202 movs r2, #2 80051c2: 4013 ands r3, r2 80051c4: d1f1 bne.n 80051aa #endif /* RCC_HSI48_SUPPORT */ /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) 80051c6: 687b ldr r3, [r7, #4] 80051c8: 6a9b ldr r3, [r3, #40] ; 0x28 80051ca: 2b00 cmp r3, #0 80051cc: d100 bne.n 80051d0 80051ce: e09e b.n 800530e { /* Check if the PLL is used as system clock or not */ if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) 80051d0: 69fb ldr r3, [r7, #28] 80051d2: 2b0c cmp r3, #12 80051d4: d100 bne.n 80051d8 80051d6: e077 b.n 80052c8 { if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) 80051d8: 687b ldr r3, [r7, #4] 80051da: 6a9b ldr r3, [r3, #40] ; 0x28 80051dc: 2b02 cmp r3, #2 80051de: d158 bne.n 8005292 assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); 80051e0: 4b09 ldr r3, [pc, #36] ; (8005208 ) 80051e2: 4a09 ldr r2, [pc, #36] ; (8005208 ) 80051e4: 6812 ldr r2, [r2, #0] 80051e6: 4911 ldr r1, [pc, #68] ; (800522c ) 80051e8: 400a ands r2, r1 80051ea: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 80051ec: f7fe fe9e bl 8003f2c 80051f0: 0003 movs r3, r0 80051f2: 617b str r3, [r7, #20] /* Wait till PLL is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) 80051f4: e01c b.n 8005230 { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) 80051f6: f7fe fe99 bl 8003f2c 80051fa: 0002 movs r2, r0 80051fc: 697b ldr r3, [r7, #20] 80051fe: 1ad3 subs r3, r2, r3 8005200: 2b02 cmp r3, #2 8005202: d915 bls.n 8005230 { return HAL_TIMEOUT; 8005204: 2303 movs r3, #3 8005206: e083 b.n 8005310 8005208: 40021000 .word 0x40021000 800520c: ffff1fff .word 0xffff1fff 8005210: fffffeff .word 0xfffffeff 8005214: 40007000 .word 0x40007000 8005218: fffffbff .word 0xfffffbff 800521c: 00001388 .word 0x00001388 8005220: efffffff .word 0xefffffff 8005224: 40010000 .word 0x40010000 8005228: ffffdfff .word 0xffffdfff 800522c: feffffff .word 0xfeffffff while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) 8005230: 4b39 ldr r3, [pc, #228] ; (8005318 ) 8005232: 681a ldr r2, [r3, #0] 8005234: 2380 movs r3, #128 ; 0x80 8005236: 049b lsls r3, r3, #18 8005238: 4013 ands r3, r2 800523a: d1dc bne.n 80051f6 } } /* Configure the main PLL clock source, multiplication and division factors. */ __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, 800523c: 4a36 ldr r2, [pc, #216] ; (8005318 ) 800523e: 4b36 ldr r3, [pc, #216] ; (8005318 ) 8005240: 68db ldr r3, [r3, #12] 8005242: 4936 ldr r1, [pc, #216] ; (800531c ) 8005244: 4019 ands r1, r3 8005246: 687b ldr r3, [r7, #4] 8005248: 6ad8 ldr r0, [r3, #44] ; 0x2c 800524a: 687b ldr r3, [r7, #4] 800524c: 6b1b ldr r3, [r3, #48] ; 0x30 800524e: 4318 orrs r0, r3 8005250: 687b ldr r3, [r7, #4] 8005252: 6b5b ldr r3, [r3, #52] ; 0x34 8005254: 4303 orrs r3, r0 8005256: 430b orrs r3, r1 8005258: 60d3 str r3, [r2, #12] RCC_OscInitStruct->PLL.PLLMUL, RCC_OscInitStruct->PLL.PLLDIV); /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); 800525a: 4b2f ldr r3, [pc, #188] ; (8005318 ) 800525c: 4a2e ldr r2, [pc, #184] ; (8005318 ) 800525e: 6812 ldr r2, [r2, #0] 8005260: 2180 movs r1, #128 ; 0x80 8005262: 0449 lsls r1, r1, #17 8005264: 430a orrs r2, r1 8005266: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 8005268: f7fe fe60 bl 8003f2c 800526c: 0003 movs r3, r0 800526e: 617b str r3, [r7, #20] /* Wait till PLL is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) 8005270: e008 b.n 8005284 { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) 8005272: f7fe fe5b bl 8003f2c 8005276: 0002 movs r2, r0 8005278: 697b ldr r3, [r7, #20] 800527a: 1ad3 subs r3, r2, r3 800527c: 2b02 cmp r3, #2 800527e: d901 bls.n 8005284 { return HAL_TIMEOUT; 8005280: 2303 movs r3, #3 8005282: e045 b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) 8005284: 4b24 ldr r3, [pc, #144] ; (8005318 ) 8005286: 681a ldr r2, [r3, #0] 8005288: 2380 movs r3, #128 ; 0x80 800528a: 049b lsls r3, r3, #18 800528c: 4013 ands r3, r2 800528e: d0f0 beq.n 8005272 8005290: e03d b.n 800530e } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); 8005292: 4b21 ldr r3, [pc, #132] ; (8005318 ) 8005294: 4a20 ldr r2, [pc, #128] ; (8005318 ) 8005296: 6812 ldr r2, [r2, #0] 8005298: 4921 ldr r1, [pc, #132] ; (8005320 ) 800529a: 400a ands r2, r1 800529c: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 800529e: f7fe fe45 bl 8003f2c 80052a2: 0003 movs r3, r0 80052a4: 617b str r3, [r7, #20] /* Wait till PLL is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) 80052a6: e008 b.n 80052ba { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) 80052a8: f7fe fe40 bl 8003f2c 80052ac: 0002 movs r2, r0 80052ae: 697b ldr r3, [r7, #20] 80052b0: 1ad3 subs r3, r2, r3 80052b2: 2b02 cmp r3, #2 80052b4: d901 bls.n 80052ba { return HAL_TIMEOUT; 80052b6: 2303 movs r3, #3 80052b8: e02a b.n 8005310 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) 80052ba: 4b17 ldr r3, [pc, #92] ; (8005318 ) 80052bc: 681a ldr r2, [r3, #0] 80052be: 2380 movs r3, #128 ; 0x80 80052c0: 049b lsls r3, r3, #18 80052c2: 4013 ands r3, r2 80052c4: d1f0 bne.n 80052a8 80052c6: e022 b.n 800530e } } else { /* Check if there is a request to disable the PLL used as System clock source */ if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) 80052c8: 687b ldr r3, [r7, #4] 80052ca: 6a9b ldr r3, [r3, #40] ; 0x28 80052cc: 2b01 cmp r3, #1 80052ce: d101 bne.n 80052d4 { return HAL_ERROR; 80052d0: 2301 movs r3, #1 80052d2: e01d b.n 8005310 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ pll_config = RCC->CFGR; 80052d4: 4b10 ldr r3, [pc, #64] ; (8005318 ) 80052d6: 68db ldr r3, [r3, #12] 80052d8: 61bb str r3, [r7, #24] if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || 80052da: 69ba ldr r2, [r7, #24] 80052dc: 2380 movs r3, #128 ; 0x80 80052de: 025b lsls r3, r3, #9 80052e0: 401a ands r2, r3 80052e2: 687b ldr r3, [r7, #4] 80052e4: 6adb ldr r3, [r3, #44] ; 0x2c 80052e6: 429a cmp r2, r3 80052e8: d10f bne.n 800530a (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || 80052ea: 69ba ldr r2, [r7, #24] 80052ec: 23f0 movs r3, #240 ; 0xf0 80052ee: 039b lsls r3, r3, #14 80052f0: 401a ands r2, r3 80052f2: 687b ldr r3, [r7, #4] 80052f4: 6b1b ldr r3, [r3, #48] ; 0x30 if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || 80052f6: 429a cmp r2, r3 80052f8: d107 bne.n 800530a (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) 80052fa: 69ba ldr r2, [r7, #24] 80052fc: 23c0 movs r3, #192 ; 0xc0 80052fe: 041b lsls r3, r3, #16 8005300: 401a ands r2, r3 8005302: 687b ldr r3, [r7, #4] 8005304: 6b5b ldr r3, [r3, #52] ; 0x34 (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || 8005306: 429a cmp r2, r3 8005308: d001 beq.n 800530e { return HAL_ERROR; 800530a: 2301 movs r3, #1 800530c: e000 b.n 8005310 } } } } return HAL_OK; 800530e: 2300 movs r3, #0 } 8005310: 0018 movs r0, r3 8005312: 46bd mov sp, r7 8005314: b00b add sp, #44 ; 0x2c 8005316: bd90 pop {r4, r7, pc} 8005318: 40021000 .word 0x40021000 800531c: ff02ffff .word 0xff02ffff 8005320: feffffff .word 0xfeffffff 08005324 : * 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 HAL status */ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { 8005324: b590 push {r4, r7, lr} 8005326: b085 sub sp, #20 8005328: af00 add r7, sp, #0 800532a: 6078 str r0, [r7, #4] 800532c: 6039 str r1, [r7, #0] uint32_t tickstart; HAL_StatusTypeDef status; /* Check Null pointer */ if(RCC_ClkInitStruct == NULL) 800532e: 687b ldr r3, [r7, #4] 8005330: 2b00 cmp r3, #0 8005332: d101 bne.n 8005338 { return HAL_ERROR; 8005334: 2301 movs r3, #1 8005336: e128 b.n 800558a /* 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 number of wait states because of higher CPU frequency */ if(FLatency > __HAL_FLASH_GET_LATENCY()) 8005338: 4b96 ldr r3, [pc, #600] ; (8005594 ) 800533a: 681b ldr r3, [r3, #0] 800533c: 2201 movs r2, #1 800533e: 401a ands r2, r3 8005340: 683b ldr r3, [r7, #0] 8005342: 429a cmp r2, r3 8005344: d21e bcs.n 8005384 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); 8005346: 4b93 ldr r3, [pc, #588] ; (8005594 ) 8005348: 4a92 ldr r2, [pc, #584] ; (8005594 ) 800534a: 6812 ldr r2, [r2, #0] 800534c: 2101 movs r1, #1 800534e: 438a bics r2, r1 8005350: 0011 movs r1, r2 8005352: 683a ldr r2, [r7, #0] 8005354: 430a orrs r2, r1 8005356: 601a str r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by polling the FLASH_ACR register */ tickstart = HAL_GetTick(); 8005358: f7fe fde8 bl 8003f2c 800535c: 0003 movs r3, r0 800535e: 60fb str r3, [r7, #12] while (__HAL_FLASH_GET_LATENCY() != FLatency) 8005360: e009 b.n 8005376 { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) 8005362: f7fe fde3 bl 8003f2c 8005366: 0002 movs r2, r0 8005368: 68fb ldr r3, [r7, #12] 800536a: 1ad3 subs r3, r2, r3 800536c: 4a8a ldr r2, [pc, #552] ; (8005598 ) 800536e: 4293 cmp r3, r2 8005370: d901 bls.n 8005376 { return HAL_TIMEOUT; 8005372: 2303 movs r3, #3 8005374: e109 b.n 800558a while (__HAL_FLASH_GET_LATENCY() != FLatency) 8005376: 4b87 ldr r3, [pc, #540] ; (8005594 ) 8005378: 681b ldr r3, [r3, #0] 800537a: 2201 movs r2, #1 800537c: 401a ands r2, r3 800537e: 683b ldr r3, [r7, #0] 8005380: 429a cmp r2, r3 8005382: d1ee bne.n 8005362 } } } /*-------------------------- HCLK Configuration --------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) 8005384: 687b ldr r3, [r7, #4] 8005386: 681b ldr r3, [r3, #0] 8005388: 2202 movs r2, #2 800538a: 4013 ands r3, r2 800538c: d009 beq.n 80053a2 { assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); 800538e: 4a83 ldr r2, [pc, #524] ; (800559c ) 8005390: 4b82 ldr r3, [pc, #520] ; (800559c ) 8005392: 68db ldr r3, [r3, #12] 8005394: 21f0 movs r1, #240 ; 0xf0 8005396: 438b bics r3, r1 8005398: 0019 movs r1, r3 800539a: 687b ldr r3, [r7, #4] 800539c: 689b ldr r3, [r3, #8] 800539e: 430b orrs r3, r1 80053a0: 60d3 str r3, [r2, #12] } /*------------------------- SYSCLK Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) 80053a2: 687b ldr r3, [r7, #4] 80053a4: 681b ldr r3, [r3, #0] 80053a6: 2201 movs r2, #1 80053a8: 4013 ands r3, r2 80053aa: d100 bne.n 80053ae 80053ac: e089 b.n 80054c2 { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) 80053ae: 687b ldr r3, [r7, #4] 80053b0: 685b ldr r3, [r3, #4] 80053b2: 2b02 cmp r3, #2 80053b4: d107 bne.n 80053c6 { /* Check the HSE ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) 80053b6: 4b79 ldr r3, [pc, #484] ; (800559c ) 80053b8: 681a ldr r2, [r3, #0] 80053ba: 2380 movs r3, #128 ; 0x80 80053bc: 029b lsls r3, r3, #10 80053be: 4013 ands r3, r2 80053c0: d120 bne.n 8005404 { return HAL_ERROR; 80053c2: 2301 movs r3, #1 80053c4: e0e1 b.n 800558a } } /* PLL is selected as System Clock Source */ else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) 80053c6: 687b ldr r3, [r7, #4] 80053c8: 685b ldr r3, [r3, #4] 80053ca: 2b03 cmp r3, #3 80053cc: d107 bne.n 80053de { /* Check the PLL ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) 80053ce: 4b73 ldr r3, [pc, #460] ; (800559c ) 80053d0: 681a ldr r2, [r3, #0] 80053d2: 2380 movs r3, #128 ; 0x80 80053d4: 049b lsls r3, r3, #18 80053d6: 4013 ands r3, r2 80053d8: d114 bne.n 8005404 { return HAL_ERROR; 80053da: 2301 movs r3, #1 80053dc: e0d5 b.n 800558a } } /* HSI is selected as System Clock Source */ else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) 80053de: 687b ldr r3, [r7, #4] 80053e0: 685b ldr r3, [r3, #4] 80053e2: 2b01 cmp r3, #1 80053e4: d106 bne.n 80053f4 { /* Check the HSI ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) 80053e6: 4b6d ldr r3, [pc, #436] ; (800559c ) 80053e8: 681b ldr r3, [r3, #0] 80053ea: 2204 movs r2, #4 80053ec: 4013 ands r3, r2 80053ee: d109 bne.n 8005404 { return HAL_ERROR; 80053f0: 2301 movs r3, #1 80053f2: e0ca b.n 800558a } /* MSI is selected as System Clock Source */ else { /* Check the MSI ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) 80053f4: 4b69 ldr r3, [pc, #420] ; (800559c ) 80053f6: 681a ldr r2, [r3, #0] 80053f8: 2380 movs r3, #128 ; 0x80 80053fa: 009b lsls r3, r3, #2 80053fc: 4013 ands r3, r2 80053fe: d101 bne.n 8005404 { return HAL_ERROR; 8005400: 2301 movs r3, #1 8005402: e0c2 b.n 800558a } } __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); 8005404: 4a65 ldr r2, [pc, #404] ; (800559c ) 8005406: 4b65 ldr r3, [pc, #404] ; (800559c ) 8005408: 68db ldr r3, [r3, #12] 800540a: 2103 movs r1, #3 800540c: 438b bics r3, r1 800540e: 0019 movs r1, r3 8005410: 687b ldr r3, [r7, #4] 8005412: 685b ldr r3, [r3, #4] 8005414: 430b orrs r3, r1 8005416: 60d3 str r3, [r2, #12] /* Get Start Tick */ tickstart = HAL_GetTick(); 8005418: f7fe fd88 bl 8003f2c 800541c: 0003 movs r3, r0 800541e: 60fb str r3, [r7, #12] if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) 8005420: 687b ldr r3, [r7, #4] 8005422: 685b ldr r3, [r3, #4] 8005424: 2b02 cmp r3, #2 8005426: d111 bne.n 800544c { while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) 8005428: e009 b.n 800543e { if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) 800542a: f7fe fd7f bl 8003f2c 800542e: 0002 movs r2, r0 8005430: 68fb ldr r3, [r7, #12] 8005432: 1ad3 subs r3, r2, r3 8005434: 4a58 ldr r2, [pc, #352] ; (8005598 ) 8005436: 4293 cmp r3, r2 8005438: d901 bls.n 800543e { return HAL_TIMEOUT; 800543a: 2303 movs r3, #3 800543c: e0a5 b.n 800558a while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) 800543e: 4b57 ldr r3, [pc, #348] ; (800559c ) 8005440: 68db ldr r3, [r3, #12] 8005442: 220c movs r2, #12 8005444: 4013 ands r3, r2 8005446: 2b08 cmp r3, #8 8005448: d1ef bne.n 800542a 800544a: e03a b.n 80054c2 } } } else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) 800544c: 687b ldr r3, [r7, #4] 800544e: 685b ldr r3, [r3, #4] 8005450: 2b03 cmp r3, #3 8005452: d111 bne.n 8005478 { while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) 8005454: e009 b.n 800546a { if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) 8005456: f7fe fd69 bl 8003f2c 800545a: 0002 movs r2, r0 800545c: 68fb ldr r3, [r7, #12] 800545e: 1ad3 subs r3, r2, r3 8005460: 4a4d ldr r2, [pc, #308] ; (8005598 ) 8005462: 4293 cmp r3, r2 8005464: d901 bls.n 800546a { return HAL_TIMEOUT; 8005466: 2303 movs r3, #3 8005468: e08f b.n 800558a while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) 800546a: 4b4c ldr r3, [pc, #304] ; (800559c ) 800546c: 68db ldr r3, [r3, #12] 800546e: 220c movs r2, #12 8005470: 4013 ands r3, r2 8005472: 2b0c cmp r3, #12 8005474: d1ef bne.n 8005456 8005476: e024 b.n 80054c2 } } } else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) 8005478: 687b ldr r3, [r7, #4] 800547a: 685b ldr r3, [r3, #4] 800547c: 2b01 cmp r3, #1 800547e: d11b bne.n 80054b8 { while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) 8005480: e009 b.n 8005496 { if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) 8005482: f7fe fd53 bl 8003f2c 8005486: 0002 movs r2, r0 8005488: 68fb ldr r3, [r7, #12] 800548a: 1ad3 subs r3, r2, r3 800548c: 4a42 ldr r2, [pc, #264] ; (8005598 ) 800548e: 4293 cmp r3, r2 8005490: d901 bls.n 8005496 { return HAL_TIMEOUT; 8005492: 2303 movs r3, #3 8005494: e079 b.n 800558a while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) 8005496: 4b41 ldr r3, [pc, #260] ; (800559c ) 8005498: 68db ldr r3, [r3, #12] 800549a: 220c movs r2, #12 800549c: 4013 ands r3, r2 800549e: 2b04 cmp r3, #4 80054a0: d1ef bne.n 8005482 80054a2: e00e b.n 80054c2 } else { while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) { if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) 80054a4: f7fe fd42 bl 8003f2c 80054a8: 0002 movs r2, r0 80054aa: 68fb ldr r3, [r7, #12] 80054ac: 1ad3 subs r3, r2, r3 80054ae: 4a3a ldr r2, [pc, #232] ; (8005598 ) 80054b0: 4293 cmp r3, r2 80054b2: d901 bls.n 80054b8 { return HAL_TIMEOUT; 80054b4: 2303 movs r3, #3 80054b6: e068 b.n 800558a while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) 80054b8: 4b38 ldr r3, [pc, #224] ; (800559c ) 80054ba: 68db ldr r3, [r3, #12] 80054bc: 220c movs r2, #12 80054be: 4013 ands r3, r2 80054c0: d1f0 bne.n 80054a4 } } } } /* Decreasing the number of wait states because of lower CPU frequency */ if(FLatency < __HAL_FLASH_GET_LATENCY()) 80054c2: 4b34 ldr r3, [pc, #208] ; (8005594 ) 80054c4: 681b ldr r3, [r3, #0] 80054c6: 2201 movs r2, #1 80054c8: 401a ands r2, r3 80054ca: 683b ldr r3, [r7, #0] 80054cc: 429a cmp r2, r3 80054ce: d91e bls.n 800550e { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); 80054d0: 4b30 ldr r3, [pc, #192] ; (8005594 ) 80054d2: 4a30 ldr r2, [pc, #192] ; (8005594 ) 80054d4: 6812 ldr r2, [r2, #0] 80054d6: 2101 movs r1, #1 80054d8: 438a bics r2, r1 80054da: 0011 movs r1, r2 80054dc: 683a ldr r2, [r7, #0] 80054de: 430a orrs r2, r1 80054e0: 601a str r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by polling the FLASH_ACR register */ tickstart = HAL_GetTick(); 80054e2: f7fe fd23 bl 8003f2c 80054e6: 0003 movs r3, r0 80054e8: 60fb str r3, [r7, #12] while (__HAL_FLASH_GET_LATENCY() != FLatency) 80054ea: e009 b.n 8005500 { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) 80054ec: f7fe fd1e bl 8003f2c 80054f0: 0002 movs r2, r0 80054f2: 68fb ldr r3, [r7, #12] 80054f4: 1ad3 subs r3, r2, r3 80054f6: 4a28 ldr r2, [pc, #160] ; (8005598 ) 80054f8: 4293 cmp r3, r2 80054fa: d901 bls.n 8005500 { return HAL_TIMEOUT; 80054fc: 2303 movs r3, #3 80054fe: e044 b.n 800558a while (__HAL_FLASH_GET_LATENCY() != FLatency) 8005500: 4b24 ldr r3, [pc, #144] ; (8005594 ) 8005502: 681b ldr r3, [r3, #0] 8005504: 2201 movs r2, #1 8005506: 401a ands r2, r3 8005508: 683b ldr r3, [r7, #0] 800550a: 429a cmp r2, r3 800550c: d1ee bne.n 80054ec } } } /*-------------------------- PCLK1 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) 800550e: 687b ldr r3, [r7, #4] 8005510: 681b ldr r3, [r3, #0] 8005512: 2204 movs r2, #4 8005514: 4013 ands r3, r2 8005516: d008 beq.n 800552a { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); 8005518: 4a20 ldr r2, [pc, #128] ; (800559c ) 800551a: 4b20 ldr r3, [pc, #128] ; (800559c ) 800551c: 68db ldr r3, [r3, #12] 800551e: 4920 ldr r1, [pc, #128] ; (80055a0 ) 8005520: 4019 ands r1, r3 8005522: 687b ldr r3, [r7, #4] 8005524: 68db ldr r3, [r3, #12] 8005526: 430b orrs r3, r1 8005528: 60d3 str r3, [r2, #12] } /*-------------------------- PCLK2 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) 800552a: 687b ldr r3, [r7, #4] 800552c: 681b ldr r3, [r3, #0] 800552e: 2208 movs r2, #8 8005530: 4013 ands r3, r2 8005532: d009 beq.n 8005548 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); 8005534: 4a19 ldr r2, [pc, #100] ; (800559c ) 8005536: 4b19 ldr r3, [pc, #100] ; (800559c ) 8005538: 68db ldr r3, [r3, #12] 800553a: 491a ldr r1, [pc, #104] ; (80055a4 ) 800553c: 4019 ands r1, r3 800553e: 687b ldr r3, [r7, #4] 8005540: 691b ldr r3, [r3, #16] 8005542: 00db lsls r3, r3, #3 8005544: 430b orrs r3, r1 8005546: 60d3 str r3, [r2, #12] } /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; 8005548: f000 f834 bl 80055b4 800554c: 0001 movs r1, r0 800554e: 4b13 ldr r3, [pc, #76] ; (800559c ) 8005550: 68db ldr r3, [r3, #12] 8005552: 091b lsrs r3, r3, #4 8005554: 220f movs r2, #15 8005556: 4013 ands r3, r2 8005558: 4a13 ldr r2, [pc, #76] ; (80055a8 ) 800555a: 5cd3 ldrb r3, [r2, r3] 800555c: 000a movs r2, r1 800555e: 40da lsrs r2, r3 8005560: 4b12 ldr r3, [pc, #72] ; (80055ac ) 8005562: 601a str r2, [r3, #0] /* Configure the source of time base considering new system clocks settings*/ status = HAL_InitTick(uwTickPrio); 8005564: 4b12 ldr r3, [pc, #72] ; (80055b0 ) 8005566: 681b ldr r3, [r3, #0] 8005568: 220b movs r2, #11 800556a: 18bc adds r4, r7, r2 800556c: 0018 movs r0, r3 800556e: f7fe fc97 bl 8003ea0 8005572: 0003 movs r3, r0 8005574: 7023 strb r3, [r4, #0] if(status != HAL_OK) 8005576: 230b movs r3, #11 8005578: 18fb adds r3, r7, r3 800557a: 781b ldrb r3, [r3, #0] 800557c: 2b00 cmp r3, #0 800557e: d003 beq.n 8005588 { return status; 8005580: 230b movs r3, #11 8005582: 18fb adds r3, r7, r3 8005584: 781b ldrb r3, [r3, #0] 8005586: e000 b.n 800558a } return HAL_OK; 8005588: 2300 movs r3, #0 } 800558a: 0018 movs r0, r3 800558c: 46bd mov sp, r7 800558e: b005 add sp, #20 8005590: bd90 pop {r4, r7, pc} 8005592: 46c0 nop ; (mov r8, r8) 8005594: 40022000 .word 0x40022000 8005598: 00001388 .word 0x00001388 800559c: 40021000 .word 0x40021000 80055a0: fffff8ff .word 0xfffff8ff 80055a4: ffffc7ff .word 0xffffc7ff 80055a8: 080071d0 .word 0x080071d0 80055ac: 20000000 .word 0x20000000 80055b0: 20000008 .word 0x20000008 080055b4 : * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. * * @retval SYSCLK frequency */ uint32_t HAL_RCC_GetSysClockFreq(void) { 80055b4: b5f0 push {r4, r5, r6, r7, lr} 80055b6: b08f sub sp, #60 ; 0x3c 80055b8: af00 add r7, sp, #0 uint32_t tmpreg, pllm, plld, pllvco, msiclkrange; /* no init needed */ uint32_t sysclockfreq; tmpreg = RCC->CFGR; 80055ba: 4b4a ldr r3, [pc, #296] ; (80056e4 ) 80055bc: 68db ldr r3, [r3, #12] 80055be: 62fb str r3, [r7, #44] ; 0x2c /* Get SYSCLK source -------------------------------------------------------*/ switch (tmpreg & RCC_CFGR_SWS) 80055c0: 6afa ldr r2, [r7, #44] ; 0x2c 80055c2: 230c movs r3, #12 80055c4: 4013 ands r3, r2 80055c6: 2b08 cmp r3, #8 80055c8: d00f beq.n 80055ea 80055ca: 2b0c cmp r3, #12 80055cc: d010 beq.n 80055f0 80055ce: 2b04 cmp r3, #4 80055d0: d000 beq.n 80055d4 80055d2: e073 b.n 80056bc { case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ { if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) 80055d4: 4b43 ldr r3, [pc, #268] ; (80056e4 ) 80055d6: 681b ldr r3, [r3, #0] 80055d8: 2210 movs r2, #16 80055da: 4013 ands r3, r2 80055dc: d002 beq.n 80055e4 { sysclockfreq = (HSI_VALUE >> 2); 80055de: 4b42 ldr r3, [pc, #264] ; (80056e8 ) 80055e0: 633b str r3, [r7, #48] ; 0x30 } else { sysclockfreq = HSI_VALUE; } break; 80055e2: e079 b.n 80056d8 sysclockfreq = HSI_VALUE; 80055e4: 4b41 ldr r3, [pc, #260] ; (80056ec ) 80055e6: 633b str r3, [r7, #48] ; 0x30 break; 80055e8: e076 b.n 80056d8 } case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ { sysclockfreq = HSE_VALUE; 80055ea: 4b41 ldr r3, [pc, #260] ; (80056f0 ) 80055ec: 633b str r3, [r7, #48] ; 0x30 break; 80055ee: e073 b.n 80056d8 } case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ { pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; 80055f0: 6afb ldr r3, [r7, #44] ; 0x2c 80055f2: 0c9a lsrs r2, r3, #18 80055f4: 230f movs r3, #15 80055f6: 401a ands r2, r3 80055f8: 4b3e ldr r3, [pc, #248] ; (80056f4 ) 80055fa: 5c9b ldrb r3, [r3, r2] 80055fc: 62bb str r3, [r7, #40] ; 0x28 plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; 80055fe: 6afb ldr r3, [r7, #44] ; 0x2c 8005600: 0d9a lsrs r2, r3, #22 8005602: 2303 movs r3, #3 8005604: 4013 ands r3, r2 8005606: 3301 adds r3, #1 8005608: 627b str r3, [r7, #36] ; 0x24 if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) 800560a: 4b36 ldr r3, [pc, #216] ; (80056e4 ) 800560c: 68da ldr r2, [r3, #12] 800560e: 2380 movs r3, #128 ; 0x80 8005610: 025b lsls r3, r3, #9 8005612: 4013 ands r3, r2 8005614: d019 beq.n 800564a { /* HSE used as PLL clock source */ pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); 8005616: 6abb ldr r3, [r7, #40] ; 0x28 8005618: 61bb str r3, [r7, #24] 800561a: 2300 movs r3, #0 800561c: 61fb str r3, [r7, #28] 800561e: 4a34 ldr r2, [pc, #208] ; (80056f0 ) 8005620: 2300 movs r3, #0 8005622: 69b8 ldr r0, [r7, #24] 8005624: 69f9 ldr r1, [r7, #28] 8005626: f7fa fe93 bl 8000350 <__aeabi_lmul> 800562a: 0003 movs r3, r0 800562c: 000c movs r4, r1 800562e: 0018 movs r0, r3 8005630: 0021 movs r1, r4 8005632: 6a7b ldr r3, [r7, #36] ; 0x24 8005634: 613b str r3, [r7, #16] 8005636: 2300 movs r3, #0 8005638: 617b str r3, [r7, #20] 800563a: 693a ldr r2, [r7, #16] 800563c: 697b ldr r3, [r7, #20] 800563e: f7fa fe67 bl 8000310 <__aeabi_uldivmod> 8005642: 0003 movs r3, r0 8005644: 000c movs r4, r1 8005646: 637b str r3, [r7, #52] ; 0x34 8005648: e035 b.n 80056b6 } else { if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) 800564a: 4b26 ldr r3, [pc, #152] ; (80056e4 ) 800564c: 681b ldr r3, [r3, #0] 800564e: 2210 movs r2, #16 8005650: 4013 ands r3, r2 8005652: d019 beq.n 8005688 { pllvco = (uint32_t)((((uint64_t)(HSI_VALUE >> 2)) * (uint64_t)pllm) / (uint64_t)plld); 8005654: 6abb ldr r3, [r7, #40] ; 0x28 8005656: 60bb str r3, [r7, #8] 8005658: 2300 movs r3, #0 800565a: 60fb str r3, [r7, #12] 800565c: 4a22 ldr r2, [pc, #136] ; (80056e8 ) 800565e: 2300 movs r3, #0 8005660: 68b8 ldr r0, [r7, #8] 8005662: 68f9 ldr r1, [r7, #12] 8005664: f7fa fe74 bl 8000350 <__aeabi_lmul> 8005668: 0003 movs r3, r0 800566a: 000c movs r4, r1 800566c: 0018 movs r0, r3 800566e: 0021 movs r1, r4 8005670: 6a7b ldr r3, [r7, #36] ; 0x24 8005672: 603b str r3, [r7, #0] 8005674: 2300 movs r3, #0 8005676: 607b str r3, [r7, #4] 8005678: 683a ldr r2, [r7, #0] 800567a: 687b ldr r3, [r7, #4] 800567c: f7fa fe48 bl 8000310 <__aeabi_uldivmod> 8005680: 0003 movs r3, r0 8005682: 000c movs r4, r1 8005684: 637b str r3, [r7, #52] ; 0x34 8005686: e016 b.n 80056b6 } else { pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); 8005688: 6abb ldr r3, [r7, #40] ; 0x28 800568a: 0018 movs r0, r3 800568c: 2300 movs r3, #0 800568e: 0019 movs r1, r3 8005690: 4a16 ldr r2, [pc, #88] ; (80056ec ) 8005692: 2300 movs r3, #0 8005694: f7fa fe5c bl 8000350 <__aeabi_lmul> 8005698: 0003 movs r3, r0 800569a: 000c movs r4, r1 800569c: 0018 movs r0, r3 800569e: 0021 movs r1, r4 80056a0: 6a7b ldr r3, [r7, #36] ; 0x24 80056a2: 001d movs r5, r3 80056a4: 2300 movs r3, #0 80056a6: 001e movs r6, r3 80056a8: 002a movs r2, r5 80056aa: 0033 movs r3, r6 80056ac: f7fa fe30 bl 8000310 <__aeabi_uldivmod> 80056b0: 0003 movs r3, r0 80056b2: 000c movs r4, r1 80056b4: 637b str r3, [r7, #52] ; 0x34 } } sysclockfreq = pllvco; 80056b6: 6b7b ldr r3, [r7, #52] ; 0x34 80056b8: 633b str r3, [r7, #48] ; 0x30 break; 80056ba: e00d b.n 80056d8 } case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ default: /* MSI used as system clock */ { msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; 80056bc: 4b09 ldr r3, [pc, #36] ; (80056e4 ) 80056be: 685b ldr r3, [r3, #4] 80056c0: 0b5b lsrs r3, r3, #13 80056c2: 2207 movs r2, #7 80056c4: 4013 ands r3, r2 80056c6: 623b str r3, [r7, #32] sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); 80056c8: 6a3b ldr r3, [r7, #32] 80056ca: 3301 adds r3, #1 80056cc: 2280 movs r2, #128 ; 0x80 80056ce: 0212 lsls r2, r2, #8 80056d0: 409a lsls r2, r3 80056d2: 0013 movs r3, r2 80056d4: 633b str r3, [r7, #48] ; 0x30 break; 80056d6: 46c0 nop ; (mov r8, r8) } } return sysclockfreq; 80056d8: 6b3b ldr r3, [r7, #48] ; 0x30 } 80056da: 0018 movs r0, r3 80056dc: 46bd mov sp, r7 80056de: b00f add sp, #60 ; 0x3c 80056e0: bdf0 pop {r4, r5, r6, r7, pc} 80056e2: 46c0 nop ; (mov r8, r8) 80056e4: 40021000 .word 0x40021000 80056e8: 003d0900 .word 0x003d0900 80056ec: 00f42400 .word 0x00f42400 80056f0: 007a1200 .word 0x007a1200 80056f4: 080071e8 .word 0x080071e8 080056f8 : * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency * and updated within this function * @retval HCLK frequency */ uint32_t HAL_RCC_GetHCLKFreq(void) { 80056f8: b580 push {r7, lr} 80056fa: af00 add r7, sp, #0 return SystemCoreClock; 80056fc: 4b02 ldr r3, [pc, #8] ; (8005708 ) 80056fe: 681b ldr r3, [r3, #0] } 8005700: 0018 movs r0, r3 8005702: 46bd mov sp, r7 8005704: bd80 pop {r7, pc} 8005706: 46c0 nop ; (mov r8, r8) 8005708: 20000000 .word 0x20000000 0800570c : * @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) { 800570c: b580 push {r7, lr} 800570e: 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]); 8005710: f7ff fff2 bl 80056f8 8005714: 0001 movs r1, r0 8005716: 4b06 ldr r3, [pc, #24] ; (8005730 ) 8005718: 68db ldr r3, [r3, #12] 800571a: 0a1b lsrs r3, r3, #8 800571c: 2207 movs r2, #7 800571e: 4013 ands r3, r2 8005720: 4a04 ldr r2, [pc, #16] ; (8005734 ) 8005722: 5cd3 ldrb r3, [r2, r3] 8005724: 40d9 lsrs r1, r3 8005726: 000b movs r3, r1 } 8005728: 0018 movs r0, r3 800572a: 46bd mov sp, r7 800572c: bd80 pop {r7, pc} 800572e: 46c0 nop ; (mov r8, r8) 8005730: 40021000 .word 0x40021000 8005734: 080071e0 .word 0x080071e0 08005738 : * @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) { 8005738: b580 push {r7, lr} 800573a: 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]); 800573c: f7ff ffdc bl 80056f8 8005740: 0001 movs r1, r0 8005742: 4b06 ldr r3, [pc, #24] ; (800575c ) 8005744: 68db ldr r3, [r3, #12] 8005746: 0adb lsrs r3, r3, #11 8005748: 2207 movs r2, #7 800574a: 4013 ands r3, r2 800574c: 4a04 ldr r2, [pc, #16] ; (8005760 ) 800574e: 5cd3 ldrb r3, [r2, r3] 8005750: 40d9 lsrs r1, r3 8005752: 000b movs r3, r1 } 8005754: 0018 movs r0, r3 8005756: 46bd mov sp, r7 8005758: bd80 pop {r7, pc} 800575a: 46c0 nop ; (mov r8, r8) 800575c: 40021000 .word 0x40021000 8005760: 080071e0 .word 0x080071e0 08005764 : * @retval HAL status * @note If HAL_ERROR returned, first switch-OFF HSE clock oscillator with @ref HAL_RCC_OscConfig() * to possibly update HSE divider. */ HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) { 8005764: b580 push {r7, lr} 8005766: b086 sub sp, #24 8005768: af00 add r7, sp, #0 800576a: 6078 str r0, [r7, #4] uint32_t tickstart; uint32_t temp_reg; FlagStatus pwrclkchanged = RESET; 800576c: 2317 movs r3, #23 800576e: 18fb adds r3, r7, r3 8005770: 2200 movs r2, #0 8005772: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); /*------------------------------- RTC/LCD Configuration ------------------------*/ if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) 8005774: 687b ldr r3, [r7, #4] 8005776: 681b ldr r3, [r3, #0] 8005778: 2220 movs r2, #32 800577a: 4013 ands r3, r2 800577c: d100 bne.n 8005780 800577e: e0c2 b.n 8005906 #endif /* LCD */ /* As soon as function is called to change RTC clock source, activation of the power domain is done. */ /* Requires to enable write access to Backup Domain of necessary */ if(__HAL_RCC_PWR_IS_CLK_DISABLED()) 8005780: 4b96 ldr r3, [pc, #600] ; (80059dc ) 8005782: 6b9a ldr r2, [r3, #56] ; 0x38 8005784: 2380 movs r3, #128 ; 0x80 8005786: 055b lsls r3, r3, #21 8005788: 4013 ands r3, r2 800578a: d10a bne.n 80057a2 { __HAL_RCC_PWR_CLK_ENABLE(); 800578c: 4b93 ldr r3, [pc, #588] ; (80059dc ) 800578e: 4a93 ldr r2, [pc, #588] ; (80059dc ) 8005790: 6b92 ldr r2, [r2, #56] ; 0x38 8005792: 2180 movs r1, #128 ; 0x80 8005794: 0549 lsls r1, r1, #21 8005796: 430a orrs r2, r1 8005798: 639a str r2, [r3, #56] ; 0x38 pwrclkchanged = SET; 800579a: 2317 movs r3, #23 800579c: 18fb adds r3, r7, r3 800579e: 2201 movs r2, #1 80057a0: 701a strb r2, [r3, #0] } if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) 80057a2: 4b8f ldr r3, [pc, #572] ; (80059e0 ) 80057a4: 681a ldr r2, [r3, #0] 80057a6: 2380 movs r3, #128 ; 0x80 80057a8: 005b lsls r3, r3, #1 80057aa: 4013 ands r3, r2 80057ac: d11a bne.n 80057e4 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR, PWR_CR_DBP); 80057ae: 4b8c ldr r3, [pc, #560] ; (80059e0 ) 80057b0: 4a8b ldr r2, [pc, #556] ; (80059e0 ) 80057b2: 6812 ldr r2, [r2, #0] 80057b4: 2180 movs r1, #128 ; 0x80 80057b6: 0049 lsls r1, r1, #1 80057b8: 430a orrs r2, r1 80057ba: 601a str r2, [r3, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); 80057bc: f7fe fbb6 bl 8003f2c 80057c0: 0003 movs r3, r0 80057c2: 613b str r3, [r7, #16] while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) 80057c4: e008 b.n 80057d8 { if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) 80057c6: f7fe fbb1 bl 8003f2c 80057ca: 0002 movs r2, r0 80057cc: 693b ldr r3, [r7, #16] 80057ce: 1ad3 subs r3, r2, r3 80057d0: 2b64 cmp r3, #100 ; 0x64 80057d2: d901 bls.n 80057d8 { return HAL_TIMEOUT; 80057d4: 2303 movs r3, #3 80057d6: e0fc b.n 80059d2 while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) 80057d8: 4b81 ldr r3, [pc, #516] ; (80059e0 ) 80057da: 681a ldr r2, [r3, #0] 80057dc: 2380 movs r3, #128 ; 0x80 80057de: 005b lsls r3, r3, #1 80057e0: 4013 ands r3, r2 80057e2: d0f0 beq.n 80057c6 } } } /* Check if user wants to change HSE RTC prescaler whereas HSE is enabled */ temp_reg = (RCC->CR & RCC_CR_RTCPRE); 80057e4: 4b7d ldr r3, [pc, #500] ; (80059dc ) 80057e6: 681a ldr r2, [r3, #0] 80057e8: 23c0 movs r3, #192 ; 0xc0 80057ea: 039b lsls r3, r3, #14 80057ec: 4013 ands r3, r2 80057ee: 60fb str r3, [r7, #12] if ((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CR_RTCPRE)) 80057f0: 687b ldr r3, [r7, #4] 80057f2: 685a ldr r2, [r3, #4] 80057f4: 23c0 movs r3, #192 ; 0xc0 80057f6: 039b lsls r3, r3, #14 80057f8: 401a ands r2, r3 80057fa: 68fb ldr r3, [r7, #12] 80057fc: 429a cmp r2, r3 80057fe: d013 beq.n 8005828 #if defined (LCD) || (temp_reg != (PeriphClkInit->LCDClockSelection & RCC_CR_RTCPRE)) #endif /* LCD */ ) { /* Check HSE State */ if ((PeriphClkInit->RTCClockSelection & RCC_CSR_RTCSEL) == RCC_CSR_RTCSEL_HSE) 8005800: 687b ldr r3, [r7, #4] 8005802: 685a ldr r2, [r3, #4] 8005804: 23c0 movs r3, #192 ; 0xc0 8005806: 029b lsls r3, r3, #10 8005808: 401a ands r2, r3 800580a: 23c0 movs r3, #192 ; 0xc0 800580c: 029b lsls r3, r3, #10 800580e: 429a cmp r2, r3 8005810: d10a bne.n 8005828 { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) 8005812: 4b72 ldr r3, [pc, #456] ; (80059dc ) 8005814: 681a ldr r2, [r3, #0] 8005816: 2380 movs r3, #128 ; 0x80 8005818: 029b lsls r3, r3, #10 800581a: 401a ands r2, r3 800581c: 2380 movs r3, #128 ; 0x80 800581e: 029b lsls r3, r3, #10 8005820: 429a cmp r2, r3 8005822: d101 bne.n 8005828 { /* To update HSE divider, first switch-OFF HSE clock oscillator*/ return HAL_ERROR; 8005824: 2301 movs r3, #1 8005826: e0d4 b.n 80059d2 } } } /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ temp_reg = (RCC->CSR & RCC_CSR_RTCSEL); 8005828: 4b6c ldr r3, [pc, #432] ; (80059dc ) 800582a: 6d1a ldr r2, [r3, #80] ; 0x50 800582c: 23c0 movs r3, #192 ; 0xc0 800582e: 029b lsls r3, r3, #10 8005830: 4013 ands r3, r2 8005832: 60fb str r3, [r7, #12] if((temp_reg != 0x00000000U) && (((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CSR_RTCSEL)) \ 8005834: 68fb ldr r3, [r7, #12] 8005836: 2b00 cmp r3, #0 8005838: d03b beq.n 80058b2 800583a: 687b ldr r3, [r7, #4] 800583c: 685a ldr r2, [r3, #4] 800583e: 23c0 movs r3, #192 ; 0xc0 8005840: 029b lsls r3, r3, #10 8005842: 401a ands r2, r3 8005844: 68fb ldr r3, [r7, #12] 8005846: 429a cmp r2, r3 8005848: d033 beq.n 80058b2 && (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) 800584a: 687b ldr r3, [r7, #4] 800584c: 681b ldr r3, [r3, #0] 800584e: 2220 movs r2, #32 8005850: 4013 ands r3, r2 8005852: d02e beq.n 80058b2 && (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LCD) == RCC_PERIPHCLK_LCD)) #endif /* LCD */ )) { /* Store the content of CSR register before the reset of Backup Domain */ temp_reg = (RCC->CSR & ~(RCC_CSR_RTCSEL)); 8005854: 4b61 ldr r3, [pc, #388] ; (80059dc ) 8005856: 6d1b ldr r3, [r3, #80] ; 0x50 8005858: 4a62 ldr r2, [pc, #392] ; (80059e4 ) 800585a: 4013 ands r3, r2 800585c: 60fb str r3, [r7, #12] /* RTC Clock selection can be changed only if the Backup Domain is reset */ __HAL_RCC_BACKUPRESET_FORCE(); 800585e: 4b5f ldr r3, [pc, #380] ; (80059dc ) 8005860: 4a5e ldr r2, [pc, #376] ; (80059dc ) 8005862: 6d12 ldr r2, [r2, #80] ; 0x50 8005864: 2180 movs r1, #128 ; 0x80 8005866: 0309 lsls r1, r1, #12 8005868: 430a orrs r2, r1 800586a: 651a str r2, [r3, #80] ; 0x50 __HAL_RCC_BACKUPRESET_RELEASE(); 800586c: 4b5b ldr r3, [pc, #364] ; (80059dc ) 800586e: 4a5b ldr r2, [pc, #364] ; (80059dc ) 8005870: 6d12 ldr r2, [r2, #80] ; 0x50 8005872: 495d ldr r1, [pc, #372] ; (80059e8 ) 8005874: 400a ands r2, r1 8005876: 651a str r2, [r3, #80] ; 0x50 /* Restore the Content of CSR register */ RCC->CSR = temp_reg; 8005878: 4b58 ldr r3, [pc, #352] ; (80059dc ) 800587a: 68fa ldr r2, [r7, #12] 800587c: 651a str r2, [r3, #80] ; 0x50 /* Wait for LSERDY if LSE was enabled */ if (HAL_IS_BIT_SET(temp_reg, RCC_CSR_LSEON)) 800587e: 68fa ldr r2, [r7, #12] 8005880: 2380 movs r3, #128 ; 0x80 8005882: 005b lsls r3, r3, #1 8005884: 4013 ands r3, r2 8005886: d014 beq.n 80058b2 { /* Get Start Tick */ tickstart = HAL_GetTick(); 8005888: f7fe fb50 bl 8003f2c 800588c: 0003 movs r3, r0 800588e: 613b str r3, [r7, #16] /* Wait till LSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) 8005890: e009 b.n 80058a6 { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) 8005892: f7fe fb4b bl 8003f2c 8005896: 0002 movs r2, r0 8005898: 693b ldr r3, [r7, #16] 800589a: 1ad3 subs r3, r2, r3 800589c: 4a53 ldr r2, [pc, #332] ; (80059ec ) 800589e: 4293 cmp r3, r2 80058a0: d901 bls.n 80058a6 { return HAL_TIMEOUT; 80058a2: 2303 movs r3, #3 80058a4: e095 b.n 80059d2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) 80058a6: 4b4d ldr r3, [pc, #308] ; (80059dc ) 80058a8: 6d1a ldr r2, [r3, #80] ; 0x50 80058aa: 2380 movs r3, #128 ; 0x80 80058ac: 009b lsls r3, r3, #2 80058ae: 4013 ands r3, r2 80058b0: d0ef beq.n 8005892 } } } } __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); 80058b2: 687b ldr r3, [r7, #4] 80058b4: 685a ldr r2, [r3, #4] 80058b6: 23c0 movs r3, #192 ; 0xc0 80058b8: 029b lsls r3, r3, #10 80058ba: 401a ands r2, r3 80058bc: 23c0 movs r3, #192 ; 0xc0 80058be: 029b lsls r3, r3, #10 80058c0: 429a cmp r2, r3 80058c2: d10b bne.n 80058dc 80058c4: 4a45 ldr r2, [pc, #276] ; (80059dc ) 80058c6: 4b45 ldr r3, [pc, #276] ; (80059dc ) 80058c8: 681b ldr r3, [r3, #0] 80058ca: 4949 ldr r1, [pc, #292] ; (80059f0 ) 80058cc: 4019 ands r1, r3 80058ce: 687b ldr r3, [r7, #4] 80058d0: 6858 ldr r0, [r3, #4] 80058d2: 23c0 movs r3, #192 ; 0xc0 80058d4: 039b lsls r3, r3, #14 80058d6: 4003 ands r3, r0 80058d8: 430b orrs r3, r1 80058da: 6013 str r3, [r2, #0] 80058dc: 4a3f ldr r2, [pc, #252] ; (80059dc ) 80058de: 4b3f ldr r3, [pc, #252] ; (80059dc ) 80058e0: 6d19 ldr r1, [r3, #80] ; 0x50 80058e2: 687b ldr r3, [r7, #4] 80058e4: 6858 ldr r0, [r3, #4] 80058e6: 23c0 movs r3, #192 ; 0xc0 80058e8: 029b lsls r3, r3, #10 80058ea: 4003 ands r3, r0 80058ec: 430b orrs r3, r1 80058ee: 6513 str r3, [r2, #80] ; 0x50 /* Require to disable power clock if necessary */ if(pwrclkchanged == SET) 80058f0: 2317 movs r3, #23 80058f2: 18fb adds r3, r7, r3 80058f4: 781b ldrb r3, [r3, #0] 80058f6: 2b01 cmp r3, #1 80058f8: d105 bne.n 8005906 { __HAL_RCC_PWR_CLK_DISABLE(); 80058fa: 4b38 ldr r3, [pc, #224] ; (80059dc ) 80058fc: 4a37 ldr r2, [pc, #220] ; (80059dc ) 80058fe: 6b92 ldr r2, [r2, #56] ; 0x38 8005900: 493c ldr r1, [pc, #240] ; (80059f4 ) 8005902: 400a ands r2, r1 8005904: 639a str r2, [r3, #56] ; 0x38 } } #if defined (RCC_CCIPR_USART1SEL) /*------------------------------- USART1 Configuration ------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) 8005906: 687b ldr r3, [r7, #4] 8005908: 681b ldr r3, [r3, #0] 800590a: 2201 movs r2, #1 800590c: 4013 ands r3, r2 800590e: d009 beq.n 8005924 { /* Check the parameters */ assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); /* Configure the USART1 clock source */ __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); 8005910: 4a32 ldr r2, [pc, #200] ; (80059dc ) 8005912: 4b32 ldr r3, [pc, #200] ; (80059dc ) 8005914: 6cdb ldr r3, [r3, #76] ; 0x4c 8005916: 2103 movs r1, #3 8005918: 438b bics r3, r1 800591a: 0019 movs r1, r3 800591c: 687b ldr r3, [r7, #4] 800591e: 689b ldr r3, [r3, #8] 8005920: 430b orrs r3, r1 8005922: 64d3 str r3, [r2, #76] ; 0x4c } #endif /* RCC_CCIPR_USART1SEL */ /*----------------------------- USART2 Configuration --------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) 8005924: 687b ldr r3, [r7, #4] 8005926: 681b ldr r3, [r3, #0] 8005928: 2202 movs r2, #2 800592a: 4013 ands r3, r2 800592c: d009 beq.n 8005942 { /* Check the parameters */ assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); /* Configure the USART2 clock source */ __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); 800592e: 4a2b ldr r2, [pc, #172] ; (80059dc ) 8005930: 4b2a ldr r3, [pc, #168] ; (80059dc ) 8005932: 6cdb ldr r3, [r3, #76] ; 0x4c 8005934: 210c movs r1, #12 8005936: 438b bics r3, r1 8005938: 0019 movs r1, r3 800593a: 687b ldr r3, [r7, #4] 800593c: 68db ldr r3, [r3, #12] 800593e: 430b orrs r3, r1 8005940: 64d3 str r3, [r2, #76] ; 0x4c } /*------------------------------ LPUART1 Configuration ------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) 8005942: 687b ldr r3, [r7, #4] 8005944: 681b ldr r3, [r3, #0] 8005946: 2204 movs r2, #4 8005948: 4013 ands r3, r2 800594a: d008 beq.n 800595e { /* Check the parameters */ assert_param(IS_RCC_LPUART1CLKSOURCE(PeriphClkInit->Lpuart1ClockSelection)); /* Configure the LPUAR1 clock source */ __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection); 800594c: 4a23 ldr r2, [pc, #140] ; (80059dc ) 800594e: 4b23 ldr r3, [pc, #140] ; (80059dc ) 8005950: 6cdb ldr r3, [r3, #76] ; 0x4c 8005952: 4929 ldr r1, [pc, #164] ; (80059f8 ) 8005954: 4019 ands r1, r3 8005956: 687b ldr r3, [r7, #4] 8005958: 691b ldr r3, [r3, #16] 800595a: 430b orrs r3, r1 800595c: 64d3 str r3, [r2, #76] ; 0x4c } /*------------------------------ I2C1 Configuration ------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) 800595e: 687b ldr r3, [r7, #4] 8005960: 681b ldr r3, [r3, #0] 8005962: 2208 movs r2, #8 8005964: 4013 ands r3, r2 8005966: d008 beq.n 800597a { /* Check the parameters */ assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); /* Configure the I2C1 clock source */ __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); 8005968: 4a1c ldr r2, [pc, #112] ; (80059dc ) 800596a: 4b1c ldr r3, [pc, #112] ; (80059dc ) 800596c: 6cdb ldr r3, [r3, #76] ; 0x4c 800596e: 4923 ldr r1, [pc, #140] ; (80059fc ) 8005970: 4019 ands r1, r3 8005972: 687b ldr r3, [r7, #4] 8005974: 695b ldr r3, [r3, #20] 8005976: 430b orrs r3, r1 8005978: 64d3 str r3, [r2, #76] ; 0x4c } #if defined (RCC_CCIPR_I2C3SEL) /*------------------------------ I2C3 Configuration ------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) 800597a: 687b ldr r3, [r7, #4] 800597c: 681a ldr r2, [r3, #0] 800597e: 2380 movs r3, #128 ; 0x80 8005980: 005b lsls r3, r3, #1 8005982: 4013 ands r3, r2 8005984: d008 beq.n 8005998 { /* Check the parameters */ assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection)); /* Configure the I2C3 clock source */ __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection); 8005986: 4a15 ldr r2, [pc, #84] ; (80059dc ) 8005988: 4b14 ldr r3, [pc, #80] ; (80059dc ) 800598a: 6cdb ldr r3, [r3, #76] ; 0x4c 800598c: 4915 ldr r1, [pc, #84] ; (80059e4 ) 800598e: 4019 ands r1, r3 8005990: 687b ldr r3, [r7, #4] 8005992: 699b ldr r3, [r3, #24] 8005994: 430b orrs r3, r1 8005996: 64d3 str r3, [r2, #76] ; 0x4c } #endif /* RCC_CCIPR_I2C3SEL */ #if defined(USB) /*---------------------------- USB and RNG configuration --------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == (RCC_PERIPHCLK_USB)) 8005998: 687b ldr r3, [r7, #4] 800599a: 681b ldr r3, [r3, #0] 800599c: 2240 movs r2, #64 ; 0x40 800599e: 4013 ands r3, r2 80059a0: d008 beq.n 80059b4 { assert_param(IS_RCC_USBCLKSOURCE(PeriphClkInit->UsbClockSelection)); __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); 80059a2: 4a0e ldr r2, [pc, #56] ; (80059dc ) 80059a4: 4b0d ldr r3, [pc, #52] ; (80059dc ) 80059a6: 6cdb ldr r3, [r3, #76] ; 0x4c 80059a8: 4915 ldr r1, [pc, #84] ; (8005a00 ) 80059aa: 4019 ands r1, r3 80059ac: 687b ldr r3, [r7, #4] 80059ae: 6a1b ldr r3, [r3, #32] 80059b0: 430b orrs r3, r1 80059b2: 64d3 str r3, [r2, #76] ; 0x4c } #endif /* USB */ /*---------------------------- LPTIM1 configuration ------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == (RCC_PERIPHCLK_LPTIM1)) 80059b4: 687b ldr r3, [r7, #4] 80059b6: 681b ldr r3, [r3, #0] 80059b8: 2280 movs r2, #128 ; 0x80 80059ba: 4013 ands r3, r2 80059bc: d008 beq.n 80059d0 { assert_param(IS_RCC_LPTIMCLK(PeriphClkInit->LptimClockSelection)); __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->LptimClockSelection); 80059be: 4a07 ldr r2, [pc, #28] ; (80059dc ) 80059c0: 4b06 ldr r3, [pc, #24] ; (80059dc ) 80059c2: 6cdb ldr r3, [r3, #76] ; 0x4c 80059c4: 490f ldr r1, [pc, #60] ; (8005a04 ) 80059c6: 4019 ands r1, r3 80059c8: 687b ldr r3, [r7, #4] 80059ca: 69db ldr r3, [r3, #28] 80059cc: 430b orrs r3, r1 80059ce: 64d3 str r3, [r2, #76] ; 0x4c } return HAL_OK; 80059d0: 2300 movs r3, #0 } 80059d2: 0018 movs r0, r3 80059d4: 46bd mov sp, r7 80059d6: b006 add sp, #24 80059d8: bd80 pop {r7, pc} 80059da: 46c0 nop ; (mov r8, r8) 80059dc: 40021000 .word 0x40021000 80059e0: 40007000 .word 0x40007000 80059e4: fffcffff .word 0xfffcffff 80059e8: fff7ffff .word 0xfff7ffff 80059ec: 00001388 .word 0x00001388 80059f0: ffcfffff .word 0xffcfffff 80059f4: efffffff .word 0xefffffff 80059f8: fffff3ff .word 0xfffff3ff 80059fc: ffffcfff .word 0xffffcfff 8005a00: fbffffff .word 0xfbffffff 8005a04: fff3ffff .word 0xfff3ffff 08005a08 : * 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) { 8005a08: b580 push {r7, lr} 8005a0a: b082 sub sp, #8 8005a0c: af00 add r7, sp, #0 8005a0e: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) 8005a10: 687b ldr r3, [r7, #4] 8005a12: 2b00 cmp r3, #0 8005a14: d101 bne.n 8005a1a { return HAL_ERROR; 8005a16: 2301 movs r3, #1 8005a18: e032 b.n 8005a80 assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_PERIOD(htim->Init.Period)); assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) 8005a1a: 687b ldr r3, [r7, #4] 8005a1c: 2239 movs r2, #57 ; 0x39 8005a1e: 5c9b ldrb r3, [r3, r2] 8005a20: b2db uxtb r3, r3 8005a22: 2b00 cmp r3, #0 8005a24: d107 bne.n 8005a36 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; 8005a26: 687b ldr r3, [r7, #4] 8005a28: 2238 movs r2, #56 ; 0x38 8005a2a: 2100 movs r1, #0 8005a2c: 5499 strb r1, [r3, r2] } /* 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); 8005a2e: 687b ldr r3, [r7, #4] 8005a30: 0018 movs r0, r3 8005a32: f7fc fca9 bl 8002388 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; 8005a36: 687b ldr r3, [r7, #4] 8005a38: 2239 movs r2, #57 ; 0x39 8005a3a: 2102 movs r1, #2 8005a3c: 5499 strb r1, [r3, r2] /* Set the Time Base configuration */ TIM_Base_SetConfig(htim->Instance, &htim->Init); 8005a3e: 687b ldr r3, [r7, #4] 8005a40: 681a ldr r2, [r3, #0] 8005a42: 687b ldr r3, [r7, #4] 8005a44: 3304 adds r3, #4 8005a46: 0019 movs r1, r3 8005a48: 0010 movs r0, r2 8005a4a: f000 f977 bl 8005d3c /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; 8005a4e: 687b ldr r3, [r7, #4] 8005a50: 223e movs r2, #62 ; 0x3e 8005a52: 2101 movs r1, #1 8005a54: 5499 strb r1, [r3, r2] /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); 8005a56: 687b ldr r3, [r7, #4] 8005a58: 223a movs r2, #58 ; 0x3a 8005a5a: 2101 movs r1, #1 8005a5c: 5499 strb r1, [r3, r2] 8005a5e: 687b ldr r3, [r7, #4] 8005a60: 223b movs r2, #59 ; 0x3b 8005a62: 2101 movs r1, #1 8005a64: 5499 strb r1, [r3, r2] 8005a66: 687b ldr r3, [r7, #4] 8005a68: 223c movs r2, #60 ; 0x3c 8005a6a: 2101 movs r1, #1 8005a6c: 5499 strb r1, [r3, r2] 8005a6e: 687b ldr r3, [r7, #4] 8005a70: 223d movs r2, #61 ; 0x3d 8005a72: 2101 movs r1, #1 8005a74: 5499 strb r1, [r3, r2] /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; 8005a76: 687b ldr r3, [r7, #4] 8005a78: 2239 movs r2, #57 ; 0x39 8005a7a: 2101 movs r1, #1 8005a7c: 5499 strb r1, [r3, r2] return HAL_OK; 8005a7e: 2300 movs r3, #0 } 8005a80: 0018 movs r0, r3 8005a82: 46bd mov sp, r7 8005a84: b002 add sp, #8 8005a86: bd80 pop {r7, pc} 08005a88 : * @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) { 8005a88: b580 push {r7, lr} 8005a8a: b084 sub sp, #16 8005a8c: af00 add r7, sp, #0 8005a8e: 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) 8005a90: 687b ldr r3, [r7, #4] 8005a92: 2239 movs r2, #57 ; 0x39 8005a94: 5c9b ldrb r3, [r3, r2] 8005a96: b2db uxtb r3, r3 8005a98: 2b01 cmp r3, #1 8005a9a: d001 beq.n 8005aa0 { return HAL_ERROR; 8005a9c: 2301 movs r3, #1 8005a9e: e03b b.n 8005b18 } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; 8005aa0: 687b ldr r3, [r7, #4] 8005aa2: 2239 movs r2, #57 ; 0x39 8005aa4: 2102 movs r1, #2 8005aa6: 5499 strb r1, [r3, r2] /* Enable the TIM Update interrupt */ __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); 8005aa8: 687b ldr r3, [r7, #4] 8005aaa: 681b ldr r3, [r3, #0] 8005aac: 687a ldr r2, [r7, #4] 8005aae: 6812 ldr r2, [r2, #0] 8005ab0: 68d2 ldr r2, [r2, #12] 8005ab2: 2101 movs r1, #1 8005ab4: 430a orrs r2, r1 8005ab6: 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)) 8005ab8: 687b ldr r3, [r7, #4] 8005aba: 681a ldr r2, [r3, #0] 8005abc: 2380 movs r3, #128 ; 0x80 8005abe: 05db lsls r3, r3, #23 8005ac0: 429a cmp r2, r3 8005ac2: d00e beq.n 8005ae2 8005ac4: 687b ldr r3, [r7, #4] 8005ac6: 681b ldr r3, [r3, #0] 8005ac8: 4a15 ldr r2, [pc, #84] ; (8005b20 ) 8005aca: 4293 cmp r3, r2 8005acc: d009 beq.n 8005ae2 8005ace: 687b ldr r3, [r7, #4] 8005ad0: 681b ldr r3, [r3, #0] 8005ad2: 4a14 ldr r2, [pc, #80] ; (8005b24 ) 8005ad4: 4293 cmp r3, r2 8005ad6: d004 beq.n 8005ae2 8005ad8: 687b ldr r3, [r7, #4] 8005ada: 681b ldr r3, [r3, #0] 8005adc: 4a12 ldr r2, [pc, #72] ; (8005b28 ) 8005ade: 4293 cmp r3, r2 8005ae0: d111 bne.n 8005b06 { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; 8005ae2: 687b ldr r3, [r7, #4] 8005ae4: 681b ldr r3, [r3, #0] 8005ae6: 689b ldr r3, [r3, #8] 8005ae8: 2207 movs r2, #7 8005aea: 4013 ands r3, r2 8005aec: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) 8005aee: 68fb ldr r3, [r7, #12] 8005af0: 2b06 cmp r3, #6 8005af2: d010 beq.n 8005b16 { __HAL_TIM_ENABLE(htim); 8005af4: 687b ldr r3, [r7, #4] 8005af6: 681b ldr r3, [r3, #0] 8005af8: 687a ldr r2, [r7, #4] 8005afa: 6812 ldr r2, [r2, #0] 8005afc: 6812 ldr r2, [r2, #0] 8005afe: 2101 movs r1, #1 8005b00: 430a orrs r2, r1 8005b02: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) 8005b04: e007 b.n 8005b16 } } else { __HAL_TIM_ENABLE(htim); 8005b06: 687b ldr r3, [r7, #4] 8005b08: 681b ldr r3, [r3, #0] 8005b0a: 687a ldr r2, [r7, #4] 8005b0c: 6812 ldr r2, [r2, #0] 8005b0e: 6812 ldr r2, [r2, #0] 8005b10: 2101 movs r1, #1 8005b12: 430a orrs r2, r1 8005b14: 601a str r2, [r3, #0] } /* Return function status */ return HAL_OK; 8005b16: 2300 movs r3, #0 } 8005b18: 0018 movs r0, r3 8005b1a: 46bd mov sp, r7 8005b1c: b004 add sp, #16 8005b1e: bd80 pop {r7, pc} 8005b20: 40000400 .word 0x40000400 8005b24: 40010800 .word 0x40010800 8005b28: 40011400 .word 0x40011400 08005b2c : * @brief This function handles TIM interrupts requests. * @param htim TIM handle * @retval None */ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) { 8005b2c: b580 push {r7, lr} 8005b2e: b082 sub sp, #8 8005b30: af00 add r7, sp, #0 8005b32: 6078 str r0, [r7, #4] /* Capture compare 1 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) 8005b34: 687b ldr r3, [r7, #4] 8005b36: 681b ldr r3, [r3, #0] 8005b38: 691b ldr r3, [r3, #16] 8005b3a: 2202 movs r2, #2 8005b3c: 4013 ands r3, r2 8005b3e: 2b02 cmp r3, #2 8005b40: d124 bne.n 8005b8c { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) 8005b42: 687b ldr r3, [r7, #4] 8005b44: 681b ldr r3, [r3, #0] 8005b46: 68db ldr r3, [r3, #12] 8005b48: 2202 movs r2, #2 8005b4a: 4013 ands r3, r2 8005b4c: 2b02 cmp r3, #2 8005b4e: d11d bne.n 8005b8c { { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); 8005b50: 687b ldr r3, [r7, #4] 8005b52: 681b ldr r3, [r3, #0] 8005b54: 2203 movs r2, #3 8005b56: 4252 negs r2, r2 8005b58: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; 8005b5a: 687b ldr r3, [r7, #4] 8005b5c: 2201 movs r2, #1 8005b5e: 761a strb r2, [r3, #24] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) 8005b60: 687b ldr r3, [r7, #4] 8005b62: 681b ldr r3, [r3, #0] 8005b64: 699b ldr r3, [r3, #24] 8005b66: 2203 movs r2, #3 8005b68: 4013 ands r3, r2 8005b6a: d004 beq.n 8005b76 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); 8005b6c: 687b ldr r3, [r7, #4] 8005b6e: 0018 movs r0, r3 8005b70: f000 f8cc bl 8005d0c 8005b74: e007 b.n 8005b86 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); 8005b76: 687b ldr r3, [r7, #4] 8005b78: 0018 movs r0, r3 8005b7a: f000 f8bf bl 8005cfc HAL_TIM_PWM_PulseFinishedCallback(htim); 8005b7e: 687b ldr r3, [r7, #4] 8005b80: 0018 movs r0, r3 8005b82: f000 f8cb bl 8005d1c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; 8005b86: 687b ldr r3, [r7, #4] 8005b88: 2200 movs r2, #0 8005b8a: 761a strb r2, [r3, #24] } } } /* Capture compare 2 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) 8005b8c: 687b ldr r3, [r7, #4] 8005b8e: 681b ldr r3, [r3, #0] 8005b90: 691b ldr r3, [r3, #16] 8005b92: 2204 movs r2, #4 8005b94: 4013 ands r3, r2 8005b96: 2b04 cmp r3, #4 8005b98: d125 bne.n 8005be6 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) 8005b9a: 687b ldr r3, [r7, #4] 8005b9c: 681b ldr r3, [r3, #0] 8005b9e: 68db ldr r3, [r3, #12] 8005ba0: 2204 movs r2, #4 8005ba2: 4013 ands r3, r2 8005ba4: 2b04 cmp r3, #4 8005ba6: d11e bne.n 8005be6 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); 8005ba8: 687b ldr r3, [r7, #4] 8005baa: 681b ldr r3, [r3, #0] 8005bac: 2205 movs r2, #5 8005bae: 4252 negs r2, r2 8005bb0: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; 8005bb2: 687b ldr r3, [r7, #4] 8005bb4: 2202 movs r2, #2 8005bb6: 761a strb r2, [r3, #24] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) 8005bb8: 687b ldr r3, [r7, #4] 8005bba: 681b ldr r3, [r3, #0] 8005bbc: 699a ldr r2, [r3, #24] 8005bbe: 23c0 movs r3, #192 ; 0xc0 8005bc0: 009b lsls r3, r3, #2 8005bc2: 4013 ands r3, r2 8005bc4: d004 beq.n 8005bd0 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); 8005bc6: 687b ldr r3, [r7, #4] 8005bc8: 0018 movs r0, r3 8005bca: f000 f89f bl 8005d0c 8005bce: e007 b.n 8005be0 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); 8005bd0: 687b ldr r3, [r7, #4] 8005bd2: 0018 movs r0, r3 8005bd4: f000 f892 bl 8005cfc HAL_TIM_PWM_PulseFinishedCallback(htim); 8005bd8: 687b ldr r3, [r7, #4] 8005bda: 0018 movs r0, r3 8005bdc: f000 f89e bl 8005d1c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; 8005be0: 687b ldr r3, [r7, #4] 8005be2: 2200 movs r2, #0 8005be4: 761a strb r2, [r3, #24] } } /* Capture compare 3 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) 8005be6: 687b ldr r3, [r7, #4] 8005be8: 681b ldr r3, [r3, #0] 8005bea: 691b ldr r3, [r3, #16] 8005bec: 2208 movs r2, #8 8005bee: 4013 ands r3, r2 8005bf0: 2b08 cmp r3, #8 8005bf2: d124 bne.n 8005c3e { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) 8005bf4: 687b ldr r3, [r7, #4] 8005bf6: 681b ldr r3, [r3, #0] 8005bf8: 68db ldr r3, [r3, #12] 8005bfa: 2208 movs r2, #8 8005bfc: 4013 ands r3, r2 8005bfe: 2b08 cmp r3, #8 8005c00: d11d bne.n 8005c3e { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); 8005c02: 687b ldr r3, [r7, #4] 8005c04: 681b ldr r3, [r3, #0] 8005c06: 2209 movs r2, #9 8005c08: 4252 negs r2, r2 8005c0a: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; 8005c0c: 687b ldr r3, [r7, #4] 8005c0e: 2204 movs r2, #4 8005c10: 761a strb r2, [r3, #24] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) 8005c12: 687b ldr r3, [r7, #4] 8005c14: 681b ldr r3, [r3, #0] 8005c16: 69db ldr r3, [r3, #28] 8005c18: 2203 movs r2, #3 8005c1a: 4013 ands r3, r2 8005c1c: d004 beq.n 8005c28 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); 8005c1e: 687b ldr r3, [r7, #4] 8005c20: 0018 movs r0, r3 8005c22: f000 f873 bl 8005d0c 8005c26: e007 b.n 8005c38 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); 8005c28: 687b ldr r3, [r7, #4] 8005c2a: 0018 movs r0, r3 8005c2c: f000 f866 bl 8005cfc HAL_TIM_PWM_PulseFinishedCallback(htim); 8005c30: 687b ldr r3, [r7, #4] 8005c32: 0018 movs r0, r3 8005c34: f000 f872 bl 8005d1c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; 8005c38: 687b ldr r3, [r7, #4] 8005c3a: 2200 movs r2, #0 8005c3c: 761a strb r2, [r3, #24] } } /* Capture compare 4 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) 8005c3e: 687b ldr r3, [r7, #4] 8005c40: 681b ldr r3, [r3, #0] 8005c42: 691b ldr r3, [r3, #16] 8005c44: 2210 movs r2, #16 8005c46: 4013 ands r3, r2 8005c48: 2b10 cmp r3, #16 8005c4a: d125 bne.n 8005c98 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) 8005c4c: 687b ldr r3, [r7, #4] 8005c4e: 681b ldr r3, [r3, #0] 8005c50: 68db ldr r3, [r3, #12] 8005c52: 2210 movs r2, #16 8005c54: 4013 ands r3, r2 8005c56: 2b10 cmp r3, #16 8005c58: d11e bne.n 8005c98 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4); 8005c5a: 687b ldr r3, [r7, #4] 8005c5c: 681b ldr r3, [r3, #0] 8005c5e: 2211 movs r2, #17 8005c60: 4252 negs r2, r2 8005c62: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; 8005c64: 687b ldr r3, [r7, #4] 8005c66: 2208 movs r2, #8 8005c68: 761a strb r2, [r3, #24] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) 8005c6a: 687b ldr r3, [r7, #4] 8005c6c: 681b ldr r3, [r3, #0] 8005c6e: 69da ldr r2, [r3, #28] 8005c70: 23c0 movs r3, #192 ; 0xc0 8005c72: 009b lsls r3, r3, #2 8005c74: 4013 ands r3, r2 8005c76: d004 beq.n 8005c82 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); 8005c78: 687b ldr r3, [r7, #4] 8005c7a: 0018 movs r0, r3 8005c7c: f000 f846 bl 8005d0c 8005c80: e007 b.n 8005c92 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); 8005c82: 687b ldr r3, [r7, #4] 8005c84: 0018 movs r0, r3 8005c86: f000 f839 bl 8005cfc HAL_TIM_PWM_PulseFinishedCallback(htim); 8005c8a: 687b ldr r3, [r7, #4] 8005c8c: 0018 movs r0, r3 8005c8e: f000 f845 bl 8005d1c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; 8005c92: 687b ldr r3, [r7, #4] 8005c94: 2200 movs r2, #0 8005c96: 761a strb r2, [r3, #24] } } /* TIM Update event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) 8005c98: 687b ldr r3, [r7, #4] 8005c9a: 681b ldr r3, [r3, #0] 8005c9c: 691b ldr r3, [r3, #16] 8005c9e: 2201 movs r2, #1 8005ca0: 4013 ands r3, r2 8005ca2: 2b01 cmp r3, #1 8005ca4: d10f bne.n 8005cc6 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) 8005ca6: 687b ldr r3, [r7, #4] 8005ca8: 681b ldr r3, [r3, #0] 8005caa: 68db ldr r3, [r3, #12] 8005cac: 2201 movs r2, #1 8005cae: 4013 ands r3, r2 8005cb0: 2b01 cmp r3, #1 8005cb2: d108 bne.n 8005cc6 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); 8005cb4: 687b ldr r3, [r7, #4] 8005cb6: 681b ldr r3, [r3, #0] 8005cb8: 2202 movs r2, #2 8005cba: 4252 negs r2, r2 8005cbc: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->PeriodElapsedCallback(htim); #else HAL_TIM_PeriodElapsedCallback(htim); 8005cbe: 687b ldr r3, [r7, #4] 8005cc0: 0018 movs r0, r3 8005cc2: f7fc fb81 bl 80023c8 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Trigger detection event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET) 8005cc6: 687b ldr r3, [r7, #4] 8005cc8: 681b ldr r3, [r3, #0] 8005cca: 691b ldr r3, [r3, #16] 8005ccc: 2240 movs r2, #64 ; 0x40 8005cce: 4013 ands r3, r2 8005cd0: 2b40 cmp r3, #64 ; 0x40 8005cd2: d10f bne.n 8005cf4 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET) 8005cd4: 687b ldr r3, [r7, #4] 8005cd6: 681b ldr r3, [r3, #0] 8005cd8: 68db ldr r3, [r3, #12] 8005cda: 2240 movs r2, #64 ; 0x40 8005cdc: 4013 ands r3, r2 8005cde: 2b40 cmp r3, #64 ; 0x40 8005ce0: d108 bne.n 8005cf4 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER); 8005ce2: 687b ldr r3, [r7, #4] 8005ce4: 681b ldr r3, [r3, #0] 8005ce6: 2241 movs r2, #65 ; 0x41 8005ce8: 4252 negs r2, r2 8005cea: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->TriggerCallback(htim); #else HAL_TIM_TriggerCallback(htim); 8005cec: 687b ldr r3, [r7, #4] 8005cee: 0018 movs r0, r3 8005cf0: f000 f81c bl 8005d2c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } } 8005cf4: 46c0 nop ; (mov r8, r8) 8005cf6: 46bd mov sp, r7 8005cf8: b002 add sp, #8 8005cfa: bd80 pop {r7, pc} 08005cfc : * @brief Output Compare callback in non-blocking mode * @param htim TIM OC handle * @retval None */ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) { 8005cfc: b580 push {r7, lr} 8005cfe: b082 sub sp, #8 8005d00: af00 add r7, sp, #0 8005d02: 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 */ } 8005d04: 46c0 nop ; (mov r8, r8) 8005d06: 46bd mov sp, r7 8005d08: b002 add sp, #8 8005d0a: bd80 pop {r7, pc} 08005d0c : * @brief Input Capture callback in non-blocking mode * @param htim TIM IC handle * @retval None */ __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { 8005d0c: b580 push {r7, lr} 8005d0e: b082 sub sp, #8 8005d10: af00 add r7, sp, #0 8005d12: 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 */ } 8005d14: 46c0 nop ; (mov r8, r8) 8005d16: 46bd mov sp, r7 8005d18: b002 add sp, #8 8005d1a: bd80 pop {r7, pc} 08005d1c : * @brief PWM Pulse finished callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { 8005d1c: b580 push {r7, lr} 8005d1e: b082 sub sp, #8 8005d20: af00 add r7, sp, #0 8005d22: 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 */ } 8005d24: 46c0 nop ; (mov r8, r8) 8005d26: 46bd mov sp, r7 8005d28: b002 add sp, #8 8005d2a: bd80 pop {r7, pc} 08005d2c : * @brief Hall Trigger detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) { 8005d2c: b580 push {r7, lr} 8005d2e: b082 sub sp, #8 8005d30: af00 add r7, sp, #0 8005d32: 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 */ } 8005d34: 46c0 nop ; (mov r8, r8) 8005d36: 46bd mov sp, r7 8005d38: b002 add sp, #8 8005d3a: bd80 pop {r7, pc} 08005d3c : * @param TIMx TIM peripheral * @param Structure TIM Base configuration structure * @retval None */ static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure) { 8005d3c: b580 push {r7, lr} 8005d3e: b084 sub sp, #16 8005d40: af00 add r7, sp, #0 8005d42: 6078 str r0, [r7, #4] 8005d44: 6039 str r1, [r7, #0] uint32_t tmpcr1; tmpcr1 = TIMx->CR1; 8005d46: 687b ldr r3, [r7, #4] 8005d48: 681b ldr r3, [r3, #0] 8005d4a: 60fb str r3, [r7, #12] /* Set TIM Time Base Unit parameters ---------------------------------------*/ if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) 8005d4c: 687a ldr r2, [r7, #4] 8005d4e: 2380 movs r3, #128 ; 0x80 8005d50: 05db lsls r3, r3, #23 8005d52: 429a cmp r2, r3 8005d54: d00b beq.n 8005d6e 8005d56: 687b ldr r3, [r7, #4] 8005d58: 4a23 ldr r2, [pc, #140] ; (8005de8 ) 8005d5a: 4293 cmp r3, r2 8005d5c: d007 beq.n 8005d6e 8005d5e: 687b ldr r3, [r7, #4] 8005d60: 4a22 ldr r2, [pc, #136] ; (8005dec ) 8005d62: 4293 cmp r3, r2 8005d64: d003 beq.n 8005d6e 8005d66: 687b ldr r3, [r7, #4] 8005d68: 4a21 ldr r2, [pc, #132] ; (8005df0 ) 8005d6a: 4293 cmp r3, r2 8005d6c: d108 bne.n 8005d80 { /* Select the Counter Mode */ tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); 8005d6e: 68fb ldr r3, [r7, #12] 8005d70: 2270 movs r2, #112 ; 0x70 8005d72: 4393 bics r3, r2 8005d74: 60fb str r3, [r7, #12] tmpcr1 |= Structure->CounterMode; 8005d76: 683b ldr r3, [r7, #0] 8005d78: 685b ldr r3, [r3, #4] 8005d7a: 68fa ldr r2, [r7, #12] 8005d7c: 4313 orrs r3, r2 8005d7e: 60fb str r3, [r7, #12] } if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) 8005d80: 687a ldr r2, [r7, #4] 8005d82: 2380 movs r3, #128 ; 0x80 8005d84: 05db lsls r3, r3, #23 8005d86: 429a cmp r2, r3 8005d88: d00b beq.n 8005da2 8005d8a: 687b ldr r3, [r7, #4] 8005d8c: 4a16 ldr r2, [pc, #88] ; (8005de8 ) 8005d8e: 4293 cmp r3, r2 8005d90: d007 beq.n 8005da2 8005d92: 687b ldr r3, [r7, #4] 8005d94: 4a15 ldr r2, [pc, #84] ; (8005dec ) 8005d96: 4293 cmp r3, r2 8005d98: d003 beq.n 8005da2 8005d9a: 687b ldr r3, [r7, #4] 8005d9c: 4a14 ldr r2, [pc, #80] ; (8005df0 ) 8005d9e: 4293 cmp r3, r2 8005da0: d108 bne.n 8005db4 { /* Set the clock division */ tmpcr1 &= ~TIM_CR1_CKD; 8005da2: 68fb ldr r3, [r7, #12] 8005da4: 4a13 ldr r2, [pc, #76] ; (8005df4 ) 8005da6: 4013 ands r3, r2 8005da8: 60fb str r3, [r7, #12] tmpcr1 |= (uint32_t)Structure->ClockDivision; 8005daa: 683b ldr r3, [r7, #0] 8005dac: 68db ldr r3, [r3, #12] 8005dae: 68fa ldr r2, [r7, #12] 8005db0: 4313 orrs r3, r2 8005db2: 60fb str r3, [r7, #12] } /* Set the auto-reload preload */ MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); 8005db4: 68fb ldr r3, [r7, #12] 8005db6: 2280 movs r2, #128 ; 0x80 8005db8: 4393 bics r3, r2 8005dba: 001a movs r2, r3 8005dbc: 683b ldr r3, [r7, #0] 8005dbe: 691b ldr r3, [r3, #16] 8005dc0: 4313 orrs r3, r2 8005dc2: 60fb str r3, [r7, #12] TIMx->CR1 = tmpcr1; 8005dc4: 687b ldr r3, [r7, #4] 8005dc6: 68fa ldr r2, [r7, #12] 8005dc8: 601a str r2, [r3, #0] /* Set the Autoreload value */ TIMx->ARR = (uint32_t)Structure->Period ; 8005dca: 683b ldr r3, [r7, #0] 8005dcc: 689a ldr r2, [r3, #8] 8005dce: 687b ldr r3, [r7, #4] 8005dd0: 62da str r2, [r3, #44] ; 0x2c /* Set the Prescaler value */ TIMx->PSC = Structure->Prescaler; 8005dd2: 683b ldr r3, [r7, #0] 8005dd4: 681a ldr r2, [r3, #0] 8005dd6: 687b ldr r3, [r7, #4] 8005dd8: 629a str r2, [r3, #40] ; 0x28 /* Generate an update event to reload the Prescaler and the repetition counter (only for advanced timer) value immediately */ TIMx->EGR = TIM_EGR_UG; 8005dda: 687b ldr r3, [r7, #4] 8005ddc: 2201 movs r2, #1 8005dde: 615a str r2, [r3, #20] } 8005de0: 46c0 nop ; (mov r8, r8) 8005de2: 46bd mov sp, r7 8005de4: b004 add sp, #16 8005de6: bd80 pop {r7, pc} 8005de8: 40000400 .word 0x40000400 8005dec: 40010800 .word 0x40010800 8005df0: 40011400 .word 0x40011400 8005df4: fffffcff .word 0xfffffcff 08005df8 : * mode. * @retval HAL status */ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef *sMasterConfig) { 8005df8: b580 push {r7, lr} 8005dfa: b084 sub sp, #16 8005dfc: af00 add r7, sp, #0 8005dfe: 6078 str r0, [r7, #4] 8005e00: 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); 8005e02: 687b ldr r3, [r7, #4] 8005e04: 2238 movs r2, #56 ; 0x38 8005e06: 5c9b ldrb r3, [r3, r2] 8005e08: 2b01 cmp r3, #1 8005e0a: d101 bne.n 8005e10 8005e0c: 2302 movs r3, #2 8005e0e: e047 b.n 8005ea0 8005e10: 687b ldr r3, [r7, #4] 8005e12: 2238 movs r2, #56 ; 0x38 8005e14: 2101 movs r1, #1 8005e16: 5499 strb r1, [r3, r2] /* Change the handler state */ htim->State = HAL_TIM_STATE_BUSY; 8005e18: 687b ldr r3, [r7, #4] 8005e1a: 2239 movs r2, #57 ; 0x39 8005e1c: 2102 movs r1, #2 8005e1e: 5499 strb r1, [r3, r2] /* Get the TIMx CR2 register value */ tmpcr2 = htim->Instance->CR2; 8005e20: 687b ldr r3, [r7, #4] 8005e22: 681b ldr r3, [r3, #0] 8005e24: 685b ldr r3, [r3, #4] 8005e26: 60fb str r3, [r7, #12] /* Get the TIMx SMCR register value */ tmpsmcr = htim->Instance->SMCR; 8005e28: 687b ldr r3, [r7, #4] 8005e2a: 681b ldr r3, [r3, #0] 8005e2c: 689b ldr r3, [r3, #8] 8005e2e: 60bb str r3, [r7, #8] /* Reset the MMS Bits */ tmpcr2 &= ~TIM_CR2_MMS; 8005e30: 68fb ldr r3, [r7, #12] 8005e32: 2270 movs r2, #112 ; 0x70 8005e34: 4393 bics r3, r2 8005e36: 60fb str r3, [r7, #12] /* Select the TRGO source */ tmpcr2 |= sMasterConfig->MasterOutputTrigger; 8005e38: 683b ldr r3, [r7, #0] 8005e3a: 681b ldr r3, [r3, #0] 8005e3c: 68fa ldr r2, [r7, #12] 8005e3e: 4313 orrs r3, r2 8005e40: 60fb str r3, [r7, #12] /* Update TIMx CR2 */ htim->Instance->CR2 = tmpcr2; 8005e42: 687b ldr r3, [r7, #4] 8005e44: 681b ldr r3, [r3, #0] 8005e46: 68fa ldr r2, [r7, #12] 8005e48: 605a str r2, [r3, #4] if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) 8005e4a: 687b ldr r3, [r7, #4] 8005e4c: 681a ldr r2, [r3, #0] 8005e4e: 2380 movs r3, #128 ; 0x80 8005e50: 05db lsls r3, r3, #23 8005e52: 429a cmp r2, r3 8005e54: d00e beq.n 8005e74 8005e56: 687b ldr r3, [r7, #4] 8005e58: 681b ldr r3, [r3, #0] 8005e5a: 4a13 ldr r2, [pc, #76] ; (8005ea8 ) 8005e5c: 4293 cmp r3, r2 8005e5e: d009 beq.n 8005e74 8005e60: 687b ldr r3, [r7, #4] 8005e62: 681b ldr r3, [r3, #0] 8005e64: 4a11 ldr r2, [pc, #68] ; (8005eac ) 8005e66: 4293 cmp r3, r2 8005e68: d004 beq.n 8005e74 8005e6a: 687b ldr r3, [r7, #4] 8005e6c: 681b ldr r3, [r3, #0] 8005e6e: 4a10 ldr r2, [pc, #64] ; (8005eb0 ) 8005e70: 4293 cmp r3, r2 8005e72: d10c bne.n 8005e8e { /* Reset the MSM Bit */ tmpsmcr &= ~TIM_SMCR_MSM; 8005e74: 68bb ldr r3, [r7, #8] 8005e76: 2280 movs r2, #128 ; 0x80 8005e78: 4393 bics r3, r2 8005e7a: 60bb str r3, [r7, #8] /* Set master mode */ tmpsmcr |= sMasterConfig->MasterSlaveMode; 8005e7c: 683b ldr r3, [r7, #0] 8005e7e: 685b ldr r3, [r3, #4] 8005e80: 68ba ldr r2, [r7, #8] 8005e82: 4313 orrs r3, r2 8005e84: 60bb str r3, [r7, #8] /* Update TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; 8005e86: 687b ldr r3, [r7, #4] 8005e88: 681b ldr r3, [r3, #0] 8005e8a: 68ba ldr r2, [r7, #8] 8005e8c: 609a str r2, [r3, #8] } /* Change the htim state */ htim->State = HAL_TIM_STATE_READY; 8005e8e: 687b ldr r3, [r7, #4] 8005e90: 2239 movs r2, #57 ; 0x39 8005e92: 2101 movs r1, #1 8005e94: 5499 strb r1, [r3, r2] __HAL_UNLOCK(htim); 8005e96: 687b ldr r3, [r7, #4] 8005e98: 2238 movs r2, #56 ; 0x38 8005e9a: 2100 movs r1, #0 8005e9c: 5499 strb r1, [r3, r2] return HAL_OK; 8005e9e: 2300 movs r3, #0 } 8005ea0: 0018 movs r0, r3 8005ea2: 46bd mov sp, r7 8005ea4: b004 add sp, #16 8005ea6: bd80 pop {r7, pc} 8005ea8: 40000400 .word 0x40000400 8005eac: 40010800 .word 0x40010800 8005eb0: 40011400 .word 0x40011400 08005eb4 : * 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) { 8005eb4: b580 push {r7, lr} 8005eb6: b082 sub sp, #8 8005eb8: af00 add r7, sp, #0 8005eba: 6078 str r0, [r7, #4] /* Check the UART handle allocation */ if (huart == NULL) 8005ebc: 687b ldr r3, [r7, #4] 8005ebe: 2b00 cmp r3, #0 8005ec0: d101 bne.n 8005ec6 { return HAL_ERROR; 8005ec2: 2301 movs r3, #1 8005ec4: e044 b.n 8005f50 { /* Check the parameters */ assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance))); } if (huart->gState == HAL_UART_STATE_RESET) 8005ec6: 687b ldr r3, [r7, #4] 8005ec8: 6f9b ldr r3, [r3, #120] ; 0x78 8005eca: 2b00 cmp r3, #0 8005ecc: d107 bne.n 8005ede { /* Allocate lock resource and initialize it */ huart->Lock = HAL_UNLOCKED; 8005ece: 687b ldr r3, [r7, #4] 8005ed0: 2274 movs r2, #116 ; 0x74 8005ed2: 2100 movs r1, #0 8005ed4: 5499 strb r1, [r3, r2] /* Init the low level hardware */ huart->MspInitCallback(huart); #else /* Init the low level hardware : GPIO, CLOCK */ HAL_UART_MspInit(huart); 8005ed6: 687b ldr r3, [r7, #4] 8005ed8: 0018 movs r0, r3 8005eda: f7fc fb3d bl 8002558 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } huart->gState = HAL_UART_STATE_BUSY; 8005ede: 687b ldr r3, [r7, #4] 8005ee0: 2224 movs r2, #36 ; 0x24 8005ee2: 679a str r2, [r3, #120] ; 0x78 __HAL_UART_DISABLE(huart); 8005ee4: 687b ldr r3, [r7, #4] 8005ee6: 681b ldr r3, [r3, #0] 8005ee8: 687a ldr r2, [r7, #4] 8005eea: 6812 ldr r2, [r2, #0] 8005eec: 6812 ldr r2, [r2, #0] 8005eee: 2101 movs r1, #1 8005ef0: 438a bics r2, r1 8005ef2: 601a str r2, [r3, #0] /* Set the UART Communication parameters */ if (UART_SetConfig(huart) == HAL_ERROR) 8005ef4: 687b ldr r3, [r7, #4] 8005ef6: 0018 movs r0, r3 8005ef8: f000 faf8 bl 80064ec 8005efc: 0003 movs r3, r0 8005efe: 2b01 cmp r3, #1 8005f00: d101 bne.n 8005f06 { return HAL_ERROR; 8005f02: 2301 movs r3, #1 8005f04: e024 b.n 8005f50 } if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) 8005f06: 687b ldr r3, [r7, #4] 8005f08: 6a5b ldr r3, [r3, #36] ; 0x24 8005f0a: 2b00 cmp r3, #0 8005f0c: d003 beq.n 8005f16 { UART_AdvFeatureConfig(huart); 8005f0e: 687b ldr r3, [r7, #4] 8005f10: 0018 movs r0, r3 8005f12: f000 fdad bl 8006a70 } /* 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)); 8005f16: 687b ldr r3, [r7, #4] 8005f18: 681b ldr r3, [r3, #0] 8005f1a: 687a ldr r2, [r7, #4] 8005f1c: 6812 ldr r2, [r2, #0] 8005f1e: 6852 ldr r2, [r2, #4] 8005f20: 490d ldr r1, [pc, #52] ; (8005f58 ) 8005f22: 400a ands r2, r1 8005f24: 605a str r2, [r3, #4] CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); 8005f26: 687b ldr r3, [r7, #4] 8005f28: 681b ldr r3, [r3, #0] 8005f2a: 687a ldr r2, [r7, #4] 8005f2c: 6812 ldr r2, [r2, #0] 8005f2e: 6892 ldr r2, [r2, #8] 8005f30: 212a movs r1, #42 ; 0x2a 8005f32: 438a bics r2, r1 8005f34: 609a str r2, [r3, #8] __HAL_UART_ENABLE(huart); 8005f36: 687b ldr r3, [r7, #4] 8005f38: 681b ldr r3, [r3, #0] 8005f3a: 687a ldr r2, [r7, #4] 8005f3c: 6812 ldr r2, [r2, #0] 8005f3e: 6812 ldr r2, [r2, #0] 8005f40: 2101 movs r1, #1 8005f42: 430a orrs r2, r1 8005f44: 601a str r2, [r3, #0] /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ return (UART_CheckIdleState(huart)); 8005f46: 687b ldr r3, [r7, #4] 8005f48: 0018 movs r0, r3 8005f4a: f000 fe3d bl 8006bc8 8005f4e: 0003 movs r3, r0 } 8005f50: 0018 movs r0, r3 8005f52: 46bd mov sp, r7 8005f54: b002 add sp, #8 8005f56: bd80 pop {r7, pc} 8005f58: ffffb7ff .word 0xffffb7ff 08005f5c : * @brief DeInitialize the UART peripheral. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart) { 8005f5c: b580 push {r7, lr} 8005f5e: b082 sub sp, #8 8005f60: af00 add r7, sp, #0 8005f62: 6078 str r0, [r7, #4] /* Check the UART handle allocation */ if (huart == NULL) 8005f64: 687b ldr r3, [r7, #4] 8005f66: 2b00 cmp r3, #0 8005f68: d101 bne.n 8005f6e { return HAL_ERROR; 8005f6a: 2301 movs r3, #1 8005f6c: e02c b.n 8005fc8 } /* Check the parameters */ assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance))); huart->gState = HAL_UART_STATE_BUSY; 8005f6e: 687b ldr r3, [r7, #4] 8005f70: 2224 movs r2, #36 ; 0x24 8005f72: 679a str r2, [r3, #120] ; 0x78 __HAL_UART_DISABLE(huart); 8005f74: 687b ldr r3, [r7, #4] 8005f76: 681b ldr r3, [r3, #0] 8005f78: 687a ldr r2, [r7, #4] 8005f7a: 6812 ldr r2, [r2, #0] 8005f7c: 6812 ldr r2, [r2, #0] 8005f7e: 2101 movs r1, #1 8005f80: 438a bics r2, r1 8005f82: 601a str r2, [r3, #0] huart->Instance->CR1 = 0x0U; 8005f84: 687b ldr r3, [r7, #4] 8005f86: 681b ldr r3, [r3, #0] 8005f88: 2200 movs r2, #0 8005f8a: 601a str r2, [r3, #0] huart->Instance->CR2 = 0x0U; 8005f8c: 687b ldr r3, [r7, #4] 8005f8e: 681b ldr r3, [r3, #0] 8005f90: 2200 movs r2, #0 8005f92: 605a str r2, [r3, #4] huart->Instance->CR3 = 0x0U; 8005f94: 687b ldr r3, [r7, #4] 8005f96: 681b ldr r3, [r3, #0] 8005f98: 2200 movs r2, #0 8005f9a: 609a str r2, [r3, #8] } /* DeInit the low level hardware */ huart->MspDeInitCallback(huart); #else /* DeInit the low level hardware */ HAL_UART_MspDeInit(huart); 8005f9c: 687b ldr r3, [r7, #4] 8005f9e: 0018 movs r0, r3 8005fa0: f7fc fb2c bl 80025fc #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ huart->ErrorCode = HAL_UART_ERROR_NONE; 8005fa4: 687b ldr r3, [r7, #4] 8005fa6: 2280 movs r2, #128 ; 0x80 8005fa8: 2100 movs r1, #0 8005faa: 5099 str r1, [r3, r2] huart->gState = HAL_UART_STATE_RESET; 8005fac: 687b ldr r3, [r7, #4] 8005fae: 2200 movs r2, #0 8005fb0: 679a str r2, [r3, #120] ; 0x78 huart->RxState = HAL_UART_STATE_RESET; 8005fb2: 687b ldr r3, [r7, #4] 8005fb4: 2200 movs r2, #0 8005fb6: 67da str r2, [r3, #124] ; 0x7c huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; 8005fb8: 687b ldr r3, [r7, #4] 8005fba: 2200 movs r2, #0 8005fbc: 661a str r2, [r3, #96] ; 0x60 __HAL_UNLOCK(huart); 8005fbe: 687b ldr r3, [r7, #4] 8005fc0: 2274 movs r2, #116 ; 0x74 8005fc2: 2100 movs r1, #0 8005fc4: 5499 strb r1, [r3, r2] return HAL_OK; 8005fc6: 2300 movs r3, #0 } 8005fc8: 0018 movs r0, r3 8005fca: 46bd mov sp, r7 8005fcc: b002 add sp, #8 8005fce: bd80 pop {r7, pc} 08005fd0 : * @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, uint8_t *pData, uint16_t Size) { 8005fd0: b580 push {r7, lr} 8005fd2: b084 sub sp, #16 8005fd4: af00 add r7, sp, #0 8005fd6: 60f8 str r0, [r7, #12] 8005fd8: 60b9 str r1, [r7, #8] 8005fda: 1dbb adds r3, r7, #6 8005fdc: 801a strh r2, [r3, #0] /* Check that a Tx process is not already ongoing */ if (huart->gState == HAL_UART_STATE_READY) 8005fde: 68fb ldr r3, [r7, #12] 8005fe0: 6f9b ldr r3, [r3, #120] ; 0x78 8005fe2: 2b20 cmp r3, #32 8005fe4: d159 bne.n 800609a { if ((pData == NULL) || (Size == 0U)) 8005fe6: 68bb ldr r3, [r7, #8] 8005fe8: 2b00 cmp r3, #0 8005fea: d003 beq.n 8005ff4 8005fec: 1dbb adds r3, r7, #6 8005fee: 881b ldrh r3, [r3, #0] 8005ff0: 2b00 cmp r3, #0 8005ff2: d101 bne.n 8005ff8 { return HAL_ERROR; 8005ff4: 2301 movs r3, #1 8005ff6: e051 b.n 800609c } /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter should be aligned on a u16 frontier, as data to be filled into TDR will be handled through a u16 cast. */ if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) 8005ff8: 68fb ldr r3, [r7, #12] 8005ffa: 689a ldr r2, [r3, #8] 8005ffc: 2380 movs r3, #128 ; 0x80 8005ffe: 015b lsls r3, r3, #5 8006000: 429a cmp r2, r3 8006002: d109 bne.n 8006018 8006004: 68fb ldr r3, [r7, #12] 8006006: 691b ldr r3, [r3, #16] 8006008: 2b00 cmp r3, #0 800600a: d105 bne.n 8006018 { if ((((uint32_t)pData) & 1U) != 0U) 800600c: 68bb ldr r3, [r7, #8] 800600e: 2201 movs r2, #1 8006010: 4013 ands r3, r2 8006012: d001 beq.n 8006018 { return HAL_ERROR; 8006014: 2301 movs r3, #1 8006016: e041 b.n 800609c } } __HAL_LOCK(huart); 8006018: 68fb ldr r3, [r7, #12] 800601a: 2274 movs r2, #116 ; 0x74 800601c: 5c9b ldrb r3, [r3, r2] 800601e: 2b01 cmp r3, #1 8006020: d101 bne.n 8006026 8006022: 2302 movs r3, #2 8006024: e03a b.n 800609c 8006026: 68fb ldr r3, [r7, #12] 8006028: 2274 movs r2, #116 ; 0x74 800602a: 2101 movs r1, #1 800602c: 5499 strb r1, [r3, r2] huart->pTxBuffPtr = pData; 800602e: 68fb ldr r3, [r7, #12] 8006030: 68ba ldr r2, [r7, #8] 8006032: 64da str r2, [r3, #76] ; 0x4c huart->TxXferSize = Size; 8006034: 68fb ldr r3, [r7, #12] 8006036: 1dba adds r2, r7, #6 8006038: 2150 movs r1, #80 ; 0x50 800603a: 8812 ldrh r2, [r2, #0] 800603c: 525a strh r2, [r3, r1] huart->TxXferCount = Size; 800603e: 68fb ldr r3, [r7, #12] 8006040: 1dba adds r2, r7, #6 8006042: 2152 movs r1, #82 ; 0x52 8006044: 8812 ldrh r2, [r2, #0] 8006046: 525a strh r2, [r3, r1] huart->TxISR = NULL; 8006048: 68fb ldr r3, [r7, #12] 800604a: 2200 movs r2, #0 800604c: 669a str r2, [r3, #104] ; 0x68 huart->ErrorCode = HAL_UART_ERROR_NONE; 800604e: 68fb ldr r3, [r7, #12] 8006050: 2280 movs r2, #128 ; 0x80 8006052: 2100 movs r1, #0 8006054: 5099 str r1, [r3, r2] huart->gState = HAL_UART_STATE_BUSY_TX; 8006056: 68fb ldr r3, [r7, #12] 8006058: 2221 movs r2, #33 ; 0x21 800605a: 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)) 800605c: 68fb ldr r3, [r7, #12] 800605e: 689a ldr r2, [r3, #8] 8006060: 2380 movs r3, #128 ; 0x80 8006062: 015b lsls r3, r3, #5 8006064: 429a cmp r2, r3 8006066: d107 bne.n 8006078 8006068: 68fb ldr r3, [r7, #12] 800606a: 691b ldr r3, [r3, #16] 800606c: 2b00 cmp r3, #0 800606e: d103 bne.n 8006078 { huart->TxISR = UART_TxISR_16BIT; 8006070: 68fb ldr r3, [r7, #12] 8006072: 4a0c ldr r2, [pc, #48] ; (80060a4 ) 8006074: 669a str r2, [r3, #104] ; 0x68 8006076: e002 b.n 800607e } else { huart->TxISR = UART_TxISR_8BIT; 8006078: 68fb ldr r3, [r7, #12] 800607a: 4a0b ldr r2, [pc, #44] ; (80060a8 ) 800607c: 669a str r2, [r3, #104] ; 0x68 } __HAL_UNLOCK(huart); 800607e: 68fb ldr r3, [r7, #12] 8006080: 2274 movs r2, #116 ; 0x74 8006082: 2100 movs r1, #0 8006084: 5499 strb r1, [r3, r2] /* Enable the Transmit Data Register Empty interrupt */ SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE); 8006086: 68fb ldr r3, [r7, #12] 8006088: 681b ldr r3, [r3, #0] 800608a: 68fa ldr r2, [r7, #12] 800608c: 6812 ldr r2, [r2, #0] 800608e: 6812 ldr r2, [r2, #0] 8006090: 2180 movs r1, #128 ; 0x80 8006092: 430a orrs r2, r1 8006094: 601a str r2, [r3, #0] return HAL_OK; 8006096: 2300 movs r3, #0 8006098: e000 b.n 800609c } else { return HAL_BUSY; 800609a: 2302 movs r3, #2 } } 800609c: 0018 movs r0, r3 800609e: 46bd mov sp, r7 80060a0: b004 add sp, #16 80060a2: bd80 pop {r7, pc} 80060a4: 08006e55 .word 0x08006e55 80060a8: 08006de7 .word 0x08006de7 080060ac : * @brief Handle UART interrupt request. * @param huart UART handle. * @retval None */ void HAL_UART_IRQHandler(UART_HandleTypeDef *huart) { 80060ac: b580 push {r7, lr} 80060ae: b088 sub sp, #32 80060b0: af00 add r7, sp, #0 80060b2: 6078 str r0, [r7, #4] uint32_t isrflags = READ_REG(huart->Instance->ISR); 80060b4: 687b ldr r3, [r7, #4] 80060b6: 681b ldr r3, [r3, #0] 80060b8: 69db ldr r3, [r3, #28] 80060ba: 61fb str r3, [r7, #28] uint32_t cr1its = READ_REG(huart->Instance->CR1); 80060bc: 687b ldr r3, [r7, #4] 80060be: 681b ldr r3, [r3, #0] 80060c0: 681b ldr r3, [r3, #0] 80060c2: 61bb str r3, [r7, #24] uint32_t cr3its = READ_REG(huart->Instance->CR3); 80060c4: 687b ldr r3, [r7, #4] 80060c6: 681b ldr r3, [r3, #0] 80060c8: 689b ldr r3, [r3, #8] 80060ca: 617b str r3, [r7, #20] 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)); 80060cc: 69fb ldr r3, [r7, #28] 80060ce: 4ab7 ldr r2, [pc, #732] ; (80063ac ) 80060d0: 4013 ands r3, r2 80060d2: 613b str r3, [r7, #16] if (errorflags == 0U) 80060d4: 693b ldr r3, [r7, #16] 80060d6: 2b00 cmp r3, #0 80060d8: d112 bne.n 8006100 { /* UART in mode Receiver ---------------------------------------------------*/ if (((isrflags & USART_ISR_RXNE) != 0U) 80060da: 69fb ldr r3, [r7, #28] 80060dc: 2220 movs r2, #32 80060de: 4013 ands r3, r2 80060e0: d00e beq.n 8006100 && ((cr1its & USART_CR1_RXNEIE) != 0U)) 80060e2: 69bb ldr r3, [r7, #24] 80060e4: 2220 movs r2, #32 80060e6: 4013 ands r3, r2 80060e8: d00a beq.n 8006100 { if (huart->RxISR != NULL) 80060ea: 687b ldr r3, [r7, #4] 80060ec: 6e5b ldr r3, [r3, #100] ; 0x64 80060ee: 2b00 cmp r3, #0 80060f0: d100 bne.n 80060f4 80060f2: e1d8 b.n 80064a6 { huart->RxISR(huart); 80060f4: 687b ldr r3, [r7, #4] 80060f6: 6e5b ldr r3, [r3, #100] ; 0x64 80060f8: 687a ldr r2, [r7, #4] 80060fa: 0010 movs r0, r2 80060fc: 4798 blx r3 } return; 80060fe: e1d2 b.n 80064a6 } } /* If some errors occur */ if ((errorflags != 0U) 8006100: 693b ldr r3, [r7, #16] 8006102: 2b00 cmp r3, #0 8006104: d100 bne.n 8006108 8006106: e0d9 b.n 80062bc && (((cr3its & USART_CR3_EIE) != 0U) 8006108: 697b ldr r3, [r7, #20] 800610a: 2201 movs r2, #1 800610c: 4013 ands r3, r2 800610e: d104 bne.n 800611a || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_RTOIE)) != 0U))) 8006110: 69bb ldr r3, [r7, #24] 8006112: 4aa7 ldr r2, [pc, #668] ; (80063b0 ) 8006114: 4013 ands r3, r2 8006116: d100 bne.n 800611a 8006118: e0d0 b.n 80062bc { /* UART parity error interrupt occurred -------------------------------------*/ if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U)) 800611a: 69fb ldr r3, [r7, #28] 800611c: 2201 movs r2, #1 800611e: 4013 ands r3, r2 8006120: d010 beq.n 8006144 8006122: 69ba ldr r2, [r7, #24] 8006124: 2380 movs r3, #128 ; 0x80 8006126: 005b lsls r3, r3, #1 8006128: 4013 ands r3, r2 800612a: d00b beq.n 8006144 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF); 800612c: 687b ldr r3, [r7, #4] 800612e: 681b ldr r3, [r3, #0] 8006130: 2201 movs r2, #1 8006132: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_PE; 8006134: 687b ldr r3, [r7, #4] 8006136: 2280 movs r2, #128 ; 0x80 8006138: 589b ldr r3, [r3, r2] 800613a: 2201 movs r2, #1 800613c: 431a orrs r2, r3 800613e: 687b ldr r3, [r7, #4] 8006140: 2180 movs r1, #128 ; 0x80 8006142: 505a str r2, [r3, r1] } /* UART frame error interrupt occurred --------------------------------------*/ if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) 8006144: 69fb ldr r3, [r7, #28] 8006146: 2202 movs r2, #2 8006148: 4013 ands r3, r2 800614a: d00f beq.n 800616c 800614c: 697b ldr r3, [r7, #20] 800614e: 2201 movs r2, #1 8006150: 4013 ands r3, r2 8006152: d00b beq.n 800616c { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF); 8006154: 687b ldr r3, [r7, #4] 8006156: 681b ldr r3, [r3, #0] 8006158: 2202 movs r2, #2 800615a: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_FE; 800615c: 687b ldr r3, [r7, #4] 800615e: 2280 movs r2, #128 ; 0x80 8006160: 589b ldr r3, [r3, r2] 8006162: 2204 movs r2, #4 8006164: 431a orrs r2, r3 8006166: 687b ldr r3, [r7, #4] 8006168: 2180 movs r1, #128 ; 0x80 800616a: 505a str r2, [r3, r1] } /* UART noise error interrupt occurred --------------------------------------*/ if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) 800616c: 69fb ldr r3, [r7, #28] 800616e: 2204 movs r2, #4 8006170: 4013 ands r3, r2 8006172: d00f beq.n 8006194 8006174: 697b ldr r3, [r7, #20] 8006176: 2201 movs r2, #1 8006178: 4013 ands r3, r2 800617a: d00b beq.n 8006194 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF); 800617c: 687b ldr r3, [r7, #4] 800617e: 681b ldr r3, [r3, #0] 8006180: 2204 movs r2, #4 8006182: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_NE; 8006184: 687b ldr r3, [r7, #4] 8006186: 2280 movs r2, #128 ; 0x80 8006188: 589b ldr r3, [r3, r2] 800618a: 2202 movs r2, #2 800618c: 431a orrs r2, r3 800618e: 687b ldr r3, [r7, #4] 8006190: 2180 movs r1, #128 ; 0x80 8006192: 505a str r2, [r3, r1] } /* UART Over-Run interrupt occurred -----------------------------------------*/ if (((isrflags & USART_ISR_ORE) != 0U) 8006194: 69fb ldr r3, [r7, #28] 8006196: 2208 movs r2, #8 8006198: 4013 ands r3, r2 800619a: d013 beq.n 80061c4 && (((cr1its & USART_CR1_RXNEIE) != 0U) || 800619c: 69bb ldr r3, [r7, #24] 800619e: 2220 movs r2, #32 80061a0: 4013 ands r3, r2 80061a2: d103 bne.n 80061ac ((cr3its & USART_CR3_EIE) != 0U))) 80061a4: 697b ldr r3, [r7, #20] 80061a6: 2201 movs r2, #1 80061a8: 4013 ands r3, r2 && (((cr1its & USART_CR1_RXNEIE) != 0U) || 80061aa: d00b beq.n 80061c4 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); 80061ac: 687b ldr r3, [r7, #4] 80061ae: 681b ldr r3, [r3, #0] 80061b0: 2208 movs r2, #8 80061b2: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_ORE; 80061b4: 687b ldr r3, [r7, #4] 80061b6: 2280 movs r2, #128 ; 0x80 80061b8: 589b ldr r3, [r3, r2] 80061ba: 2208 movs r2, #8 80061bc: 431a orrs r2, r3 80061be: 687b ldr r3, [r7, #4] 80061c0: 2180 movs r1, #128 ; 0x80 80061c2: 505a str r2, [r3, r1] } /* UART Receiver Timeout interrupt occurred ---------------------------------*/ if (((isrflags & USART_ISR_RTOF) != 0U) && ((cr1its & USART_CR1_RTOIE) != 0U)) 80061c4: 69fa ldr r2, [r7, #28] 80061c6: 2380 movs r3, #128 ; 0x80 80061c8: 011b lsls r3, r3, #4 80061ca: 4013 ands r3, r2 80061cc: d011 beq.n 80061f2 80061ce: 69ba ldr r2, [r7, #24] 80061d0: 2380 movs r3, #128 ; 0x80 80061d2: 04db lsls r3, r3, #19 80061d4: 4013 ands r3, r2 80061d6: d00c beq.n 80061f2 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); 80061d8: 687b ldr r3, [r7, #4] 80061da: 681b ldr r3, [r3, #0] 80061dc: 2280 movs r2, #128 ; 0x80 80061de: 0112 lsls r2, r2, #4 80061e0: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_RTO; 80061e2: 687b ldr r3, [r7, #4] 80061e4: 2280 movs r2, #128 ; 0x80 80061e6: 589b ldr r3, [r3, r2] 80061e8: 2220 movs r2, #32 80061ea: 431a orrs r2, r3 80061ec: 687b ldr r3, [r7, #4] 80061ee: 2180 movs r1, #128 ; 0x80 80061f0: 505a str r2, [r3, r1] } /* Call UART Error Call back function if need be ----------------------------*/ if (huart->ErrorCode != HAL_UART_ERROR_NONE) 80061f2: 687b ldr r3, [r7, #4] 80061f4: 2280 movs r2, #128 ; 0x80 80061f6: 589b ldr r3, [r3, r2] 80061f8: 2b00 cmp r3, #0 80061fa: d100 bne.n 80061fe 80061fc: e155 b.n 80064aa { /* UART in mode Receiver --------------------------------------------------*/ if (((isrflags & USART_ISR_RXNE) != 0U) 80061fe: 69fb ldr r3, [r7, #28] 8006200: 2220 movs r2, #32 8006202: 4013 ands r3, r2 8006204: d00c beq.n 8006220 && ((cr1its & USART_CR1_RXNEIE) != 0U)) 8006206: 69bb ldr r3, [r7, #24] 8006208: 2220 movs r2, #32 800620a: 4013 ands r3, r2 800620c: d008 beq.n 8006220 { if (huart->RxISR != NULL) 800620e: 687b ldr r3, [r7, #4] 8006210: 6e5b ldr r3, [r3, #100] ; 0x64 8006212: 2b00 cmp r3, #0 8006214: d004 beq.n 8006220 { huart->RxISR(huart); 8006216: 687b ldr r3, [r7, #4] 8006218: 6e5b ldr r3, [r3, #100] ; 0x64 800621a: 687a ldr r2, [r7, #4] 800621c: 0010 movs r0, r2 800621e: 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; 8006220: 687b ldr r3, [r7, #4] 8006222: 2280 movs r2, #128 ; 0x80 8006224: 589b ldr r3, [r3, r2] 8006226: 60fb str r3, [r7, #12] if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) || 8006228: 687b ldr r3, [r7, #4] 800622a: 681b ldr r3, [r3, #0] 800622c: 689b ldr r3, [r3, #8] 800622e: 2240 movs r2, #64 ; 0x40 8006230: 4013 ands r3, r2 8006232: 2b40 cmp r3, #64 ; 0x40 8006234: d003 beq.n 800623e ((errorcode & (HAL_UART_ERROR_RTO | HAL_UART_ERROR_ORE)) != 0U)) 8006236: 68fb ldr r3, [r7, #12] 8006238: 2228 movs r2, #40 ; 0x28 800623a: 4013 ands r3, r2 if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) || 800623c: d033 beq.n 80062a6 { /* 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); 800623e: 687b ldr r3, [r7, #4] 8006240: 0018 movs r0, r3 8006242: f000 fd89 bl 8006d58 /* Disable the UART DMA Rx request if enabled */ if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 8006246: 687b ldr r3, [r7, #4] 8006248: 681b ldr r3, [r3, #0] 800624a: 689b ldr r3, [r3, #8] 800624c: 2240 movs r2, #64 ; 0x40 800624e: 4013 ands r3, r2 8006250: 2b40 cmp r3, #64 ; 0x40 8006252: d123 bne.n 800629c { CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 8006254: 687b ldr r3, [r7, #4] 8006256: 681b ldr r3, [r3, #0] 8006258: 687a ldr r2, [r7, #4] 800625a: 6812 ldr r2, [r2, #0] 800625c: 6892 ldr r2, [r2, #8] 800625e: 2140 movs r1, #64 ; 0x40 8006260: 438a bics r2, r1 8006262: 609a str r2, [r3, #8] /* Abort the UART DMA Rx channel */ if (huart->hdmarx != NULL) 8006264: 687b ldr r3, [r7, #4] 8006266: 6f1b ldr r3, [r3, #112] ; 0x70 8006268: 2b00 cmp r3, #0 800626a: d012 beq.n 8006292 { /* Set the UART DMA Abort callback : will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */ huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError; 800626c: 687b ldr r3, [r7, #4] 800626e: 6f1b ldr r3, [r3, #112] ; 0x70 8006270: 4a50 ldr r2, [pc, #320] ; (80063b4 ) 8006272: 639a str r2, [r3, #56] ; 0x38 /* Abort DMA RX */ if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) 8006274: 687b ldr r3, [r7, #4] 8006276: 6f1b ldr r3, [r3, #112] ; 0x70 8006278: 0018 movs r0, r3 800627a: f7fd ffb0 bl 80041de 800627e: 1e03 subs r3, r0, #0 8006280: d01a beq.n 80062b8 { /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */ huart->hdmarx->XferAbortCallback(huart->hdmarx); 8006282: 687b ldr r3, [r7, #4] 8006284: 6f1b ldr r3, [r3, #112] ; 0x70 8006286: 6b9a ldr r2, [r3, #56] ; 0x38 8006288: 687b ldr r3, [r7, #4] 800628a: 6f1b ldr r3, [r3, #112] ; 0x70 800628c: 0018 movs r0, r3 800628e: 4790 blx r2 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 8006290: e012 b.n 80062b8 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); 8006292: 687b ldr r3, [r7, #4] 8006294: 0018 movs r0, r3 8006296: f000 f915 bl 80064c4 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 800629a: e00d b.n 80062b8 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); 800629c: 687b ldr r3, [r7, #4] 800629e: 0018 movs r0, r3 80062a0: f000 f910 bl 80064c4 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 80062a4: e008 b.n 80062b8 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); 80062a6: 687b ldr r3, [r7, #4] 80062a8: 0018 movs r0, r3 80062aa: f000 f90b bl 80064c4 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ huart->ErrorCode = HAL_UART_ERROR_NONE; 80062ae: 687b ldr r3, [r7, #4] 80062b0: 2280 movs r2, #128 ; 0x80 80062b2: 2100 movs r1, #0 80062b4: 5099 str r1, [r3, r2] } } return; 80062b6: e0f8 b.n 80064aa if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 80062b8: 46c0 nop ; (mov r8, r8) return; 80062ba: e0f6 b.n 80064aa } /* End if some error occurs */ /* Check current reception Mode : If Reception till IDLE event has been selected : */ if ( (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) 80062bc: 687b ldr r3, [r7, #4] 80062be: 6e1b ldr r3, [r3, #96] ; 0x60 80062c0: 2b01 cmp r3, #1 80062c2: d000 beq.n 80062c6 80062c4: e0bb b.n 800643e &&((isrflags & USART_ISR_IDLE) != 0U) 80062c6: 69fb ldr r3, [r7, #28] 80062c8: 2210 movs r2, #16 80062ca: 4013 ands r3, r2 80062cc: d100 bne.n 80062d0 80062ce: e0b6 b.n 800643e &&((cr1its & USART_ISR_IDLE) != 0U)) 80062d0: 69bb ldr r3, [r7, #24] 80062d2: 2210 movs r2, #16 80062d4: 4013 ands r3, r2 80062d6: d100 bne.n 80062da 80062d8: e0b1 b.n 800643e { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); 80062da: 687b ldr r3, [r7, #4] 80062dc: 681b ldr r3, [r3, #0] 80062de: 2210 movs r2, #16 80062e0: 621a str r2, [r3, #32] /* Check if DMA mode is enabled in UART */ if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 80062e2: 687b ldr r3, [r7, #4] 80062e4: 681b ldr r3, [r3, #0] 80062e6: 689b ldr r3, [r3, #8] 80062e8: 2240 movs r2, #64 ; 0x40 80062ea: 4013 ands r3, r2 80062ec: 2b40 cmp r3, #64 ; 0x40 80062ee: d165 bne.n 80063bc { /* 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); 80062f0: 687b ldr r3, [r7, #4] 80062f2: 6f1b ldr r3, [r3, #112] ; 0x70 80062f4: 681b ldr r3, [r3, #0] 80062f6: 685a ldr r2, [r3, #4] 80062f8: 230a movs r3, #10 80062fa: 18fb adds r3, r7, r3 80062fc: 801a strh r2, [r3, #0] if ( (nb_remaining_rx_data > 0U) 80062fe: 230a movs r3, #10 8006300: 18fb adds r3, r7, r3 8006302: 881b ldrh r3, [r3, #0] 8006304: 2b00 cmp r3, #0 8006306: d100 bne.n 800630a 8006308: e0d1 b.n 80064ae &&(nb_remaining_rx_data < huart->RxXferSize)) 800630a: 687b ldr r3, [r7, #4] 800630c: 2258 movs r2, #88 ; 0x58 800630e: 5a9b ldrh r3, [r3, r2] 8006310: 220a movs r2, #10 8006312: 18ba adds r2, r7, r2 8006314: 8812 ldrh r2, [r2, #0] 8006316: 429a cmp r2, r3 8006318: d300 bcc.n 800631c 800631a: e0c8 b.n 80064ae { /* Reception is not complete */ huart->RxXferCount = nb_remaining_rx_data; 800631c: 687b ldr r3, [r7, #4] 800631e: 220a movs r2, #10 8006320: 18ba adds r2, r7, r2 8006322: 215a movs r1, #90 ; 0x5a 8006324: 8812 ldrh r2, [r2, #0] 8006326: 525a strh r2, [r3, r1] /* In Normal mode, end DMA xfer and HAL UART Rx process*/ if (HAL_IS_BIT_CLR(huart->hdmarx->Instance->CCR, DMA_CCR_CIRC)) 8006328: 687b ldr r3, [r7, #4] 800632a: 6f1b ldr r3, [r3, #112] ; 0x70 800632c: 681b ldr r3, [r3, #0] 800632e: 681b ldr r3, [r3, #0] 8006330: 2220 movs r2, #32 8006332: 4013 ands r3, r2 8006334: d12a bne.n 800638c { /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */ CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); 8006336: 687b ldr r3, [r7, #4] 8006338: 681b ldr r3, [r3, #0] 800633a: 687a ldr r2, [r7, #4] 800633c: 6812 ldr r2, [r2, #0] 800633e: 6812 ldr r2, [r2, #0] 8006340: 491d ldr r1, [pc, #116] ; (80063b8 ) 8006342: 400a ands r2, r1 8006344: 601a str r2, [r3, #0] CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 8006346: 687b ldr r3, [r7, #4] 8006348: 681b ldr r3, [r3, #0] 800634a: 687a ldr r2, [r7, #4] 800634c: 6812 ldr r2, [r2, #0] 800634e: 6892 ldr r2, [r2, #8] 8006350: 2101 movs r1, #1 8006352: 438a bics r2, r1 8006354: 609a str r2, [r3, #8] /* Disable the DMA transfer for the receiver request by resetting the DMAR bit in the UART CR3 register */ CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 8006356: 687b ldr r3, [r7, #4] 8006358: 681b ldr r3, [r3, #0] 800635a: 687a ldr r2, [r7, #4] 800635c: 6812 ldr r2, [r2, #0] 800635e: 6892 ldr r2, [r2, #8] 8006360: 2140 movs r1, #64 ; 0x40 8006362: 438a bics r2, r1 8006364: 609a str r2, [r3, #8] /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; 8006366: 687b ldr r3, [r7, #4] 8006368: 2220 movs r2, #32 800636a: 67da str r2, [r3, #124] ; 0x7c huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; 800636c: 687b ldr r3, [r7, #4] 800636e: 2200 movs r2, #0 8006370: 661a str r2, [r3, #96] ; 0x60 CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); 8006372: 687b ldr r3, [r7, #4] 8006374: 681b ldr r3, [r3, #0] 8006376: 687a ldr r2, [r7, #4] 8006378: 6812 ldr r2, [r2, #0] 800637a: 6812 ldr r2, [r2, #0] 800637c: 2110 movs r1, #16 800637e: 438a bics r2, r1 8006380: 601a str r2, [r3, #0] /* Last bytes received, so no need as the abort is immediate */ (void)HAL_DMA_Abort(huart->hdmarx); 8006382: 687b ldr r3, [r7, #4] 8006384: 6f1b ldr r3, [r3, #112] ; 0x70 8006386: 0018 movs r0, r3 8006388: f7fd fee9 bl 800415e #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)); 800638c: 687b ldr r3, [r7, #4] 800638e: 2258 movs r2, #88 ; 0x58 8006390: 5a9a ldrh r2, [r3, r2] 8006392: 687b ldr r3, [r7, #4] 8006394: 215a movs r1, #90 ; 0x5a 8006396: 5a5b ldrh r3, [r3, r1] 8006398: b29b uxth r3, r3 800639a: 1ad3 subs r3, r2, r3 800639c: b29a uxth r2, r3 800639e: 687b ldr r3, [r7, #4] 80063a0: 0011 movs r1, r2 80063a2: 0018 movs r0, r3 80063a4: f000 f896 bl 80064d4 #endif } return; 80063a8: e081 b.n 80064ae 80063aa: 46c0 nop ; (mov r8, r8) 80063ac: 0000080f .word 0x0000080f 80063b0: 04000120 .word 0x04000120 80063b4: 08006db9 .word 0x08006db9 80063b8: fffffeff .word 0xfffffeff 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; 80063bc: 687b ldr r3, [r7, #4] 80063be: 2258 movs r2, #88 ; 0x58 80063c0: 5a99 ldrh r1, [r3, r2] 80063c2: 687b ldr r3, [r7, #4] 80063c4: 225a movs r2, #90 ; 0x5a 80063c6: 5a9b ldrh r3, [r3, r2] 80063c8: b29a uxth r2, r3 80063ca: 2308 movs r3, #8 80063cc: 18fb adds r3, r7, r3 80063ce: 1a8a subs r2, r1, r2 80063d0: 801a strh r2, [r3, #0] if ( (huart->RxXferCount > 0U) 80063d2: 687b ldr r3, [r7, #4] 80063d4: 225a movs r2, #90 ; 0x5a 80063d6: 5a9b ldrh r3, [r3, r2] 80063d8: b29b uxth r3, r3 80063da: 2b00 cmp r3, #0 80063dc: d100 bne.n 80063e0 80063de: e068 b.n 80064b2 &&(nb_rx_data > 0U) ) 80063e0: 2308 movs r3, #8 80063e2: 18fb adds r3, r7, r3 80063e4: 881b ldrh r3, [r3, #0] 80063e6: 2b00 cmp r3, #0 80063e8: d063 beq.n 80064b2 { /* Disable the UART Parity Error Interrupt and RXNE interrupts */ CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); 80063ea: 687b ldr r3, [r7, #4] 80063ec: 681b ldr r3, [r3, #0] 80063ee: 687a ldr r2, [r7, #4] 80063f0: 6812 ldr r2, [r2, #0] 80063f2: 6812 ldr r2, [r2, #0] 80063f4: 4932 ldr r1, [pc, #200] ; (80064c0 ) 80063f6: 400a ands r2, r1 80063f8: 601a str r2, [r3, #0] /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 80063fa: 687b ldr r3, [r7, #4] 80063fc: 681b ldr r3, [r3, #0] 80063fe: 687a ldr r2, [r7, #4] 8006400: 6812 ldr r2, [r2, #0] 8006402: 6892 ldr r2, [r2, #8] 8006404: 2101 movs r1, #1 8006406: 438a bics r2, r1 8006408: 609a str r2, [r3, #8] /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; 800640a: 687b ldr r3, [r7, #4] 800640c: 2220 movs r2, #32 800640e: 67da str r2, [r3, #124] ; 0x7c huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; 8006410: 687b ldr r3, [r7, #4] 8006412: 2200 movs r2, #0 8006414: 661a str r2, [r3, #96] ; 0x60 /* Clear RxISR function pointer */ huart->RxISR = NULL; 8006416: 687b ldr r3, [r7, #4] 8006418: 2200 movs r2, #0 800641a: 665a str r2, [r3, #100] ; 0x64 CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); 800641c: 687b ldr r3, [r7, #4] 800641e: 681b ldr r3, [r3, #0] 8006420: 687a ldr r2, [r7, #4] 8006422: 6812 ldr r2, [r2, #0] 8006424: 6812 ldr r2, [r2, #0] 8006426: 2110 movs r1, #16 8006428: 438a bics r2, r1 800642a: 601a str r2, [r3, #0] #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); 800642c: 2308 movs r3, #8 800642e: 18fb adds r3, r7, r3 8006430: 881a ldrh r2, [r3, #0] 8006432: 687b ldr r3, [r7, #4] 8006434: 0011 movs r1, r2 8006436: 0018 movs r0, r3 8006438: f000 f84c bl 80064d4 #endif } return; 800643c: e039 b.n 80064b2 } } /* UART wakeup from Stop mode interrupt occurred ---------------------------*/ if (((isrflags & USART_ISR_WUF) != 0U) && ((cr3its & USART_CR3_WUFIE) != 0U)) 800643e: 69fa ldr r2, [r7, #28] 8006440: 2380 movs r3, #128 ; 0x80 8006442: 035b lsls r3, r3, #13 8006444: 4013 ands r3, r2 8006446: d00e beq.n 8006466 8006448: 697a ldr r2, [r7, #20] 800644a: 2380 movs r3, #128 ; 0x80 800644c: 03db lsls r3, r3, #15 800644e: 4013 ands r3, r2 8006450: d009 beq.n 8006466 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_WUF); 8006452: 687b ldr r3, [r7, #4] 8006454: 681b ldr r3, [r3, #0] 8006456: 2280 movs r2, #128 ; 0x80 8006458: 0352 lsls r2, r2, #13 800645a: 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); 800645c: 687b ldr r3, [r7, #4] 800645e: 0018 movs r0, r3 8006460: f000 fd4d bl 8006efe #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ return; 8006464: e028 b.n 80064b8 } /* UART in mode Transmitter ------------------------------------------------*/ if (((isrflags & USART_ISR_TXE) != 0U) 8006466: 69fb ldr r3, [r7, #28] 8006468: 2280 movs r2, #128 ; 0x80 800646a: 4013 ands r3, r2 800646c: d00d beq.n 800648a && ((cr1its & USART_CR1_TXEIE) != 0U)) 800646e: 69bb ldr r3, [r7, #24] 8006470: 2280 movs r2, #128 ; 0x80 8006472: 4013 ands r3, r2 8006474: d009 beq.n 800648a { if (huart->TxISR != NULL) 8006476: 687b ldr r3, [r7, #4] 8006478: 6e9b ldr r3, [r3, #104] ; 0x68 800647a: 2b00 cmp r3, #0 800647c: d01b beq.n 80064b6 { huart->TxISR(huart); 800647e: 687b ldr r3, [r7, #4] 8006480: 6e9b ldr r3, [r3, #104] ; 0x68 8006482: 687a ldr r2, [r7, #4] 8006484: 0010 movs r0, r2 8006486: 4798 blx r3 } return; 8006488: e015 b.n 80064b6 } /* UART in mode Transmitter (transmission end) -----------------------------*/ if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U)) 800648a: 69fb ldr r3, [r7, #28] 800648c: 2240 movs r2, #64 ; 0x40 800648e: 4013 ands r3, r2 8006490: d012 beq.n 80064b8 8006492: 69bb ldr r3, [r7, #24] 8006494: 2240 movs r2, #64 ; 0x40 8006496: 4013 ands r3, r2 8006498: d00e beq.n 80064b8 { UART_EndTransmit_IT(huart); 800649a: 687b ldr r3, [r7, #4] 800649c: 0018 movs r0, r3 800649e: f000 fd14 bl 8006eca return; 80064a2: 46c0 nop ; (mov r8, r8) 80064a4: e008 b.n 80064b8 return; 80064a6: 46c0 nop ; (mov r8, r8) 80064a8: e006 b.n 80064b8 return; 80064aa: 46c0 nop ; (mov r8, r8) 80064ac: e004 b.n 80064b8 return; 80064ae: 46c0 nop ; (mov r8, r8) 80064b0: e002 b.n 80064b8 return; 80064b2: 46c0 nop ; (mov r8, r8) 80064b4: e000 b.n 80064b8 return; 80064b6: 46c0 nop ; (mov r8, r8) } } 80064b8: 46bd mov sp, r7 80064ba: b008 add sp, #32 80064bc: bd80 pop {r7, pc} 80064be: 46c0 nop ; (mov r8, r8) 80064c0: fffffedf .word 0xfffffedf 080064c4 : * @brief UART error callback. * @param huart UART handle. * @retval None */ __weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) { 80064c4: b580 push {r7, lr} 80064c6: b082 sub sp, #8 80064c8: af00 add r7, sp, #0 80064ca: 6078 str r0, [r7, #4] UNUSED(huart); /* NOTE : This function should not be modified, when the callback is needed, the HAL_UART_ErrorCallback can be implemented in the user file. */ } 80064cc: 46c0 nop ; (mov r8, r8) 80064ce: 46bd mov sp, r7 80064d0: b002 add sp, #8 80064d2: bd80 pop {r7, pc} 080064d4 : * @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) { 80064d4: b580 push {r7, lr} 80064d6: b082 sub sp, #8 80064d8: af00 add r7, sp, #0 80064da: 6078 str r0, [r7, #4] 80064dc: 000a movs r2, r1 80064de: 1cbb adds r3, r7, #2 80064e0: 801a strh r2, [r3, #0] 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. */ } 80064e2: 46c0 nop ; (mov r8, r8) 80064e4: 46bd mov sp, r7 80064e6: b002 add sp, #8 80064e8: bd80 pop {r7, pc} ... 080064ec : * @brief Configure the UART peripheral. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) { 80064ec: b5b0 push {r4, r5, r7, lr} 80064ee: b08e sub sp, #56 ; 0x38 80064f0: af00 add r7, sp, #0 80064f2: 61f8 str r0, [r7, #28] uint32_t tmpreg; uint16_t brrtemp; UART_ClockSourceTypeDef clocksource; uint32_t usartdiv; HAL_StatusTypeDef ret = HAL_OK; 80064f4: 231a movs r3, #26 80064f6: 2218 movs r2, #24 80064f8: 4694 mov ip, r2 80064fa: 44bc add ip, r7 80064fc: 4463 add r3, ip 80064fe: 2200 movs r2, #0 8006500: 701a strb r2, [r3, #0] * 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 ; 8006502: 69fb ldr r3, [r7, #28] 8006504: 689a ldr r2, [r3, #8] 8006506: 69fb ldr r3, [r7, #28] 8006508: 691b ldr r3, [r3, #16] 800650a: 431a orrs r2, r3 800650c: 69fb ldr r3, [r7, #28] 800650e: 695b ldr r3, [r3, #20] 8006510: 431a orrs r2, r3 8006512: 69fb ldr r3, [r7, #28] 8006514: 69db ldr r3, [r3, #28] 8006516: 4313 orrs r3, r2 8006518: 637b str r3, [r7, #52] ; 0x34 MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg); 800651a: 69fb ldr r3, [r7, #28] 800651c: 681b ldr r3, [r3, #0] 800651e: 69fa ldr r2, [r7, #28] 8006520: 6812 ldr r2, [r2, #0] 8006522: 6812 ldr r2, [r2, #0] 8006524: 49c8 ldr r1, [pc, #800] ; (8006848 ) 8006526: 4011 ands r1, r2 8006528: 6b7a ldr r2, [r7, #52] ; 0x34 800652a: 430a orrs r2, r1 800652c: 601a str r2, [r3, #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); 800652e: 69fb ldr r3, [r7, #28] 8006530: 681b ldr r3, [r3, #0] 8006532: 69fa ldr r2, [r7, #28] 8006534: 6812 ldr r2, [r2, #0] 8006536: 6852 ldr r2, [r2, #4] 8006538: 49c4 ldr r1, [pc, #784] ; (800684c ) 800653a: 4011 ands r1, r2 800653c: 69fa ldr r2, [r7, #28] 800653e: 68d2 ldr r2, [r2, #12] 8006540: 430a orrs r2, r1 8006542: 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; 8006544: 69fb ldr r3, [r7, #28] 8006546: 699b ldr r3, [r3, #24] 8006548: 637b str r3, [r7, #52] ; 0x34 if (!(UART_INSTANCE_LOWPOWER(huart))) 800654a: 69fb ldr r3, [r7, #28] 800654c: 681b ldr r3, [r3, #0] 800654e: 4ac0 ldr r2, [pc, #768] ; (8006850 ) 8006550: 4293 cmp r3, r2 8006552: d004 beq.n 800655e { tmpreg |= huart->Init.OneBitSampling; 8006554: 69fb ldr r3, [r7, #28] 8006556: 6a1b ldr r3, [r3, #32] 8006558: 6b7a ldr r2, [r7, #52] ; 0x34 800655a: 4313 orrs r3, r2 800655c: 637b str r3, [r7, #52] ; 0x34 } MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg); 800655e: 69fb ldr r3, [r7, #28] 8006560: 681b ldr r3, [r3, #0] 8006562: 69fa ldr r2, [r7, #28] 8006564: 6812 ldr r2, [r2, #0] 8006566: 6892 ldr r2, [r2, #8] 8006568: 49ba ldr r1, [pc, #744] ; (8006854 ) 800656a: 4011 ands r1, r2 800656c: 6b7a ldr r2, [r7, #52] ; 0x34 800656e: 430a orrs r2, r1 8006570: 609a str r2, [r3, #8] /*-------------------------- USART BRR Configuration -----------------------*/ UART_GETCLOCKSOURCE(huart, clocksource); 8006572: 69fb ldr r3, [r7, #28] 8006574: 681b ldr r3, [r3, #0] 8006576: 4ab8 ldr r2, [pc, #736] ; (8006858 ) 8006578: 4293 cmp r3, r2 800657a: d134 bne.n 80065e6 800657c: 4bb7 ldr r3, [pc, #732] ; (800685c ) 800657e: 6cdb ldr r3, [r3, #76] ; 0x4c 8006580: 2203 movs r2, #3 8006582: 4013 ands r3, r2 8006584: 2b01 cmp r3, #1 8006586: d015 beq.n 80065b4 8006588: d304 bcc.n 8006594 800658a: 2b02 cmp r3, #2 800658c: d00a beq.n 80065a4 800658e: 2b03 cmp r3, #3 8006590: d018 beq.n 80065c4 8006592: e01f b.n 80065d4 8006594: 231b movs r3, #27 8006596: 2218 movs r2, #24 8006598: 4694 mov ip, r2 800659a: 44bc add ip, r7 800659c: 4463 add r3, ip 800659e: 2201 movs r2, #1 80065a0: 701a strb r2, [r3, #0] 80065a2: e0c5 b.n 8006730 80065a4: 231b movs r3, #27 80065a6: 2218 movs r2, #24 80065a8: 4694 mov ip, r2 80065aa: 44bc add ip, r7 80065ac: 4463 add r3, ip 80065ae: 2202 movs r2, #2 80065b0: 701a strb r2, [r3, #0] 80065b2: e0bd b.n 8006730 80065b4: 231b movs r3, #27 80065b6: 2218 movs r2, #24 80065b8: 4694 mov ip, r2 80065ba: 44bc add ip, r7 80065bc: 4463 add r3, ip 80065be: 2204 movs r2, #4 80065c0: 701a strb r2, [r3, #0] 80065c2: e0b5 b.n 8006730 80065c4: 231b movs r3, #27 80065c6: 2218 movs r2, #24 80065c8: 4694 mov ip, r2 80065ca: 44bc add ip, r7 80065cc: 4463 add r3, ip 80065ce: 2208 movs r2, #8 80065d0: 701a strb r2, [r3, #0] 80065d2: e0ad b.n 8006730 80065d4: 231b movs r3, #27 80065d6: 2218 movs r2, #24 80065d8: 4694 mov ip, r2 80065da: 44bc add ip, r7 80065dc: 4463 add r3, ip 80065de: 2210 movs r2, #16 80065e0: 701a strb r2, [r3, #0] 80065e2: 46c0 nop ; (mov r8, r8) 80065e4: e0a4 b.n 8006730 80065e6: 69fb ldr r3, [r7, #28] 80065e8: 681b ldr r3, [r3, #0] 80065ea: 4a9d ldr r2, [pc, #628] ; (8006860 ) 80065ec: 4293 cmp r3, r2 80065ee: d137 bne.n 8006660 80065f0: 4b9a ldr r3, [pc, #616] ; (800685c ) 80065f2: 6cdb ldr r3, [r3, #76] ; 0x4c 80065f4: 220c movs r2, #12 80065f6: 4013 ands r3, r2 80065f8: 2b04 cmp r3, #4 80065fa: d018 beq.n 800662e 80065fc: d802 bhi.n 8006604 80065fe: 2b00 cmp r3, #0 8006600: d005 beq.n 800660e 8006602: e024 b.n 800664e 8006604: 2b08 cmp r3, #8 8006606: d00a beq.n 800661e 8006608: 2b0c cmp r3, #12 800660a: d018 beq.n 800663e 800660c: e01f b.n 800664e 800660e: 231b movs r3, #27 8006610: 2218 movs r2, #24 8006612: 4694 mov ip, r2 8006614: 44bc add ip, r7 8006616: 4463 add r3, ip 8006618: 2200 movs r2, #0 800661a: 701a strb r2, [r3, #0] 800661c: e088 b.n 8006730 800661e: 231b movs r3, #27 8006620: 2218 movs r2, #24 8006622: 4694 mov ip, r2 8006624: 44bc add ip, r7 8006626: 4463 add r3, ip 8006628: 2202 movs r2, #2 800662a: 701a strb r2, [r3, #0] 800662c: e080 b.n 8006730 800662e: 231b movs r3, #27 8006630: 2218 movs r2, #24 8006632: 4694 mov ip, r2 8006634: 44bc add ip, r7 8006636: 4463 add r3, ip 8006638: 2204 movs r2, #4 800663a: 701a strb r2, [r3, #0] 800663c: e078 b.n 8006730 800663e: 231b movs r3, #27 8006640: 2218 movs r2, #24 8006642: 4694 mov ip, r2 8006644: 44bc add ip, r7 8006646: 4463 add r3, ip 8006648: 2208 movs r2, #8 800664a: 701a strb r2, [r3, #0] 800664c: e070 b.n 8006730 800664e: 231b movs r3, #27 8006650: 2218 movs r2, #24 8006652: 4694 mov ip, r2 8006654: 44bc add ip, r7 8006656: 4463 add r3, ip 8006658: 2210 movs r2, #16 800665a: 701a strb r2, [r3, #0] 800665c: 46c0 nop ; (mov r8, r8) 800665e: e067 b.n 8006730 8006660: 69fb ldr r3, [r7, #28] 8006662: 681b ldr r3, [r3, #0] 8006664: 4a7f ldr r2, [pc, #508] ; (8006864 ) 8006666: 4293 cmp r3, r2 8006668: d107 bne.n 800667a 800666a: 231b movs r3, #27 800666c: 2218 movs r2, #24 800666e: 4694 mov ip, r2 8006670: 44bc add ip, r7 8006672: 4463 add r3, ip 8006674: 2200 movs r2, #0 8006676: 701a strb r2, [r3, #0] 8006678: e05a b.n 8006730 800667a: 69fb ldr r3, [r7, #28] 800667c: 681b ldr r3, [r3, #0] 800667e: 4a7a ldr r2, [pc, #488] ; (8006868 ) 8006680: 4293 cmp r3, r2 8006682: d107 bne.n 8006694 8006684: 231b movs r3, #27 8006686: 2218 movs r2, #24 8006688: 4694 mov ip, r2 800668a: 44bc add ip, r7 800668c: 4463 add r3, ip 800668e: 2200 movs r2, #0 8006690: 701a strb r2, [r3, #0] 8006692: e04d b.n 8006730 8006694: 69fb ldr r3, [r7, #28] 8006696: 681b ldr r3, [r3, #0] 8006698: 4a6d ldr r2, [pc, #436] ; (8006850 ) 800669a: 4293 cmp r3, r2 800669c: d141 bne.n 8006722 800669e: 4b6f ldr r3, [pc, #444] ; (800685c ) 80066a0: 6cda ldr r2, [r3, #76] ; 0x4c 80066a2: 23c0 movs r3, #192 ; 0xc0 80066a4: 011b lsls r3, r3, #4 80066a6: 4013 ands r3, r2 80066a8: 2280 movs r2, #128 ; 0x80 80066aa: 00d2 lsls r2, r2, #3 80066ac: 4293 cmp r3, r2 80066ae: d01f beq.n 80066f0 80066b0: 2280 movs r2, #128 ; 0x80 80066b2: 00d2 lsls r2, r2, #3 80066b4: 4293 cmp r3, r2 80066b6: d802 bhi.n 80066be 80066b8: 2b00 cmp r3, #0 80066ba: d009 beq.n 80066d0 80066bc: e028 b.n 8006710 80066be: 2280 movs r2, #128 ; 0x80 80066c0: 0112 lsls r2, r2, #4 80066c2: 4293 cmp r3, r2 80066c4: d00c beq.n 80066e0 80066c6: 22c0 movs r2, #192 ; 0xc0 80066c8: 0112 lsls r2, r2, #4 80066ca: 4293 cmp r3, r2 80066cc: d018 beq.n 8006700 80066ce: e01f b.n 8006710 80066d0: 231b movs r3, #27 80066d2: 2218 movs r2, #24 80066d4: 4694 mov ip, r2 80066d6: 44bc add ip, r7 80066d8: 4463 add r3, ip 80066da: 2200 movs r2, #0 80066dc: 701a strb r2, [r3, #0] 80066de: e027 b.n 8006730 80066e0: 231b movs r3, #27 80066e2: 2218 movs r2, #24 80066e4: 4694 mov ip, r2 80066e6: 44bc add ip, r7 80066e8: 4463 add r3, ip 80066ea: 2202 movs r2, #2 80066ec: 701a strb r2, [r3, #0] 80066ee: e01f b.n 8006730 80066f0: 231b movs r3, #27 80066f2: 2218 movs r2, #24 80066f4: 4694 mov ip, r2 80066f6: 44bc add ip, r7 80066f8: 4463 add r3, ip 80066fa: 2204 movs r2, #4 80066fc: 701a strb r2, [r3, #0] 80066fe: e017 b.n 8006730 8006700: 231b movs r3, #27 8006702: 2218 movs r2, #24 8006704: 4694 mov ip, r2 8006706: 44bc add ip, r7 8006708: 4463 add r3, ip 800670a: 2208 movs r2, #8 800670c: 701a strb r2, [r3, #0] 800670e: e00f b.n 8006730 8006710: 231b movs r3, #27 8006712: 2218 movs r2, #24 8006714: 4694 mov ip, r2 8006716: 44bc add ip, r7 8006718: 4463 add r3, ip 800671a: 2210 movs r2, #16 800671c: 701a strb r2, [r3, #0] 800671e: 46c0 nop ; (mov r8, r8) 8006720: e006 b.n 8006730 8006722: 231b movs r3, #27 8006724: 2218 movs r2, #24 8006726: 4694 mov ip, r2 8006728: 44bc add ip, r7 800672a: 4463 add r3, ip 800672c: 2210 movs r2, #16 800672e: 701a strb r2, [r3, #0] /* Check LPUART instance */ if (UART_INSTANCE_LOWPOWER(huart)) 8006730: 69fb ldr r3, [r7, #28] 8006732: 681b ldr r3, [r3, #0] 8006734: 4a46 ldr r2, [pc, #280] ; (8006850 ) 8006736: 4293 cmp r3, r2 8006738: d000 beq.n 800673c 800673a: e09f b.n 800687c { /* Retrieve frequency clock */ switch (clocksource) 800673c: 231b movs r3, #27 800673e: 2218 movs r2, #24 8006740: 4694 mov ip, r2 8006742: 44bc add ip, r7 8006744: 4463 add r3, ip 8006746: 781b ldrb r3, [r3, #0] 8006748: 2b02 cmp r3, #2 800674a: d00d beq.n 8006768 800674c: dc02 bgt.n 8006754 800674e: 2b00 cmp r3, #0 8006750: d005 beq.n 800675e 8006752: e01d b.n 8006790 8006754: 2b04 cmp r3, #4 8006756: d012 beq.n 800677e 8006758: 2b08 cmp r3, #8 800675a: d015 beq.n 8006788 800675c: e018 b.n 8006790 { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); 800675e: f7fe ffd5 bl 800570c 8006762: 0003 movs r3, r0 8006764: 62fb str r3, [r7, #44] ; 0x2c break; 8006766: e01d b.n 80067a4 case UART_CLOCKSOURCE_HSI: if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) 8006768: 4b3c ldr r3, [pc, #240] ; (800685c ) 800676a: 681b ldr r3, [r3, #0] 800676c: 2210 movs r2, #16 800676e: 4013 ands r3, r2 8006770: d002 beq.n 8006778 { pclk = (uint32_t)(HSI_VALUE >> 2U); 8006772: 4b3e ldr r3, [pc, #248] ; (800686c ) 8006774: 62fb str r3, [r7, #44] ; 0x2c } else { pclk = (uint32_t) HSI_VALUE; } break; 8006776: e015 b.n 80067a4 pclk = (uint32_t) HSI_VALUE; 8006778: 4b3d ldr r3, [pc, #244] ; (8006870 ) 800677a: 62fb str r3, [r7, #44] ; 0x2c break; 800677c: e012 b.n 80067a4 case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); 800677e: f7fe ff19 bl 80055b4 8006782: 0003 movs r3, r0 8006784: 62fb str r3, [r7, #44] ; 0x2c break; 8006786: e00d b.n 80067a4 case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; 8006788: 2380 movs r3, #128 ; 0x80 800678a: 021b lsls r3, r3, #8 800678c: 62fb str r3, [r7, #44] ; 0x2c break; 800678e: e009 b.n 80067a4 default: pclk = 0U; 8006790: 2300 movs r3, #0 8006792: 62fb str r3, [r7, #44] ; 0x2c ret = HAL_ERROR; 8006794: 231a movs r3, #26 8006796: 2218 movs r2, #24 8006798: 4694 mov ip, r2 800679a: 44bc add ip, r7 800679c: 4463 add r3, ip 800679e: 2201 movs r2, #1 80067a0: 701a strb r2, [r3, #0] break; 80067a2: 46c0 nop ; (mov r8, r8) } /* If proper clock source reported */ if (pclk != 0U) 80067a4: 6afb ldr r3, [r7, #44] ; 0x2c 80067a6: 2b00 cmp r3, #0 80067a8: d100 bne.n 80067ac 80067aa: e145 b.n 8006a38 { /* No Prescaler applicable */ /* Ensure that Frequency clock is in the range [3 * baudrate, 4096 * baudrate] */ if ((pclk < (3U * huart->Init.BaudRate)) || 80067ac: 69fb ldr r3, [r7, #28] 80067ae: 685a ldr r2, [r3, #4] 80067b0: 0013 movs r3, r2 80067b2: 005b lsls r3, r3, #1 80067b4: 189a adds r2, r3, r2 80067b6: 6afb ldr r3, [r7, #44] ; 0x2c 80067b8: 429a cmp r2, r3 80067ba: d805 bhi.n 80067c8 (pclk > (4096U * huart->Init.BaudRate))) 80067bc: 69fb ldr r3, [r7, #28] 80067be: 685b ldr r3, [r3, #4] 80067c0: 031a lsls r2, r3, #12 if ((pclk < (3U * huart->Init.BaudRate)) || 80067c2: 6afb ldr r3, [r7, #44] ; 0x2c 80067c4: 429a cmp r2, r3 80067c6: d207 bcs.n 80067d8 { ret = HAL_ERROR; 80067c8: 231a movs r3, #26 80067ca: 2218 movs r2, #24 80067cc: 4694 mov ip, r2 80067ce: 44bc add ip, r7 80067d0: 4463 add r3, ip 80067d2: 2201 movs r2, #1 80067d4: 701a strb r2, [r3, #0] 80067d6: e12f b.n 8006a38 } else { usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate)); 80067d8: 6afb ldr r3, [r7, #44] ; 0x2c 80067da: 613b str r3, [r7, #16] 80067dc: 2300 movs r3, #0 80067de: 617b str r3, [r7, #20] 80067e0: 6939 ldr r1, [r7, #16] 80067e2: 697a ldr r2, [r7, #20] 80067e4: 000b movs r3, r1 80067e6: 0e1b lsrs r3, r3, #24 80067e8: 0010 movs r0, r2 80067ea: 0205 lsls r5, r0, #8 80067ec: 431d orrs r5, r3 80067ee: 000b movs r3, r1 80067f0: 021c lsls r4, r3, #8 80067f2: 69fb ldr r3, [r7, #28] 80067f4: 685b ldr r3, [r3, #4] 80067f6: 085b lsrs r3, r3, #1 80067f8: 60bb str r3, [r7, #8] 80067fa: 2300 movs r3, #0 80067fc: 60fb str r3, [r7, #12] 80067fe: 68b8 ldr r0, [r7, #8] 8006800: 68f9 ldr r1, [r7, #12] 8006802: 1900 adds r0, r0, r4 8006804: 4169 adcs r1, r5 8006806: 69fb ldr r3, [r7, #28] 8006808: 685b ldr r3, [r3, #4] 800680a: 603b str r3, [r7, #0] 800680c: 2300 movs r3, #0 800680e: 607b str r3, [r7, #4] 8006810: 683a ldr r2, [r7, #0] 8006812: 687b ldr r3, [r7, #4] 8006814: f7f9 fd7c bl 8000310 <__aeabi_uldivmod> 8006818: 0003 movs r3, r0 800681a: 000c movs r4, r1 800681c: 62bb str r3, [r7, #40] ; 0x28 if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX)) 800681e: 6abb ldr r3, [r7, #40] ; 0x28 8006820: 4a14 ldr r2, [pc, #80] ; (8006874 ) 8006822: 4293 cmp r3, r2 8006824: d908 bls.n 8006838 8006826: 6abb ldr r3, [r7, #40] ; 0x28 8006828: 4a13 ldr r2, [pc, #76] ; (8006878 ) 800682a: 4293 cmp r3, r2 800682c: d804 bhi.n 8006838 { huart->Instance->BRR = usartdiv; 800682e: 69fb ldr r3, [r7, #28] 8006830: 681b ldr r3, [r3, #0] 8006832: 6aba ldr r2, [r7, #40] ; 0x28 8006834: 60da str r2, [r3, #12] 8006836: e0ff b.n 8006a38 } else { ret = HAL_ERROR; 8006838: 231a movs r3, #26 800683a: 2218 movs r2, #24 800683c: 4694 mov ip, r2 800683e: 44bc add ip, r7 8006840: 4463 add r3, ip 8006842: 2201 movs r2, #1 8006844: 701a strb r2, [r3, #0] 8006846: e0f7 b.n 8006a38 8006848: efff69f3 .word 0xefff69f3 800684c: ffffcfff .word 0xffffcfff 8006850: 40004800 .word 0x40004800 8006854: fffff4ff .word 0xfffff4ff 8006858: 40013800 .word 0x40013800 800685c: 40021000 .word 0x40021000 8006860: 40004400 .word 0x40004400 8006864: 40004c00 .word 0x40004c00 8006868: 40005000 .word 0x40005000 800686c: 003d0900 .word 0x003d0900 8006870: 00f42400 .word 0x00f42400 8006874: 000002ff .word 0x000002ff 8006878: 000fffff .word 0x000fffff } } /* if ( (pclk < (3 * huart->Init.BaudRate) ) || (pclk > (4096 * huart->Init.BaudRate) )) */ } /* if (pclk != 0) */ } /* Check UART Over Sampling to set Baud Rate Register */ else if (huart->Init.OverSampling == UART_OVERSAMPLING_8) 800687c: 69fb ldr r3, [r7, #28] 800687e: 69da ldr r2, [r3, #28] 8006880: 2380 movs r3, #128 ; 0x80 8006882: 021b lsls r3, r3, #8 8006884: 429a cmp r2, r3 8006886: d000 beq.n 800688a 8006888: e07d b.n 8006986 { switch (clocksource) 800688a: 231b movs r3, #27 800688c: 2218 movs r2, #24 800688e: 4694 mov ip, r2 8006890: 44bc add ip, r7 8006892: 4463 add r3, ip 8006894: 781b ldrb r3, [r3, #0] 8006896: 2b08 cmp r3, #8 8006898: d822 bhi.n 80068e0 800689a: 009a lsls r2, r3, #2 800689c: 4b6e ldr r3, [pc, #440] ; (8006a58 ) 800689e: 18d3 adds r3, r2, r3 80068a0: 681b ldr r3, [r3, #0] 80068a2: 469f mov pc, r3 { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); 80068a4: f7fe ff32 bl 800570c 80068a8: 0003 movs r3, r0 80068aa: 62fb str r3, [r7, #44] ; 0x2c break; 80068ac: e022 b.n 80068f4 case UART_CLOCKSOURCE_PCLK2: pclk = HAL_RCC_GetPCLK2Freq(); 80068ae: f7fe ff43 bl 8005738 80068b2: 0003 movs r3, r0 80068b4: 62fb str r3, [r7, #44] ; 0x2c break; 80068b6: e01d b.n 80068f4 case UART_CLOCKSOURCE_HSI: if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) 80068b8: 4b68 ldr r3, [pc, #416] ; (8006a5c ) 80068ba: 681b ldr r3, [r3, #0] 80068bc: 2210 movs r2, #16 80068be: 4013 ands r3, r2 80068c0: d002 beq.n 80068c8 { pclk = (uint32_t)(HSI_VALUE >> 2U); 80068c2: 4b67 ldr r3, [pc, #412] ; (8006a60 ) 80068c4: 62fb str r3, [r7, #44] ; 0x2c } else { pclk = (uint32_t) HSI_VALUE; } break; 80068c6: e015 b.n 80068f4 pclk = (uint32_t) HSI_VALUE; 80068c8: 4b66 ldr r3, [pc, #408] ; (8006a64 ) 80068ca: 62fb str r3, [r7, #44] ; 0x2c break; 80068cc: e012 b.n 80068f4 case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); 80068ce: f7fe fe71 bl 80055b4 80068d2: 0003 movs r3, r0 80068d4: 62fb str r3, [r7, #44] ; 0x2c break; 80068d6: e00d b.n 80068f4 case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; 80068d8: 2380 movs r3, #128 ; 0x80 80068da: 021b lsls r3, r3, #8 80068dc: 62fb str r3, [r7, #44] ; 0x2c break; 80068de: e009 b.n 80068f4 default: pclk = 0U; 80068e0: 2300 movs r3, #0 80068e2: 62fb str r3, [r7, #44] ; 0x2c ret = HAL_ERROR; 80068e4: 231a movs r3, #26 80068e6: 2218 movs r2, #24 80068e8: 4694 mov ip, r2 80068ea: 44bc add ip, r7 80068ec: 4463 add r3, ip 80068ee: 2201 movs r2, #1 80068f0: 701a strb r2, [r3, #0] break; 80068f2: 46c0 nop ; (mov r8, r8) } /* USARTDIV must be greater than or equal to 0d16 */ if (pclk != 0U) 80068f4: 6afb ldr r3, [r7, #44] ; 0x2c 80068f6: 2b00 cmp r3, #0 80068f8: d100 bne.n 80068fc 80068fa: e09d b.n 8006a38 { usartdiv = (uint16_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate)); 80068fc: 6afb ldr r3, [r7, #44] ; 0x2c 80068fe: 005a lsls r2, r3, #1 8006900: 69fb ldr r3, [r7, #28] 8006902: 685b ldr r3, [r3, #4] 8006904: 085b lsrs r3, r3, #1 8006906: 18d2 adds r2, r2, r3 8006908: 69fb ldr r3, [r7, #28] 800690a: 685b ldr r3, [r3, #4] 800690c: 0019 movs r1, r3 800690e: 0010 movs r0, r2 8006910: f7f9 fbfa bl 8000108 <__udivsi3> 8006914: 0003 movs r3, r0 8006916: b29b uxth r3, r3 8006918: 62bb str r3, [r7, #40] ; 0x28 if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) 800691a: 6abb ldr r3, [r7, #40] ; 0x28 800691c: 2b0f cmp r3, #15 800691e: d92a bls.n 8006976 8006920: 6abb ldr r3, [r7, #40] ; 0x28 8006922: 4a51 ldr r2, [pc, #324] ; (8006a68 ) 8006924: 4293 cmp r3, r2 8006926: d826 bhi.n 8006976 { brrtemp = (uint16_t)(usartdiv & 0xFFF0U); 8006928: 6abb ldr r3, [r7, #40] ; 0x28 800692a: b29a uxth r2, r3 800692c: 230e movs r3, #14 800692e: 2118 movs r1, #24 8006930: 468c mov ip, r1 8006932: 44bc add ip, r7 8006934: 4463 add r3, ip 8006936: 210f movs r1, #15 8006938: 438a bics r2, r1 800693a: 801a strh r2, [r3, #0] brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); 800693c: 6abb ldr r3, [r7, #40] ; 0x28 800693e: 085b lsrs r3, r3, #1 8006940: b29b uxth r3, r3 8006942: 2207 movs r2, #7 8006944: 4013 ands r3, r2 8006946: b299 uxth r1, r3 8006948: 230e movs r3, #14 800694a: 2218 movs r2, #24 800694c: 4694 mov ip, r2 800694e: 44bc add ip, r7 8006950: 4463 add r3, ip 8006952: 220e movs r2, #14 8006954: 2018 movs r0, #24 8006956: 4684 mov ip, r0 8006958: 44bc add ip, r7 800695a: 4462 add r2, ip 800695c: 8812 ldrh r2, [r2, #0] 800695e: 430a orrs r2, r1 8006960: 801a strh r2, [r3, #0] huart->Instance->BRR = brrtemp; 8006962: 69fb ldr r3, [r7, #28] 8006964: 681b ldr r3, [r3, #0] 8006966: 220e movs r2, #14 8006968: 2118 movs r1, #24 800696a: 468c mov ip, r1 800696c: 44bc add ip, r7 800696e: 4462 add r2, ip 8006970: 8812 ldrh r2, [r2, #0] 8006972: 60da str r2, [r3, #12] 8006974: e060 b.n 8006a38 } else { ret = HAL_ERROR; 8006976: 231a movs r3, #26 8006978: 2218 movs r2, #24 800697a: 4694 mov ip, r2 800697c: 44bc add ip, r7 800697e: 4463 add r3, ip 8006980: 2201 movs r2, #1 8006982: 701a strb r2, [r3, #0] 8006984: e058 b.n 8006a38 } } } else { switch (clocksource) 8006986: 231b movs r3, #27 8006988: 2218 movs r2, #24 800698a: 4694 mov ip, r2 800698c: 44bc add ip, r7 800698e: 4463 add r3, ip 8006990: 781b ldrb r3, [r3, #0] 8006992: 2b08 cmp r3, #8 8006994: d822 bhi.n 80069dc 8006996: 009a lsls r2, r3, #2 8006998: 4b34 ldr r3, [pc, #208] ; (8006a6c ) 800699a: 18d3 adds r3, r2, r3 800699c: 681b ldr r3, [r3, #0] 800699e: 469f mov pc, r3 { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); 80069a0: f7fe feb4 bl 800570c 80069a4: 0003 movs r3, r0 80069a6: 62fb str r3, [r7, #44] ; 0x2c break; 80069a8: e022 b.n 80069f0 case UART_CLOCKSOURCE_PCLK2: pclk = HAL_RCC_GetPCLK2Freq(); 80069aa: f7fe fec5 bl 8005738 80069ae: 0003 movs r3, r0 80069b0: 62fb str r3, [r7, #44] ; 0x2c break; 80069b2: e01d b.n 80069f0 case UART_CLOCKSOURCE_HSI: if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) 80069b4: 4b29 ldr r3, [pc, #164] ; (8006a5c ) 80069b6: 681b ldr r3, [r3, #0] 80069b8: 2210 movs r2, #16 80069ba: 4013 ands r3, r2 80069bc: d002 beq.n 80069c4 { pclk = (uint32_t)(HSI_VALUE >> 2U); 80069be: 4b28 ldr r3, [pc, #160] ; (8006a60 ) 80069c0: 62fb str r3, [r7, #44] ; 0x2c } else { pclk = (uint32_t) HSI_VALUE; } break; 80069c2: e015 b.n 80069f0 pclk = (uint32_t) HSI_VALUE; 80069c4: 4b27 ldr r3, [pc, #156] ; (8006a64 ) 80069c6: 62fb str r3, [r7, #44] ; 0x2c break; 80069c8: e012 b.n 80069f0 case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); 80069ca: f7fe fdf3 bl 80055b4 80069ce: 0003 movs r3, r0 80069d0: 62fb str r3, [r7, #44] ; 0x2c break; 80069d2: e00d b.n 80069f0 case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; 80069d4: 2380 movs r3, #128 ; 0x80 80069d6: 021b lsls r3, r3, #8 80069d8: 62fb str r3, [r7, #44] ; 0x2c break; 80069da: e009 b.n 80069f0 default: pclk = 0U; 80069dc: 2300 movs r3, #0 80069de: 62fb str r3, [r7, #44] ; 0x2c ret = HAL_ERROR; 80069e0: 231a movs r3, #26 80069e2: 2218 movs r2, #24 80069e4: 4694 mov ip, r2 80069e6: 44bc add ip, r7 80069e8: 4463 add r3, ip 80069ea: 2201 movs r2, #1 80069ec: 701a strb r2, [r3, #0] break; 80069ee: 46c0 nop ; (mov r8, r8) } if (pclk != 0U) 80069f0: 6afb ldr r3, [r7, #44] ; 0x2c 80069f2: 2b00 cmp r3, #0 80069f4: d020 beq.n 8006a38 { /* USARTDIV must be greater than or equal to 0d16 */ usartdiv = (uint16_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate)); 80069f6: 69fb ldr r3, [r7, #28] 80069f8: 685b ldr r3, [r3, #4] 80069fa: 085a lsrs r2, r3, #1 80069fc: 6afb ldr r3, [r7, #44] ; 0x2c 80069fe: 18d2 adds r2, r2, r3 8006a00: 69fb ldr r3, [r7, #28] 8006a02: 685b ldr r3, [r3, #4] 8006a04: 0019 movs r1, r3 8006a06: 0010 movs r0, r2 8006a08: f7f9 fb7e bl 8000108 <__udivsi3> 8006a0c: 0003 movs r3, r0 8006a0e: b29b uxth r3, r3 8006a10: 62bb str r3, [r7, #40] ; 0x28 if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) 8006a12: 6abb ldr r3, [r7, #40] ; 0x28 8006a14: 2b0f cmp r3, #15 8006a16: d908 bls.n 8006a2a 8006a18: 6abb ldr r3, [r7, #40] ; 0x28 8006a1a: 4a13 ldr r2, [pc, #76] ; (8006a68 ) 8006a1c: 4293 cmp r3, r2 8006a1e: d804 bhi.n 8006a2a { huart->Instance->BRR = usartdiv; 8006a20: 69fb ldr r3, [r7, #28] 8006a22: 681b ldr r3, [r3, #0] 8006a24: 6aba ldr r2, [r7, #40] ; 0x28 8006a26: 60da str r2, [r3, #12] 8006a28: e006 b.n 8006a38 } else { ret = HAL_ERROR; 8006a2a: 231a movs r3, #26 8006a2c: 2218 movs r2, #24 8006a2e: 4694 mov ip, r2 8006a30: 44bc add ip, r7 8006a32: 4463 add r3, ip 8006a34: 2201 movs r2, #1 8006a36: 701a strb r2, [r3, #0] } } /* Clear ISR function pointers */ huart->RxISR = NULL; 8006a38: 69fb ldr r3, [r7, #28] 8006a3a: 2200 movs r2, #0 8006a3c: 665a str r2, [r3, #100] ; 0x64 huart->TxISR = NULL; 8006a3e: 69fb ldr r3, [r7, #28] 8006a40: 2200 movs r2, #0 8006a42: 669a str r2, [r3, #104] ; 0x68 return ret; 8006a44: 231a movs r3, #26 8006a46: 2218 movs r2, #24 8006a48: 4694 mov ip, r2 8006a4a: 44bc add ip, r7 8006a4c: 4463 add r3, ip 8006a4e: 781b ldrb r3, [r3, #0] } 8006a50: 0018 movs r0, r3 8006a52: 46bd mov sp, r7 8006a54: b00e add sp, #56 ; 0x38 8006a56: bdb0 pop {r4, r5, r7, pc} 8006a58: 08007444 .word 0x08007444 8006a5c: 40021000 .word 0x40021000 8006a60: 003d0900 .word 0x003d0900 8006a64: 00f42400 .word 0x00f42400 8006a68: 0000ffff .word 0x0000ffff 8006a6c: 08007468 .word 0x08007468 08006a70 : * @brief Configure the UART peripheral advanced features. * @param huart UART handle. * @retval None */ void UART_AdvFeatureConfig(UART_HandleTypeDef *huart) { 8006a70: b580 push {r7, lr} 8006a72: b082 sub sp, #8 8006a74: af00 add r7, sp, #0 8006a76: 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)) 8006a78: 687b ldr r3, [r7, #4] 8006a7a: 6a5b ldr r3, [r3, #36] ; 0x24 8006a7c: 2201 movs r2, #1 8006a7e: 4013 ands r3, r2 8006a80: d00a beq.n 8006a98 { assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); 8006a82: 687b ldr r3, [r7, #4] 8006a84: 681b ldr r3, [r3, #0] 8006a86: 687a ldr r2, [r7, #4] 8006a88: 6812 ldr r2, [r2, #0] 8006a8a: 6852 ldr r2, [r2, #4] 8006a8c: 4945 ldr r1, [pc, #276] ; (8006ba4 ) 8006a8e: 4011 ands r1, r2 8006a90: 687a ldr r2, [r7, #4] 8006a92: 6a92 ldr r2, [r2, #40] ; 0x28 8006a94: 430a orrs r2, r1 8006a96: 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)) 8006a98: 687b ldr r3, [r7, #4] 8006a9a: 6a5b ldr r3, [r3, #36] ; 0x24 8006a9c: 2202 movs r2, #2 8006a9e: 4013 ands r3, r2 8006aa0: d00a beq.n 8006ab8 { assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); 8006aa2: 687b ldr r3, [r7, #4] 8006aa4: 681b ldr r3, [r3, #0] 8006aa6: 687a ldr r2, [r7, #4] 8006aa8: 6812 ldr r2, [r2, #0] 8006aaa: 6852 ldr r2, [r2, #4] 8006aac: 493e ldr r1, [pc, #248] ; (8006ba8 ) 8006aae: 4011 ands r1, r2 8006ab0: 687a ldr r2, [r7, #4] 8006ab2: 6ad2 ldr r2, [r2, #44] ; 0x2c 8006ab4: 430a orrs r2, r1 8006ab6: 605a str r2, [r3, #4] } /* if required, configure data inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) 8006ab8: 687b ldr r3, [r7, #4] 8006aba: 6a5b ldr r3, [r3, #36] ; 0x24 8006abc: 2204 movs r2, #4 8006abe: 4013 ands r3, r2 8006ac0: d00a beq.n 8006ad8 { assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); 8006ac2: 687b ldr r3, [r7, #4] 8006ac4: 681b ldr r3, [r3, #0] 8006ac6: 687a ldr r2, [r7, #4] 8006ac8: 6812 ldr r2, [r2, #0] 8006aca: 6852 ldr r2, [r2, #4] 8006acc: 4937 ldr r1, [pc, #220] ; (8006bac ) 8006ace: 4011 ands r1, r2 8006ad0: 687a ldr r2, [r7, #4] 8006ad2: 6b12 ldr r2, [r2, #48] ; 0x30 8006ad4: 430a orrs r2, r1 8006ad6: 605a str r2, [r3, #4] } /* if required, configure RX/TX pins swap */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) 8006ad8: 687b ldr r3, [r7, #4] 8006ada: 6a5b ldr r3, [r3, #36] ; 0x24 8006adc: 2208 movs r2, #8 8006ade: 4013 ands r3, r2 8006ae0: d00a beq.n 8006af8 { assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap)); MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); 8006ae2: 687b ldr r3, [r7, #4] 8006ae4: 681b ldr r3, [r3, #0] 8006ae6: 687a ldr r2, [r7, #4] 8006ae8: 6812 ldr r2, [r2, #0] 8006aea: 6852 ldr r2, [r2, #4] 8006aec: 4930 ldr r1, [pc, #192] ; (8006bb0 ) 8006aee: 4011 ands r1, r2 8006af0: 687a ldr r2, [r7, #4] 8006af2: 6b52 ldr r2, [r2, #52] ; 0x34 8006af4: 430a orrs r2, r1 8006af6: 605a str r2, [r3, #4] } /* if required, configure RX overrun detection disabling */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) 8006af8: 687b ldr r3, [r7, #4] 8006afa: 6a5b ldr r3, [r3, #36] ; 0x24 8006afc: 2210 movs r2, #16 8006afe: 4013 ands r3, r2 8006b00: d00a beq.n 8006b18 { assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable)); MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); 8006b02: 687b ldr r3, [r7, #4] 8006b04: 681b ldr r3, [r3, #0] 8006b06: 687a ldr r2, [r7, #4] 8006b08: 6812 ldr r2, [r2, #0] 8006b0a: 6892 ldr r2, [r2, #8] 8006b0c: 4929 ldr r1, [pc, #164] ; (8006bb4 ) 8006b0e: 4011 ands r1, r2 8006b10: 687a ldr r2, [r7, #4] 8006b12: 6b92 ldr r2, [r2, #56] ; 0x38 8006b14: 430a orrs r2, r1 8006b16: 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)) 8006b18: 687b ldr r3, [r7, #4] 8006b1a: 6a5b ldr r3, [r3, #36] ; 0x24 8006b1c: 2220 movs r2, #32 8006b1e: 4013 ands r3, r2 8006b20: d00a beq.n 8006b38 { assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError)); MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); 8006b22: 687b ldr r3, [r7, #4] 8006b24: 681b ldr r3, [r3, #0] 8006b26: 687a ldr r2, [r7, #4] 8006b28: 6812 ldr r2, [r2, #0] 8006b2a: 6892 ldr r2, [r2, #8] 8006b2c: 4922 ldr r1, [pc, #136] ; (8006bb8 ) 8006b2e: 4011 ands r1, r2 8006b30: 687a ldr r2, [r7, #4] 8006b32: 6bd2 ldr r2, [r2, #60] ; 0x3c 8006b34: 430a orrs r2, r1 8006b36: 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)) 8006b38: 687b ldr r3, [r7, #4] 8006b3a: 6a5b ldr r3, [r3, #36] ; 0x24 8006b3c: 2240 movs r2, #64 ; 0x40 8006b3e: 4013 ands r3, r2 8006b40: d01b beq.n 8006b7a { 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); 8006b42: 687b ldr r3, [r7, #4] 8006b44: 681b ldr r3, [r3, #0] 8006b46: 687a ldr r2, [r7, #4] 8006b48: 6812 ldr r2, [r2, #0] 8006b4a: 6852 ldr r2, [r2, #4] 8006b4c: 491b ldr r1, [pc, #108] ; (8006bbc ) 8006b4e: 4011 ands r1, r2 8006b50: 687a ldr r2, [r7, #4] 8006b52: 6c12 ldr r2, [r2, #64] ; 0x40 8006b54: 430a orrs r2, r1 8006b56: 605a str r2, [r3, #4] /* set auto Baudrate detection parameters if detection is enabled */ if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) 8006b58: 687b ldr r3, [r7, #4] 8006b5a: 6c1a ldr r2, [r3, #64] ; 0x40 8006b5c: 2380 movs r3, #128 ; 0x80 8006b5e: 035b lsls r3, r3, #13 8006b60: 429a cmp r2, r3 8006b62: d10a bne.n 8006b7a { assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode)); MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); 8006b64: 687b ldr r3, [r7, #4] 8006b66: 681b ldr r3, [r3, #0] 8006b68: 687a ldr r2, [r7, #4] 8006b6a: 6812 ldr r2, [r2, #0] 8006b6c: 6852 ldr r2, [r2, #4] 8006b6e: 4914 ldr r1, [pc, #80] ; (8006bc0 ) 8006b70: 4011 ands r1, r2 8006b72: 687a ldr r2, [r7, #4] 8006b74: 6c52 ldr r2, [r2, #68] ; 0x44 8006b76: 430a orrs r2, r1 8006b78: 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)) 8006b7a: 687b ldr r3, [r7, #4] 8006b7c: 6a5b ldr r3, [r3, #36] ; 0x24 8006b7e: 2280 movs r2, #128 ; 0x80 8006b80: 4013 ands r3, r2 8006b82: d00a beq.n 8006b9a { assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst)); MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); 8006b84: 687b ldr r3, [r7, #4] 8006b86: 681b ldr r3, [r3, #0] 8006b88: 687a ldr r2, [r7, #4] 8006b8a: 6812 ldr r2, [r2, #0] 8006b8c: 6852 ldr r2, [r2, #4] 8006b8e: 490d ldr r1, [pc, #52] ; (8006bc4 ) 8006b90: 4011 ands r1, r2 8006b92: 687a ldr r2, [r7, #4] 8006b94: 6c92 ldr r2, [r2, #72] ; 0x48 8006b96: 430a orrs r2, r1 8006b98: 605a str r2, [r3, #4] } } 8006b9a: 46c0 nop ; (mov r8, r8) 8006b9c: 46bd mov sp, r7 8006b9e: b002 add sp, #8 8006ba0: bd80 pop {r7, pc} 8006ba2: 46c0 nop ; (mov r8, r8) 8006ba4: fffdffff .word 0xfffdffff 8006ba8: fffeffff .word 0xfffeffff 8006bac: fffbffff .word 0xfffbffff 8006bb0: ffff7fff .word 0xffff7fff 8006bb4: ffffefff .word 0xffffefff 8006bb8: ffffdfff .word 0xffffdfff 8006bbc: ffefffff .word 0xffefffff 8006bc0: ff9fffff .word 0xff9fffff 8006bc4: fff7ffff .word 0xfff7ffff 08006bc8 : * @brief Check the UART Idle State. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart) { 8006bc8: b580 push {r7, lr} 8006bca: b086 sub sp, #24 8006bcc: af02 add r7, sp, #8 8006bce: 6078 str r0, [r7, #4] uint32_t tickstart; /* Initialize the UART ErrorCode */ huart->ErrorCode = HAL_UART_ERROR_NONE; 8006bd0: 687b ldr r3, [r7, #4] 8006bd2: 2280 movs r2, #128 ; 0x80 8006bd4: 2100 movs r1, #0 8006bd6: 5099 str r1, [r3, r2] /* Init tickstart for timeout management */ tickstart = HAL_GetTick(); 8006bd8: f7fd f9a8 bl 8003f2c 8006bdc: 0003 movs r3, r0 8006bde: 60fb str r3, [r7, #12] /* Check if the Transmitter is enabled */ if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) 8006be0: 687b ldr r3, [r7, #4] 8006be2: 681b ldr r3, [r3, #0] 8006be4: 681b ldr r3, [r3, #0] 8006be6: 2208 movs r2, #8 8006be8: 4013 ands r3, r2 8006bea: 2b08 cmp r3, #8 8006bec: d10d bne.n 8006c0a { /* Wait until TEACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) 8006bee: 68fa ldr r2, [r7, #12] 8006bf0: 2380 movs r3, #128 ; 0x80 8006bf2: 0399 lsls r1, r3, #14 8006bf4: 6878 ldr r0, [r7, #4] 8006bf6: 4b18 ldr r3, [pc, #96] ; (8006c58 ) 8006bf8: 9300 str r3, [sp, #0] 8006bfa: 0013 movs r3, r2 8006bfc: 2200 movs r2, #0 8006bfe: f000 f82d bl 8006c5c 8006c02: 1e03 subs r3, r0, #0 8006c04: d001 beq.n 8006c0a { /* Timeout occurred */ return HAL_TIMEOUT; 8006c06: 2303 movs r3, #3 8006c08: e022 b.n 8006c50 } } /* Check if the Receiver is enabled */ if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) 8006c0a: 687b ldr r3, [r7, #4] 8006c0c: 681b ldr r3, [r3, #0] 8006c0e: 681b ldr r3, [r3, #0] 8006c10: 2204 movs r2, #4 8006c12: 4013 ands r3, r2 8006c14: 2b04 cmp r3, #4 8006c16: d10d bne.n 8006c34 { /* Wait until REACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) 8006c18: 68fa ldr r2, [r7, #12] 8006c1a: 2380 movs r3, #128 ; 0x80 8006c1c: 03d9 lsls r1, r3, #15 8006c1e: 6878 ldr r0, [r7, #4] 8006c20: 4b0d ldr r3, [pc, #52] ; (8006c58 ) 8006c22: 9300 str r3, [sp, #0] 8006c24: 0013 movs r3, r2 8006c26: 2200 movs r2, #0 8006c28: f000 f818 bl 8006c5c 8006c2c: 1e03 subs r3, r0, #0 8006c2e: d001 beq.n 8006c34 { /* Timeout occurred */ return HAL_TIMEOUT; 8006c30: 2303 movs r3, #3 8006c32: e00d b.n 8006c50 } } /* Initialize the UART State */ huart->gState = HAL_UART_STATE_READY; 8006c34: 687b ldr r3, [r7, #4] 8006c36: 2220 movs r2, #32 8006c38: 679a str r2, [r3, #120] ; 0x78 huart->RxState = HAL_UART_STATE_READY; 8006c3a: 687b ldr r3, [r7, #4] 8006c3c: 2220 movs r2, #32 8006c3e: 67da str r2, [r3, #124] ; 0x7c huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; 8006c40: 687b ldr r3, [r7, #4] 8006c42: 2200 movs r2, #0 8006c44: 661a str r2, [r3, #96] ; 0x60 __HAL_UNLOCK(huart); 8006c46: 687b ldr r3, [r7, #4] 8006c48: 2274 movs r2, #116 ; 0x74 8006c4a: 2100 movs r1, #0 8006c4c: 5499 strb r1, [r3, r2] return HAL_OK; 8006c4e: 2300 movs r3, #0 } 8006c50: 0018 movs r0, r3 8006c52: 46bd mov sp, r7 8006c54: b004 add sp, #16 8006c56: bd80 pop {r7, pc} 8006c58: 01ffffff .word 0x01ffffff 08006c5c : * @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) { 8006c5c: b580 push {r7, lr} 8006c5e: b084 sub sp, #16 8006c60: af00 add r7, sp, #0 8006c62: 60f8 str r0, [r7, #12] 8006c64: 60b9 str r1, [r7, #8] 8006c66: 603b str r3, [r7, #0] 8006c68: 1dfb adds r3, r7, #7 8006c6a: 701a strb r2, [r3, #0] /* Wait until flag is set */ while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) 8006c6c: e05e b.n 8006d2c { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) 8006c6e: 69bb ldr r3, [r7, #24] 8006c70: 3301 adds r3, #1 8006c72: d05b beq.n 8006d2c { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) 8006c74: f7fd f95a bl 8003f2c 8006c78: 0002 movs r2, r0 8006c7a: 683b ldr r3, [r7, #0] 8006c7c: 1ad2 subs r2, r2, r3 8006c7e: 69bb ldr r3, [r7, #24] 8006c80: 429a cmp r2, r3 8006c82: d802 bhi.n 8006c8a 8006c84: 69bb ldr r3, [r7, #24] 8006c86: 2b00 cmp r3, #0 8006c88: d11b bne.n 8006cc2 { /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */ CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); 8006c8a: 68fb ldr r3, [r7, #12] 8006c8c: 681b ldr r3, [r3, #0] 8006c8e: 68fa ldr r2, [r7, #12] 8006c90: 6812 ldr r2, [r2, #0] 8006c92: 6812 ldr r2, [r2, #0] 8006c94: 492f ldr r1, [pc, #188] ; (8006d54 ) 8006c96: 400a ands r2, r1 8006c98: 601a str r2, [r3, #0] CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 8006c9a: 68fb ldr r3, [r7, #12] 8006c9c: 681b ldr r3, [r3, #0] 8006c9e: 68fa ldr r2, [r7, #12] 8006ca0: 6812 ldr r2, [r2, #0] 8006ca2: 6892 ldr r2, [r2, #8] 8006ca4: 2101 movs r1, #1 8006ca6: 438a bics r2, r1 8006ca8: 609a str r2, [r3, #8] huart->gState = HAL_UART_STATE_READY; 8006caa: 68fb ldr r3, [r7, #12] 8006cac: 2220 movs r2, #32 8006cae: 679a str r2, [r3, #120] ; 0x78 huart->RxState = HAL_UART_STATE_READY; 8006cb0: 68fb ldr r3, [r7, #12] 8006cb2: 2220 movs r2, #32 8006cb4: 67da str r2, [r3, #124] ; 0x7c __HAL_UNLOCK(huart); 8006cb6: 68fb ldr r3, [r7, #12] 8006cb8: 2274 movs r2, #116 ; 0x74 8006cba: 2100 movs r1, #0 8006cbc: 5499 strb r1, [r3, r2] return HAL_TIMEOUT; 8006cbe: 2303 movs r3, #3 8006cc0: e044 b.n 8006d4c } if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) 8006cc2: 68fb ldr r3, [r7, #12] 8006cc4: 681b ldr r3, [r3, #0] 8006cc6: 681b ldr r3, [r3, #0] 8006cc8: 2204 movs r2, #4 8006cca: 4013 ands r3, r2 8006ccc: d02e beq.n 8006d2c { if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) 8006cce: 68fb ldr r3, [r7, #12] 8006cd0: 681b ldr r3, [r3, #0] 8006cd2: 69da ldr r2, [r3, #28] 8006cd4: 2380 movs r3, #128 ; 0x80 8006cd6: 011b lsls r3, r3, #4 8006cd8: 401a ands r2, r3 8006cda: 2380 movs r3, #128 ; 0x80 8006cdc: 011b lsls r3, r3, #4 8006cde: 429a cmp r2, r3 8006ce0: d124 bne.n 8006d2c { /* Clear Receiver Timeout flag*/ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); 8006ce2: 68fb ldr r3, [r7, #12] 8006ce4: 681b ldr r3, [r3, #0] 8006ce6: 2280 movs r2, #128 ; 0x80 8006ce8: 0112 lsls r2, r2, #4 8006cea: 621a str r2, [r3, #32] /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */ CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); 8006cec: 68fb ldr r3, [r7, #12] 8006cee: 681b ldr r3, [r3, #0] 8006cf0: 68fa ldr r2, [r7, #12] 8006cf2: 6812 ldr r2, [r2, #0] 8006cf4: 6812 ldr r2, [r2, #0] 8006cf6: 4917 ldr r1, [pc, #92] ; (8006d54 ) 8006cf8: 400a ands r2, r1 8006cfa: 601a str r2, [r3, #0] CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 8006cfc: 68fb ldr r3, [r7, #12] 8006cfe: 681b ldr r3, [r3, #0] 8006d00: 68fa ldr r2, [r7, #12] 8006d02: 6812 ldr r2, [r2, #0] 8006d04: 6892 ldr r2, [r2, #8] 8006d06: 2101 movs r1, #1 8006d08: 438a bics r2, r1 8006d0a: 609a str r2, [r3, #8] huart->gState = HAL_UART_STATE_READY; 8006d0c: 68fb ldr r3, [r7, #12] 8006d0e: 2220 movs r2, #32 8006d10: 679a str r2, [r3, #120] ; 0x78 huart->RxState = HAL_UART_STATE_READY; 8006d12: 68fb ldr r3, [r7, #12] 8006d14: 2220 movs r2, #32 8006d16: 67da str r2, [r3, #124] ; 0x7c huart->ErrorCode = HAL_UART_ERROR_RTO; 8006d18: 68fb ldr r3, [r7, #12] 8006d1a: 2280 movs r2, #128 ; 0x80 8006d1c: 2120 movs r1, #32 8006d1e: 5099 str r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(huart); 8006d20: 68fb ldr r3, [r7, #12] 8006d22: 2274 movs r2, #116 ; 0x74 8006d24: 2100 movs r1, #0 8006d26: 5499 strb r1, [r3, r2] return HAL_TIMEOUT; 8006d28: 2303 movs r3, #3 8006d2a: e00f b.n 8006d4c while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) 8006d2c: 68fb ldr r3, [r7, #12] 8006d2e: 681b ldr r3, [r3, #0] 8006d30: 69db ldr r3, [r3, #28] 8006d32: 68ba ldr r2, [r7, #8] 8006d34: 401a ands r2, r3 8006d36: 68bb ldr r3, [r7, #8] 8006d38: 1ad3 subs r3, r2, r3 8006d3a: 425a negs r2, r3 8006d3c: 4153 adcs r3, r2 8006d3e: b2db uxtb r3, r3 8006d40: 001a movs r2, r3 8006d42: 1dfb adds r3, r7, #7 8006d44: 781b ldrb r3, [r3, #0] 8006d46: 429a cmp r2, r3 8006d48: d091 beq.n 8006c6e } } } } return HAL_OK; 8006d4a: 2300 movs r3, #0 } 8006d4c: 0018 movs r0, r3 8006d4e: 46bd mov sp, r7 8006d50: b004 add sp, #16 8006d52: bd80 pop {r7, pc} 8006d54: fffffe5f .word 0xfffffe5f 08006d58 : * @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) { 8006d58: b580 push {r7, lr} 8006d5a: b082 sub sp, #8 8006d5c: af00 add r7, sp, #0 8006d5e: 6078 str r0, [r7, #4] /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); 8006d60: 687b ldr r3, [r7, #4] 8006d62: 681b ldr r3, [r3, #0] 8006d64: 687a ldr r2, [r7, #4] 8006d66: 6812 ldr r2, [r2, #0] 8006d68: 6812 ldr r2, [r2, #0] 8006d6a: 4912 ldr r1, [pc, #72] ; (8006db4 ) 8006d6c: 400a ands r2, r1 8006d6e: 601a str r2, [r3, #0] CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 8006d70: 687b ldr r3, [r7, #4] 8006d72: 681b ldr r3, [r3, #0] 8006d74: 687a ldr r2, [r7, #4] 8006d76: 6812 ldr r2, [r2, #0] 8006d78: 6892 ldr r2, [r2, #8] 8006d7a: 2101 movs r1, #1 8006d7c: 438a bics r2, r1 8006d7e: 609a str r2, [r3, #8] /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) 8006d80: 687b ldr r3, [r7, #4] 8006d82: 6e1b ldr r3, [r3, #96] ; 0x60 8006d84: 2b01 cmp r3, #1 8006d86: d107 bne.n 8006d98 { CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); 8006d88: 687b ldr r3, [r7, #4] 8006d8a: 681b ldr r3, [r3, #0] 8006d8c: 687a ldr r2, [r7, #4] 8006d8e: 6812 ldr r2, [r2, #0] 8006d90: 6812 ldr r2, [r2, #0] 8006d92: 2110 movs r1, #16 8006d94: 438a bics r2, r1 8006d96: 601a str r2, [r3, #0] } /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; 8006d98: 687b ldr r3, [r7, #4] 8006d9a: 2220 movs r2, #32 8006d9c: 67da str r2, [r3, #124] ; 0x7c huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; 8006d9e: 687b ldr r3, [r7, #4] 8006da0: 2200 movs r2, #0 8006da2: 661a str r2, [r3, #96] ; 0x60 /* Reset RxIsr function pointer */ huart->RxISR = NULL; 8006da4: 687b ldr r3, [r7, #4] 8006da6: 2200 movs r2, #0 8006da8: 665a str r2, [r3, #100] ; 0x64 } 8006daa: 46c0 nop ; (mov r8, r8) 8006dac: 46bd mov sp, r7 8006dae: b002 add sp, #8 8006db0: bd80 pop {r7, pc} 8006db2: 46c0 nop ; (mov r8, r8) 8006db4: fffffedf .word 0xfffffedf 08006db8 : * (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) { 8006db8: b580 push {r7, lr} 8006dba: b084 sub sp, #16 8006dbc: af00 add r7, sp, #0 8006dbe: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); 8006dc0: 687b ldr r3, [r7, #4] 8006dc2: 6a9b ldr r3, [r3, #40] ; 0x28 8006dc4: 60fb str r3, [r7, #12] huart->RxXferCount = 0U; 8006dc6: 68fb ldr r3, [r7, #12] 8006dc8: 225a movs r2, #90 ; 0x5a 8006dca: 2100 movs r1, #0 8006dcc: 5299 strh r1, [r3, r2] huart->TxXferCount = 0U; 8006dce: 68fb ldr r3, [r7, #12] 8006dd0: 2252 movs r2, #82 ; 0x52 8006dd2: 2100 movs r1, #0 8006dd4: 5299 strh r1, [r3, r2] #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); 8006dd6: 68fb ldr r3, [r7, #12] 8006dd8: 0018 movs r0, r3 8006dda: f7ff fb73 bl 80064c4 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } 8006dde: 46c0 nop ; (mov r8, r8) 8006de0: 46bd mov sp, r7 8006de2: b004 add sp, #16 8006de4: bd80 pop {r7, pc} 08006de6 : * interruptions have been enabled by HAL_UART_Transmit_IT(). * @param huart UART handle. * @retval None */ static void UART_TxISR_8BIT(UART_HandleTypeDef *huart) { 8006de6: b580 push {r7, lr} 8006de8: b082 sub sp, #8 8006dea: af00 add r7, sp, #0 8006dec: 6078 str r0, [r7, #4] /* Check that a Tx process is ongoing */ if (huart->gState == HAL_UART_STATE_BUSY_TX) 8006dee: 687b ldr r3, [r7, #4] 8006df0: 6f9b ldr r3, [r3, #120] ; 0x78 8006df2: 2b21 cmp r3, #33 ; 0x21 8006df4: d12a bne.n 8006e4c { if (huart->TxXferCount == 0U) 8006df6: 687b ldr r3, [r7, #4] 8006df8: 2252 movs r2, #82 ; 0x52 8006dfa: 5a9b ldrh r3, [r3, r2] 8006dfc: b29b uxth r3, r3 8006dfe: 2b00 cmp r3, #0 8006e00: d110 bne.n 8006e24 { /* Disable the UART Transmit Data Register Empty Interrupt */ CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE); 8006e02: 687b ldr r3, [r7, #4] 8006e04: 681b ldr r3, [r3, #0] 8006e06: 687a ldr r2, [r7, #4] 8006e08: 6812 ldr r2, [r2, #0] 8006e0a: 6812 ldr r2, [r2, #0] 8006e0c: 2180 movs r1, #128 ; 0x80 8006e0e: 438a bics r2, r1 8006e10: 601a str r2, [r3, #0] /* Enable the UART Transmit Complete Interrupt */ SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); 8006e12: 687b ldr r3, [r7, #4] 8006e14: 681b ldr r3, [r3, #0] 8006e16: 687a ldr r2, [r7, #4] 8006e18: 6812 ldr r2, [r2, #0] 8006e1a: 6812 ldr r2, [r2, #0] 8006e1c: 2140 movs r1, #64 ; 0x40 8006e1e: 430a orrs r2, r1 8006e20: 601a str r2, [r3, #0] huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF); huart->pTxBuffPtr++; huart->TxXferCount--; } } } 8006e22: e013 b.n 8006e4c huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF); 8006e24: 687b ldr r3, [r7, #4] 8006e26: 681b ldr r3, [r3, #0] 8006e28: 687a ldr r2, [r7, #4] 8006e2a: 6cd2 ldr r2, [r2, #76] ; 0x4c 8006e2c: 7812 ldrb r2, [r2, #0] 8006e2e: 629a str r2, [r3, #40] ; 0x28 huart->pTxBuffPtr++; 8006e30: 687b ldr r3, [r7, #4] 8006e32: 6cdb ldr r3, [r3, #76] ; 0x4c 8006e34: 1c5a adds r2, r3, #1 8006e36: 687b ldr r3, [r7, #4] 8006e38: 64da str r2, [r3, #76] ; 0x4c huart->TxXferCount--; 8006e3a: 687b ldr r3, [r7, #4] 8006e3c: 2252 movs r2, #82 ; 0x52 8006e3e: 5a9b ldrh r3, [r3, r2] 8006e40: b29b uxth r3, r3 8006e42: 3b01 subs r3, #1 8006e44: b299 uxth r1, r3 8006e46: 687b ldr r3, [r7, #4] 8006e48: 2252 movs r2, #82 ; 0x52 8006e4a: 5299 strh r1, [r3, r2] } 8006e4c: 46c0 nop ; (mov r8, r8) 8006e4e: 46bd mov sp, r7 8006e50: b002 add sp, #8 8006e52: bd80 pop {r7, pc} 08006e54 : * interruptions have been enabled by HAL_UART_Transmit_IT(). * @param huart UART handle. * @retval None */ static void UART_TxISR_16BIT(UART_HandleTypeDef *huart) { 8006e54: b580 push {r7, lr} 8006e56: b084 sub sp, #16 8006e58: af00 add r7, sp, #0 8006e5a: 6078 str r0, [r7, #4] uint16_t *tmp; /* Check that a Tx process is ongoing */ if (huart->gState == HAL_UART_STATE_BUSY_TX) 8006e5c: 687b ldr r3, [r7, #4] 8006e5e: 6f9b ldr r3, [r3, #120] ; 0x78 8006e60: 2b21 cmp r3, #33 ; 0x21 8006e62: d12e bne.n 8006ec2 { if (huart->TxXferCount == 0U) 8006e64: 687b ldr r3, [r7, #4] 8006e66: 2252 movs r2, #82 ; 0x52 8006e68: 5a9b ldrh r3, [r3, r2] 8006e6a: b29b uxth r3, r3 8006e6c: 2b00 cmp r3, #0 8006e6e: d110 bne.n 8006e92 { /* Disable the UART Transmit Data Register Empty Interrupt */ CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE); 8006e70: 687b ldr r3, [r7, #4] 8006e72: 681b ldr r3, [r3, #0] 8006e74: 687a ldr r2, [r7, #4] 8006e76: 6812 ldr r2, [r2, #0] 8006e78: 6812 ldr r2, [r2, #0] 8006e7a: 2180 movs r1, #128 ; 0x80 8006e7c: 438a bics r2, r1 8006e7e: 601a str r2, [r3, #0] /* Enable the UART Transmit Complete Interrupt */ SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); 8006e80: 687b ldr r3, [r7, #4] 8006e82: 681b ldr r3, [r3, #0] 8006e84: 687a ldr r2, [r7, #4] 8006e86: 6812 ldr r2, [r2, #0] 8006e88: 6812 ldr r2, [r2, #0] 8006e8a: 2140 movs r1, #64 ; 0x40 8006e8c: 430a orrs r2, r1 8006e8e: 601a str r2, [r3, #0] huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL); huart->pTxBuffPtr += 2U; huart->TxXferCount--; } } } 8006e90: e017 b.n 8006ec2 tmp = (uint16_t *) huart->pTxBuffPtr; 8006e92: 687b ldr r3, [r7, #4] 8006e94: 6cdb ldr r3, [r3, #76] ; 0x4c 8006e96: 60fb str r3, [r7, #12] huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL); 8006e98: 687b ldr r3, [r7, #4] 8006e9a: 681b ldr r3, [r3, #0] 8006e9c: 68fa ldr r2, [r7, #12] 8006e9e: 8812 ldrh r2, [r2, #0] 8006ea0: 05d2 lsls r2, r2, #23 8006ea2: 0dd2 lsrs r2, r2, #23 8006ea4: 629a str r2, [r3, #40] ; 0x28 huart->pTxBuffPtr += 2U; 8006ea6: 687b ldr r3, [r7, #4] 8006ea8: 6cdb ldr r3, [r3, #76] ; 0x4c 8006eaa: 1c9a adds r2, r3, #2 8006eac: 687b ldr r3, [r7, #4] 8006eae: 64da str r2, [r3, #76] ; 0x4c huart->TxXferCount--; 8006eb0: 687b ldr r3, [r7, #4] 8006eb2: 2252 movs r2, #82 ; 0x52 8006eb4: 5a9b ldrh r3, [r3, r2] 8006eb6: b29b uxth r3, r3 8006eb8: 3b01 subs r3, #1 8006eba: b299 uxth r1, r3 8006ebc: 687b ldr r3, [r7, #4] 8006ebe: 2252 movs r2, #82 ; 0x52 8006ec0: 5299 strh r1, [r3, r2] } 8006ec2: 46c0 nop ; (mov r8, r8) 8006ec4: 46bd mov sp, r7 8006ec6: b004 add sp, #16 8006ec8: bd80 pop {r7, pc} 08006eca : * @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) { 8006eca: b580 push {r7, lr} 8006ecc: b082 sub sp, #8 8006ece: af00 add r7, sp, #0 8006ed0: 6078 str r0, [r7, #4] /* Disable the UART Transmit Complete Interrupt */ CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE); 8006ed2: 687b ldr r3, [r7, #4] 8006ed4: 681b ldr r3, [r3, #0] 8006ed6: 687a ldr r2, [r7, #4] 8006ed8: 6812 ldr r2, [r2, #0] 8006eda: 6812 ldr r2, [r2, #0] 8006edc: 2140 movs r1, #64 ; 0x40 8006ede: 438a bics r2, r1 8006ee0: 601a str r2, [r3, #0] /* Tx process is ended, restore huart->gState to Ready */ huart->gState = HAL_UART_STATE_READY; 8006ee2: 687b ldr r3, [r7, #4] 8006ee4: 2220 movs r2, #32 8006ee6: 679a str r2, [r3, #120] ; 0x78 /* Cleat TxISR function pointer */ huart->TxISR = NULL; 8006ee8: 687b ldr r3, [r7, #4] 8006eea: 2200 movs r2, #0 8006eec: 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); 8006eee: 687b ldr r3, [r7, #4] 8006ef0: 0018 movs r0, r3 8006ef2: f7fc febf bl 8003c74 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } 8006ef6: 46c0 nop ; (mov r8, r8) 8006ef8: 46bd mov sp, r7 8006efa: b002 add sp, #8 8006efc: bd80 pop {r7, pc} 08006efe : * @brief UART wakeup from Stop mode callback. * @param huart UART handle. * @retval None */ __weak void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart) { 8006efe: b580 push {r7, lr} 8006f00: b082 sub sp, #8 8006f02: af00 add r7, sp, #0 8006f04: 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. */ } 8006f06: 46c0 nop ; (mov r8, r8) 8006f08: 46bd mov sp, r7 8006f0a: b002 add sp, #8 8006f0c: bd80 pop {r7, pc} ... 08006f10 : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr r0, =_estack 8006f10: 480d ldr r0, [pc, #52] ; (8006f48 ) mov sp, r0 /* set stack pointer */ 8006f12: 4685 mov sp, r0 /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata 8006f14: 480d ldr r0, [pc, #52] ; (8006f4c ) ldr r1, =_edata 8006f16: 490e ldr r1, [pc, #56] ; (8006f50 ) ldr r2, =_sidata 8006f18: 4a0e ldr r2, [pc, #56] ; (8006f54 ) movs r3, #0 8006f1a: 2300 movs r3, #0 b LoopCopyDataInit 8006f1c: e002 b.n 8006f24 08006f1e : CopyDataInit: ldr r4, [r2, r3] 8006f1e: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] 8006f20: 50c4 str r4, [r0, r3] adds r3, r3, #4 8006f22: 3304 adds r3, #4 08006f24 : LoopCopyDataInit: adds r4, r0, r3 8006f24: 18c4 adds r4, r0, r3 cmp r4, r1 8006f26: 428c cmp r4, r1 bcc CopyDataInit 8006f28: d3f9 bcc.n 8006f1e /* Zero fill the bss segment. */ ldr r2, =_sbss 8006f2a: 4a0b ldr r2, [pc, #44] ; (8006f58 ) ldr r4, =_ebss 8006f2c: 4c0b ldr r4, [pc, #44] ; (8006f5c ) movs r3, #0 8006f2e: 2300 movs r3, #0 b LoopFillZerobss 8006f30: e001 b.n 8006f36 08006f32 : FillZerobss: str r3, [r2] 8006f32: 6013 str r3, [r2, #0] adds r2, r2, #4 8006f34: 3204 adds r2, #4 08006f36 : LoopFillZerobss: cmp r2, r4 8006f36: 42a2 cmp r2, r4 bcc FillZerobss 8006f38: d3fb bcc.n 8006f32 /* Call the clock system intitialization function.*/ bl SystemInit 8006f3a: f7fb f9df bl 80022fc /* Call static constructors */ bl __libc_init_array 8006f3e: f000 f811 bl 8006f64 <__libc_init_array> /* Call the application's entry point.*/ bl main 8006f42: f7fb f89b bl 800207c
08006f46 : LoopForever: b LoopForever 8006f46: e7fe b.n 8006f46 ldr r0, =_estack 8006f48: 20005000 .word 0x20005000 ldr r0, =_sdata 8006f4c: 20000000 .word 0x20000000 ldr r1, =_edata 8006f50: 20000010 .word 0x20000010 ldr r2, =_sidata 8006f54: 0800749c .word 0x0800749c ldr r2, =_sbss 8006f58: 20000010 .word 0x20000010 ldr r4, =_ebss 8006f5c: 200003a8 .word 0x200003a8 08006f60 : * @retval : None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop 8006f60: e7fe b.n 8006f60 ... 08006f64 <__libc_init_array>: 8006f64: b570 push {r4, r5, r6, lr} 8006f66: 2600 movs r6, #0 8006f68: 4d0c ldr r5, [pc, #48] ; (8006f9c <__libc_init_array+0x38>) 8006f6a: 4c0d ldr r4, [pc, #52] ; (8006fa0 <__libc_init_array+0x3c>) 8006f6c: 1b64 subs r4, r4, r5 8006f6e: 10a4 asrs r4, r4, #2 8006f70: 42a6 cmp r6, r4 8006f72: d109 bne.n 8006f88 <__libc_init_array+0x24> 8006f74: 2600 movs r6, #0 8006f76: f000 f82b bl 8006fd0 <_init> 8006f7a: 4d0a ldr r5, [pc, #40] ; (8006fa4 <__libc_init_array+0x40>) 8006f7c: 4c0a ldr r4, [pc, #40] ; (8006fa8 <__libc_init_array+0x44>) 8006f7e: 1b64 subs r4, r4, r5 8006f80: 10a4 asrs r4, r4, #2 8006f82: 42a6 cmp r6, r4 8006f84: d105 bne.n 8006f92 <__libc_init_array+0x2e> 8006f86: bd70 pop {r4, r5, r6, pc} 8006f88: 00b3 lsls r3, r6, #2 8006f8a: 58eb ldr r3, [r5, r3] 8006f8c: 4798 blx r3 8006f8e: 3601 adds r6, #1 8006f90: e7ee b.n 8006f70 <__libc_init_array+0xc> 8006f92: 00b3 lsls r3, r6, #2 8006f94: 58eb ldr r3, [r5, r3] 8006f96: 4798 blx r3 8006f98: 3601 adds r6, #1 8006f9a: e7f2 b.n 8006f82 <__libc_init_array+0x1e> 8006f9c: 08007494 .word 0x08007494 8006fa0: 08007494 .word 0x08007494 8006fa4: 08007494 .word 0x08007494 8006fa8: 08007498 .word 0x08007498 08006fac : 8006fac: 2300 movs r3, #0 8006fae: b510 push {r4, lr} 8006fb0: 429a cmp r2, r3 8006fb2: d100 bne.n 8006fb6 8006fb4: bd10 pop {r4, pc} 8006fb6: 5ccc ldrb r4, [r1, r3] 8006fb8: 54c4 strb r4, [r0, r3] 8006fba: 3301 adds r3, #1 8006fbc: e7f8 b.n 8006fb0 08006fbe : 8006fbe: 0003 movs r3, r0 8006fc0: 1882 adds r2, r0, r2 8006fc2: 4293 cmp r3, r2 8006fc4: d100 bne.n 8006fc8 8006fc6: 4770 bx lr 8006fc8: 7019 strb r1, [r3, #0] 8006fca: 3301 adds r3, #1 8006fcc: e7f9 b.n 8006fc2 ... 08006fd0 <_init>: 8006fd0: b5f8 push {r3, r4, r5, r6, r7, lr} 8006fd2: 46c0 nop ; (mov r8, r8) 8006fd4: bcf8 pop {r3, r4, r5, r6, r7} 8006fd6: bc08 pop {r3} 8006fd8: 469e mov lr, r3 8006fda: 4770 bx lr 08006fdc <_fini>: 8006fdc: b5f8 push {r3, r4, r5, r6, r7, lr} 8006fde: 46c0 nop ; (mov r8, r8) 8006fe0: bcf8 pop {r3, r4, r5, r6, r7} 8006fe2: bc08 pop {r3} 8006fe4: 469e mov lr, r3 8006fe6: 4770 bx lr