STM32F429I-DISC1_LEDFaceMask-Rough.elf: file format elf32-littlearm Sections: Idx Name Size VMA LMA File off Algn 0 .isr_vector 000001ac 08000000 08000000 00010000 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 1 .text 00005778 080001b0 080001b0 000101b0 2**3 CONTENTS, ALLOC, LOAD, READONLY, CODE 2 .rodata 00000010 08005928 08005928 00015928 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 3 .ARM.extab 00000000 08005938 08005938 00020074 2**0 CONTENTS 4 .ARM 00000008 08005938 08005938 00015938 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 5 .preinit_array 00000000 08005940 08005940 00020074 2**0 CONTENTS, ALLOC, LOAD, DATA 6 .init_array 00000004 08005940 08005940 00015940 2**2 CONTENTS, ALLOC, LOAD, DATA 7 .fini_array 00000004 08005944 08005944 00015944 2**2 CONTENTS, ALLOC, LOAD, DATA 8 .data 00000074 20000000 08005948 00020000 2**2 CONTENTS, ALLOC, LOAD, DATA 9 .bss 0000042c 20000074 080059bc 00020074 2**2 ALLOC 10 ._user_heap_stack 00000600 200004a0 080059bc 000204a0 2**0 ALLOC 11 .ARM.attributes 00000030 00000000 00000000 00020074 2**0 CONTENTS, READONLY 12 .debug_info 0000d731 00000000 00000000 000200a4 2**0 CONTENTS, READONLY, DEBUGGING 13 .debug_abbrev 00001c9c 00000000 00000000 0002d7d5 2**0 CONTENTS, READONLY, DEBUGGING 14 .debug_aranges 00000d28 00000000 00000000 0002f478 2**3 CONTENTS, READONLY, DEBUGGING 15 .debug_ranges 00000c40 00000000 00000000 000301a0 2**3 CONTENTS, READONLY, DEBUGGING 16 .debug_macro 0002448d 00000000 00000000 00030de0 2**0 CONTENTS, READONLY, DEBUGGING 17 .debug_line 0000a530 00000000 00000000 0005526d 2**0 CONTENTS, READONLY, DEBUGGING 18 .debug_str 000de32d 00000000 00000000 0005f79d 2**0 CONTENTS, READONLY, DEBUGGING 19 .comment 0000007b 00000000 00000000 0013daca 2**0 CONTENTS, READONLY 20 .debug_frame 000039e0 00000000 00000000 0013db48 2**2 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 080001b0 <__do_global_dtors_aux>: 80001b0: b510 push {r4, lr} 80001b2: 4c05 ldr r4, [pc, #20] ; (80001c8 <__do_global_dtors_aux+0x18>) 80001b4: 7823 ldrb r3, [r4, #0] 80001b6: b933 cbnz r3, 80001c6 <__do_global_dtors_aux+0x16> 80001b8: 4b04 ldr r3, [pc, #16] ; (80001cc <__do_global_dtors_aux+0x1c>) 80001ba: b113 cbz r3, 80001c2 <__do_global_dtors_aux+0x12> 80001bc: 4804 ldr r0, [pc, #16] ; (80001d0 <__do_global_dtors_aux+0x20>) 80001be: f3af 8000 nop.w 80001c2: 2301 movs r3, #1 80001c4: 7023 strb r3, [r4, #0] 80001c6: bd10 pop {r4, pc} 80001c8: 20000074 .word 0x20000074 80001cc: 00000000 .word 0x00000000 80001d0: 08005910 .word 0x08005910 080001d4 : 80001d4: b508 push {r3, lr} 80001d6: 4b03 ldr r3, [pc, #12] ; (80001e4 ) 80001d8: b11b cbz r3, 80001e2 80001da: 4903 ldr r1, [pc, #12] ; (80001e8 ) 80001dc: 4803 ldr r0, [pc, #12] ; (80001ec ) 80001de: f3af 8000 nop.w 80001e2: bd08 pop {r3, pc} 80001e4: 00000000 .word 0x00000000 80001e8: 20000078 .word 0x20000078 80001ec: 08005910 .word 0x08005910 080001f0 <__aeabi_drsub>: 80001f0: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000 80001f4: e002 b.n 80001fc <__adddf3> 80001f6: bf00 nop 080001f8 <__aeabi_dsub>: 80001f8: f083 4300 eor.w r3, r3, #2147483648 ; 0x80000000 080001fc <__adddf3>: 80001fc: b530 push {r4, r5, lr} 80001fe: ea4f 0441 mov.w r4, r1, lsl #1 8000202: ea4f 0543 mov.w r5, r3, lsl #1 8000206: ea94 0f05 teq r4, r5 800020a: bf08 it eq 800020c: ea90 0f02 teqeq r0, r2 8000210: bf1f itttt ne 8000212: ea54 0c00 orrsne.w ip, r4, r0 8000216: ea55 0c02 orrsne.w ip, r5, r2 800021a: ea7f 5c64 mvnsne.w ip, r4, asr #21 800021e: ea7f 5c65 mvnsne.w ip, r5, asr #21 8000222: f000 80e2 beq.w 80003ea <__adddf3+0x1ee> 8000226: ea4f 5454 mov.w r4, r4, lsr #21 800022a: ebd4 5555 rsbs r5, r4, r5, lsr #21 800022e: bfb8 it lt 8000230: 426d neglt r5, r5 8000232: dd0c ble.n 800024e <__adddf3+0x52> 8000234: 442c add r4, r5 8000236: ea80 0202 eor.w r2, r0, r2 800023a: ea81 0303 eor.w r3, r1, r3 800023e: ea82 0000 eor.w r0, r2, r0 8000242: ea83 0101 eor.w r1, r3, r1 8000246: ea80 0202 eor.w r2, r0, r2 800024a: ea81 0303 eor.w r3, r1, r3 800024e: 2d36 cmp r5, #54 ; 0x36 8000250: bf88 it hi 8000252: bd30 pophi {r4, r5, pc} 8000254: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 8000258: ea4f 3101 mov.w r1, r1, lsl #12 800025c: f44f 1c80 mov.w ip, #1048576 ; 0x100000 8000260: ea4c 3111 orr.w r1, ip, r1, lsr #12 8000264: d002 beq.n 800026c <__adddf3+0x70> 8000266: 4240 negs r0, r0 8000268: eb61 0141 sbc.w r1, r1, r1, lsl #1 800026c: f013 4f00 tst.w r3, #2147483648 ; 0x80000000 8000270: ea4f 3303 mov.w r3, r3, lsl #12 8000274: ea4c 3313 orr.w r3, ip, r3, lsr #12 8000278: d002 beq.n 8000280 <__adddf3+0x84> 800027a: 4252 negs r2, r2 800027c: eb63 0343 sbc.w r3, r3, r3, lsl #1 8000280: ea94 0f05 teq r4, r5 8000284: f000 80a7 beq.w 80003d6 <__adddf3+0x1da> 8000288: f1a4 0401 sub.w r4, r4, #1 800028c: f1d5 0e20 rsbs lr, r5, #32 8000290: db0d blt.n 80002ae <__adddf3+0xb2> 8000292: fa02 fc0e lsl.w ip, r2, lr 8000296: fa22 f205 lsr.w r2, r2, r5 800029a: 1880 adds r0, r0, r2 800029c: f141 0100 adc.w r1, r1, #0 80002a0: fa03 f20e lsl.w r2, r3, lr 80002a4: 1880 adds r0, r0, r2 80002a6: fa43 f305 asr.w r3, r3, r5 80002aa: 4159 adcs r1, r3 80002ac: e00e b.n 80002cc <__adddf3+0xd0> 80002ae: f1a5 0520 sub.w r5, r5, #32 80002b2: f10e 0e20 add.w lr, lr, #32 80002b6: 2a01 cmp r2, #1 80002b8: fa03 fc0e lsl.w ip, r3, lr 80002bc: bf28 it cs 80002be: f04c 0c02 orrcs.w ip, ip, #2 80002c2: fa43 f305 asr.w r3, r3, r5 80002c6: 18c0 adds r0, r0, r3 80002c8: eb51 71e3 adcs.w r1, r1, r3, asr #31 80002cc: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 80002d0: d507 bpl.n 80002e2 <__adddf3+0xe6> 80002d2: f04f 0e00 mov.w lr, #0 80002d6: f1dc 0c00 rsbs ip, ip, #0 80002da: eb7e 0000 sbcs.w r0, lr, r0 80002de: eb6e 0101 sbc.w r1, lr, r1 80002e2: f5b1 1f80 cmp.w r1, #1048576 ; 0x100000 80002e6: d31b bcc.n 8000320 <__adddf3+0x124> 80002e8: f5b1 1f00 cmp.w r1, #2097152 ; 0x200000 80002ec: d30c bcc.n 8000308 <__adddf3+0x10c> 80002ee: 0849 lsrs r1, r1, #1 80002f0: ea5f 0030 movs.w r0, r0, rrx 80002f4: ea4f 0c3c mov.w ip, ip, rrx 80002f8: f104 0401 add.w r4, r4, #1 80002fc: ea4f 5244 mov.w r2, r4, lsl #21 8000300: f512 0f80 cmn.w r2, #4194304 ; 0x400000 8000304: f080 809a bcs.w 800043c <__adddf3+0x240> 8000308: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000 800030c: bf08 it eq 800030e: ea5f 0c50 movseq.w ip, r0, lsr #1 8000312: f150 0000 adcs.w r0, r0, #0 8000316: eb41 5104 adc.w r1, r1, r4, lsl #20 800031a: ea41 0105 orr.w r1, r1, r5 800031e: bd30 pop {r4, r5, pc} 8000320: ea5f 0c4c movs.w ip, ip, lsl #1 8000324: 4140 adcs r0, r0 8000326: eb41 0101 adc.w r1, r1, r1 800032a: f411 1f80 tst.w r1, #1048576 ; 0x100000 800032e: f1a4 0401 sub.w r4, r4, #1 8000332: d1e9 bne.n 8000308 <__adddf3+0x10c> 8000334: f091 0f00 teq r1, #0 8000338: bf04 itt eq 800033a: 4601 moveq r1, r0 800033c: 2000 moveq r0, #0 800033e: fab1 f381 clz r3, r1 8000342: bf08 it eq 8000344: 3320 addeq r3, #32 8000346: f1a3 030b sub.w r3, r3, #11 800034a: f1b3 0220 subs.w r2, r3, #32 800034e: da0c bge.n 800036a <__adddf3+0x16e> 8000350: 320c adds r2, #12 8000352: dd08 ble.n 8000366 <__adddf3+0x16a> 8000354: f102 0c14 add.w ip, r2, #20 8000358: f1c2 020c rsb r2, r2, #12 800035c: fa01 f00c lsl.w r0, r1, ip 8000360: fa21 f102 lsr.w r1, r1, r2 8000364: e00c b.n 8000380 <__adddf3+0x184> 8000366: f102 0214 add.w r2, r2, #20 800036a: bfd8 it le 800036c: f1c2 0c20 rsble ip, r2, #32 8000370: fa01 f102 lsl.w r1, r1, r2 8000374: fa20 fc0c lsr.w ip, r0, ip 8000378: bfdc itt le 800037a: ea41 010c orrle.w r1, r1, ip 800037e: 4090 lslle r0, r2 8000380: 1ae4 subs r4, r4, r3 8000382: bfa2 ittt ge 8000384: eb01 5104 addge.w r1, r1, r4, lsl #20 8000388: 4329 orrge r1, r5 800038a: bd30 popge {r4, r5, pc} 800038c: ea6f 0404 mvn.w r4, r4 8000390: 3c1f subs r4, #31 8000392: da1c bge.n 80003ce <__adddf3+0x1d2> 8000394: 340c adds r4, #12 8000396: dc0e bgt.n 80003b6 <__adddf3+0x1ba> 8000398: f104 0414 add.w r4, r4, #20 800039c: f1c4 0220 rsb r2, r4, #32 80003a0: fa20 f004 lsr.w r0, r0, r4 80003a4: fa01 f302 lsl.w r3, r1, r2 80003a8: ea40 0003 orr.w r0, r0, r3 80003ac: fa21 f304 lsr.w r3, r1, r4 80003b0: ea45 0103 orr.w r1, r5, r3 80003b4: bd30 pop {r4, r5, pc} 80003b6: f1c4 040c rsb r4, r4, #12 80003ba: f1c4 0220 rsb r2, r4, #32 80003be: fa20 f002 lsr.w r0, r0, r2 80003c2: fa01 f304 lsl.w r3, r1, r4 80003c6: ea40 0003 orr.w r0, r0, r3 80003ca: 4629 mov r1, r5 80003cc: bd30 pop {r4, r5, pc} 80003ce: fa21 f004 lsr.w r0, r1, r4 80003d2: 4629 mov r1, r5 80003d4: bd30 pop {r4, r5, pc} 80003d6: f094 0f00 teq r4, #0 80003da: f483 1380 eor.w r3, r3, #1048576 ; 0x100000 80003de: bf06 itte eq 80003e0: f481 1180 eoreq.w r1, r1, #1048576 ; 0x100000 80003e4: 3401 addeq r4, #1 80003e6: 3d01 subne r5, #1 80003e8: e74e b.n 8000288 <__adddf3+0x8c> 80003ea: ea7f 5c64 mvns.w ip, r4, asr #21 80003ee: bf18 it ne 80003f0: ea7f 5c65 mvnsne.w ip, r5, asr #21 80003f4: d029 beq.n 800044a <__adddf3+0x24e> 80003f6: ea94 0f05 teq r4, r5 80003fa: bf08 it eq 80003fc: ea90 0f02 teqeq r0, r2 8000400: d005 beq.n 800040e <__adddf3+0x212> 8000402: ea54 0c00 orrs.w ip, r4, r0 8000406: bf04 itt eq 8000408: 4619 moveq r1, r3 800040a: 4610 moveq r0, r2 800040c: bd30 pop {r4, r5, pc} 800040e: ea91 0f03 teq r1, r3 8000412: bf1e ittt ne 8000414: 2100 movne r1, #0 8000416: 2000 movne r0, #0 8000418: bd30 popne {r4, r5, pc} 800041a: ea5f 5c54 movs.w ip, r4, lsr #21 800041e: d105 bne.n 800042c <__adddf3+0x230> 8000420: 0040 lsls r0, r0, #1 8000422: 4149 adcs r1, r1 8000424: bf28 it cs 8000426: f041 4100 orrcs.w r1, r1, #2147483648 ; 0x80000000 800042a: bd30 pop {r4, r5, pc} 800042c: f514 0480 adds.w r4, r4, #4194304 ; 0x400000 8000430: bf3c itt cc 8000432: f501 1180 addcc.w r1, r1, #1048576 ; 0x100000 8000436: bd30 popcc {r4, r5, pc} 8000438: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 800043c: f045 41fe orr.w r1, r5, #2130706432 ; 0x7f000000 8000440: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000 8000444: f04f 0000 mov.w r0, #0 8000448: bd30 pop {r4, r5, pc} 800044a: ea7f 5c64 mvns.w ip, r4, asr #21 800044e: bf1a itte ne 8000450: 4619 movne r1, r3 8000452: 4610 movne r0, r2 8000454: ea7f 5c65 mvnseq.w ip, r5, asr #21 8000458: bf1c itt ne 800045a: 460b movne r3, r1 800045c: 4602 movne r2, r0 800045e: ea50 3401 orrs.w r4, r0, r1, lsl #12 8000462: bf06 itte eq 8000464: ea52 3503 orrseq.w r5, r2, r3, lsl #12 8000468: ea91 0f03 teqeq r1, r3 800046c: f441 2100 orrne.w r1, r1, #524288 ; 0x80000 8000470: bd30 pop {r4, r5, pc} 8000472: bf00 nop 08000474 <__aeabi_ui2d>: 8000474: f090 0f00 teq r0, #0 8000478: bf04 itt eq 800047a: 2100 moveq r1, #0 800047c: 4770 bxeq lr 800047e: b530 push {r4, r5, lr} 8000480: f44f 6480 mov.w r4, #1024 ; 0x400 8000484: f104 0432 add.w r4, r4, #50 ; 0x32 8000488: f04f 0500 mov.w r5, #0 800048c: f04f 0100 mov.w r1, #0 8000490: e750 b.n 8000334 <__adddf3+0x138> 8000492: bf00 nop 08000494 <__aeabi_i2d>: 8000494: f090 0f00 teq r0, #0 8000498: bf04 itt eq 800049a: 2100 moveq r1, #0 800049c: 4770 bxeq lr 800049e: b530 push {r4, r5, lr} 80004a0: f44f 6480 mov.w r4, #1024 ; 0x400 80004a4: f104 0432 add.w r4, r4, #50 ; 0x32 80004a8: f010 4500 ands.w r5, r0, #2147483648 ; 0x80000000 80004ac: bf48 it mi 80004ae: 4240 negmi r0, r0 80004b0: f04f 0100 mov.w r1, #0 80004b4: e73e b.n 8000334 <__adddf3+0x138> 80004b6: bf00 nop 080004b8 <__aeabi_f2d>: 80004b8: 0042 lsls r2, r0, #1 80004ba: ea4f 01e2 mov.w r1, r2, asr #3 80004be: ea4f 0131 mov.w r1, r1, rrx 80004c2: ea4f 7002 mov.w r0, r2, lsl #28 80004c6: bf1f itttt ne 80004c8: f012 437f andsne.w r3, r2, #4278190080 ; 0xff000000 80004cc: f093 4f7f teqne r3, #4278190080 ; 0xff000000 80004d0: f081 5160 eorne.w r1, r1, #939524096 ; 0x38000000 80004d4: 4770 bxne lr 80004d6: f032 427f bics.w r2, r2, #4278190080 ; 0xff000000 80004da: bf08 it eq 80004dc: 4770 bxeq lr 80004de: f093 4f7f teq r3, #4278190080 ; 0xff000000 80004e2: bf04 itt eq 80004e4: f441 2100 orreq.w r1, r1, #524288 ; 0x80000 80004e8: 4770 bxeq lr 80004ea: b530 push {r4, r5, lr} 80004ec: f44f 7460 mov.w r4, #896 ; 0x380 80004f0: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 80004f4: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 80004f8: e71c b.n 8000334 <__adddf3+0x138> 80004fa: bf00 nop 080004fc <__aeabi_ul2d>: 80004fc: ea50 0201 orrs.w r2, r0, r1 8000500: bf08 it eq 8000502: 4770 bxeq lr 8000504: b530 push {r4, r5, lr} 8000506: f04f 0500 mov.w r5, #0 800050a: e00a b.n 8000522 <__aeabi_l2d+0x16> 0800050c <__aeabi_l2d>: 800050c: ea50 0201 orrs.w r2, r0, r1 8000510: bf08 it eq 8000512: 4770 bxeq lr 8000514: b530 push {r4, r5, lr} 8000516: f011 4500 ands.w r5, r1, #2147483648 ; 0x80000000 800051a: d502 bpl.n 8000522 <__aeabi_l2d+0x16> 800051c: 4240 negs r0, r0 800051e: eb61 0141 sbc.w r1, r1, r1, lsl #1 8000522: f44f 6480 mov.w r4, #1024 ; 0x400 8000526: f104 0432 add.w r4, r4, #50 ; 0x32 800052a: ea5f 5c91 movs.w ip, r1, lsr #22 800052e: f43f aed8 beq.w 80002e2 <__adddf3+0xe6> 8000532: f04f 0203 mov.w r2, #3 8000536: ea5f 0cdc movs.w ip, ip, lsr #3 800053a: bf18 it ne 800053c: 3203 addne r2, #3 800053e: ea5f 0cdc movs.w ip, ip, lsr #3 8000542: bf18 it ne 8000544: 3203 addne r2, #3 8000546: eb02 02dc add.w r2, r2, ip, lsr #3 800054a: f1c2 0320 rsb r3, r2, #32 800054e: fa00 fc03 lsl.w ip, r0, r3 8000552: fa20 f002 lsr.w r0, r0, r2 8000556: fa01 fe03 lsl.w lr, r1, r3 800055a: ea40 000e orr.w r0, r0, lr 800055e: fa21 f102 lsr.w r1, r1, r2 8000562: 4414 add r4, r2 8000564: e6bd b.n 80002e2 <__adddf3+0xe6> 8000566: bf00 nop 08000568 <__aeabi_dmul>: 8000568: b570 push {r4, r5, r6, lr} 800056a: f04f 0cff mov.w ip, #255 ; 0xff 800056e: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700 8000572: ea1c 5411 ands.w r4, ip, r1, lsr #20 8000576: bf1d ittte ne 8000578: ea1c 5513 andsne.w r5, ip, r3, lsr #20 800057c: ea94 0f0c teqne r4, ip 8000580: ea95 0f0c teqne r5, ip 8000584: f000 f8de bleq 8000744 <__aeabi_dmul+0x1dc> 8000588: 442c add r4, r5 800058a: ea81 0603 eor.w r6, r1, r3 800058e: ea21 514c bic.w r1, r1, ip, lsl #21 8000592: ea23 534c bic.w r3, r3, ip, lsl #21 8000596: ea50 3501 orrs.w r5, r0, r1, lsl #12 800059a: bf18 it ne 800059c: ea52 3503 orrsne.w r5, r2, r3, lsl #12 80005a0: f441 1180 orr.w r1, r1, #1048576 ; 0x100000 80005a4: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 80005a8: d038 beq.n 800061c <__aeabi_dmul+0xb4> 80005aa: fba0 ce02 umull ip, lr, r0, r2 80005ae: f04f 0500 mov.w r5, #0 80005b2: fbe1 e502 umlal lr, r5, r1, r2 80005b6: f006 4200 and.w r2, r6, #2147483648 ; 0x80000000 80005ba: fbe0 e503 umlal lr, r5, r0, r3 80005be: f04f 0600 mov.w r6, #0 80005c2: fbe1 5603 umlal r5, r6, r1, r3 80005c6: f09c 0f00 teq ip, #0 80005ca: bf18 it ne 80005cc: f04e 0e01 orrne.w lr, lr, #1 80005d0: f1a4 04ff sub.w r4, r4, #255 ; 0xff 80005d4: f5b6 7f00 cmp.w r6, #512 ; 0x200 80005d8: f564 7440 sbc.w r4, r4, #768 ; 0x300 80005dc: d204 bcs.n 80005e8 <__aeabi_dmul+0x80> 80005de: ea5f 0e4e movs.w lr, lr, lsl #1 80005e2: 416d adcs r5, r5 80005e4: eb46 0606 adc.w r6, r6, r6 80005e8: ea42 21c6 orr.w r1, r2, r6, lsl #11 80005ec: ea41 5155 orr.w r1, r1, r5, lsr #21 80005f0: ea4f 20c5 mov.w r0, r5, lsl #11 80005f4: ea40 505e orr.w r0, r0, lr, lsr #21 80005f8: ea4f 2ece mov.w lr, lr, lsl #11 80005fc: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd 8000600: bf88 it hi 8000602: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700 8000606: d81e bhi.n 8000646 <__aeabi_dmul+0xde> 8000608: f1be 4f00 cmp.w lr, #2147483648 ; 0x80000000 800060c: bf08 it eq 800060e: ea5f 0e50 movseq.w lr, r0, lsr #1 8000612: f150 0000 adcs.w r0, r0, #0 8000616: eb41 5104 adc.w r1, r1, r4, lsl #20 800061a: bd70 pop {r4, r5, r6, pc} 800061c: f006 4600 and.w r6, r6, #2147483648 ; 0x80000000 8000620: ea46 0101 orr.w r1, r6, r1 8000624: ea40 0002 orr.w r0, r0, r2 8000628: ea81 0103 eor.w r1, r1, r3 800062c: ebb4 045c subs.w r4, r4, ip, lsr #1 8000630: bfc2 ittt gt 8000632: ebd4 050c rsbsgt r5, r4, ip 8000636: ea41 5104 orrgt.w r1, r1, r4, lsl #20 800063a: bd70 popgt {r4, r5, r6, pc} 800063c: f441 1180 orr.w r1, r1, #1048576 ; 0x100000 8000640: f04f 0e00 mov.w lr, #0 8000644: 3c01 subs r4, #1 8000646: f300 80ab bgt.w 80007a0 <__aeabi_dmul+0x238> 800064a: f114 0f36 cmn.w r4, #54 ; 0x36 800064e: bfde ittt le 8000650: 2000 movle r0, #0 8000652: f001 4100 andle.w r1, r1, #2147483648 ; 0x80000000 8000656: bd70 pople {r4, r5, r6, pc} 8000658: f1c4 0400 rsb r4, r4, #0 800065c: 3c20 subs r4, #32 800065e: da35 bge.n 80006cc <__aeabi_dmul+0x164> 8000660: 340c adds r4, #12 8000662: dc1b bgt.n 800069c <__aeabi_dmul+0x134> 8000664: f104 0414 add.w r4, r4, #20 8000668: f1c4 0520 rsb r5, r4, #32 800066c: fa00 f305 lsl.w r3, r0, r5 8000670: fa20 f004 lsr.w r0, r0, r4 8000674: fa01 f205 lsl.w r2, r1, r5 8000678: ea40 0002 orr.w r0, r0, r2 800067c: f001 4200 and.w r2, r1, #2147483648 ; 0x80000000 8000680: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 8000684: eb10 70d3 adds.w r0, r0, r3, lsr #31 8000688: fa21 f604 lsr.w r6, r1, r4 800068c: eb42 0106 adc.w r1, r2, r6 8000690: ea5e 0e43 orrs.w lr, lr, r3, lsl #1 8000694: bf08 it eq 8000696: ea20 70d3 biceq.w r0, r0, r3, lsr #31 800069a: bd70 pop {r4, r5, r6, pc} 800069c: f1c4 040c rsb r4, r4, #12 80006a0: f1c4 0520 rsb r5, r4, #32 80006a4: fa00 f304 lsl.w r3, r0, r4 80006a8: fa20 f005 lsr.w r0, r0, r5 80006ac: fa01 f204 lsl.w r2, r1, r4 80006b0: ea40 0002 orr.w r0, r0, r2 80006b4: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000 80006b8: eb10 70d3 adds.w r0, r0, r3, lsr #31 80006bc: f141 0100 adc.w r1, r1, #0 80006c0: ea5e 0e43 orrs.w lr, lr, r3, lsl #1 80006c4: bf08 it eq 80006c6: ea20 70d3 biceq.w r0, r0, r3, lsr #31 80006ca: bd70 pop {r4, r5, r6, pc} 80006cc: f1c4 0520 rsb r5, r4, #32 80006d0: fa00 f205 lsl.w r2, r0, r5 80006d4: ea4e 0e02 orr.w lr, lr, r2 80006d8: fa20 f304 lsr.w r3, r0, r4 80006dc: fa01 f205 lsl.w r2, r1, r5 80006e0: ea43 0302 orr.w r3, r3, r2 80006e4: fa21 f004 lsr.w r0, r1, r4 80006e8: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000 80006ec: fa21 f204 lsr.w r2, r1, r4 80006f0: ea20 0002 bic.w r0, r0, r2 80006f4: eb00 70d3 add.w r0, r0, r3, lsr #31 80006f8: ea5e 0e43 orrs.w lr, lr, r3, lsl #1 80006fc: bf08 it eq 80006fe: ea20 70d3 biceq.w r0, r0, r3, lsr #31 8000702: bd70 pop {r4, r5, r6, pc} 8000704: f094 0f00 teq r4, #0 8000708: d10f bne.n 800072a <__aeabi_dmul+0x1c2> 800070a: f001 4600 and.w r6, r1, #2147483648 ; 0x80000000 800070e: 0040 lsls r0, r0, #1 8000710: eb41 0101 adc.w r1, r1, r1 8000714: f411 1f80 tst.w r1, #1048576 ; 0x100000 8000718: bf08 it eq 800071a: 3c01 subeq r4, #1 800071c: d0f7 beq.n 800070e <__aeabi_dmul+0x1a6> 800071e: ea41 0106 orr.w r1, r1, r6 8000722: f095 0f00 teq r5, #0 8000726: bf18 it ne 8000728: 4770 bxne lr 800072a: f003 4600 and.w r6, r3, #2147483648 ; 0x80000000 800072e: 0052 lsls r2, r2, #1 8000730: eb43 0303 adc.w r3, r3, r3 8000734: f413 1f80 tst.w r3, #1048576 ; 0x100000 8000738: bf08 it eq 800073a: 3d01 subeq r5, #1 800073c: d0f7 beq.n 800072e <__aeabi_dmul+0x1c6> 800073e: ea43 0306 orr.w r3, r3, r6 8000742: 4770 bx lr 8000744: ea94 0f0c teq r4, ip 8000748: ea0c 5513 and.w r5, ip, r3, lsr #20 800074c: bf18 it ne 800074e: ea95 0f0c teqne r5, ip 8000752: d00c beq.n 800076e <__aeabi_dmul+0x206> 8000754: ea50 0641 orrs.w r6, r0, r1, lsl #1 8000758: bf18 it ne 800075a: ea52 0643 orrsne.w r6, r2, r3, lsl #1 800075e: d1d1 bne.n 8000704 <__aeabi_dmul+0x19c> 8000760: ea81 0103 eor.w r1, r1, r3 8000764: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000 8000768: f04f 0000 mov.w r0, #0 800076c: bd70 pop {r4, r5, r6, pc} 800076e: ea50 0641 orrs.w r6, r0, r1, lsl #1 8000772: bf06 itte eq 8000774: 4610 moveq r0, r2 8000776: 4619 moveq r1, r3 8000778: ea52 0643 orrsne.w r6, r2, r3, lsl #1 800077c: d019 beq.n 80007b2 <__aeabi_dmul+0x24a> 800077e: ea94 0f0c teq r4, ip 8000782: d102 bne.n 800078a <__aeabi_dmul+0x222> 8000784: ea50 3601 orrs.w r6, r0, r1, lsl #12 8000788: d113 bne.n 80007b2 <__aeabi_dmul+0x24a> 800078a: ea95 0f0c teq r5, ip 800078e: d105 bne.n 800079c <__aeabi_dmul+0x234> 8000790: ea52 3603 orrs.w r6, r2, r3, lsl #12 8000794: bf1c itt ne 8000796: 4610 movne r0, r2 8000798: 4619 movne r1, r3 800079a: d10a bne.n 80007b2 <__aeabi_dmul+0x24a> 800079c: ea81 0103 eor.w r1, r1, r3 80007a0: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000 80007a4: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000 80007a8: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000 80007ac: f04f 0000 mov.w r0, #0 80007b0: bd70 pop {r4, r5, r6, pc} 80007b2: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000 80007b6: f441 0178 orr.w r1, r1, #16252928 ; 0xf80000 80007ba: bd70 pop {r4, r5, r6, pc} 080007bc <__aeabi_ddiv>: 80007bc: b570 push {r4, r5, r6, lr} 80007be: f04f 0cff mov.w ip, #255 ; 0xff 80007c2: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700 80007c6: ea1c 5411 ands.w r4, ip, r1, lsr #20 80007ca: bf1d ittte ne 80007cc: ea1c 5513 andsne.w r5, ip, r3, lsr #20 80007d0: ea94 0f0c teqne r4, ip 80007d4: ea95 0f0c teqne r5, ip 80007d8: f000 f8a7 bleq 800092a <__aeabi_ddiv+0x16e> 80007dc: eba4 0405 sub.w r4, r4, r5 80007e0: ea81 0e03 eor.w lr, r1, r3 80007e4: ea52 3503 orrs.w r5, r2, r3, lsl #12 80007e8: ea4f 3101 mov.w r1, r1, lsl #12 80007ec: f000 8088 beq.w 8000900 <__aeabi_ddiv+0x144> 80007f0: ea4f 3303 mov.w r3, r3, lsl #12 80007f4: f04f 5580 mov.w r5, #268435456 ; 0x10000000 80007f8: ea45 1313 orr.w r3, r5, r3, lsr #4 80007fc: ea43 6312 orr.w r3, r3, r2, lsr #24 8000800: ea4f 2202 mov.w r2, r2, lsl #8 8000804: ea45 1511 orr.w r5, r5, r1, lsr #4 8000808: ea45 6510 orr.w r5, r5, r0, lsr #24 800080c: ea4f 2600 mov.w r6, r0, lsl #8 8000810: f00e 4100 and.w r1, lr, #2147483648 ; 0x80000000 8000814: 429d cmp r5, r3 8000816: bf08 it eq 8000818: 4296 cmpeq r6, r2 800081a: f144 04fd adc.w r4, r4, #253 ; 0xfd 800081e: f504 7440 add.w r4, r4, #768 ; 0x300 8000822: d202 bcs.n 800082a <__aeabi_ddiv+0x6e> 8000824: 085b lsrs r3, r3, #1 8000826: ea4f 0232 mov.w r2, r2, rrx 800082a: 1ab6 subs r6, r6, r2 800082c: eb65 0503 sbc.w r5, r5, r3 8000830: 085b lsrs r3, r3, #1 8000832: ea4f 0232 mov.w r2, r2, rrx 8000836: f44f 1080 mov.w r0, #1048576 ; 0x100000 800083a: f44f 2c00 mov.w ip, #524288 ; 0x80000 800083e: ebb6 0e02 subs.w lr, r6, r2 8000842: eb75 0e03 sbcs.w lr, r5, r3 8000846: bf22 ittt cs 8000848: 1ab6 subcs r6, r6, r2 800084a: 4675 movcs r5, lr 800084c: ea40 000c orrcs.w r0, r0, ip 8000850: 085b lsrs r3, r3, #1 8000852: ea4f 0232 mov.w r2, r2, rrx 8000856: ebb6 0e02 subs.w lr, r6, r2 800085a: eb75 0e03 sbcs.w lr, r5, r3 800085e: bf22 ittt cs 8000860: 1ab6 subcs r6, r6, r2 8000862: 4675 movcs r5, lr 8000864: ea40 005c orrcs.w r0, r0, ip, lsr #1 8000868: 085b lsrs r3, r3, #1 800086a: ea4f 0232 mov.w r2, r2, rrx 800086e: ebb6 0e02 subs.w lr, r6, r2 8000872: eb75 0e03 sbcs.w lr, r5, r3 8000876: bf22 ittt cs 8000878: 1ab6 subcs r6, r6, r2 800087a: 4675 movcs r5, lr 800087c: ea40 009c orrcs.w r0, r0, ip, lsr #2 8000880: 085b lsrs r3, r3, #1 8000882: ea4f 0232 mov.w r2, r2, rrx 8000886: ebb6 0e02 subs.w lr, r6, r2 800088a: eb75 0e03 sbcs.w lr, r5, r3 800088e: bf22 ittt cs 8000890: 1ab6 subcs r6, r6, r2 8000892: 4675 movcs r5, lr 8000894: ea40 00dc orrcs.w r0, r0, ip, lsr #3 8000898: ea55 0e06 orrs.w lr, r5, r6 800089c: d018 beq.n 80008d0 <__aeabi_ddiv+0x114> 800089e: ea4f 1505 mov.w r5, r5, lsl #4 80008a2: ea45 7516 orr.w r5, r5, r6, lsr #28 80008a6: ea4f 1606 mov.w r6, r6, lsl #4 80008aa: ea4f 03c3 mov.w r3, r3, lsl #3 80008ae: ea43 7352 orr.w r3, r3, r2, lsr #29 80008b2: ea4f 02c2 mov.w r2, r2, lsl #3 80008b6: ea5f 1c1c movs.w ip, ip, lsr #4 80008ba: d1c0 bne.n 800083e <__aeabi_ddiv+0x82> 80008bc: f411 1f80 tst.w r1, #1048576 ; 0x100000 80008c0: d10b bne.n 80008da <__aeabi_ddiv+0x11e> 80008c2: ea41 0100 orr.w r1, r1, r0 80008c6: f04f 0000 mov.w r0, #0 80008ca: f04f 4c00 mov.w ip, #2147483648 ; 0x80000000 80008ce: e7b6 b.n 800083e <__aeabi_ddiv+0x82> 80008d0: f411 1f80 tst.w r1, #1048576 ; 0x100000 80008d4: bf04 itt eq 80008d6: 4301 orreq r1, r0 80008d8: 2000 moveq r0, #0 80008da: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd 80008de: bf88 it hi 80008e0: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700 80008e4: f63f aeaf bhi.w 8000646 <__aeabi_dmul+0xde> 80008e8: ebb5 0c03 subs.w ip, r5, r3 80008ec: bf04 itt eq 80008ee: ebb6 0c02 subseq.w ip, r6, r2 80008f2: ea5f 0c50 movseq.w ip, r0, lsr #1 80008f6: f150 0000 adcs.w r0, r0, #0 80008fa: eb41 5104 adc.w r1, r1, r4, lsl #20 80008fe: bd70 pop {r4, r5, r6, pc} 8000900: f00e 4e00 and.w lr, lr, #2147483648 ; 0x80000000 8000904: ea4e 3111 orr.w r1, lr, r1, lsr #12 8000908: eb14 045c adds.w r4, r4, ip, lsr #1 800090c: bfc2 ittt gt 800090e: ebd4 050c rsbsgt r5, r4, ip 8000912: ea41 5104 orrgt.w r1, r1, r4, lsl #20 8000916: bd70 popgt {r4, r5, r6, pc} 8000918: f441 1180 orr.w r1, r1, #1048576 ; 0x100000 800091c: f04f 0e00 mov.w lr, #0 8000920: 3c01 subs r4, #1 8000922: e690 b.n 8000646 <__aeabi_dmul+0xde> 8000924: ea45 0e06 orr.w lr, r5, r6 8000928: e68d b.n 8000646 <__aeabi_dmul+0xde> 800092a: ea0c 5513 and.w r5, ip, r3, lsr #20 800092e: ea94 0f0c teq r4, ip 8000932: bf08 it eq 8000934: ea95 0f0c teqeq r5, ip 8000938: f43f af3b beq.w 80007b2 <__aeabi_dmul+0x24a> 800093c: ea94 0f0c teq r4, ip 8000940: d10a bne.n 8000958 <__aeabi_ddiv+0x19c> 8000942: ea50 3401 orrs.w r4, r0, r1, lsl #12 8000946: f47f af34 bne.w 80007b2 <__aeabi_dmul+0x24a> 800094a: ea95 0f0c teq r5, ip 800094e: f47f af25 bne.w 800079c <__aeabi_dmul+0x234> 8000952: 4610 mov r0, r2 8000954: 4619 mov r1, r3 8000956: e72c b.n 80007b2 <__aeabi_dmul+0x24a> 8000958: ea95 0f0c teq r5, ip 800095c: d106 bne.n 800096c <__aeabi_ddiv+0x1b0> 800095e: ea52 3503 orrs.w r5, r2, r3, lsl #12 8000962: f43f aefd beq.w 8000760 <__aeabi_dmul+0x1f8> 8000966: 4610 mov r0, r2 8000968: 4619 mov r1, r3 800096a: e722 b.n 80007b2 <__aeabi_dmul+0x24a> 800096c: ea50 0641 orrs.w r6, r0, r1, lsl #1 8000970: bf18 it ne 8000972: ea52 0643 orrsne.w r6, r2, r3, lsl #1 8000976: f47f aec5 bne.w 8000704 <__aeabi_dmul+0x19c> 800097a: ea50 0441 orrs.w r4, r0, r1, lsl #1 800097e: f47f af0d bne.w 800079c <__aeabi_dmul+0x234> 8000982: ea52 0543 orrs.w r5, r2, r3, lsl #1 8000986: f47f aeeb bne.w 8000760 <__aeabi_dmul+0x1f8> 800098a: e712 b.n 80007b2 <__aeabi_dmul+0x24a> 0800098c <__aeabi_d2uiz>: 800098c: 004a lsls r2, r1, #1 800098e: d211 bcs.n 80009b4 <__aeabi_d2uiz+0x28> 8000990: f512 1200 adds.w r2, r2, #2097152 ; 0x200000 8000994: d211 bcs.n 80009ba <__aeabi_d2uiz+0x2e> 8000996: d50d bpl.n 80009b4 <__aeabi_d2uiz+0x28> 8000998: f46f 7378 mvn.w r3, #992 ; 0x3e0 800099c: ebb3 5262 subs.w r2, r3, r2, asr #21 80009a0: d40e bmi.n 80009c0 <__aeabi_d2uiz+0x34> 80009a2: ea4f 23c1 mov.w r3, r1, lsl #11 80009a6: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000 80009aa: ea43 5350 orr.w r3, r3, r0, lsr #21 80009ae: fa23 f002 lsr.w r0, r3, r2 80009b2: 4770 bx lr 80009b4: f04f 0000 mov.w r0, #0 80009b8: 4770 bx lr 80009ba: ea50 3001 orrs.w r0, r0, r1, lsl #12 80009be: d102 bne.n 80009c6 <__aeabi_d2uiz+0x3a> 80009c0: f04f 30ff mov.w r0, #4294967295 80009c4: 4770 bx lr 80009c6: f04f 0000 mov.w r0, #0 80009ca: 4770 bx lr 080009cc <__aeabi_uldivmod>: 80009cc: b953 cbnz r3, 80009e4 <__aeabi_uldivmod+0x18> 80009ce: b94a cbnz r2, 80009e4 <__aeabi_uldivmod+0x18> 80009d0: 2900 cmp r1, #0 80009d2: bf08 it eq 80009d4: 2800 cmpeq r0, #0 80009d6: bf1c itt ne 80009d8: f04f 31ff movne.w r1, #4294967295 80009dc: f04f 30ff movne.w r0, #4294967295 80009e0: f000 b972 b.w 8000cc8 <__aeabi_idiv0> 80009e4: f1ad 0c08 sub.w ip, sp, #8 80009e8: e96d ce04 strd ip, lr, [sp, #-16]! 80009ec: f000 f806 bl 80009fc <__udivmoddi4> 80009f0: f8dd e004 ldr.w lr, [sp, #4] 80009f4: e9dd 2302 ldrd r2, r3, [sp, #8] 80009f8: b004 add sp, #16 80009fa: 4770 bx lr 080009fc <__udivmoddi4>: 80009fc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 8000a00: 9e08 ldr r6, [sp, #32] 8000a02: 4604 mov r4, r0 8000a04: 4688 mov r8, r1 8000a06: 2b00 cmp r3, #0 8000a08: d14b bne.n 8000aa2 <__udivmoddi4+0xa6> 8000a0a: 428a cmp r2, r1 8000a0c: 4615 mov r5, r2 8000a0e: d967 bls.n 8000ae0 <__udivmoddi4+0xe4> 8000a10: fab2 f282 clz r2, r2 8000a14: b14a cbz r2, 8000a2a <__udivmoddi4+0x2e> 8000a16: f1c2 0720 rsb r7, r2, #32 8000a1a: fa01 f302 lsl.w r3, r1, r2 8000a1e: fa20 f707 lsr.w r7, r0, r7 8000a22: 4095 lsls r5, r2 8000a24: ea47 0803 orr.w r8, r7, r3 8000a28: 4094 lsls r4, r2 8000a2a: ea4f 4e15 mov.w lr, r5, lsr #16 8000a2e: 0c23 lsrs r3, r4, #16 8000a30: fbb8 f7fe udiv r7, r8, lr 8000a34: fa1f fc85 uxth.w ip, r5 8000a38: fb0e 8817 mls r8, lr, r7, r8 8000a3c: ea43 4308 orr.w r3, r3, r8, lsl #16 8000a40: fb07 f10c mul.w r1, r7, ip 8000a44: 4299 cmp r1, r3 8000a46: d909 bls.n 8000a5c <__udivmoddi4+0x60> 8000a48: 18eb adds r3, r5, r3 8000a4a: f107 30ff add.w r0, r7, #4294967295 8000a4e: f080 811b bcs.w 8000c88 <__udivmoddi4+0x28c> 8000a52: 4299 cmp r1, r3 8000a54: f240 8118 bls.w 8000c88 <__udivmoddi4+0x28c> 8000a58: 3f02 subs r7, #2 8000a5a: 442b add r3, r5 8000a5c: 1a5b subs r3, r3, r1 8000a5e: b2a4 uxth r4, r4 8000a60: fbb3 f0fe udiv r0, r3, lr 8000a64: fb0e 3310 mls r3, lr, r0, r3 8000a68: ea44 4403 orr.w r4, r4, r3, lsl #16 8000a6c: fb00 fc0c mul.w ip, r0, ip 8000a70: 45a4 cmp ip, r4 8000a72: d909 bls.n 8000a88 <__udivmoddi4+0x8c> 8000a74: 192c adds r4, r5, r4 8000a76: f100 33ff add.w r3, r0, #4294967295 8000a7a: f080 8107 bcs.w 8000c8c <__udivmoddi4+0x290> 8000a7e: 45a4 cmp ip, r4 8000a80: f240 8104 bls.w 8000c8c <__udivmoddi4+0x290> 8000a84: 3802 subs r0, #2 8000a86: 442c add r4, r5 8000a88: ea40 4007 orr.w r0, r0, r7, lsl #16 8000a8c: eba4 040c sub.w r4, r4, ip 8000a90: 2700 movs r7, #0 8000a92: b11e cbz r6, 8000a9c <__udivmoddi4+0xa0> 8000a94: 40d4 lsrs r4, r2 8000a96: 2300 movs r3, #0 8000a98: e9c6 4300 strd r4, r3, [r6] 8000a9c: 4639 mov r1, r7 8000a9e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 8000aa2: 428b cmp r3, r1 8000aa4: d909 bls.n 8000aba <__udivmoddi4+0xbe> 8000aa6: 2e00 cmp r6, #0 8000aa8: f000 80eb beq.w 8000c82 <__udivmoddi4+0x286> 8000aac: 2700 movs r7, #0 8000aae: e9c6 0100 strd r0, r1, [r6] 8000ab2: 4638 mov r0, r7 8000ab4: 4639 mov r1, r7 8000ab6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 8000aba: fab3 f783 clz r7, r3 8000abe: 2f00 cmp r7, #0 8000ac0: d147 bne.n 8000b52 <__udivmoddi4+0x156> 8000ac2: 428b cmp r3, r1 8000ac4: d302 bcc.n 8000acc <__udivmoddi4+0xd0> 8000ac6: 4282 cmp r2, r0 8000ac8: f200 80fa bhi.w 8000cc0 <__udivmoddi4+0x2c4> 8000acc: 1a84 subs r4, r0, r2 8000ace: eb61 0303 sbc.w r3, r1, r3 8000ad2: 2001 movs r0, #1 8000ad4: 4698 mov r8, r3 8000ad6: 2e00 cmp r6, #0 8000ad8: d0e0 beq.n 8000a9c <__udivmoddi4+0xa0> 8000ada: e9c6 4800 strd r4, r8, [r6] 8000ade: e7dd b.n 8000a9c <__udivmoddi4+0xa0> 8000ae0: b902 cbnz r2, 8000ae4 <__udivmoddi4+0xe8> 8000ae2: deff udf #255 ; 0xff 8000ae4: fab2 f282 clz r2, r2 8000ae8: 2a00 cmp r2, #0 8000aea: f040 808f bne.w 8000c0c <__udivmoddi4+0x210> 8000aee: 1b49 subs r1, r1, r5 8000af0: ea4f 4e15 mov.w lr, r5, lsr #16 8000af4: fa1f f885 uxth.w r8, r5 8000af8: 2701 movs r7, #1 8000afa: fbb1 fcfe udiv ip, r1, lr 8000afe: 0c23 lsrs r3, r4, #16 8000b00: fb0e 111c mls r1, lr, ip, r1 8000b04: ea43 4301 orr.w r3, r3, r1, lsl #16 8000b08: fb08 f10c mul.w r1, r8, ip 8000b0c: 4299 cmp r1, r3 8000b0e: d907 bls.n 8000b20 <__udivmoddi4+0x124> 8000b10: 18eb adds r3, r5, r3 8000b12: f10c 30ff add.w r0, ip, #4294967295 8000b16: d202 bcs.n 8000b1e <__udivmoddi4+0x122> 8000b18: 4299 cmp r1, r3 8000b1a: f200 80cd bhi.w 8000cb8 <__udivmoddi4+0x2bc> 8000b1e: 4684 mov ip, r0 8000b20: 1a59 subs r1, r3, r1 8000b22: b2a3 uxth r3, r4 8000b24: fbb1 f0fe udiv r0, r1, lr 8000b28: fb0e 1410 mls r4, lr, r0, r1 8000b2c: ea43 4404 orr.w r4, r3, r4, lsl #16 8000b30: fb08 f800 mul.w r8, r8, r0 8000b34: 45a0 cmp r8, r4 8000b36: d907 bls.n 8000b48 <__udivmoddi4+0x14c> 8000b38: 192c adds r4, r5, r4 8000b3a: f100 33ff add.w r3, r0, #4294967295 8000b3e: d202 bcs.n 8000b46 <__udivmoddi4+0x14a> 8000b40: 45a0 cmp r8, r4 8000b42: f200 80b6 bhi.w 8000cb2 <__udivmoddi4+0x2b6> 8000b46: 4618 mov r0, r3 8000b48: eba4 0408 sub.w r4, r4, r8 8000b4c: ea40 400c orr.w r0, r0, ip, lsl #16 8000b50: e79f b.n 8000a92 <__udivmoddi4+0x96> 8000b52: f1c7 0c20 rsb ip, r7, #32 8000b56: 40bb lsls r3, r7 8000b58: fa22 fe0c lsr.w lr, r2, ip 8000b5c: ea4e 0e03 orr.w lr, lr, r3 8000b60: fa01 f407 lsl.w r4, r1, r7 8000b64: fa20 f50c lsr.w r5, r0, ip 8000b68: fa21 f30c lsr.w r3, r1, ip 8000b6c: ea4f 481e mov.w r8, lr, lsr #16 8000b70: 4325 orrs r5, r4 8000b72: fbb3 f9f8 udiv r9, r3, r8 8000b76: 0c2c lsrs r4, r5, #16 8000b78: fb08 3319 mls r3, r8, r9, r3 8000b7c: fa1f fa8e uxth.w sl, lr 8000b80: ea44 4303 orr.w r3, r4, r3, lsl #16 8000b84: fb09 f40a mul.w r4, r9, sl 8000b88: 429c cmp r4, r3 8000b8a: fa02 f207 lsl.w r2, r2, r7 8000b8e: fa00 f107 lsl.w r1, r0, r7 8000b92: d90b bls.n 8000bac <__udivmoddi4+0x1b0> 8000b94: eb1e 0303 adds.w r3, lr, r3 8000b98: f109 30ff add.w r0, r9, #4294967295 8000b9c: f080 8087 bcs.w 8000cae <__udivmoddi4+0x2b2> 8000ba0: 429c cmp r4, r3 8000ba2: f240 8084 bls.w 8000cae <__udivmoddi4+0x2b2> 8000ba6: f1a9 0902 sub.w r9, r9, #2 8000baa: 4473 add r3, lr 8000bac: 1b1b subs r3, r3, r4 8000bae: b2ad uxth r5, r5 8000bb0: fbb3 f0f8 udiv r0, r3, r8 8000bb4: fb08 3310 mls r3, r8, r0, r3 8000bb8: ea45 4403 orr.w r4, r5, r3, lsl #16 8000bbc: fb00 fa0a mul.w sl, r0, sl 8000bc0: 45a2 cmp sl, r4 8000bc2: d908 bls.n 8000bd6 <__udivmoddi4+0x1da> 8000bc4: eb1e 0404 adds.w r4, lr, r4 8000bc8: f100 33ff add.w r3, r0, #4294967295 8000bcc: d26b bcs.n 8000ca6 <__udivmoddi4+0x2aa> 8000bce: 45a2 cmp sl, r4 8000bd0: d969 bls.n 8000ca6 <__udivmoddi4+0x2aa> 8000bd2: 3802 subs r0, #2 8000bd4: 4474 add r4, lr 8000bd6: ea40 4009 orr.w r0, r0, r9, lsl #16 8000bda: fba0 8902 umull r8, r9, r0, r2 8000bde: eba4 040a sub.w r4, r4, sl 8000be2: 454c cmp r4, r9 8000be4: 46c2 mov sl, r8 8000be6: 464b mov r3, r9 8000be8: d354 bcc.n 8000c94 <__udivmoddi4+0x298> 8000bea: d051 beq.n 8000c90 <__udivmoddi4+0x294> 8000bec: 2e00 cmp r6, #0 8000bee: d069 beq.n 8000cc4 <__udivmoddi4+0x2c8> 8000bf0: ebb1 050a subs.w r5, r1, sl 8000bf4: eb64 0403 sbc.w r4, r4, r3 8000bf8: fa04 fc0c lsl.w ip, r4, ip 8000bfc: 40fd lsrs r5, r7 8000bfe: 40fc lsrs r4, r7 8000c00: ea4c 0505 orr.w r5, ip, r5 8000c04: e9c6 5400 strd r5, r4, [r6] 8000c08: 2700 movs r7, #0 8000c0a: e747 b.n 8000a9c <__udivmoddi4+0xa0> 8000c0c: f1c2 0320 rsb r3, r2, #32 8000c10: fa20 f703 lsr.w r7, r0, r3 8000c14: 4095 lsls r5, r2 8000c16: fa01 f002 lsl.w r0, r1, r2 8000c1a: fa21 f303 lsr.w r3, r1, r3 8000c1e: ea4f 4e15 mov.w lr, r5, lsr #16 8000c22: 4338 orrs r0, r7 8000c24: 0c01 lsrs r1, r0, #16 8000c26: fbb3 f7fe udiv r7, r3, lr 8000c2a: fa1f f885 uxth.w r8, r5 8000c2e: fb0e 3317 mls r3, lr, r7, r3 8000c32: ea41 4103 orr.w r1, r1, r3, lsl #16 8000c36: fb07 f308 mul.w r3, r7, r8 8000c3a: 428b cmp r3, r1 8000c3c: fa04 f402 lsl.w r4, r4, r2 8000c40: d907 bls.n 8000c52 <__udivmoddi4+0x256> 8000c42: 1869 adds r1, r5, r1 8000c44: f107 3cff add.w ip, r7, #4294967295 8000c48: d22f bcs.n 8000caa <__udivmoddi4+0x2ae> 8000c4a: 428b cmp r3, r1 8000c4c: d92d bls.n 8000caa <__udivmoddi4+0x2ae> 8000c4e: 3f02 subs r7, #2 8000c50: 4429 add r1, r5 8000c52: 1acb subs r3, r1, r3 8000c54: b281 uxth r1, r0 8000c56: fbb3 f0fe udiv r0, r3, lr 8000c5a: fb0e 3310 mls r3, lr, r0, r3 8000c5e: ea41 4103 orr.w r1, r1, r3, lsl #16 8000c62: fb00 f308 mul.w r3, r0, r8 8000c66: 428b cmp r3, r1 8000c68: d907 bls.n 8000c7a <__udivmoddi4+0x27e> 8000c6a: 1869 adds r1, r5, r1 8000c6c: f100 3cff add.w ip, r0, #4294967295 8000c70: d217 bcs.n 8000ca2 <__udivmoddi4+0x2a6> 8000c72: 428b cmp r3, r1 8000c74: d915 bls.n 8000ca2 <__udivmoddi4+0x2a6> 8000c76: 3802 subs r0, #2 8000c78: 4429 add r1, r5 8000c7a: 1ac9 subs r1, r1, r3 8000c7c: ea40 4707 orr.w r7, r0, r7, lsl #16 8000c80: e73b b.n 8000afa <__udivmoddi4+0xfe> 8000c82: 4637 mov r7, r6 8000c84: 4630 mov r0, r6 8000c86: e709 b.n 8000a9c <__udivmoddi4+0xa0> 8000c88: 4607 mov r7, r0 8000c8a: e6e7 b.n 8000a5c <__udivmoddi4+0x60> 8000c8c: 4618 mov r0, r3 8000c8e: e6fb b.n 8000a88 <__udivmoddi4+0x8c> 8000c90: 4541 cmp r1, r8 8000c92: d2ab bcs.n 8000bec <__udivmoddi4+0x1f0> 8000c94: ebb8 0a02 subs.w sl, r8, r2 8000c98: eb69 020e sbc.w r2, r9, lr 8000c9c: 3801 subs r0, #1 8000c9e: 4613 mov r3, r2 8000ca0: e7a4 b.n 8000bec <__udivmoddi4+0x1f0> 8000ca2: 4660 mov r0, ip 8000ca4: e7e9 b.n 8000c7a <__udivmoddi4+0x27e> 8000ca6: 4618 mov r0, r3 8000ca8: e795 b.n 8000bd6 <__udivmoddi4+0x1da> 8000caa: 4667 mov r7, ip 8000cac: e7d1 b.n 8000c52 <__udivmoddi4+0x256> 8000cae: 4681 mov r9, r0 8000cb0: e77c b.n 8000bac <__udivmoddi4+0x1b0> 8000cb2: 3802 subs r0, #2 8000cb4: 442c add r4, r5 8000cb6: e747 b.n 8000b48 <__udivmoddi4+0x14c> 8000cb8: f1ac 0c02 sub.w ip, ip, #2 8000cbc: 442b add r3, r5 8000cbe: e72f b.n 8000b20 <__udivmoddi4+0x124> 8000cc0: 4638 mov r0, r7 8000cc2: e708 b.n 8000ad6 <__udivmoddi4+0xda> 8000cc4: 4637 mov r7, r6 8000cc6: e6e9 b.n 8000a9c <__udivmoddi4+0xa0> 08000cc8 <__aeabi_idiv0>: 8000cc8: 4770 bx lr 8000cca: bf00 nop 08000ccc
: /** * @brief The application entry point. * @retval int */ int main(void) { 8000ccc: b580 push {r7, lr} 8000cce: af00 add r7, sp, #0 /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); 8000cd0: f002 fb3a bl 8003348 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); 8000cd4: f000 f85a bl 8000d8c /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); 8000cd8: f000 f98c bl 8000ff4 MX_SPI4_Init(); 8000cdc: f000 f914 bl 8000f08 MX_TIM6_Init(); 8000ce0: f000 f948 bl 8000f74 MX_ADC3_Init(); 8000ce4: f000 f8bc bl 8000e60 /* USER CODE BEGIN 2 */ updateWS2812BData(); 8000ce8: f001 ffbc bl 8002c64 HAL_SPI_Transmit_IT(&hspi4, (uint8_t*) &LEDData, (uint16_t) 66 * 3 * 3); 8000cec: f240 2252 movw r2, #594 ; 0x252 8000cf0: 4921 ldr r1, [pc, #132] ; (8000d78 ) 8000cf2: 4822 ldr r0, [pc, #136] ; (8000d7c ) 8000cf4: f003 ff34 bl 8004b60 HAL_ADC_Start(&hadc3); 8000cf8: 4821 ldr r0, [pc, #132] ; (8000d80 ) 8000cfa: f002 fbfd bl 80034f8 /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if(LEDDesign_PendingChange){ 8000cfe: 4b21 ldr r3, [pc, #132] ; (8000d84 ) 8000d00: 781b ldrb r3, [r3, #0] 8000d02: 2b00 cmp r3, #0 8000d04: d002 beq.n 8000d0c LEDDesign_Off(); 8000d06: f000 fc67 bl 80015d8 8000d0a: e031 b.n 8000d70 }else{ switch (LEDMode) { 8000d0c: 4b1e ldr r3, [pc, #120] ; (8000d88 ) 8000d0e: 781b ldrb r3, [r3, #0] 8000d10: 2b07 cmp r3, #7 8000d12: d82b bhi.n 8000d6c 8000d14: a201 add r2, pc, #4 ; (adr r2, 8000d1c ) 8000d16: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8000d1a: bf00 nop 8000d1c: 08000d3d .word 0x08000d3d 8000d20: 08000d43 .word 0x08000d43 8000d24: 08000d49 .word 0x08000d49 8000d28: 08000d4f .word 0x08000d4f 8000d2c: 08000d55 .word 0x08000d55 8000d30: 08000d5b .word 0x08000d5b 8000d34: 08000d61 .word 0x08000d61 8000d38: 08000d67 .word 0x08000d67 case 0: LEDDesign_Smile(); 8000d3c: f000 fd9c bl 8001878 break; 8000d40: e016 b.n 8000d70 case 1: LEDDesign_Smile_Audio(); 8000d42: f001 f85d bl 8001e00 break; 8000d46: e013 b.n 8000d70 case 2: LEDDesign_Crazy(); 8000d48: f000 fd56 bl 80017f8 break; 8000d4c: e010 b.n 8000d70 case 3: LEDDesign_SuperCrazy(); 8000d4e: f001 fd67 bl 8002820 break; 8000d52: e00d b.n 8000d70 case 4: LEDDesign_ColorWhite(); 8000d54: f000 fc68 bl 8001628 break; 8000d58: e00a b.n 8000d70 case 5: LEDDesign_ColorRed(); 8000d5a: f000 fd0d bl 8001778 break; 8000d5e: e007 b.n 8000d70 case 6: LEDDesign_ColorGreen(); 8000d60: f000 fcca bl 80016f8 break; 8000d64: e004 b.n 8000d70 case 7: LEDDesign_ColorBlue(); 8000d66: f000 fc87 bl 8001678 break; 8000d6a: e001 b.n 8000d70 default: LEDDesign_Off(); 8000d6c: f000 fc34 bl 80015d8 } } updateWS2812BData(); 8000d70: f001 ff78 bl 8002c64 if(LEDDesign_PendingChange){ 8000d74: e7c3 b.n 8000cfe 8000d76: bf00 nop 8000d78: 20000094 .word 0x20000094 8000d7c: 200003fc .word 0x200003fc 8000d80: 200003b4 .word 0x200003b4 8000d84: 20000091 .word 0x20000091 8000d88: 20000090 .word 0x20000090 08000d8c : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { 8000d8c: b580 push {r7, lr} 8000d8e: b094 sub sp, #80 ; 0x50 8000d90: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; 8000d92: f107 0320 add.w r3, r7, #32 8000d96: 2230 movs r2, #48 ; 0x30 8000d98: 2100 movs r1, #0 8000d9a: 4618 mov r0, r3 8000d9c: f004 fd08 bl 80057b0 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; 8000da0: f107 030c add.w r3, r7, #12 8000da4: 2200 movs r2, #0 8000da6: 601a str r2, [r3, #0] 8000da8: 605a str r2, [r3, #4] 8000daa: 609a str r2, [r3, #8] 8000dac: 60da str r2, [r3, #12] 8000dae: 611a str r2, [r3, #16] /** Configure the main internal regulator output voltage */ __HAL_RCC_PWR_CLK_ENABLE(); 8000db0: 2300 movs r3, #0 8000db2: 60bb str r3, [r7, #8] 8000db4: 4b28 ldr r3, [pc, #160] ; (8000e58 ) 8000db6: 6c1b ldr r3, [r3, #64] ; 0x40 8000db8: 4a27 ldr r2, [pc, #156] ; (8000e58 ) 8000dba: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 8000dbe: 6413 str r3, [r2, #64] ; 0x40 8000dc0: 4b25 ldr r3, [pc, #148] ; (8000e58 ) 8000dc2: 6c1b ldr r3, [r3, #64] ; 0x40 8000dc4: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 8000dc8: 60bb str r3, [r7, #8] 8000dca: 68bb ldr r3, [r7, #8] __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); 8000dcc: 2300 movs r3, #0 8000dce: 607b str r3, [r7, #4] 8000dd0: 4b22 ldr r3, [pc, #136] ; (8000e5c ) 8000dd2: 681b ldr r3, [r3, #0] 8000dd4: 4a21 ldr r2, [pc, #132] ; (8000e5c ) 8000dd6: f443 4340 orr.w r3, r3, #49152 ; 0xc000 8000dda: 6013 str r3, [r2, #0] 8000ddc: 4b1f ldr r3, [pc, #124] ; (8000e5c ) 8000dde: 681b ldr r3, [r3, #0] 8000de0: f403 4340 and.w r3, r3, #49152 ; 0xc000 8000de4: 607b str r3, [r7, #4] 8000de6: 687b ldr r3, [r7, #4] /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; 8000de8: 2301 movs r3, #1 8000dea: 623b str r3, [r7, #32] RCC_OscInitStruct.HSEState = RCC_HSE_ON; 8000dec: f44f 3380 mov.w r3, #65536 ; 0x10000 8000df0: 627b str r3, [r7, #36] ; 0x24 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; 8000df2: 2302 movs r3, #2 8000df4: 63bb str r3, [r7, #56] ; 0x38 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; 8000df6: f44f 0380 mov.w r3, #4194304 ; 0x400000 8000dfa: 63fb str r3, [r7, #60] ; 0x3c RCC_OscInitStruct.PLL.PLLM = 4; 8000dfc: 2304 movs r3, #4 8000dfe: 643b str r3, [r7, #64] ; 0x40 RCC_OscInitStruct.PLL.PLLN = 160; 8000e00: 23a0 movs r3, #160 ; 0xa0 8000e02: 647b str r3, [r7, #68] ; 0x44 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; 8000e04: 2302 movs r3, #2 8000e06: 64bb str r3, [r7, #72] ; 0x48 RCC_OscInitStruct.PLL.PLLQ = 7; 8000e08: 2307 movs r3, #7 8000e0a: 64fb str r3, [r7, #76] ; 0x4c if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 8000e0c: f107 0320 add.w r3, r7, #32 8000e10: 4618 mov r0, r3 8000e12: f003 fa13 bl 800423c 8000e16: 4603 mov r3, r0 8000e18: 2b00 cmp r3, #0 8000e1a: d001 beq.n 8000e20 { Error_Handler(); 8000e1c: f002 f8c2 bl 8002fa4 } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK 8000e20: 230f movs r3, #15 8000e22: 60fb str r3, [r7, #12] |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; 8000e24: 2302 movs r3, #2 8000e26: 613b str r3, [r7, #16] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; 8000e28: 2300 movs r3, #0 8000e2a: 617b str r3, [r7, #20] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; 8000e2c: f44f 53a0 mov.w r3, #5120 ; 0x1400 8000e30: 61bb str r3, [r7, #24] RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; 8000e32: f44f 5380 mov.w r3, #4096 ; 0x1000 8000e36: 61fb str r3, [r7, #28] if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) 8000e38: f107 030c add.w r3, r7, #12 8000e3c: 2105 movs r1, #5 8000e3e: 4618 mov r0, r3 8000e40: f003 fc6c bl 800471c 8000e44: 4603 mov r3, r0 8000e46: 2b00 cmp r3, #0 8000e48: d001 beq.n 8000e4e { Error_Handler(); 8000e4a: f002 f8ab bl 8002fa4 } } 8000e4e: bf00 nop 8000e50: 3750 adds r7, #80 ; 0x50 8000e52: 46bd mov sp, r7 8000e54: bd80 pop {r7, pc} 8000e56: bf00 nop 8000e58: 40023800 .word 0x40023800 8000e5c: 40007000 .word 0x40007000 08000e60 : * @brief ADC3 Initialization Function * @param None * @retval None */ static void MX_ADC3_Init(void) { 8000e60: b580 push {r7, lr} 8000e62: b084 sub sp, #16 8000e64: af00 add r7, sp, #0 /* USER CODE BEGIN ADC3_Init 0 */ /* USER CODE END ADC3_Init 0 */ ADC_ChannelConfTypeDef sConfig = {0}; 8000e66: 463b mov r3, r7 8000e68: 2200 movs r2, #0 8000e6a: 601a str r2, [r3, #0] 8000e6c: 605a str r2, [r3, #4] 8000e6e: 609a str r2, [r3, #8] 8000e70: 60da str r2, [r3, #12] /* USER CODE BEGIN ADC3_Init 1 */ /* USER CODE END ADC3_Init 1 */ /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) */ hadc3.Instance = ADC3; 8000e72: 4b22 ldr r3, [pc, #136] ; (8000efc ) 8000e74: 4a22 ldr r2, [pc, #136] ; (8000f00 ) 8000e76: 601a str r2, [r3, #0] hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; 8000e78: 4b20 ldr r3, [pc, #128] ; (8000efc ) 8000e7a: f44f 3280 mov.w r2, #65536 ; 0x10000 8000e7e: 605a str r2, [r3, #4] hadc3.Init.Resolution = ADC_RESOLUTION_8B; 8000e80: 4b1e ldr r3, [pc, #120] ; (8000efc ) 8000e82: f04f 7200 mov.w r2, #33554432 ; 0x2000000 8000e86: 609a str r2, [r3, #8] hadc3.Init.ScanConvMode = DISABLE; 8000e88: 4b1c ldr r3, [pc, #112] ; (8000efc ) 8000e8a: 2200 movs r2, #0 8000e8c: 611a str r2, [r3, #16] hadc3.Init.ContinuousConvMode = DISABLE; 8000e8e: 4b1b ldr r3, [pc, #108] ; (8000efc ) 8000e90: 2200 movs r2, #0 8000e92: 761a strb r2, [r3, #24] hadc3.Init.DiscontinuousConvMode = DISABLE; 8000e94: 4b19 ldr r3, [pc, #100] ; (8000efc ) 8000e96: 2200 movs r2, #0 8000e98: f883 2020 strb.w r2, [r3, #32] hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; 8000e9c: 4b17 ldr r3, [pc, #92] ; (8000efc ) 8000e9e: 2200 movs r2, #0 8000ea0: 62da str r2, [r3, #44] ; 0x2c hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START; 8000ea2: 4b16 ldr r3, [pc, #88] ; (8000efc ) 8000ea4: 4a17 ldr r2, [pc, #92] ; (8000f04 ) 8000ea6: 629a str r2, [r3, #40] ; 0x28 hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT; 8000ea8: 4b14 ldr r3, [pc, #80] ; (8000efc ) 8000eaa: 2200 movs r2, #0 8000eac: 60da str r2, [r3, #12] hadc3.Init.NbrOfConversion = 1; 8000eae: 4b13 ldr r3, [pc, #76] ; (8000efc ) 8000eb0: 2201 movs r2, #1 8000eb2: 61da str r2, [r3, #28] hadc3.Init.DMAContinuousRequests = DISABLE; 8000eb4: 4b11 ldr r3, [pc, #68] ; (8000efc ) 8000eb6: 2200 movs r2, #0 8000eb8: f883 2030 strb.w r2, [r3, #48] ; 0x30 hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV; 8000ebc: 4b0f ldr r3, [pc, #60] ; (8000efc ) 8000ebe: 2201 movs r2, #1 8000ec0: 615a str r2, [r3, #20] if (HAL_ADC_Init(&hadc3) != HAL_OK) 8000ec2: 480e ldr r0, [pc, #56] ; (8000efc ) 8000ec4: f002 fad4 bl 8003470 8000ec8: 4603 mov r3, r0 8000eca: 2b00 cmp r3, #0 8000ecc: d001 beq.n 8000ed2 { Error_Handler(); 8000ece: f002 f869 bl 8002fa4 } /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. */ sConfig.Channel = ADC_CHANNEL_4; 8000ed2: 2304 movs r3, #4 8000ed4: 603b str r3, [r7, #0] sConfig.Rank = 1; 8000ed6: 2301 movs r3, #1 8000ed8: 607b str r3, [r7, #4] sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES; 8000eda: 2300 movs r3, #0 8000edc: 60bb str r3, [r7, #8] if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK) 8000ede: 463b mov r3, r7 8000ee0: 4619 mov r1, r3 8000ee2: 4806 ldr r0, [pc, #24] ; (8000efc ) 8000ee4: f002 fc60 bl 80037a8 8000ee8: 4603 mov r3, r0 8000eea: 2b00 cmp r3, #0 8000eec: d001 beq.n 8000ef2 { Error_Handler(); 8000eee: f002 f859 bl 8002fa4 } /* USER CODE BEGIN ADC3_Init 2 */ /* USER CODE END ADC3_Init 2 */ } 8000ef2: bf00 nop 8000ef4: 3710 adds r7, #16 8000ef6: 46bd mov sp, r7 8000ef8: bd80 pop {r7, pc} 8000efa: bf00 nop 8000efc: 200003b4 .word 0x200003b4 8000f00: 40012200 .word 0x40012200 8000f04: 0f000001 .word 0x0f000001 08000f08 : * @brief SPI4 Initialization Function * @param None * @retval None */ static void MX_SPI4_Init(void) { 8000f08: b580 push {r7, lr} 8000f0a: af00 add r7, sp, #0 /* USER CODE BEGIN SPI4_Init 1 */ /* USER CODE END SPI4_Init 1 */ /* SPI4 parameter configuration*/ hspi4.Instance = SPI4; 8000f0c: 4b17 ldr r3, [pc, #92] ; (8000f6c ) 8000f0e: 4a18 ldr r2, [pc, #96] ; (8000f70 ) 8000f10: 601a str r2, [r3, #0] hspi4.Init.Mode = SPI_MODE_MASTER; 8000f12: 4b16 ldr r3, [pc, #88] ; (8000f6c ) 8000f14: f44f 7282 mov.w r2, #260 ; 0x104 8000f18: 605a str r2, [r3, #4] hspi4.Init.Direction = SPI_DIRECTION_2LINES; 8000f1a: 4b14 ldr r3, [pc, #80] ; (8000f6c ) 8000f1c: 2200 movs r2, #0 8000f1e: 609a str r2, [r3, #8] hspi4.Init.DataSize = SPI_DATASIZE_8BIT; 8000f20: 4b12 ldr r3, [pc, #72] ; (8000f6c ) 8000f22: 2200 movs r2, #0 8000f24: 60da str r2, [r3, #12] hspi4.Init.CLKPolarity = SPI_POLARITY_LOW; 8000f26: 4b11 ldr r3, [pc, #68] ; (8000f6c ) 8000f28: 2200 movs r2, #0 8000f2a: 611a str r2, [r3, #16] hspi4.Init.CLKPhase = SPI_PHASE_1EDGE; 8000f2c: 4b0f ldr r3, [pc, #60] ; (8000f6c ) 8000f2e: 2200 movs r2, #0 8000f30: 615a str r2, [r3, #20] hspi4.Init.NSS = SPI_NSS_SOFT; 8000f32: 4b0e ldr r3, [pc, #56] ; (8000f6c ) 8000f34: f44f 7200 mov.w r2, #512 ; 0x200 8000f38: 619a str r2, [r3, #24] hspi4.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32; 8000f3a: 4b0c ldr r3, [pc, #48] ; (8000f6c ) 8000f3c: 2220 movs r2, #32 8000f3e: 61da str r2, [r3, #28] hspi4.Init.FirstBit = SPI_FIRSTBIT_MSB; 8000f40: 4b0a ldr r3, [pc, #40] ; (8000f6c ) 8000f42: 2200 movs r2, #0 8000f44: 621a str r2, [r3, #32] hspi4.Init.TIMode = SPI_TIMODE_DISABLE; 8000f46: 4b09 ldr r3, [pc, #36] ; (8000f6c ) 8000f48: 2200 movs r2, #0 8000f4a: 625a str r2, [r3, #36] ; 0x24 hspi4.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; 8000f4c: 4b07 ldr r3, [pc, #28] ; (8000f6c ) 8000f4e: 2200 movs r2, #0 8000f50: 629a str r2, [r3, #40] ; 0x28 hspi4.Init.CRCPolynomial = 10; 8000f52: 4b06 ldr r3, [pc, #24] ; (8000f6c ) 8000f54: 220a movs r2, #10 8000f56: 62da str r2, [r3, #44] ; 0x2c if (HAL_SPI_Init(&hspi4) != HAL_OK) 8000f58: 4804 ldr r0, [pc, #16] ; (8000f6c ) 8000f5a: f003 fd9d bl 8004a98 8000f5e: 4603 mov r3, r0 8000f60: 2b00 cmp r3, #0 8000f62: d001 beq.n 8000f68 { Error_Handler(); 8000f64: f002 f81e bl 8002fa4 } /* USER CODE BEGIN SPI4_Init 2 */ /* USER CODE END SPI4_Init 2 */ } 8000f68: bf00 nop 8000f6a: bd80 pop {r7, pc} 8000f6c: 200003fc .word 0x200003fc 8000f70: 40013400 .word 0x40013400 08000f74 : * @brief TIM6 Initialization Function * @param None * @retval None */ static void MX_TIM6_Init(void) { 8000f74: b580 push {r7, lr} 8000f76: b082 sub sp, #8 8000f78: af00 add r7, sp, #0 /* USER CODE BEGIN TIM6_Init 0 */ /* USER CODE END TIM6_Init 0 */ TIM_MasterConfigTypeDef sMasterConfig = {0}; 8000f7a: 463b mov r3, r7 8000f7c: 2200 movs r2, #0 8000f7e: 601a str r2, [r3, #0] 8000f80: 605a str r2, [r3, #4] /* USER CODE BEGIN TIM6_Init 1 */ /* USER CODE END TIM6_Init 1 */ htim6.Instance = TIM6; 8000f82: 4b1a ldr r3, [pc, #104] ; (8000fec ) 8000f84: 4a1a ldr r2, [pc, #104] ; (8000ff0 ) 8000f86: 601a str r2, [r3, #0] htim6.Init.Prescaler = 4000; 8000f88: 4b18 ldr r3, [pc, #96] ; (8000fec ) 8000f8a: f44f 627a mov.w r2, #4000 ; 0xfa0 8000f8e: 605a str r2, [r3, #4] htim6.Init.CounterMode = TIM_COUNTERMODE_UP; 8000f90: 4b16 ldr r3, [pc, #88] ; (8000fec ) 8000f92: 2200 movs r2, #0 8000f94: 609a str r2, [r3, #8] htim6.Init.Period = 10000; 8000f96: 4b15 ldr r3, [pc, #84] ; (8000fec ) 8000f98: f242 7210 movw r2, #10000 ; 0x2710 8000f9c: 60da str r2, [r3, #12] htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; 8000f9e: 4b13 ldr r3, [pc, #76] ; (8000fec ) 8000fa0: 2280 movs r2, #128 ; 0x80 8000fa2: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim6) != HAL_OK) 8000fa4: 4811 ldr r0, [pc, #68] ; (8000fec ) 8000fa6: f004 f8d9 bl 800515c 8000faa: 4603 mov r3, r0 8000fac: 2b00 cmp r3, #0 8000fae: d001 beq.n 8000fb4 { Error_Handler(); 8000fb0: f001 fff8 bl 8002fa4 } if (HAL_TIM_OnePulse_Init(&htim6, TIM_OPMODE_SINGLE) != HAL_OK) 8000fb4: 2108 movs r1, #8 8000fb6: 480d ldr r0, [pc, #52] ; (8000fec ) 8000fb8: f004 f91f bl 80051fa 8000fbc: 4603 mov r3, r0 8000fbe: 2b00 cmp r3, #0 8000fc0: d001 beq.n 8000fc6 { Error_Handler(); 8000fc2: f001 ffef bl 8002fa4 } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; 8000fc6: 2300 movs r3, #0 8000fc8: 603b str r3, [r7, #0] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; 8000fca: 2300 movs r3, #0 8000fcc: 607b str r3, [r7, #4] if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) 8000fce: 463b mov r3, r7 8000fd0: 4619 mov r1, r3 8000fd2: 4806 ldr r0, [pc, #24] ; (8000fec ) 8000fd4: f004 fb32 bl 800563c 8000fd8: 4603 mov r3, r0 8000fda: 2b00 cmp r3, #0 8000fdc: d001 beq.n 8000fe2 { Error_Handler(); 8000fde: f001 ffe1 bl 8002fa4 } /* USER CODE BEGIN TIM6_Init 2 */ /* USER CODE END TIM6_Init 2 */ } 8000fe2: bf00 nop 8000fe4: 3708 adds r7, #8 8000fe6: 46bd mov sp, r7 8000fe8: bd80 pop {r7, pc} 8000fea: bf00 nop 8000fec: 20000454 .word 0x20000454 8000ff0: 40001000 .word 0x40001000 08000ff4 : * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { 8000ff4: b580 push {r7, lr} 8000ff6: b08e sub sp, #56 ; 0x38 8000ff8: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; 8000ffa: f107 0324 add.w r3, r7, #36 ; 0x24 8000ffe: 2200 movs r2, #0 8001000: 601a str r2, [r3, #0] 8001002: 605a str r2, [r3, #4] 8001004: 609a str r2, [r3, #8] 8001006: 60da str r2, [r3, #12] 8001008: 611a str r2, [r3, #16] /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOE_CLK_ENABLE(); 800100a: 2300 movs r3, #0 800100c: 623b str r3, [r7, #32] 800100e: 4bb0 ldr r3, [pc, #704] ; (80012d0 ) 8001010: 6b1b ldr r3, [r3, #48] ; 0x30 8001012: 4aaf ldr r2, [pc, #700] ; (80012d0 ) 8001014: f043 0310 orr.w r3, r3, #16 8001018: 6313 str r3, [r2, #48] ; 0x30 800101a: 4bad ldr r3, [pc, #692] ; (80012d0 ) 800101c: 6b1b ldr r3, [r3, #48] ; 0x30 800101e: f003 0310 and.w r3, r3, #16 8001022: 623b str r3, [r7, #32] 8001024: 6a3b ldr r3, [r7, #32] __HAL_RCC_GPIOC_CLK_ENABLE(); 8001026: 2300 movs r3, #0 8001028: 61fb str r3, [r7, #28] 800102a: 4ba9 ldr r3, [pc, #676] ; (80012d0 ) 800102c: 6b1b ldr r3, [r3, #48] ; 0x30 800102e: 4aa8 ldr r2, [pc, #672] ; (80012d0 ) 8001030: f043 0304 orr.w r3, r3, #4 8001034: 6313 str r3, [r2, #48] ; 0x30 8001036: 4ba6 ldr r3, [pc, #664] ; (80012d0 ) 8001038: 6b1b ldr r3, [r3, #48] ; 0x30 800103a: f003 0304 and.w r3, r3, #4 800103e: 61fb str r3, [r7, #28] 8001040: 69fb ldr r3, [r7, #28] __HAL_RCC_GPIOF_CLK_ENABLE(); 8001042: 2300 movs r3, #0 8001044: 61bb str r3, [r7, #24] 8001046: 4ba2 ldr r3, [pc, #648] ; (80012d0 ) 8001048: 6b1b ldr r3, [r3, #48] ; 0x30 800104a: 4aa1 ldr r2, [pc, #644] ; (80012d0 ) 800104c: f043 0320 orr.w r3, r3, #32 8001050: 6313 str r3, [r2, #48] ; 0x30 8001052: 4b9f ldr r3, [pc, #636] ; (80012d0 ) 8001054: 6b1b ldr r3, [r3, #48] ; 0x30 8001056: f003 0320 and.w r3, r3, #32 800105a: 61bb str r3, [r7, #24] 800105c: 69bb ldr r3, [r7, #24] __HAL_RCC_GPIOH_CLK_ENABLE(); 800105e: 2300 movs r3, #0 8001060: 617b str r3, [r7, #20] 8001062: 4b9b ldr r3, [pc, #620] ; (80012d0 ) 8001064: 6b1b ldr r3, [r3, #48] ; 0x30 8001066: 4a9a ldr r2, [pc, #616] ; (80012d0 ) 8001068: f043 0380 orr.w r3, r3, #128 ; 0x80 800106c: 6313 str r3, [r2, #48] ; 0x30 800106e: 4b98 ldr r3, [pc, #608] ; (80012d0 ) 8001070: 6b1b ldr r3, [r3, #48] ; 0x30 8001072: f003 0380 and.w r3, r3, #128 ; 0x80 8001076: 617b str r3, [r7, #20] 8001078: 697b ldr r3, [r7, #20] __HAL_RCC_GPIOA_CLK_ENABLE(); 800107a: 2300 movs r3, #0 800107c: 613b str r3, [r7, #16] 800107e: 4b94 ldr r3, [pc, #592] ; (80012d0 ) 8001080: 6b1b ldr r3, [r3, #48] ; 0x30 8001082: 4a93 ldr r2, [pc, #588] ; (80012d0 ) 8001084: f043 0301 orr.w r3, r3, #1 8001088: 6313 str r3, [r2, #48] ; 0x30 800108a: 4b91 ldr r3, [pc, #580] ; (80012d0 ) 800108c: 6b1b ldr r3, [r3, #48] ; 0x30 800108e: f003 0301 and.w r3, r3, #1 8001092: 613b str r3, [r7, #16] 8001094: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOB_CLK_ENABLE(); 8001096: 2300 movs r3, #0 8001098: 60fb str r3, [r7, #12] 800109a: 4b8d ldr r3, [pc, #564] ; (80012d0 ) 800109c: 6b1b ldr r3, [r3, #48] ; 0x30 800109e: 4a8c ldr r2, [pc, #560] ; (80012d0 ) 80010a0: f043 0302 orr.w r3, r3, #2 80010a4: 6313 str r3, [r2, #48] ; 0x30 80010a6: 4b8a ldr r3, [pc, #552] ; (80012d0 ) 80010a8: 6b1b ldr r3, [r3, #48] ; 0x30 80010aa: f003 0302 and.w r3, r3, #2 80010ae: 60fb str r3, [r7, #12] 80010b0: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOG_CLK_ENABLE(); 80010b2: 2300 movs r3, #0 80010b4: 60bb str r3, [r7, #8] 80010b6: 4b86 ldr r3, [pc, #536] ; (80012d0 ) 80010b8: 6b1b ldr r3, [r3, #48] ; 0x30 80010ba: 4a85 ldr r2, [pc, #532] ; (80012d0 ) 80010bc: f043 0340 orr.w r3, r3, #64 ; 0x40 80010c0: 6313 str r3, [r2, #48] ; 0x30 80010c2: 4b83 ldr r3, [pc, #524] ; (80012d0 ) 80010c4: 6b1b ldr r3, [r3, #48] ; 0x30 80010c6: f003 0340 and.w r3, r3, #64 ; 0x40 80010ca: 60bb str r3, [r7, #8] 80010cc: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOD_CLK_ENABLE(); 80010ce: 2300 movs r3, #0 80010d0: 607b str r3, [r7, #4] 80010d2: 4b7f ldr r3, [pc, #508] ; (80012d0 ) 80010d4: 6b1b ldr r3, [r3, #48] ; 0x30 80010d6: 4a7e ldr r2, [pc, #504] ; (80012d0 ) 80010d8: f043 0308 orr.w r3, r3, #8 80010dc: 6313 str r3, [r2, #48] ; 0x30 80010de: 4b7c ldr r3, [pc, #496] ; (80012d0 ) 80010e0: 6b1b ldr r3, [r3, #48] ; 0x30 80010e2: f003 0308 and.w r3, r3, #8 80010e6: 607b str r3, [r7, #4] 80010e8: 687b ldr r3, [r7, #4] /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); 80010ea: 2200 movs r2, #0 80010ec: 2116 movs r1, #22 80010ee: 4879 ldr r0, [pc, #484] ; (80012d4 ) 80010f0: f003 f866 bl 80041c0 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); 80010f4: 2200 movs r2, #0 80010f6: 2180 movs r1, #128 ; 0x80 80010f8: 4877 ldr r0, [pc, #476] ; (80012d8 ) 80010fa: f003 f861 bl 80041c0 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); 80010fe: 2200 movs r2, #0 8001100: f44f 5140 mov.w r1, #12288 ; 0x3000 8001104: 4875 ldr r0, [pc, #468] ; (80012dc ) 8001106: f003 f85b bl 80041c0 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); 800110a: 2200 movs r2, #0 800110c: f44f 41c0 mov.w r1, #24576 ; 0x6000 8001110: 4873 ldr r0, [pc, #460] ; (80012e0 ) 8001112: f003 f855 bl 80041c0 /*Configure GPIO pins : A0_Pin A1_Pin A2_Pin A3_Pin A4_Pin A5_Pin SDNRAS_Pin A6_Pin A7_Pin A8_Pin A9_Pin */ GPIO_InitStruct.Pin = A0_Pin|A1_Pin|A2_Pin|A3_Pin 8001116: f64f 033f movw r3, #63551 ; 0xf83f 800111a: 627b str r3, [r7, #36] ; 0x24 |A4_Pin|A5_Pin|SDNRAS_Pin|A6_Pin |A7_Pin|A8_Pin|A9_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 800111c: 2302 movs r3, #2 800111e: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001120: 2300 movs r3, #0 8001122: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 8001124: 2303 movs r3, #3 8001126: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF12_FMC; 8001128: 230c movs r3, #12 800112a: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); 800112c: f107 0324 add.w r3, r7, #36 ; 0x24 8001130: 4619 mov r1, r3 8001132: 486c ldr r0, [pc, #432] ; (80012e4 ) 8001134: f002 fe9a bl 8003e6c /*Configure GPIO pins : SPI5_SCK_Pin SPI5_MISO_Pin SPI5_MOSI_Pin */ GPIO_InitStruct.Pin = SPI5_SCK_Pin|SPI5_MISO_Pin|SPI5_MOSI_Pin; 8001138: f44f 7360 mov.w r3, #896 ; 0x380 800113c: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 800113e: 2302 movs r3, #2 8001140: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001142: 2300 movs r3, #0 8001144: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 8001146: 2300 movs r3, #0 8001148: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF5_SPI5; 800114a: 2305 movs r3, #5 800114c: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); 800114e: f107 0324 add.w r3, r7, #36 ; 0x24 8001152: 4619 mov r1, r3 8001154: 4863 ldr r0, [pc, #396] ; (80012e4 ) 8001156: f002 fe89 bl 8003e6c /*Configure GPIO pin : ENABLE_Pin */ GPIO_InitStruct.Pin = ENABLE_Pin; 800115a: f44f 6380 mov.w r3, #1024 ; 0x400 800115e: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 8001160: 2302 movs r3, #2 8001162: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001164: 2300 movs r3, #0 8001166: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 8001168: 2300 movs r3, #0 800116a: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; 800116c: 230e movs r3, #14 800116e: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(ENABLE_GPIO_Port, &GPIO_InitStruct); 8001170: f107 0324 add.w r3, r7, #36 ; 0x24 8001174: 4619 mov r1, r3 8001176: 485b ldr r0, [pc, #364] ; (80012e4 ) 8001178: f002 fe78 bl 8003e6c /*Configure GPIO pin : SDNWE_Pin */ GPIO_InitStruct.Pin = SDNWE_Pin; 800117c: 2301 movs r3, #1 800117e: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 8001180: 2302 movs r3, #2 8001182: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001184: 2300 movs r3, #0 8001186: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 8001188: 2303 movs r3, #3 800118a: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF12_FMC; 800118c: 230c movs r3, #12 800118e: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(SDNWE_GPIO_Port, &GPIO_InitStruct); 8001190: f107 0324 add.w r3, r7, #36 ; 0x24 8001194: 4619 mov r1, r3 8001196: 484f ldr r0, [pc, #316] ; (80012d4 ) 8001198: f002 fe68 bl 8003e6c /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; 800119c: 2316 movs r3, #22 800119e: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 80011a0: 2301 movs r3, #1 80011a2: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 80011a4: 2300 movs r3, #0 80011a6: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 80011a8: 2300 movs r3, #0 80011aa: 633b str r3, [r7, #48] ; 0x30 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 80011ac: f107 0324 add.w r3, r7, #36 ; 0x24 80011b0: 4619 mov r1, r3 80011b2: 4848 ldr r0, [pc, #288] ; (80012d4 ) 80011b4: f002 fe5a bl 8003e6c /*Configure GPIO pin : B1_Pin */ GPIO_InitStruct.Pin = B1_Pin; 80011b8: 2301 movs r3, #1 80011ba: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; 80011bc: 4b4a ldr r3, [pc, #296] ; (80012e8 ) 80011be: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 80011c0: 2300 movs r3, #0 80011c2: 62fb str r3, [r7, #44] ; 0x2c HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); 80011c4: f107 0324 add.w r3, r7, #36 ; 0x24 80011c8: 4619 mov r1, r3 80011ca: 4843 ldr r0, [pc, #268] ; (80012d8 ) 80011cc: f002 fe4e bl 8003e6c /*Configure GPIO pins : MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ GPIO_InitStruct.Pin = MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; 80011d0: f248 0306 movw r3, #32774 ; 0x8006 80011d4: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; 80011d6: 4b45 ldr r3, [pc, #276] ; (80012ec ) 80011d8: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 80011da: 2300 movs r3, #0 80011dc: 62fb str r3, [r7, #44] ; 0x2c HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 80011de: f107 0324 add.w r3, r7, #36 ; 0x24 80011e2: 4619 mov r1, r3 80011e4: 483c ldr r0, [pc, #240] ; (80012d8 ) 80011e6: f002 fe41 bl 8003e6c /*Configure GPIO pins : B5_Pin VSYNC_Pin G2_Pin R4_Pin R5_Pin */ GPIO_InitStruct.Pin = B5_Pin|VSYNC_Pin|G2_Pin|R4_Pin 80011ea: f641 0358 movw r3, #6232 ; 0x1858 80011ee: 627b str r3, [r7, #36] ; 0x24 |R5_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 80011f0: 2302 movs r3, #2 80011f2: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 80011f4: 2300 movs r3, #0 80011f6: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 80011f8: 2300 movs r3, #0 80011fa: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; 80011fc: 230e movs r3, #14 80011fe: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 8001200: f107 0324 add.w r3, r7, #36 ; 0x24 8001204: 4619 mov r1, r3 8001206: 4834 ldr r0, [pc, #208] ; (80012d8 ) 8001208: f002 fe30 bl 8003e6c /*Configure GPIO pin : ACP_RST_Pin */ GPIO_InitStruct.Pin = ACP_RST_Pin; 800120c: 2380 movs r3, #128 ; 0x80 800120e: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 8001210: 2301 movs r3, #1 8001212: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001214: 2300 movs r3, #0 8001216: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 8001218: 2300 movs r3, #0 800121a: 633b str r3, [r7, #48] ; 0x30 HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); 800121c: f107 0324 add.w r3, r7, #36 ; 0x24 8001220: 4619 mov r1, r3 8001222: 482d ldr r0, [pc, #180] ; (80012d8 ) 8001224: f002 fe22 bl 8003e6c /*Configure GPIO pin : OTG_FS_OC_Pin */ GPIO_InitStruct.Pin = OTG_FS_OC_Pin; 8001228: 2320 movs r3, #32 800122a: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; 800122c: 4b2f ldr r3, [pc, #188] ; (80012ec ) 800122e: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001230: 2300 movs r3, #0 8001232: 62fb str r3, [r7, #44] ; 0x2c HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); 8001234: f107 0324 add.w r3, r7, #36 ; 0x24 8001238: 4619 mov r1, r3 800123a: 4826 ldr r0, [pc, #152] ; (80012d4 ) 800123c: f002 fe16 bl 8003e6c /*Configure GPIO pins : R3_Pin R6_Pin */ GPIO_InitStruct.Pin = R3_Pin|R6_Pin; 8001240: 2303 movs r3, #3 8001242: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 8001244: 2302 movs r3, #2 8001246: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001248: 2300 movs r3, #0 800124a: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 800124c: 2300 movs r3, #0 800124e: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF9_LTDC; 8001250: 2309 movs r3, #9 8001252: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 8001254: f107 0324 add.w r3, r7, #36 ; 0x24 8001258: 4619 mov r1, r3 800125a: 4825 ldr r0, [pc, #148] ; (80012f0 ) 800125c: f002 fe06 bl 8003e6c /*Configure GPIO pin : BOOT1_Pin */ GPIO_InitStruct.Pin = BOOT1_Pin; 8001260: 2304 movs r3, #4 8001262: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 8001264: 2300 movs r3, #0 8001266: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001268: 2300 movs r3, #0 800126a: 62fb str r3, [r7, #44] ; 0x2c HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); 800126c: f107 0324 add.w r3, r7, #36 ; 0x24 8001270: 4619 mov r1, r3 8001272: 481f ldr r0, [pc, #124] ; (80012f0 ) 8001274: f002 fdfa bl 8003e6c /*Configure GPIO pins : A10_Pin A11_Pin BA0_Pin BA1_Pin SDCLK_Pin SDNCAS_Pin */ GPIO_InitStruct.Pin = A10_Pin|A11_Pin|BA0_Pin|BA1_Pin 8001278: f248 1333 movw r3, #33075 ; 0x8133 800127c: 627b str r3, [r7, #36] ; 0x24 |SDCLK_Pin|SDNCAS_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 800127e: 2302 movs r3, #2 8001280: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001282: 2300 movs r3, #0 8001284: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 8001286: 2303 movs r3, #3 8001288: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF12_FMC; 800128a: 230c movs r3, #12 800128c: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); 800128e: f107 0324 add.w r3, r7, #36 ; 0x24 8001292: 4619 mov r1, r3 8001294: 4812 ldr r0, [pc, #72] ; (80012e0 ) 8001296: f002 fde9 bl 8003e6c /*Configure GPIO pins : D4_Pin D5_Pin D6_Pin D7_Pin D8_Pin D9_Pin D10_Pin D11_Pin D12_Pin NBL0_Pin NBL1_Pin */ GPIO_InitStruct.Pin = D4_Pin|D5_Pin|D6_Pin|D7_Pin 800129a: f64f 7383 movw r3, #65411 ; 0xff83 800129e: 627b str r3, [r7, #36] ; 0x24 |D8_Pin|D9_Pin|D10_Pin|D11_Pin |D12_Pin|NBL0_Pin|NBL1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 80012a0: 2302 movs r3, #2 80012a2: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 80012a4: 2300 movs r3, #0 80012a6: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 80012a8: 2303 movs r3, #3 80012aa: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF12_FMC; 80012ac: 230c movs r3, #12 80012ae: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); 80012b0: f107 0324 add.w r3, r7, #36 ; 0x24 80012b4: 4619 mov r1, r3 80012b6: 480f ldr r0, [pc, #60] ; (80012f4 ) 80012b8: f002 fdd8 bl 8003e6c /*Configure GPIO pins : G4_Pin G5_Pin B6_Pin B7_Pin */ GPIO_InitStruct.Pin = G4_Pin|G5_Pin|B6_Pin|B7_Pin; 80012bc: f44f 6370 mov.w r3, #3840 ; 0xf00 80012c0: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 80012c2: 2302 movs r3, #2 80012c4: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 80012c6: 2300 movs r3, #0 80012c8: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 80012ca: 2300 movs r3, #0 80012cc: 633b str r3, [r7, #48] ; 0x30 80012ce: e013 b.n 80012f8 80012d0: 40023800 .word 0x40023800 80012d4: 40020800 .word 0x40020800 80012d8: 40020000 .word 0x40020000 80012dc: 40020c00 .word 0x40020c00 80012e0: 40021800 .word 0x40021800 80012e4: 40021400 .word 0x40021400 80012e8: 10110000 .word 0x10110000 80012ec: 10120000 .word 0x10120000 80012f0: 40020400 .word 0x40020400 80012f4: 40021000 .word 0x40021000 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; 80012f8: 230e movs r3, #14 80012fa: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 80012fc: f107 0324 add.w r3, r7, #36 ; 0x24 8001300: 4619 mov r1, r3 8001302: 4877 ldr r0, [pc, #476] ; (80014e0 ) 8001304: f002 fdb2 bl 8003e6c /*Configure GPIO pins : OTG_HS_ID_Pin OTG_HS_DM_Pin OTG_HS_DP_Pin */ GPIO_InitStruct.Pin = OTG_HS_ID_Pin|OTG_HS_DM_Pin|OTG_HS_DP_Pin; 8001308: f44f 4350 mov.w r3, #53248 ; 0xd000 800130c: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 800130e: 2302 movs r3, #2 8001310: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001312: 2300 movs r3, #0 8001314: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 8001316: 2300 movs r3, #0 8001318: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF12_OTG_HS_FS; 800131a: 230c movs r3, #12 800131c: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 800131e: f107 0324 add.w r3, r7, #36 ; 0x24 8001322: 4619 mov r1, r3 8001324: 486e ldr r0, [pc, #440] ; (80014e0 ) 8001326: f002 fda1 bl 8003e6c /*Configure GPIO pin : VBUS_HS_Pin */ GPIO_InitStruct.Pin = VBUS_HS_Pin; 800132a: f44f 5300 mov.w r3, #8192 ; 0x2000 800132e: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 8001330: 2300 movs r3, #0 8001332: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001334: 2300 movs r3, #0 8001336: 62fb str r3, [r7, #44] ; 0x2c HAL_GPIO_Init(VBUS_HS_GPIO_Port, &GPIO_InitStruct); 8001338: f107 0324 add.w r3, r7, #36 ; 0x24 800133c: 4619 mov r1, r3 800133e: 4868 ldr r0, [pc, #416] ; (80014e0 ) 8001340: f002 fd94 bl 8003e6c /*Configure GPIO pins : D13_Pin D14_Pin D15_Pin D0_Pin D1_Pin D2_Pin D3_Pin */ GPIO_InitStruct.Pin = D13_Pin|D14_Pin|D15_Pin|D0_Pin 8001344: f24c 7303 movw r3, #50947 ; 0xc703 8001348: 627b str r3, [r7, #36] ; 0x24 |D1_Pin|D2_Pin|D3_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 800134a: 2302 movs r3, #2 800134c: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 800134e: 2300 movs r3, #0 8001350: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 8001352: 2303 movs r3, #3 8001354: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF12_FMC; 8001356: 230c movs r3, #12 8001358: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); 800135a: f107 0324 add.w r3, r7, #36 ; 0x24 800135e: 4619 mov r1, r3 8001360: 4860 ldr r0, [pc, #384] ; (80014e4 ) 8001362: f002 fd83 bl 8003e6c /*Configure GPIO pin : TE_Pin */ GPIO_InitStruct.Pin = TE_Pin; 8001366: f44f 6300 mov.w r3, #2048 ; 0x800 800136a: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 800136c: 2300 movs r3, #0 800136e: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001370: 2300 movs r3, #0 8001372: 62fb str r3, [r7, #44] ; 0x2c HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); 8001374: f107 0324 add.w r3, r7, #36 ; 0x24 8001378: 4619 mov r1, r3 800137a: 485a ldr r0, [pc, #360] ; (80014e4 ) 800137c: f002 fd76 bl 8003e6c /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; 8001380: f44f 5340 mov.w r3, #12288 ; 0x3000 8001384: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 8001386: 2301 movs r3, #1 8001388: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 800138a: 2300 movs r3, #0 800138c: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 800138e: 2300 movs r3, #0 8001390: 633b str r3, [r7, #48] ; 0x30 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); 8001392: f107 0324 add.w r3, r7, #36 ; 0x24 8001396: 4619 mov r1, r3 8001398: 4852 ldr r0, [pc, #328] ; (80014e4 ) 800139a: f002 fd67 bl 8003e6c /*Configure GPIO pins : R7_Pin DOTCLK_Pin B3_Pin */ GPIO_InitStruct.Pin = R7_Pin|DOTCLK_Pin|B3_Pin; 800139e: f44f 630c mov.w r3, #2240 ; 0x8c0 80013a2: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 80013a4: 2302 movs r3, #2 80013a6: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 80013a8: 2300 movs r3, #0 80013aa: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 80013ac: 2300 movs r3, #0 80013ae: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; 80013b0: 230e movs r3, #14 80013b2: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); 80013b4: f107 0324 add.w r3, r7, #36 ; 0x24 80013b8: 4619 mov r1, r3 80013ba: 484b ldr r0, [pc, #300] ; (80014e8 ) 80013bc: f002 fd56 bl 8003e6c /*Configure GPIO pins : HSYNC_Pin G6_Pin R2_Pin */ GPIO_InitStruct.Pin = HSYNC_Pin|G6_Pin|R2_Pin; 80013c0: f44f 6398 mov.w r3, #1216 ; 0x4c0 80013c4: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 80013c6: 2302 movs r3, #2 80013c8: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 80013ca: 2300 movs r3, #0 80013cc: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 80013ce: 2300 movs r3, #0 80013d0: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; 80013d2: 230e movs r3, #14 80013d4: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 80013d6: f107 0324 add.w r3, r7, #36 ; 0x24 80013da: 4619 mov r1, r3 80013dc: 4843 ldr r0, [pc, #268] ; (80014ec ) 80013de: f002 fd45 bl 8003e6c /*Configure GPIO pin : I2C3_SDA_Pin */ GPIO_InitStruct.Pin = I2C3_SDA_Pin; 80013e2: f44f 7300 mov.w r3, #512 ; 0x200 80013e6: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; 80013e8: 2312 movs r3, #18 80013ea: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_PULLUP; 80013ec: 2301 movs r3, #1 80013ee: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 80013f0: 2300 movs r3, #0 80013f2: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF4_I2C3; 80013f4: 2304 movs r3, #4 80013f6: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(I2C3_SDA_GPIO_Port, &GPIO_InitStruct); 80013f8: f107 0324 add.w r3, r7, #36 ; 0x24 80013fc: 4619 mov r1, r3 80013fe: 483b ldr r0, [pc, #236] ; (80014ec ) 8001400: f002 fd34 bl 8003e6c /*Configure GPIO pin : I2C3_SCL_Pin */ GPIO_InitStruct.Pin = I2C3_SCL_Pin; 8001404: f44f 7380 mov.w r3, #256 ; 0x100 8001408: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; 800140a: 2312 movs r3, #18 800140c: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_PULLUP; 800140e: 2301 movs r3, #1 8001410: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 8001412: 2300 movs r3, #0 8001414: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF4_I2C3; 8001416: 2304 movs r3, #4 8001418: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(I2C3_SCL_GPIO_Port, &GPIO_InitStruct); 800141a: f107 0324 add.w r3, r7, #36 ; 0x24 800141e: 4619 mov r1, r3 8001420: 4833 ldr r0, [pc, #204] ; (80014f0 ) 8001422: f002 fd23 bl 8003e6c /*Configure GPIO pins : STLINK_RX_Pin STLINK_TX_Pin */ GPIO_InitStruct.Pin = STLINK_RX_Pin|STLINK_TX_Pin; 8001426: f44f 63c0 mov.w r3, #1536 ; 0x600 800142a: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 800142c: 2302 movs r3, #2 800142e: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001430: 2300 movs r3, #0 8001432: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 8001434: 2303 movs r3, #3 8001436: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF7_USART1; 8001438: 2307 movs r3, #7 800143a: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 800143c: f107 0324 add.w r3, r7, #36 ; 0x24 8001440: 4619 mov r1, r3 8001442: 482b ldr r0, [pc, #172] ; (80014f0 ) 8001444: f002 fd12 bl 8003e6c /*Configure GPIO pins : G7_Pin B2_Pin */ GPIO_InitStruct.Pin = G7_Pin|B2_Pin; 8001448: 2348 movs r3, #72 ; 0x48 800144a: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 800144c: 2302 movs r3, #2 800144e: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001450: 2300 movs r3, #0 8001452: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 8001454: 2300 movs r3, #0 8001456: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; 8001458: 230e movs r3, #14 800145a: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); 800145c: f107 0324 add.w r3, r7, #36 ; 0x24 8001460: 4619 mov r1, r3 8001462: 4820 ldr r0, [pc, #128] ; (80014e4 ) 8001464: f002 fd02 bl 8003e6c /*Configure GPIO pins : G3_Pin B4_Pin */ GPIO_InitStruct.Pin = G3_Pin|B4_Pin; 8001468: f44f 53a0 mov.w r3, #5120 ; 0x1400 800146c: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 800146e: 2302 movs r3, #2 8001470: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001472: 2300 movs r3, #0 8001474: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 8001476: 2300 movs r3, #0 8001478: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF9_LTDC; 800147a: 2309 movs r3, #9 800147c: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); 800147e: f107 0324 add.w r3, r7, #36 ; 0x24 8001482: 4619 mov r1, r3 8001484: 4818 ldr r0, [pc, #96] ; (80014e8 ) 8001486: f002 fcf1 bl 8003e6c /*Configure GPIO pins : LD3_Pin LD4_Pin */ GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; 800148a: f44f 43c0 mov.w r3, #24576 ; 0x6000 800148e: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 8001490: 2301 movs r3, #1 8001492: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8001494: 2300 movs r3, #0 8001496: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 8001498: 2300 movs r3, #0 800149a: 633b str r3, [r7, #48] ; 0x30 HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); 800149c: f107 0324 add.w r3, r7, #36 ; 0x24 80014a0: 4619 mov r1, r3 80014a2: 4811 ldr r0, [pc, #68] ; (80014e8 ) 80014a4: f002 fce2 bl 8003e6c /*Configure GPIO pins : SDCKE1_Pin SDNE1_Pin */ GPIO_InitStruct.Pin = SDCKE1_Pin|SDNE1_Pin; 80014a8: 2360 movs r3, #96 ; 0x60 80014aa: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 80014ac: 2302 movs r3, #2 80014ae: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 80014b0: 2300 movs r3, #0 80014b2: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 80014b4: 2303 movs r3, #3 80014b6: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF12_FMC; 80014b8: 230c movs r3, #12 80014ba: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 80014bc: f107 0324 add.w r3, r7, #36 ; 0x24 80014c0: 4619 mov r1, r3 80014c2: 4807 ldr r0, [pc, #28] ; (80014e0 ) 80014c4: f002 fcd2 bl 8003e6c /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); 80014c8: 2200 movs r2, #0 80014ca: 2100 movs r1, #0 80014cc: 2006 movs r0, #6 80014ce: f002 fc74 bl 8003dba HAL_NVIC_EnableIRQ(EXTI0_IRQn); 80014d2: 2006 movs r0, #6 80014d4: f002 fc8d bl 8003df2 } 80014d8: bf00 nop 80014da: 3738 adds r7, #56 ; 0x38 80014dc: 46bd mov sp, r7 80014de: bd80 pop {r7, pc} 80014e0: 40020400 .word 0x40020400 80014e4: 40020c00 .word 0x40020c00 80014e8: 40021800 .word 0x40021800 80014ec: 40020800 .word 0x40020800 80014f0: 40020000 .word 0x40020000 080014f4 : /* USER CODE BEGIN 4 */ uint8_t getSoundLevel(void){ 80014f4: b580 push {r7, lr} 80014f6: b084 sub sp, #16 80014f8: af00 add r7, sp, #0 // Adjustment / Calibration static uint8_t cutoff = 90; // By order of process uint8_t samples[8]; uint16_t estimatedSoundLevel = 0; 80014fa: 2300 movs r3, #0 80014fc: 81fb strh r3, [r7, #14] static uint16_t averagedReturnValue = 0; uint16_t returnValue; for(uint8_t i = 0; i < sizeof(samples); ++i){ 80014fe: 2300 movs r3, #0 8001500: 72fb strb r3, [r7, #11] 8001502: e014 b.n 800152e HAL_ADC_Start(&hadc3); 8001504: 4830 ldr r0, [pc, #192] ; (80015c8 ) 8001506: f001 fff7 bl 80034f8 HAL_ADC_PollForConversion(&hadc3, (uint32_t) 20); 800150a: 2114 movs r1, #20 800150c: 482e ldr r0, [pc, #184] ; (80015c8 ) 800150e: f002 f8b9 bl 8003684 samples[i] = HAL_ADC_GetValue(&hadc3); 8001512: 482d ldr r0, [pc, #180] ; (80015c8 ) 8001514: f002 f93a bl 800378c 8001518: 4602 mov r2, r0 800151a: 7afb ldrb r3, [r7, #11] 800151c: b2d2 uxtb r2, r2 800151e: f107 0110 add.w r1, r7, #16 8001522: 440b add r3, r1 8001524: f803 2c10 strb.w r2, [r3, #-16] for(uint8_t i = 0; i < sizeof(samples); ++i){ 8001528: 7afb ldrb r3, [r7, #11] 800152a: 3301 adds r3, #1 800152c: 72fb strb r3, [r7, #11] 800152e: 7afb ldrb r3, [r7, #11] 8001530: 2b07 cmp r3, #7 8001532: d9e7 bls.n 8001504 } for(uint8_t i = 0; i < sizeof(samples); ++i){ 8001534: 2300 movs r3, #0 8001536: 72bb strb r3, [r7, #10] 8001538: e00c b.n 8001554 estimatedSoundLevel += samples[i]; 800153a: 7abb ldrb r3, [r7, #10] 800153c: f107 0210 add.w r2, r7, #16 8001540: 4413 add r3, r2 8001542: f813 3c10 ldrb.w r3, [r3, #-16] 8001546: b29a uxth r2, r3 8001548: 89fb ldrh r3, [r7, #14] 800154a: 4413 add r3, r2 800154c: 81fb strh r3, [r7, #14] for(uint8_t i = 0; i < sizeof(samples); ++i){ 800154e: 7abb ldrb r3, [r7, #10] 8001550: 3301 adds r3, #1 8001552: 72bb strb r3, [r7, #10] 8001554: 7abb ldrb r3, [r7, #10] 8001556: 2b07 cmp r3, #7 8001558: d9ef bls.n 800153a } estimatedSoundLevel /= sizeof(samples); 800155a: 89fb ldrh r3, [r7, #14] 800155c: 08db lsrs r3, r3, #3 800155e: 81fb strh r3, [r7, #14] if(estimatedSoundLevel <= cutoff){ 8001560: 4b1a ldr r3, [pc, #104] ; (80015cc ) 8001562: 781b ldrb r3, [r3, #0] 8001564: b29b uxth r3, r3 8001566: 89fa ldrh r2, [r7, #14] 8001568: 429a cmp r2, r3 800156a: d802 bhi.n 8001572 returnValue = 0; 800156c: 2300 movs r3, #0 800156e: 81bb strh r3, [r7, #12] 8001570: e006 b.n 8001580 }else{ returnValue = (uint16_t) (2 * (estimatedSoundLevel - cutoff)); 8001572: 89fb ldrh r3, [r7, #14] 8001574: 4a15 ldr r2, [pc, #84] ; (80015cc ) 8001576: 7812 ldrb r2, [r2, #0] 8001578: 1a9b subs r3, r3, r2 800157a: b29b uxth r3, r3 800157c: 005b lsls r3, r3, #1 800157e: 81bb strh r3, [r7, #12] } averagedReturnValue += ((int32_t) returnValue - (int32_t) averagedReturnValue) / 3; 8001580: 89bb ldrh r3, [r7, #12] 8001582: 4a13 ldr r2, [pc, #76] ; (80015d0 ) 8001584: 8812 ldrh r2, [r2, #0] 8001586: 1a9b subs r3, r3, r2 8001588: 4a12 ldr r2, [pc, #72] ; (80015d4 ) 800158a: fb82 1203 smull r1, r2, r2, r3 800158e: 17db asrs r3, r3, #31 8001590: 1ad3 subs r3, r2, r3 8001592: b29a uxth r2, r3 8001594: 4b0e ldr r3, [pc, #56] ; (80015d0 ) 8001596: 881b ldrh r3, [r3, #0] 8001598: 4413 add r3, r2 800159a: b29a uxth r2, r3 800159c: 4b0c ldr r3, [pc, #48] ; (80015d0 ) 800159e: 801a strh r2, [r3, #0] if(averagedReturnValue >= 0xFF){ 80015a0: 4b0b ldr r3, [pc, #44] ; (80015d0 ) 80015a2: 881b ldrh r3, [r3, #0] 80015a4: 2bfe cmp r3, #254 ; 0xfe 80015a6: d901 bls.n 80015ac return 0xFF; 80015a8: 23ff movs r3, #255 ; 0xff 80015aa: e008 b.n 80015be }else if(averagedReturnValue <= 10){ 80015ac: 4b08 ldr r3, [pc, #32] ; (80015d0 ) 80015ae: 881b ldrh r3, [r3, #0] 80015b0: 2b0a cmp r3, #10 80015b2: d801 bhi.n 80015b8 return 0x00; 80015b4: 2300 movs r3, #0 80015b6: e002 b.n 80015be }else{ return averagedReturnValue; 80015b8: 4b05 ldr r3, [pc, #20] ; (80015d0 ) 80015ba: 881b ldrh r3, [r3, #0] 80015bc: b2db uxtb r3, r3 } } 80015be: 4618 mov r0, r3 80015c0: 3710 adds r7, #16 80015c2: 46bd mov sp, r7 80015c4: bd80 pop {r7, pc} 80015c6: bf00 nop 80015c8: 200003b4 .word 0x200003b4 80015cc: 20000000 .word 0x20000000 80015d0: 200003a6 .word 0x200003a6 80015d4: 55555556 .word 0x55555556 080015d8 : void LEDDesign_Off(void){ 80015d8: b480 push {r7} 80015da: b083 sub sp, #12 80015dc: af00 add r7, sp, #0 for(uint8_t i = 0; i < 64; ++i){ 80015de: 2300 movs r3, #0 80015e0: 71fb strb r3, [r7, #7] 80015e2: e015 b.n 8001610 for(uint8_t j = 0; j < 3; ++j){ 80015e4: 2300 movs r3, #0 80015e6: 71bb strb r3, [r7, #6] 80015e8: e00c b.n 8001604 LEDData[i][j] = 0x00; 80015ea: 79fa ldrb r2, [r7, #7] 80015ec: 79b9 ldrb r1, [r7, #6] 80015ee: 480d ldr r0, [pc, #52] ; (8001624 ) 80015f0: 4613 mov r3, r2 80015f2: 005b lsls r3, r3, #1 80015f4: 4413 add r3, r2 80015f6: 4403 add r3, r0 80015f8: 440b add r3, r1 80015fa: 2200 movs r2, #0 80015fc: 701a strb r2, [r3, #0] for(uint8_t j = 0; j < 3; ++j){ 80015fe: 79bb ldrb r3, [r7, #6] 8001600: 3301 adds r3, #1 8001602: 71bb strb r3, [r7, #6] 8001604: 79bb ldrb r3, [r7, #6] 8001606: 2b02 cmp r3, #2 8001608: d9ef bls.n 80015ea for(uint8_t i = 0; i < 64; ++i){ 800160a: 79fb ldrb r3, [r7, #7] 800160c: 3301 adds r3, #1 800160e: 71fb strb r3, [r7, #7] 8001610: 79fb ldrb r3, [r7, #7] 8001612: 2b3f cmp r3, #63 ; 0x3f 8001614: d9e6 bls.n 80015e4 } } } 8001616: bf00 nop 8001618: 370c adds r7, #12 800161a: 46bd mov sp, r7 800161c: f85d 7b04 ldr.w r7, [sp], #4 8001620: 4770 bx lr 8001622: bf00 nop 8001624: 20000094 .word 0x20000094 08001628 : void LEDDesign_ColorWhite(void){ 8001628: b480 push {r7} 800162a: b083 sub sp, #12 800162c: af00 add r7, sp, #0 for(uint8_t i = 0; i < 64; ++i){ 800162e: 2300 movs r3, #0 8001630: 71fb strb r3, [r7, #7] 8001632: e015 b.n 8001660 for(uint8_t j = 0; j < 3; ++j){ 8001634: 2300 movs r3, #0 8001636: 71bb strb r3, [r7, #6] 8001638: e00c b.n 8001654 LEDData[i][j] = 0xFF; 800163a: 79fa ldrb r2, [r7, #7] 800163c: 79b9 ldrb r1, [r7, #6] 800163e: 480d ldr r0, [pc, #52] ; (8001674 ) 8001640: 4613 mov r3, r2 8001642: 005b lsls r3, r3, #1 8001644: 4413 add r3, r2 8001646: 4403 add r3, r0 8001648: 440b add r3, r1 800164a: 22ff movs r2, #255 ; 0xff 800164c: 701a strb r2, [r3, #0] for(uint8_t j = 0; j < 3; ++j){ 800164e: 79bb ldrb r3, [r7, #6] 8001650: 3301 adds r3, #1 8001652: 71bb strb r3, [r7, #6] 8001654: 79bb ldrb r3, [r7, #6] 8001656: 2b02 cmp r3, #2 8001658: d9ef bls.n 800163a for(uint8_t i = 0; i < 64; ++i){ 800165a: 79fb ldrb r3, [r7, #7] 800165c: 3301 adds r3, #1 800165e: 71fb strb r3, [r7, #7] 8001660: 79fb ldrb r3, [r7, #7] 8001662: 2b3f cmp r3, #63 ; 0x3f 8001664: d9e6 bls.n 8001634 } } } 8001666: bf00 nop 8001668: 370c adds r7, #12 800166a: 46bd mov sp, r7 800166c: f85d 7b04 ldr.w r7, [sp], #4 8001670: 4770 bx lr 8001672: bf00 nop 8001674: 20000094 .word 0x20000094 08001678 : void LEDDesign_ColorBlue(void){ 8001678: b480 push {r7} 800167a: b083 sub sp, #12 800167c: af00 add r7, sp, #0 for(uint8_t i = 0; i < 64; ++i){ 800167e: 2300 movs r3, #0 8001680: 71fb strb r3, [r7, #7] 8001682: e00a b.n 800169a LEDData[i][0] = 0x00; 8001684: 79fa ldrb r2, [r7, #7] 8001686: 491b ldr r1, [pc, #108] ; (80016f4 ) 8001688: 4613 mov r3, r2 800168a: 005b lsls r3, r3, #1 800168c: 4413 add r3, r2 800168e: 440b add r3, r1 8001690: 2200 movs r2, #0 8001692: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 8001694: 79fb ldrb r3, [r7, #7] 8001696: 3301 adds r3, #1 8001698: 71fb strb r3, [r7, #7] 800169a: 79fb ldrb r3, [r7, #7] 800169c: 2b3f cmp r3, #63 ; 0x3f 800169e: d9f1 bls.n 8001684 } for(uint8_t i = 0; i < 64; ++i){ 80016a0: 2300 movs r3, #0 80016a2: 71bb strb r3, [r7, #6] 80016a4: e00b b.n 80016be LEDData[i][1] = 0x00; 80016a6: 79ba ldrb r2, [r7, #6] 80016a8: 4912 ldr r1, [pc, #72] ; (80016f4 ) 80016aa: 4613 mov r3, r2 80016ac: 005b lsls r3, r3, #1 80016ae: 4413 add r3, r2 80016b0: 440b add r3, r1 80016b2: 3301 adds r3, #1 80016b4: 2200 movs r2, #0 80016b6: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 80016b8: 79bb ldrb r3, [r7, #6] 80016ba: 3301 adds r3, #1 80016bc: 71bb strb r3, [r7, #6] 80016be: 79bb ldrb r3, [r7, #6] 80016c0: 2b3f cmp r3, #63 ; 0x3f 80016c2: d9f0 bls.n 80016a6 } for(uint8_t i = 0; i < 64; ++i){ 80016c4: 2300 movs r3, #0 80016c6: 717b strb r3, [r7, #5] 80016c8: e00b b.n 80016e2 LEDData[i][2] = 0xFF; 80016ca: 797a ldrb r2, [r7, #5] 80016cc: 4909 ldr r1, [pc, #36] ; (80016f4 ) 80016ce: 4613 mov r3, r2 80016d0: 005b lsls r3, r3, #1 80016d2: 4413 add r3, r2 80016d4: 440b add r3, r1 80016d6: 3302 adds r3, #2 80016d8: 22ff movs r2, #255 ; 0xff 80016da: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 80016dc: 797b ldrb r3, [r7, #5] 80016de: 3301 adds r3, #1 80016e0: 717b strb r3, [r7, #5] 80016e2: 797b ldrb r3, [r7, #5] 80016e4: 2b3f cmp r3, #63 ; 0x3f 80016e6: d9f0 bls.n 80016ca } } 80016e8: bf00 nop 80016ea: 370c adds r7, #12 80016ec: 46bd mov sp, r7 80016ee: f85d 7b04 ldr.w r7, [sp], #4 80016f2: 4770 bx lr 80016f4: 20000094 .word 0x20000094 080016f8 : void LEDDesign_ColorGreen(void){ 80016f8: b480 push {r7} 80016fa: b083 sub sp, #12 80016fc: af00 add r7, sp, #0 for(uint8_t i = 0; i < 64; ++i){ 80016fe: 2300 movs r3, #0 8001700: 71fb strb r3, [r7, #7] 8001702: e00a b.n 800171a LEDData[i][0] = 0xFF; 8001704: 79fa ldrb r2, [r7, #7] 8001706: 491b ldr r1, [pc, #108] ; (8001774 ) 8001708: 4613 mov r3, r2 800170a: 005b lsls r3, r3, #1 800170c: 4413 add r3, r2 800170e: 440b add r3, r1 8001710: 22ff movs r2, #255 ; 0xff 8001712: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 8001714: 79fb ldrb r3, [r7, #7] 8001716: 3301 adds r3, #1 8001718: 71fb strb r3, [r7, #7] 800171a: 79fb ldrb r3, [r7, #7] 800171c: 2b3f cmp r3, #63 ; 0x3f 800171e: d9f1 bls.n 8001704 } for(uint8_t i = 0; i < 64; ++i){ 8001720: 2300 movs r3, #0 8001722: 71bb strb r3, [r7, #6] 8001724: e00b b.n 800173e LEDData[i][1] = 0x00; 8001726: 79ba ldrb r2, [r7, #6] 8001728: 4912 ldr r1, [pc, #72] ; (8001774 ) 800172a: 4613 mov r3, r2 800172c: 005b lsls r3, r3, #1 800172e: 4413 add r3, r2 8001730: 440b add r3, r1 8001732: 3301 adds r3, #1 8001734: 2200 movs r2, #0 8001736: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 8001738: 79bb ldrb r3, [r7, #6] 800173a: 3301 adds r3, #1 800173c: 71bb strb r3, [r7, #6] 800173e: 79bb ldrb r3, [r7, #6] 8001740: 2b3f cmp r3, #63 ; 0x3f 8001742: d9f0 bls.n 8001726 } for(uint8_t i = 0; i < 64; ++i){ 8001744: 2300 movs r3, #0 8001746: 717b strb r3, [r7, #5] 8001748: e00b b.n 8001762 LEDData[i][2] = 0x00; 800174a: 797a ldrb r2, [r7, #5] 800174c: 4909 ldr r1, [pc, #36] ; (8001774 ) 800174e: 4613 mov r3, r2 8001750: 005b lsls r3, r3, #1 8001752: 4413 add r3, r2 8001754: 440b add r3, r1 8001756: 3302 adds r3, #2 8001758: 2200 movs r2, #0 800175a: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 800175c: 797b ldrb r3, [r7, #5] 800175e: 3301 adds r3, #1 8001760: 717b strb r3, [r7, #5] 8001762: 797b ldrb r3, [r7, #5] 8001764: 2b3f cmp r3, #63 ; 0x3f 8001766: d9f0 bls.n 800174a } } 8001768: bf00 nop 800176a: 370c adds r7, #12 800176c: 46bd mov sp, r7 800176e: f85d 7b04 ldr.w r7, [sp], #4 8001772: 4770 bx lr 8001774: 20000094 .word 0x20000094 08001778 : void LEDDesign_ColorRed(void){ 8001778: b480 push {r7} 800177a: b083 sub sp, #12 800177c: af00 add r7, sp, #0 for(uint8_t i = 0; i < 64; ++i){ 800177e: 2300 movs r3, #0 8001780: 71fb strb r3, [r7, #7] 8001782: e00a b.n 800179a LEDData[i][0] = 0x00; 8001784: 79fa ldrb r2, [r7, #7] 8001786: 491b ldr r1, [pc, #108] ; (80017f4 ) 8001788: 4613 mov r3, r2 800178a: 005b lsls r3, r3, #1 800178c: 4413 add r3, r2 800178e: 440b add r3, r1 8001790: 2200 movs r2, #0 8001792: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 8001794: 79fb ldrb r3, [r7, #7] 8001796: 3301 adds r3, #1 8001798: 71fb strb r3, [r7, #7] 800179a: 79fb ldrb r3, [r7, #7] 800179c: 2b3f cmp r3, #63 ; 0x3f 800179e: d9f1 bls.n 8001784 } for(uint8_t i = 0; i < 64; ++i){ 80017a0: 2300 movs r3, #0 80017a2: 71bb strb r3, [r7, #6] 80017a4: e00b b.n 80017be LEDData[i][1] = 0xFF; 80017a6: 79ba ldrb r2, [r7, #6] 80017a8: 4912 ldr r1, [pc, #72] ; (80017f4 ) 80017aa: 4613 mov r3, r2 80017ac: 005b lsls r3, r3, #1 80017ae: 4413 add r3, r2 80017b0: 440b add r3, r1 80017b2: 3301 adds r3, #1 80017b4: 22ff movs r2, #255 ; 0xff 80017b6: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 80017b8: 79bb ldrb r3, [r7, #6] 80017ba: 3301 adds r3, #1 80017bc: 71bb strb r3, [r7, #6] 80017be: 79bb ldrb r3, [r7, #6] 80017c0: 2b3f cmp r3, #63 ; 0x3f 80017c2: d9f0 bls.n 80017a6 } for(uint8_t i = 0; i < 64; ++i){ 80017c4: 2300 movs r3, #0 80017c6: 717b strb r3, [r7, #5] 80017c8: e00b b.n 80017e2 LEDData[i][2] = 0x00; 80017ca: 797a ldrb r2, [r7, #5] 80017cc: 4909 ldr r1, [pc, #36] ; (80017f4 ) 80017ce: 4613 mov r3, r2 80017d0: 005b lsls r3, r3, #1 80017d2: 4413 add r3, r2 80017d4: 440b add r3, r1 80017d6: 3302 adds r3, #2 80017d8: 2200 movs r2, #0 80017da: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 80017dc: 797b ldrb r3, [r7, #5] 80017de: 3301 adds r3, #1 80017e0: 717b strb r3, [r7, #5] 80017e2: 797b ldrb r3, [r7, #5] 80017e4: 2b3f cmp r3, #63 ; 0x3f 80017e6: d9f0 bls.n 80017ca } } 80017e8: bf00 nop 80017ea: 370c adds r7, #12 80017ec: 46bd mov sp, r7 80017ee: f85d 7b04 ldr.w r7, [sp], #4 80017f2: 4770 bx lr 80017f4: 20000094 .word 0x20000094 080017f8 : void LEDDesign_Crazy(void){ 80017f8: b590 push {r4, r7, lr} 80017fa: b085 sub sp, #20 80017fc: af00 add r7, sp, #0 HAL_Delay(50); 80017fe: 2032 movs r0, #50 ; 0x32 8001800: f001 fe14 bl 800342c for(uint8_t i = 0; i < 64; ++i){ 8001804: 2300 movs r3, #0 8001806: 73fb strb r3, [r7, #15] 8001808: e029 b.n 800185e for(uint8_t j = 0; j < 3; ++j){ 800180a: 2300 movs r3, #0 800180c: 73bb strb r3, [r7, #14] 800180e: e020 b.n 8001852 LEDData[i][j] = (uint8_t) (0xFF * (((float) rand()) / RAND_MAX)); 8001810: f003 ffd6 bl 80057c0 8001814: ee07 0a90 vmov s15, r0 8001818: eeb8 7ae7 vcvt.f32.s32 s14, s15 800181c: eddf 6a13 vldr s13, [pc, #76] ; 800186c 8001820: eec7 7a26 vdiv.f32 s15, s14, s13 8001824: ed9f 7a12 vldr s14, [pc, #72] ; 8001870 8001828: ee67 7a87 vmul.f32 s15, s15, s14 800182c: 7bfa ldrb r2, [r7, #15] 800182e: 7bb9 ldrb r1, [r7, #14] 8001830: eefc 7ae7 vcvt.u32.f32 s15, s15 8001834: edc7 7a01 vstr s15, [r7, #4] 8001838: 793b ldrb r3, [r7, #4] 800183a: b2dc uxtb r4, r3 800183c: 480d ldr r0, [pc, #52] ; (8001874 ) 800183e: 4613 mov r3, r2 8001840: 005b lsls r3, r3, #1 8001842: 4413 add r3, r2 8001844: 4403 add r3, r0 8001846: 440b add r3, r1 8001848: 4622 mov r2, r4 800184a: 701a strb r2, [r3, #0] for(uint8_t j = 0; j < 3; ++j){ 800184c: 7bbb ldrb r3, [r7, #14] 800184e: 3301 adds r3, #1 8001850: 73bb strb r3, [r7, #14] 8001852: 7bbb ldrb r3, [r7, #14] 8001854: 2b02 cmp r3, #2 8001856: d9db bls.n 8001810 for(uint8_t i = 0; i < 64; ++i){ 8001858: 7bfb ldrb r3, [r7, #15] 800185a: 3301 adds r3, #1 800185c: 73fb strb r3, [r7, #15] 800185e: 7bfb ldrb r3, [r7, #15] 8001860: 2b3f cmp r3, #63 ; 0x3f 8001862: d9d2 bls.n 800180a } } } 8001864: bf00 nop 8001866: 3714 adds r7, #20 8001868: 46bd mov sp, r7 800186a: bd90 pop {r4, r7, pc} 800186c: 4f000000 .word 0x4f000000 8001870: 437f0000 .word 0x437f0000 8001874: 20000094 .word 0x20000094 08001878 : void LEDDesign_Smile(void){ 8001878: b580 push {r7, lr} 800187a: af00 add r7, sp, #0 setLED(lookupLED(0,0), 0x00, 0x00, 0x00); 800187c: 2100 movs r1, #0 800187e: 2000 movs r0, #0 8001880: f001 f850 bl 8002924 8001884: 4603 mov r3, r0 8001886: 4618 mov r0, r3 8001888: 2300 movs r3, #0 800188a: 2200 movs r2, #0 800188c: 2100 movs r1, #0 800188e: f001 f9b9 bl 8002c04 setLED(lookupLED(0,1), 0x00, 0x00, 0x00); 8001892: 2101 movs r1, #1 8001894: 2000 movs r0, #0 8001896: f001 f845 bl 8002924 800189a: 4603 mov r3, r0 800189c: 4618 mov r0, r3 800189e: 2300 movs r3, #0 80018a0: 2200 movs r2, #0 80018a2: 2100 movs r1, #0 80018a4: f001 f9ae bl 8002c04 setLED(lookupLED(0,2), 0x00, 0x00, 0x00); 80018a8: 2102 movs r1, #2 80018aa: 2000 movs r0, #0 80018ac: f001 f83a bl 8002924 80018b0: 4603 mov r3, r0 80018b2: 4618 mov r0, r3 80018b4: 2300 movs r3, #0 80018b6: 2200 movs r2, #0 80018b8: 2100 movs r1, #0 80018ba: f001 f9a3 bl 8002c04 setLED(lookupLED(0,3), 0x00, 0x00, 0x7F); 80018be: 2103 movs r1, #3 80018c0: 2000 movs r0, #0 80018c2: f001 f82f bl 8002924 80018c6: 4603 mov r3, r0 80018c8: 4618 mov r0, r3 80018ca: 237f movs r3, #127 ; 0x7f 80018cc: 2200 movs r2, #0 80018ce: 2100 movs r1, #0 80018d0: f001 f998 bl 8002c04 setLED(lookupLED(0,4), 0x00, 0x00, 0x00); 80018d4: 2104 movs r1, #4 80018d6: 2000 movs r0, #0 80018d8: f001 f824 bl 8002924 80018dc: 4603 mov r3, r0 80018de: 4618 mov r0, r3 80018e0: 2300 movs r3, #0 80018e2: 2200 movs r2, #0 80018e4: 2100 movs r1, #0 80018e6: f001 f98d bl 8002c04 setLED(lookupLED(0,5), 0x00, 0x00, 0x00); 80018ea: 2105 movs r1, #5 80018ec: 2000 movs r0, #0 80018ee: f001 f819 bl 8002924 80018f2: 4603 mov r3, r0 80018f4: 4618 mov r0, r3 80018f6: 2300 movs r3, #0 80018f8: 2200 movs r2, #0 80018fa: 2100 movs r1, #0 80018fc: f001 f982 bl 8002c04 setLED(lookupLED(0,6), 0x00, 0x00, 0x00); 8001900: 2106 movs r1, #6 8001902: 2000 movs r0, #0 8001904: f001 f80e bl 8002924 8001908: 4603 mov r3, r0 800190a: 4618 mov r0, r3 800190c: 2300 movs r3, #0 800190e: 2200 movs r2, #0 8001910: 2100 movs r1, #0 8001912: f001 f977 bl 8002c04 setLED(lookupLED(0,7), 0x00, 0x00, 0x00); 8001916: 2107 movs r1, #7 8001918: 2000 movs r0, #0 800191a: f001 f803 bl 8002924 800191e: 4603 mov r3, r0 8001920: 4618 mov r0, r3 8001922: 2300 movs r3, #0 8001924: 2200 movs r2, #0 8001926: 2100 movs r1, #0 8001928: f001 f96c bl 8002c04 setLED(lookupLED(1,0), 0x00, 0x00, 0x00); 800192c: 2100 movs r1, #0 800192e: 2001 movs r0, #1 8001930: f000 fff8 bl 8002924 8001934: 4603 mov r3, r0 8001936: 4618 mov r0, r3 8001938: 2300 movs r3, #0 800193a: 2200 movs r2, #0 800193c: 2100 movs r1, #0 800193e: f001 f961 bl 8002c04 setLED(lookupLED(1,1), 0x00, 0x00, 0x00); 8001942: 2101 movs r1, #1 8001944: 2001 movs r0, #1 8001946: f000 ffed bl 8002924 800194a: 4603 mov r3, r0 800194c: 4618 mov r0, r3 800194e: 2300 movs r3, #0 8001950: 2200 movs r2, #0 8001952: 2100 movs r1, #0 8001954: f001 f956 bl 8002c04 setLED(lookupLED(1,2), 0x00, 0x00, 0x7F); 8001958: 2102 movs r1, #2 800195a: 2001 movs r0, #1 800195c: f000 ffe2 bl 8002924 8001960: 4603 mov r3, r0 8001962: 4618 mov r0, r3 8001964: 237f movs r3, #127 ; 0x7f 8001966: 2200 movs r2, #0 8001968: 2100 movs r1, #0 800196a: f001 f94b bl 8002c04 setLED(lookupLED(1,3), 0x00, 0x00, 0x00); 800196e: 2103 movs r1, #3 8001970: 2001 movs r0, #1 8001972: f000 ffd7 bl 8002924 8001976: 4603 mov r3, r0 8001978: 4618 mov r0, r3 800197a: 2300 movs r3, #0 800197c: 2200 movs r2, #0 800197e: 2100 movs r1, #0 8001980: f001 f940 bl 8002c04 setLED(lookupLED(1,4), 0x00, 0x00, 0x00); 8001984: 2104 movs r1, #4 8001986: 2001 movs r0, #1 8001988: f000 ffcc bl 8002924 800198c: 4603 mov r3, r0 800198e: 4618 mov r0, r3 8001990: 2300 movs r3, #0 8001992: 2200 movs r2, #0 8001994: 2100 movs r1, #0 8001996: f001 f935 bl 8002c04 setLED(lookupLED(1,5), 0x00, 0x00, 0x00); 800199a: 2105 movs r1, #5 800199c: 2001 movs r0, #1 800199e: f000 ffc1 bl 8002924 80019a2: 4603 mov r3, r0 80019a4: 4618 mov r0, r3 80019a6: 2300 movs r3, #0 80019a8: 2200 movs r2, #0 80019aa: 2100 movs r1, #0 80019ac: f001 f92a bl 8002c04 setLED(lookupLED(1,6), 0x00, 0x00, 0x00); 80019b0: 2106 movs r1, #6 80019b2: 2001 movs r0, #1 80019b4: f000 ffb6 bl 8002924 80019b8: 4603 mov r3, r0 80019ba: 4618 mov r0, r3 80019bc: 2300 movs r3, #0 80019be: 2200 movs r2, #0 80019c0: 2100 movs r1, #0 80019c2: f001 f91f bl 8002c04 setLED(lookupLED(1,7), 0x00, 0x00, 0x00); 80019c6: 2107 movs r1, #7 80019c8: 2001 movs r0, #1 80019ca: f000 ffab bl 8002924 80019ce: 4603 mov r3, r0 80019d0: 4618 mov r0, r3 80019d2: 2300 movs r3, #0 80019d4: 2200 movs r2, #0 80019d6: 2100 movs r1, #0 80019d8: f001 f914 bl 8002c04 setLED(lookupLED(2,0), 0x00, 0x00, 0x00); 80019dc: 2100 movs r1, #0 80019de: 2002 movs r0, #2 80019e0: f000 ffa0 bl 8002924 80019e4: 4603 mov r3, r0 80019e6: 4618 mov r0, r3 80019e8: 2300 movs r3, #0 80019ea: 2200 movs r2, #0 80019ec: 2100 movs r1, #0 80019ee: f001 f909 bl 8002c04 setLED(lookupLED(2,1), 0x00, 0x00, 0x00); 80019f2: 2101 movs r1, #1 80019f4: 2002 movs r0, #2 80019f6: f000 ff95 bl 8002924 80019fa: 4603 mov r3, r0 80019fc: 4618 mov r0, r3 80019fe: 2300 movs r3, #0 8001a00: 2200 movs r2, #0 8001a02: 2100 movs r1, #0 8001a04: f001 f8fe bl 8002c04 setLED(lookupLED(2,2), 0x00, 0x00, 0x7F); 8001a08: 2102 movs r1, #2 8001a0a: 2002 movs r0, #2 8001a0c: f000 ff8a bl 8002924 8001a10: 4603 mov r3, r0 8001a12: 4618 mov r0, r3 8001a14: 237f movs r3, #127 ; 0x7f 8001a16: 2200 movs r2, #0 8001a18: 2100 movs r1, #0 8001a1a: f001 f8f3 bl 8002c04 setLED(lookupLED(2,3), 0x00, 0x00, 0x00); 8001a1e: 2103 movs r1, #3 8001a20: 2002 movs r0, #2 8001a22: f000 ff7f bl 8002924 8001a26: 4603 mov r3, r0 8001a28: 4618 mov r0, r3 8001a2a: 2300 movs r3, #0 8001a2c: 2200 movs r2, #0 8001a2e: 2100 movs r1, #0 8001a30: f001 f8e8 bl 8002c04 setLED(lookupLED(2,4), 0x00, 0x00, 0x00); 8001a34: 2104 movs r1, #4 8001a36: 2002 movs r0, #2 8001a38: f000 ff74 bl 8002924 8001a3c: 4603 mov r3, r0 8001a3e: 4618 mov r0, r3 8001a40: 2300 movs r3, #0 8001a42: 2200 movs r2, #0 8001a44: 2100 movs r1, #0 8001a46: f001 f8dd bl 8002c04 setLED(lookupLED(2,5), 0x00, 0x00, 0x00); 8001a4a: 2105 movs r1, #5 8001a4c: 2002 movs r0, #2 8001a4e: f000 ff69 bl 8002924 8001a52: 4603 mov r3, r0 8001a54: 4618 mov r0, r3 8001a56: 2300 movs r3, #0 8001a58: 2200 movs r2, #0 8001a5a: 2100 movs r1, #0 8001a5c: f001 f8d2 bl 8002c04 setLED(lookupLED(2,6), 0x00, 0x00, 0x00); 8001a60: 2106 movs r1, #6 8001a62: 2002 movs r0, #2 8001a64: f000 ff5e bl 8002924 8001a68: 4603 mov r3, r0 8001a6a: 4618 mov r0, r3 8001a6c: 2300 movs r3, #0 8001a6e: 2200 movs r2, #0 8001a70: 2100 movs r1, #0 8001a72: f001 f8c7 bl 8002c04 setLED(lookupLED(2,7), 0x00, 0x00, 0x00); 8001a76: 2107 movs r1, #7 8001a78: 2002 movs r0, #2 8001a7a: f000 ff53 bl 8002924 8001a7e: 4603 mov r3, r0 8001a80: 4618 mov r0, r3 8001a82: 2300 movs r3, #0 8001a84: 2200 movs r2, #0 8001a86: 2100 movs r1, #0 8001a88: f001 f8bc bl 8002c04 setLED(lookupLED(3,0), 0x00, 0x00, 0x00); 8001a8c: 2100 movs r1, #0 8001a8e: 2003 movs r0, #3 8001a90: f000 ff48 bl 8002924 8001a94: 4603 mov r3, r0 8001a96: 4618 mov r0, r3 8001a98: 2300 movs r3, #0 8001a9a: 2200 movs r2, #0 8001a9c: 2100 movs r1, #0 8001a9e: f001 f8b1 bl 8002c04 setLED(lookupLED(3,1), 0x00, 0x00, 0x00); 8001aa2: 2101 movs r1, #1 8001aa4: 2003 movs r0, #3 8001aa6: f000 ff3d bl 8002924 8001aaa: 4603 mov r3, r0 8001aac: 4618 mov r0, r3 8001aae: 2300 movs r3, #0 8001ab0: 2200 movs r2, #0 8001ab2: 2100 movs r1, #0 8001ab4: f001 f8a6 bl 8002c04 setLED(lookupLED(3,2), 0x00, 0x00, 0x7F); 8001ab8: 2102 movs r1, #2 8001aba: 2003 movs r0, #3 8001abc: f000 ff32 bl 8002924 8001ac0: 4603 mov r3, r0 8001ac2: 4618 mov r0, r3 8001ac4: 237f movs r3, #127 ; 0x7f 8001ac6: 2200 movs r2, #0 8001ac8: 2100 movs r1, #0 8001aca: f001 f89b bl 8002c04 setLED(lookupLED(3,3), 0x00, 0x00, 0x00); 8001ace: 2103 movs r1, #3 8001ad0: 2003 movs r0, #3 8001ad2: f000 ff27 bl 8002924 8001ad6: 4603 mov r3, r0 8001ad8: 4618 mov r0, r3 8001ada: 2300 movs r3, #0 8001adc: 2200 movs r2, #0 8001ade: 2100 movs r1, #0 8001ae0: f001 f890 bl 8002c04 setLED(lookupLED(3,4), 0x00, 0x00, 0x00); 8001ae4: 2104 movs r1, #4 8001ae6: 2003 movs r0, #3 8001ae8: f000 ff1c bl 8002924 8001aec: 4603 mov r3, r0 8001aee: 4618 mov r0, r3 8001af0: 2300 movs r3, #0 8001af2: 2200 movs r2, #0 8001af4: 2100 movs r1, #0 8001af6: f001 f885 bl 8002c04 setLED(lookupLED(3,5), 0x00, 0x00, 0x00); 8001afa: 2105 movs r1, #5 8001afc: 2003 movs r0, #3 8001afe: f000 ff11 bl 8002924 8001b02: 4603 mov r3, r0 8001b04: 4618 mov r0, r3 8001b06: 2300 movs r3, #0 8001b08: 2200 movs r2, #0 8001b0a: 2100 movs r1, #0 8001b0c: f001 f87a bl 8002c04 setLED(lookupLED(3,6), 0x00, 0x00, 0x00); 8001b10: 2106 movs r1, #6 8001b12: 2003 movs r0, #3 8001b14: f000 ff06 bl 8002924 8001b18: 4603 mov r3, r0 8001b1a: 4618 mov r0, r3 8001b1c: 2300 movs r3, #0 8001b1e: 2200 movs r2, #0 8001b20: 2100 movs r1, #0 8001b22: f001 f86f bl 8002c04 setLED(lookupLED(3,7), 0x00, 0x00, 0x00); 8001b26: 2107 movs r1, #7 8001b28: 2003 movs r0, #3 8001b2a: f000 fefb bl 8002924 8001b2e: 4603 mov r3, r0 8001b30: 4618 mov r0, r3 8001b32: 2300 movs r3, #0 8001b34: 2200 movs r2, #0 8001b36: 2100 movs r1, #0 8001b38: f001 f864 bl 8002c04 setLED(lookupLED(4,0), 0x00, 0x00, 0x00); 8001b3c: 2100 movs r1, #0 8001b3e: 2004 movs r0, #4 8001b40: f000 fef0 bl 8002924 8001b44: 4603 mov r3, r0 8001b46: 4618 mov r0, r3 8001b48: 2300 movs r3, #0 8001b4a: 2200 movs r2, #0 8001b4c: 2100 movs r1, #0 8001b4e: f001 f859 bl 8002c04 setLED(lookupLED(4,1), 0x00, 0x00, 0x00); 8001b52: 2101 movs r1, #1 8001b54: 2004 movs r0, #4 8001b56: f000 fee5 bl 8002924 8001b5a: 4603 mov r3, r0 8001b5c: 4618 mov r0, r3 8001b5e: 2300 movs r3, #0 8001b60: 2200 movs r2, #0 8001b62: 2100 movs r1, #0 8001b64: f001 f84e bl 8002c04 setLED(lookupLED(4,2), 0x00, 0x00, 0x7F); 8001b68: 2102 movs r1, #2 8001b6a: 2004 movs r0, #4 8001b6c: f000 feda bl 8002924 8001b70: 4603 mov r3, r0 8001b72: 4618 mov r0, r3 8001b74: 237f movs r3, #127 ; 0x7f 8001b76: 2200 movs r2, #0 8001b78: 2100 movs r1, #0 8001b7a: f001 f843 bl 8002c04 setLED(lookupLED(4,3), 0x00, 0x00, 0x00); 8001b7e: 2103 movs r1, #3 8001b80: 2004 movs r0, #4 8001b82: f000 fecf bl 8002924 8001b86: 4603 mov r3, r0 8001b88: 4618 mov r0, r3 8001b8a: 2300 movs r3, #0 8001b8c: 2200 movs r2, #0 8001b8e: 2100 movs r1, #0 8001b90: f001 f838 bl 8002c04 setLED(lookupLED(4,4), 0x00, 0x00, 0x00); 8001b94: 2104 movs r1, #4 8001b96: 2004 movs r0, #4 8001b98: f000 fec4 bl 8002924 8001b9c: 4603 mov r3, r0 8001b9e: 4618 mov r0, r3 8001ba0: 2300 movs r3, #0 8001ba2: 2200 movs r2, #0 8001ba4: 2100 movs r1, #0 8001ba6: f001 f82d bl 8002c04 setLED(lookupLED(4,5), 0x00, 0x00, 0x00); 8001baa: 2105 movs r1, #5 8001bac: 2004 movs r0, #4 8001bae: f000 feb9 bl 8002924 8001bb2: 4603 mov r3, r0 8001bb4: 4618 mov r0, r3 8001bb6: 2300 movs r3, #0 8001bb8: 2200 movs r2, #0 8001bba: 2100 movs r1, #0 8001bbc: f001 f822 bl 8002c04 setLED(lookupLED(4,6), 0x00, 0x00, 0x00); 8001bc0: 2106 movs r1, #6 8001bc2: 2004 movs r0, #4 8001bc4: f000 feae bl 8002924 8001bc8: 4603 mov r3, r0 8001bca: 4618 mov r0, r3 8001bcc: 2300 movs r3, #0 8001bce: 2200 movs r2, #0 8001bd0: 2100 movs r1, #0 8001bd2: f001 f817 bl 8002c04 setLED(lookupLED(4,7), 0x00, 0x00, 0x00); 8001bd6: 2107 movs r1, #7 8001bd8: 2004 movs r0, #4 8001bda: f000 fea3 bl 8002924 8001bde: 4603 mov r3, r0 8001be0: 4618 mov r0, r3 8001be2: 2300 movs r3, #0 8001be4: 2200 movs r2, #0 8001be6: 2100 movs r1, #0 8001be8: f001 f80c bl 8002c04 setLED(lookupLED(5,0), 0x00, 0x00, 0x00); 8001bec: 2100 movs r1, #0 8001bee: 2005 movs r0, #5 8001bf0: f000 fe98 bl 8002924 8001bf4: 4603 mov r3, r0 8001bf6: 4618 mov r0, r3 8001bf8: 2300 movs r3, #0 8001bfa: 2200 movs r2, #0 8001bfc: 2100 movs r1, #0 8001bfe: f001 f801 bl 8002c04 setLED(lookupLED(5,1), 0x00, 0x00, 0x00); 8001c02: 2101 movs r1, #1 8001c04: 2005 movs r0, #5 8001c06: f000 fe8d bl 8002924 8001c0a: 4603 mov r3, r0 8001c0c: 4618 mov r0, r3 8001c0e: 2300 movs r3, #0 8001c10: 2200 movs r2, #0 8001c12: 2100 movs r1, #0 8001c14: f000 fff6 bl 8002c04 setLED(lookupLED(5,2), 0x00, 0x00, 0x7F); 8001c18: 2102 movs r1, #2 8001c1a: 2005 movs r0, #5 8001c1c: f000 fe82 bl 8002924 8001c20: 4603 mov r3, r0 8001c22: 4618 mov r0, r3 8001c24: 237f movs r3, #127 ; 0x7f 8001c26: 2200 movs r2, #0 8001c28: 2100 movs r1, #0 8001c2a: f000 ffeb bl 8002c04 setLED(lookupLED(5,3), 0x00, 0x00, 0x00); 8001c2e: 2103 movs r1, #3 8001c30: 2005 movs r0, #5 8001c32: f000 fe77 bl 8002924 8001c36: 4603 mov r3, r0 8001c38: 4618 mov r0, r3 8001c3a: 2300 movs r3, #0 8001c3c: 2200 movs r2, #0 8001c3e: 2100 movs r1, #0 8001c40: f000 ffe0 bl 8002c04 setLED(lookupLED(5,4), 0x00, 0x00, 0x00); 8001c44: 2104 movs r1, #4 8001c46: 2005 movs r0, #5 8001c48: f000 fe6c bl 8002924 8001c4c: 4603 mov r3, r0 8001c4e: 4618 mov r0, r3 8001c50: 2300 movs r3, #0 8001c52: 2200 movs r2, #0 8001c54: 2100 movs r1, #0 8001c56: f000 ffd5 bl 8002c04 setLED(lookupLED(5,5), 0x00, 0x00, 0x00); 8001c5a: 2105 movs r1, #5 8001c5c: 2005 movs r0, #5 8001c5e: f000 fe61 bl 8002924 8001c62: 4603 mov r3, r0 8001c64: 4618 mov r0, r3 8001c66: 2300 movs r3, #0 8001c68: 2200 movs r2, #0 8001c6a: 2100 movs r1, #0 8001c6c: f000 ffca bl 8002c04 setLED(lookupLED(5,6), 0x00, 0x00, 0x00); 8001c70: 2106 movs r1, #6 8001c72: 2005 movs r0, #5 8001c74: f000 fe56 bl 8002924 8001c78: 4603 mov r3, r0 8001c7a: 4618 mov r0, r3 8001c7c: 2300 movs r3, #0 8001c7e: 2200 movs r2, #0 8001c80: 2100 movs r1, #0 8001c82: f000 ffbf bl 8002c04 setLED(lookupLED(5,7), 0x00, 0x00, 0x00); 8001c86: 2107 movs r1, #7 8001c88: 2005 movs r0, #5 8001c8a: f000 fe4b bl 8002924 8001c8e: 4603 mov r3, r0 8001c90: 4618 mov r0, r3 8001c92: 2300 movs r3, #0 8001c94: 2200 movs r2, #0 8001c96: 2100 movs r1, #0 8001c98: f000 ffb4 bl 8002c04 setLED(lookupLED(6,0), 0x00, 0x00, 0x00); 8001c9c: 2100 movs r1, #0 8001c9e: 2006 movs r0, #6 8001ca0: f000 fe40 bl 8002924 8001ca4: 4603 mov r3, r0 8001ca6: 4618 mov r0, r3 8001ca8: 2300 movs r3, #0 8001caa: 2200 movs r2, #0 8001cac: 2100 movs r1, #0 8001cae: f000 ffa9 bl 8002c04 setLED(lookupLED(6,1), 0x00, 0x00, 0x00); 8001cb2: 2101 movs r1, #1 8001cb4: 2006 movs r0, #6 8001cb6: f000 fe35 bl 8002924 8001cba: 4603 mov r3, r0 8001cbc: 4618 mov r0, r3 8001cbe: 2300 movs r3, #0 8001cc0: 2200 movs r2, #0 8001cc2: 2100 movs r1, #0 8001cc4: f000 ff9e bl 8002c04 setLED(lookupLED(6,2), 0x00, 0x00, 0x7F); 8001cc8: 2102 movs r1, #2 8001cca: 2006 movs r0, #6 8001ccc: f000 fe2a bl 8002924 8001cd0: 4603 mov r3, r0 8001cd2: 4618 mov r0, r3 8001cd4: 237f movs r3, #127 ; 0x7f 8001cd6: 2200 movs r2, #0 8001cd8: 2100 movs r1, #0 8001cda: f000 ff93 bl 8002c04 setLED(lookupLED(6,3), 0x00, 0x00, 0x00); 8001cde: 2103 movs r1, #3 8001ce0: 2006 movs r0, #6 8001ce2: f000 fe1f bl 8002924 8001ce6: 4603 mov r3, r0 8001ce8: 4618 mov r0, r3 8001cea: 2300 movs r3, #0 8001cec: 2200 movs r2, #0 8001cee: 2100 movs r1, #0 8001cf0: f000 ff88 bl 8002c04 setLED(lookupLED(6,4), 0x00, 0x00, 0x00); 8001cf4: 2104 movs r1, #4 8001cf6: 2006 movs r0, #6 8001cf8: f000 fe14 bl 8002924 8001cfc: 4603 mov r3, r0 8001cfe: 4618 mov r0, r3 8001d00: 2300 movs r3, #0 8001d02: 2200 movs r2, #0 8001d04: 2100 movs r1, #0 8001d06: f000 ff7d bl 8002c04 setLED(lookupLED(6,5), 0x00, 0x00, 0x00); 8001d0a: 2105 movs r1, #5 8001d0c: 2006 movs r0, #6 8001d0e: f000 fe09 bl 8002924 8001d12: 4603 mov r3, r0 8001d14: 4618 mov r0, r3 8001d16: 2300 movs r3, #0 8001d18: 2200 movs r2, #0 8001d1a: 2100 movs r1, #0 8001d1c: f000 ff72 bl 8002c04 setLED(lookupLED(6,6), 0x00, 0x00, 0x00); 8001d20: 2106 movs r1, #6 8001d22: 2006 movs r0, #6 8001d24: f000 fdfe bl 8002924 8001d28: 4603 mov r3, r0 8001d2a: 4618 mov r0, r3 8001d2c: 2300 movs r3, #0 8001d2e: 2200 movs r2, #0 8001d30: 2100 movs r1, #0 8001d32: f000 ff67 bl 8002c04 setLED(lookupLED(6,7), 0x00, 0x00, 0x00); 8001d36: 2107 movs r1, #7 8001d38: 2006 movs r0, #6 8001d3a: f000 fdf3 bl 8002924 8001d3e: 4603 mov r3, r0 8001d40: 4618 mov r0, r3 8001d42: 2300 movs r3, #0 8001d44: 2200 movs r2, #0 8001d46: 2100 movs r1, #0 8001d48: f000 ff5c bl 8002c04 setLED(lookupLED(7,0), 0x00, 0x00, 0x00); 8001d4c: 2100 movs r1, #0 8001d4e: 2007 movs r0, #7 8001d50: f000 fde8 bl 8002924 8001d54: 4603 mov r3, r0 8001d56: 4618 mov r0, r3 8001d58: 2300 movs r3, #0 8001d5a: 2200 movs r2, #0 8001d5c: 2100 movs r1, #0 8001d5e: f000 ff51 bl 8002c04 setLED(lookupLED(7,1), 0x00, 0x00, 0x00); 8001d62: 2101 movs r1, #1 8001d64: 2007 movs r0, #7 8001d66: f000 fddd bl 8002924 8001d6a: 4603 mov r3, r0 8001d6c: 4618 mov r0, r3 8001d6e: 2300 movs r3, #0 8001d70: 2200 movs r2, #0 8001d72: 2100 movs r1, #0 8001d74: f000 ff46 bl 8002c04 setLED(lookupLED(7,2), 0x00, 0x00, 0x00); 8001d78: 2102 movs r1, #2 8001d7a: 2007 movs r0, #7 8001d7c: f000 fdd2 bl 8002924 8001d80: 4603 mov r3, r0 8001d82: 4618 mov r0, r3 8001d84: 2300 movs r3, #0 8001d86: 2200 movs r2, #0 8001d88: 2100 movs r1, #0 8001d8a: f000 ff3b bl 8002c04 setLED(lookupLED(7,3), 0x00, 0x00, 0x7F); 8001d8e: 2103 movs r1, #3 8001d90: 2007 movs r0, #7 8001d92: f000 fdc7 bl 8002924 8001d96: 4603 mov r3, r0 8001d98: 4618 mov r0, r3 8001d9a: 237f movs r3, #127 ; 0x7f 8001d9c: 2200 movs r2, #0 8001d9e: 2100 movs r1, #0 8001da0: f000 ff30 bl 8002c04 setLED(lookupLED(7,4), 0x00, 0x00, 0x00); 8001da4: 2104 movs r1, #4 8001da6: 2007 movs r0, #7 8001da8: f000 fdbc bl 8002924 8001dac: 4603 mov r3, r0 8001dae: 4618 mov r0, r3 8001db0: 2300 movs r3, #0 8001db2: 2200 movs r2, #0 8001db4: 2100 movs r1, #0 8001db6: f000 ff25 bl 8002c04 setLED(lookupLED(7,5), 0x00, 0x00, 0x00); 8001dba: 2105 movs r1, #5 8001dbc: 2007 movs r0, #7 8001dbe: f000 fdb1 bl 8002924 8001dc2: 4603 mov r3, r0 8001dc4: 4618 mov r0, r3 8001dc6: 2300 movs r3, #0 8001dc8: 2200 movs r2, #0 8001dca: 2100 movs r1, #0 8001dcc: f000 ff1a bl 8002c04 setLED(lookupLED(7,6), 0x00, 0x00, 0x00); 8001dd0: 2106 movs r1, #6 8001dd2: 2007 movs r0, #7 8001dd4: f000 fda6 bl 8002924 8001dd8: 4603 mov r3, r0 8001dda: 4618 mov r0, r3 8001ddc: 2300 movs r3, #0 8001dde: 2200 movs r2, #0 8001de0: 2100 movs r1, #0 8001de2: f000 ff0f bl 8002c04 setLED(lookupLED(7,7), 0x00, 0x00, 0x00); 8001de6: 2107 movs r1, #7 8001de8: 2007 movs r0, #7 8001dea: f000 fd9b bl 8002924 8001dee: 4603 mov r3, r0 8001df0: 4618 mov r0, r3 8001df2: 2300 movs r3, #0 8001df4: 2200 movs r2, #0 8001df6: 2100 movs r1, #0 8001df8: f000 ff04 bl 8002c04 } 8001dfc: bf00 nop 8001dfe: bd80 pop {r7, pc} 08001e00 : void LEDDesign_Smile_Audio(void){ 8001e00: b5b0 push {r4, r5, r7, lr} 8001e02: b082 sub sp, #8 8001e04: af00 add r7, sp, #0 uint8_t currentSoundLevel = getSoundLevel(); 8001e06: f7ff fb75 bl 80014f4 8001e0a: 4603 mov r3, r0 8001e0c: 71fb strb r3, [r7, #7] setLED(lookupLED(0,0), 0x00, 0x00, 0x00); 8001e0e: 2100 movs r1, #0 8001e10: 2000 movs r0, #0 8001e12: f000 fd87 bl 8002924 8001e16: 4603 mov r3, r0 8001e18: 4618 mov r0, r3 8001e1a: 2300 movs r3, #0 8001e1c: 2200 movs r2, #0 8001e1e: 2100 movs r1, #0 8001e20: f000 fef0 bl 8002c04 setLED(lookupLED(0,1), 0x00, 0x00, 0x00); 8001e24: 2101 movs r1, #1 8001e26: 2000 movs r0, #0 8001e28: f000 fd7c bl 8002924 8001e2c: 4603 mov r3, r0 8001e2e: 4618 mov r0, r3 8001e30: 2300 movs r3, #0 8001e32: 2200 movs r2, #0 8001e34: 2100 movs r1, #0 8001e36: f000 fee5 bl 8002c04 setLED(lookupLED(0,2), 0x00, 0x00, currentSoundLevel * 0.25); 8001e3a: 2102 movs r1, #2 8001e3c: 2000 movs r0, #0 8001e3e: f000 fd71 bl 8002924 8001e42: 4603 mov r3, r0 8001e44: 461d mov r5, r3 8001e46: 79fb ldrb r3, [r7, #7] 8001e48: 4618 mov r0, r3 8001e4a: f7fe fb23 bl 8000494 <__aeabi_i2d> 8001e4e: f04f 0200 mov.w r2, #0 8001e52: 4beb ldr r3, [pc, #940] ; (8002200 ) 8001e54: f7fe fb88 bl 8000568 <__aeabi_dmul> 8001e58: 4603 mov r3, r0 8001e5a: 460c mov r4, r1 8001e5c: 4618 mov r0, r3 8001e5e: 4621 mov r1, r4 8001e60: f7fe fd94 bl 800098c <__aeabi_d2uiz> 8001e64: 4603 mov r3, r0 8001e66: b2db uxtb r3, r3 8001e68: 2200 movs r2, #0 8001e6a: 2100 movs r1, #0 8001e6c: 4628 mov r0, r5 8001e6e: f000 fec9 bl 8002c04 setLED(lookupLED(0,3), 0x00, 0x00, 0x7F + (currentSoundLevel * 0.5)); 8001e72: 2103 movs r1, #3 8001e74: 2000 movs r0, #0 8001e76: f000 fd55 bl 8002924 8001e7a: 4603 mov r3, r0 8001e7c: 461d mov r5, r3 8001e7e: 79fb ldrb r3, [r7, #7] 8001e80: 4618 mov r0, r3 8001e82: f7fe fb07 bl 8000494 <__aeabi_i2d> 8001e86: f04f 0200 mov.w r2, #0 8001e8a: 4bde ldr r3, [pc, #888] ; (8002204 ) 8001e8c: f7fe fb6c bl 8000568 <__aeabi_dmul> 8001e90: 4603 mov r3, r0 8001e92: 460c mov r4, r1 8001e94: 4618 mov r0, r3 8001e96: 4621 mov r1, r4 8001e98: a3d7 add r3, pc, #860 ; (adr r3, 80021f8 ) 8001e9a: e9d3 2300 ldrd r2, r3, [r3] 8001e9e: f7fe f9ad bl 80001fc <__adddf3> 8001ea2: 4603 mov r3, r0 8001ea4: 460c mov r4, r1 8001ea6: 4618 mov r0, r3 8001ea8: 4621 mov r1, r4 8001eaa: f7fe fd6f bl 800098c <__aeabi_d2uiz> 8001eae: 4603 mov r3, r0 8001eb0: b2db uxtb r3, r3 8001eb2: 2200 movs r2, #0 8001eb4: 2100 movs r1, #0 8001eb6: 4628 mov r0, r5 8001eb8: f000 fea4 bl 8002c04 setLED(lookupLED(0,4), 0x00, 0x00, currentSoundLevel * 0.25); 8001ebc: 2104 movs r1, #4 8001ebe: 2000 movs r0, #0 8001ec0: f000 fd30 bl 8002924 8001ec4: 4603 mov r3, r0 8001ec6: 461d mov r5, r3 8001ec8: 79fb ldrb r3, [r7, #7] 8001eca: 4618 mov r0, r3 8001ecc: f7fe fae2 bl 8000494 <__aeabi_i2d> 8001ed0: f04f 0200 mov.w r2, #0 8001ed4: 4bca ldr r3, [pc, #808] ; (8002200 ) 8001ed6: f7fe fb47 bl 8000568 <__aeabi_dmul> 8001eda: 4603 mov r3, r0 8001edc: 460c mov r4, r1 8001ede: 4618 mov r0, r3 8001ee0: 4621 mov r1, r4 8001ee2: f7fe fd53 bl 800098c <__aeabi_d2uiz> 8001ee6: 4603 mov r3, r0 8001ee8: b2db uxtb r3, r3 8001eea: 2200 movs r2, #0 8001eec: 2100 movs r1, #0 8001eee: 4628 mov r0, r5 8001ef0: f000 fe88 bl 8002c04 setLED(lookupLED(0,5), 0x00, 0x00, 0x00); 8001ef4: 2105 movs r1, #5 8001ef6: 2000 movs r0, #0 8001ef8: f000 fd14 bl 8002924 8001efc: 4603 mov r3, r0 8001efe: 4618 mov r0, r3 8001f00: 2300 movs r3, #0 8001f02: 2200 movs r2, #0 8001f04: 2100 movs r1, #0 8001f06: f000 fe7d bl 8002c04 setLED(lookupLED(0,6), 0x00, 0x00, 0x00); 8001f0a: 2106 movs r1, #6 8001f0c: 2000 movs r0, #0 8001f0e: f000 fd09 bl 8002924 8001f12: 4603 mov r3, r0 8001f14: 4618 mov r0, r3 8001f16: 2300 movs r3, #0 8001f18: 2200 movs r2, #0 8001f1a: 2100 movs r1, #0 8001f1c: f000 fe72 bl 8002c04 setLED(lookupLED(0,7), 0x00, 0x00, 0x00); 8001f20: 2107 movs r1, #7 8001f22: 2000 movs r0, #0 8001f24: f000 fcfe bl 8002924 8001f28: 4603 mov r3, r0 8001f2a: 4618 mov r0, r3 8001f2c: 2300 movs r3, #0 8001f2e: 2200 movs r2, #0 8001f30: 2100 movs r1, #0 8001f32: f000 fe67 bl 8002c04 setLED(lookupLED(1,0), 0x00, 0x00, 0x00); 8001f36: 2100 movs r1, #0 8001f38: 2001 movs r0, #1 8001f3a: f000 fcf3 bl 8002924 8001f3e: 4603 mov r3, r0 8001f40: 4618 mov r0, r3 8001f42: 2300 movs r3, #0 8001f44: 2200 movs r2, #0 8001f46: 2100 movs r1, #0 8001f48: f000 fe5c bl 8002c04 setLED(lookupLED(1,1), 0x00, 0x00, currentSoundLevel * 0.5); 8001f4c: 2101 movs r1, #1 8001f4e: 2001 movs r0, #1 8001f50: f000 fce8 bl 8002924 8001f54: 4603 mov r3, r0 8001f56: 461d mov r5, r3 8001f58: 79fb ldrb r3, [r7, #7] 8001f5a: 4618 mov r0, r3 8001f5c: f7fe fa9a bl 8000494 <__aeabi_i2d> 8001f60: f04f 0200 mov.w r2, #0 8001f64: 4ba7 ldr r3, [pc, #668] ; (8002204 ) 8001f66: f7fe faff bl 8000568 <__aeabi_dmul> 8001f6a: 4603 mov r3, r0 8001f6c: 460c mov r4, r1 8001f6e: 4618 mov r0, r3 8001f70: 4621 mov r1, r4 8001f72: f7fe fd0b bl 800098c <__aeabi_d2uiz> 8001f76: 4603 mov r3, r0 8001f78: b2db uxtb r3, r3 8001f7a: 2200 movs r2, #0 8001f7c: 2100 movs r1, #0 8001f7e: 4628 mov r0, r5 8001f80: f000 fe40 bl 8002c04 setLED(lookupLED(1,2), 0x00, 0x00, 0x7F + (currentSoundLevel * 0.5)); 8001f84: 2102 movs r1, #2 8001f86: 2001 movs r0, #1 8001f88: f000 fccc bl 8002924 8001f8c: 4603 mov r3, r0 8001f8e: 461d mov r5, r3 8001f90: 79fb ldrb r3, [r7, #7] 8001f92: 4618 mov r0, r3 8001f94: f7fe fa7e bl 8000494 <__aeabi_i2d> 8001f98: f04f 0200 mov.w r2, #0 8001f9c: 4b99 ldr r3, [pc, #612] ; (8002204 ) 8001f9e: f7fe fae3 bl 8000568 <__aeabi_dmul> 8001fa2: 4603 mov r3, r0 8001fa4: 460c mov r4, r1 8001fa6: 4618 mov r0, r3 8001fa8: 4621 mov r1, r4 8001faa: a393 add r3, pc, #588 ; (adr r3, 80021f8 ) 8001fac: e9d3 2300 ldrd r2, r3, [r3] 8001fb0: f7fe f924 bl 80001fc <__adddf3> 8001fb4: 4603 mov r3, r0 8001fb6: 460c mov r4, r1 8001fb8: 4618 mov r0, r3 8001fba: 4621 mov r1, r4 8001fbc: f7fe fce6 bl 800098c <__aeabi_d2uiz> 8001fc0: 4603 mov r3, r0 8001fc2: b2db uxtb r3, r3 8001fc4: 2200 movs r2, #0 8001fc6: 2100 movs r1, #0 8001fc8: 4628 mov r0, r5 8001fca: f000 fe1b bl 8002c04 setLED(lookupLED(1,3), 0x00, 0x00, currentSoundLevel); 8001fce: 2103 movs r1, #3 8001fd0: 2001 movs r0, #1 8001fd2: f000 fca7 bl 8002924 8001fd6: 4603 mov r3, r0 8001fd8: 4618 mov r0, r3 8001fda: 79fb ldrb r3, [r7, #7] 8001fdc: 2200 movs r2, #0 8001fde: 2100 movs r1, #0 8001fe0: f000 fe10 bl 8002c04 setLED(lookupLED(1,4), 0x00, 0x00, currentSoundLevel); 8001fe4: 2104 movs r1, #4 8001fe6: 2001 movs r0, #1 8001fe8: f000 fc9c bl 8002924 8001fec: 4603 mov r3, r0 8001fee: 4618 mov r0, r3 8001ff0: 79fb ldrb r3, [r7, #7] 8001ff2: 2200 movs r2, #0 8001ff4: 2100 movs r1, #0 8001ff6: f000 fe05 bl 8002c04 setLED(lookupLED(1,5), 0x00, 0x00, currentSoundLevel * 0.5); 8001ffa: 2105 movs r1, #5 8001ffc: 2001 movs r0, #1 8001ffe: f000 fc91 bl 8002924 8002002: 4603 mov r3, r0 8002004: 461d mov r5, r3 8002006: 79fb ldrb r3, [r7, #7] 8002008: 4618 mov r0, r3 800200a: f7fe fa43 bl 8000494 <__aeabi_i2d> 800200e: f04f 0200 mov.w r2, #0 8002012: 4b7c ldr r3, [pc, #496] ; (8002204 ) 8002014: f7fe faa8 bl 8000568 <__aeabi_dmul> 8002018: 4603 mov r3, r0 800201a: 460c mov r4, r1 800201c: 4618 mov r0, r3 800201e: 4621 mov r1, r4 8002020: f7fe fcb4 bl 800098c <__aeabi_d2uiz> 8002024: 4603 mov r3, r0 8002026: b2db uxtb r3, r3 8002028: 2200 movs r2, #0 800202a: 2100 movs r1, #0 800202c: 4628 mov r0, r5 800202e: f000 fde9 bl 8002c04 setLED(lookupLED(1,6), 0x00, 0x00, 0x00); 8002032: 2106 movs r1, #6 8002034: 2001 movs r0, #1 8002036: f000 fc75 bl 8002924 800203a: 4603 mov r3, r0 800203c: 4618 mov r0, r3 800203e: 2300 movs r3, #0 8002040: 2200 movs r2, #0 8002042: 2100 movs r1, #0 8002044: f000 fdde bl 8002c04 setLED(lookupLED(1,7), 0x00, 0x00, 0x00); 8002048: 2107 movs r1, #7 800204a: 2001 movs r0, #1 800204c: f000 fc6a bl 8002924 8002050: 4603 mov r3, r0 8002052: 4618 mov r0, r3 8002054: 2300 movs r3, #0 8002056: 2200 movs r2, #0 8002058: 2100 movs r1, #0 800205a: f000 fdd3 bl 8002c04 setLED(lookupLED(2,0), 0x00, 0x00, 0x00); 800205e: 2100 movs r1, #0 8002060: 2002 movs r0, #2 8002062: f000 fc5f bl 8002924 8002066: 4603 mov r3, r0 8002068: 4618 mov r0, r3 800206a: 2300 movs r3, #0 800206c: 2200 movs r2, #0 800206e: 2100 movs r1, #0 8002070: f000 fdc8 bl 8002c04 setLED(lookupLED(2,1), 0x00, 0x00, currentSoundLevel * 0.5); 8002074: 2101 movs r1, #1 8002076: 2002 movs r0, #2 8002078: f000 fc54 bl 8002924 800207c: 4603 mov r3, r0 800207e: 461d mov r5, r3 8002080: 79fb ldrb r3, [r7, #7] 8002082: 4618 mov r0, r3 8002084: f7fe fa06 bl 8000494 <__aeabi_i2d> 8002088: f04f 0200 mov.w r2, #0 800208c: 4b5d ldr r3, [pc, #372] ; (8002204 ) 800208e: f7fe fa6b bl 8000568 <__aeabi_dmul> 8002092: 4603 mov r3, r0 8002094: 460c mov r4, r1 8002096: 4618 mov r0, r3 8002098: 4621 mov r1, r4 800209a: f7fe fc77 bl 800098c <__aeabi_d2uiz> 800209e: 4603 mov r3, r0 80020a0: b2db uxtb r3, r3 80020a2: 2200 movs r2, #0 80020a4: 2100 movs r1, #0 80020a6: 4628 mov r0, r5 80020a8: f000 fdac bl 8002c04 setLED(lookupLED(2,2), 0x00, 0x00, 0x7F + (currentSoundLevel * 0.5)); 80020ac: 2102 movs r1, #2 80020ae: 2002 movs r0, #2 80020b0: f000 fc38 bl 8002924 80020b4: 4603 mov r3, r0 80020b6: 461d mov r5, r3 80020b8: 79fb ldrb r3, [r7, #7] 80020ba: 4618 mov r0, r3 80020bc: f7fe f9ea bl 8000494 <__aeabi_i2d> 80020c0: f04f 0200 mov.w r2, #0 80020c4: 4b4f ldr r3, [pc, #316] ; (8002204 ) 80020c6: f7fe fa4f bl 8000568 <__aeabi_dmul> 80020ca: 4603 mov r3, r0 80020cc: 460c mov r4, r1 80020ce: 4618 mov r0, r3 80020d0: 4621 mov r1, r4 80020d2: a349 add r3, pc, #292 ; (adr r3, 80021f8 ) 80020d4: e9d3 2300 ldrd r2, r3, [r3] 80020d8: f7fe f890 bl 80001fc <__adddf3> 80020dc: 4603 mov r3, r0 80020de: 460c mov r4, r1 80020e0: 4618 mov r0, r3 80020e2: 4621 mov r1, r4 80020e4: f7fe fc52 bl 800098c <__aeabi_d2uiz> 80020e8: 4603 mov r3, r0 80020ea: b2db uxtb r3, r3 80020ec: 2200 movs r2, #0 80020ee: 2100 movs r1, #0 80020f0: 4628 mov r0, r5 80020f2: f000 fd87 bl 8002c04 setLED(lookupLED(2,3), 0x00, 0x00, currentSoundLevel); 80020f6: 2103 movs r1, #3 80020f8: 2002 movs r0, #2 80020fa: f000 fc13 bl 8002924 80020fe: 4603 mov r3, r0 8002100: 4618 mov r0, r3 8002102: 79fb ldrb r3, [r7, #7] 8002104: 2200 movs r2, #0 8002106: 2100 movs r1, #0 8002108: f000 fd7c bl 8002c04 setLED(lookupLED(2,4), 0x00, 0x00, currentSoundLevel); 800210c: 2104 movs r1, #4 800210e: 2002 movs r0, #2 8002110: f000 fc08 bl 8002924 8002114: 4603 mov r3, r0 8002116: 4618 mov r0, r3 8002118: 79fb ldrb r3, [r7, #7] 800211a: 2200 movs r2, #0 800211c: 2100 movs r1, #0 800211e: f000 fd71 bl 8002c04 setLED(lookupLED(2,5), 0x00, 0x00, currentSoundLevel * 0.5); 8002122: 2105 movs r1, #5 8002124: 2002 movs r0, #2 8002126: f000 fbfd bl 8002924 800212a: 4603 mov r3, r0 800212c: 461d mov r5, r3 800212e: 79fb ldrb r3, [r7, #7] 8002130: 4618 mov r0, r3 8002132: f7fe f9af bl 8000494 <__aeabi_i2d> 8002136: f04f 0200 mov.w r2, #0 800213a: 4b32 ldr r3, [pc, #200] ; (8002204 ) 800213c: f7fe fa14 bl 8000568 <__aeabi_dmul> 8002140: 4603 mov r3, r0 8002142: 460c mov r4, r1 8002144: 4618 mov r0, r3 8002146: 4621 mov r1, r4 8002148: f7fe fc20 bl 800098c <__aeabi_d2uiz> 800214c: 4603 mov r3, r0 800214e: b2db uxtb r3, r3 8002150: 2200 movs r2, #0 8002152: 2100 movs r1, #0 8002154: 4628 mov r0, r5 8002156: f000 fd55 bl 8002c04 setLED(lookupLED(2,6), 0x00, 0x00, 0x00); 800215a: 2106 movs r1, #6 800215c: 2002 movs r0, #2 800215e: f000 fbe1 bl 8002924 8002162: 4603 mov r3, r0 8002164: 4618 mov r0, r3 8002166: 2300 movs r3, #0 8002168: 2200 movs r2, #0 800216a: 2100 movs r1, #0 800216c: f000 fd4a bl 8002c04 setLED(lookupLED(2,7), 0x00, 0x00, 0x00); 8002170: 2107 movs r1, #7 8002172: 2002 movs r0, #2 8002174: f000 fbd6 bl 8002924 8002178: 4603 mov r3, r0 800217a: 4618 mov r0, r3 800217c: 2300 movs r3, #0 800217e: 2200 movs r2, #0 8002180: 2100 movs r1, #0 8002182: f000 fd3f bl 8002c04 setLED(lookupLED(3,0), 0x00, 0x00, currentSoundLevel * 0.25); 8002186: 2100 movs r1, #0 8002188: 2003 movs r0, #3 800218a: f000 fbcb bl 8002924 800218e: 4603 mov r3, r0 8002190: 461d mov r5, r3 8002192: 79fb ldrb r3, [r7, #7] 8002194: 4618 mov r0, r3 8002196: f7fe f97d bl 8000494 <__aeabi_i2d> 800219a: f04f 0200 mov.w r2, #0 800219e: 4b18 ldr r3, [pc, #96] ; (8002200 ) 80021a0: f7fe f9e2 bl 8000568 <__aeabi_dmul> 80021a4: 4603 mov r3, r0 80021a6: 460c mov r4, r1 80021a8: 4618 mov r0, r3 80021aa: 4621 mov r1, r4 80021ac: f7fe fbee bl 800098c <__aeabi_d2uiz> 80021b0: 4603 mov r3, r0 80021b2: b2db uxtb r3, r3 80021b4: 2200 movs r2, #0 80021b6: 2100 movs r1, #0 80021b8: 4628 mov r0, r5 80021ba: f000 fd23 bl 8002c04 setLED(lookupLED(3,1), 0x00, 0x00, currentSoundLevel * 0.5); 80021be: 2101 movs r1, #1 80021c0: 2003 movs r0, #3 80021c2: f000 fbaf bl 8002924 80021c6: 4603 mov r3, r0 80021c8: 461d mov r5, r3 80021ca: 79fb ldrb r3, [r7, #7] 80021cc: 4618 mov r0, r3 80021ce: f7fe f961 bl 8000494 <__aeabi_i2d> 80021d2: f04f 0200 mov.w r2, #0 80021d6: 4b0b ldr r3, [pc, #44] ; (8002204 ) 80021d8: f7fe f9c6 bl 8000568 <__aeabi_dmul> 80021dc: 4603 mov r3, r0 80021de: 460c mov r4, r1 80021e0: 4618 mov r0, r3 80021e2: 4621 mov r1, r4 80021e4: f7fe fbd2 bl 800098c <__aeabi_d2uiz> 80021e8: 4603 mov r3, r0 80021ea: b2db uxtb r3, r3 80021ec: 2200 movs r2, #0 80021ee: 2100 movs r1, #0 80021f0: e00a b.n 8002208 80021f2: bf00 nop 80021f4: f3af 8000 nop.w 80021f8: 00000000 .word 0x00000000 80021fc: 405fc000 .word 0x405fc000 8002200: 3fd00000 .word 0x3fd00000 8002204: 3fe00000 .word 0x3fe00000 8002208: 4628 mov r0, r5 800220a: f000 fcfb bl 8002c04 setLED(lookupLED(3,2), 0x00, 0x00, 0x7F + (currentSoundLevel * 0.5)); 800220e: 2102 movs r1, #2 8002210: 2003 movs r0, #3 8002212: f000 fb87 bl 8002924 8002216: 4603 mov r3, r0 8002218: 461d mov r5, r3 800221a: 79fb ldrb r3, [r7, #7] 800221c: 4618 mov r0, r3 800221e: f7fe f939 bl 8000494 <__aeabi_i2d> 8002222: f04f 0200 mov.w r2, #0 8002226: 4bea ldr r3, [pc, #936] ; (80025d0 ) 8002228: f7fe f99e bl 8000568 <__aeabi_dmul> 800222c: 4603 mov r3, r0 800222e: 460c mov r4, r1 8002230: 4618 mov r0, r3 8002232: 4621 mov r1, r4 8002234: a3e4 add r3, pc, #912 ; (adr r3, 80025c8 ) 8002236: e9d3 2300 ldrd r2, r3, [r3] 800223a: f7fd ffdf bl 80001fc <__adddf3> 800223e: 4603 mov r3, r0 8002240: 460c mov r4, r1 8002242: 4618 mov r0, r3 8002244: 4621 mov r1, r4 8002246: f7fe fba1 bl 800098c <__aeabi_d2uiz> 800224a: 4603 mov r3, r0 800224c: b2db uxtb r3, r3 800224e: 2200 movs r2, #0 8002250: 2100 movs r1, #0 8002252: 4628 mov r0, r5 8002254: f000 fcd6 bl 8002c04 setLED(lookupLED(3,3), 0x00, 0x00, currentSoundLevel); 8002258: 2103 movs r1, #3 800225a: 2003 movs r0, #3 800225c: f000 fb62 bl 8002924 8002260: 4603 mov r3, r0 8002262: 4618 mov r0, r3 8002264: 79fb ldrb r3, [r7, #7] 8002266: 2200 movs r2, #0 8002268: 2100 movs r1, #0 800226a: f000 fccb bl 8002c04 setLED(lookupLED(3,4), 0x00, 0x00, currentSoundLevel); 800226e: 2104 movs r1, #4 8002270: 2003 movs r0, #3 8002272: f000 fb57 bl 8002924 8002276: 4603 mov r3, r0 8002278: 4618 mov r0, r3 800227a: 79fb ldrb r3, [r7, #7] 800227c: 2200 movs r2, #0 800227e: 2100 movs r1, #0 8002280: f000 fcc0 bl 8002c04 setLED(lookupLED(3,5), 0x00, 0x00, currentSoundLevel * 0.5); 8002284: 2105 movs r1, #5 8002286: 2003 movs r0, #3 8002288: f000 fb4c bl 8002924 800228c: 4603 mov r3, r0 800228e: 461d mov r5, r3 8002290: 79fb ldrb r3, [r7, #7] 8002292: 4618 mov r0, r3 8002294: f7fe f8fe bl 8000494 <__aeabi_i2d> 8002298: f04f 0200 mov.w r2, #0 800229c: 4bcc ldr r3, [pc, #816] ; (80025d0 ) 800229e: f7fe f963 bl 8000568 <__aeabi_dmul> 80022a2: 4603 mov r3, r0 80022a4: 460c mov r4, r1 80022a6: 4618 mov r0, r3 80022a8: 4621 mov r1, r4 80022aa: f7fe fb6f bl 800098c <__aeabi_d2uiz> 80022ae: 4603 mov r3, r0 80022b0: b2db uxtb r3, r3 80022b2: 2200 movs r2, #0 80022b4: 2100 movs r1, #0 80022b6: 4628 mov r0, r5 80022b8: f000 fca4 bl 8002c04 setLED(lookupLED(3,6), 0x00, 0x00, currentSoundLevel * 0.25); 80022bc: 2106 movs r1, #6 80022be: 2003 movs r0, #3 80022c0: f000 fb30 bl 8002924 80022c4: 4603 mov r3, r0 80022c6: 461d mov r5, r3 80022c8: 79fb ldrb r3, [r7, #7] 80022ca: 4618 mov r0, r3 80022cc: f7fe f8e2 bl 8000494 <__aeabi_i2d> 80022d0: f04f 0200 mov.w r2, #0 80022d4: 4bbf ldr r3, [pc, #764] ; (80025d4 ) 80022d6: f7fe f947 bl 8000568 <__aeabi_dmul> 80022da: 4603 mov r3, r0 80022dc: 460c mov r4, r1 80022de: 4618 mov r0, r3 80022e0: 4621 mov r1, r4 80022e2: f7fe fb53 bl 800098c <__aeabi_d2uiz> 80022e6: 4603 mov r3, r0 80022e8: b2db uxtb r3, r3 80022ea: 2200 movs r2, #0 80022ec: 2100 movs r1, #0 80022ee: 4628 mov r0, r5 80022f0: f000 fc88 bl 8002c04 setLED(lookupLED(3,7), 0x00, 0x00, 0x00); 80022f4: 2107 movs r1, #7 80022f6: 2003 movs r0, #3 80022f8: f000 fb14 bl 8002924 80022fc: 4603 mov r3, r0 80022fe: 4618 mov r0, r3 8002300: 2300 movs r3, #0 8002302: 2200 movs r2, #0 8002304: 2100 movs r1, #0 8002306: f000 fc7d bl 8002c04 setLED(lookupLED(4,0), 0x00, 0x00, currentSoundLevel * 0.25); 800230a: 2100 movs r1, #0 800230c: 2004 movs r0, #4 800230e: f000 fb09 bl 8002924 8002312: 4603 mov r3, r0 8002314: 461d mov r5, r3 8002316: 79fb ldrb r3, [r7, #7] 8002318: 4618 mov r0, r3 800231a: f7fe f8bb bl 8000494 <__aeabi_i2d> 800231e: f04f 0200 mov.w r2, #0 8002322: 4bac ldr r3, [pc, #688] ; (80025d4 ) 8002324: f7fe f920 bl 8000568 <__aeabi_dmul> 8002328: 4603 mov r3, r0 800232a: 460c mov r4, r1 800232c: 4618 mov r0, r3 800232e: 4621 mov r1, r4 8002330: f7fe fb2c bl 800098c <__aeabi_d2uiz> 8002334: 4603 mov r3, r0 8002336: b2db uxtb r3, r3 8002338: 2200 movs r2, #0 800233a: 2100 movs r1, #0 800233c: 4628 mov r0, r5 800233e: f000 fc61 bl 8002c04 setLED(lookupLED(4,1), 0x00, 0x00, currentSoundLevel * 0.5); 8002342: 2101 movs r1, #1 8002344: 2004 movs r0, #4 8002346: f000 faed bl 8002924 800234a: 4603 mov r3, r0 800234c: 461d mov r5, r3 800234e: 79fb ldrb r3, [r7, #7] 8002350: 4618 mov r0, r3 8002352: f7fe f89f bl 8000494 <__aeabi_i2d> 8002356: f04f 0200 mov.w r2, #0 800235a: 4b9d ldr r3, [pc, #628] ; (80025d0 ) 800235c: f7fe f904 bl 8000568 <__aeabi_dmul> 8002360: 4603 mov r3, r0 8002362: 460c mov r4, r1 8002364: 4618 mov r0, r3 8002366: 4621 mov r1, r4 8002368: f7fe fb10 bl 800098c <__aeabi_d2uiz> 800236c: 4603 mov r3, r0 800236e: b2db uxtb r3, r3 8002370: 2200 movs r2, #0 8002372: 2100 movs r1, #0 8002374: 4628 mov r0, r5 8002376: f000 fc45 bl 8002c04 setLED(lookupLED(4,2), 0x00, 0x00, 0x7F + (currentSoundLevel * 0.5)); 800237a: 2102 movs r1, #2 800237c: 2004 movs r0, #4 800237e: f000 fad1 bl 8002924 8002382: 4603 mov r3, r0 8002384: 461d mov r5, r3 8002386: 79fb ldrb r3, [r7, #7] 8002388: 4618 mov r0, r3 800238a: f7fe f883 bl 8000494 <__aeabi_i2d> 800238e: f04f 0200 mov.w r2, #0 8002392: 4b8f ldr r3, [pc, #572] ; (80025d0 ) 8002394: f7fe f8e8 bl 8000568 <__aeabi_dmul> 8002398: 4603 mov r3, r0 800239a: 460c mov r4, r1 800239c: 4618 mov r0, r3 800239e: 4621 mov r1, r4 80023a0: a389 add r3, pc, #548 ; (adr r3, 80025c8 ) 80023a2: e9d3 2300 ldrd r2, r3, [r3] 80023a6: f7fd ff29 bl 80001fc <__adddf3> 80023aa: 4603 mov r3, r0 80023ac: 460c mov r4, r1 80023ae: 4618 mov r0, r3 80023b0: 4621 mov r1, r4 80023b2: f7fe faeb bl 800098c <__aeabi_d2uiz> 80023b6: 4603 mov r3, r0 80023b8: b2db uxtb r3, r3 80023ba: 2200 movs r2, #0 80023bc: 2100 movs r1, #0 80023be: 4628 mov r0, r5 80023c0: f000 fc20 bl 8002c04 setLED(lookupLED(4,3), 0x00, 0x00, currentSoundLevel); 80023c4: 2103 movs r1, #3 80023c6: 2004 movs r0, #4 80023c8: f000 faac bl 8002924 80023cc: 4603 mov r3, r0 80023ce: 4618 mov r0, r3 80023d0: 79fb ldrb r3, [r7, #7] 80023d2: 2200 movs r2, #0 80023d4: 2100 movs r1, #0 80023d6: f000 fc15 bl 8002c04 setLED(lookupLED(4,4), 0x00, 0x00, currentSoundLevel); 80023da: 2104 movs r1, #4 80023dc: 2004 movs r0, #4 80023de: f000 faa1 bl 8002924 80023e2: 4603 mov r3, r0 80023e4: 4618 mov r0, r3 80023e6: 79fb ldrb r3, [r7, #7] 80023e8: 2200 movs r2, #0 80023ea: 2100 movs r1, #0 80023ec: f000 fc0a bl 8002c04 setLED(lookupLED(4,5), 0x00, 0x00, currentSoundLevel * 0.5); 80023f0: 2105 movs r1, #5 80023f2: 2004 movs r0, #4 80023f4: f000 fa96 bl 8002924 80023f8: 4603 mov r3, r0 80023fa: 461d mov r5, r3 80023fc: 79fb ldrb r3, [r7, #7] 80023fe: 4618 mov r0, r3 8002400: f7fe f848 bl 8000494 <__aeabi_i2d> 8002404: f04f 0200 mov.w r2, #0 8002408: 4b71 ldr r3, [pc, #452] ; (80025d0 ) 800240a: f7fe f8ad bl 8000568 <__aeabi_dmul> 800240e: 4603 mov r3, r0 8002410: 460c mov r4, r1 8002412: 4618 mov r0, r3 8002414: 4621 mov r1, r4 8002416: f7fe fab9 bl 800098c <__aeabi_d2uiz> 800241a: 4603 mov r3, r0 800241c: b2db uxtb r3, r3 800241e: 2200 movs r2, #0 8002420: 2100 movs r1, #0 8002422: 4628 mov r0, r5 8002424: f000 fbee bl 8002c04 setLED(lookupLED(4,6), 0x00, 0x00, currentSoundLevel * 0.25); 8002428: 2106 movs r1, #6 800242a: 2004 movs r0, #4 800242c: f000 fa7a bl 8002924 8002430: 4603 mov r3, r0 8002432: 461d mov r5, r3 8002434: 79fb ldrb r3, [r7, #7] 8002436: 4618 mov r0, r3 8002438: f7fe f82c bl 8000494 <__aeabi_i2d> 800243c: f04f 0200 mov.w r2, #0 8002440: 4b64 ldr r3, [pc, #400] ; (80025d4 ) 8002442: f7fe f891 bl 8000568 <__aeabi_dmul> 8002446: 4603 mov r3, r0 8002448: 460c mov r4, r1 800244a: 4618 mov r0, r3 800244c: 4621 mov r1, r4 800244e: f7fe fa9d bl 800098c <__aeabi_d2uiz> 8002452: 4603 mov r3, r0 8002454: b2db uxtb r3, r3 8002456: 2200 movs r2, #0 8002458: 2100 movs r1, #0 800245a: 4628 mov r0, r5 800245c: f000 fbd2 bl 8002c04 setLED(lookupLED(4,7), 0x00, 0x00, 0x00); 8002460: 2107 movs r1, #7 8002462: 2004 movs r0, #4 8002464: f000 fa5e bl 8002924 8002468: 4603 mov r3, r0 800246a: 4618 mov r0, r3 800246c: 2300 movs r3, #0 800246e: 2200 movs r2, #0 8002470: 2100 movs r1, #0 8002472: f000 fbc7 bl 8002c04 setLED(lookupLED(5,0), 0x00, 0x00, 0x00); 8002476: 2100 movs r1, #0 8002478: 2005 movs r0, #5 800247a: f000 fa53 bl 8002924 800247e: 4603 mov r3, r0 8002480: 4618 mov r0, r3 8002482: 2300 movs r3, #0 8002484: 2200 movs r2, #0 8002486: 2100 movs r1, #0 8002488: f000 fbbc bl 8002c04 setLED(lookupLED(5,1), 0x00, 0x00, currentSoundLevel * 0.5); 800248c: 2101 movs r1, #1 800248e: 2005 movs r0, #5 8002490: f000 fa48 bl 8002924 8002494: 4603 mov r3, r0 8002496: 461d mov r5, r3 8002498: 79fb ldrb r3, [r7, #7] 800249a: 4618 mov r0, r3 800249c: f7fd fffa bl 8000494 <__aeabi_i2d> 80024a0: f04f 0200 mov.w r2, #0 80024a4: 4b4a ldr r3, [pc, #296] ; (80025d0 ) 80024a6: f7fe f85f bl 8000568 <__aeabi_dmul> 80024aa: 4603 mov r3, r0 80024ac: 460c mov r4, r1 80024ae: 4618 mov r0, r3 80024b0: 4621 mov r1, r4 80024b2: f7fe fa6b bl 800098c <__aeabi_d2uiz> 80024b6: 4603 mov r3, r0 80024b8: b2db uxtb r3, r3 80024ba: 2200 movs r2, #0 80024bc: 2100 movs r1, #0 80024be: 4628 mov r0, r5 80024c0: f000 fba0 bl 8002c04 setLED(lookupLED(5,2), 0x00, 0x00, 0x7F + (currentSoundLevel * 0.5)); 80024c4: 2102 movs r1, #2 80024c6: 2005 movs r0, #5 80024c8: f000 fa2c bl 8002924 80024cc: 4603 mov r3, r0 80024ce: 461d mov r5, r3 80024d0: 79fb ldrb r3, [r7, #7] 80024d2: 4618 mov r0, r3 80024d4: f7fd ffde bl 8000494 <__aeabi_i2d> 80024d8: f04f 0200 mov.w r2, #0 80024dc: 4b3c ldr r3, [pc, #240] ; (80025d0 ) 80024de: f7fe f843 bl 8000568 <__aeabi_dmul> 80024e2: 4603 mov r3, r0 80024e4: 460c mov r4, r1 80024e6: 4618 mov r0, r3 80024e8: 4621 mov r1, r4 80024ea: a337 add r3, pc, #220 ; (adr r3, 80025c8 ) 80024ec: e9d3 2300 ldrd r2, r3, [r3] 80024f0: f7fd fe84 bl 80001fc <__adddf3> 80024f4: 4603 mov r3, r0 80024f6: 460c mov r4, r1 80024f8: 4618 mov r0, r3 80024fa: 4621 mov r1, r4 80024fc: f7fe fa46 bl 800098c <__aeabi_d2uiz> 8002500: 4603 mov r3, r0 8002502: b2db uxtb r3, r3 8002504: 2200 movs r2, #0 8002506: 2100 movs r1, #0 8002508: 4628 mov r0, r5 800250a: f000 fb7b bl 8002c04 setLED(lookupLED(5,3), 0x00, 0x00, currentSoundLevel); 800250e: 2103 movs r1, #3 8002510: 2005 movs r0, #5 8002512: f000 fa07 bl 8002924 8002516: 4603 mov r3, r0 8002518: 4618 mov r0, r3 800251a: 79fb ldrb r3, [r7, #7] 800251c: 2200 movs r2, #0 800251e: 2100 movs r1, #0 8002520: f000 fb70 bl 8002c04 setLED(lookupLED(5,4), 0x00, 0x00, currentSoundLevel); 8002524: 2104 movs r1, #4 8002526: 2005 movs r0, #5 8002528: f000 f9fc bl 8002924 800252c: 4603 mov r3, r0 800252e: 4618 mov r0, r3 8002530: 79fb ldrb r3, [r7, #7] 8002532: 2200 movs r2, #0 8002534: 2100 movs r1, #0 8002536: f000 fb65 bl 8002c04 setLED(lookupLED(5,5), 0x00, 0x00, currentSoundLevel * 0.5); 800253a: 2105 movs r1, #5 800253c: 2005 movs r0, #5 800253e: f000 f9f1 bl 8002924 8002542: 4603 mov r3, r0 8002544: 461d mov r5, r3 8002546: 79fb ldrb r3, [r7, #7] 8002548: 4618 mov r0, r3 800254a: f7fd ffa3 bl 8000494 <__aeabi_i2d> 800254e: f04f 0200 mov.w r2, #0 8002552: 4b1f ldr r3, [pc, #124] ; (80025d0 ) 8002554: f7fe f808 bl 8000568 <__aeabi_dmul> 8002558: 4603 mov r3, r0 800255a: 460c mov r4, r1 800255c: 4618 mov r0, r3 800255e: 4621 mov r1, r4 8002560: f7fe fa14 bl 800098c <__aeabi_d2uiz> 8002564: 4603 mov r3, r0 8002566: b2db uxtb r3, r3 8002568: 2200 movs r2, #0 800256a: 2100 movs r1, #0 800256c: 4628 mov r0, r5 800256e: f000 fb49 bl 8002c04 setLED(lookupLED(5,6), 0x00, 0x00, 0x00); 8002572: 2106 movs r1, #6 8002574: 2005 movs r0, #5 8002576: f000 f9d5 bl 8002924 800257a: 4603 mov r3, r0 800257c: 4618 mov r0, r3 800257e: 2300 movs r3, #0 8002580: 2200 movs r2, #0 8002582: 2100 movs r1, #0 8002584: f000 fb3e bl 8002c04 setLED(lookupLED(5,7), 0x00, 0x00, 0x00); 8002588: 2107 movs r1, #7 800258a: 2005 movs r0, #5 800258c: f000 f9ca bl 8002924 8002590: 4603 mov r3, r0 8002592: 4618 mov r0, r3 8002594: 2300 movs r3, #0 8002596: 2200 movs r2, #0 8002598: 2100 movs r1, #0 800259a: f000 fb33 bl 8002c04 setLED(lookupLED(6,0), 0x00, 0x00, 0x00); 800259e: 2100 movs r1, #0 80025a0: 2006 movs r0, #6 80025a2: f000 f9bf bl 8002924 80025a6: 4603 mov r3, r0 80025a8: 4618 mov r0, r3 80025aa: 2300 movs r3, #0 80025ac: 2200 movs r2, #0 80025ae: 2100 movs r1, #0 80025b0: f000 fb28 bl 8002c04 setLED(lookupLED(6,1), 0x00, 0x00, currentSoundLevel * 0.5); 80025b4: 2101 movs r1, #1 80025b6: 2006 movs r0, #6 80025b8: f000 f9b4 bl 8002924 80025bc: 4603 mov r3, r0 80025be: 461d mov r5, r3 80025c0: e00a b.n 80025d8 80025c2: bf00 nop 80025c4: f3af 8000 nop.w 80025c8: 00000000 .word 0x00000000 80025cc: 405fc000 .word 0x405fc000 80025d0: 3fe00000 .word 0x3fe00000 80025d4: 3fd00000 .word 0x3fd00000 80025d8: 79fb ldrb r3, [r7, #7] 80025da: 4618 mov r0, r3 80025dc: f7fd ff5a bl 8000494 <__aeabi_i2d> 80025e0: f04f 0200 mov.w r2, #0 80025e4: 4b8c ldr r3, [pc, #560] ; (8002818 ) 80025e6: f7fd ffbf bl 8000568 <__aeabi_dmul> 80025ea: 4603 mov r3, r0 80025ec: 460c mov r4, r1 80025ee: 4618 mov r0, r3 80025f0: 4621 mov r1, r4 80025f2: f7fe f9cb bl 800098c <__aeabi_d2uiz> 80025f6: 4603 mov r3, r0 80025f8: b2db uxtb r3, r3 80025fa: 2200 movs r2, #0 80025fc: 2100 movs r1, #0 80025fe: 4628 mov r0, r5 8002600: f000 fb00 bl 8002c04 setLED(lookupLED(6,2), 0x00, 0x00, 0x7F + (currentSoundLevel * 0.5)); 8002604: 2102 movs r1, #2 8002606: 2006 movs r0, #6 8002608: f000 f98c bl 8002924 800260c: 4603 mov r3, r0 800260e: 461d mov r5, r3 8002610: 79fb ldrb r3, [r7, #7] 8002612: 4618 mov r0, r3 8002614: f7fd ff3e bl 8000494 <__aeabi_i2d> 8002618: f04f 0200 mov.w r2, #0 800261c: 4b7e ldr r3, [pc, #504] ; (8002818 ) 800261e: f7fd ffa3 bl 8000568 <__aeabi_dmul> 8002622: 4603 mov r3, r0 8002624: 460c mov r4, r1 8002626: 4618 mov r0, r3 8002628: 4621 mov r1, r4 800262a: a379 add r3, pc, #484 ; (adr r3, 8002810 ) 800262c: e9d3 2300 ldrd r2, r3, [r3] 8002630: f7fd fde4 bl 80001fc <__adddf3> 8002634: 4603 mov r3, r0 8002636: 460c mov r4, r1 8002638: 4618 mov r0, r3 800263a: 4621 mov r1, r4 800263c: f7fe f9a6 bl 800098c <__aeabi_d2uiz> 8002640: 4603 mov r3, r0 8002642: b2db uxtb r3, r3 8002644: 2200 movs r2, #0 8002646: 2100 movs r1, #0 8002648: 4628 mov r0, r5 800264a: f000 fadb bl 8002c04 setLED(lookupLED(6,3), 0x00, 0x00, currentSoundLevel); 800264e: 2103 movs r1, #3 8002650: 2006 movs r0, #6 8002652: f000 f967 bl 8002924 8002656: 4603 mov r3, r0 8002658: 4618 mov r0, r3 800265a: 79fb ldrb r3, [r7, #7] 800265c: 2200 movs r2, #0 800265e: 2100 movs r1, #0 8002660: f000 fad0 bl 8002c04 setLED(lookupLED(6,4), 0x00, 0x00, currentSoundLevel); 8002664: 2104 movs r1, #4 8002666: 2006 movs r0, #6 8002668: f000 f95c bl 8002924 800266c: 4603 mov r3, r0 800266e: 4618 mov r0, r3 8002670: 79fb ldrb r3, [r7, #7] 8002672: 2200 movs r2, #0 8002674: 2100 movs r1, #0 8002676: f000 fac5 bl 8002c04 setLED(lookupLED(6,5), 0x00, 0x00, currentSoundLevel * 0.5); 800267a: 2105 movs r1, #5 800267c: 2006 movs r0, #6 800267e: f000 f951 bl 8002924 8002682: 4603 mov r3, r0 8002684: 461d mov r5, r3 8002686: 79fb ldrb r3, [r7, #7] 8002688: 4618 mov r0, r3 800268a: f7fd ff03 bl 8000494 <__aeabi_i2d> 800268e: f04f 0200 mov.w r2, #0 8002692: 4b61 ldr r3, [pc, #388] ; (8002818 ) 8002694: f7fd ff68 bl 8000568 <__aeabi_dmul> 8002698: 4603 mov r3, r0 800269a: 460c mov r4, r1 800269c: 4618 mov r0, r3 800269e: 4621 mov r1, r4 80026a0: f7fe f974 bl 800098c <__aeabi_d2uiz> 80026a4: 4603 mov r3, r0 80026a6: b2db uxtb r3, r3 80026a8: 2200 movs r2, #0 80026aa: 2100 movs r1, #0 80026ac: 4628 mov r0, r5 80026ae: f000 faa9 bl 8002c04 setLED(lookupLED(6,6), 0x00, 0x00, 0x00); 80026b2: 2106 movs r1, #6 80026b4: 2006 movs r0, #6 80026b6: f000 f935 bl 8002924 80026ba: 4603 mov r3, r0 80026bc: 4618 mov r0, r3 80026be: 2300 movs r3, #0 80026c0: 2200 movs r2, #0 80026c2: 2100 movs r1, #0 80026c4: f000 fa9e bl 8002c04 setLED(lookupLED(6,7), 0x00, 0x00, 0x00); 80026c8: 2107 movs r1, #7 80026ca: 2006 movs r0, #6 80026cc: f000 f92a bl 8002924 80026d0: 4603 mov r3, r0 80026d2: 4618 mov r0, r3 80026d4: 2300 movs r3, #0 80026d6: 2200 movs r2, #0 80026d8: 2100 movs r1, #0 80026da: f000 fa93 bl 8002c04 setLED(lookupLED(7,0), 0x00, 0x00, 0x00); 80026de: 2100 movs r1, #0 80026e0: 2007 movs r0, #7 80026e2: f000 f91f bl 8002924 80026e6: 4603 mov r3, r0 80026e8: 4618 mov r0, r3 80026ea: 2300 movs r3, #0 80026ec: 2200 movs r2, #0 80026ee: 2100 movs r1, #0 80026f0: f000 fa88 bl 8002c04 setLED(lookupLED(7,1), 0x00, 0x00, 0x00); 80026f4: 2101 movs r1, #1 80026f6: 2007 movs r0, #7 80026f8: f000 f914 bl 8002924 80026fc: 4603 mov r3, r0 80026fe: 4618 mov r0, r3 8002700: 2300 movs r3, #0 8002702: 2200 movs r2, #0 8002704: 2100 movs r1, #0 8002706: f000 fa7d bl 8002c04 setLED(lookupLED(7,2), 0x00, 0x00, currentSoundLevel * 0.25); 800270a: 2102 movs r1, #2 800270c: 2007 movs r0, #7 800270e: f000 f909 bl 8002924 8002712: 4603 mov r3, r0 8002714: 461d mov r5, r3 8002716: 79fb ldrb r3, [r7, #7] 8002718: 4618 mov r0, r3 800271a: f7fd febb bl 8000494 <__aeabi_i2d> 800271e: f04f 0200 mov.w r2, #0 8002722: 4b3e ldr r3, [pc, #248] ; (800281c ) 8002724: f7fd ff20 bl 8000568 <__aeabi_dmul> 8002728: 4603 mov r3, r0 800272a: 460c mov r4, r1 800272c: 4618 mov r0, r3 800272e: 4621 mov r1, r4 8002730: f7fe f92c bl 800098c <__aeabi_d2uiz> 8002734: 4603 mov r3, r0 8002736: b2db uxtb r3, r3 8002738: 2200 movs r2, #0 800273a: 2100 movs r1, #0 800273c: 4628 mov r0, r5 800273e: f000 fa61 bl 8002c04 setLED(lookupLED(7,3), 0x00, 0x00, 0x7F + (currentSoundLevel * 0.5)); 8002742: 2103 movs r1, #3 8002744: 2007 movs r0, #7 8002746: f000 f8ed bl 8002924 800274a: 4603 mov r3, r0 800274c: 461d mov r5, r3 800274e: 79fb ldrb r3, [r7, #7] 8002750: 4618 mov r0, r3 8002752: f7fd fe9f bl 8000494 <__aeabi_i2d> 8002756: f04f 0200 mov.w r2, #0 800275a: 4b2f ldr r3, [pc, #188] ; (8002818 ) 800275c: f7fd ff04 bl 8000568 <__aeabi_dmul> 8002760: 4603 mov r3, r0 8002762: 460c mov r4, r1 8002764: 4618 mov r0, r3 8002766: 4621 mov r1, r4 8002768: a329 add r3, pc, #164 ; (adr r3, 8002810 ) 800276a: e9d3 2300 ldrd r2, r3, [r3] 800276e: f7fd fd45 bl 80001fc <__adddf3> 8002772: 4603 mov r3, r0 8002774: 460c mov r4, r1 8002776: 4618 mov r0, r3 8002778: 4621 mov r1, r4 800277a: f7fe f907 bl 800098c <__aeabi_d2uiz> 800277e: 4603 mov r3, r0 8002780: b2db uxtb r3, r3 8002782: 2200 movs r2, #0 8002784: 2100 movs r1, #0 8002786: 4628 mov r0, r5 8002788: f000 fa3c bl 8002c04 setLED(lookupLED(7,4), 0x00, 0x00, currentSoundLevel * 0.25); 800278c: 2104 movs r1, #4 800278e: 2007 movs r0, #7 8002790: f000 f8c8 bl 8002924 8002794: 4603 mov r3, r0 8002796: 461d mov r5, r3 8002798: 79fb ldrb r3, [r7, #7] 800279a: 4618 mov r0, r3 800279c: f7fd fe7a bl 8000494 <__aeabi_i2d> 80027a0: f04f 0200 mov.w r2, #0 80027a4: 4b1d ldr r3, [pc, #116] ; (800281c ) 80027a6: f7fd fedf bl 8000568 <__aeabi_dmul> 80027aa: 4603 mov r3, r0 80027ac: 460c mov r4, r1 80027ae: 4618 mov r0, r3 80027b0: 4621 mov r1, r4 80027b2: f7fe f8eb bl 800098c <__aeabi_d2uiz> 80027b6: 4603 mov r3, r0 80027b8: b2db uxtb r3, r3 80027ba: 2200 movs r2, #0 80027bc: 2100 movs r1, #0 80027be: 4628 mov r0, r5 80027c0: f000 fa20 bl 8002c04 setLED(lookupLED(7,5), 0x00, 0x00, 0x00); 80027c4: 2105 movs r1, #5 80027c6: 2007 movs r0, #7 80027c8: f000 f8ac bl 8002924 80027cc: 4603 mov r3, r0 80027ce: 4618 mov r0, r3 80027d0: 2300 movs r3, #0 80027d2: 2200 movs r2, #0 80027d4: 2100 movs r1, #0 80027d6: f000 fa15 bl 8002c04 setLED(lookupLED(7,6), 0x00, 0x00, 0x00); 80027da: 2106 movs r1, #6 80027dc: 2007 movs r0, #7 80027de: f000 f8a1 bl 8002924 80027e2: 4603 mov r3, r0 80027e4: 4618 mov r0, r3 80027e6: 2300 movs r3, #0 80027e8: 2200 movs r2, #0 80027ea: 2100 movs r1, #0 80027ec: f000 fa0a bl 8002c04 setLED(lookupLED(7,7), 0x00, 0x00, 0x00); 80027f0: 2107 movs r1, #7 80027f2: 2007 movs r0, #7 80027f4: f000 f896 bl 8002924 80027f8: 4603 mov r3, r0 80027fa: 4618 mov r0, r3 80027fc: 2300 movs r3, #0 80027fe: 2200 movs r2, #0 8002800: 2100 movs r1, #0 8002802: f000 f9ff bl 8002c04 } 8002806: bf00 nop 8002808: 3708 adds r7, #8 800280a: 46bd mov sp, r7 800280c: bdb0 pop {r4, r5, r7, pc} 800280e: bf00 nop 8002810: 00000000 .word 0x00000000 8002814: 405fc000 .word 0x405fc000 8002818: 3fe00000 .word 0x3fe00000 800281c: 3fd00000 .word 0x3fd00000 08002820 : void LEDDesign_SuperCrazy(void){ 8002820: b580 push {r7, lr} 8002822: b084 sub sp, #16 8002824: af00 add r7, sp, #0 HAL_Delay(50); 8002826: 2032 movs r0, #50 ; 0x32 8002828: f000 fe00 bl 800342c uint8_t randomByte = (uint8_t) (0xFF * (((float) rand()) / RAND_MAX)); 800282c: f002 ffc8 bl 80057c0 8002830: ee07 0a90 vmov s15, r0 8002834: eeb8 7ae7 vcvt.f32.s32 s14, s15 8002838: eddf 6a37 vldr s13, [pc, #220] ; 8002918 800283c: eec7 7a26 vdiv.f32 s15, s14, s13 8002840: ed9f 7a36 vldr s14, [pc, #216] ; 800291c 8002844: ee67 7a87 vmul.f32 s15, s15, s14 8002848: eefc 7ae7 vcvt.u32.f32 s15, s15 800284c: edc7 7a01 vstr s15, [r7, #4] 8002850: 793b ldrb r3, [r7, #4] 8002852: 733b strb r3, [r7, #12] for(uint8_t i = 0; i < 64; ++i){ 8002854: 2300 movs r3, #0 8002856: 73fb strb r3, [r7, #15] 8002858: e00a b.n 8002870 LEDData[i][0] = randomByte; 800285a: 7bfa ldrb r2, [r7, #15] 800285c: 4930 ldr r1, [pc, #192] ; (8002920 ) 800285e: 4613 mov r3, r2 8002860: 005b lsls r3, r3, #1 8002862: 4413 add r3, r2 8002864: 440b add r3, r1 8002866: 7b3a ldrb r2, [r7, #12] 8002868: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 800286a: 7bfb ldrb r3, [r7, #15] 800286c: 3301 adds r3, #1 800286e: 73fb strb r3, [r7, #15] 8002870: 7bfb ldrb r3, [r7, #15] 8002872: 2b3f cmp r3, #63 ; 0x3f 8002874: d9f1 bls.n 800285a } randomByte = (uint8_t) (0xFF * (((float) rand()) / RAND_MAX)); 8002876: f002 ffa3 bl 80057c0 800287a: ee07 0a90 vmov s15, r0 800287e: eeb8 7ae7 vcvt.f32.s32 s14, s15 8002882: eddf 6a25 vldr s13, [pc, #148] ; 8002918 8002886: eec7 7a26 vdiv.f32 s15, s14, s13 800288a: ed9f 7a24 vldr s14, [pc, #144] ; 800291c 800288e: ee67 7a87 vmul.f32 s15, s15, s14 8002892: eefc 7ae7 vcvt.u32.f32 s15, s15 8002896: edc7 7a01 vstr s15, [r7, #4] 800289a: 793b ldrb r3, [r7, #4] 800289c: 733b strb r3, [r7, #12] for(uint8_t i = 0; i < 64; ++i){ 800289e: 2300 movs r3, #0 80028a0: 73bb strb r3, [r7, #14] 80028a2: e00b b.n 80028bc LEDData[i][1] = randomByte; 80028a4: 7bba ldrb r2, [r7, #14] 80028a6: 491e ldr r1, [pc, #120] ; (8002920 ) 80028a8: 4613 mov r3, r2 80028aa: 005b lsls r3, r3, #1 80028ac: 4413 add r3, r2 80028ae: 440b add r3, r1 80028b0: 3301 adds r3, #1 80028b2: 7b3a ldrb r2, [r7, #12] 80028b4: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 80028b6: 7bbb ldrb r3, [r7, #14] 80028b8: 3301 adds r3, #1 80028ba: 73bb strb r3, [r7, #14] 80028bc: 7bbb ldrb r3, [r7, #14] 80028be: 2b3f cmp r3, #63 ; 0x3f 80028c0: d9f0 bls.n 80028a4 } randomByte = (uint8_t) (0xFF * (((float) rand()) / RAND_MAX)); 80028c2: f002 ff7d bl 80057c0 80028c6: ee07 0a90 vmov s15, r0 80028ca: eeb8 7ae7 vcvt.f32.s32 s14, s15 80028ce: eddf 6a12 vldr s13, [pc, #72] ; 8002918 80028d2: eec7 7a26 vdiv.f32 s15, s14, s13 80028d6: ed9f 7a11 vldr s14, [pc, #68] ; 800291c 80028da: ee67 7a87 vmul.f32 s15, s15, s14 80028de: eefc 7ae7 vcvt.u32.f32 s15, s15 80028e2: edc7 7a01 vstr s15, [r7, #4] 80028e6: 793b ldrb r3, [r7, #4] 80028e8: 733b strb r3, [r7, #12] for(uint8_t i = 0; i < 64; ++i){ 80028ea: 2300 movs r3, #0 80028ec: 737b strb r3, [r7, #13] 80028ee: e00b b.n 8002908 LEDData[i][2] = randomByte; 80028f0: 7b7a ldrb r2, [r7, #13] 80028f2: 490b ldr r1, [pc, #44] ; (8002920 ) 80028f4: 4613 mov r3, r2 80028f6: 005b lsls r3, r3, #1 80028f8: 4413 add r3, r2 80028fa: 440b add r3, r1 80028fc: 3302 adds r3, #2 80028fe: 7b3a ldrb r2, [r7, #12] 8002900: 701a strb r2, [r3, #0] for(uint8_t i = 0; i < 64; ++i){ 8002902: 7b7b ldrb r3, [r7, #13] 8002904: 3301 adds r3, #1 8002906: 737b strb r3, [r7, #13] 8002908: 7b7b ldrb r3, [r7, #13] 800290a: 2b3f cmp r3, #63 ; 0x3f 800290c: d9f0 bls.n 80028f0 } } 800290e: bf00 nop 8002910: 3710 adds r7, #16 8002912: 46bd mov sp, r7 8002914: bd80 pop {r7, pc} 8002916: bf00 nop 8002918: 4f000000 .word 0x4f000000 800291c: 437f0000 .word 0x437f0000 8002920: 20000094 .word 0x20000094 08002924 : uint8_t lookupLED(uint8_t column, uint8_t row){ 8002924: b480 push {r7} 8002926: b083 sub sp, #12 8002928: af00 add r7, sp, #0 800292a: 4603 mov r3, r0 800292c: 460a mov r2, r1 800292e: 71fb strb r3, [r7, #7] 8002930: 4613 mov r3, r2 8002932: 71bb strb r3, [r7, #6] switch(column){ 8002934: 79fb ldrb r3, [r7, #7] 8002936: 2b07 cmp r3, #7 8002938: f200 815d bhi.w 8002bf6 800293c: a201 add r2, pc, #4 ; (adr r2, 8002944 ) 800293e: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002942: bf00 nop 8002944: 08002965 .word 0x08002965 8002948: 080029b5 .word 0x080029b5 800294c: 08002a05 .word 0x08002a05 8002950: 08002a55 .word 0x08002a55 8002954: 08002aa5 .word 0x08002aa5 8002958: 08002af5 .word 0x08002af5 800295c: 08002b41 .word 0x08002b41 8002960: 08002b8d .word 0x08002b8d case 0: switch(row){ 8002964: 79bb ldrb r3, [r7, #6] 8002966: 2b07 cmp r3, #7 8002968: f200 8136 bhi.w 8002bd8 800296c: a201 add r2, pc, #4 ; (adr r2, 8002974 ) 800296e: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002972: bf00 nop 8002974: 08002995 .word 0x08002995 8002978: 08002999 .word 0x08002999 800297c: 0800299d .word 0x0800299d 8002980: 080029a1 .word 0x080029a1 8002984: 080029a5 .word 0x080029a5 8002988: 080029a9 .word 0x080029a9 800298c: 080029ad .word 0x080029ad 8002990: 080029b1 .word 0x080029b1 case 0: return 0; 8002994: 2300 movs r3, #0 8002996: e12f b.n 8002bf8 break; case 1: return 15; 8002998: 230f movs r3, #15 800299a: e12d b.n 8002bf8 break; case 2: return 16; 800299c: 2310 movs r3, #16 800299e: e12b b.n 8002bf8 break; case 3: return 31; 80029a0: 231f movs r3, #31 80029a2: e129 b.n 8002bf8 break; case 4: return 32; 80029a4: 2320 movs r3, #32 80029a6: e127 b.n 8002bf8 break; case 5: return 47; 80029a8: 232f movs r3, #47 ; 0x2f 80029aa: e125 b.n 8002bf8 break; case 6: return 48; 80029ac: 2330 movs r3, #48 ; 0x30 80029ae: e123 b.n 8002bf8 break; case 7: return 63; 80029b0: 233f movs r3, #63 ; 0x3f 80029b2: e121 b.n 8002bf8 break; } break; case 1: switch(row){ 80029b4: 79bb ldrb r3, [r7, #6] 80029b6: 2b07 cmp r3, #7 80029b8: f200 8110 bhi.w 8002bdc 80029bc: a201 add r2, pc, #4 ; (adr r2, 80029c4 ) 80029be: f852 f023 ldr.w pc, [r2, r3, lsl #2] 80029c2: bf00 nop 80029c4: 080029e5 .word 0x080029e5 80029c8: 080029e9 .word 0x080029e9 80029cc: 080029ed .word 0x080029ed 80029d0: 080029f1 .word 0x080029f1 80029d4: 080029f5 .word 0x080029f5 80029d8: 080029f9 .word 0x080029f9 80029dc: 080029fd .word 0x080029fd 80029e0: 08002a01 .word 0x08002a01 case 0: return 1; 80029e4: 2301 movs r3, #1 80029e6: e107 b.n 8002bf8 break; case 1: return 14; 80029e8: 230e movs r3, #14 80029ea: e105 b.n 8002bf8 break; case 2: return 17; 80029ec: 2311 movs r3, #17 80029ee: e103 b.n 8002bf8 break; case 3: return 30; 80029f0: 231e movs r3, #30 80029f2: e101 b.n 8002bf8 break; case 4: return 33; 80029f4: 2321 movs r3, #33 ; 0x21 80029f6: e0ff b.n 8002bf8 break; case 5: return 46; 80029f8: 232e movs r3, #46 ; 0x2e 80029fa: e0fd b.n 8002bf8 break; case 6: return 49; 80029fc: 2331 movs r3, #49 ; 0x31 80029fe: e0fb b.n 8002bf8 break; case 7: return 62; 8002a00: 233e movs r3, #62 ; 0x3e 8002a02: e0f9 b.n 8002bf8 break; } break; case 2: switch(row){ 8002a04: 79bb ldrb r3, [r7, #6] 8002a06: 2b07 cmp r3, #7 8002a08: f200 80ea bhi.w 8002be0 8002a0c: a201 add r2, pc, #4 ; (adr r2, 8002a14 ) 8002a0e: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002a12: bf00 nop 8002a14: 08002a35 .word 0x08002a35 8002a18: 08002a39 .word 0x08002a39 8002a1c: 08002a3d .word 0x08002a3d 8002a20: 08002a41 .word 0x08002a41 8002a24: 08002a45 .word 0x08002a45 8002a28: 08002a49 .word 0x08002a49 8002a2c: 08002a4d .word 0x08002a4d 8002a30: 08002a51 .word 0x08002a51 case 0: return 2; 8002a34: 2302 movs r3, #2 8002a36: e0df b.n 8002bf8 break; case 1: return 13; 8002a38: 230d movs r3, #13 8002a3a: e0dd b.n 8002bf8 break; case 2: return 18; 8002a3c: 2312 movs r3, #18 8002a3e: e0db b.n 8002bf8 break; case 3: return 29; 8002a40: 231d movs r3, #29 8002a42: e0d9 b.n 8002bf8 break; case 4: return 34; 8002a44: 2322 movs r3, #34 ; 0x22 8002a46: e0d7 b.n 8002bf8 break; case 5: return 45; 8002a48: 232d movs r3, #45 ; 0x2d 8002a4a: e0d5 b.n 8002bf8 break; case 6: return 50; 8002a4c: 2332 movs r3, #50 ; 0x32 8002a4e: e0d3 b.n 8002bf8 break; case 7: return 61; 8002a50: 233d movs r3, #61 ; 0x3d 8002a52: e0d1 b.n 8002bf8 break; } break; case 3: switch(row){ 8002a54: 79bb ldrb r3, [r7, #6] 8002a56: 2b07 cmp r3, #7 8002a58: f200 80c4 bhi.w 8002be4 8002a5c: a201 add r2, pc, #4 ; (adr r2, 8002a64 ) 8002a5e: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002a62: bf00 nop 8002a64: 08002a85 .word 0x08002a85 8002a68: 08002a89 .word 0x08002a89 8002a6c: 08002a8d .word 0x08002a8d 8002a70: 08002a91 .word 0x08002a91 8002a74: 08002a95 .word 0x08002a95 8002a78: 08002a99 .word 0x08002a99 8002a7c: 08002a9d .word 0x08002a9d 8002a80: 08002aa1 .word 0x08002aa1 case 0: return 3; 8002a84: 2303 movs r3, #3 8002a86: e0b7 b.n 8002bf8 break; case 1: return 12; 8002a88: 230c movs r3, #12 8002a8a: e0b5 b.n 8002bf8 break; case 2: return 19; 8002a8c: 2313 movs r3, #19 8002a8e: e0b3 b.n 8002bf8 break; case 3: return 28; 8002a90: 231c movs r3, #28 8002a92: e0b1 b.n 8002bf8 break; case 4: return 35; 8002a94: 2323 movs r3, #35 ; 0x23 8002a96: e0af b.n 8002bf8 break; case 5: return 44; 8002a98: 232c movs r3, #44 ; 0x2c 8002a9a: e0ad b.n 8002bf8 break; case 6: return 51; 8002a9c: 2333 movs r3, #51 ; 0x33 8002a9e: e0ab b.n 8002bf8 break; case 7: return 60; 8002aa0: 233c movs r3, #60 ; 0x3c 8002aa2: e0a9 b.n 8002bf8 break; } break; case 4: switch(row){ 8002aa4: 79bb ldrb r3, [r7, #6] 8002aa6: 2b07 cmp r3, #7 8002aa8: f200 809e bhi.w 8002be8 8002aac: a201 add r2, pc, #4 ; (adr r2, 8002ab4 ) 8002aae: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002ab2: bf00 nop 8002ab4: 08002ad5 .word 0x08002ad5 8002ab8: 08002ad9 .word 0x08002ad9 8002abc: 08002add .word 0x08002add 8002ac0: 08002ae1 .word 0x08002ae1 8002ac4: 08002ae5 .word 0x08002ae5 8002ac8: 08002ae9 .word 0x08002ae9 8002acc: 08002aed .word 0x08002aed 8002ad0: 08002af1 .word 0x08002af1 case 0: return 4; 8002ad4: 2304 movs r3, #4 8002ad6: e08f b.n 8002bf8 break; case 1: return 11; 8002ad8: 230b movs r3, #11 8002ada: e08d b.n 8002bf8 break; case 2: return 20; 8002adc: 2314 movs r3, #20 8002ade: e08b b.n 8002bf8 break; case 3: return 27; 8002ae0: 231b movs r3, #27 8002ae2: e089 b.n 8002bf8 break; case 4: return 36; 8002ae4: 2324 movs r3, #36 ; 0x24 8002ae6: e087 b.n 8002bf8 break; case 5: return 43; 8002ae8: 232b movs r3, #43 ; 0x2b 8002aea: e085 b.n 8002bf8 break; case 6: return 52; 8002aec: 2334 movs r3, #52 ; 0x34 8002aee: e083 b.n 8002bf8 break; case 7: return 59; 8002af0: 233b movs r3, #59 ; 0x3b 8002af2: e081 b.n 8002bf8 break; } break; case 5: switch(row){ 8002af4: 79bb ldrb r3, [r7, #6] 8002af6: 2b07 cmp r3, #7 8002af8: d878 bhi.n 8002bec 8002afa: a201 add r2, pc, #4 ; (adr r2, 8002b00 ) 8002afc: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002b00: 08002b21 .word 0x08002b21 8002b04: 08002b25 .word 0x08002b25 8002b08: 08002b29 .word 0x08002b29 8002b0c: 08002b2d .word 0x08002b2d 8002b10: 08002b31 .word 0x08002b31 8002b14: 08002b35 .word 0x08002b35 8002b18: 08002b39 .word 0x08002b39 8002b1c: 08002b3d .word 0x08002b3d case 0: return 5; 8002b20: 2305 movs r3, #5 8002b22: e069 b.n 8002bf8 break; case 1: return 10; 8002b24: 230a movs r3, #10 8002b26: e067 b.n 8002bf8 break; case 2: return 21; 8002b28: 2315 movs r3, #21 8002b2a: e065 b.n 8002bf8 break; case 3: return 26; 8002b2c: 231a movs r3, #26 8002b2e: e063 b.n 8002bf8 break; case 4: return 37; 8002b30: 2325 movs r3, #37 ; 0x25 8002b32: e061 b.n 8002bf8 break; case 5: return 42; 8002b34: 232a movs r3, #42 ; 0x2a 8002b36: e05f b.n 8002bf8 break; case 6: return 53; 8002b38: 2335 movs r3, #53 ; 0x35 8002b3a: e05d b.n 8002bf8 break; case 7: return 58; 8002b3c: 233a movs r3, #58 ; 0x3a 8002b3e: e05b b.n 8002bf8 break; } break; case 6: switch(row){ 8002b40: 79bb ldrb r3, [r7, #6] 8002b42: 2b07 cmp r3, #7 8002b44: d854 bhi.n 8002bf0 8002b46: a201 add r2, pc, #4 ; (adr r2, 8002b4c ) 8002b48: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002b4c: 08002b6d .word 0x08002b6d 8002b50: 08002b71 .word 0x08002b71 8002b54: 08002b75 .word 0x08002b75 8002b58: 08002b79 .word 0x08002b79 8002b5c: 08002b7d .word 0x08002b7d 8002b60: 08002b81 .word 0x08002b81 8002b64: 08002b85 .word 0x08002b85 8002b68: 08002b89 .word 0x08002b89 case 0: return 6; 8002b6c: 2306 movs r3, #6 8002b6e: e043 b.n 8002bf8 break; case 1: return 9; 8002b70: 2309 movs r3, #9 8002b72: e041 b.n 8002bf8 break; case 2: return 22; 8002b74: 2316 movs r3, #22 8002b76: e03f b.n 8002bf8 break; case 3: return 25; 8002b78: 2319 movs r3, #25 8002b7a: e03d b.n 8002bf8 break; case 4: return 38; 8002b7c: 2326 movs r3, #38 ; 0x26 8002b7e: e03b b.n 8002bf8 break; case 5: return 41; 8002b80: 2329 movs r3, #41 ; 0x29 8002b82: e039 b.n 8002bf8 break; case 6: return 54; 8002b84: 2336 movs r3, #54 ; 0x36 8002b86: e037 b.n 8002bf8 break; case 7: return 57; 8002b88: 2339 movs r3, #57 ; 0x39 8002b8a: e035 b.n 8002bf8 break; } break; case 7: switch(row){ 8002b8c: 79bb ldrb r3, [r7, #6] 8002b8e: 2b07 cmp r3, #7 8002b90: d830 bhi.n 8002bf4 8002b92: a201 add r2, pc, #4 ; (adr r2, 8002b98 ) 8002b94: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002b98: 08002bb9 .word 0x08002bb9 8002b9c: 08002bbd .word 0x08002bbd 8002ba0: 08002bc1 .word 0x08002bc1 8002ba4: 08002bc5 .word 0x08002bc5 8002ba8: 08002bc9 .word 0x08002bc9 8002bac: 08002bcd .word 0x08002bcd 8002bb0: 08002bd1 .word 0x08002bd1 8002bb4: 08002bd5 .word 0x08002bd5 case 0: return 7; 8002bb8: 2307 movs r3, #7 8002bba: e01d b.n 8002bf8 break; case 1: return 8; 8002bbc: 2308 movs r3, #8 8002bbe: e01b b.n 8002bf8 break; case 2: return 23; 8002bc0: 2317 movs r3, #23 8002bc2: e019 b.n 8002bf8 break; case 3: return 24; 8002bc4: 2318 movs r3, #24 8002bc6: e017 b.n 8002bf8 break; case 4: return 39; 8002bc8: 2327 movs r3, #39 ; 0x27 8002bca: e015 b.n 8002bf8 break; case 5: return 40; 8002bcc: 2328 movs r3, #40 ; 0x28 8002bce: e013 b.n 8002bf8 break; case 6: return 55; 8002bd0: 2337 movs r3, #55 ; 0x37 8002bd2: e011 b.n 8002bf8 break; case 7: return 56; 8002bd4: 2338 movs r3, #56 ; 0x38 8002bd6: e00f b.n 8002bf8 break; 8002bd8: bf00 nop 8002bda: e00c b.n 8002bf6 break; 8002bdc: bf00 nop 8002bde: e00a b.n 8002bf6 break; 8002be0: bf00 nop 8002be2: e008 b.n 8002bf6 break; 8002be4: bf00 nop 8002be6: e006 b.n 8002bf6 break; 8002be8: bf00 nop 8002bea: e004 b.n 8002bf6 break; 8002bec: bf00 nop 8002bee: e002 b.n 8002bf6 break; 8002bf0: bf00 nop 8002bf2: e000 b.n 8002bf6 break; } break; 8002bf4: bf00 nop } return 0; 8002bf6: 2300 movs r3, #0 } 8002bf8: 4618 mov r0, r3 8002bfa: 370c adds r7, #12 8002bfc: 46bd mov sp, r7 8002bfe: f85d 7b04 ldr.w r7, [sp], #4 8002c02: 4770 bx lr 08002c04 : void setLED(uint8_t pixelNumber, uint8_t redLevel, uint8_t greenLevel, uint8_t blueLevel){ 8002c04: b490 push {r4, r7} 8002c06: b082 sub sp, #8 8002c08: af00 add r7, sp, #0 8002c0a: 4604 mov r4, r0 8002c0c: 4608 mov r0, r1 8002c0e: 4611 mov r1, r2 8002c10: 461a mov r2, r3 8002c12: 4623 mov r3, r4 8002c14: 71fb strb r3, [r7, #7] 8002c16: 4603 mov r3, r0 8002c18: 71bb strb r3, [r7, #6] 8002c1a: 460b mov r3, r1 8002c1c: 717b strb r3, [r7, #5] 8002c1e: 4613 mov r3, r2 8002c20: 713b strb r3, [r7, #4] LEDData[pixelNumber][0] = greenLevel; 8002c22: 79fa ldrb r2, [r7, #7] 8002c24: 490e ldr r1, [pc, #56] ; (8002c60 ) 8002c26: 4613 mov r3, r2 8002c28: 005b lsls r3, r3, #1 8002c2a: 4413 add r3, r2 8002c2c: 440b add r3, r1 8002c2e: 797a ldrb r2, [r7, #5] 8002c30: 701a strb r2, [r3, #0] LEDData[pixelNumber][1] = redLevel; 8002c32: 79fa ldrb r2, [r7, #7] 8002c34: 490a ldr r1, [pc, #40] ; (8002c60 ) 8002c36: 4613 mov r3, r2 8002c38: 005b lsls r3, r3, #1 8002c3a: 4413 add r3, r2 8002c3c: 440b add r3, r1 8002c3e: 3301 adds r3, #1 8002c40: 79ba ldrb r2, [r7, #6] 8002c42: 701a strb r2, [r3, #0] LEDData[pixelNumber][2] = blueLevel; 8002c44: 79fa ldrb r2, [r7, #7] 8002c46: 4906 ldr r1, [pc, #24] ; (8002c60 ) 8002c48: 4613 mov r3, r2 8002c4a: 005b lsls r3, r3, #1 8002c4c: 4413 add r3, r2 8002c4e: 440b add r3, r1 8002c50: 3302 adds r3, #2 8002c52: 793a ldrb r2, [r7, #4] 8002c54: 701a strb r2, [r3, #0] } 8002c56: bf00 nop 8002c58: 3708 adds r7, #8 8002c5a: 46bd mov sp, r7 8002c5c: bc90 pop {r4, r7} 8002c5e: 4770 bx lr 8002c60: 20000094 .word 0x20000094 08002c64 : void updateWS2812BData(void){ 8002c64: b490 push {r4, r7} 8002c66: b082 sub sp, #8 8002c68: af00 add r7, sp, #0 uint8_t byteToConvert; for (uint8_t i = 0; i < 64; ++i) { 8002c6a: 2300 movs r3, #0 8002c6c: 71fb strb r3, [r7, #7] 8002c6e: e18b b.n 8002f88 for (uint8_t j = 0; j < 3; ++j) { 8002c70: 2300 movs r3, #0 8002c72: 71bb strb r3, [r7, #6] 8002c74: e181 b.n 8002f7a byteToConvert = LEDData[i][j]; 8002c76: 79fa ldrb r2, [r7, #7] 8002c78: 79b9 ldrb r1, [r7, #6] 8002c7a: 488e ldr r0, [pc, #568] ; (8002eb4 ) 8002c7c: 4613 mov r3, r2 8002c7e: 005b lsls r3, r3, #1 8002c80: 4413 add r3, r2 8002c82: 4403 add r3, r0 8002c84: 440b add r3, r1 8002c86: 781b ldrb r3, [r3, #0] 8002c88: 717b strb r3, [r7, #5] switch((byteToConvert & 0xF0) >> 4){ 8002c8a: 797b ldrb r3, [r7, #5] 8002c8c: 091b lsrs r3, r3, #4 8002c8e: b2db uxtb r3, r3 8002c90: 2b0e cmp r3, #14 8002c92: d85d bhi.n 8002d50 8002c94: a201 add r2, pc, #4 ; (adr r2, 8002c9c ) 8002c96: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002c9a: bf00 nop 8002c9c: 08002cd9 .word 0x08002cd9 8002ca0: 08002ce1 .word 0x08002ce1 8002ca4: 08002ce9 .word 0x08002ce9 8002ca8: 08002cf1 .word 0x08002cf1 8002cac: 08002cf9 .word 0x08002cf9 8002cb0: 08002d01 .word 0x08002d01 8002cb4: 08002d09 .word 0x08002d09 8002cb8: 08002d11 .word 0x08002d11 8002cbc: 08002d19 .word 0x08002d19 8002cc0: 08002d21 .word 0x08002d21 8002cc4: 08002d29 .word 0x08002d29 8002cc8: 08002d31 .word 0x08002d31 8002ccc: 08002d39 .word 0x08002d39 8002cd0: 08002d41 .word 0x08002d41 8002cd4: 08002d49 .word 0x08002d49 case 0x00: WS2812BConvertedData = 0x00924000; 8002cd8: 4b77 ldr r3, [pc, #476] ; (8002eb8 ) 8002cda: 4a78 ldr r2, [pc, #480] ; (8002ebc ) 8002cdc: 601a str r2, [r3, #0] break; 8002cde: e03a b.n 8002d56 case 0x01: WS2812BConvertedData = 0x00926000; 8002ce0: 4b75 ldr r3, [pc, #468] ; (8002eb8 ) 8002ce2: 4a77 ldr r2, [pc, #476] ; (8002ec0 ) 8002ce4: 601a str r2, [r3, #0] break; 8002ce6: e036 b.n 8002d56 case 0x02: WS2812BConvertedData = 0x00934000; 8002ce8: 4b73 ldr r3, [pc, #460] ; (8002eb8 ) 8002cea: 4a76 ldr r2, [pc, #472] ; (8002ec4 ) 8002cec: 601a str r2, [r3, #0] break; 8002cee: e032 b.n 8002d56 case 0x03: WS2812BConvertedData = 0x00936000; 8002cf0: 4b71 ldr r3, [pc, #452] ; (8002eb8 ) 8002cf2: 4a75 ldr r2, [pc, #468] ; (8002ec8 ) 8002cf4: 601a str r2, [r3, #0] break; 8002cf6: e02e b.n 8002d56 case 0x04: WS2812BConvertedData = 0x009A4000; 8002cf8: 4b6f ldr r3, [pc, #444] ; (8002eb8 ) 8002cfa: 4a74 ldr r2, [pc, #464] ; (8002ecc ) 8002cfc: 601a str r2, [r3, #0] break; 8002cfe: e02a b.n 8002d56 case 0x05: WS2812BConvertedData = 0x009A6000; 8002d00: 4b6d ldr r3, [pc, #436] ; (8002eb8 ) 8002d02: 4a73 ldr r2, [pc, #460] ; (8002ed0 ) 8002d04: 601a str r2, [r3, #0] break; 8002d06: e026 b.n 8002d56 case 0x06: WS2812BConvertedData = 0x009B4000; 8002d08: 4b6b ldr r3, [pc, #428] ; (8002eb8 ) 8002d0a: 4a72 ldr r2, [pc, #456] ; (8002ed4 ) 8002d0c: 601a str r2, [r3, #0] break; 8002d0e: e022 b.n 8002d56 case 0x07: WS2812BConvertedData = 0x009B6000; 8002d10: 4b69 ldr r3, [pc, #420] ; (8002eb8 ) 8002d12: 4a71 ldr r2, [pc, #452] ; (8002ed8 ) 8002d14: 601a str r2, [r3, #0] break; 8002d16: e01e b.n 8002d56 case 0x08: WS2812BConvertedData = 0x00D24000; 8002d18: 4b67 ldr r3, [pc, #412] ; (8002eb8 ) 8002d1a: 4a70 ldr r2, [pc, #448] ; (8002edc ) 8002d1c: 601a str r2, [r3, #0] break; 8002d1e: e01a b.n 8002d56 case 0x09: WS2812BConvertedData = 0x00D26000; 8002d20: 4b65 ldr r3, [pc, #404] ; (8002eb8 ) 8002d22: 4a6f ldr r2, [pc, #444] ; (8002ee0 ) 8002d24: 601a str r2, [r3, #0] break; 8002d26: e016 b.n 8002d56 case 0x0A: WS2812BConvertedData = 0x00D34000; 8002d28: 4b63 ldr r3, [pc, #396] ; (8002eb8 ) 8002d2a: 4a6e ldr r2, [pc, #440] ; (8002ee4 ) 8002d2c: 601a str r2, [r3, #0] break; 8002d2e: e012 b.n 8002d56 case 0x0B: WS2812BConvertedData = 0x00D36000; 8002d30: 4b61 ldr r3, [pc, #388] ; (8002eb8 ) 8002d32: 4a6d ldr r2, [pc, #436] ; (8002ee8 ) 8002d34: 601a str r2, [r3, #0] break; 8002d36: e00e b.n 8002d56 case 0x0C: WS2812BConvertedData = 0x00DA4000; 8002d38: 4b5f ldr r3, [pc, #380] ; (8002eb8 ) 8002d3a: 4a6c ldr r2, [pc, #432] ; (8002eec ) 8002d3c: 601a str r2, [r3, #0] break; 8002d3e: e00a b.n 8002d56 case 0x0D: WS2812BConvertedData = 0x00DA6000; 8002d40: 4b5d ldr r3, [pc, #372] ; (8002eb8 ) 8002d42: 4a6b ldr r2, [pc, #428] ; (8002ef0 ) 8002d44: 601a str r2, [r3, #0] break; 8002d46: e006 b.n 8002d56 case 0x0E: WS2812BConvertedData = 0x00DB4000; 8002d48: 4b5b ldr r3, [pc, #364] ; (8002eb8 ) 8002d4a: 4a6a ldr r2, [pc, #424] ; (8002ef4 ) 8002d4c: 601a str r2, [r3, #0] break; 8002d4e: e002 b.n 8002d56 default: // 0x0F WS2812BConvertedData = 0x00DB6000; 8002d50: 4b59 ldr r3, [pc, #356] ; (8002eb8 ) 8002d52: 4a69 ldr r2, [pc, #420] ; (8002ef8 ) 8002d54: 601a str r2, [r3, #0] } switch(byteToConvert & 0x0F){ 8002d56: 797b ldrb r3, [r7, #5] 8002d58: f003 030f and.w r3, r3, #15 8002d5c: 2b0e cmp r3, #14 8002d5e: f200 80cd bhi.w 8002efc 8002d62: a201 add r2, pc, #4 ; (adr r2, 8002d68 ) 8002d64: f852 f023 ldr.w pc, [r2, r3, lsl #2] 8002d68: 08002da5 .word 0x08002da5 8002d6c: 08002db7 .word 0x08002db7 8002d70: 08002dc9 .word 0x08002dc9 8002d74: 08002ddb .word 0x08002ddb 8002d78: 08002ded .word 0x08002ded 8002d7c: 08002dff .word 0x08002dff 8002d80: 08002e11 .word 0x08002e11 8002d84: 08002e23 .word 0x08002e23 8002d88: 08002e35 .word 0x08002e35 8002d8c: 08002e47 .word 0x08002e47 8002d90: 08002e59 .word 0x08002e59 8002d94: 08002e6b .word 0x08002e6b 8002d98: 08002e7d .word 0x08002e7d 8002d9c: 08002e8f .word 0x08002e8f 8002da0: 08002ea1 .word 0x08002ea1 case 0x00: WS2812BConvertedData |= 0x00000924; 8002da4: 4b44 ldr r3, [pc, #272] ; (8002eb8 ) 8002da6: 681b ldr r3, [r3, #0] 8002da8: f443 6312 orr.w r3, r3, #2336 ; 0x920 8002dac: f043 0304 orr.w r3, r3, #4 8002db0: 4a41 ldr r2, [pc, #260] ; (8002eb8 ) 8002db2: 6013 str r3, [r2, #0] break; 8002db4: e0aa b.n 8002f0c case 0x01: WS2812BConvertedData |= 0x00000926; 8002db6: 4b40 ldr r3, [pc, #256] ; (8002eb8 ) 8002db8: 681b ldr r3, [r3, #0] 8002dba: f443 6312 orr.w r3, r3, #2336 ; 0x920 8002dbe: f043 0306 orr.w r3, r3, #6 8002dc2: 4a3d ldr r2, [pc, #244] ; (8002eb8 ) 8002dc4: 6013 str r3, [r2, #0] break; 8002dc6: e0a1 b.n 8002f0c case 0x02: WS2812BConvertedData |= 0x00000934; 8002dc8: 4b3b ldr r3, [pc, #236] ; (8002eb8 ) 8002dca: 681b ldr r3, [r3, #0] 8002dcc: f443 6313 orr.w r3, r3, #2352 ; 0x930 8002dd0: f043 0304 orr.w r3, r3, #4 8002dd4: 4a38 ldr r2, [pc, #224] ; (8002eb8 ) 8002dd6: 6013 str r3, [r2, #0] break; 8002dd8: e098 b.n 8002f0c case 0x03: WS2812BConvertedData |= 0x00000936; 8002dda: 4b37 ldr r3, [pc, #220] ; (8002eb8 ) 8002ddc: 681b ldr r3, [r3, #0] 8002dde: f443 6313 orr.w r3, r3, #2352 ; 0x930 8002de2: f043 0306 orr.w r3, r3, #6 8002de6: 4a34 ldr r2, [pc, #208] ; (8002eb8 ) 8002de8: 6013 str r3, [r2, #0] break; 8002dea: e08f b.n 8002f0c case 0x04: WS2812BConvertedData |= 0x000009A4; 8002dec: 4b32 ldr r3, [pc, #200] ; (8002eb8 ) 8002dee: 681b ldr r3, [r3, #0] 8002df0: f443 631a orr.w r3, r3, #2464 ; 0x9a0 8002df4: f043 0304 orr.w r3, r3, #4 8002df8: 4a2f ldr r2, [pc, #188] ; (8002eb8 ) 8002dfa: 6013 str r3, [r2, #0] break; 8002dfc: e086 b.n 8002f0c case 0x05: WS2812BConvertedData |= 0x000009A6; 8002dfe: 4b2e ldr r3, [pc, #184] ; (8002eb8 ) 8002e00: 681b ldr r3, [r3, #0] 8002e02: f443 631a orr.w r3, r3, #2464 ; 0x9a0 8002e06: f043 0306 orr.w r3, r3, #6 8002e0a: 4a2b ldr r2, [pc, #172] ; (8002eb8 ) 8002e0c: 6013 str r3, [r2, #0] break; 8002e0e: e07d b.n 8002f0c case 0x06: WS2812BConvertedData |= 0x000009B4; 8002e10: 4b29 ldr r3, [pc, #164] ; (8002eb8 ) 8002e12: 681b ldr r3, [r3, #0] 8002e14: f443 631b orr.w r3, r3, #2480 ; 0x9b0 8002e18: f043 0304 orr.w r3, r3, #4 8002e1c: 4a26 ldr r2, [pc, #152] ; (8002eb8 ) 8002e1e: 6013 str r3, [r2, #0] break; 8002e20: e074 b.n 8002f0c case 0x07: WS2812BConvertedData |= 0x000009B6; 8002e22: 4b25 ldr r3, [pc, #148] ; (8002eb8 ) 8002e24: 681b ldr r3, [r3, #0] 8002e26: f443 631b orr.w r3, r3, #2480 ; 0x9b0 8002e2a: f043 0306 orr.w r3, r3, #6 8002e2e: 4a22 ldr r2, [pc, #136] ; (8002eb8 ) 8002e30: 6013 str r3, [r2, #0] break; 8002e32: e06b b.n 8002f0c case 0x08: WS2812BConvertedData |= 0x00000D24; 8002e34: 4b20 ldr r3, [pc, #128] ; (8002eb8 ) 8002e36: 681b ldr r3, [r3, #0] 8002e38: f443 6352 orr.w r3, r3, #3360 ; 0xd20 8002e3c: f043 0304 orr.w r3, r3, #4 8002e40: 4a1d ldr r2, [pc, #116] ; (8002eb8 ) 8002e42: 6013 str r3, [r2, #0] break; 8002e44: e062 b.n 8002f0c case 0x09: WS2812BConvertedData |= 0x00000D26; 8002e46: 4b1c ldr r3, [pc, #112] ; (8002eb8 ) 8002e48: 681b ldr r3, [r3, #0] 8002e4a: f443 6352 orr.w r3, r3, #3360 ; 0xd20 8002e4e: f043 0306 orr.w r3, r3, #6 8002e52: 4a19 ldr r2, [pc, #100] ; (8002eb8 ) 8002e54: 6013 str r3, [r2, #0] break; 8002e56: e059 b.n 8002f0c case 0x0A: WS2812BConvertedData |= 0x00000D34; 8002e58: 4b17 ldr r3, [pc, #92] ; (8002eb8 ) 8002e5a: 681b ldr r3, [r3, #0] 8002e5c: f443 6353 orr.w r3, r3, #3376 ; 0xd30 8002e60: f043 0304 orr.w r3, r3, #4 8002e64: 4a14 ldr r2, [pc, #80] ; (8002eb8 ) 8002e66: 6013 str r3, [r2, #0] break; 8002e68: e050 b.n 8002f0c case 0x0B: WS2812BConvertedData |= 0x00000D36; 8002e6a: 4b13 ldr r3, [pc, #76] ; (8002eb8 ) 8002e6c: 681b ldr r3, [r3, #0] 8002e6e: f443 6353 orr.w r3, r3, #3376 ; 0xd30 8002e72: f043 0306 orr.w r3, r3, #6 8002e76: 4a10 ldr r2, [pc, #64] ; (8002eb8 ) 8002e78: 6013 str r3, [r2, #0] break; 8002e7a: e047 b.n 8002f0c case 0x0C: WS2812BConvertedData |= 0x00000DA4; 8002e7c: 4b0e ldr r3, [pc, #56] ; (8002eb8 ) 8002e7e: 681b ldr r3, [r3, #0] 8002e80: f443 635a orr.w r3, r3, #3488 ; 0xda0 8002e84: f043 0304 orr.w r3, r3, #4 8002e88: 4a0b ldr r2, [pc, #44] ; (8002eb8 ) 8002e8a: 6013 str r3, [r2, #0] break; 8002e8c: e03e b.n 8002f0c case 0x0D: WS2812BConvertedData |= 0x00000DA6; 8002e8e: 4b0a ldr r3, [pc, #40] ; (8002eb8 ) 8002e90: 681b ldr r3, [r3, #0] 8002e92: f443 635a orr.w r3, r3, #3488 ; 0xda0 8002e96: f043 0306 orr.w r3, r3, #6 8002e9a: 4a07 ldr r2, [pc, #28] ; (8002eb8 ) 8002e9c: 6013 str r3, [r2, #0] break; 8002e9e: e035 b.n 8002f0c case 0x0E: WS2812BConvertedData |= 0x00000DB4; 8002ea0: 4b05 ldr r3, [pc, #20] ; (8002eb8 ) 8002ea2: 681b ldr r3, [r3, #0] 8002ea4: f443 635b orr.w r3, r3, #3504 ; 0xdb0 8002ea8: f043 0304 orr.w r3, r3, #4 8002eac: 4a02 ldr r2, [pc, #8] ; (8002eb8 ) 8002eae: 6013 str r3, [r2, #0] break; 8002eb0: e02c b.n 8002f0c 8002eb2: bf00 nop 8002eb4: 20000094 .word 0x20000094 8002eb8: 20000494 .word 0x20000494 8002ebc: 00924000 .word 0x00924000 8002ec0: 00926000 .word 0x00926000 8002ec4: 00934000 .word 0x00934000 8002ec8: 00936000 .word 0x00936000 8002ecc: 009a4000 .word 0x009a4000 8002ed0: 009a6000 .word 0x009a6000 8002ed4: 009b4000 .word 0x009b4000 8002ed8: 009b6000 .word 0x009b6000 8002edc: 00d24000 .word 0x00d24000 8002ee0: 00d26000 .word 0x00d26000 8002ee4: 00d34000 .word 0x00d34000 8002ee8: 00d36000 .word 0x00d36000 8002eec: 00da4000 .word 0x00da4000 8002ef0: 00da6000 .word 0x00da6000 8002ef4: 00db4000 .word 0x00db4000 8002ef8: 00db6000 .word 0x00db6000 default: // 0x0F WS2812BConvertedData |= 0x00000DB6; 8002efc: 4b27 ldr r3, [pc, #156] ; (8002f9c ) 8002efe: 681b ldr r3, [r3, #0] 8002f00: f443 635b orr.w r3, r3, #3504 ; 0xdb0 8002f04: f043 0306 orr.w r3, r3, #6 8002f08: 4a24 ldr r2, [pc, #144] ; (8002f9c ) 8002f0a: 6013 str r3, [r2, #0] } LEDData_WS2812B[i][j][0] = (WS2812BConvertedData & 0x00FF0000) >> 16; 8002f0c: 4b23 ldr r3, [pc, #140] ; (8002f9c ) 8002f0e: 681b ldr r3, [r3, #0] 8002f10: 0c1a lsrs r2, r3, #16 8002f12: 79f9 ldrb r1, [r7, #7] 8002f14: 79bb ldrb r3, [r7, #6] 8002f16: b2d4 uxtb r4, r2 8002f18: 4821 ldr r0, [pc, #132] ; (8002fa0 ) 8002f1a: 461a mov r2, r3 8002f1c: 0052 lsls r2, r2, #1 8002f1e: 441a add r2, r3 8002f20: 460b mov r3, r1 8002f22: 00db lsls r3, r3, #3 8002f24: 440b add r3, r1 8002f26: 4413 add r3, r2 8002f28: 4403 add r3, r0 8002f2a: 4622 mov r2, r4 8002f2c: 701a strb r2, [r3, #0] LEDData_WS2812B[i][j][1] = (WS2812BConvertedData & 0x0000FF00) >> 8; 8002f2e: 4b1b ldr r3, [pc, #108] ; (8002f9c ) 8002f30: 681b ldr r3, [r3, #0] 8002f32: 0a1a lsrs r2, r3, #8 8002f34: 79f9 ldrb r1, [r7, #7] 8002f36: 79bb ldrb r3, [r7, #6] 8002f38: b2d4 uxtb r4, r2 8002f3a: 4819 ldr r0, [pc, #100] ; (8002fa0 ) 8002f3c: 461a mov r2, r3 8002f3e: 0052 lsls r2, r2, #1 8002f40: 441a add r2, r3 8002f42: 460b mov r3, r1 8002f44: 00db lsls r3, r3, #3 8002f46: 440b add r3, r1 8002f48: 4413 add r3, r2 8002f4a: 4403 add r3, r0 8002f4c: 3301 adds r3, #1 8002f4e: 4622 mov r2, r4 8002f50: 701a strb r2, [r3, #0] LEDData_WS2812B[i][j][2] = WS2812BConvertedData & 0x000000FF; 8002f52: 4b12 ldr r3, [pc, #72] ; (8002f9c ) 8002f54: 681a ldr r2, [r3, #0] 8002f56: 79f9 ldrb r1, [r7, #7] 8002f58: 79bb ldrb r3, [r7, #6] 8002f5a: b2d4 uxtb r4, r2 8002f5c: 4810 ldr r0, [pc, #64] ; (8002fa0 ) 8002f5e: 461a mov r2, r3 8002f60: 0052 lsls r2, r2, #1 8002f62: 441a add r2, r3 8002f64: 460b mov r3, r1 8002f66: 00db lsls r3, r3, #3 8002f68: 440b add r3, r1 8002f6a: 4413 add r3, r2 8002f6c: 4403 add r3, r0 8002f6e: 3302 adds r3, #2 8002f70: 4622 mov r2, r4 8002f72: 701a strb r2, [r3, #0] for (uint8_t j = 0; j < 3; ++j) { 8002f74: 79bb ldrb r3, [r7, #6] 8002f76: 3301 adds r3, #1 8002f78: 71bb strb r3, [r7, #6] 8002f7a: 79bb ldrb r3, [r7, #6] 8002f7c: 2b02 cmp r3, #2 8002f7e: f67f ae7a bls.w 8002c76 for (uint8_t i = 0; i < 64; ++i) { 8002f82: 79fb ldrb r3, [r7, #7] 8002f84: 3301 adds r3, #1 8002f86: 71fb strb r3, [r7, #7] 8002f88: 79fb ldrb r3, [r7, #7] 8002f8a: 2b3f cmp r3, #63 ; 0x3f 8002f8c: f67f ae70 bls.w 8002c70 } } } 8002f90: bf00 nop 8002f92: 3708 adds r7, #8 8002f94: 46bd mov sp, r7 8002f96: bc90 pop {r4, r7} 8002f98: 4770 bx lr 8002f9a: bf00 nop 8002f9c: 20000494 .word 0x20000494 8002fa0: 20000154 .word 0x20000154 08002fa4 : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { 8002fa4: b480 push {r7} 8002fa6: af00 add r7, sp, #0 /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ /* USER CODE END Error_Handler_Debug */ } 8002fa8: bf00 nop 8002faa: 46bd mov sp, r7 8002fac: f85d 7b04 ldr.w r7, [sp], #4 8002fb0: 4770 bx lr ... 08002fb4 : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { 8002fb4: b580 push {r7, lr} 8002fb6: b082 sub sp, #8 8002fb8: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); 8002fba: 2300 movs r3, #0 8002fbc: 607b str r3, [r7, #4] 8002fbe: 4b10 ldr r3, [pc, #64] ; (8003000 ) 8002fc0: 6c5b ldr r3, [r3, #68] ; 0x44 8002fc2: 4a0f ldr r2, [pc, #60] ; (8003000 ) 8002fc4: f443 4380 orr.w r3, r3, #16384 ; 0x4000 8002fc8: 6453 str r3, [r2, #68] ; 0x44 8002fca: 4b0d ldr r3, [pc, #52] ; (8003000 ) 8002fcc: 6c5b ldr r3, [r3, #68] ; 0x44 8002fce: f403 4380 and.w r3, r3, #16384 ; 0x4000 8002fd2: 607b str r3, [r7, #4] 8002fd4: 687b ldr r3, [r7, #4] __HAL_RCC_PWR_CLK_ENABLE(); 8002fd6: 2300 movs r3, #0 8002fd8: 603b str r3, [r7, #0] 8002fda: 4b09 ldr r3, [pc, #36] ; (8003000 ) 8002fdc: 6c1b ldr r3, [r3, #64] ; 0x40 8002fde: 4a08 ldr r2, [pc, #32] ; (8003000 ) 8002fe0: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 8002fe4: 6413 str r3, [r2, #64] ; 0x40 8002fe6: 4b06 ldr r3, [pc, #24] ; (8003000 ) 8002fe8: 6c1b ldr r3, [r3, #64] ; 0x40 8002fea: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 8002fee: 603b str r3, [r7, #0] 8002ff0: 683b ldr r3, [r7, #0] HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0); 8002ff2: 2007 movs r0, #7 8002ff4: f000 fed6 bl 8003da4 /* System interrupt init*/ /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } 8002ff8: bf00 nop 8002ffa: 3708 adds r7, #8 8002ffc: 46bd mov sp, r7 8002ffe: bd80 pop {r7, pc} 8003000: 40023800 .word 0x40023800 08003004 : * This function configures the hardware resources used in this example * @param hadc: ADC handle pointer * @retval None */ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) { 8003004: b580 push {r7, lr} 8003006: b08a sub sp, #40 ; 0x28 8003008: af00 add r7, sp, #0 800300a: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; 800300c: f107 0314 add.w r3, r7, #20 8003010: 2200 movs r2, #0 8003012: 601a str r2, [r3, #0] 8003014: 605a str r2, [r3, #4] 8003016: 609a str r2, [r3, #8] 8003018: 60da str r2, [r3, #12] 800301a: 611a str r2, [r3, #16] if(hadc->Instance==ADC3) 800301c: 687b ldr r3, [r7, #4] 800301e: 681b ldr r3, [r3, #0] 8003020: 4a17 ldr r2, [pc, #92] ; (8003080 ) 8003022: 4293 cmp r3, r2 8003024: d127 bne.n 8003076 { /* USER CODE BEGIN ADC3_MspInit 0 */ /* USER CODE END ADC3_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_ADC3_CLK_ENABLE(); 8003026: 2300 movs r3, #0 8003028: 613b str r3, [r7, #16] 800302a: 4b16 ldr r3, [pc, #88] ; (8003084 ) 800302c: 6c5b ldr r3, [r3, #68] ; 0x44 800302e: 4a15 ldr r2, [pc, #84] ; (8003084 ) 8003030: f443 6380 orr.w r3, r3, #1024 ; 0x400 8003034: 6453 str r3, [r2, #68] ; 0x44 8003036: 4b13 ldr r3, [pc, #76] ; (8003084 ) 8003038: 6c5b ldr r3, [r3, #68] ; 0x44 800303a: f403 6380 and.w r3, r3, #1024 ; 0x400 800303e: 613b str r3, [r7, #16] 8003040: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOF_CLK_ENABLE(); 8003042: 2300 movs r3, #0 8003044: 60fb str r3, [r7, #12] 8003046: 4b0f ldr r3, [pc, #60] ; (8003084 ) 8003048: 6b1b ldr r3, [r3, #48] ; 0x30 800304a: 4a0e ldr r2, [pc, #56] ; (8003084 ) 800304c: f043 0320 orr.w r3, r3, #32 8003050: 6313 str r3, [r2, #48] ; 0x30 8003052: 4b0c ldr r3, [pc, #48] ; (8003084 ) 8003054: 6b1b ldr r3, [r3, #48] ; 0x30 8003056: f003 0320 and.w r3, r3, #32 800305a: 60fb str r3, [r7, #12] 800305c: 68fb ldr r3, [r7, #12] /**ADC3 GPIO Configuration PF6 ------> ADC3_IN4 */ GPIO_InitStruct.Pin = GPIO_PIN_6; 800305e: 2340 movs r3, #64 ; 0x40 8003060: 617b str r3, [r7, #20] GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; 8003062: 2303 movs r3, #3 8003064: 61bb str r3, [r7, #24] GPIO_InitStruct.Pull = GPIO_NOPULL; 8003066: 2300 movs r3, #0 8003068: 61fb str r3, [r7, #28] HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); 800306a: f107 0314 add.w r3, r7, #20 800306e: 4619 mov r1, r3 8003070: 4805 ldr r0, [pc, #20] ; (8003088 ) 8003072: f000 fefb bl 8003e6c /* USER CODE BEGIN ADC3_MspInit 1 */ /* USER CODE END ADC3_MspInit 1 */ } } 8003076: bf00 nop 8003078: 3728 adds r7, #40 ; 0x28 800307a: 46bd mov sp, r7 800307c: bd80 pop {r7, pc} 800307e: bf00 nop 8003080: 40012200 .word 0x40012200 8003084: 40023800 .word 0x40023800 8003088: 40021400 .word 0x40021400 0800308c : * This function configures the hardware resources used in this example * @param hspi: SPI handle pointer * @retval None */ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) { 800308c: b580 push {r7, lr} 800308e: b08a sub sp, #40 ; 0x28 8003090: af00 add r7, sp, #0 8003092: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; 8003094: f107 0314 add.w r3, r7, #20 8003098: 2200 movs r2, #0 800309a: 601a str r2, [r3, #0] 800309c: 605a str r2, [r3, #4] 800309e: 609a str r2, [r3, #8] 80030a0: 60da str r2, [r3, #12] 80030a2: 611a str r2, [r3, #16] if(hspi->Instance==SPI4) 80030a4: 687b ldr r3, [r7, #4] 80030a6: 681b ldr r3, [r3, #0] 80030a8: 4a1d ldr r2, [pc, #116] ; (8003120 ) 80030aa: 4293 cmp r3, r2 80030ac: d133 bne.n 8003116 { /* USER CODE BEGIN SPI4_MspInit 0 */ /* USER CODE END SPI4_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_SPI4_CLK_ENABLE(); 80030ae: 2300 movs r3, #0 80030b0: 613b str r3, [r7, #16] 80030b2: 4b1c ldr r3, [pc, #112] ; (8003124 ) 80030b4: 6c5b ldr r3, [r3, #68] ; 0x44 80030b6: 4a1b ldr r2, [pc, #108] ; (8003124 ) 80030b8: f443 5300 orr.w r3, r3, #8192 ; 0x2000 80030bc: 6453 str r3, [r2, #68] ; 0x44 80030be: 4b19 ldr r3, [pc, #100] ; (8003124 ) 80030c0: 6c5b ldr r3, [r3, #68] ; 0x44 80030c2: f403 5300 and.w r3, r3, #8192 ; 0x2000 80030c6: 613b str r3, [r7, #16] 80030c8: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOE_CLK_ENABLE(); 80030ca: 2300 movs r3, #0 80030cc: 60fb str r3, [r7, #12] 80030ce: 4b15 ldr r3, [pc, #84] ; (8003124 ) 80030d0: 6b1b ldr r3, [r3, #48] ; 0x30 80030d2: 4a14 ldr r2, [pc, #80] ; (8003124 ) 80030d4: f043 0310 orr.w r3, r3, #16 80030d8: 6313 str r3, [r2, #48] ; 0x30 80030da: 4b12 ldr r3, [pc, #72] ; (8003124 ) 80030dc: 6b1b ldr r3, [r3, #48] ; 0x30 80030de: f003 0310 and.w r3, r3, #16 80030e2: 60fb str r3, [r7, #12] 80030e4: 68fb ldr r3, [r7, #12] /**SPI4 GPIO Configuration PE2 ------> SPI4_SCK PE6 ------> SPI4_MOSI */ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_6; 80030e6: 2344 movs r3, #68 ; 0x44 80030e8: 617b str r3, [r7, #20] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 80030ea: 2302 movs r3, #2 80030ec: 61bb str r3, [r7, #24] GPIO_InitStruct.Pull = GPIO_NOPULL; 80030ee: 2300 movs r3, #0 80030f0: 61fb str r3, [r7, #28] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 80030f2: 2303 movs r3, #3 80030f4: 623b str r3, [r7, #32] GPIO_InitStruct.Alternate = GPIO_AF5_SPI4; 80030f6: 2305 movs r3, #5 80030f8: 627b str r3, [r7, #36] ; 0x24 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); 80030fa: f107 0314 add.w r3, r7, #20 80030fe: 4619 mov r1, r3 8003100: 4809 ldr r0, [pc, #36] ; (8003128 ) 8003102: f000 feb3 bl 8003e6c /* SPI4 interrupt Init */ HAL_NVIC_SetPriority(SPI4_IRQn, 0, 0); 8003106: 2200 movs r2, #0 8003108: 2100 movs r1, #0 800310a: 2054 movs r0, #84 ; 0x54 800310c: f000 fe55 bl 8003dba HAL_NVIC_EnableIRQ(SPI4_IRQn); 8003110: 2054 movs r0, #84 ; 0x54 8003112: f000 fe6e bl 8003df2 /* USER CODE BEGIN SPI4_MspInit 1 */ /* USER CODE END SPI4_MspInit 1 */ } } 8003116: bf00 nop 8003118: 3728 adds r7, #40 ; 0x28 800311a: 46bd mov sp, r7 800311c: bd80 pop {r7, pc} 800311e: bf00 nop 8003120: 40013400 .word 0x40013400 8003124: 40023800 .word 0x40023800 8003128: 40021000 .word 0x40021000 0800312c : * This function configures the hardware resources used in this example * @param htim_base: TIM_Base handle pointer * @retval None */ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { 800312c: b580 push {r7, lr} 800312e: b084 sub sp, #16 8003130: af00 add r7, sp, #0 8003132: 6078 str r0, [r7, #4] if(htim_base->Instance==TIM6) 8003134: 687b ldr r3, [r7, #4] 8003136: 681b ldr r3, [r3, #0] 8003138: 4a0e ldr r2, [pc, #56] ; (8003174 ) 800313a: 4293 cmp r3, r2 800313c: d115 bne.n 800316a { /* USER CODE BEGIN TIM6_MspInit 0 */ /* USER CODE END TIM6_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_TIM6_CLK_ENABLE(); 800313e: 2300 movs r3, #0 8003140: 60fb str r3, [r7, #12] 8003142: 4b0d ldr r3, [pc, #52] ; (8003178 ) 8003144: 6c1b ldr r3, [r3, #64] ; 0x40 8003146: 4a0c ldr r2, [pc, #48] ; (8003178 ) 8003148: f043 0310 orr.w r3, r3, #16 800314c: 6413 str r3, [r2, #64] ; 0x40 800314e: 4b0a ldr r3, [pc, #40] ; (8003178 ) 8003150: 6c1b ldr r3, [r3, #64] ; 0x40 8003152: f003 0310 and.w r3, r3, #16 8003156: 60fb str r3, [r7, #12] 8003158: 68fb ldr r3, [r7, #12] /* TIM6 interrupt Init */ HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0); 800315a: 2200 movs r2, #0 800315c: 2100 movs r1, #0 800315e: 2036 movs r0, #54 ; 0x36 8003160: f000 fe2b bl 8003dba HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); 8003164: 2036 movs r0, #54 ; 0x36 8003166: f000 fe44 bl 8003df2 /* USER CODE BEGIN TIM6_MspInit 1 */ /* USER CODE END TIM6_MspInit 1 */ } } 800316a: bf00 nop 800316c: 3710 adds r7, #16 800316e: 46bd mov sp, r7 8003170: bd80 pop {r7, pc} 8003172: bf00 nop 8003174: 40001000 .word 0x40001000 8003178: 40023800 .word 0x40023800 0800317c : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { 800317c: b480 push {r7} 800317e: af00 add r7, sp, #0 /* USER CODE END NonMaskableInt_IRQn 0 */ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ /* USER CODE END NonMaskableInt_IRQn 1 */ } 8003180: bf00 nop 8003182: 46bd mov sp, r7 8003184: f85d 7b04 ldr.w r7, [sp], #4 8003188: 4770 bx lr 0800318a : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { 800318a: b480 push {r7} 800318c: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) 800318e: e7fe b.n 800318e 08003190 : /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { 8003190: b480 push {r7} 8003192: af00 add r7, sp, #0 /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) 8003194: e7fe b.n 8003194 08003196 : /** * @brief This function handles Pre-fetch fault, memory access fault. */ void BusFault_Handler(void) { 8003196: b480 push {r7} 8003198: af00 add r7, sp, #0 /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) 800319a: e7fe b.n 800319a 0800319c : /** * @brief This function handles Undefined instruction or illegal state. */ void UsageFault_Handler(void) { 800319c: b480 push {r7} 800319e: af00 add r7, sp, #0 /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) 80031a0: e7fe b.n 80031a0 080031a2 : /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { 80031a2: b480 push {r7} 80031a4: af00 add r7, sp, #0 /* USER CODE END SVCall_IRQn 0 */ /* USER CODE BEGIN SVCall_IRQn 1 */ /* USER CODE END SVCall_IRQn 1 */ } 80031a6: bf00 nop 80031a8: 46bd mov sp, r7 80031aa: f85d 7b04 ldr.w r7, [sp], #4 80031ae: 4770 bx lr 080031b0 : /** * @brief This function handles Debug monitor. */ void DebugMon_Handler(void) { 80031b0: b480 push {r7} 80031b2: af00 add r7, sp, #0 /* USER CODE END DebugMonitor_IRQn 0 */ /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */ } 80031b4: bf00 nop 80031b6: 46bd mov sp, r7 80031b8: f85d 7b04 ldr.w r7, [sp], #4 80031bc: 4770 bx lr 080031be : /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { 80031be: b480 push {r7} 80031c0: af00 add r7, sp, #0 /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } 80031c2: bf00 nop 80031c4: 46bd mov sp, r7 80031c6: f85d 7b04 ldr.w r7, [sp], #4 80031ca: 4770 bx lr 080031cc : /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { 80031cc: b580 push {r7, lr} 80031ce: af00 add r7, sp, #0 /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); 80031d0: f000 f90c bl 80033ec /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } 80031d4: bf00 nop 80031d6: bd80 pop {r7, pc} 080031d8 : /** * @brief This function handles EXTI line0 interrupt. */ void EXTI0_IRQHandler(void) { 80031d8: b580 push {r7, lr} 80031da: af00 add r7, sp, #0 /* USER CODE BEGIN EXTI0_IRQn 0 */ /* USER CODE END EXTI0_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); 80031dc: 2001 movs r0, #1 80031de: f001 f809 bl 80041f4 /* USER CODE BEGIN EXTI0_IRQn 1 */ HAL_TIM_Base_Start_IT(&htim6); 80031e2: 4804 ldr r0, [pc, #16] ; (80031f4 ) 80031e4: f001 ffe5 bl 80051b2 LEDDesign_PendingChange = true; 80031e8: 4b03 ldr r3, [pc, #12] ; (80031f8 ) 80031ea: 2201 movs r2, #1 80031ec: 701a strb r2, [r3, #0] /* USER CODE END EXTI0_IRQn 1 */ } 80031ee: bf00 nop 80031f0: bd80 pop {r7, pc} 80031f2: bf00 nop 80031f4: 20000454 .word 0x20000454 80031f8: 20000091 .word 0x20000091 080031fc : /** * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts. */ void TIM6_DAC_IRQHandler(void) { 80031fc: b580 push {r7, lr} 80031fe: af00 add r7, sp, #0 /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ /* USER CODE END TIM6_DAC_IRQn 0 */ HAL_TIM_IRQHandler(&htim6); 8003200: 480a ldr r0, [pc, #40] ; (800322c ) 8003202: f002 f840 bl 8005286 /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ LEDMode = (LEDMode + 1) % 8; 8003206: 4b0a ldr r3, [pc, #40] ; (8003230 ) 8003208: 781b ldrb r3, [r3, #0] 800320a: 3301 adds r3, #1 800320c: 425a negs r2, r3 800320e: f003 0307 and.w r3, r3, #7 8003212: f002 0207 and.w r2, r2, #7 8003216: bf58 it pl 8003218: 4253 negpl r3, r2 800321a: b2da uxtb r2, r3 800321c: 4b04 ldr r3, [pc, #16] ; (8003230 ) 800321e: 701a strb r2, [r3, #0] LEDDesign_PendingChange = false; 8003220: 4b04 ldr r3, [pc, #16] ; (8003234 ) 8003222: 2200 movs r2, #0 8003224: 701a strb r2, [r3, #0] /* USER CODE END TIM6_DAC_IRQn 1 */ } 8003226: bf00 nop 8003228: bd80 pop {r7, pc} 800322a: bf00 nop 800322c: 20000454 .word 0x20000454 8003230: 20000090 .word 0x20000090 8003234: 20000091 .word 0x20000091 08003238 : /** * @brief This function handles SPI4 global interrupt. */ void SPI4_IRQHandler(void) { 8003238: b580 push {r7, lr} 800323a: af00 add r7, sp, #0 /* USER CODE BEGIN SPI4_IRQn 0 */ /* USER CODE END SPI4_IRQn 0 */ HAL_SPI_IRQHandler(&hspi4); 800323c: 4805 ldr r0, [pc, #20] ; (8003254 ) 800323e: f001 fd11 bl 8004c64 /* USER CODE BEGIN SPI4_IRQn 1 */ HAL_SPI_Transmit_IT(&hspi4, (uint8_t *) &LEDData_WS2812B, (uint16_t) 66 * 3 * 3); 8003242: f240 2252 movw r2, #594 ; 0x252 8003246: 4904 ldr r1, [pc, #16] ; (8003258 ) 8003248: 4802 ldr r0, [pc, #8] ; (8003254 ) 800324a: f001 fc89 bl 8004b60 /* USER CODE END SPI4_IRQn 1 */ } 800324e: bf00 nop 8003250: bd80 pop {r7, pc} 8003252: bf00 nop 8003254: 200003fc .word 0x200003fc 8003258: 20000154 .word 0x20000154 0800325c <_sbrk>: * * @param incr Memory size * @return Pointer to allocated memory */ void *_sbrk(ptrdiff_t incr) { 800325c: b580 push {r7, lr} 800325e: b086 sub sp, #24 8003260: af00 add r7, sp, #0 8003262: 6078 str r0, [r7, #4] extern uint8_t _end; /* Symbol defined in the linker script */ extern uint8_t _estack; /* Symbol defined in the linker script */ extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; 8003264: 4a14 ldr r2, [pc, #80] ; (80032b8 <_sbrk+0x5c>) 8003266: 4b15 ldr r3, [pc, #84] ; (80032bc <_sbrk+0x60>) 8003268: 1ad3 subs r3, r2, r3 800326a: 617b str r3, [r7, #20] const uint8_t *max_heap = (uint8_t *)stack_limit; 800326c: 697b ldr r3, [r7, #20] 800326e: 613b str r3, [r7, #16] uint8_t *prev_heap_end; /* Initalize heap end at first call */ if (NULL == __sbrk_heap_end) 8003270: 4b13 ldr r3, [pc, #76] ; (80032c0 <_sbrk+0x64>) 8003272: 681b ldr r3, [r3, #0] 8003274: 2b00 cmp r3, #0 8003276: d102 bne.n 800327e <_sbrk+0x22> { __sbrk_heap_end = &_end; 8003278: 4b11 ldr r3, [pc, #68] ; (80032c0 <_sbrk+0x64>) 800327a: 4a12 ldr r2, [pc, #72] ; (80032c4 <_sbrk+0x68>) 800327c: 601a str r2, [r3, #0] } /* Protect heap from growing into the reserved MSP stack */ if (__sbrk_heap_end + incr > max_heap) 800327e: 4b10 ldr r3, [pc, #64] ; (80032c0 <_sbrk+0x64>) 8003280: 681a ldr r2, [r3, #0] 8003282: 687b ldr r3, [r7, #4] 8003284: 4413 add r3, r2 8003286: 693a ldr r2, [r7, #16] 8003288: 429a cmp r2, r3 800328a: d207 bcs.n 800329c <_sbrk+0x40> { errno = ENOMEM; 800328c: f002 fa66 bl 800575c <__errno> 8003290: 4602 mov r2, r0 8003292: 230c movs r3, #12 8003294: 6013 str r3, [r2, #0] return (void *)-1; 8003296: f04f 33ff mov.w r3, #4294967295 800329a: e009 b.n 80032b0 <_sbrk+0x54> } prev_heap_end = __sbrk_heap_end; 800329c: 4b08 ldr r3, [pc, #32] ; (80032c0 <_sbrk+0x64>) 800329e: 681b ldr r3, [r3, #0] 80032a0: 60fb str r3, [r7, #12] __sbrk_heap_end += incr; 80032a2: 4b07 ldr r3, [pc, #28] ; (80032c0 <_sbrk+0x64>) 80032a4: 681a ldr r2, [r3, #0] 80032a6: 687b ldr r3, [r7, #4] 80032a8: 4413 add r3, r2 80032aa: 4a05 ldr r2, [pc, #20] ; (80032c0 <_sbrk+0x64>) 80032ac: 6013 str r3, [r2, #0] return (void *)prev_heap_end; 80032ae: 68fb ldr r3, [r7, #12] } 80032b0: 4618 mov r0, r3 80032b2: 3718 adds r7, #24 80032b4: 46bd mov sp, r7 80032b6: bd80 pop {r7, pc} 80032b8: 20030000 .word 0x20030000 80032bc: 00000400 .word 0x00000400 80032c0: 200003a8 .word 0x200003a8 80032c4: 200004a0 .word 0x200004a0 080032c8 : * configuration. * @param None * @retval None */ void SystemInit(void) { 80032c8: b480 push {r7} 80032ca: af00 add r7, sp, #0 /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ 80032cc: 4b08 ldr r3, [pc, #32] ; (80032f0 ) 80032ce: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 80032d2: 4a07 ldr r2, [pc, #28] ; (80032f0 ) 80032d4: f443 0370 orr.w r3, r3, #15728640 ; 0xf00000 80032d8: f8c2 3088 str.w r3, [r2, #136] ; 0x88 /* Configure the Vector Table location add offset address ------------------*/ #ifdef VECT_TAB_SRAM SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ #else SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ 80032dc: 4b04 ldr r3, [pc, #16] ; (80032f0 ) 80032de: f04f 6200 mov.w r2, #134217728 ; 0x8000000 80032e2: 609a str r2, [r3, #8] #endif } 80032e4: bf00 nop 80032e6: 46bd mov sp, r7 80032e8: f85d 7b04 ldr.w r7, [sp], #4 80032ec: 4770 bx lr 80032ee: bf00 nop 80032f0: e000ed00 .word 0xe000ed00 080032f4 : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr sp, =_estack /* set stack pointer */ 80032f4: f8df d034 ldr.w sp, [pc, #52] ; 800332c /* Copy the data segment initializers from flash to SRAM */ movs r1, #0 80032f8: 2100 movs r1, #0 b LoopCopyDataInit 80032fa: e003 b.n 8003304 080032fc : CopyDataInit: ldr r3, =_sidata 80032fc: 4b0c ldr r3, [pc, #48] ; (8003330 ) ldr r3, [r3, r1] 80032fe: 585b ldr r3, [r3, r1] str r3, [r0, r1] 8003300: 5043 str r3, [r0, r1] adds r1, r1, #4 8003302: 3104 adds r1, #4 08003304 : LoopCopyDataInit: ldr r0, =_sdata 8003304: 480b ldr r0, [pc, #44] ; (8003334 ) ldr r3, =_edata 8003306: 4b0c ldr r3, [pc, #48] ; (8003338 ) adds r2, r0, r1 8003308: 1842 adds r2, r0, r1 cmp r2, r3 800330a: 429a cmp r2, r3 bcc CopyDataInit 800330c: d3f6 bcc.n 80032fc ldr r2, =_sbss 800330e: 4a0b ldr r2, [pc, #44] ; (800333c ) b LoopFillZerobss 8003310: e002 b.n 8003318 08003312 : /* Zero fill the bss segment. */ FillZerobss: movs r3, #0 8003312: 2300 movs r3, #0 str r3, [r2], #4 8003314: f842 3b04 str.w r3, [r2], #4 08003318 : LoopFillZerobss: ldr r3, = _ebss 8003318: 4b09 ldr r3, [pc, #36] ; (8003340 ) cmp r2, r3 800331a: 429a cmp r2, r3 bcc FillZerobss 800331c: d3f9 bcc.n 8003312 /* Call the clock system intitialization function.*/ bl SystemInit 800331e: f7ff ffd3 bl 80032c8 /* Call static constructors */ bl __libc_init_array 8003322: f002 fa21 bl 8005768 <__libc_init_array> /* Call the application's entry point.*/ bl main 8003326: f7fd fcd1 bl 8000ccc
bx lr 800332a: 4770 bx lr ldr sp, =_estack /* set stack pointer */ 800332c: 20030000 .word 0x20030000 ldr r3, =_sidata 8003330: 08005948 .word 0x08005948 ldr r0, =_sdata 8003334: 20000000 .word 0x20000000 ldr r3, =_edata 8003338: 20000074 .word 0x20000074 ldr r2, =_sbss 800333c: 20000074 .word 0x20000074 ldr r3, = _ebss 8003340: 200004a0 .word 0x200004a0 08003344 : * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop 8003344: e7fe b.n 8003344 ... 08003348 : * need to ensure that the SysTick time base is always set to 1 millisecond * to have correct HAL operation. * @retval HAL status */ HAL_StatusTypeDef HAL_Init(void) { 8003348: b580 push {r7, lr} 800334a: af00 add r7, sp, #0 /* Configure Flash prefetch, Instruction cache, Data cache */ #if (INSTRUCTION_CACHE_ENABLE != 0U) __HAL_FLASH_INSTRUCTION_CACHE_ENABLE(); 800334c: 4b0e ldr r3, [pc, #56] ; (8003388 ) 800334e: 681b ldr r3, [r3, #0] 8003350: 4a0d ldr r2, [pc, #52] ; (8003388 ) 8003352: f443 7300 orr.w r3, r3, #512 ; 0x200 8003356: 6013 str r3, [r2, #0] #endif /* INSTRUCTION_CACHE_ENABLE */ #if (DATA_CACHE_ENABLE != 0U) __HAL_FLASH_DATA_CACHE_ENABLE(); 8003358: 4b0b ldr r3, [pc, #44] ; (8003388 ) 800335a: 681b ldr r3, [r3, #0] 800335c: 4a0a ldr r2, [pc, #40] ; (8003388 ) 800335e: f443 6380 orr.w r3, r3, #1024 ; 0x400 8003362: 6013 str r3, [r2, #0] #endif /* DATA_CACHE_ENABLE */ #if (PREFETCH_ENABLE != 0U) __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); 8003364: 4b08 ldr r3, [pc, #32] ; (8003388 ) 8003366: 681b ldr r3, [r3, #0] 8003368: 4a07 ldr r2, [pc, #28] ; (8003388 ) 800336a: f443 7380 orr.w r3, r3, #256 ; 0x100 800336e: 6013 str r3, [r2, #0] #endif /* PREFETCH_ENABLE */ /* Set Interrupt Group Priority */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); 8003370: 2003 movs r0, #3 8003372: f000 fd17 bl 8003da4 /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ HAL_InitTick(TICK_INT_PRIORITY); 8003376: 2000 movs r0, #0 8003378: f000 f808 bl 800338c /* Init the low level hardware */ HAL_MspInit(); 800337c: f7ff fe1a bl 8002fb4 /* Return function status */ return HAL_OK; 8003380: 2300 movs r3, #0 } 8003382: 4618 mov r0, r3 8003384: bd80 pop {r7, pc} 8003386: bf00 nop 8003388: 40023c00 .word 0x40023c00 0800338c : * implementation in user file. * @param TickPriority Tick interrupt priority. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { 800338c: b580 push {r7, lr} 800338e: b082 sub sp, #8 8003390: af00 add r7, sp, #0 8003392: 6078 str r0, [r7, #4] /* Configure the SysTick to have interrupt in 1ms time basis*/ if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) 8003394: 4b12 ldr r3, [pc, #72] ; (80033e0 ) 8003396: 681a ldr r2, [r3, #0] 8003398: 4b12 ldr r3, [pc, #72] ; (80033e4 ) 800339a: 781b ldrb r3, [r3, #0] 800339c: 4619 mov r1, r3 800339e: f44f 737a mov.w r3, #1000 ; 0x3e8 80033a2: fbb3 f3f1 udiv r3, r3, r1 80033a6: fbb2 f3f3 udiv r3, r2, r3 80033aa: 4618 mov r0, r3 80033ac: f000 fd2f bl 8003e0e 80033b0: 4603 mov r3, r0 80033b2: 2b00 cmp r3, #0 80033b4: d001 beq.n 80033ba { return HAL_ERROR; 80033b6: 2301 movs r3, #1 80033b8: e00e b.n 80033d8 } /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) 80033ba: 687b ldr r3, [r7, #4] 80033bc: 2b0f cmp r3, #15 80033be: d80a bhi.n 80033d6 { HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); 80033c0: 2200 movs r2, #0 80033c2: 6879 ldr r1, [r7, #4] 80033c4: f04f 30ff mov.w r0, #4294967295 80033c8: f000 fcf7 bl 8003dba uwTickPrio = TickPriority; 80033cc: 4a06 ldr r2, [pc, #24] ; (80033e8 ) 80033ce: 687b ldr r3, [r7, #4] 80033d0: 6013 str r3, [r2, #0] { return HAL_ERROR; } /* Return function status */ return HAL_OK; 80033d2: 2300 movs r3, #0 80033d4: e000 b.n 80033d8 return HAL_ERROR; 80033d6: 2301 movs r3, #1 } 80033d8: 4618 mov r0, r3 80033da: 3708 adds r7, #8 80033dc: 46bd mov sp, r7 80033de: bd80 pop {r7, pc} 80033e0: 20000004 .word 0x20000004 80033e4: 2000000c .word 0x2000000c 80033e8: 20000008 .word 0x20000008 080033ec : * @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) { 80033ec: b480 push {r7} 80033ee: af00 add r7, sp, #0 uwTick += uwTickFreq; 80033f0: 4b06 ldr r3, [pc, #24] ; (800340c ) 80033f2: 781b ldrb r3, [r3, #0] 80033f4: 461a mov r2, r3 80033f6: 4b06 ldr r3, [pc, #24] ; (8003410 ) 80033f8: 681b ldr r3, [r3, #0] 80033fa: 4413 add r3, r2 80033fc: 4a04 ldr r2, [pc, #16] ; (8003410 ) 80033fe: 6013 str r3, [r2, #0] } 8003400: bf00 nop 8003402: 46bd mov sp, r7 8003404: f85d 7b04 ldr.w r7, [sp], #4 8003408: 4770 bx lr 800340a: bf00 nop 800340c: 2000000c .word 0x2000000c 8003410: 20000498 .word 0x20000498 08003414 : * @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) { 8003414: b480 push {r7} 8003416: af00 add r7, sp, #0 return uwTick; 8003418: 4b03 ldr r3, [pc, #12] ; (8003428 ) 800341a: 681b ldr r3, [r3, #0] } 800341c: 4618 mov r0, r3 800341e: 46bd mov sp, r7 8003420: f85d 7b04 ldr.w r7, [sp], #4 8003424: 4770 bx lr 8003426: bf00 nop 8003428: 20000498 .word 0x20000498 0800342c : * implementations in user file. * @param Delay specifies the delay time length, in milliseconds. * @retval None */ __weak void HAL_Delay(uint32_t Delay) { 800342c: b580 push {r7, lr} 800342e: b084 sub sp, #16 8003430: af00 add r7, sp, #0 8003432: 6078 str r0, [r7, #4] uint32_t tickstart = HAL_GetTick(); 8003434: f7ff ffee bl 8003414 8003438: 60b8 str r0, [r7, #8] uint32_t wait = Delay; 800343a: 687b ldr r3, [r7, #4] 800343c: 60fb str r3, [r7, #12] /* Add a freq to guarantee minimum wait */ if (wait < HAL_MAX_DELAY) 800343e: 68fb ldr r3, [r7, #12] 8003440: f1b3 3fff cmp.w r3, #4294967295 8003444: d005 beq.n 8003452 { wait += (uint32_t)(uwTickFreq); 8003446: 4b09 ldr r3, [pc, #36] ; (800346c ) 8003448: 781b ldrb r3, [r3, #0] 800344a: 461a mov r2, r3 800344c: 68fb ldr r3, [r7, #12] 800344e: 4413 add r3, r2 8003450: 60fb str r3, [r7, #12] } while((HAL_GetTick() - tickstart) < wait) 8003452: bf00 nop 8003454: f7ff ffde bl 8003414 8003458: 4602 mov r2, r0 800345a: 68bb ldr r3, [r7, #8] 800345c: 1ad3 subs r3, r2, r3 800345e: 68fa ldr r2, [r7, #12] 8003460: 429a cmp r2, r3 8003462: d8f7 bhi.n 8003454 { } } 8003464: bf00 nop 8003466: 3710 adds r7, #16 8003468: 46bd mov sp, r7 800346a: bd80 pop {r7, pc} 800346c: 2000000c .word 0x2000000c 08003470 : * @param hadc pointer to a ADC_HandleTypeDef structure that contains * the configuration information for the specified ADC. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc) { 8003470: b580 push {r7, lr} 8003472: b084 sub sp, #16 8003474: af00 add r7, sp, #0 8003476: 6078 str r0, [r7, #4] HAL_StatusTypeDef tmp_hal_status = HAL_OK; 8003478: 2300 movs r3, #0 800347a: 73fb strb r3, [r7, #15] /* Check ADC handle */ if(hadc == NULL) 800347c: 687b ldr r3, [r7, #4] 800347e: 2b00 cmp r3, #0 8003480: d101 bne.n 8003486 { return HAL_ERROR; 8003482: 2301 movs r3, #1 8003484: e033 b.n 80034ee if(hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) { assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); } if(hadc->State == HAL_ADC_STATE_RESET) 8003486: 687b ldr r3, [r7, #4] 8003488: 6c1b ldr r3, [r3, #64] ; 0x40 800348a: 2b00 cmp r3, #0 800348c: d109 bne.n 80034a2 /* Init the low level hardware */ hadc->MspInitCallback(hadc); #else /* Init the low level hardware */ HAL_ADC_MspInit(hadc); 800348e: 6878 ldr r0, [r7, #4] 8003490: f7ff fdb8 bl 8003004 #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ /* Initialize ADC error code */ ADC_CLEAR_ERRORCODE(hadc); 8003494: 687b ldr r3, [r7, #4] 8003496: 2200 movs r2, #0 8003498: 645a str r2, [r3, #68] ; 0x44 /* Allocate lock resource and initialize it */ hadc->Lock = HAL_UNLOCKED; 800349a: 687b ldr r3, [r7, #4] 800349c: 2200 movs r2, #0 800349e: f883 203c strb.w r2, [r3, #60] ; 0x3c } /* Configuration of ADC parameters if previous preliminary actions are */ /* correctly completed. */ if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL)) 80034a2: 687b ldr r3, [r7, #4] 80034a4: 6c1b ldr r3, [r3, #64] ; 0x40 80034a6: f003 0310 and.w r3, r3, #16 80034aa: 2b00 cmp r3, #0 80034ac: d118 bne.n 80034e0 { /* Set ADC state */ ADC_STATE_CLR_SET(hadc->State, 80034ae: 687b ldr r3, [r7, #4] 80034b0: 6c1b ldr r3, [r3, #64] ; 0x40 80034b2: f423 5388 bic.w r3, r3, #4352 ; 0x1100 80034b6: f023 0302 bic.w r3, r3, #2 80034ba: f043 0202 orr.w r2, r3, #2 80034be: 687b ldr r3, [r7, #4] 80034c0: 641a str r2, [r3, #64] ; 0x40 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, HAL_ADC_STATE_BUSY_INTERNAL); /* Set ADC parameters */ ADC_Init(hadc); 80034c2: 6878 ldr r0, [r7, #4] 80034c4: f000 faa2 bl 8003a0c /* Set ADC error code to none */ ADC_CLEAR_ERRORCODE(hadc); 80034c8: 687b ldr r3, [r7, #4] 80034ca: 2200 movs r2, #0 80034cc: 645a str r2, [r3, #68] ; 0x44 /* Set the ADC state */ ADC_STATE_CLR_SET(hadc->State, 80034ce: 687b ldr r3, [r7, #4] 80034d0: 6c1b ldr r3, [r3, #64] ; 0x40 80034d2: f023 0303 bic.w r3, r3, #3 80034d6: f043 0201 orr.w r2, r3, #1 80034da: 687b ldr r3, [r7, #4] 80034dc: 641a str r2, [r3, #64] ; 0x40 80034de: e001 b.n 80034e4 HAL_ADC_STATE_BUSY_INTERNAL, HAL_ADC_STATE_READY); } else { tmp_hal_status = HAL_ERROR; 80034e0: 2301 movs r3, #1 80034e2: 73fb strb r3, [r7, #15] } /* Release Lock */ __HAL_UNLOCK(hadc); 80034e4: 687b ldr r3, [r7, #4] 80034e6: 2200 movs r2, #0 80034e8: f883 203c strb.w r2, [r3, #60] ; 0x3c /* Return function status */ return tmp_hal_status; 80034ec: 7bfb ldrb r3, [r7, #15] } 80034ee: 4618 mov r0, r3 80034f0: 3710 adds r7, #16 80034f2: 46bd mov sp, r7 80034f4: bd80 pop {r7, pc} ... 080034f8 : * @param hadc pointer to a ADC_HandleTypeDef structure that contains * the configuration information for the specified ADC. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc) { 80034f8: b480 push {r7} 80034fa: b085 sub sp, #20 80034fc: af00 add r7, sp, #0 80034fe: 6078 str r0, [r7, #4] __IO uint32_t counter = 0U; 8003500: 2300 movs r3, #0 8003502: 60bb str r3, [r7, #8] /* Check the parameters */ assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); /* Process locked */ __HAL_LOCK(hadc); 8003504: 687b ldr r3, [r7, #4] 8003506: f893 303c ldrb.w r3, [r3, #60] ; 0x3c 800350a: 2b01 cmp r3, #1 800350c: d101 bne.n 8003512 800350e: 2302 movs r3, #2 8003510: e0a5 b.n 800365e 8003512: 687b ldr r3, [r7, #4] 8003514: 2201 movs r2, #1 8003516: f883 203c strb.w r2, [r3, #60] ; 0x3c /* Enable the ADC peripheral */ /* Check if ADC peripheral is disabled in order to enable it and wait during Tstab time the ADC's stabilization */ if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) 800351a: 687b ldr r3, [r7, #4] 800351c: 681b ldr r3, [r3, #0] 800351e: 689b ldr r3, [r3, #8] 8003520: f003 0301 and.w r3, r3, #1 8003524: 2b01 cmp r3, #1 8003526: d018 beq.n 800355a { /* Enable the Peripheral */ __HAL_ADC_ENABLE(hadc); 8003528: 687b ldr r3, [r7, #4] 800352a: 681b ldr r3, [r3, #0] 800352c: 689a ldr r2, [r3, #8] 800352e: 687b ldr r3, [r7, #4] 8003530: 681b ldr r3, [r3, #0] 8003532: f042 0201 orr.w r2, r2, #1 8003536: 609a str r2, [r3, #8] /* Delay for ADC stabilization time */ /* Compute number of CPU cycles to wait for */ counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000U)); 8003538: 4b4c ldr r3, [pc, #304] ; (800366c ) 800353a: 681b ldr r3, [r3, #0] 800353c: 4a4c ldr r2, [pc, #304] ; (8003670 ) 800353e: fba2 2303 umull r2, r3, r2, r3 8003542: 0c9a lsrs r2, r3, #18 8003544: 4613 mov r3, r2 8003546: 005b lsls r3, r3, #1 8003548: 4413 add r3, r2 800354a: 60bb str r3, [r7, #8] while(counter != 0U) 800354c: e002 b.n 8003554 { counter--; 800354e: 68bb ldr r3, [r7, #8] 8003550: 3b01 subs r3, #1 8003552: 60bb str r3, [r7, #8] while(counter != 0U) 8003554: 68bb ldr r3, [r7, #8] 8003556: 2b00 cmp r3, #0 8003558: d1f9 bne.n 800354e } } /* Start conversion if ADC is effectively enabled */ if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) 800355a: 687b ldr r3, [r7, #4] 800355c: 681b ldr r3, [r3, #0] 800355e: 689b ldr r3, [r3, #8] 8003560: f003 0301 and.w r3, r3, #1 8003564: 2b01 cmp r3, #1 8003566: d179 bne.n 800365c { /* Set ADC state */ /* - Clear state bitfield related to regular group conversion results */ /* - Set state bitfield related to regular group operation */ ADC_STATE_CLR_SET(hadc->State, 8003568: 687b ldr r3, [r7, #4] 800356a: 6c1b ldr r3, [r3, #64] ; 0x40 800356c: f423 63e0 bic.w r3, r3, #1792 ; 0x700 8003570: f023 0301 bic.w r3, r3, #1 8003574: f443 7280 orr.w r2, r3, #256 ; 0x100 8003578: 687b ldr r3, [r7, #4] 800357a: 641a str r2, [r3, #64] ; 0x40 HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, HAL_ADC_STATE_REG_BUSY); /* If conversions on group regular are also triggering group injected, */ /* update ADC state. */ if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) 800357c: 687b ldr r3, [r7, #4] 800357e: 681b ldr r3, [r3, #0] 8003580: 685b ldr r3, [r3, #4] 8003582: f403 6380 and.w r3, r3, #1024 ; 0x400 8003586: 2b00 cmp r3, #0 8003588: d007 beq.n 800359a { ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); 800358a: 687b ldr r3, [r7, #4] 800358c: 6c1b ldr r3, [r3, #64] ; 0x40 800358e: f423 5340 bic.w r3, r3, #12288 ; 0x3000 8003592: f443 5280 orr.w r2, r3, #4096 ; 0x1000 8003596: 687b ldr r3, [r7, #4] 8003598: 641a str r2, [r3, #64] ; 0x40 } /* State machine update: Check if an injected conversion is ongoing */ if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) 800359a: 687b ldr r3, [r7, #4] 800359c: 6c1b ldr r3, [r3, #64] ; 0x40 800359e: f403 5380 and.w r3, r3, #4096 ; 0x1000 80035a2: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 80035a6: d106 bne.n 80035b6 { /* Reset ADC error code fields related to conversions on group regular */ CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); 80035a8: 687b ldr r3, [r7, #4] 80035aa: 6c5b ldr r3, [r3, #68] ; 0x44 80035ac: f023 0206 bic.w r2, r3, #6 80035b0: 687b ldr r3, [r7, #4] 80035b2: 645a str r2, [r3, #68] ; 0x44 80035b4: e002 b.n 80035bc } else { /* Reset ADC all error code fields */ ADC_CLEAR_ERRORCODE(hadc); 80035b6: 687b ldr r3, [r7, #4] 80035b8: 2200 movs r2, #0 80035ba: 645a str r2, [r3, #68] ; 0x44 } /* Process unlocked */ /* Unlock before starting ADC conversions: in case of potential */ /* interruption, to let the process to ADC IRQ Handler. */ __HAL_UNLOCK(hadc); 80035bc: 687b ldr r3, [r7, #4] 80035be: 2200 movs r2, #0 80035c0: f883 203c strb.w r2, [r3, #60] ; 0x3c /* Pointer to the common control register to which is belonging hadc */ /* (Depending on STM32F4 product, there may be up to 3 ADCs and 1 common */ /* control register) */ tmpADC_Common = ADC_COMMON_REGISTER(hadc); 80035c4: 4b2b ldr r3, [pc, #172] ; (8003674 ) 80035c6: 60fb str r3, [r7, #12] /* Clear regular group conversion flag and overrun flag */ /* (To ensure of no unknown state from potential previous ADC operations) */ __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC | ADC_FLAG_OVR); 80035c8: 687b ldr r3, [r7, #4] 80035ca: 681b ldr r3, [r3, #0] 80035cc: f06f 0222 mvn.w r2, #34 ; 0x22 80035d0: 601a str r2, [r3, #0] /* Check if Multimode enabled */ if(HAL_IS_BIT_CLR(tmpADC_Common->CCR, ADC_CCR_MULTI)) 80035d2: 68fb ldr r3, [r7, #12] 80035d4: 685b ldr r3, [r3, #4] 80035d6: f003 031f and.w r3, r3, #31 80035da: 2b00 cmp r3, #0 80035dc: d12a bne.n 8003634 { #if defined(ADC2) && defined(ADC3) if((hadc->Instance == ADC1) || ((hadc->Instance == ADC2) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_0)) \ 80035de: 687b ldr r3, [r7, #4] 80035e0: 681b ldr r3, [r3, #0] 80035e2: 4a25 ldr r2, [pc, #148] ; (8003678 ) 80035e4: 4293 cmp r3, r2 80035e6: d015 beq.n 8003614 80035e8: 687b ldr r3, [r7, #4] 80035ea: 681b ldr r3, [r3, #0] 80035ec: 4a23 ldr r2, [pc, #140] ; (800367c ) 80035ee: 4293 cmp r3, r2 80035f0: d105 bne.n 80035fe 80035f2: 4b20 ldr r3, [pc, #128] ; (8003674 ) 80035f4: 685b ldr r3, [r3, #4] 80035f6: f003 031f and.w r3, r3, #31 80035fa: 2b00 cmp r3, #0 80035fc: d00a beq.n 8003614 || ((hadc->Instance == ADC3) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_4))) 80035fe: 687b ldr r3, [r7, #4] 8003600: 681b ldr r3, [r3, #0] 8003602: 4a1f ldr r2, [pc, #124] ; (8003680 ) 8003604: 4293 cmp r3, r2 8003606: d129 bne.n 800365c 8003608: 4b1a ldr r3, [pc, #104] ; (8003674 ) 800360a: 685b ldr r3, [r3, #4] 800360c: f003 031f and.w r3, r3, #31 8003610: 2b0f cmp r3, #15 8003612: d823 bhi.n 800365c { #endif /* ADC2 || ADC3 */ /* if no external trigger present enable software conversion of regular channels */ if((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) 8003614: 687b ldr r3, [r7, #4] 8003616: 681b ldr r3, [r3, #0] 8003618: 689b ldr r3, [r3, #8] 800361a: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 800361e: 2b00 cmp r3, #0 8003620: d11c bne.n 800365c { /* Enable the selected ADC software conversion for regular group */ hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; 8003622: 687b ldr r3, [r7, #4] 8003624: 681b ldr r3, [r3, #0] 8003626: 689a ldr r2, [r3, #8] 8003628: 687b ldr r3, [r7, #4] 800362a: 681b ldr r3, [r3, #0] 800362c: f042 4280 orr.w r2, r2, #1073741824 ; 0x40000000 8003630: 609a str r2, [r3, #8] 8003632: e013 b.n 800365c #endif /* ADC2 || ADC3 */ } else { /* if instance of handle correspond to ADC1 and no external trigger present enable software conversion of regular channels */ if((hadc->Instance == ADC1) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) 8003634: 687b ldr r3, [r7, #4] 8003636: 681b ldr r3, [r3, #0] 8003638: 4a0f ldr r2, [pc, #60] ; (8003678 ) 800363a: 4293 cmp r3, r2 800363c: d10e bne.n 800365c 800363e: 687b ldr r3, [r7, #4] 8003640: 681b ldr r3, [r3, #0] 8003642: 689b ldr r3, [r3, #8] 8003644: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 8003648: 2b00 cmp r3, #0 800364a: d107 bne.n 800365c { /* Enable the selected ADC software conversion for regular group */ hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; 800364c: 687b ldr r3, [r7, #4] 800364e: 681b ldr r3, [r3, #0] 8003650: 689a ldr r2, [r3, #8] 8003652: 687b ldr r3, [r7, #4] 8003654: 681b ldr r3, [r3, #0] 8003656: f042 4280 orr.w r2, r2, #1073741824 ; 0x40000000 800365a: 609a str r2, [r3, #8] } } } /* Return function status */ return HAL_OK; 800365c: 2300 movs r3, #0 } 800365e: 4618 mov r0, r3 8003660: 3714 adds r7, #20 8003662: 46bd mov sp, r7 8003664: f85d 7b04 ldr.w r7, [sp], #4 8003668: 4770 bx lr 800366a: bf00 nop 800366c: 20000004 .word 0x20000004 8003670: 431bde83 .word 0x431bde83 8003674: 40012300 .word 0x40012300 8003678: 40012000 .word 0x40012000 800367c: 40012100 .word 0x40012100 8003680: 40012200 .word 0x40012200 08003684 : * the configuration information for the specified ADC. * @param Timeout Timeout value in millisecond. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout) { 8003684: b580 push {r7, lr} 8003686: b084 sub sp, #16 8003688: af00 add r7, sp, #0 800368a: 6078 str r0, [r7, #4] 800368c: 6039 str r1, [r7, #0] uint32_t tickstart = 0U; 800368e: 2300 movs r3, #0 8003690: 60fb str r3, [r7, #12] /* each conversion: */ /* Particular case is ADC configured in DMA mode and ADC sequencer with */ /* several ranks and polling for end of each conversion. */ /* For code simplicity sake, this particular case is generalized to */ /* ADC configured in DMA mode and polling for end of each conversion. */ if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_EOCS) && 8003692: 687b ldr r3, [r7, #4] 8003694: 681b ldr r3, [r3, #0] 8003696: 689b ldr r3, [r3, #8] 8003698: f403 6380 and.w r3, r3, #1024 ; 0x400 800369c: f5b3 6f80 cmp.w r3, #1024 ; 0x400 80036a0: d113 bne.n 80036ca HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_DMA) ) 80036a2: 687b ldr r3, [r7, #4] 80036a4: 681b ldr r3, [r3, #0] 80036a6: 689b ldr r3, [r3, #8] 80036a8: f403 7380 and.w r3, r3, #256 ; 0x100 if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_EOCS) && 80036ac: f5b3 7f80 cmp.w r3, #256 ; 0x100 80036b0: d10b bne.n 80036ca { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); 80036b2: 687b ldr r3, [r7, #4] 80036b4: 6c1b ldr r3, [r3, #64] ; 0x40 80036b6: f043 0220 orr.w r2, r3, #32 80036ba: 687b ldr r3, [r7, #4] 80036bc: 641a str r2, [r3, #64] ; 0x40 /* Process unlocked */ __HAL_UNLOCK(hadc); 80036be: 687b ldr r3, [r7, #4] 80036c0: 2200 movs r2, #0 80036c2: f883 203c strb.w r2, [r3, #60] ; 0x3c return HAL_ERROR; 80036c6: 2301 movs r3, #1 80036c8: e05c b.n 8003784 } /* Get tick */ tickstart = HAL_GetTick(); 80036ca: f7ff fea3 bl 8003414 80036ce: 60f8 str r0, [r7, #12] /* Check End of conversion flag */ while(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))) 80036d0: e01a b.n 8003708 { /* Check if timeout is disabled (set to infinite wait) */ if(Timeout != HAL_MAX_DELAY) 80036d2: 683b ldr r3, [r7, #0] 80036d4: f1b3 3fff cmp.w r3, #4294967295 80036d8: d016 beq.n 8003708 { if((Timeout == 0U) || ((HAL_GetTick() - tickstart ) > Timeout)) 80036da: 683b ldr r3, [r7, #0] 80036dc: 2b00 cmp r3, #0 80036de: d007 beq.n 80036f0 80036e0: f7ff fe98 bl 8003414 80036e4: 4602 mov r2, r0 80036e6: 68fb ldr r3, [r7, #12] 80036e8: 1ad3 subs r3, r2, r3 80036ea: 683a ldr r2, [r7, #0] 80036ec: 429a cmp r2, r3 80036ee: d20b bcs.n 8003708 { /* Update ADC state machine to timeout */ SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT); 80036f0: 687b ldr r3, [r7, #4] 80036f2: 6c1b ldr r3, [r3, #64] ; 0x40 80036f4: f043 0204 orr.w r2, r3, #4 80036f8: 687b ldr r3, [r7, #4] 80036fa: 641a str r2, [r3, #64] ; 0x40 /* Process unlocked */ __HAL_UNLOCK(hadc); 80036fc: 687b ldr r3, [r7, #4] 80036fe: 2200 movs r2, #0 8003700: f883 203c strb.w r2, [r3, #60] ; 0x3c return HAL_TIMEOUT; 8003704: 2303 movs r3, #3 8003706: e03d b.n 8003784 while(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))) 8003708: 687b ldr r3, [r7, #4] 800370a: 681b ldr r3, [r3, #0] 800370c: 681b ldr r3, [r3, #0] 800370e: f003 0302 and.w r3, r3, #2 8003712: 2b02 cmp r3, #2 8003714: d1dd bne.n 80036d2 } } } /* Clear regular group conversion flag */ __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC); 8003716: 687b ldr r3, [r7, #4] 8003718: 681b ldr r3, [r3, #0] 800371a: f06f 0212 mvn.w r2, #18 800371e: 601a str r2, [r3, #0] /* Update ADC state machine */ SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); 8003720: 687b ldr r3, [r7, #4] 8003722: 6c1b ldr r3, [r3, #64] ; 0x40 8003724: f443 7200 orr.w r2, r3, #512 ; 0x200 8003728: 687b ldr r3, [r7, #4] 800372a: 641a str r2, [r3, #64] ; 0x40 /* by external trigger, continuous mode or scan sequence on going. */ /* Note: On STM32F4, there is no independent flag of end of sequence. */ /* The test of scan sequence on going is done either with scan */ /* sequence disabled or with end of conversion flag set to */ /* of end of sequence. */ if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && 800372c: 687b ldr r3, [r7, #4] 800372e: 681b ldr r3, [r3, #0] 8003730: 689b ldr r3, [r3, #8] 8003732: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 8003736: 2b00 cmp r3, #0 8003738: d123 bne.n 8003782 (hadc->Init.ContinuousConvMode == DISABLE) && 800373a: 687b ldr r3, [r7, #4] 800373c: 7e1b ldrb r3, [r3, #24] if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && 800373e: 2b00 cmp r3, #0 8003740: d11f bne.n 8003782 (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || 8003742: 687b ldr r3, [r7, #4] 8003744: 681b ldr r3, [r3, #0] 8003746: 6adb ldr r3, [r3, #44] ; 0x2c 8003748: f403 0370 and.w r3, r3, #15728640 ; 0xf00000 (hadc->Init.ContinuousConvMode == DISABLE) && 800374c: 2b00 cmp r3, #0 800374e: d006 beq.n 800375e HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) 8003750: 687b ldr r3, [r7, #4] 8003752: 681b ldr r3, [r3, #0] 8003754: 689b ldr r3, [r3, #8] 8003756: f403 6380 and.w r3, r3, #1024 ; 0x400 (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || 800375a: 2b00 cmp r3, #0 800375c: d111 bne.n 8003782 { /* Set ADC state */ CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); 800375e: 687b ldr r3, [r7, #4] 8003760: 6c1b ldr r3, [r3, #64] ; 0x40 8003762: f423 7280 bic.w r2, r3, #256 ; 0x100 8003766: 687b ldr r3, [r7, #4] 8003768: 641a str r2, [r3, #64] ; 0x40 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) 800376a: 687b ldr r3, [r7, #4] 800376c: 6c1b ldr r3, [r3, #64] ; 0x40 800376e: f403 5380 and.w r3, r3, #4096 ; 0x1000 8003772: 2b00 cmp r3, #0 8003774: d105 bne.n 8003782 { SET_BIT(hadc->State, HAL_ADC_STATE_READY); 8003776: 687b ldr r3, [r7, #4] 8003778: 6c1b ldr r3, [r3, #64] ; 0x40 800377a: f043 0201 orr.w r2, r3, #1 800377e: 687b ldr r3, [r7, #4] 8003780: 641a str r2, [r3, #64] ; 0x40 } } /* Return ADC state */ return HAL_OK; 8003782: 2300 movs r3, #0 } 8003784: 4618 mov r0, r3 8003786: 3710 adds r7, #16 8003788: 46bd mov sp, r7 800378a: bd80 pop {r7, pc} 0800378c : * @param hadc pointer to a ADC_HandleTypeDef structure that contains * the configuration information for the specified ADC. * @retval Converted value */ uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc) { 800378c: b480 push {r7} 800378e: b083 sub sp, #12 8003790: af00 add r7, sp, #0 8003792: 6078 str r0, [r7, #4] /* Return the selected ADC converted value */ return hadc->Instance->DR; 8003794: 687b ldr r3, [r7, #4] 8003796: 681b ldr r3, [r3, #0] 8003798: 6cdb ldr r3, [r3, #76] ; 0x4c } 800379a: 4618 mov r0, r3 800379c: 370c adds r7, #12 800379e: 46bd mov sp, r7 80037a0: f85d 7b04 ldr.w r7, [sp], #4 80037a4: 4770 bx lr ... 080037a8 : * the configuration information for the specified ADC. * @param sConfig ADC configuration structure. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig) { 80037a8: b480 push {r7} 80037aa: b085 sub sp, #20 80037ac: af00 add r7, sp, #0 80037ae: 6078 str r0, [r7, #4] 80037b0: 6039 str r1, [r7, #0] __IO uint32_t counter = 0U; 80037b2: 2300 movs r3, #0 80037b4: 60bb str r3, [r7, #8] assert_param(IS_ADC_CHANNEL(sConfig->Channel)); assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank)); assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime)); /* Process locked */ __HAL_LOCK(hadc); 80037b6: 687b ldr r3, [r7, #4] 80037b8: f893 303c ldrb.w r3, [r3, #60] ; 0x3c 80037bc: 2b01 cmp r3, #1 80037be: d101 bne.n 80037c4 80037c0: 2302 movs r3, #2 80037c2: e113 b.n 80039ec 80037c4: 687b ldr r3, [r7, #4] 80037c6: 2201 movs r2, #1 80037c8: f883 203c strb.w r2, [r3, #60] ; 0x3c /* if ADC_Channel_10 ... ADC_Channel_18 is selected */ if (sConfig->Channel > ADC_CHANNEL_9) 80037cc: 683b ldr r3, [r7, #0] 80037ce: 681b ldr r3, [r3, #0] 80037d0: 2b09 cmp r3, #9 80037d2: d925 bls.n 8003820 { /* Clear the old sample time */ hadc->Instance->SMPR1 &= ~ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->Channel); 80037d4: 687b ldr r3, [r7, #4] 80037d6: 681b ldr r3, [r3, #0] 80037d8: 68d9 ldr r1, [r3, #12] 80037da: 683b ldr r3, [r7, #0] 80037dc: 681b ldr r3, [r3, #0] 80037de: b29b uxth r3, r3 80037e0: 461a mov r2, r3 80037e2: 4613 mov r3, r2 80037e4: 005b lsls r3, r3, #1 80037e6: 4413 add r3, r2 80037e8: 3b1e subs r3, #30 80037ea: 2207 movs r2, #7 80037ec: fa02 f303 lsl.w r3, r2, r3 80037f0: 43da mvns r2, r3 80037f2: 687b ldr r3, [r7, #4] 80037f4: 681b ldr r3, [r3, #0] 80037f6: 400a ands r2, r1 80037f8: 60da str r2, [r3, #12] /* Set the new sample time */ hadc->Instance->SMPR1 |= ADC_SMPR1(sConfig->SamplingTime, sConfig->Channel); 80037fa: 687b ldr r3, [r7, #4] 80037fc: 681b ldr r3, [r3, #0] 80037fe: 68d9 ldr r1, [r3, #12] 8003800: 683b ldr r3, [r7, #0] 8003802: 689a ldr r2, [r3, #8] 8003804: 683b ldr r3, [r7, #0] 8003806: 681b ldr r3, [r3, #0] 8003808: b29b uxth r3, r3 800380a: 4618 mov r0, r3 800380c: 4603 mov r3, r0 800380e: 005b lsls r3, r3, #1 8003810: 4403 add r3, r0 8003812: 3b1e subs r3, #30 8003814: 409a lsls r2, r3 8003816: 687b ldr r3, [r7, #4] 8003818: 681b ldr r3, [r3, #0] 800381a: 430a orrs r2, r1 800381c: 60da str r2, [r3, #12] 800381e: e022 b.n 8003866 } else /* ADC_Channel include in ADC_Channel_[0..9] */ { /* Clear the old sample time */ hadc->Instance->SMPR2 &= ~ADC_SMPR2(ADC_SMPR2_SMP0, sConfig->Channel); 8003820: 687b ldr r3, [r7, #4] 8003822: 681b ldr r3, [r3, #0] 8003824: 6919 ldr r1, [r3, #16] 8003826: 683b ldr r3, [r7, #0] 8003828: 681b ldr r3, [r3, #0] 800382a: b29b uxth r3, r3 800382c: 461a mov r2, r3 800382e: 4613 mov r3, r2 8003830: 005b lsls r3, r3, #1 8003832: 4413 add r3, r2 8003834: 2207 movs r2, #7 8003836: fa02 f303 lsl.w r3, r2, r3 800383a: 43da mvns r2, r3 800383c: 687b ldr r3, [r7, #4] 800383e: 681b ldr r3, [r3, #0] 8003840: 400a ands r2, r1 8003842: 611a str r2, [r3, #16] /* Set the new sample time */ hadc->Instance->SMPR2 |= ADC_SMPR2(sConfig->SamplingTime, sConfig->Channel); 8003844: 687b ldr r3, [r7, #4] 8003846: 681b ldr r3, [r3, #0] 8003848: 6919 ldr r1, [r3, #16] 800384a: 683b ldr r3, [r7, #0] 800384c: 689a ldr r2, [r3, #8] 800384e: 683b ldr r3, [r7, #0] 8003850: 681b ldr r3, [r3, #0] 8003852: b29b uxth r3, r3 8003854: 4618 mov r0, r3 8003856: 4603 mov r3, r0 8003858: 005b lsls r3, r3, #1 800385a: 4403 add r3, r0 800385c: 409a lsls r2, r3 800385e: 687b ldr r3, [r7, #4] 8003860: 681b ldr r3, [r3, #0] 8003862: 430a orrs r2, r1 8003864: 611a str r2, [r3, #16] } /* For Rank 1 to 6 */ if (sConfig->Rank < 7U) 8003866: 683b ldr r3, [r7, #0] 8003868: 685b ldr r3, [r3, #4] 800386a: 2b06 cmp r3, #6 800386c: d824 bhi.n 80038b8 { /* Clear the old SQx bits for the selected rank */ hadc->Instance->SQR3 &= ~ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank); 800386e: 687b ldr r3, [r7, #4] 8003870: 681b ldr r3, [r3, #0] 8003872: 6b59 ldr r1, [r3, #52] ; 0x34 8003874: 683b ldr r3, [r7, #0] 8003876: 685a ldr r2, [r3, #4] 8003878: 4613 mov r3, r2 800387a: 009b lsls r3, r3, #2 800387c: 4413 add r3, r2 800387e: 3b05 subs r3, #5 8003880: 221f movs r2, #31 8003882: fa02 f303 lsl.w r3, r2, r3 8003886: 43da mvns r2, r3 8003888: 687b ldr r3, [r7, #4] 800388a: 681b ldr r3, [r3, #0] 800388c: 400a ands r2, r1 800388e: 635a str r2, [r3, #52] ; 0x34 /* Set the SQx bits for the selected rank */ hadc->Instance->SQR3 |= ADC_SQR3_RK(sConfig->Channel, sConfig->Rank); 8003890: 687b ldr r3, [r7, #4] 8003892: 681b ldr r3, [r3, #0] 8003894: 6b59 ldr r1, [r3, #52] ; 0x34 8003896: 683b ldr r3, [r7, #0] 8003898: 681b ldr r3, [r3, #0] 800389a: b29b uxth r3, r3 800389c: 4618 mov r0, r3 800389e: 683b ldr r3, [r7, #0] 80038a0: 685a ldr r2, [r3, #4] 80038a2: 4613 mov r3, r2 80038a4: 009b lsls r3, r3, #2 80038a6: 4413 add r3, r2 80038a8: 3b05 subs r3, #5 80038aa: fa00 f203 lsl.w r2, r0, r3 80038ae: 687b ldr r3, [r7, #4] 80038b0: 681b ldr r3, [r3, #0] 80038b2: 430a orrs r2, r1 80038b4: 635a str r2, [r3, #52] ; 0x34 80038b6: e04c b.n 8003952 } /* For Rank 7 to 12 */ else if (sConfig->Rank < 13U) 80038b8: 683b ldr r3, [r7, #0] 80038ba: 685b ldr r3, [r3, #4] 80038bc: 2b0c cmp r3, #12 80038be: d824 bhi.n 800390a { /* Clear the old SQx bits for the selected rank */ hadc->Instance->SQR2 &= ~ADC_SQR2_RK(ADC_SQR2_SQ7, sConfig->Rank); 80038c0: 687b ldr r3, [r7, #4] 80038c2: 681b ldr r3, [r3, #0] 80038c4: 6b19 ldr r1, [r3, #48] ; 0x30 80038c6: 683b ldr r3, [r7, #0] 80038c8: 685a ldr r2, [r3, #4] 80038ca: 4613 mov r3, r2 80038cc: 009b lsls r3, r3, #2 80038ce: 4413 add r3, r2 80038d0: 3b23 subs r3, #35 ; 0x23 80038d2: 221f movs r2, #31 80038d4: fa02 f303 lsl.w r3, r2, r3 80038d8: 43da mvns r2, r3 80038da: 687b ldr r3, [r7, #4] 80038dc: 681b ldr r3, [r3, #0] 80038de: 400a ands r2, r1 80038e0: 631a str r2, [r3, #48] ; 0x30 /* Set the SQx bits for the selected rank */ hadc->Instance->SQR2 |= ADC_SQR2_RK(sConfig->Channel, sConfig->Rank); 80038e2: 687b ldr r3, [r7, #4] 80038e4: 681b ldr r3, [r3, #0] 80038e6: 6b19 ldr r1, [r3, #48] ; 0x30 80038e8: 683b ldr r3, [r7, #0] 80038ea: 681b ldr r3, [r3, #0] 80038ec: b29b uxth r3, r3 80038ee: 4618 mov r0, r3 80038f0: 683b ldr r3, [r7, #0] 80038f2: 685a ldr r2, [r3, #4] 80038f4: 4613 mov r3, r2 80038f6: 009b lsls r3, r3, #2 80038f8: 4413 add r3, r2 80038fa: 3b23 subs r3, #35 ; 0x23 80038fc: fa00 f203 lsl.w r2, r0, r3 8003900: 687b ldr r3, [r7, #4] 8003902: 681b ldr r3, [r3, #0] 8003904: 430a orrs r2, r1 8003906: 631a str r2, [r3, #48] ; 0x30 8003908: e023 b.n 8003952 } /* For Rank 13 to 16 */ else { /* Clear the old SQx bits for the selected rank */ hadc->Instance->SQR1 &= ~ADC_SQR1_RK(ADC_SQR1_SQ13, sConfig->Rank); 800390a: 687b ldr r3, [r7, #4] 800390c: 681b ldr r3, [r3, #0] 800390e: 6ad9 ldr r1, [r3, #44] ; 0x2c 8003910: 683b ldr r3, [r7, #0] 8003912: 685a ldr r2, [r3, #4] 8003914: 4613 mov r3, r2 8003916: 009b lsls r3, r3, #2 8003918: 4413 add r3, r2 800391a: 3b41 subs r3, #65 ; 0x41 800391c: 221f movs r2, #31 800391e: fa02 f303 lsl.w r3, r2, r3 8003922: 43da mvns r2, r3 8003924: 687b ldr r3, [r7, #4] 8003926: 681b ldr r3, [r3, #0] 8003928: 400a ands r2, r1 800392a: 62da str r2, [r3, #44] ; 0x2c /* Set the SQx bits for the selected rank */ hadc->Instance->SQR1 |= ADC_SQR1_RK(sConfig->Channel, sConfig->Rank); 800392c: 687b ldr r3, [r7, #4] 800392e: 681b ldr r3, [r3, #0] 8003930: 6ad9 ldr r1, [r3, #44] ; 0x2c 8003932: 683b ldr r3, [r7, #0] 8003934: 681b ldr r3, [r3, #0] 8003936: b29b uxth r3, r3 8003938: 4618 mov r0, r3 800393a: 683b ldr r3, [r7, #0] 800393c: 685a ldr r2, [r3, #4] 800393e: 4613 mov r3, r2 8003940: 009b lsls r3, r3, #2 8003942: 4413 add r3, r2 8003944: 3b41 subs r3, #65 ; 0x41 8003946: fa00 f203 lsl.w r2, r0, r3 800394a: 687b ldr r3, [r7, #4] 800394c: 681b ldr r3, [r3, #0] 800394e: 430a orrs r2, r1 8003950: 62da str r2, [r3, #44] ; 0x2c } /* Pointer to the common control register to which is belonging hadc */ /* (Depending on STM32F4 product, there may be up to 3 ADCs and 1 common */ /* control register) */ tmpADC_Common = ADC_COMMON_REGISTER(hadc); 8003952: 4b29 ldr r3, [pc, #164] ; (80039f8 ) 8003954: 60fb str r3, [r7, #12] /* if ADC1 Channel_18 is selected for VBAT Channel ennable VBATE */ if ((hadc->Instance == ADC1) && (sConfig->Channel == ADC_CHANNEL_VBAT)) 8003956: 687b ldr r3, [r7, #4] 8003958: 681b ldr r3, [r3, #0] 800395a: 4a28 ldr r2, [pc, #160] ; (80039fc ) 800395c: 4293 cmp r3, r2 800395e: d10f bne.n 8003980 8003960: 683b ldr r3, [r7, #0] 8003962: 681b ldr r3, [r3, #0] 8003964: 2b12 cmp r3, #18 8003966: d10b bne.n 8003980 { /* Disable the TEMPSENSOR channel in case of using board with multiplixed ADC_CHANNEL_VBAT & ADC_CHANNEL_TEMPSENSOR*/ if ((uint16_t)ADC_CHANNEL_TEMPSENSOR == (uint16_t)ADC_CHANNEL_VBAT) { tmpADC_Common->CCR &= ~ADC_CCR_TSVREFE; 8003968: 68fb ldr r3, [r7, #12] 800396a: 685b ldr r3, [r3, #4] 800396c: f423 0200 bic.w r2, r3, #8388608 ; 0x800000 8003970: 68fb ldr r3, [r7, #12] 8003972: 605a str r2, [r3, #4] } /* Enable the VBAT channel*/ tmpADC_Common->CCR |= ADC_CCR_VBATE; 8003974: 68fb ldr r3, [r7, #12] 8003976: 685b ldr r3, [r3, #4] 8003978: f443 0280 orr.w r2, r3, #4194304 ; 0x400000 800397c: 68fb ldr r3, [r7, #12] 800397e: 605a str r2, [r3, #4] } /* if ADC1 Channel_16 or Channel_18 is selected for Temperature sensor or Channel_17 is selected for VREFINT enable TSVREFE */ if ((hadc->Instance == ADC1) && ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || (sConfig->Channel == ADC_CHANNEL_VREFINT))) 8003980: 687b ldr r3, [r7, #4] 8003982: 681b ldr r3, [r3, #0] 8003984: 4a1d ldr r2, [pc, #116] ; (80039fc ) 8003986: 4293 cmp r3, r2 8003988: d12b bne.n 80039e2 800398a: 683b ldr r3, [r7, #0] 800398c: 681b ldr r3, [r3, #0] 800398e: 4a1c ldr r2, [pc, #112] ; (8003a00 ) 8003990: 4293 cmp r3, r2 8003992: d003 beq.n 800399c 8003994: 683b ldr r3, [r7, #0] 8003996: 681b ldr r3, [r3, #0] 8003998: 2b11 cmp r3, #17 800399a: d122 bne.n 80039e2 { /* Disable the VBAT channel in case of using board with multiplixed ADC_CHANNEL_VBAT & ADC_CHANNEL_TEMPSENSOR*/ if ((uint16_t)ADC_CHANNEL_TEMPSENSOR == (uint16_t)ADC_CHANNEL_VBAT) { tmpADC_Common->CCR &= ~ADC_CCR_VBATE; 800399c: 68fb ldr r3, [r7, #12] 800399e: 685b ldr r3, [r3, #4] 80039a0: f423 0280 bic.w r2, r3, #4194304 ; 0x400000 80039a4: 68fb ldr r3, [r7, #12] 80039a6: 605a str r2, [r3, #4] } /* Enable the Temperature sensor and VREFINT channel*/ tmpADC_Common->CCR |= ADC_CCR_TSVREFE; 80039a8: 68fb ldr r3, [r7, #12] 80039aa: 685b ldr r3, [r3, #4] 80039ac: f443 0200 orr.w r2, r3, #8388608 ; 0x800000 80039b0: 68fb ldr r3, [r7, #12] 80039b2: 605a str r2, [r3, #4] if((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR)) 80039b4: 683b ldr r3, [r7, #0] 80039b6: 681b ldr r3, [r3, #0] 80039b8: 4a11 ldr r2, [pc, #68] ; (8003a00 ) 80039ba: 4293 cmp r3, r2 80039bc: d111 bne.n 80039e2 { /* Delay for temperature sensor stabilization time */ /* Compute number of CPU cycles to wait for */ counter = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000U)); 80039be: 4b11 ldr r3, [pc, #68] ; (8003a04 ) 80039c0: 681b ldr r3, [r3, #0] 80039c2: 4a11 ldr r2, [pc, #68] ; (8003a08 ) 80039c4: fba2 2303 umull r2, r3, r2, r3 80039c8: 0c9a lsrs r2, r3, #18 80039ca: 4613 mov r3, r2 80039cc: 009b lsls r3, r3, #2 80039ce: 4413 add r3, r2 80039d0: 005b lsls r3, r3, #1 80039d2: 60bb str r3, [r7, #8] while(counter != 0U) 80039d4: e002 b.n 80039dc { counter--; 80039d6: 68bb ldr r3, [r7, #8] 80039d8: 3b01 subs r3, #1 80039da: 60bb str r3, [r7, #8] while(counter != 0U) 80039dc: 68bb ldr r3, [r7, #8] 80039de: 2b00 cmp r3, #0 80039e0: d1f9 bne.n 80039d6 } } } /* Process unlocked */ __HAL_UNLOCK(hadc); 80039e2: 687b ldr r3, [r7, #4] 80039e4: 2200 movs r2, #0 80039e6: f883 203c strb.w r2, [r3, #60] ; 0x3c /* Return function status */ return HAL_OK; 80039ea: 2300 movs r3, #0 } 80039ec: 4618 mov r0, r3 80039ee: 3714 adds r7, #20 80039f0: 46bd mov sp, r7 80039f2: f85d 7b04 ldr.w r7, [sp], #4 80039f6: 4770 bx lr 80039f8: 40012300 .word 0x40012300 80039fc: 40012000 .word 0x40012000 8003a00: 10000012 .word 0x10000012 8003a04: 20000004 .word 0x20000004 8003a08: 431bde83 .word 0x431bde83 08003a0c : * @param hadc pointer to a ADC_HandleTypeDef structure that contains * the configuration information for the specified ADC. * @retval None */ static void ADC_Init(ADC_HandleTypeDef* hadc) { 8003a0c: b480 push {r7} 8003a0e: b085 sub sp, #20 8003a10: af00 add r7, sp, #0 8003a12: 6078 str r0, [r7, #4] /* Set ADC parameters */ /* Pointer to the common control register to which is belonging hadc */ /* (Depending on STM32F4 product, there may be up to 3 ADCs and 1 common */ /* control register) */ tmpADC_Common = ADC_COMMON_REGISTER(hadc); 8003a14: 4b79 ldr r3, [pc, #484] ; (8003bfc ) 8003a16: 60fb str r3, [r7, #12] /* Set the ADC clock prescaler */ tmpADC_Common->CCR &= ~(ADC_CCR_ADCPRE); 8003a18: 68fb ldr r3, [r7, #12] 8003a1a: 685b ldr r3, [r3, #4] 8003a1c: f423 3240 bic.w r2, r3, #196608 ; 0x30000 8003a20: 68fb ldr r3, [r7, #12] 8003a22: 605a str r2, [r3, #4] tmpADC_Common->CCR |= hadc->Init.ClockPrescaler; 8003a24: 68fb ldr r3, [r7, #12] 8003a26: 685a ldr r2, [r3, #4] 8003a28: 687b ldr r3, [r7, #4] 8003a2a: 685b ldr r3, [r3, #4] 8003a2c: 431a orrs r2, r3 8003a2e: 68fb ldr r3, [r7, #12] 8003a30: 605a str r2, [r3, #4] /* Set ADC scan mode */ hadc->Instance->CR1 &= ~(ADC_CR1_SCAN); 8003a32: 687b ldr r3, [r7, #4] 8003a34: 681b ldr r3, [r3, #0] 8003a36: 685a ldr r2, [r3, #4] 8003a38: 687b ldr r3, [r7, #4] 8003a3a: 681b ldr r3, [r3, #0] 8003a3c: f422 7280 bic.w r2, r2, #256 ; 0x100 8003a40: 605a str r2, [r3, #4] hadc->Instance->CR1 |= ADC_CR1_SCANCONV(hadc->Init.ScanConvMode); 8003a42: 687b ldr r3, [r7, #4] 8003a44: 681b ldr r3, [r3, #0] 8003a46: 6859 ldr r1, [r3, #4] 8003a48: 687b ldr r3, [r7, #4] 8003a4a: 691b ldr r3, [r3, #16] 8003a4c: 021a lsls r2, r3, #8 8003a4e: 687b ldr r3, [r7, #4] 8003a50: 681b ldr r3, [r3, #0] 8003a52: 430a orrs r2, r1 8003a54: 605a str r2, [r3, #4] /* Set ADC resolution */ hadc->Instance->CR1 &= ~(ADC_CR1_RES); 8003a56: 687b ldr r3, [r7, #4] 8003a58: 681b ldr r3, [r3, #0] 8003a5a: 685a ldr r2, [r3, #4] 8003a5c: 687b ldr r3, [r7, #4] 8003a5e: 681b ldr r3, [r3, #0] 8003a60: f022 7240 bic.w r2, r2, #50331648 ; 0x3000000 8003a64: 605a str r2, [r3, #4] hadc->Instance->CR1 |= hadc->Init.Resolution; 8003a66: 687b ldr r3, [r7, #4] 8003a68: 681b ldr r3, [r3, #0] 8003a6a: 6859 ldr r1, [r3, #4] 8003a6c: 687b ldr r3, [r7, #4] 8003a6e: 689a ldr r2, [r3, #8] 8003a70: 687b ldr r3, [r7, #4] 8003a72: 681b ldr r3, [r3, #0] 8003a74: 430a orrs r2, r1 8003a76: 605a str r2, [r3, #4] /* Set ADC data alignment */ hadc->Instance->CR2 &= ~(ADC_CR2_ALIGN); 8003a78: 687b ldr r3, [r7, #4] 8003a7a: 681b ldr r3, [r3, #0] 8003a7c: 689a ldr r2, [r3, #8] 8003a7e: 687b ldr r3, [r7, #4] 8003a80: 681b ldr r3, [r3, #0] 8003a82: f422 6200 bic.w r2, r2, #2048 ; 0x800 8003a86: 609a str r2, [r3, #8] hadc->Instance->CR2 |= hadc->Init.DataAlign; 8003a88: 687b ldr r3, [r7, #4] 8003a8a: 681b ldr r3, [r3, #0] 8003a8c: 6899 ldr r1, [r3, #8] 8003a8e: 687b ldr r3, [r7, #4] 8003a90: 68da ldr r2, [r3, #12] 8003a92: 687b ldr r3, [r7, #4] 8003a94: 681b ldr r3, [r3, #0] 8003a96: 430a orrs r2, r1 8003a98: 609a str r2, [r3, #8] /* Enable external trigger if trigger selection is different of software */ /* start. */ /* Note: This configuration keeps the hardware feature of parameter */ /* ExternalTrigConvEdge "trigger edge none" equivalent to */ /* software start. */ if(hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) 8003a9a: 687b ldr r3, [r7, #4] 8003a9c: 6a9b ldr r3, [r3, #40] ; 0x28 8003a9e: 4a58 ldr r2, [pc, #352] ; (8003c00 ) 8003aa0: 4293 cmp r3, r2 8003aa2: d022 beq.n 8003aea { /* Select external trigger to start conversion */ hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL); 8003aa4: 687b ldr r3, [r7, #4] 8003aa6: 681b ldr r3, [r3, #0] 8003aa8: 689a ldr r2, [r3, #8] 8003aaa: 687b ldr r3, [r7, #4] 8003aac: 681b ldr r3, [r3, #0] 8003aae: f022 6270 bic.w r2, r2, #251658240 ; 0xf000000 8003ab2: 609a str r2, [r3, #8] hadc->Instance->CR2 |= hadc->Init.ExternalTrigConv; 8003ab4: 687b ldr r3, [r7, #4] 8003ab6: 681b ldr r3, [r3, #0] 8003ab8: 6899 ldr r1, [r3, #8] 8003aba: 687b ldr r3, [r7, #4] 8003abc: 6a9a ldr r2, [r3, #40] ; 0x28 8003abe: 687b ldr r3, [r7, #4] 8003ac0: 681b ldr r3, [r3, #0] 8003ac2: 430a orrs r2, r1 8003ac4: 609a str r2, [r3, #8] /* Select external trigger polarity */ hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); 8003ac6: 687b ldr r3, [r7, #4] 8003ac8: 681b ldr r3, [r3, #0] 8003aca: 689a ldr r2, [r3, #8] 8003acc: 687b ldr r3, [r7, #4] 8003ace: 681b ldr r3, [r3, #0] 8003ad0: f022 5240 bic.w r2, r2, #805306368 ; 0x30000000 8003ad4: 609a str r2, [r3, #8] hadc->Instance->CR2 |= hadc->Init.ExternalTrigConvEdge; 8003ad6: 687b ldr r3, [r7, #4] 8003ad8: 681b ldr r3, [r3, #0] 8003ada: 6899 ldr r1, [r3, #8] 8003adc: 687b ldr r3, [r7, #4] 8003ade: 6ada ldr r2, [r3, #44] ; 0x2c 8003ae0: 687b ldr r3, [r7, #4] 8003ae2: 681b ldr r3, [r3, #0] 8003ae4: 430a orrs r2, r1 8003ae6: 609a str r2, [r3, #8] 8003ae8: e00f b.n 8003b0a } else { /* Reset the external trigger */ hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL); 8003aea: 687b ldr r3, [r7, #4] 8003aec: 681b ldr r3, [r3, #0] 8003aee: 689a ldr r2, [r3, #8] 8003af0: 687b ldr r3, [r7, #4] 8003af2: 681b ldr r3, [r3, #0] 8003af4: f022 6270 bic.w r2, r2, #251658240 ; 0xf000000 8003af8: 609a str r2, [r3, #8] hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); 8003afa: 687b ldr r3, [r7, #4] 8003afc: 681b ldr r3, [r3, #0] 8003afe: 689a ldr r2, [r3, #8] 8003b00: 687b ldr r3, [r7, #4] 8003b02: 681b ldr r3, [r3, #0] 8003b04: f022 5240 bic.w r2, r2, #805306368 ; 0x30000000 8003b08: 609a str r2, [r3, #8] } /* Enable or disable ADC continuous conversion mode */ hadc->Instance->CR2 &= ~(ADC_CR2_CONT); 8003b0a: 687b ldr r3, [r7, #4] 8003b0c: 681b ldr r3, [r3, #0] 8003b0e: 689a ldr r2, [r3, #8] 8003b10: 687b ldr r3, [r7, #4] 8003b12: 681b ldr r3, [r3, #0] 8003b14: f022 0202 bic.w r2, r2, #2 8003b18: 609a str r2, [r3, #8] hadc->Instance->CR2 |= ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode); 8003b1a: 687b ldr r3, [r7, #4] 8003b1c: 681b ldr r3, [r3, #0] 8003b1e: 6899 ldr r1, [r3, #8] 8003b20: 687b ldr r3, [r7, #4] 8003b22: 7e1b ldrb r3, [r3, #24] 8003b24: 005a lsls r2, r3, #1 8003b26: 687b ldr r3, [r7, #4] 8003b28: 681b ldr r3, [r3, #0] 8003b2a: 430a orrs r2, r1 8003b2c: 609a str r2, [r3, #8] if(hadc->Init.DiscontinuousConvMode != DISABLE) 8003b2e: 687b ldr r3, [r7, #4] 8003b30: f893 3020 ldrb.w r3, [r3, #32] 8003b34: 2b00 cmp r3, #0 8003b36: d01b beq.n 8003b70 { assert_param(IS_ADC_REGULAR_DISC_NUMBER(hadc->Init.NbrOfDiscConversion)); /* Enable the selected ADC regular discontinuous mode */ hadc->Instance->CR1 |= (uint32_t)ADC_CR1_DISCEN; 8003b38: 687b ldr r3, [r7, #4] 8003b3a: 681b ldr r3, [r3, #0] 8003b3c: 685a ldr r2, [r3, #4] 8003b3e: 687b ldr r3, [r7, #4] 8003b40: 681b ldr r3, [r3, #0] 8003b42: f442 6200 orr.w r2, r2, #2048 ; 0x800 8003b46: 605a str r2, [r3, #4] /* Set the number of channels to be converted in discontinuous mode */ hadc->Instance->CR1 &= ~(ADC_CR1_DISCNUM); 8003b48: 687b ldr r3, [r7, #4] 8003b4a: 681b ldr r3, [r3, #0] 8003b4c: 685a ldr r2, [r3, #4] 8003b4e: 687b ldr r3, [r7, #4] 8003b50: 681b ldr r3, [r3, #0] 8003b52: f422 4260 bic.w r2, r2, #57344 ; 0xe000 8003b56: 605a str r2, [r3, #4] hadc->Instance->CR1 |= ADC_CR1_DISCONTINUOUS(hadc->Init.NbrOfDiscConversion); 8003b58: 687b ldr r3, [r7, #4] 8003b5a: 681b ldr r3, [r3, #0] 8003b5c: 6859 ldr r1, [r3, #4] 8003b5e: 687b ldr r3, [r7, #4] 8003b60: 6a5b ldr r3, [r3, #36] ; 0x24 8003b62: 3b01 subs r3, #1 8003b64: 035a lsls r2, r3, #13 8003b66: 687b ldr r3, [r7, #4] 8003b68: 681b ldr r3, [r3, #0] 8003b6a: 430a orrs r2, r1 8003b6c: 605a str r2, [r3, #4] 8003b6e: e007 b.n 8003b80 } else { /* Disable the selected ADC regular discontinuous mode */ hadc->Instance->CR1 &= ~(ADC_CR1_DISCEN); 8003b70: 687b ldr r3, [r7, #4] 8003b72: 681b ldr r3, [r3, #0] 8003b74: 685a ldr r2, [r3, #4] 8003b76: 687b ldr r3, [r7, #4] 8003b78: 681b ldr r3, [r3, #0] 8003b7a: f422 6200 bic.w r2, r2, #2048 ; 0x800 8003b7e: 605a str r2, [r3, #4] } /* Set ADC number of conversion */ hadc->Instance->SQR1 &= ~(ADC_SQR1_L); 8003b80: 687b ldr r3, [r7, #4] 8003b82: 681b ldr r3, [r3, #0] 8003b84: 6ada ldr r2, [r3, #44] ; 0x2c 8003b86: 687b ldr r3, [r7, #4] 8003b88: 681b ldr r3, [r3, #0] 8003b8a: f422 0270 bic.w r2, r2, #15728640 ; 0xf00000 8003b8e: 62da str r2, [r3, #44] ; 0x2c hadc->Instance->SQR1 |= ADC_SQR1(hadc->Init.NbrOfConversion); 8003b90: 687b ldr r3, [r7, #4] 8003b92: 681b ldr r3, [r3, #0] 8003b94: 6ad9 ldr r1, [r3, #44] ; 0x2c 8003b96: 687b ldr r3, [r7, #4] 8003b98: 69db ldr r3, [r3, #28] 8003b9a: 3b01 subs r3, #1 8003b9c: 051a lsls r2, r3, #20 8003b9e: 687b ldr r3, [r7, #4] 8003ba0: 681b ldr r3, [r3, #0] 8003ba2: 430a orrs r2, r1 8003ba4: 62da str r2, [r3, #44] ; 0x2c /* Enable or disable ADC DMA continuous request */ hadc->Instance->CR2 &= ~(ADC_CR2_DDS); 8003ba6: 687b ldr r3, [r7, #4] 8003ba8: 681b ldr r3, [r3, #0] 8003baa: 689a ldr r2, [r3, #8] 8003bac: 687b ldr r3, [r7, #4] 8003bae: 681b ldr r3, [r3, #0] 8003bb0: f422 7200 bic.w r2, r2, #512 ; 0x200 8003bb4: 609a str r2, [r3, #8] hadc->Instance->CR2 |= ADC_CR2_DMAContReq((uint32_t)hadc->Init.DMAContinuousRequests); 8003bb6: 687b ldr r3, [r7, #4] 8003bb8: 681b ldr r3, [r3, #0] 8003bba: 6899 ldr r1, [r3, #8] 8003bbc: 687b ldr r3, [r7, #4] 8003bbe: f893 3030 ldrb.w r3, [r3, #48] ; 0x30 8003bc2: 025a lsls r2, r3, #9 8003bc4: 687b ldr r3, [r7, #4] 8003bc6: 681b ldr r3, [r3, #0] 8003bc8: 430a orrs r2, r1 8003bca: 609a str r2, [r3, #8] /* Enable or disable ADC end of conversion selection */ hadc->Instance->CR2 &= ~(ADC_CR2_EOCS); 8003bcc: 687b ldr r3, [r7, #4] 8003bce: 681b ldr r3, [r3, #0] 8003bd0: 689a ldr r2, [r3, #8] 8003bd2: 687b ldr r3, [r7, #4] 8003bd4: 681b ldr r3, [r3, #0] 8003bd6: f422 6280 bic.w r2, r2, #1024 ; 0x400 8003bda: 609a str r2, [r3, #8] hadc->Instance->CR2 |= ADC_CR2_EOCSelection(hadc->Init.EOCSelection); 8003bdc: 687b ldr r3, [r7, #4] 8003bde: 681b ldr r3, [r3, #0] 8003be0: 6899 ldr r1, [r3, #8] 8003be2: 687b ldr r3, [r7, #4] 8003be4: 695b ldr r3, [r3, #20] 8003be6: 029a lsls r2, r3, #10 8003be8: 687b ldr r3, [r7, #4] 8003bea: 681b ldr r3, [r3, #0] 8003bec: 430a orrs r2, r1 8003bee: 609a str r2, [r3, #8] } 8003bf0: bf00 nop 8003bf2: 3714 adds r7, #20 8003bf4: 46bd mov sp, r7 8003bf6: f85d 7b04 ldr.w r7, [sp], #4 8003bfa: 4770 bx lr 8003bfc: 40012300 .word 0x40012300 8003c00: 0f000001 .word 0x0f000001 08003c04 <__NVIC_SetPriorityGrouping>: In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. \param [in] PriorityGroup Priority grouping field. */ __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { 8003c04: b480 push {r7} 8003c06: b085 sub sp, #20 8003c08: af00 add r7, sp, #0 8003c0a: 6078 str r0, [r7, #4] uint32_t reg_value; uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ 8003c0c: 687b ldr r3, [r7, #4] 8003c0e: f003 0307 and.w r3, r3, #7 8003c12: 60fb str r3, [r7, #12] reg_value = SCB->AIRCR; /* read old register configuration */ 8003c14: 4b0c ldr r3, [pc, #48] ; (8003c48 <__NVIC_SetPriorityGrouping+0x44>) 8003c16: 68db ldr r3, [r3, #12] 8003c18: 60bb str r3, [r7, #8] reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ 8003c1a: 68ba ldr r2, [r7, #8] 8003c1c: f64f 03ff movw r3, #63743 ; 0xf8ff 8003c20: 4013 ands r3, r2 8003c22: 60bb str r3, [r7, #8] reg_value = (reg_value | ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ 8003c24: 68fb ldr r3, [r7, #12] 8003c26: 021a lsls r2, r3, #8 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | 8003c28: 68bb ldr r3, [r7, #8] 8003c2a: 4313 orrs r3, r2 reg_value = (reg_value | 8003c2c: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000 8003c30: f443 3300 orr.w r3, r3, #131072 ; 0x20000 8003c34: 60bb str r3, [r7, #8] SCB->AIRCR = reg_value; 8003c36: 4a04 ldr r2, [pc, #16] ; (8003c48 <__NVIC_SetPriorityGrouping+0x44>) 8003c38: 68bb ldr r3, [r7, #8] 8003c3a: 60d3 str r3, [r2, #12] } 8003c3c: bf00 nop 8003c3e: 3714 adds r7, #20 8003c40: 46bd mov sp, r7 8003c42: f85d 7b04 ldr.w r7, [sp], #4 8003c46: 4770 bx lr 8003c48: e000ed00 .word 0xe000ed00 08003c4c <__NVIC_GetPriorityGrouping>: \brief Get Priority Grouping \details Reads the priority grouping field from the NVIC Interrupt Controller. \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). */ __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) { 8003c4c: b480 push {r7} 8003c4e: af00 add r7, sp, #0 return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); 8003c50: 4b04 ldr r3, [pc, #16] ; (8003c64 <__NVIC_GetPriorityGrouping+0x18>) 8003c52: 68db ldr r3, [r3, #12] 8003c54: 0a1b lsrs r3, r3, #8 8003c56: f003 0307 and.w r3, r3, #7 } 8003c5a: 4618 mov r0, r3 8003c5c: 46bd mov sp, r7 8003c5e: f85d 7b04 ldr.w r7, [sp], #4 8003c62: 4770 bx lr 8003c64: e000ed00 .word 0xe000ed00 08003c68 <__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) { 8003c68: b480 push {r7} 8003c6a: b083 sub sp, #12 8003c6c: af00 add r7, sp, #0 8003c6e: 4603 mov r3, r0 8003c70: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) 8003c72: f997 3007 ldrsb.w r3, [r7, #7] 8003c76: 2b00 cmp r3, #0 8003c78: db0b blt.n 8003c92 <__NVIC_EnableIRQ+0x2a> { NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 8003c7a: 79fb ldrb r3, [r7, #7] 8003c7c: f003 021f and.w r2, r3, #31 8003c80: 4907 ldr r1, [pc, #28] ; (8003ca0 <__NVIC_EnableIRQ+0x38>) 8003c82: f997 3007 ldrsb.w r3, [r7, #7] 8003c86: 095b lsrs r3, r3, #5 8003c88: 2001 movs r0, #1 8003c8a: fa00 f202 lsl.w r2, r0, r2 8003c8e: f841 2023 str.w r2, [r1, r3, lsl #2] } } 8003c92: bf00 nop 8003c94: 370c adds r7, #12 8003c96: 46bd mov sp, r7 8003c98: f85d 7b04 ldr.w r7, [sp], #4 8003c9c: 4770 bx lr 8003c9e: bf00 nop 8003ca0: e000e100 .word 0xe000e100 08003ca4 <__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) { 8003ca4: b480 push {r7} 8003ca6: b083 sub sp, #12 8003ca8: af00 add r7, sp, #0 8003caa: 4603 mov r3, r0 8003cac: 6039 str r1, [r7, #0] 8003cae: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) 8003cb0: f997 3007 ldrsb.w r3, [r7, #7] 8003cb4: 2b00 cmp r3, #0 8003cb6: db0a blt.n 8003cce <__NVIC_SetPriority+0x2a> { NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); 8003cb8: 683b ldr r3, [r7, #0] 8003cba: b2da uxtb r2, r3 8003cbc: 490c ldr r1, [pc, #48] ; (8003cf0 <__NVIC_SetPriority+0x4c>) 8003cbe: f997 3007 ldrsb.w r3, [r7, #7] 8003cc2: 0112 lsls r2, r2, #4 8003cc4: b2d2 uxtb r2, r2 8003cc6: 440b add r3, r1 8003cc8: f883 2300 strb.w r2, [r3, #768] ; 0x300 } else { SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); } } 8003ccc: e00a b.n 8003ce4 <__NVIC_SetPriority+0x40> SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); 8003cce: 683b ldr r3, [r7, #0] 8003cd0: b2da uxtb r2, r3 8003cd2: 4908 ldr r1, [pc, #32] ; (8003cf4 <__NVIC_SetPriority+0x50>) 8003cd4: 79fb ldrb r3, [r7, #7] 8003cd6: f003 030f and.w r3, r3, #15 8003cda: 3b04 subs r3, #4 8003cdc: 0112 lsls r2, r2, #4 8003cde: b2d2 uxtb r2, r2 8003ce0: 440b add r3, r1 8003ce2: 761a strb r2, [r3, #24] } 8003ce4: bf00 nop 8003ce6: 370c adds r7, #12 8003ce8: 46bd mov sp, r7 8003cea: f85d 7b04 ldr.w r7, [sp], #4 8003cee: 4770 bx lr 8003cf0: e000e100 .word 0xe000e100 8003cf4: e000ed00 .word 0xe000ed00 08003cf8 : \param [in] PreemptPriority Preemptive priority value (starting from 0). \param [in] SubPriority Subpriority value (starting from 0). \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). */ __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) { 8003cf8: b480 push {r7} 8003cfa: b089 sub sp, #36 ; 0x24 8003cfc: af00 add r7, sp, #0 8003cfe: 60f8 str r0, [r7, #12] 8003d00: 60b9 str r1, [r7, #8] 8003d02: 607a str r2, [r7, #4] uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ 8003d04: 68fb ldr r3, [r7, #12] 8003d06: f003 0307 and.w r3, r3, #7 8003d0a: 61fb str r3, [r7, #28] uint32_t PreemptPriorityBits; uint32_t SubPriorityBits; PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); 8003d0c: 69fb ldr r3, [r7, #28] 8003d0e: f1c3 0307 rsb r3, r3, #7 8003d12: 2b04 cmp r3, #4 8003d14: bf28 it cs 8003d16: 2304 movcs r3, #4 8003d18: 61bb str r3, [r7, #24] SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); 8003d1a: 69fb ldr r3, [r7, #28] 8003d1c: 3304 adds r3, #4 8003d1e: 2b06 cmp r3, #6 8003d20: d902 bls.n 8003d28 8003d22: 69fb ldr r3, [r7, #28] 8003d24: 3b03 subs r3, #3 8003d26: e000 b.n 8003d2a 8003d28: 2300 movs r3, #0 8003d2a: 617b str r3, [r7, #20] return ( ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | 8003d2c: f04f 32ff mov.w r2, #4294967295 8003d30: 69bb ldr r3, [r7, #24] 8003d32: fa02 f303 lsl.w r3, r2, r3 8003d36: 43da mvns r2, r3 8003d38: 68bb ldr r3, [r7, #8] 8003d3a: 401a ands r2, r3 8003d3c: 697b ldr r3, [r7, #20] 8003d3e: 409a lsls r2, r3 ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) 8003d40: f04f 31ff mov.w r1, #4294967295 8003d44: 697b ldr r3, [r7, #20] 8003d46: fa01 f303 lsl.w r3, r1, r3 8003d4a: 43d9 mvns r1, r3 8003d4c: 687b ldr r3, [r7, #4] 8003d4e: 400b ands r3, r1 ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | 8003d50: 4313 orrs r3, r2 ); } 8003d52: 4618 mov r0, r3 8003d54: 3724 adds r7, #36 ; 0x24 8003d56: 46bd mov sp, r7 8003d58: f85d 7b04 ldr.w r7, [sp], #4 8003d5c: 4770 bx lr ... 08003d60 : \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) { 8003d60: b580 push {r7, lr} 8003d62: b082 sub sp, #8 8003d64: af00 add r7, sp, #0 8003d66: 6078 str r0, [r7, #4] if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) 8003d68: 687b ldr r3, [r7, #4] 8003d6a: 3b01 subs r3, #1 8003d6c: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 8003d70: d301 bcc.n 8003d76 { return (1UL); /* Reload value impossible */ 8003d72: 2301 movs r3, #1 8003d74: e00f b.n 8003d96 } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ 8003d76: 4a0a ldr r2, [pc, #40] ; (8003da0 ) 8003d78: 687b ldr r3, [r7, #4] 8003d7a: 3b01 subs r3, #1 8003d7c: 6053 str r3, [r2, #4] NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ 8003d7e: 210f movs r1, #15 8003d80: f04f 30ff mov.w r0, #4294967295 8003d84: f7ff ff8e bl 8003ca4 <__NVIC_SetPriority> SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ 8003d88: 4b05 ldr r3, [pc, #20] ; (8003da0 ) 8003d8a: 2200 movs r2, #0 8003d8c: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | 8003d8e: 4b04 ldr r3, [pc, #16] ; (8003da0 ) 8003d90: 2207 movs r2, #7 8003d92: 601a str r2, [r3, #0] SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */ 8003d94: 2300 movs r3, #0 } 8003d96: 4618 mov r0, r3 8003d98: 3708 adds r7, #8 8003d9a: 46bd mov sp, r7 8003d9c: bd80 pop {r7, pc} 8003d9e: bf00 nop 8003da0: e000e010 .word 0xe000e010 08003da4 : * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. * The pending IRQ priority will be managed only by the subpriority. * @retval None */ void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { 8003da4: b580 push {r7, lr} 8003da6: b082 sub sp, #8 8003da8: af00 add r7, sp, #0 8003daa: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ NVIC_SetPriorityGrouping(PriorityGroup); 8003dac: 6878 ldr r0, [r7, #4] 8003dae: f7ff ff29 bl 8003c04 <__NVIC_SetPriorityGrouping> } 8003db2: bf00 nop 8003db4: 3708 adds r7, #8 8003db6: 46bd mov sp, r7 8003db8: bd80 pop {r7, pc} 08003dba : * This parameter can be a value between 0 and 15 * A lower priority value indicates a higher priority. * @retval None */ void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) { 8003dba: b580 push {r7, lr} 8003dbc: b086 sub sp, #24 8003dbe: af00 add r7, sp, #0 8003dc0: 4603 mov r3, r0 8003dc2: 60b9 str r1, [r7, #8] 8003dc4: 607a str r2, [r7, #4] 8003dc6: 73fb strb r3, [r7, #15] uint32_t prioritygroup = 0x00U; 8003dc8: 2300 movs r3, #0 8003dca: 617b str r3, [r7, #20] /* Check the parameters */ assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); prioritygroup = NVIC_GetPriorityGrouping(); 8003dcc: f7ff ff3e bl 8003c4c <__NVIC_GetPriorityGrouping> 8003dd0: 6178 str r0, [r7, #20] NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); 8003dd2: 687a ldr r2, [r7, #4] 8003dd4: 68b9 ldr r1, [r7, #8] 8003dd6: 6978 ldr r0, [r7, #20] 8003dd8: f7ff ff8e bl 8003cf8 8003ddc: 4602 mov r2, r0 8003dde: f997 300f ldrsb.w r3, [r7, #15] 8003de2: 4611 mov r1, r2 8003de4: 4618 mov r0, r3 8003de6: f7ff ff5d bl 8003ca4 <__NVIC_SetPriority> } 8003dea: bf00 nop 8003dec: 3718 adds r7, #24 8003dee: 46bd mov sp, r7 8003df0: bd80 pop {r7, pc} 08003df2 : * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f4xxxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { 8003df2: b580 push {r7, lr} 8003df4: b082 sub sp, #8 8003df6: af00 add r7, sp, #0 8003df8: 4603 mov r3, r0 8003dfa: 71fb strb r3, [r7, #7] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); 8003dfc: f997 3007 ldrsb.w r3, [r7, #7] 8003e00: 4618 mov r0, r3 8003e02: f7ff ff31 bl 8003c68 <__NVIC_EnableIRQ> } 8003e06: bf00 nop 8003e08: 3708 adds r7, #8 8003e0a: 46bd mov sp, r7 8003e0c: bd80 pop {r7, pc} 08003e0e : * @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) { 8003e0e: b580 push {r7, lr} 8003e10: b082 sub sp, #8 8003e12: af00 add r7, sp, #0 8003e14: 6078 str r0, [r7, #4] return SysTick_Config(TicksNumb); 8003e16: 6878 ldr r0, [r7, #4] 8003e18: f7ff ffa2 bl 8003d60 8003e1c: 4603 mov r3, r0 } 8003e1e: 4618 mov r0, r3 8003e20: 3708 adds r7, #8 8003e22: 46bd mov sp, r7 8003e24: bd80 pop {r7, pc} 08003e26 : * @param hdma pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) { 8003e26: b480 push {r7} 8003e28: b083 sub sp, #12 8003e2a: af00 add r7, sp, #0 8003e2c: 6078 str r0, [r7, #4] if(hdma->State != HAL_DMA_STATE_BUSY) 8003e2e: 687b ldr r3, [r7, #4] 8003e30: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 8003e34: b2db uxtb r3, r3 8003e36: 2b02 cmp r3, #2 8003e38: d004 beq.n 8003e44 { hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; 8003e3a: 687b ldr r3, [r7, #4] 8003e3c: 2280 movs r2, #128 ; 0x80 8003e3e: 655a str r2, [r3, #84] ; 0x54 return HAL_ERROR; 8003e40: 2301 movs r3, #1 8003e42: e00c b.n 8003e5e } else { /* Set Abort State */ hdma->State = HAL_DMA_STATE_ABORT; 8003e44: 687b ldr r3, [r7, #4] 8003e46: 2205 movs r2, #5 8003e48: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Disable the stream */ __HAL_DMA_DISABLE(hdma); 8003e4c: 687b ldr r3, [r7, #4] 8003e4e: 681b ldr r3, [r3, #0] 8003e50: 681a ldr r2, [r3, #0] 8003e52: 687b ldr r3, [r7, #4] 8003e54: 681b ldr r3, [r3, #0] 8003e56: f022 0201 bic.w r2, r2, #1 8003e5a: 601a str r2, [r3, #0] } return HAL_OK; 8003e5c: 2300 movs r3, #0 } 8003e5e: 4618 mov r0, r3 8003e60: 370c adds r7, #12 8003e62: 46bd mov sp, r7 8003e64: f85d 7b04 ldr.w r7, [sp], #4 8003e68: 4770 bx lr ... 08003e6c : * @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) { 8003e6c: b480 push {r7} 8003e6e: b089 sub sp, #36 ; 0x24 8003e70: af00 add r7, sp, #0 8003e72: 6078 str r0, [r7, #4] 8003e74: 6039 str r1, [r7, #0] uint32_t position; uint32_t ioposition = 0x00U; 8003e76: 2300 movs r3, #0 8003e78: 617b str r3, [r7, #20] uint32_t iocurrent = 0x00U; 8003e7a: 2300 movs r3, #0 8003e7c: 613b str r3, [r7, #16] uint32_t temp = 0x00U; 8003e7e: 2300 movs r3, #0 8003e80: 61bb str r3, [r7, #24] assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); /* Configure the port pins */ for(position = 0U; position < GPIO_NUMBER; position++) 8003e82: 2300 movs r3, #0 8003e84: 61fb str r3, [r7, #28] 8003e86: e177 b.n 8004178 { /* Get the IO position */ ioposition = 0x01U << position; 8003e88: 2201 movs r2, #1 8003e8a: 69fb ldr r3, [r7, #28] 8003e8c: fa02 f303 lsl.w r3, r2, r3 8003e90: 617b str r3, [r7, #20] /* Get the current IO position */ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; 8003e92: 683b ldr r3, [r7, #0] 8003e94: 681b ldr r3, [r3, #0] 8003e96: 697a ldr r2, [r7, #20] 8003e98: 4013 ands r3, r2 8003e9a: 613b str r3, [r7, #16] if(iocurrent == ioposition) 8003e9c: 693a ldr r2, [r7, #16] 8003e9e: 697b ldr r3, [r7, #20] 8003ea0: 429a cmp r2, r3 8003ea2: f040 8166 bne.w 8004172 { /*--------------------- 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) || 8003ea6: 683b ldr r3, [r7, #0] 8003ea8: 685b ldr r3, [r3, #4] 8003eaa: 2b01 cmp r3, #1 8003eac: d00b beq.n 8003ec6 8003eae: 683b ldr r3, [r7, #0] 8003eb0: 685b ldr r3, [r3, #4] 8003eb2: 2b02 cmp r3, #2 8003eb4: d007 beq.n 8003ec6 (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 8003eb6: 683b ldr r3, [r7, #0] 8003eb8: 685b ldr r3, [r3, #4] if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) || 8003eba: 2b11 cmp r3, #17 8003ebc: d003 beq.n 8003ec6 (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 8003ebe: 683b ldr r3, [r7, #0] 8003ec0: 685b ldr r3, [r3, #4] 8003ec2: 2b12 cmp r3, #18 8003ec4: d130 bne.n 8003f28 { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; 8003ec6: 687b ldr r3, [r7, #4] 8003ec8: 689b ldr r3, [r3, #8] 8003eca: 61bb str r3, [r7, #24] temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2U)); 8003ecc: 69fb ldr r3, [r7, #28] 8003ece: 005b lsls r3, r3, #1 8003ed0: 2203 movs r2, #3 8003ed2: fa02 f303 lsl.w r3, r2, r3 8003ed6: 43db mvns r3, r3 8003ed8: 69ba ldr r2, [r7, #24] 8003eda: 4013 ands r3, r2 8003edc: 61bb str r3, [r7, #24] temp |= (GPIO_Init->Speed << (position * 2U)); 8003ede: 683b ldr r3, [r7, #0] 8003ee0: 68da ldr r2, [r3, #12] 8003ee2: 69fb ldr r3, [r7, #28] 8003ee4: 005b lsls r3, r3, #1 8003ee6: fa02 f303 lsl.w r3, r2, r3 8003eea: 69ba ldr r2, [r7, #24] 8003eec: 4313 orrs r3, r2 8003eee: 61bb str r3, [r7, #24] GPIOx->OSPEEDR = temp; 8003ef0: 687b ldr r3, [r7, #4] 8003ef2: 69ba ldr r2, [r7, #24] 8003ef4: 609a str r2, [r3, #8] /* Configure the IO Output Type */ temp = GPIOx->OTYPER; 8003ef6: 687b ldr r3, [r7, #4] 8003ef8: 685b ldr r3, [r3, #4] 8003efa: 61bb str r3, [r7, #24] temp &= ~(GPIO_OTYPER_OT_0 << position) ; 8003efc: 2201 movs r2, #1 8003efe: 69fb ldr r3, [r7, #28] 8003f00: fa02 f303 lsl.w r3, r2, r3 8003f04: 43db mvns r3, r3 8003f06: 69ba ldr r2, [r7, #24] 8003f08: 4013 ands r3, r2 8003f0a: 61bb str r3, [r7, #24] temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4U) << position); 8003f0c: 683b ldr r3, [r7, #0] 8003f0e: 685b ldr r3, [r3, #4] 8003f10: 091b lsrs r3, r3, #4 8003f12: f003 0201 and.w r2, r3, #1 8003f16: 69fb ldr r3, [r7, #28] 8003f18: fa02 f303 lsl.w r3, r2, r3 8003f1c: 69ba ldr r2, [r7, #24] 8003f1e: 4313 orrs r3, r2 8003f20: 61bb str r3, [r7, #24] GPIOx->OTYPER = temp; 8003f22: 687b ldr r3, [r7, #4] 8003f24: 69ba ldr r2, [r7, #24] 8003f26: 605a str r2, [r3, #4] } /* Activate the Pull-up or Pull down resistor for the current IO */ temp = GPIOx->PUPDR; 8003f28: 687b ldr r3, [r7, #4] 8003f2a: 68db ldr r3, [r3, #12] 8003f2c: 61bb str r3, [r7, #24] temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2U)); 8003f2e: 69fb ldr r3, [r7, #28] 8003f30: 005b lsls r3, r3, #1 8003f32: 2203 movs r2, #3 8003f34: fa02 f303 lsl.w r3, r2, r3 8003f38: 43db mvns r3, r3 8003f3a: 69ba ldr r2, [r7, #24] 8003f3c: 4013 ands r3, r2 8003f3e: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Pull) << (position * 2U)); 8003f40: 683b ldr r3, [r7, #0] 8003f42: 689a ldr r2, [r3, #8] 8003f44: 69fb ldr r3, [r7, #28] 8003f46: 005b lsls r3, r3, #1 8003f48: fa02 f303 lsl.w r3, r2, r3 8003f4c: 69ba ldr r2, [r7, #24] 8003f4e: 4313 orrs r3, r2 8003f50: 61bb str r3, [r7, #24] GPIOx->PUPDR = temp; 8003f52: 687b ldr r3, [r7, #4] 8003f54: 69ba ldr r2, [r7, #24] 8003f56: 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)) 8003f58: 683b ldr r3, [r7, #0] 8003f5a: 685b ldr r3, [r3, #4] 8003f5c: 2b02 cmp r3, #2 8003f5e: d003 beq.n 8003f68 8003f60: 683b ldr r3, [r7, #0] 8003f62: 685b ldr r3, [r3, #4] 8003f64: 2b12 cmp r3, #18 8003f66: d123 bne.n 8003fb0 { /* Check the Alternate function parameter */ assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); /* Configure Alternate function mapped with the current IO */ temp = GPIOx->AFR[position >> 3U]; 8003f68: 69fb ldr r3, [r7, #28] 8003f6a: 08da lsrs r2, r3, #3 8003f6c: 687b ldr r3, [r7, #4] 8003f6e: 3208 adds r2, #8 8003f70: f853 3022 ldr.w r3, [r3, r2, lsl #2] 8003f74: 61bb str r3, [r7, #24] temp &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ; 8003f76: 69fb ldr r3, [r7, #28] 8003f78: f003 0307 and.w r3, r3, #7 8003f7c: 009b lsls r3, r3, #2 8003f7e: 220f movs r2, #15 8003f80: fa02 f303 lsl.w r3, r2, r3 8003f84: 43db mvns r3, r3 8003f86: 69ba ldr r2, [r7, #24] 8003f88: 4013 ands r3, r2 8003f8a: 61bb str r3, [r7, #24] temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4U)); 8003f8c: 683b ldr r3, [r7, #0] 8003f8e: 691a ldr r2, [r3, #16] 8003f90: 69fb ldr r3, [r7, #28] 8003f92: f003 0307 and.w r3, r3, #7 8003f96: 009b lsls r3, r3, #2 8003f98: fa02 f303 lsl.w r3, r2, r3 8003f9c: 69ba ldr r2, [r7, #24] 8003f9e: 4313 orrs r3, r2 8003fa0: 61bb str r3, [r7, #24] GPIOx->AFR[position >> 3U] = temp; 8003fa2: 69fb ldr r3, [r7, #28] 8003fa4: 08da lsrs r2, r3, #3 8003fa6: 687b ldr r3, [r7, #4] 8003fa8: 3208 adds r2, #8 8003faa: 69b9 ldr r1, [r7, #24] 8003fac: f843 1022 str.w r1, [r3, r2, lsl #2] } /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ temp = GPIOx->MODER; 8003fb0: 687b ldr r3, [r7, #4] 8003fb2: 681b ldr r3, [r3, #0] 8003fb4: 61bb str r3, [r7, #24] temp &= ~(GPIO_MODER_MODER0 << (position * 2U)); 8003fb6: 69fb ldr r3, [r7, #28] 8003fb8: 005b lsls r3, r3, #1 8003fba: 2203 movs r2, #3 8003fbc: fa02 f303 lsl.w r3, r2, r3 8003fc0: 43db mvns r3, r3 8003fc2: 69ba ldr r2, [r7, #24] 8003fc4: 4013 ands r3, r2 8003fc6: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); 8003fc8: 683b ldr r3, [r7, #0] 8003fca: 685b ldr r3, [r3, #4] 8003fcc: f003 0203 and.w r2, r3, #3 8003fd0: 69fb ldr r3, [r7, #28] 8003fd2: 005b lsls r3, r3, #1 8003fd4: fa02 f303 lsl.w r3, r2, r3 8003fd8: 69ba ldr r2, [r7, #24] 8003fda: 4313 orrs r3, r2 8003fdc: 61bb str r3, [r7, #24] GPIOx->MODER = temp; 8003fde: 687b ldr r3, [r7, #4] 8003fe0: 69ba ldr r2, [r7, #24] 8003fe2: 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) 8003fe4: 683b ldr r3, [r7, #0] 8003fe6: 685b ldr r3, [r3, #4] 8003fe8: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 8003fec: 2b00 cmp r3, #0 8003fee: f000 80c0 beq.w 8004172 { /* Enable SYSCFG Clock */ __HAL_RCC_SYSCFG_CLK_ENABLE(); 8003ff2: 2300 movs r3, #0 8003ff4: 60fb str r3, [r7, #12] 8003ff6: 4b65 ldr r3, [pc, #404] ; (800418c ) 8003ff8: 6c5b ldr r3, [r3, #68] ; 0x44 8003ffa: 4a64 ldr r2, [pc, #400] ; (800418c ) 8003ffc: f443 4380 orr.w r3, r3, #16384 ; 0x4000 8004000: 6453 str r3, [r2, #68] ; 0x44 8004002: 4b62 ldr r3, [pc, #392] ; (800418c ) 8004004: 6c5b ldr r3, [r3, #68] ; 0x44 8004006: f403 4380 and.w r3, r3, #16384 ; 0x4000 800400a: 60fb str r3, [r7, #12] 800400c: 68fb ldr r3, [r7, #12] temp = SYSCFG->EXTICR[position >> 2U]; 800400e: 4a60 ldr r2, [pc, #384] ; (8004190 ) 8004010: 69fb ldr r3, [r7, #28] 8004012: 089b lsrs r3, r3, #2 8004014: 3302 adds r3, #2 8004016: f852 3023 ldr.w r3, [r2, r3, lsl #2] 800401a: 61bb str r3, [r7, #24] temp &= ~(0x0FU << (4U * (position & 0x03U))); 800401c: 69fb ldr r3, [r7, #28] 800401e: f003 0303 and.w r3, r3, #3 8004022: 009b lsls r3, r3, #2 8004024: 220f movs r2, #15 8004026: fa02 f303 lsl.w r3, r2, r3 800402a: 43db mvns r3, r3 800402c: 69ba ldr r2, [r7, #24] 800402e: 4013 ands r3, r2 8004030: 61bb str r3, [r7, #24] temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))); 8004032: 687b ldr r3, [r7, #4] 8004034: 4a57 ldr r2, [pc, #348] ; (8004194 ) 8004036: 4293 cmp r3, r2 8004038: d037 beq.n 80040aa 800403a: 687b ldr r3, [r7, #4] 800403c: 4a56 ldr r2, [pc, #344] ; (8004198 ) 800403e: 4293 cmp r3, r2 8004040: d031 beq.n 80040a6 8004042: 687b ldr r3, [r7, #4] 8004044: 4a55 ldr r2, [pc, #340] ; (800419c ) 8004046: 4293 cmp r3, r2 8004048: d02b beq.n 80040a2 800404a: 687b ldr r3, [r7, #4] 800404c: 4a54 ldr r2, [pc, #336] ; (80041a0 ) 800404e: 4293 cmp r3, r2 8004050: d025 beq.n 800409e 8004052: 687b ldr r3, [r7, #4] 8004054: 4a53 ldr r2, [pc, #332] ; (80041a4 ) 8004056: 4293 cmp r3, r2 8004058: d01f beq.n 800409a 800405a: 687b ldr r3, [r7, #4] 800405c: 4a52 ldr r2, [pc, #328] ; (80041a8 ) 800405e: 4293 cmp r3, r2 8004060: d019 beq.n 8004096 8004062: 687b ldr r3, [r7, #4] 8004064: 4a51 ldr r2, [pc, #324] ; (80041ac ) 8004066: 4293 cmp r3, r2 8004068: d013 beq.n 8004092 800406a: 687b ldr r3, [r7, #4] 800406c: 4a50 ldr r2, [pc, #320] ; (80041b0 ) 800406e: 4293 cmp r3, r2 8004070: d00d beq.n 800408e 8004072: 687b ldr r3, [r7, #4] 8004074: 4a4f ldr r2, [pc, #316] ; (80041b4 ) 8004076: 4293 cmp r3, r2 8004078: d007 beq.n 800408a 800407a: 687b ldr r3, [r7, #4] 800407c: 4a4e ldr r2, [pc, #312] ; (80041b8 ) 800407e: 4293 cmp r3, r2 8004080: d101 bne.n 8004086 8004082: 2309 movs r3, #9 8004084: e012 b.n 80040ac 8004086: 230a movs r3, #10 8004088: e010 b.n 80040ac 800408a: 2308 movs r3, #8 800408c: e00e b.n 80040ac 800408e: 2307 movs r3, #7 8004090: e00c b.n 80040ac 8004092: 2306 movs r3, #6 8004094: e00a b.n 80040ac 8004096: 2305 movs r3, #5 8004098: e008 b.n 80040ac 800409a: 2304 movs r3, #4 800409c: e006 b.n 80040ac 800409e: 2303 movs r3, #3 80040a0: e004 b.n 80040ac 80040a2: 2302 movs r3, #2 80040a4: e002 b.n 80040ac 80040a6: 2301 movs r3, #1 80040a8: e000 b.n 80040ac 80040aa: 2300 movs r3, #0 80040ac: 69fa ldr r2, [r7, #28] 80040ae: f002 0203 and.w r2, r2, #3 80040b2: 0092 lsls r2, r2, #2 80040b4: 4093 lsls r3, r2 80040b6: 69ba ldr r2, [r7, #24] 80040b8: 4313 orrs r3, r2 80040ba: 61bb str r3, [r7, #24] SYSCFG->EXTICR[position >> 2U] = temp; 80040bc: 4934 ldr r1, [pc, #208] ; (8004190 ) 80040be: 69fb ldr r3, [r7, #28] 80040c0: 089b lsrs r3, r3, #2 80040c2: 3302 adds r3, #2 80040c4: 69ba ldr r2, [r7, #24] 80040c6: f841 2023 str.w r2, [r1, r3, lsl #2] /* Clear EXTI line configuration */ temp = EXTI->IMR; 80040ca: 4b3c ldr r3, [pc, #240] ; (80041bc ) 80040cc: 681b ldr r3, [r3, #0] 80040ce: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); 80040d0: 693b ldr r3, [r7, #16] 80040d2: 43db mvns r3, r3 80040d4: 69ba ldr r2, [r7, #24] 80040d6: 4013 ands r3, r2 80040d8: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) 80040da: 683b ldr r3, [r7, #0] 80040dc: 685b ldr r3, [r3, #4] 80040de: f403 3380 and.w r3, r3, #65536 ; 0x10000 80040e2: 2b00 cmp r3, #0 80040e4: d003 beq.n 80040ee { temp |= iocurrent; 80040e6: 69ba ldr r2, [r7, #24] 80040e8: 693b ldr r3, [r7, #16] 80040ea: 4313 orrs r3, r2 80040ec: 61bb str r3, [r7, #24] } EXTI->IMR = temp; 80040ee: 4a33 ldr r2, [pc, #204] ; (80041bc ) 80040f0: 69bb ldr r3, [r7, #24] 80040f2: 6013 str r3, [r2, #0] temp = EXTI->EMR; 80040f4: 4b31 ldr r3, [pc, #196] ; (80041bc ) 80040f6: 685b ldr r3, [r3, #4] 80040f8: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); 80040fa: 693b ldr r3, [r7, #16] 80040fc: 43db mvns r3, r3 80040fe: 69ba ldr r2, [r7, #24] 8004100: 4013 ands r3, r2 8004102: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) 8004104: 683b ldr r3, [r7, #0] 8004106: 685b ldr r3, [r3, #4] 8004108: f403 3300 and.w r3, r3, #131072 ; 0x20000 800410c: 2b00 cmp r3, #0 800410e: d003 beq.n 8004118 { temp |= iocurrent; 8004110: 69ba ldr r2, [r7, #24] 8004112: 693b ldr r3, [r7, #16] 8004114: 4313 orrs r3, r2 8004116: 61bb str r3, [r7, #24] } EXTI->EMR = temp; 8004118: 4a28 ldr r2, [pc, #160] ; (80041bc ) 800411a: 69bb ldr r3, [r7, #24] 800411c: 6053 str r3, [r2, #4] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR; 800411e: 4b27 ldr r3, [pc, #156] ; (80041bc ) 8004120: 689b ldr r3, [r3, #8] 8004122: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); 8004124: 693b ldr r3, [r7, #16] 8004126: 43db mvns r3, r3 8004128: 69ba ldr r2, [r7, #24] 800412a: 4013 ands r3, r2 800412c: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) 800412e: 683b ldr r3, [r7, #0] 8004130: 685b ldr r3, [r3, #4] 8004132: f403 1380 and.w r3, r3, #1048576 ; 0x100000 8004136: 2b00 cmp r3, #0 8004138: d003 beq.n 8004142 { temp |= iocurrent; 800413a: 69ba ldr r2, [r7, #24] 800413c: 693b ldr r3, [r7, #16] 800413e: 4313 orrs r3, r2 8004140: 61bb str r3, [r7, #24] } EXTI->RTSR = temp; 8004142: 4a1e ldr r2, [pc, #120] ; (80041bc ) 8004144: 69bb ldr r3, [r7, #24] 8004146: 6093 str r3, [r2, #8] temp = EXTI->FTSR; 8004148: 4b1c ldr r3, [pc, #112] ; (80041bc ) 800414a: 68db ldr r3, [r3, #12] 800414c: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); 800414e: 693b ldr r3, [r7, #16] 8004150: 43db mvns r3, r3 8004152: 69ba ldr r2, [r7, #24] 8004154: 4013 ands r3, r2 8004156: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) 8004158: 683b ldr r3, [r7, #0] 800415a: 685b ldr r3, [r3, #4] 800415c: f403 1300 and.w r3, r3, #2097152 ; 0x200000 8004160: 2b00 cmp r3, #0 8004162: d003 beq.n 800416c { temp |= iocurrent; 8004164: 69ba ldr r2, [r7, #24] 8004166: 693b ldr r3, [r7, #16] 8004168: 4313 orrs r3, r2 800416a: 61bb str r3, [r7, #24] } EXTI->FTSR = temp; 800416c: 4a13 ldr r2, [pc, #76] ; (80041bc ) 800416e: 69bb ldr r3, [r7, #24] 8004170: 60d3 str r3, [r2, #12] for(position = 0U; position < GPIO_NUMBER; position++) 8004172: 69fb ldr r3, [r7, #28] 8004174: 3301 adds r3, #1 8004176: 61fb str r3, [r7, #28] 8004178: 69fb ldr r3, [r7, #28] 800417a: 2b0f cmp r3, #15 800417c: f67f ae84 bls.w 8003e88 } } } } 8004180: bf00 nop 8004182: 3724 adds r7, #36 ; 0x24 8004184: 46bd mov sp, r7 8004186: f85d 7b04 ldr.w r7, [sp], #4 800418a: 4770 bx lr 800418c: 40023800 .word 0x40023800 8004190: 40013800 .word 0x40013800 8004194: 40020000 .word 0x40020000 8004198: 40020400 .word 0x40020400 800419c: 40020800 .word 0x40020800 80041a0: 40020c00 .word 0x40020c00 80041a4: 40021000 .word 0x40021000 80041a8: 40021400 .word 0x40021400 80041ac: 40021800 .word 0x40021800 80041b0: 40021c00 .word 0x40021c00 80041b4: 40022000 .word 0x40022000 80041b8: 40022400 .word 0x40022400 80041bc: 40013c00 .word 0x40013c00 080041c0 : * @arg GPIO_PIN_RESET: to clear the port pin * @arg GPIO_PIN_SET: to set the port pin * @retval None */ void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { 80041c0: b480 push {r7} 80041c2: b083 sub sp, #12 80041c4: af00 add r7, sp, #0 80041c6: 6078 str r0, [r7, #4] 80041c8: 460b mov r3, r1 80041ca: 807b strh r3, [r7, #2] 80041cc: 4613 mov r3, r2 80041ce: 707b strb r3, [r7, #1] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if(PinState != GPIO_PIN_RESET) 80041d0: 787b ldrb r3, [r7, #1] 80041d2: 2b00 cmp r3, #0 80041d4: d003 beq.n 80041de { GPIOx->BSRR = GPIO_Pin; 80041d6: 887a ldrh r2, [r7, #2] 80041d8: 687b ldr r3, [r7, #4] 80041da: 619a str r2, [r3, #24] } else { GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; } } 80041dc: e003 b.n 80041e6 GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; 80041de: 887b ldrh r3, [r7, #2] 80041e0: 041a lsls r2, r3, #16 80041e2: 687b ldr r3, [r7, #4] 80041e4: 619a str r2, [r3, #24] } 80041e6: bf00 nop 80041e8: 370c adds r7, #12 80041ea: 46bd mov sp, r7 80041ec: f85d 7b04 ldr.w r7, [sp], #4 80041f0: 4770 bx lr ... 080041f4 : * @brief This function handles EXTI interrupt request. * @param GPIO_Pin Specifies the pins connected EXTI line * @retval None */ void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) { 80041f4: b580 push {r7, lr} 80041f6: b082 sub sp, #8 80041f8: af00 add r7, sp, #0 80041fa: 4603 mov r3, r0 80041fc: 80fb strh r3, [r7, #6] /* EXTI line interrupt detected */ if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) 80041fe: 4b08 ldr r3, [pc, #32] ; (8004220 ) 8004200: 695a ldr r2, [r3, #20] 8004202: 88fb ldrh r3, [r7, #6] 8004204: 4013 ands r3, r2 8004206: 2b00 cmp r3, #0 8004208: d006 beq.n 8004218 { __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); 800420a: 4a05 ldr r2, [pc, #20] ; (8004220 ) 800420c: 88fb ldrh r3, [r7, #6] 800420e: 6153 str r3, [r2, #20] HAL_GPIO_EXTI_Callback(GPIO_Pin); 8004210: 88fb ldrh r3, [r7, #6] 8004212: 4618 mov r0, r3 8004214: f000 f806 bl 8004224 } } 8004218: bf00 nop 800421a: 3708 adds r7, #8 800421c: 46bd mov sp, r7 800421e: bd80 pop {r7, pc} 8004220: 40013c00 .word 0x40013c00 08004224 : * @brief EXTI line detection callbacks. * @param GPIO_Pin Specifies the pins connected EXTI line * @retval None */ __weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { 8004224: b480 push {r7} 8004226: b083 sub sp, #12 8004228: af00 add r7, sp, #0 800422a: 4603 mov r3, r0 800422c: 80fb strh r3, [r7, #6] /* Prevent unused argument(s) compilation warning */ UNUSED(GPIO_Pin); /* NOTE: This function Should not be modified, when the callback is needed, the HAL_GPIO_EXTI_Callback could be implemented in the user file */ } 800422e: bf00 nop 8004230: 370c adds r7, #12 8004232: 46bd mov sp, r7 8004234: f85d 7b04 ldr.w r7, [sp], #4 8004238: 4770 bx lr ... 0800423c : * supported by this API. User should request a transition to HSE Off * first and then HSE On or HSE Bypass. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) { 800423c: b580 push {r7, lr} 800423e: b086 sub sp, #24 8004240: af00 add r7, sp, #0 8004242: 6078 str r0, [r7, #4] uint32_t tickstart, pll_config; /* Check Null pointer */ if(RCC_OscInitStruct == NULL) 8004244: 687b ldr r3, [r7, #4] 8004246: 2b00 cmp r3, #0 8004248: d101 bne.n 800424e { return HAL_ERROR; 800424a: 2301 movs r3, #1 800424c: e25b b.n 8004706 } /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); /*------------------------------- HSE Configuration ------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) 800424e: 687b ldr r3, [r7, #4] 8004250: 681b ldr r3, [r3, #0] 8004252: f003 0301 and.w r3, r3, #1 8004256: 2b00 cmp r3, #0 8004258: d075 beq.n 8004346 { /* 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 HSE will not disabled */ if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) ||\ 800425a: 4ba3 ldr r3, [pc, #652] ; (80044e8 ) 800425c: 689b ldr r3, [r3, #8] 800425e: f003 030c and.w r3, r3, #12 8004262: 2b04 cmp r3, #4 8004264: d00c beq.n 8004280 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) 8004266: 4ba0 ldr r3, [pc, #640] ; (80044e8 ) 8004268: 689b ldr r3, [r3, #8] 800426a: f003 030c and.w r3, r3, #12 if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) ||\ 800426e: 2b08 cmp r3, #8 8004270: d112 bne.n 8004298 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) 8004272: 4b9d ldr r3, [pc, #628] ; (80044e8 ) 8004274: 685b ldr r3, [r3, #4] 8004276: f403 0380 and.w r3, r3, #4194304 ; 0x400000 800427a: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000 800427e: d10b bne.n 8004298 { if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) 8004280: 4b99 ldr r3, [pc, #612] ; (80044e8 ) 8004282: 681b ldr r3, [r3, #0] 8004284: f403 3300 and.w r3, r3, #131072 ; 0x20000 8004288: 2b00 cmp r3, #0 800428a: d05b beq.n 8004344 800428c: 687b ldr r3, [r7, #4] 800428e: 685b ldr r3, [r3, #4] 8004290: 2b00 cmp r3, #0 8004292: d157 bne.n 8004344 { return HAL_ERROR; 8004294: 2301 movs r3, #1 8004296: e236 b.n 8004706 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); 8004298: 687b ldr r3, [r7, #4] 800429a: 685b ldr r3, [r3, #4] 800429c: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 80042a0: d106 bne.n 80042b0 80042a2: 4b91 ldr r3, [pc, #580] ; (80044e8 ) 80042a4: 681b ldr r3, [r3, #0] 80042a6: 4a90 ldr r2, [pc, #576] ; (80044e8 ) 80042a8: f443 3380 orr.w r3, r3, #65536 ; 0x10000 80042ac: 6013 str r3, [r2, #0] 80042ae: e01d b.n 80042ec 80042b0: 687b ldr r3, [r7, #4] 80042b2: 685b ldr r3, [r3, #4] 80042b4: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000 80042b8: d10c bne.n 80042d4 80042ba: 4b8b ldr r3, [pc, #556] ; (80044e8 ) 80042bc: 681b ldr r3, [r3, #0] 80042be: 4a8a ldr r2, [pc, #552] ; (80044e8 ) 80042c0: f443 2380 orr.w r3, r3, #262144 ; 0x40000 80042c4: 6013 str r3, [r2, #0] 80042c6: 4b88 ldr r3, [pc, #544] ; (80044e8 ) 80042c8: 681b ldr r3, [r3, #0] 80042ca: 4a87 ldr r2, [pc, #540] ; (80044e8 ) 80042cc: f443 3380 orr.w r3, r3, #65536 ; 0x10000 80042d0: 6013 str r3, [r2, #0] 80042d2: e00b b.n 80042ec 80042d4: 4b84 ldr r3, [pc, #528] ; (80044e8 ) 80042d6: 681b ldr r3, [r3, #0] 80042d8: 4a83 ldr r2, [pc, #524] ; (80044e8 ) 80042da: f423 3380 bic.w r3, r3, #65536 ; 0x10000 80042de: 6013 str r3, [r2, #0] 80042e0: 4b81 ldr r3, [pc, #516] ; (80044e8 ) 80042e2: 681b ldr r3, [r3, #0] 80042e4: 4a80 ldr r2, [pc, #512] ; (80044e8 ) 80042e6: f423 2380 bic.w r3, r3, #262144 ; 0x40000 80042ea: 6013 str r3, [r2, #0] /* Check the HSE State */ if((RCC_OscInitStruct->HSEState) != RCC_HSE_OFF) 80042ec: 687b ldr r3, [r7, #4] 80042ee: 685b ldr r3, [r3, #4] 80042f0: 2b00 cmp r3, #0 80042f2: d013 beq.n 800431c { /* Get Start Tick */ tickstart = HAL_GetTick(); 80042f4: f7ff f88e bl 8003414 80042f8: 6138 str r0, [r7, #16] /* Wait till HSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) 80042fa: e008 b.n 800430e { if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) 80042fc: f7ff f88a bl 8003414 8004300: 4602 mov r2, r0 8004302: 693b ldr r3, [r7, #16] 8004304: 1ad3 subs r3, r2, r3 8004306: 2b64 cmp r3, #100 ; 0x64 8004308: d901 bls.n 800430e { return HAL_TIMEOUT; 800430a: 2303 movs r3, #3 800430c: e1fb b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) 800430e: 4b76 ldr r3, [pc, #472] ; (80044e8 ) 8004310: 681b ldr r3, [r3, #0] 8004312: f403 3300 and.w r3, r3, #131072 ; 0x20000 8004316: 2b00 cmp r3, #0 8004318: d0f0 beq.n 80042fc 800431a: e014 b.n 8004346 } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); 800431c: f7ff f87a bl 8003414 8004320: 6138 str r0, [r7, #16] /* Wait till HSE is bypassed or disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) 8004322: e008 b.n 8004336 { if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) 8004324: f7ff f876 bl 8003414 8004328: 4602 mov r2, r0 800432a: 693b ldr r3, [r7, #16] 800432c: 1ad3 subs r3, r2, r3 800432e: 2b64 cmp r3, #100 ; 0x64 8004330: d901 bls.n 8004336 { return HAL_TIMEOUT; 8004332: 2303 movs r3, #3 8004334: e1e7 b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) 8004336: 4b6c ldr r3, [pc, #432] ; (80044e8 ) 8004338: 681b ldr r3, [r3, #0] 800433a: f403 3300 and.w r3, r3, #131072 ; 0x20000 800433e: 2b00 cmp r3, #0 8004340: d1f0 bne.n 8004324 8004342: e000 b.n 8004346 if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) 8004344: bf00 nop } } } } /*----------------------------- HSI Configuration --------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) 8004346: 687b ldr r3, [r7, #4] 8004348: 681b ldr r3, [r3, #0] 800434a: f003 0302 and.w r3, r3, #2 800434e: 2b00 cmp r3, #0 8004350: d063 beq.n 800441a /* Check the parameters */ assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) ||\ 8004352: 4b65 ldr r3, [pc, #404] ; (80044e8 ) 8004354: 689b ldr r3, [r3, #8] 8004356: f003 030c and.w r3, r3, #12 800435a: 2b00 cmp r3, #0 800435c: d00b beq.n 8004376 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) 800435e: 4b62 ldr r3, [pc, #392] ; (80044e8 ) 8004360: 689b ldr r3, [r3, #8] 8004362: f003 030c and.w r3, r3, #12 if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) ||\ 8004366: 2b08 cmp r3, #8 8004368: d11c bne.n 80043a4 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) 800436a: 4b5f ldr r3, [pc, #380] ; (80044e8 ) 800436c: 685b ldr r3, [r3, #4] 800436e: f403 0380 and.w r3, r3, #4194304 ; 0x400000 8004372: 2b00 cmp r3, #0 8004374: d116 bne.n 80043a4 { /* When HSI is used as system clock it will not disabled */ if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) 8004376: 4b5c ldr r3, [pc, #368] ; (80044e8 ) 8004378: 681b ldr r3, [r3, #0] 800437a: f003 0302 and.w r3, r3, #2 800437e: 2b00 cmp r3, #0 8004380: d005 beq.n 800438e 8004382: 687b ldr r3, [r7, #4] 8004384: 68db ldr r3, [r3, #12] 8004386: 2b01 cmp r3, #1 8004388: d001 beq.n 800438e { return HAL_ERROR; 800438a: 2301 movs r3, #1 800438c: e1bb b.n 8004706 } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); 800438e: 4b56 ldr r3, [pc, #344] ; (80044e8 ) 8004390: 681b ldr r3, [r3, #0] 8004392: f023 02f8 bic.w r2, r3, #248 ; 0xf8 8004396: 687b ldr r3, [r7, #4] 8004398: 691b ldr r3, [r3, #16] 800439a: 00db lsls r3, r3, #3 800439c: 4952 ldr r1, [pc, #328] ; (80044e8 ) 800439e: 4313 orrs r3, r2 80043a0: 600b str r3, [r1, #0] if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) 80043a2: e03a b.n 800441a } } else { /* Check the HSI State */ if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF) 80043a4: 687b ldr r3, [r7, #4] 80043a6: 68db ldr r3, [r3, #12] 80043a8: 2b00 cmp r3, #0 80043aa: d020 beq.n 80043ee { /* Enable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_ENABLE(); 80043ac: 4b4f ldr r3, [pc, #316] ; (80044ec ) 80043ae: 2201 movs r2, #1 80043b0: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); 80043b2: f7ff f82f bl 8003414 80043b6: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) 80043b8: e008 b.n 80043cc { if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) 80043ba: f7ff f82b bl 8003414 80043be: 4602 mov r2, r0 80043c0: 693b ldr r3, [r7, #16] 80043c2: 1ad3 subs r3, r2, r3 80043c4: 2b02 cmp r3, #2 80043c6: d901 bls.n 80043cc { return HAL_TIMEOUT; 80043c8: 2303 movs r3, #3 80043ca: e19c b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) 80043cc: 4b46 ldr r3, [pc, #280] ; (80044e8 ) 80043ce: 681b ldr r3, [r3, #0] 80043d0: f003 0302 and.w r3, r3, #2 80043d4: 2b00 cmp r3, #0 80043d6: d0f0 beq.n 80043ba } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value. */ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); 80043d8: 4b43 ldr r3, [pc, #268] ; (80044e8 ) 80043da: 681b ldr r3, [r3, #0] 80043dc: f023 02f8 bic.w r2, r3, #248 ; 0xf8 80043e0: 687b ldr r3, [r7, #4] 80043e2: 691b ldr r3, [r3, #16] 80043e4: 00db lsls r3, r3, #3 80043e6: 4940 ldr r1, [pc, #256] ; (80044e8 ) 80043e8: 4313 orrs r3, r2 80043ea: 600b str r3, [r1, #0] 80043ec: e015 b.n 800441a } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); 80043ee: 4b3f ldr r3, [pc, #252] ; (80044ec ) 80043f0: 2200 movs r2, #0 80043f2: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); 80043f4: f7ff f80e bl 8003414 80043f8: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) 80043fa: e008 b.n 800440e { if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) 80043fc: f7ff f80a bl 8003414 8004400: 4602 mov r2, r0 8004402: 693b ldr r3, [r7, #16] 8004404: 1ad3 subs r3, r2, r3 8004406: 2b02 cmp r3, #2 8004408: d901 bls.n 800440e { return HAL_TIMEOUT; 800440a: 2303 movs r3, #3 800440c: e17b b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) 800440e: 4b36 ldr r3, [pc, #216] ; (80044e8 ) 8004410: 681b ldr r3, [r3, #0] 8004412: f003 0302 and.w r3, r3, #2 8004416: 2b00 cmp r3, #0 8004418: d1f0 bne.n 80043fc } } } } /*------------------------------ LSI Configuration -------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) 800441a: 687b ldr r3, [r7, #4] 800441c: 681b ldr r3, [r3, #0] 800441e: f003 0308 and.w r3, r3, #8 8004422: 2b00 cmp r3, #0 8004424: d030 beq.n 8004488 { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check the LSI State */ if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF) 8004426: 687b ldr r3, [r7, #4] 8004428: 695b ldr r3, [r3, #20] 800442a: 2b00 cmp r3, #0 800442c: d016 beq.n 800445c { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); 800442e: 4b30 ldr r3, [pc, #192] ; (80044f0 ) 8004430: 2201 movs r2, #1 8004432: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); 8004434: f7fe ffee bl 8003414 8004438: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) 800443a: e008 b.n 800444e { if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) 800443c: f7fe ffea bl 8003414 8004440: 4602 mov r2, r0 8004442: 693b ldr r3, [r7, #16] 8004444: 1ad3 subs r3, r2, r3 8004446: 2b02 cmp r3, #2 8004448: d901 bls.n 800444e { return HAL_TIMEOUT; 800444a: 2303 movs r3, #3 800444c: e15b b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) 800444e: 4b26 ldr r3, [pc, #152] ; (80044e8 ) 8004450: 6f5b ldr r3, [r3, #116] ; 0x74 8004452: f003 0302 and.w r3, r3, #2 8004456: 2b00 cmp r3, #0 8004458: d0f0 beq.n 800443c 800445a: e015 b.n 8004488 } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); 800445c: 4b24 ldr r3, [pc, #144] ; (80044f0 ) 800445e: 2200 movs r2, #0 8004460: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 8004462: f7fe ffd7 bl 8003414 8004466: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) 8004468: e008 b.n 800447c { if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) 800446a: f7fe ffd3 bl 8003414 800446e: 4602 mov r2, r0 8004470: 693b ldr r3, [r7, #16] 8004472: 1ad3 subs r3, r2, r3 8004474: 2b02 cmp r3, #2 8004476: d901 bls.n 800447c { return HAL_TIMEOUT; 8004478: 2303 movs r3, #3 800447a: e144 b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) 800447c: 4b1a ldr r3, [pc, #104] ; (80044e8 ) 800447e: 6f5b ldr r3, [r3, #116] ; 0x74 8004480: f003 0302 and.w r3, r3, #2 8004484: 2b00 cmp r3, #0 8004486: d1f0 bne.n 800446a } } } } /*------------------------------ LSE Configuration -------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) 8004488: 687b ldr r3, [r7, #4] 800448a: 681b ldr r3, [r3, #0] 800448c: f003 0304 and.w r3, r3, #4 8004490: 2b00 cmp r3, #0 8004492: f000 80a0 beq.w 80045d6 { FlagStatus pwrclkchanged = RESET; 8004496: 2300 movs r3, #0 8004498: 75fb strb r3, [r7, #23] /* 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()) 800449a: 4b13 ldr r3, [pc, #76] ; (80044e8 ) 800449c: 6c1b ldr r3, [r3, #64] ; 0x40 800449e: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 80044a2: 2b00 cmp r3, #0 80044a4: d10f bne.n 80044c6 { __HAL_RCC_PWR_CLK_ENABLE(); 80044a6: 2300 movs r3, #0 80044a8: 60bb str r3, [r7, #8] 80044aa: 4b0f ldr r3, [pc, #60] ; (80044e8 ) 80044ac: 6c1b ldr r3, [r3, #64] ; 0x40 80044ae: 4a0e ldr r2, [pc, #56] ; (80044e8 ) 80044b0: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 80044b4: 6413 str r3, [r2, #64] ; 0x40 80044b6: 4b0c ldr r3, [pc, #48] ; (80044e8 ) 80044b8: 6c1b ldr r3, [r3, #64] ; 0x40 80044ba: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 80044be: 60bb str r3, [r7, #8] 80044c0: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; 80044c2: 2301 movs r3, #1 80044c4: 75fb strb r3, [r7, #23] } if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) 80044c6: 4b0b ldr r3, [pc, #44] ; (80044f4 ) 80044c8: 681b ldr r3, [r3, #0] 80044ca: f403 7380 and.w r3, r3, #256 ; 0x100 80044ce: 2b00 cmp r3, #0 80044d0: d121 bne.n 8004516 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR, PWR_CR_DBP); 80044d2: 4b08 ldr r3, [pc, #32] ; (80044f4 ) 80044d4: 681b ldr r3, [r3, #0] 80044d6: 4a07 ldr r2, [pc, #28] ; (80044f4 ) 80044d8: f443 7380 orr.w r3, r3, #256 ; 0x100 80044dc: 6013 str r3, [r2, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); 80044de: f7fe ff99 bl 8003414 80044e2: 6138 str r0, [r7, #16] while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) 80044e4: e011 b.n 800450a 80044e6: bf00 nop 80044e8: 40023800 .word 0x40023800 80044ec: 42470000 .word 0x42470000 80044f0: 42470e80 .word 0x42470e80 80044f4: 40007000 .word 0x40007000 { if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) 80044f8: f7fe ff8c bl 8003414 80044fc: 4602 mov r2, r0 80044fe: 693b ldr r3, [r7, #16] 8004500: 1ad3 subs r3, r2, r3 8004502: 2b02 cmp r3, #2 8004504: d901 bls.n 800450a { return HAL_TIMEOUT; 8004506: 2303 movs r3, #3 8004508: e0fd b.n 8004706 while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) 800450a: 4b81 ldr r3, [pc, #516] ; (8004710 ) 800450c: 681b ldr r3, [r3, #0] 800450e: f403 7380 and.w r3, r3, #256 ; 0x100 8004512: 2b00 cmp r3, #0 8004514: d0f0 beq.n 80044f8 } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); 8004516: 687b ldr r3, [r7, #4] 8004518: 689b ldr r3, [r3, #8] 800451a: 2b01 cmp r3, #1 800451c: d106 bne.n 800452c 800451e: 4b7d ldr r3, [pc, #500] ; (8004714 ) 8004520: 6f1b ldr r3, [r3, #112] ; 0x70 8004522: 4a7c ldr r2, [pc, #496] ; (8004714 ) 8004524: f043 0301 orr.w r3, r3, #1 8004528: 6713 str r3, [r2, #112] ; 0x70 800452a: e01c b.n 8004566 800452c: 687b ldr r3, [r7, #4] 800452e: 689b ldr r3, [r3, #8] 8004530: 2b05 cmp r3, #5 8004532: d10c bne.n 800454e 8004534: 4b77 ldr r3, [pc, #476] ; (8004714 ) 8004536: 6f1b ldr r3, [r3, #112] ; 0x70 8004538: 4a76 ldr r2, [pc, #472] ; (8004714 ) 800453a: f043 0304 orr.w r3, r3, #4 800453e: 6713 str r3, [r2, #112] ; 0x70 8004540: 4b74 ldr r3, [pc, #464] ; (8004714 ) 8004542: 6f1b ldr r3, [r3, #112] ; 0x70 8004544: 4a73 ldr r2, [pc, #460] ; (8004714 ) 8004546: f043 0301 orr.w r3, r3, #1 800454a: 6713 str r3, [r2, #112] ; 0x70 800454c: e00b b.n 8004566 800454e: 4b71 ldr r3, [pc, #452] ; (8004714 ) 8004550: 6f1b ldr r3, [r3, #112] ; 0x70 8004552: 4a70 ldr r2, [pc, #448] ; (8004714 ) 8004554: f023 0301 bic.w r3, r3, #1 8004558: 6713 str r3, [r2, #112] ; 0x70 800455a: 4b6e ldr r3, [pc, #440] ; (8004714 ) 800455c: 6f1b ldr r3, [r3, #112] ; 0x70 800455e: 4a6d ldr r2, [pc, #436] ; (8004714 ) 8004560: f023 0304 bic.w r3, r3, #4 8004564: 6713 str r3, [r2, #112] ; 0x70 /* Check the LSE State */ if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF) 8004566: 687b ldr r3, [r7, #4] 8004568: 689b ldr r3, [r3, #8] 800456a: 2b00 cmp r3, #0 800456c: d015 beq.n 800459a { /* Get Start Tick*/ tickstart = HAL_GetTick(); 800456e: f7fe ff51 bl 8003414 8004572: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) 8004574: e00a b.n 800458c { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) 8004576: f7fe ff4d bl 8003414 800457a: 4602 mov r2, r0 800457c: 693b ldr r3, [r7, #16] 800457e: 1ad3 subs r3, r2, r3 8004580: f241 3288 movw r2, #5000 ; 0x1388 8004584: 4293 cmp r3, r2 8004586: d901 bls.n 800458c { return HAL_TIMEOUT; 8004588: 2303 movs r3, #3 800458a: e0bc b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) 800458c: 4b61 ldr r3, [pc, #388] ; (8004714 ) 800458e: 6f1b ldr r3, [r3, #112] ; 0x70 8004590: f003 0302 and.w r3, r3, #2 8004594: 2b00 cmp r3, #0 8004596: d0ee beq.n 8004576 8004598: e014 b.n 80045c4 } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); 800459a: f7fe ff3b bl 8003414 800459e: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) 80045a0: e00a b.n 80045b8 { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) 80045a2: f7fe ff37 bl 8003414 80045a6: 4602 mov r2, r0 80045a8: 693b ldr r3, [r7, #16] 80045aa: 1ad3 subs r3, r2, r3 80045ac: f241 3288 movw r2, #5000 ; 0x1388 80045b0: 4293 cmp r3, r2 80045b2: d901 bls.n 80045b8 { return HAL_TIMEOUT; 80045b4: 2303 movs r3, #3 80045b6: e0a6 b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) 80045b8: 4b56 ldr r3, [pc, #344] ; (8004714 ) 80045ba: 6f1b ldr r3, [r3, #112] ; 0x70 80045bc: f003 0302 and.w r3, r3, #2 80045c0: 2b00 cmp r3, #0 80045c2: d1ee bne.n 80045a2 } } } /* Restore clock configuration if changed */ if(pwrclkchanged == SET) 80045c4: 7dfb ldrb r3, [r7, #23] 80045c6: 2b01 cmp r3, #1 80045c8: d105 bne.n 80045d6 { __HAL_RCC_PWR_CLK_DISABLE(); 80045ca: 4b52 ldr r3, [pc, #328] ; (8004714 ) 80045cc: 6c1b ldr r3, [r3, #64] ; 0x40 80045ce: 4a51 ldr r2, [pc, #324] ; (8004714 ) 80045d0: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 80045d4: 6413 str r3, [r2, #64] ; 0x40 } } /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) 80045d6: 687b ldr r3, [r7, #4] 80045d8: 699b ldr r3, [r3, #24] 80045da: 2b00 cmp r3, #0 80045dc: f000 8092 beq.w 8004704 { /* Check if the PLL is used as system clock or not */ if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL) 80045e0: 4b4c ldr r3, [pc, #304] ; (8004714 ) 80045e2: 689b ldr r3, [r3, #8] 80045e4: f003 030c and.w r3, r3, #12 80045e8: 2b08 cmp r3, #8 80045ea: d05c beq.n 80046a6 { if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) 80045ec: 687b ldr r3, [r7, #4] 80045ee: 699b ldr r3, [r3, #24] 80045f0: 2b02 cmp r3, #2 80045f2: d141 bne.n 8004678 assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN)); assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); 80045f4: 4b48 ldr r3, [pc, #288] ; (8004718 ) 80045f6: 2200 movs r2, #0 80045f8: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 80045fa: f7fe ff0b bl 8003414 80045fe: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) 8004600: e008 b.n 8004614 { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) 8004602: f7fe ff07 bl 8003414 8004606: 4602 mov r2, r0 8004608: 693b ldr r3, [r7, #16] 800460a: 1ad3 subs r3, r2, r3 800460c: 2b02 cmp r3, #2 800460e: d901 bls.n 8004614 { return HAL_TIMEOUT; 8004610: 2303 movs r3, #3 8004612: e078 b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) 8004614: 4b3f ldr r3, [pc, #252] ; (8004714 ) 8004616: 681b ldr r3, [r3, #0] 8004618: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 800461c: 2b00 cmp r3, #0 800461e: d1f0 bne.n 8004602 } } /* Configure the main PLL clock source, multiplication and division factors. */ WRITE_REG(RCC->PLLCFGR, (RCC_OscInitStruct->PLL.PLLSource | \ 8004620: 687b ldr r3, [r7, #4] 8004622: 69da ldr r2, [r3, #28] 8004624: 687b ldr r3, [r7, #4] 8004626: 6a1b ldr r3, [r3, #32] 8004628: 431a orrs r2, r3 800462a: 687b ldr r3, [r7, #4] 800462c: 6a5b ldr r3, [r3, #36] ; 0x24 800462e: 019b lsls r3, r3, #6 8004630: 431a orrs r2, r3 8004632: 687b ldr r3, [r7, #4] 8004634: 6a9b ldr r3, [r3, #40] ; 0x28 8004636: 085b lsrs r3, r3, #1 8004638: 3b01 subs r3, #1 800463a: 041b lsls r3, r3, #16 800463c: 431a orrs r2, r3 800463e: 687b ldr r3, [r7, #4] 8004640: 6adb ldr r3, [r3, #44] ; 0x2c 8004642: 061b lsls r3, r3, #24 8004644: 4933 ldr r1, [pc, #204] ; (8004714 ) 8004646: 4313 orrs r3, r2 8004648: 604b str r3, [r1, #4] RCC_OscInitStruct->PLL.PLLM | \ (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos) | \ (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos) | \ (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos))); /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); 800464a: 4b33 ldr r3, [pc, #204] ; (8004718 ) 800464c: 2201 movs r2, #1 800464e: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 8004650: f7fe fee0 bl 8003414 8004654: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) 8004656: e008 b.n 800466a { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) 8004658: f7fe fedc bl 8003414 800465c: 4602 mov r2, r0 800465e: 693b ldr r3, [r7, #16] 8004660: 1ad3 subs r3, r2, r3 8004662: 2b02 cmp r3, #2 8004664: d901 bls.n 800466a { return HAL_TIMEOUT; 8004666: 2303 movs r3, #3 8004668: e04d b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) 800466a: 4b2a ldr r3, [pc, #168] ; (8004714 ) 800466c: 681b ldr r3, [r3, #0] 800466e: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 8004672: 2b00 cmp r3, #0 8004674: d0f0 beq.n 8004658 8004676: e045 b.n 8004704 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); 8004678: 4b27 ldr r3, [pc, #156] ; (8004718 ) 800467a: 2200 movs r2, #0 800467c: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); 800467e: f7fe fec9 bl 8003414 8004682: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) 8004684: e008 b.n 8004698 { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) 8004686: f7fe fec5 bl 8003414 800468a: 4602 mov r2, r0 800468c: 693b ldr r3, [r7, #16] 800468e: 1ad3 subs r3, r2, r3 8004690: 2b02 cmp r3, #2 8004692: d901 bls.n 8004698 { return HAL_TIMEOUT; 8004694: 2303 movs r3, #3 8004696: e036 b.n 8004706 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) 8004698: 4b1e ldr r3, [pc, #120] ; (8004714 ) 800469a: 681b ldr r3, [r3, #0] 800469c: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 80046a0: 2b00 cmp r3, #0 80046a2: d1f0 bne.n 8004686 80046a4: e02e b.n 8004704 } } else { /* Check if there is a request to disable the PLL used as System clock source */ if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) 80046a6: 687b ldr r3, [r7, #4] 80046a8: 699b ldr r3, [r3, #24] 80046aa: 2b01 cmp r3, #1 80046ac: d101 bne.n 80046b2 { return HAL_ERROR; 80046ae: 2301 movs r3, #1 80046b0: e029 b.n 8004706 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ pll_config = RCC->PLLCFGR; 80046b2: 4b18 ldr r3, [pc, #96] ; (8004714 ) 80046b4: 685b ldr r3, [r3, #4] 80046b6: 60fb str r3, [r7, #12] if((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || 80046b8: 68fb ldr r3, [r7, #12] 80046ba: f403 0280 and.w r2, r3, #4194304 ; 0x400000 80046be: 687b ldr r3, [r7, #4] 80046c0: 69db ldr r3, [r3, #28] 80046c2: 429a cmp r2, r3 80046c4: d11c bne.n 8004700 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || 80046c6: 68fb ldr r3, [r7, #12] 80046c8: f003 023f and.w r2, r3, #63 ; 0x3f 80046cc: 687b ldr r3, [r7, #4] 80046ce: 6a1b ldr r3, [r3, #32] if((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || 80046d0: 429a cmp r2, r3 80046d2: d115 bne.n 8004700 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != RCC_OscInitStruct->PLL.PLLN) || 80046d4: 68fa ldr r2, [r7, #12] 80046d6: f647 73c0 movw r3, #32704 ; 0x7fc0 80046da: 4013 ands r3, r2 80046dc: 687a ldr r2, [r7, #4] 80046de: 6a52 ldr r2, [r2, #36] ; 0x24 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || 80046e0: 4293 cmp r3, r2 80046e2: d10d bne.n 8004700 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || 80046e4: 68fb ldr r3, [r7, #12] 80046e6: f403 3240 and.w r2, r3, #196608 ; 0x30000 80046ea: 687b ldr r3, [r7, #4] 80046ec: 6a9b ldr r3, [r3, #40] ; 0x28 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != RCC_OscInitStruct->PLL.PLLN) || 80046ee: 429a cmp r2, r3 80046f0: d106 bne.n 8004700 (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != RCC_OscInitStruct->PLL.PLLQ)) 80046f2: 68fb ldr r3, [r7, #12] 80046f4: f003 6270 and.w r2, r3, #251658240 ; 0xf000000 80046f8: 687b ldr r3, [r7, #4] 80046fa: 6adb ldr r3, [r3, #44] ; 0x2c (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || 80046fc: 429a cmp r2, r3 80046fe: d001 beq.n 8004704 { return HAL_ERROR; 8004700: 2301 movs r3, #1 8004702: e000 b.n 8004706 } } } } return HAL_OK; 8004704: 2300 movs r3, #0 } 8004706: 4618 mov r0, r3 8004708: 3718 adds r7, #24 800470a: 46bd mov sp, r7 800470c: bd80 pop {r7, pc} 800470e: bf00 nop 8004710: 40007000 .word 0x40007000 8004714: 40023800 .word 0x40023800 8004718: 42470060 .word 0x42470060 0800471c : * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency * (for more details refer to section above "Initialization/de-initialization functions") * @retval None */ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { 800471c: b580 push {r7, lr} 800471e: b084 sub sp, #16 8004720: af00 add r7, sp, #0 8004722: 6078 str r0, [r7, #4] 8004724: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if(RCC_ClkInitStruct == NULL) 8004726: 687b ldr r3, [r7, #4] 8004728: 2b00 cmp r3, #0 800472a: d101 bne.n 8004730 { return HAL_ERROR; 800472c: 2301 movs r3, #1 800472e: e0cc b.n 80048ca /* 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()) 8004730: 4b68 ldr r3, [pc, #416] ; (80048d4 ) 8004732: 681b ldr r3, [r3, #0] 8004734: f003 030f and.w r3, r3, #15 8004738: 683a ldr r2, [r7, #0] 800473a: 429a cmp r2, r3 800473c: d90c bls.n 8004758 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); 800473e: 4b65 ldr r3, [pc, #404] ; (80048d4 ) 8004740: 683a ldr r2, [r7, #0] 8004742: b2d2 uxtb r2, r2 8004744: 701a strb r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if(__HAL_FLASH_GET_LATENCY() != FLatency) 8004746: 4b63 ldr r3, [pc, #396] ; (80048d4 ) 8004748: 681b ldr r3, [r3, #0] 800474a: f003 030f and.w r3, r3, #15 800474e: 683a ldr r2, [r7, #0] 8004750: 429a cmp r2, r3 8004752: d001 beq.n 8004758 { return HAL_ERROR; 8004754: 2301 movs r3, #1 8004756: e0b8 b.n 80048ca } } /*-------------------------- HCLK Configuration --------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) 8004758: 687b ldr r3, [r7, #4] 800475a: 681b ldr r3, [r3, #0] 800475c: f003 0302 and.w r3, r3, #2 8004760: 2b00 cmp r3, #0 8004762: d020 beq.n 80047a6 { /* Set the highest APBx dividers in order to ensure that we do not go through a non-spec phase whatever we decrease or increase HCLK. */ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) 8004764: 687b ldr r3, [r7, #4] 8004766: 681b ldr r3, [r3, #0] 8004768: f003 0304 and.w r3, r3, #4 800476c: 2b00 cmp r3, #0 800476e: d005 beq.n 800477c { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); 8004770: 4b59 ldr r3, [pc, #356] ; (80048d8 ) 8004772: 689b ldr r3, [r3, #8] 8004774: 4a58 ldr r2, [pc, #352] ; (80048d8 ) 8004776: f443 53e0 orr.w r3, r3, #7168 ; 0x1c00 800477a: 6093 str r3, [r2, #8] } if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) 800477c: 687b ldr r3, [r7, #4] 800477e: 681b ldr r3, [r3, #0] 8004780: f003 0308 and.w r3, r3, #8 8004784: 2b00 cmp r3, #0 8004786: d005 beq.n 8004794 { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); 8004788: 4b53 ldr r3, [pc, #332] ; (80048d8 ) 800478a: 689b ldr r3, [r3, #8] 800478c: 4a52 ldr r2, [pc, #328] ; (80048d8 ) 800478e: f443 4360 orr.w r3, r3, #57344 ; 0xe000 8004792: 6093 str r3, [r2, #8] } assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); 8004794: 4b50 ldr r3, [pc, #320] ; (80048d8 ) 8004796: 689b ldr r3, [r3, #8] 8004798: f023 02f0 bic.w r2, r3, #240 ; 0xf0 800479c: 687b ldr r3, [r7, #4] 800479e: 689b ldr r3, [r3, #8] 80047a0: 494d ldr r1, [pc, #308] ; (80048d8 ) 80047a2: 4313 orrs r3, r2 80047a4: 608b str r3, [r1, #8] } /*------------------------- SYSCLK Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) 80047a6: 687b ldr r3, [r7, #4] 80047a8: 681b ldr r3, [r3, #0] 80047aa: f003 0301 and.w r3, r3, #1 80047ae: 2b00 cmp r3, #0 80047b0: d044 beq.n 800483c { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) 80047b2: 687b ldr r3, [r7, #4] 80047b4: 685b ldr r3, [r3, #4] 80047b6: 2b01 cmp r3, #1 80047b8: d107 bne.n 80047ca { /* Check the HSE ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) 80047ba: 4b47 ldr r3, [pc, #284] ; (80048d8 ) 80047bc: 681b ldr r3, [r3, #0] 80047be: f403 3300 and.w r3, r3, #131072 ; 0x20000 80047c2: 2b00 cmp r3, #0 80047c4: d119 bne.n 80047fa { return HAL_ERROR; 80047c6: 2301 movs r3, #1 80047c8: e07f b.n 80048ca } } /* PLL is selected as System Clock Source */ else if((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || 80047ca: 687b ldr r3, [r7, #4] 80047cc: 685b ldr r3, [r3, #4] 80047ce: 2b02 cmp r3, #2 80047d0: d003 beq.n 80047da (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLRCLK)) 80047d2: 687b ldr r3, [r7, #4] 80047d4: 685b ldr r3, [r3, #4] else if((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || 80047d6: 2b03 cmp r3, #3 80047d8: d107 bne.n 80047ea { /* Check the PLL ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) 80047da: 4b3f ldr r3, [pc, #252] ; (80048d8 ) 80047dc: 681b ldr r3, [r3, #0] 80047de: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 80047e2: 2b00 cmp r3, #0 80047e4: d109 bne.n 80047fa { return HAL_ERROR; 80047e6: 2301 movs r3, #1 80047e8: e06f b.n 80048ca } /* HSI is selected as System Clock Source */ else { /* Check the HSI ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) 80047ea: 4b3b ldr r3, [pc, #236] ; (80048d8 ) 80047ec: 681b ldr r3, [r3, #0] 80047ee: f003 0302 and.w r3, r3, #2 80047f2: 2b00 cmp r3, #0 80047f4: d101 bne.n 80047fa { return HAL_ERROR; 80047f6: 2301 movs r3, #1 80047f8: e067 b.n 80048ca } } __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); 80047fa: 4b37 ldr r3, [pc, #220] ; (80048d8 ) 80047fc: 689b ldr r3, [r3, #8] 80047fe: f023 0203 bic.w r2, r3, #3 8004802: 687b ldr r3, [r7, #4] 8004804: 685b ldr r3, [r3, #4] 8004806: 4934 ldr r1, [pc, #208] ; (80048d8 ) 8004808: 4313 orrs r3, r2 800480a: 608b str r3, [r1, #8] /* Get Start Tick */ tickstart = HAL_GetTick(); 800480c: f7fe fe02 bl 8003414 8004810: 60f8 str r0, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) 8004812: e00a b.n 800482a { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) 8004814: f7fe fdfe bl 8003414 8004818: 4602 mov r2, r0 800481a: 68fb ldr r3, [r7, #12] 800481c: 1ad3 subs r3, r2, r3 800481e: f241 3288 movw r2, #5000 ; 0x1388 8004822: 4293 cmp r3, r2 8004824: d901 bls.n 800482a { return HAL_TIMEOUT; 8004826: 2303 movs r3, #3 8004828: e04f b.n 80048ca while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) 800482a: 4b2b ldr r3, [pc, #172] ; (80048d8 ) 800482c: 689b ldr r3, [r3, #8] 800482e: f003 020c and.w r2, r3, #12 8004832: 687b ldr r3, [r7, #4] 8004834: 685b ldr r3, [r3, #4] 8004836: 009b lsls r3, r3, #2 8004838: 429a cmp r2, r3 800483a: d1eb bne.n 8004814 } } } /* Decreasing the number of wait states because of lower CPU frequency */ if(FLatency < __HAL_FLASH_GET_LATENCY()) 800483c: 4b25 ldr r3, [pc, #148] ; (80048d4 ) 800483e: 681b ldr r3, [r3, #0] 8004840: f003 030f and.w r3, r3, #15 8004844: 683a ldr r2, [r7, #0] 8004846: 429a cmp r2, r3 8004848: d20c bcs.n 8004864 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); 800484a: 4b22 ldr r3, [pc, #136] ; (80048d4 ) 800484c: 683a ldr r2, [r7, #0] 800484e: b2d2 uxtb r2, r2 8004850: 701a strb r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if(__HAL_FLASH_GET_LATENCY() != FLatency) 8004852: 4b20 ldr r3, [pc, #128] ; (80048d4 ) 8004854: 681b ldr r3, [r3, #0] 8004856: f003 030f and.w r3, r3, #15 800485a: 683a ldr r2, [r7, #0] 800485c: 429a cmp r2, r3 800485e: d001 beq.n 8004864 { return HAL_ERROR; 8004860: 2301 movs r3, #1 8004862: e032 b.n 80048ca } } /*-------------------------- PCLK1 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) 8004864: 687b ldr r3, [r7, #4] 8004866: 681b ldr r3, [r3, #0] 8004868: f003 0304 and.w r3, r3, #4 800486c: 2b00 cmp r3, #0 800486e: d008 beq.n 8004882 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); 8004870: 4b19 ldr r3, [pc, #100] ; (80048d8 ) 8004872: 689b ldr r3, [r3, #8] 8004874: f423 52e0 bic.w r2, r3, #7168 ; 0x1c00 8004878: 687b ldr r3, [r7, #4] 800487a: 68db ldr r3, [r3, #12] 800487c: 4916 ldr r1, [pc, #88] ; (80048d8 ) 800487e: 4313 orrs r3, r2 8004880: 608b str r3, [r1, #8] } /*-------------------------- PCLK2 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) 8004882: 687b ldr r3, [r7, #4] 8004884: 681b ldr r3, [r3, #0] 8004886: f003 0308 and.w r3, r3, #8 800488a: 2b00 cmp r3, #0 800488c: d009 beq.n 80048a2 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); 800488e: 4b12 ldr r3, [pc, #72] ; (80048d8 ) 8004890: 689b ldr r3, [r3, #8] 8004892: f423 4260 bic.w r2, r3, #57344 ; 0xe000 8004896: 687b ldr r3, [r7, #4] 8004898: 691b ldr r3, [r3, #16] 800489a: 00db lsls r3, r3, #3 800489c: 490e ldr r1, [pc, #56] ; (80048d8 ) 800489e: 4313 orrs r3, r2 80048a0: 608b str r3, [r1, #8] } /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; 80048a2: f000 f821 bl 80048e8 80048a6: 4601 mov r1, r0 80048a8: 4b0b ldr r3, [pc, #44] ; (80048d8 ) 80048aa: 689b ldr r3, [r3, #8] 80048ac: 091b lsrs r3, r3, #4 80048ae: f003 030f and.w r3, r3, #15 80048b2: 4a0a ldr r2, [pc, #40] ; (80048dc ) 80048b4: 5cd3 ldrb r3, [r2, r3] 80048b6: fa21 f303 lsr.w r3, r1, r3 80048ba: 4a09 ldr r2, [pc, #36] ; (80048e0 ) 80048bc: 6013 str r3, [r2, #0] /* Configure the source of time base considering new system clocks settings */ HAL_InitTick (uwTickPrio); 80048be: 4b09 ldr r3, [pc, #36] ; (80048e4 ) 80048c0: 681b ldr r3, [r3, #0] 80048c2: 4618 mov r0, r3 80048c4: f7fe fd62 bl 800338c return HAL_OK; 80048c8: 2300 movs r3, #0 } 80048ca: 4618 mov r0, r3 80048cc: 3710 adds r7, #16 80048ce: 46bd mov sp, r7 80048d0: bd80 pop {r7, pc} 80048d2: bf00 nop 80048d4: 40023c00 .word 0x40023c00 80048d8: 40023800 .word 0x40023800 80048dc: 08005928 .word 0x08005928 80048e0: 20000004 .word 0x20000004 80048e4: 20000008 .word 0x20000008 080048e8 : * * * @retval SYSCLK frequency */ __weak uint32_t HAL_RCC_GetSysClockFreq(void) { 80048e8: b5f0 push {r4, r5, r6, r7, lr} 80048ea: b085 sub sp, #20 80048ec: af00 add r7, sp, #0 uint32_t pllm = 0U, pllvco = 0U, pllp = 0U; 80048ee: 2300 movs r3, #0 80048f0: 607b str r3, [r7, #4] 80048f2: 2300 movs r3, #0 80048f4: 60fb str r3, [r7, #12] 80048f6: 2300 movs r3, #0 80048f8: 603b str r3, [r7, #0] uint32_t sysclockfreq = 0U; 80048fa: 2300 movs r3, #0 80048fc: 60bb str r3, [r7, #8] /* Get SYSCLK source -------------------------------------------------------*/ switch (RCC->CFGR & RCC_CFGR_SWS) 80048fe: 4b63 ldr r3, [pc, #396] ; (8004a8c ) 8004900: 689b ldr r3, [r3, #8] 8004902: f003 030c and.w r3, r3, #12 8004906: 2b04 cmp r3, #4 8004908: d007 beq.n 800491a 800490a: 2b08 cmp r3, #8 800490c: d008 beq.n 8004920 800490e: 2b00 cmp r3, #0 8004910: f040 80b4 bne.w 8004a7c { case RCC_CFGR_SWS_HSI: /* HSI used as system clock source */ { sysclockfreq = HSI_VALUE; 8004914: 4b5e ldr r3, [pc, #376] ; (8004a90 ) 8004916: 60bb str r3, [r7, #8] break; 8004918: e0b3 b.n 8004a82 } case RCC_CFGR_SWS_HSE: /* HSE used as system clock source */ { sysclockfreq = HSE_VALUE; 800491a: 4b5e ldr r3, [pc, #376] ; (8004a94 ) 800491c: 60bb str r3, [r7, #8] break; 800491e: e0b0 b.n 8004a82 } case RCC_CFGR_SWS_PLL: /* PLL used as system clock source */ { /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN SYSCLK = PLL_VCO / PLLP */ pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; 8004920: 4b5a ldr r3, [pc, #360] ; (8004a8c ) 8004922: 685b ldr r3, [r3, #4] 8004924: f003 033f and.w r3, r3, #63 ; 0x3f 8004928: 607b str r3, [r7, #4] if(__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) 800492a: 4b58 ldr r3, [pc, #352] ; (8004a8c ) 800492c: 685b ldr r3, [r3, #4] 800492e: f403 0380 and.w r3, r3, #4194304 ; 0x400000 8004932: 2b00 cmp r3, #0 8004934: d04a beq.n 80049cc { /* HSE used as PLL clock source */ pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); 8004936: 4b55 ldr r3, [pc, #340] ; (8004a8c ) 8004938: 685b ldr r3, [r3, #4] 800493a: 099b lsrs r3, r3, #6 800493c: f04f 0400 mov.w r4, #0 8004940: f240 11ff movw r1, #511 ; 0x1ff 8004944: f04f 0200 mov.w r2, #0 8004948: ea03 0501 and.w r5, r3, r1 800494c: ea04 0602 and.w r6, r4, r2 8004950: 4629 mov r1, r5 8004952: 4632 mov r2, r6 8004954: f04f 0300 mov.w r3, #0 8004958: f04f 0400 mov.w r4, #0 800495c: 0154 lsls r4, r2, #5 800495e: ea44 64d1 orr.w r4, r4, r1, lsr #27 8004962: 014b lsls r3, r1, #5 8004964: 4619 mov r1, r3 8004966: 4622 mov r2, r4 8004968: 1b49 subs r1, r1, r5 800496a: eb62 0206 sbc.w r2, r2, r6 800496e: f04f 0300 mov.w r3, #0 8004972: f04f 0400 mov.w r4, #0 8004976: 0194 lsls r4, r2, #6 8004978: ea44 6491 orr.w r4, r4, r1, lsr #26 800497c: 018b lsls r3, r1, #6 800497e: 1a5b subs r3, r3, r1 8004980: eb64 0402 sbc.w r4, r4, r2 8004984: f04f 0100 mov.w r1, #0 8004988: f04f 0200 mov.w r2, #0 800498c: 00e2 lsls r2, r4, #3 800498e: ea42 7253 orr.w r2, r2, r3, lsr #29 8004992: 00d9 lsls r1, r3, #3 8004994: 460b mov r3, r1 8004996: 4614 mov r4, r2 8004998: 195b adds r3, r3, r5 800499a: eb44 0406 adc.w r4, r4, r6 800499e: f04f 0100 mov.w r1, #0 80049a2: f04f 0200 mov.w r2, #0 80049a6: 0262 lsls r2, r4, #9 80049a8: ea42 52d3 orr.w r2, r2, r3, lsr #23 80049ac: 0259 lsls r1, r3, #9 80049ae: 460b mov r3, r1 80049b0: 4614 mov r4, r2 80049b2: 4618 mov r0, r3 80049b4: 4621 mov r1, r4 80049b6: 687b ldr r3, [r7, #4] 80049b8: f04f 0400 mov.w r4, #0 80049bc: 461a mov r2, r3 80049be: 4623 mov r3, r4 80049c0: f7fc f804 bl 80009cc <__aeabi_uldivmod> 80049c4: 4603 mov r3, r0 80049c6: 460c mov r4, r1 80049c8: 60fb str r3, [r7, #12] 80049ca: e049 b.n 8004a60 } else { /* HSI used as PLL clock source */ pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); 80049cc: 4b2f ldr r3, [pc, #188] ; (8004a8c ) 80049ce: 685b ldr r3, [r3, #4] 80049d0: 099b lsrs r3, r3, #6 80049d2: f04f 0400 mov.w r4, #0 80049d6: f240 11ff movw r1, #511 ; 0x1ff 80049da: f04f 0200 mov.w r2, #0 80049de: ea03 0501 and.w r5, r3, r1 80049e2: ea04 0602 and.w r6, r4, r2 80049e6: 4629 mov r1, r5 80049e8: 4632 mov r2, r6 80049ea: f04f 0300 mov.w r3, #0 80049ee: f04f 0400 mov.w r4, #0 80049f2: 0154 lsls r4, r2, #5 80049f4: ea44 64d1 orr.w r4, r4, r1, lsr #27 80049f8: 014b lsls r3, r1, #5 80049fa: 4619 mov r1, r3 80049fc: 4622 mov r2, r4 80049fe: 1b49 subs r1, r1, r5 8004a00: eb62 0206 sbc.w r2, r2, r6 8004a04: f04f 0300 mov.w r3, #0 8004a08: f04f 0400 mov.w r4, #0 8004a0c: 0194 lsls r4, r2, #6 8004a0e: ea44 6491 orr.w r4, r4, r1, lsr #26 8004a12: 018b lsls r3, r1, #6 8004a14: 1a5b subs r3, r3, r1 8004a16: eb64 0402 sbc.w r4, r4, r2 8004a1a: f04f 0100 mov.w r1, #0 8004a1e: f04f 0200 mov.w r2, #0 8004a22: 00e2 lsls r2, r4, #3 8004a24: ea42 7253 orr.w r2, r2, r3, lsr #29 8004a28: 00d9 lsls r1, r3, #3 8004a2a: 460b mov r3, r1 8004a2c: 4614 mov r4, r2 8004a2e: 195b adds r3, r3, r5 8004a30: eb44 0406 adc.w r4, r4, r6 8004a34: f04f 0100 mov.w r1, #0 8004a38: f04f 0200 mov.w r2, #0 8004a3c: 02a2 lsls r2, r4, #10 8004a3e: ea42 5293 orr.w r2, r2, r3, lsr #22 8004a42: 0299 lsls r1, r3, #10 8004a44: 460b mov r3, r1 8004a46: 4614 mov r4, r2 8004a48: 4618 mov r0, r3 8004a4a: 4621 mov r1, r4 8004a4c: 687b ldr r3, [r7, #4] 8004a4e: f04f 0400 mov.w r4, #0 8004a52: 461a mov r2, r3 8004a54: 4623 mov r3, r4 8004a56: f7fb ffb9 bl 80009cc <__aeabi_uldivmod> 8004a5a: 4603 mov r3, r0 8004a5c: 460c mov r4, r1 8004a5e: 60fb str r3, [r7, #12] } pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U) *2U); 8004a60: 4b0a ldr r3, [pc, #40] ; (8004a8c ) 8004a62: 685b ldr r3, [r3, #4] 8004a64: 0c1b lsrs r3, r3, #16 8004a66: f003 0303 and.w r3, r3, #3 8004a6a: 3301 adds r3, #1 8004a6c: 005b lsls r3, r3, #1 8004a6e: 603b str r3, [r7, #0] sysclockfreq = pllvco/pllp; 8004a70: 68fa ldr r2, [r7, #12] 8004a72: 683b ldr r3, [r7, #0] 8004a74: fbb2 f3f3 udiv r3, r2, r3 8004a78: 60bb str r3, [r7, #8] break; 8004a7a: e002 b.n 8004a82 } default: { sysclockfreq = HSI_VALUE; 8004a7c: 4b04 ldr r3, [pc, #16] ; (8004a90 ) 8004a7e: 60bb str r3, [r7, #8] break; 8004a80: bf00 nop } } return sysclockfreq; 8004a82: 68bb ldr r3, [r7, #8] } 8004a84: 4618 mov r0, r3 8004a86: 3714 adds r7, #20 8004a88: 46bd mov sp, r7 8004a8a: bdf0 pop {r4, r5, r6, r7, pc} 8004a8c: 40023800 .word 0x40023800 8004a90: 00f42400 .word 0x00f42400 8004a94: 007a1200 .word 0x007a1200 08004a98 : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval HAL status */ HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) { 8004a98: b580 push {r7, lr} 8004a9a: b082 sub sp, #8 8004a9c: af00 add r7, sp, #0 8004a9e: 6078 str r0, [r7, #4] /* Check the SPI handle allocation */ if (hspi == NULL) 8004aa0: 687b ldr r3, [r7, #4] 8004aa2: 2b00 cmp r3, #0 8004aa4: d101 bne.n 8004aaa { return HAL_ERROR; 8004aa6: 2301 movs r3, #1 8004aa8: e056 b.n 8004b58 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) { assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); } #else hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; 8004aaa: 687b ldr r3, [r7, #4] 8004aac: 2200 movs r2, #0 8004aae: 629a str r2, [r3, #40] ; 0x28 #endif /* USE_SPI_CRC */ if (hspi->State == HAL_SPI_STATE_RESET) 8004ab0: 687b ldr r3, [r7, #4] 8004ab2: f893 3051 ldrb.w r3, [r3, #81] ; 0x51 8004ab6: b2db uxtb r3, r3 8004ab8: 2b00 cmp r3, #0 8004aba: d106 bne.n 8004aca { /* Allocate lock resource and initialize it */ hspi->Lock = HAL_UNLOCKED; 8004abc: 687b ldr r3, [r7, #4] 8004abe: 2200 movs r2, #0 8004ac0: f883 2050 strb.w r2, [r3, #80] ; 0x50 /* Init the low level hardware : GPIO, CLOCK, NVIC... */ hspi->MspInitCallback(hspi); #else /* Init the low level hardware : GPIO, CLOCK, NVIC... */ HAL_SPI_MspInit(hspi); 8004ac4: 6878 ldr r0, [r7, #4] 8004ac6: f7fe fae1 bl 800308c #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ } hspi->State = HAL_SPI_STATE_BUSY; 8004aca: 687b ldr r3, [r7, #4] 8004acc: 2202 movs r2, #2 8004ace: f883 2051 strb.w r2, [r3, #81] ; 0x51 /* Disable the selected SPI peripheral */ __HAL_SPI_DISABLE(hspi); 8004ad2: 687b ldr r3, [r7, #4] 8004ad4: 681b ldr r3, [r3, #0] 8004ad6: 681a ldr r2, [r3, #0] 8004ad8: 687b ldr r3, [r7, #4] 8004ada: 681b ldr r3, [r3, #0] 8004adc: f022 0240 bic.w r2, r2, #64 ; 0x40 8004ae0: 601a str r2, [r3, #0] /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, Communication speed, First bit and CRC calculation state */ WRITE_REG(hspi->Instance->CR1, (hspi->Init.Mode | hspi->Init.Direction | hspi->Init.DataSize | 8004ae2: 687b ldr r3, [r7, #4] 8004ae4: 685a ldr r2, [r3, #4] 8004ae6: 687b ldr r3, [r7, #4] 8004ae8: 689b ldr r3, [r3, #8] 8004aea: 431a orrs r2, r3 8004aec: 687b ldr r3, [r7, #4] 8004aee: 68db ldr r3, [r3, #12] 8004af0: 431a orrs r2, r3 8004af2: 687b ldr r3, [r7, #4] 8004af4: 691b ldr r3, [r3, #16] 8004af6: 431a orrs r2, r3 8004af8: 687b ldr r3, [r7, #4] 8004afa: 695b ldr r3, [r3, #20] 8004afc: 431a orrs r2, r3 8004afe: 687b ldr r3, [r7, #4] 8004b00: 699b ldr r3, [r3, #24] 8004b02: f403 7300 and.w r3, r3, #512 ; 0x200 8004b06: 431a orrs r2, r3 8004b08: 687b ldr r3, [r7, #4] 8004b0a: 69db ldr r3, [r3, #28] 8004b0c: 431a orrs r2, r3 8004b0e: 687b ldr r3, [r7, #4] 8004b10: 6a1b ldr r3, [r3, #32] 8004b12: ea42 0103 orr.w r1, r2, r3 8004b16: 687b ldr r3, [r7, #4] 8004b18: 6a9a ldr r2, [r3, #40] ; 0x28 8004b1a: 687b ldr r3, [r7, #4] 8004b1c: 681b ldr r3, [r3, #0] 8004b1e: 430a orrs r2, r1 8004b20: 601a str r2, [r3, #0] hspi->Init.CLKPolarity | hspi->Init.CLKPhase | (hspi->Init.NSS & SPI_CR1_SSM) | hspi->Init.BaudRatePrescaler | hspi->Init.FirstBit | hspi->Init.CRCCalculation)); /* Configure : NSS management, TI Mode */ WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | hspi->Init.TIMode)); 8004b22: 687b ldr r3, [r7, #4] 8004b24: 699b ldr r3, [r3, #24] 8004b26: 0c1b lsrs r3, r3, #16 8004b28: f003 0104 and.w r1, r3, #4 8004b2c: 687b ldr r3, [r7, #4] 8004b2e: 6a5a ldr r2, [r3, #36] ; 0x24 8004b30: 687b ldr r3, [r7, #4] 8004b32: 681b ldr r3, [r3, #0] 8004b34: 430a orrs r2, r1 8004b36: 605a str r2, [r3, #4] } #endif /* USE_SPI_CRC */ #if defined(SPI_I2SCFGR_I2SMOD) /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); 8004b38: 687b ldr r3, [r7, #4] 8004b3a: 681b ldr r3, [r3, #0] 8004b3c: 69da ldr r2, [r3, #28] 8004b3e: 687b ldr r3, [r7, #4] 8004b40: 681b ldr r3, [r3, #0] 8004b42: f422 6200 bic.w r2, r2, #2048 ; 0x800 8004b46: 61da str r2, [r3, #28] #endif /* SPI_I2SCFGR_I2SMOD */ hspi->ErrorCode = HAL_SPI_ERROR_NONE; 8004b48: 687b ldr r3, [r7, #4] 8004b4a: 2200 movs r2, #0 8004b4c: 655a str r2, [r3, #84] ; 0x54 hspi->State = HAL_SPI_STATE_READY; 8004b4e: 687b ldr r3, [r7, #4] 8004b50: 2201 movs r2, #1 8004b52: f883 2051 strb.w r2, [r3, #81] ; 0x51 return HAL_OK; 8004b56: 2300 movs r3, #0 } 8004b58: 4618 mov r0, r3 8004b5a: 3708 adds r7, #8 8004b5c: 46bd mov sp, r7 8004b5e: bd80 pop {r7, pc} 08004b60 : * @param pData pointer to data buffer * @param Size amount of data to be sent * @retval HAL status */ HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) { 8004b60: b480 push {r7} 8004b62: b087 sub sp, #28 8004b64: af00 add r7, sp, #0 8004b66: 60f8 str r0, [r7, #12] 8004b68: 60b9 str r1, [r7, #8] 8004b6a: 4613 mov r3, r2 8004b6c: 80fb strh r3, [r7, #6] HAL_StatusTypeDef errorcode = HAL_OK; 8004b6e: 2300 movs r3, #0 8004b70: 75fb strb r3, [r7, #23] /* Check Direction parameter */ assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); /* Process Locked */ __HAL_LOCK(hspi); 8004b72: 68fb ldr r3, [r7, #12] 8004b74: f893 3050 ldrb.w r3, [r3, #80] ; 0x50 8004b78: 2b01 cmp r3, #1 8004b7a: d101 bne.n 8004b80 8004b7c: 2302 movs r3, #2 8004b7e: e067 b.n 8004c50 8004b80: 68fb ldr r3, [r7, #12] 8004b82: 2201 movs r2, #1 8004b84: f883 2050 strb.w r2, [r3, #80] ; 0x50 if ((pData == NULL) || (Size == 0U)) 8004b88: 68bb ldr r3, [r7, #8] 8004b8a: 2b00 cmp r3, #0 8004b8c: d002 beq.n 8004b94 8004b8e: 88fb ldrh r3, [r7, #6] 8004b90: 2b00 cmp r3, #0 8004b92: d102 bne.n 8004b9a { errorcode = HAL_ERROR; 8004b94: 2301 movs r3, #1 8004b96: 75fb strb r3, [r7, #23] goto error; 8004b98: e055 b.n 8004c46 } if (hspi->State != HAL_SPI_STATE_READY) 8004b9a: 68fb ldr r3, [r7, #12] 8004b9c: f893 3051 ldrb.w r3, [r3, #81] ; 0x51 8004ba0: b2db uxtb r3, r3 8004ba2: 2b01 cmp r3, #1 8004ba4: d002 beq.n 8004bac { errorcode = HAL_BUSY; 8004ba6: 2302 movs r3, #2 8004ba8: 75fb strb r3, [r7, #23] goto error; 8004baa: e04c b.n 8004c46 } /* Set the transaction information */ hspi->State = HAL_SPI_STATE_BUSY_TX; 8004bac: 68fb ldr r3, [r7, #12] 8004bae: 2203 movs r2, #3 8004bb0: f883 2051 strb.w r2, [r3, #81] ; 0x51 hspi->ErrorCode = HAL_SPI_ERROR_NONE; 8004bb4: 68fb ldr r3, [r7, #12] 8004bb6: 2200 movs r2, #0 8004bb8: 655a str r2, [r3, #84] ; 0x54 hspi->pTxBuffPtr = (uint8_t *)pData; 8004bba: 68fb ldr r3, [r7, #12] 8004bbc: 68ba ldr r2, [r7, #8] 8004bbe: 631a str r2, [r3, #48] ; 0x30 hspi->TxXferSize = Size; 8004bc0: 68fb ldr r3, [r7, #12] 8004bc2: 88fa ldrh r2, [r7, #6] 8004bc4: 869a strh r2, [r3, #52] ; 0x34 hspi->TxXferCount = Size; 8004bc6: 68fb ldr r3, [r7, #12] 8004bc8: 88fa ldrh r2, [r7, #6] 8004bca: 86da strh r2, [r3, #54] ; 0x36 /* Init field not used in handle to zero */ hspi->pRxBuffPtr = (uint8_t *)NULL; 8004bcc: 68fb ldr r3, [r7, #12] 8004bce: 2200 movs r2, #0 8004bd0: 639a str r2, [r3, #56] ; 0x38 hspi->RxXferSize = 0U; 8004bd2: 68fb ldr r3, [r7, #12] 8004bd4: 2200 movs r2, #0 8004bd6: 879a strh r2, [r3, #60] ; 0x3c hspi->RxXferCount = 0U; 8004bd8: 68fb ldr r3, [r7, #12] 8004bda: 2200 movs r2, #0 8004bdc: 87da strh r2, [r3, #62] ; 0x3e hspi->RxISR = NULL; 8004bde: 68fb ldr r3, [r7, #12] 8004be0: 2200 movs r2, #0 8004be2: 641a str r2, [r3, #64] ; 0x40 /* Set the function for IT treatment */ if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) 8004be4: 68fb ldr r3, [r7, #12] 8004be6: 68db ldr r3, [r3, #12] 8004be8: 2b00 cmp r3, #0 8004bea: d003 beq.n 8004bf4 { hspi->TxISR = SPI_TxISR_16BIT; 8004bec: 68fb ldr r3, [r7, #12] 8004bee: 4a1b ldr r2, [pc, #108] ; (8004c5c ) 8004bf0: 645a str r2, [r3, #68] ; 0x44 8004bf2: e002 b.n 8004bfa } else { hspi->TxISR = SPI_TxISR_8BIT; 8004bf4: 68fb ldr r3, [r7, #12] 8004bf6: 4a1a ldr r2, [pc, #104] ; (8004c60 ) 8004bf8: 645a str r2, [r3, #68] ; 0x44 } /* Configure communication direction : 1Line */ if (hspi->Init.Direction == SPI_DIRECTION_1LINE) 8004bfa: 68fb ldr r3, [r7, #12] 8004bfc: 689b ldr r3, [r3, #8] 8004bfe: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 8004c02: d107 bne.n 8004c14 { SPI_1LINE_TX(hspi); 8004c04: 68fb ldr r3, [r7, #12] 8004c06: 681b ldr r3, [r3, #0] 8004c08: 681a ldr r2, [r3, #0] 8004c0a: 68fb ldr r3, [r7, #12] 8004c0c: 681b ldr r3, [r3, #0] 8004c0e: f442 4280 orr.w r2, r2, #16384 ; 0x4000 8004c12: 601a str r2, [r3, #0] SPI_RESET_CRC(hspi); } #endif /* USE_SPI_CRC */ /* Enable TXE and ERR interrupt */ __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); 8004c14: 68fb ldr r3, [r7, #12] 8004c16: 681b ldr r3, [r3, #0] 8004c18: 685a ldr r2, [r3, #4] 8004c1a: 68fb ldr r3, [r7, #12] 8004c1c: 681b ldr r3, [r3, #0] 8004c1e: f042 02a0 orr.w r2, r2, #160 ; 0xa0 8004c22: 605a str r2, [r3, #4] /* Check if the SPI is already enabled */ if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) 8004c24: 68fb ldr r3, [r7, #12] 8004c26: 681b ldr r3, [r3, #0] 8004c28: 681b ldr r3, [r3, #0] 8004c2a: f003 0340 and.w r3, r3, #64 ; 0x40 8004c2e: 2b40 cmp r3, #64 ; 0x40 8004c30: d008 beq.n 8004c44 { /* Enable SPI peripheral */ __HAL_SPI_ENABLE(hspi); 8004c32: 68fb ldr r3, [r7, #12] 8004c34: 681b ldr r3, [r3, #0] 8004c36: 681a ldr r2, [r3, #0] 8004c38: 68fb ldr r3, [r7, #12] 8004c3a: 681b ldr r3, [r3, #0] 8004c3c: f042 0240 orr.w r2, r2, #64 ; 0x40 8004c40: 601a str r2, [r3, #0] 8004c42: e000 b.n 8004c46 } error : 8004c44: bf00 nop __HAL_UNLOCK(hspi); 8004c46: 68fb ldr r3, [r7, #12] 8004c48: 2200 movs r2, #0 8004c4a: f883 2050 strb.w r2, [r3, #80] ; 0x50 return errorcode; 8004c4e: 7dfb ldrb r3, [r7, #23] } 8004c50: 4618 mov r0, r3 8004c52: 371c adds r7, #28 8004c54: 46bd mov sp, r7 8004c56: f85d 7b04 ldr.w r7, [sp], #4 8004c5a: 4770 bx lr 8004c5c: 08004efb .word 0x08004efb 8004c60: 08004eb5 .word 0x08004eb5 08004c64 : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for the specified SPI module. * @retval None */ void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) { 8004c64: b580 push {r7, lr} 8004c66: b088 sub sp, #32 8004c68: af00 add r7, sp, #0 8004c6a: 6078 str r0, [r7, #4] uint32_t itsource = hspi->Instance->CR2; 8004c6c: 687b ldr r3, [r7, #4] 8004c6e: 681b ldr r3, [r3, #0] 8004c70: 685b ldr r3, [r3, #4] 8004c72: 61fb str r3, [r7, #28] uint32_t itflag = hspi->Instance->SR; 8004c74: 687b ldr r3, [r7, #4] 8004c76: 681b ldr r3, [r3, #0] 8004c78: 689b ldr r3, [r3, #8] 8004c7a: 61bb str r3, [r7, #24] /* SPI in mode Receiver ----------------------------------------------------*/ if ((SPI_CHECK_FLAG(itflag, SPI_FLAG_OVR) == RESET) && 8004c7c: 69bb ldr r3, [r7, #24] 8004c7e: 099b lsrs r3, r3, #6 8004c80: f003 0301 and.w r3, r3, #1 8004c84: 2b00 cmp r3, #0 8004c86: d10f bne.n 8004ca8 (SPI_CHECK_FLAG(itflag, SPI_FLAG_RXNE) != RESET) && (SPI_CHECK_IT_SOURCE(itsource, SPI_IT_RXNE) != RESET)) 8004c88: 69bb ldr r3, [r7, #24] 8004c8a: f003 0301 and.w r3, r3, #1 if ((SPI_CHECK_FLAG(itflag, SPI_FLAG_OVR) == RESET) && 8004c8e: 2b00 cmp r3, #0 8004c90: d00a beq.n 8004ca8 (SPI_CHECK_FLAG(itflag, SPI_FLAG_RXNE) != RESET) && (SPI_CHECK_IT_SOURCE(itsource, SPI_IT_RXNE) != RESET)) 8004c92: 69fb ldr r3, [r7, #28] 8004c94: 099b lsrs r3, r3, #6 8004c96: f003 0301 and.w r3, r3, #1 8004c9a: 2b00 cmp r3, #0 8004c9c: d004 beq.n 8004ca8 { hspi->RxISR(hspi); 8004c9e: 687b ldr r3, [r7, #4] 8004ca0: 6c1b ldr r3, [r3, #64] ; 0x40 8004ca2: 6878 ldr r0, [r7, #4] 8004ca4: 4798 blx r3 return; 8004ca6: e0d8 b.n 8004e5a } /* SPI in mode Transmitter -------------------------------------------------*/ if ((SPI_CHECK_FLAG(itflag, SPI_FLAG_TXE) != RESET) && (SPI_CHECK_IT_SOURCE(itsource, SPI_IT_TXE) != RESET)) 8004ca8: 69bb ldr r3, [r7, #24] 8004caa: 085b lsrs r3, r3, #1 8004cac: f003 0301 and.w r3, r3, #1 8004cb0: 2b00 cmp r3, #0 8004cb2: d00a beq.n 8004cca 8004cb4: 69fb ldr r3, [r7, #28] 8004cb6: 09db lsrs r3, r3, #7 8004cb8: f003 0301 and.w r3, r3, #1 8004cbc: 2b00 cmp r3, #0 8004cbe: d004 beq.n 8004cca { hspi->TxISR(hspi); 8004cc0: 687b ldr r3, [r7, #4] 8004cc2: 6c5b ldr r3, [r3, #68] ; 0x44 8004cc4: 6878 ldr r0, [r7, #4] 8004cc6: 4798 blx r3 return; 8004cc8: e0c7 b.n 8004e5a } /* SPI in Error Treatment --------------------------------------------------*/ if (((SPI_CHECK_FLAG(itflag, SPI_FLAG_MODF) != RESET) || (SPI_CHECK_FLAG(itflag, SPI_FLAG_OVR) != RESET) 8004cca: 69bb ldr r3, [r7, #24] 8004ccc: 095b lsrs r3, r3, #5 8004cce: f003 0301 and.w r3, r3, #1 8004cd2: 2b00 cmp r3, #0 8004cd4: d10c bne.n 8004cf0 8004cd6: 69bb ldr r3, [r7, #24] 8004cd8: 099b lsrs r3, r3, #6 8004cda: f003 0301 and.w r3, r3, #1 8004cde: 2b00 cmp r3, #0 8004ce0: d106 bne.n 8004cf0 || (SPI_CHECK_FLAG(itflag, SPI_FLAG_FRE) != RESET)) && (SPI_CHECK_IT_SOURCE(itsource, SPI_IT_ERR) != RESET)) 8004ce2: 69bb ldr r3, [r7, #24] 8004ce4: 0a1b lsrs r3, r3, #8 8004ce6: f003 0301 and.w r3, r3, #1 8004cea: 2b00 cmp r3, #0 8004cec: f000 80b5 beq.w 8004e5a 8004cf0: 69fb ldr r3, [r7, #28] 8004cf2: 095b lsrs r3, r3, #5 8004cf4: f003 0301 and.w r3, r3, #1 8004cf8: 2b00 cmp r3, #0 8004cfa: f000 80ae beq.w 8004e5a { /* SPI Overrun error interrupt occurred ----------------------------------*/ if (SPI_CHECK_FLAG(itflag, SPI_FLAG_OVR) != RESET) 8004cfe: 69bb ldr r3, [r7, #24] 8004d00: 099b lsrs r3, r3, #6 8004d02: f003 0301 and.w r3, r3, #1 8004d06: 2b00 cmp r3, #0 8004d08: d023 beq.n 8004d52 { if (hspi->State != HAL_SPI_STATE_BUSY_TX) 8004d0a: 687b ldr r3, [r7, #4] 8004d0c: f893 3051 ldrb.w r3, [r3, #81] ; 0x51 8004d10: b2db uxtb r3, r3 8004d12: 2b03 cmp r3, #3 8004d14: d011 beq.n 8004d3a { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); 8004d16: 687b ldr r3, [r7, #4] 8004d18: 6d5b ldr r3, [r3, #84] ; 0x54 8004d1a: f043 0204 orr.w r2, r3, #4 8004d1e: 687b ldr r3, [r7, #4] 8004d20: 655a str r2, [r3, #84] ; 0x54 __HAL_SPI_CLEAR_OVRFLAG(hspi); 8004d22: 2300 movs r3, #0 8004d24: 617b str r3, [r7, #20] 8004d26: 687b ldr r3, [r7, #4] 8004d28: 681b ldr r3, [r3, #0] 8004d2a: 68db ldr r3, [r3, #12] 8004d2c: 617b str r3, [r7, #20] 8004d2e: 687b ldr r3, [r7, #4] 8004d30: 681b ldr r3, [r3, #0] 8004d32: 689b ldr r3, [r3, #8] 8004d34: 617b str r3, [r7, #20] 8004d36: 697b ldr r3, [r7, #20] 8004d38: e00b b.n 8004d52 } else { __HAL_SPI_CLEAR_OVRFLAG(hspi); 8004d3a: 2300 movs r3, #0 8004d3c: 613b str r3, [r7, #16] 8004d3e: 687b ldr r3, [r7, #4] 8004d40: 681b ldr r3, [r3, #0] 8004d42: 68db ldr r3, [r3, #12] 8004d44: 613b str r3, [r7, #16] 8004d46: 687b ldr r3, [r7, #4] 8004d48: 681b ldr r3, [r3, #0] 8004d4a: 689b ldr r3, [r3, #8] 8004d4c: 613b str r3, [r7, #16] 8004d4e: 693b ldr r3, [r7, #16] return; 8004d50: e083 b.n 8004e5a } } /* SPI Mode Fault error interrupt occurred -------------------------------*/ if (SPI_CHECK_FLAG(itflag, SPI_FLAG_MODF) != RESET) 8004d52: 69bb ldr r3, [r7, #24] 8004d54: 095b lsrs r3, r3, #5 8004d56: f003 0301 and.w r3, r3, #1 8004d5a: 2b00 cmp r3, #0 8004d5c: d014 beq.n 8004d88 { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); 8004d5e: 687b ldr r3, [r7, #4] 8004d60: 6d5b ldr r3, [r3, #84] ; 0x54 8004d62: f043 0201 orr.w r2, r3, #1 8004d66: 687b ldr r3, [r7, #4] 8004d68: 655a str r2, [r3, #84] ; 0x54 __HAL_SPI_CLEAR_MODFFLAG(hspi); 8004d6a: 2300 movs r3, #0 8004d6c: 60fb str r3, [r7, #12] 8004d6e: 687b ldr r3, [r7, #4] 8004d70: 681b ldr r3, [r3, #0] 8004d72: 689b ldr r3, [r3, #8] 8004d74: 60fb str r3, [r7, #12] 8004d76: 687b ldr r3, [r7, #4] 8004d78: 681b ldr r3, [r3, #0] 8004d7a: 681a ldr r2, [r3, #0] 8004d7c: 687b ldr r3, [r7, #4] 8004d7e: 681b ldr r3, [r3, #0] 8004d80: f022 0240 bic.w r2, r2, #64 ; 0x40 8004d84: 601a str r2, [r3, #0] 8004d86: 68fb ldr r3, [r7, #12] } /* SPI Frame error interrupt occurred ------------------------------------*/ if (SPI_CHECK_FLAG(itflag, SPI_FLAG_FRE) != RESET) 8004d88: 69bb ldr r3, [r7, #24] 8004d8a: 0a1b lsrs r3, r3, #8 8004d8c: f003 0301 and.w r3, r3, #1 8004d90: 2b00 cmp r3, #0 8004d92: d00c beq.n 8004dae { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); 8004d94: 687b ldr r3, [r7, #4] 8004d96: 6d5b ldr r3, [r3, #84] ; 0x54 8004d98: f043 0208 orr.w r2, r3, #8 8004d9c: 687b ldr r3, [r7, #4] 8004d9e: 655a str r2, [r3, #84] ; 0x54 __HAL_SPI_CLEAR_FREFLAG(hspi); 8004da0: 2300 movs r3, #0 8004da2: 60bb str r3, [r7, #8] 8004da4: 687b ldr r3, [r7, #4] 8004da6: 681b ldr r3, [r3, #0] 8004da8: 689b ldr r3, [r3, #8] 8004daa: 60bb str r3, [r7, #8] 8004dac: 68bb ldr r3, [r7, #8] } if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) 8004dae: 687b ldr r3, [r7, #4] 8004db0: 6d5b ldr r3, [r3, #84] ; 0x54 8004db2: 2b00 cmp r3, #0 8004db4: d050 beq.n 8004e58 { /* Disable all interrupts */ __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); 8004db6: 687b ldr r3, [r7, #4] 8004db8: 681b ldr r3, [r3, #0] 8004dba: 685a ldr r2, [r3, #4] 8004dbc: 687b ldr r3, [r7, #4] 8004dbe: 681b ldr r3, [r3, #0] 8004dc0: f022 02e0 bic.w r2, r2, #224 ; 0xe0 8004dc4: 605a str r2, [r3, #4] hspi->State = HAL_SPI_STATE_READY; 8004dc6: 687b ldr r3, [r7, #4] 8004dc8: 2201 movs r2, #1 8004dca: f883 2051 strb.w r2, [r3, #81] ; 0x51 /* Disable the SPI DMA requests if enabled */ if ((HAL_IS_BIT_SET(itsource, SPI_CR2_TXDMAEN)) || (HAL_IS_BIT_SET(itsource, SPI_CR2_RXDMAEN))) 8004dce: 69fb ldr r3, [r7, #28] 8004dd0: f003 0302 and.w r3, r3, #2 8004dd4: 2b00 cmp r3, #0 8004dd6: d104 bne.n 8004de2 8004dd8: 69fb ldr r3, [r7, #28] 8004dda: f003 0301 and.w r3, r3, #1 8004dde: 2b00 cmp r3, #0 8004de0: d034 beq.n 8004e4c { CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); 8004de2: 687b ldr r3, [r7, #4] 8004de4: 681b ldr r3, [r3, #0] 8004de6: 685a ldr r2, [r3, #4] 8004de8: 687b ldr r3, [r7, #4] 8004dea: 681b ldr r3, [r3, #0] 8004dec: f022 0203 bic.w r2, r2, #3 8004df0: 605a str r2, [r3, #4] /* Abort the SPI DMA Rx channel */ if (hspi->hdmarx != NULL) 8004df2: 687b ldr r3, [r7, #4] 8004df4: 6cdb ldr r3, [r3, #76] ; 0x4c 8004df6: 2b00 cmp r3, #0 8004df8: d011 beq.n 8004e1e { /* Set the SPI DMA Abort callback : will lead to call HAL_SPI_ErrorCallback() at end of DMA abort procedure */ hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; 8004dfa: 687b ldr r3, [r7, #4] 8004dfc: 6cdb ldr r3, [r3, #76] ; 0x4c 8004dfe: 4a18 ldr r2, [pc, #96] ; (8004e60 ) 8004e00: 651a str r2, [r3, #80] ; 0x50 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) 8004e02: 687b ldr r3, [r7, #4] 8004e04: 6cdb ldr r3, [r3, #76] ; 0x4c 8004e06: 4618 mov r0, r3 8004e08: f7ff f80d bl 8003e26 8004e0c: 4603 mov r3, r0 8004e0e: 2b00 cmp r3, #0 8004e10: d005 beq.n 8004e1e { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); 8004e12: 687b ldr r3, [r7, #4] 8004e14: 6d5b ldr r3, [r3, #84] ; 0x54 8004e16: f043 0240 orr.w r2, r3, #64 ; 0x40 8004e1a: 687b ldr r3, [r7, #4] 8004e1c: 655a str r2, [r3, #84] ; 0x54 } } /* Abort the SPI DMA Tx channel */ if (hspi->hdmatx != NULL) 8004e1e: 687b ldr r3, [r7, #4] 8004e20: 6c9b ldr r3, [r3, #72] ; 0x48 8004e22: 2b00 cmp r3, #0 8004e24: d016 beq.n 8004e54 { /* Set the SPI DMA Abort callback : will lead to call HAL_SPI_ErrorCallback() at end of DMA abort procedure */ hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; 8004e26: 687b ldr r3, [r7, #4] 8004e28: 6c9b ldr r3, [r3, #72] ; 0x48 8004e2a: 4a0d ldr r2, [pc, #52] ; (8004e60 ) 8004e2c: 651a str r2, [r3, #80] ; 0x50 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) 8004e2e: 687b ldr r3, [r7, #4] 8004e30: 6c9b ldr r3, [r3, #72] ; 0x48 8004e32: 4618 mov r0, r3 8004e34: f7fe fff7 bl 8003e26 8004e38: 4603 mov r3, r0 8004e3a: 2b00 cmp r3, #0 8004e3c: d00a beq.n 8004e54 { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); 8004e3e: 687b ldr r3, [r7, #4] 8004e40: 6d5b ldr r3, [r3, #84] ; 0x54 8004e42: f043 0240 orr.w r2, r3, #64 ; 0x40 8004e46: 687b ldr r3, [r7, #4] 8004e48: 655a str r2, [r3, #84] ; 0x54 if (hspi->hdmatx != NULL) 8004e4a: e003 b.n 8004e54 { /* Call user error callback */ #if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) hspi->ErrorCallback(hspi); #else HAL_SPI_ErrorCallback(hspi); 8004e4c: 6878 ldr r0, [r7, #4] 8004e4e: f000 f813 bl 8004e78 #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ } } return; 8004e52: e000 b.n 8004e56 if (hspi->hdmatx != NULL) 8004e54: bf00 nop return; 8004e56: bf00 nop 8004e58: bf00 nop } } 8004e5a: 3720 adds r7, #32 8004e5c: 46bd mov sp, r7 8004e5e: bd80 pop {r7, pc} 8004e60: 08004e8d .word 0x08004e8d 08004e64 : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval None */ __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) { 8004e64: b480 push {r7} 8004e66: b083 sub sp, #12 8004e68: af00 add r7, sp, #0 8004e6a: 6078 str r0, [r7, #4] UNUSED(hspi); /* NOTE : This function should not be modified, when the callback is needed, the HAL_SPI_TxCpltCallback should be implemented in the user file */ } 8004e6c: bf00 nop 8004e6e: 370c adds r7, #12 8004e70: 46bd mov sp, r7 8004e72: f85d 7b04 ldr.w r7, [sp], #4 8004e76: 4770 bx lr 08004e78 : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval None */ __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) { 8004e78: b480 push {r7} 8004e7a: b083 sub sp, #12 8004e7c: af00 add r7, sp, #0 8004e7e: 6078 str r0, [r7, #4] the HAL_SPI_ErrorCallback should be implemented in the user file */ /* NOTE : The ErrorCode parameter in the hspi handle is updated by the SPI processes and user can use HAL_SPI_GetError() API to check the latest error occurred */ } 8004e80: bf00 nop 8004e82: 370c adds r7, #12 8004e84: 46bd mov sp, r7 8004e86: f85d 7b04 ldr.w r7, [sp], #4 8004e8a: 4770 bx lr 08004e8c : * (To be called at end of DMA Abort procedure following error occurrence). * @param hdma DMA handle. * @retval None */ static void SPI_DMAAbortOnError(DMA_HandleTypeDef *hdma) { 8004e8c: b580 push {r7, lr} 8004e8e: b084 sub sp, #16 8004e90: af00 add r7, sp, #0 8004e92: 6078 str r0, [r7, #4] SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */ 8004e94: 687b ldr r3, [r7, #4] 8004e96: 6b9b ldr r3, [r3, #56] ; 0x38 8004e98: 60fb str r3, [r7, #12] hspi->RxXferCount = 0U; 8004e9a: 68fb ldr r3, [r7, #12] 8004e9c: 2200 movs r2, #0 8004e9e: 87da strh r2, [r3, #62] ; 0x3e hspi->TxXferCount = 0U; 8004ea0: 68fb ldr r3, [r7, #12] 8004ea2: 2200 movs r2, #0 8004ea4: 86da strh r2, [r3, #54] ; 0x36 /* Call user error callback */ #if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) hspi->ErrorCallback(hspi); #else HAL_SPI_ErrorCallback(hspi); 8004ea6: 68f8 ldr r0, [r7, #12] 8004ea8: f7ff ffe6 bl 8004e78 #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ } 8004eac: bf00 nop 8004eae: 3710 adds r7, #16 8004eb0: 46bd mov sp, r7 8004eb2: bd80 pop {r7, pc} 08004eb4 : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval None */ static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) { 8004eb4: b580 push {r7, lr} 8004eb6: b082 sub sp, #8 8004eb8: af00 add r7, sp, #0 8004eba: 6078 str r0, [r7, #4] *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); 8004ebc: 687b ldr r3, [r7, #4] 8004ebe: 6b1a ldr r2, [r3, #48] ; 0x30 8004ec0: 687b ldr r3, [r7, #4] 8004ec2: 681b ldr r3, [r3, #0] 8004ec4: 330c adds r3, #12 8004ec6: 7812 ldrb r2, [r2, #0] 8004ec8: 701a strb r2, [r3, #0] hspi->pTxBuffPtr++; 8004eca: 687b ldr r3, [r7, #4] 8004ecc: 6b1b ldr r3, [r3, #48] ; 0x30 8004ece: 1c5a adds r2, r3, #1 8004ed0: 687b ldr r3, [r7, #4] 8004ed2: 631a str r2, [r3, #48] ; 0x30 hspi->TxXferCount--; 8004ed4: 687b ldr r3, [r7, #4] 8004ed6: 8edb ldrh r3, [r3, #54] ; 0x36 8004ed8: b29b uxth r3, r3 8004eda: 3b01 subs r3, #1 8004edc: b29a uxth r2, r3 8004ede: 687b ldr r3, [r7, #4] 8004ee0: 86da strh r2, [r3, #54] ; 0x36 if (hspi->TxXferCount == 0U) 8004ee2: 687b ldr r3, [r7, #4] 8004ee4: 8edb ldrh r3, [r3, #54] ; 0x36 8004ee6: b29b uxth r3, r3 8004ee8: 2b00 cmp r3, #0 8004eea: d102 bne.n 8004ef2 { /* Enable CRC Transmission */ SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); } #endif /* USE_SPI_CRC */ SPI_CloseTx_ISR(hspi); 8004eec: 6878 ldr r0, [r7, #4] 8004eee: f000 f8d3 bl 8005098 } } 8004ef2: bf00 nop 8004ef4: 3708 adds r7, #8 8004ef6: 46bd mov sp, r7 8004ef8: bd80 pop {r7, pc} 08004efa : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval None */ static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) { 8004efa: b580 push {r7, lr} 8004efc: b082 sub sp, #8 8004efe: af00 add r7, sp, #0 8004f00: 6078 str r0, [r7, #4] /* Transmit data in 16 Bit mode */ hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); 8004f02: 687b ldr r3, [r7, #4] 8004f04: 6b1b ldr r3, [r3, #48] ; 0x30 8004f06: 881a ldrh r2, [r3, #0] 8004f08: 687b ldr r3, [r7, #4] 8004f0a: 681b ldr r3, [r3, #0] 8004f0c: 60da str r2, [r3, #12] hspi->pTxBuffPtr += sizeof(uint16_t); 8004f0e: 687b ldr r3, [r7, #4] 8004f10: 6b1b ldr r3, [r3, #48] ; 0x30 8004f12: 1c9a adds r2, r3, #2 8004f14: 687b ldr r3, [r7, #4] 8004f16: 631a str r2, [r3, #48] ; 0x30 hspi->TxXferCount--; 8004f18: 687b ldr r3, [r7, #4] 8004f1a: 8edb ldrh r3, [r3, #54] ; 0x36 8004f1c: b29b uxth r3, r3 8004f1e: 3b01 subs r3, #1 8004f20: b29a uxth r2, r3 8004f22: 687b ldr r3, [r7, #4] 8004f24: 86da strh r2, [r3, #54] ; 0x36 if (hspi->TxXferCount == 0U) 8004f26: 687b ldr r3, [r7, #4] 8004f28: 8edb ldrh r3, [r3, #54] ; 0x36 8004f2a: b29b uxth r3, r3 8004f2c: 2b00 cmp r3, #0 8004f2e: d102 bne.n 8004f36 { /* Enable CRC Transmission */ SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); } #endif /* USE_SPI_CRC */ SPI_CloseTx_ISR(hspi); 8004f30: 6878 ldr r0, [r7, #4] 8004f32: f000 f8b1 bl 8005098 } } 8004f36: bf00 nop 8004f38: 3708 adds r7, #8 8004f3a: 46bd mov sp, r7 8004f3c: bd80 pop {r7, pc} 08004f3e : * @param Tickstart tick start value * @retval HAL status */ static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, uint32_t Timeout, uint32_t Tickstart) { 8004f3e: b580 push {r7, lr} 8004f40: b084 sub sp, #16 8004f42: af00 add r7, sp, #0 8004f44: 60f8 str r0, [r7, #12] 8004f46: 60b9 str r1, [r7, #8] 8004f48: 603b str r3, [r7, #0] 8004f4a: 4613 mov r3, r2 8004f4c: 71fb strb r3, [r7, #7] while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) 8004f4e: e04c b.n 8004fea { if (Timeout != HAL_MAX_DELAY) 8004f50: 683b ldr r3, [r7, #0] 8004f52: f1b3 3fff cmp.w r3, #4294967295 8004f56: d048 beq.n 8004fea { if (((HAL_GetTick() - Tickstart) >= Timeout) || (Timeout == 0U)) 8004f58: f7fe fa5c bl 8003414 8004f5c: 4602 mov r2, r0 8004f5e: 69bb ldr r3, [r7, #24] 8004f60: 1ad3 subs r3, r2, r3 8004f62: 683a ldr r2, [r7, #0] 8004f64: 429a cmp r2, r3 8004f66: d902 bls.n 8004f6e 8004f68: 683b ldr r3, [r7, #0] 8004f6a: 2b00 cmp r3, #0 8004f6c: d13d bne.n 8004fea /* Disable the SPI and reset the CRC: the CRC value should be cleared on both master and slave sides in order to resynchronize the master and slave for their respective CRC calculation */ /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); 8004f6e: 68fb ldr r3, [r7, #12] 8004f70: 681b ldr r3, [r3, #0] 8004f72: 685a ldr r2, [r3, #4] 8004f74: 68fb ldr r3, [r7, #12] 8004f76: 681b ldr r3, [r3, #0] 8004f78: f022 02e0 bic.w r2, r2, #224 ; 0xe0 8004f7c: 605a str r2, [r3, #4] if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) 8004f7e: 68fb ldr r3, [r7, #12] 8004f80: 685b ldr r3, [r3, #4] 8004f82: f5b3 7f82 cmp.w r3, #260 ; 0x104 8004f86: d111 bne.n 8004fac 8004f88: 68fb ldr r3, [r7, #12] 8004f8a: 689b ldr r3, [r3, #8] 8004f8c: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 8004f90: d004 beq.n 8004f9c || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) 8004f92: 68fb ldr r3, [r7, #12] 8004f94: 689b ldr r3, [r3, #8] 8004f96: f5b3 6f80 cmp.w r3, #1024 ; 0x400 8004f9a: d107 bne.n 8004fac { /* Disable SPI peripheral */ __HAL_SPI_DISABLE(hspi); 8004f9c: 68fb ldr r3, [r7, #12] 8004f9e: 681b ldr r3, [r3, #0] 8004fa0: 681a ldr r2, [r3, #0] 8004fa2: 68fb ldr r3, [r7, #12] 8004fa4: 681b ldr r3, [r3, #0] 8004fa6: f022 0240 bic.w r2, r2, #64 ; 0x40 8004faa: 601a str r2, [r3, #0] } /* Reset CRC Calculation */ if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) 8004fac: 68fb ldr r3, [r7, #12] 8004fae: 6a9b ldr r3, [r3, #40] ; 0x28 8004fb0: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 8004fb4: d10f bne.n 8004fd6 { SPI_RESET_CRC(hspi); 8004fb6: 68fb ldr r3, [r7, #12] 8004fb8: 681b ldr r3, [r3, #0] 8004fba: 681a ldr r2, [r3, #0] 8004fbc: 68fb ldr r3, [r7, #12] 8004fbe: 681b ldr r3, [r3, #0] 8004fc0: f422 5200 bic.w r2, r2, #8192 ; 0x2000 8004fc4: 601a str r2, [r3, #0] 8004fc6: 68fb ldr r3, [r7, #12] 8004fc8: 681b ldr r3, [r3, #0] 8004fca: 681a ldr r2, [r3, #0] 8004fcc: 68fb ldr r3, [r7, #12] 8004fce: 681b ldr r3, [r3, #0] 8004fd0: f442 5200 orr.w r2, r2, #8192 ; 0x2000 8004fd4: 601a str r2, [r3, #0] } hspi->State = HAL_SPI_STATE_READY; 8004fd6: 68fb ldr r3, [r7, #12] 8004fd8: 2201 movs r2, #1 8004fda: f883 2051 strb.w r2, [r3, #81] ; 0x51 /* Process Unlocked */ __HAL_UNLOCK(hspi); 8004fde: 68fb ldr r3, [r7, #12] 8004fe0: 2200 movs r2, #0 8004fe2: f883 2050 strb.w r2, [r3, #80] ; 0x50 return HAL_TIMEOUT; 8004fe6: 2303 movs r3, #3 8004fe8: e00f b.n 800500a while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) 8004fea: 68fb ldr r3, [r7, #12] 8004fec: 681b ldr r3, [r3, #0] 8004fee: 689a ldr r2, [r3, #8] 8004ff0: 68bb ldr r3, [r7, #8] 8004ff2: 4013 ands r3, r2 8004ff4: 68ba ldr r2, [r7, #8] 8004ff6: 429a cmp r2, r3 8004ff8: bf0c ite eq 8004ffa: 2301 moveq r3, #1 8004ffc: 2300 movne r3, #0 8004ffe: b2db uxtb r3, r3 8005000: 461a mov r2, r3 8005002: 79fb ldrb r3, [r7, #7] 8005004: 429a cmp r2, r3 8005006: d1a3 bne.n 8004f50 } } } return HAL_OK; 8005008: 2300 movs r3, #0 } 800500a: 4618 mov r0, r3 800500c: 3710 adds r7, #16 800500e: 46bd mov sp, r7 8005010: bd80 pop {r7, pc} ... 08005014 : * @param Timeout Timeout duration * @param Tickstart tick start value * @retval HAL status */ static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) { 8005014: b580 push {r7, lr} 8005016: b088 sub sp, #32 8005018: af02 add r7, sp, #8 800501a: 60f8 str r0, [r7, #12] 800501c: 60b9 str r1, [r7, #8] 800501e: 607a str r2, [r7, #4] /* Timeout in µs */ __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); 8005020: 4b1b ldr r3, [pc, #108] ; (8005090 ) 8005022: 681b ldr r3, [r3, #0] 8005024: 4a1b ldr r2, [pc, #108] ; (8005094 ) 8005026: fba2 2303 umull r2, r3, r2, r3 800502a: 0d5b lsrs r3, r3, #21 800502c: f44f 727a mov.w r2, #1000 ; 0x3e8 8005030: fb02 f303 mul.w r3, r2, r3 8005034: 617b str r3, [r7, #20] /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ if (hspi->Init.Mode == SPI_MODE_MASTER) 8005036: 68fb ldr r3, [r7, #12] 8005038: 685b ldr r3, [r3, #4] 800503a: f5b3 7f82 cmp.w r3, #260 ; 0x104 800503e: d112 bne.n 8005066 { /* Control the BSY flag */ if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) 8005040: 687b ldr r3, [r7, #4] 8005042: 9300 str r3, [sp, #0] 8005044: 68bb ldr r3, [r7, #8] 8005046: 2200 movs r2, #0 8005048: 2180 movs r1, #128 ; 0x80 800504a: 68f8 ldr r0, [r7, #12] 800504c: f7ff ff77 bl 8004f3e 8005050: 4603 mov r3, r0 8005052: 2b00 cmp r3, #0 8005054: d016 beq.n 8005084 { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); 8005056: 68fb ldr r3, [r7, #12] 8005058: 6d5b ldr r3, [r3, #84] ; 0x54 800505a: f043 0220 orr.w r2, r3, #32 800505e: 68fb ldr r3, [r7, #12] 8005060: 655a str r2, [r3, #84] ; 0x54 return HAL_TIMEOUT; 8005062: 2303 movs r3, #3 8005064: e00f b.n 8005086 * User have to calculate the timeout value to fit with the time of 1 byte transfer. * This time is directly link with the SPI clock from Master device. */ do { if (count == 0U) 8005066: 697b ldr r3, [r7, #20] 8005068: 2b00 cmp r3, #0 800506a: d00a beq.n 8005082 { break; } count--; 800506c: 697b ldr r3, [r7, #20] 800506e: 3b01 subs r3, #1 8005070: 617b str r3, [r7, #20] } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); 8005072: 68fb ldr r3, [r7, #12] 8005074: 681b ldr r3, [r3, #0] 8005076: 689b ldr r3, [r3, #8] 8005078: f003 0380 and.w r3, r3, #128 ; 0x80 800507c: 2b80 cmp r3, #128 ; 0x80 800507e: d0f2 beq.n 8005066 8005080: e000 b.n 8005084 break; 8005082: bf00 nop } return HAL_OK; 8005084: 2300 movs r3, #0 } 8005086: 4618 mov r0, r3 8005088: 3718 adds r7, #24 800508a: 46bd mov sp, r7 800508c: bd80 pop {r7, pc} 800508e: bf00 nop 8005090: 20000004 .word 0x20000004 8005094: 165e9f81 .word 0x165e9f81 08005098 : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval None */ static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) { 8005098: b580 push {r7, lr} 800509a: b086 sub sp, #24 800509c: af00 add r7, sp, #0 800509e: 6078 str r0, [r7, #4] uint32_t tickstart; __IO uint32_t count = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U); 80050a0: 4b2c ldr r3, [pc, #176] ; (8005154 ) 80050a2: 681b ldr r3, [r3, #0] 80050a4: 4a2c ldr r2, [pc, #176] ; (8005158 ) 80050a6: fba2 2303 umull r2, r3, r2, r3 80050aa: 0a5b lsrs r3, r3, #9 80050ac: 2264 movs r2, #100 ; 0x64 80050ae: fb02 f303 mul.w r3, r2, r3 80050b2: 613b str r3, [r7, #16] /* Init tickstart for timeout management*/ tickstart = HAL_GetTick(); 80050b4: f7fe f9ae bl 8003414 80050b8: 6178 str r0, [r7, #20] /* Wait until TXE flag is set */ do { if (count == 0U) 80050ba: 693b ldr r3, [r7, #16] 80050bc: 2b00 cmp r3, #0 80050be: d106 bne.n 80050ce { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); 80050c0: 687b ldr r3, [r7, #4] 80050c2: 6d5b ldr r3, [r3, #84] ; 0x54 80050c4: f043 0220 orr.w r2, r3, #32 80050c8: 687b ldr r3, [r7, #4] 80050ca: 655a str r2, [r3, #84] ; 0x54 break; 80050cc: e009 b.n 80050e2 } count--; 80050ce: 693b ldr r3, [r7, #16] 80050d0: 3b01 subs r3, #1 80050d2: 613b str r3, [r7, #16] } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); 80050d4: 687b ldr r3, [r7, #4] 80050d6: 681b ldr r3, [r3, #0] 80050d8: 689b ldr r3, [r3, #8] 80050da: f003 0302 and.w r3, r3, #2 80050de: 2b00 cmp r3, #0 80050e0: d0eb beq.n 80050ba /* Disable TXE and ERR interrupt */ __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); 80050e2: 687b ldr r3, [r7, #4] 80050e4: 681b ldr r3, [r3, #0] 80050e6: 685a ldr r2, [r3, #4] 80050e8: 687b ldr r3, [r7, #4] 80050ea: 681b ldr r3, [r3, #0] 80050ec: f022 02a0 bic.w r2, r2, #160 ; 0xa0 80050f0: 605a str r2, [r3, #4] /* Check the end of the transaction */ if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) 80050f2: 697a ldr r2, [r7, #20] 80050f4: 2164 movs r1, #100 ; 0x64 80050f6: 6878 ldr r0, [r7, #4] 80050f8: f7ff ff8c bl 8005014 80050fc: 4603 mov r3, r0 80050fe: 2b00 cmp r3, #0 8005100: d005 beq.n 800510e { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); 8005102: 687b ldr r3, [r7, #4] 8005104: 6d5b ldr r3, [r3, #84] ; 0x54 8005106: f043 0220 orr.w r2, r3, #32 800510a: 687b ldr r3, [r7, #4] 800510c: 655a str r2, [r3, #84] ; 0x54 } /* Clear overrun flag in 2 Lines communication mode because received is not read */ if (hspi->Init.Direction == SPI_DIRECTION_2LINES) 800510e: 687b ldr r3, [r7, #4] 8005110: 689b ldr r3, [r3, #8] 8005112: 2b00 cmp r3, #0 8005114: d10a bne.n 800512c { __HAL_SPI_CLEAR_OVRFLAG(hspi); 8005116: 2300 movs r3, #0 8005118: 60fb str r3, [r7, #12] 800511a: 687b ldr r3, [r7, #4] 800511c: 681b ldr r3, [r3, #0] 800511e: 68db ldr r3, [r3, #12] 8005120: 60fb str r3, [r7, #12] 8005122: 687b ldr r3, [r7, #4] 8005124: 681b ldr r3, [r3, #0] 8005126: 689b ldr r3, [r3, #8] 8005128: 60fb str r3, [r7, #12] 800512a: 68fb ldr r3, [r7, #12] } hspi->State = HAL_SPI_STATE_READY; 800512c: 687b ldr r3, [r7, #4] 800512e: 2201 movs r2, #1 8005130: f883 2051 strb.w r2, [r3, #81] ; 0x51 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) 8005134: 687b ldr r3, [r7, #4] 8005136: 6d5b ldr r3, [r3, #84] ; 0x54 8005138: 2b00 cmp r3, #0 800513a: d003 beq.n 8005144 { /* Call user error callback */ #if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) hspi->ErrorCallback(hspi); #else HAL_SPI_ErrorCallback(hspi); 800513c: 6878 ldr r0, [r7, #4] 800513e: f7ff fe9b bl 8004e78 hspi->TxCpltCallback(hspi); #else HAL_SPI_TxCpltCallback(hspi); #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ } } 8005142: e002 b.n 800514a HAL_SPI_TxCpltCallback(hspi); 8005144: 6878 ldr r0, [r7, #4] 8005146: f7ff fe8d bl 8004e64 } 800514a: bf00 nop 800514c: 3718 adds r7, #24 800514e: 46bd mov sp, r7 8005150: bd80 pop {r7, pc} 8005152: bf00 nop 8005154: 20000004 .word 0x20000004 8005158: 057619f1 .word 0x057619f1 0800515c : * 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) { 800515c: b580 push {r7, lr} 800515e: b082 sub sp, #8 8005160: af00 add r7, sp, #0 8005162: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) 8005164: 687b ldr r3, [r7, #4] 8005166: 2b00 cmp r3, #0 8005168: d101 bne.n 800516e { return HAL_ERROR; 800516a: 2301 movs r3, #1 800516c: e01d b.n 80051aa assert_param(IS_TIM_INSTANCE(htim->Instance)); assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) 800516e: 687b ldr r3, [r7, #4] 8005170: f893 303d ldrb.w r3, [r3, #61] ; 0x3d 8005174: b2db uxtb r3, r3 8005176: 2b00 cmp r3, #0 8005178: d106 bne.n 8005188 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; 800517a: 687b ldr r3, [r7, #4] 800517c: 2200 movs r2, #0 800517e: f883 203c strb.w r2, [r3, #60] ; 0x3c } /* Init the low level hardware : GPIO, CLOCK, NVIC */ htim->Base_MspInitCallback(htim); #else /* Init the low level hardware : GPIO, CLOCK, NVIC */ HAL_TIM_Base_MspInit(htim); 8005182: 6878 ldr r0, [r7, #4] 8005184: f7fd ffd2 bl 800312c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; 8005188: 687b ldr r3, [r7, #4] 800518a: 2202 movs r2, #2 800518c: f883 203d strb.w r2, [r3, #61] ; 0x3d /* Set the Time Base configuration */ TIM_Base_SetConfig(htim->Instance, &htim->Init); 8005190: 687b ldr r3, [r7, #4] 8005192: 681a ldr r2, [r3, #0] 8005194: 687b ldr r3, [r7, #4] 8005196: 3304 adds r3, #4 8005198: 4619 mov r1, r3 800519a: 4610 mov r0, r2 800519c: f000 f9ae bl 80054fc /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; 80051a0: 687b ldr r3, [r7, #4] 80051a2: 2201 movs r2, #1 80051a4: f883 203d strb.w r2, [r3, #61] ; 0x3d return HAL_OK; 80051a8: 2300 movs r3, #0 } 80051aa: 4618 mov r0, r3 80051ac: 3708 adds r7, #8 80051ae: 46bd mov sp, r7 80051b0: bd80 pop {r7, pc} 080051b2 : * @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) { 80051b2: b480 push {r7} 80051b4: b085 sub sp, #20 80051b6: af00 add r7, sp, #0 80051b8: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); /* Enable the TIM Update interrupt */ __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); 80051ba: 687b ldr r3, [r7, #4] 80051bc: 681b ldr r3, [r3, #0] 80051be: 68da ldr r2, [r3, #12] 80051c0: 687b ldr r3, [r7, #4] 80051c2: 681b ldr r3, [r3, #0] 80051c4: f042 0201 orr.w r2, r2, #1 80051c8: 60da str r2, [r3, #12] /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; 80051ca: 687b ldr r3, [r7, #4] 80051cc: 681b ldr r3, [r3, #0] 80051ce: 689b ldr r3, [r3, #8] 80051d0: f003 0307 and.w r3, r3, #7 80051d4: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) 80051d6: 68fb ldr r3, [r7, #12] 80051d8: 2b06 cmp r3, #6 80051da: d007 beq.n 80051ec { __HAL_TIM_ENABLE(htim); 80051dc: 687b ldr r3, [r7, #4] 80051de: 681b ldr r3, [r3, #0] 80051e0: 681a ldr r2, [r3, #0] 80051e2: 687b ldr r3, [r7, #4] 80051e4: 681b ldr r3, [r3, #0] 80051e6: f042 0201 orr.w r2, r2, #1 80051ea: 601a str r2, [r3, #0] } /* Return function status */ return HAL_OK; 80051ec: 2300 movs r3, #0 } 80051ee: 4618 mov r0, r3 80051f0: 3714 adds r7, #20 80051f2: 46bd mov sp, r7 80051f4: f85d 7b04 ldr.w r7, [sp], #4 80051f8: 4770 bx lr 080051fa : * @arg TIM_OPMODE_SINGLE: Only one pulse will be generated. * @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated. * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode) { 80051fa: b580 push {r7, lr} 80051fc: b082 sub sp, #8 80051fe: af00 add r7, sp, #0 8005200: 6078 str r0, [r7, #4] 8005202: 6039 str r1, [r7, #0] /* Check the TIM handle allocation */ if (htim == NULL) 8005204: 687b ldr r3, [r7, #4] 8005206: 2b00 cmp r3, #0 8005208: d101 bne.n 800520e { return HAL_ERROR; 800520a: 2301 movs r3, #1 800520c: e02d b.n 800526a assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_OPM_MODE(OnePulseMode)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) 800520e: 687b ldr r3, [r7, #4] 8005210: f893 303d ldrb.w r3, [r3, #61] ; 0x3d 8005214: b2db uxtb r3, r3 8005216: 2b00 cmp r3, #0 8005218: d106 bne.n 8005228 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; 800521a: 687b ldr r3, [r7, #4] 800521c: 2200 movs r2, #0 800521e: f883 203c strb.w r2, [r3, #60] ; 0x3c } /* Init the low level hardware : GPIO, CLOCK, NVIC */ htim->OnePulse_MspInitCallback(htim); #else /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ HAL_TIM_OnePulse_MspInit(htim); 8005222: 6878 ldr r0, [r7, #4] 8005224: f000 f825 bl 8005272 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; 8005228: 687b ldr r3, [r7, #4] 800522a: 2202 movs r2, #2 800522c: f883 203d strb.w r2, [r3, #61] ; 0x3d /* Configure the Time base in the One Pulse Mode */ TIM_Base_SetConfig(htim->Instance, &htim->Init); 8005230: 687b ldr r3, [r7, #4] 8005232: 681a ldr r2, [r3, #0] 8005234: 687b ldr r3, [r7, #4] 8005236: 3304 adds r3, #4 8005238: 4619 mov r1, r3 800523a: 4610 mov r0, r2 800523c: f000 f95e bl 80054fc /* Reset the OPM Bit */ htim->Instance->CR1 &= ~TIM_CR1_OPM; 8005240: 687b ldr r3, [r7, #4] 8005242: 681b ldr r3, [r3, #0] 8005244: 681a ldr r2, [r3, #0] 8005246: 687b ldr r3, [r7, #4] 8005248: 681b ldr r3, [r3, #0] 800524a: f022 0208 bic.w r2, r2, #8 800524e: 601a str r2, [r3, #0] /* Configure the OPM Mode */ htim->Instance->CR1 |= OnePulseMode; 8005250: 687b ldr r3, [r7, #4] 8005252: 681b ldr r3, [r3, #0] 8005254: 6819 ldr r1, [r3, #0] 8005256: 687b ldr r3, [r7, #4] 8005258: 681b ldr r3, [r3, #0] 800525a: 683a ldr r2, [r7, #0] 800525c: 430a orrs r2, r1 800525e: 601a str r2, [r3, #0] /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; 8005260: 687b ldr r3, [r7, #4] 8005262: 2201 movs r2, #1 8005264: f883 203d strb.w r2, [r3, #61] ; 0x3d return HAL_OK; 8005268: 2300 movs r3, #0 } 800526a: 4618 mov r0, r3 800526c: 3708 adds r7, #8 800526e: 46bd mov sp, r7 8005270: bd80 pop {r7, pc} 08005272 : * @brief Initializes the TIM One Pulse MSP. * @param htim TIM One Pulse handle * @retval None */ __weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim) { 8005272: b480 push {r7} 8005274: b083 sub sp, #12 8005276: af00 add r7, sp, #0 8005278: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_OnePulse_MspInit could be implemented in the user file */ } 800527a: bf00 nop 800527c: 370c adds r7, #12 800527e: 46bd mov sp, r7 8005280: f85d 7b04 ldr.w r7, [sp], #4 8005284: 4770 bx lr 08005286 : * @brief This function handles TIM interrupts requests. * @param htim TIM handle * @retval None */ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) { 8005286: b580 push {r7, lr} 8005288: b082 sub sp, #8 800528a: af00 add r7, sp, #0 800528c: 6078 str r0, [r7, #4] /* Capture compare 1 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) 800528e: 687b ldr r3, [r7, #4] 8005290: 681b ldr r3, [r3, #0] 8005292: 691b ldr r3, [r3, #16] 8005294: f003 0302 and.w r3, r3, #2 8005298: 2b02 cmp r3, #2 800529a: d122 bne.n 80052e2 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) 800529c: 687b ldr r3, [r7, #4] 800529e: 681b ldr r3, [r3, #0] 80052a0: 68db ldr r3, [r3, #12] 80052a2: f003 0302 and.w r3, r3, #2 80052a6: 2b02 cmp r3, #2 80052a8: d11b bne.n 80052e2 { { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); 80052aa: 687b ldr r3, [r7, #4] 80052ac: 681b ldr r3, [r3, #0] 80052ae: f06f 0202 mvn.w r2, #2 80052b2: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; 80052b4: 687b ldr r3, [r7, #4] 80052b6: 2201 movs r2, #1 80052b8: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) 80052ba: 687b ldr r3, [r7, #4] 80052bc: 681b ldr r3, [r3, #0] 80052be: 699b ldr r3, [r3, #24] 80052c0: f003 0303 and.w r3, r3, #3 80052c4: 2b00 cmp r3, #0 80052c6: d003 beq.n 80052d0 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); 80052c8: 6878 ldr r0, [r7, #4] 80052ca: f000 f8f8 bl 80054be 80052ce: e005 b.n 80052dc { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); 80052d0: 6878 ldr r0, [r7, #4] 80052d2: f000 f8ea bl 80054aa HAL_TIM_PWM_PulseFinishedCallback(htim); 80052d6: 6878 ldr r0, [r7, #4] 80052d8: f000 f8fb bl 80054d2 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; 80052dc: 687b ldr r3, [r7, #4] 80052de: 2200 movs r2, #0 80052e0: 771a strb r2, [r3, #28] } } } /* Capture compare 2 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) 80052e2: 687b ldr r3, [r7, #4] 80052e4: 681b ldr r3, [r3, #0] 80052e6: 691b ldr r3, [r3, #16] 80052e8: f003 0304 and.w r3, r3, #4 80052ec: 2b04 cmp r3, #4 80052ee: d122 bne.n 8005336 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) 80052f0: 687b ldr r3, [r7, #4] 80052f2: 681b ldr r3, [r3, #0] 80052f4: 68db ldr r3, [r3, #12] 80052f6: f003 0304 and.w r3, r3, #4 80052fa: 2b04 cmp r3, #4 80052fc: d11b bne.n 8005336 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); 80052fe: 687b ldr r3, [r7, #4] 8005300: 681b ldr r3, [r3, #0] 8005302: f06f 0204 mvn.w r2, #4 8005306: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; 8005308: 687b ldr r3, [r7, #4] 800530a: 2202 movs r2, #2 800530c: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) 800530e: 687b ldr r3, [r7, #4] 8005310: 681b ldr r3, [r3, #0] 8005312: 699b ldr r3, [r3, #24] 8005314: f403 7340 and.w r3, r3, #768 ; 0x300 8005318: 2b00 cmp r3, #0 800531a: d003 beq.n 8005324 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); 800531c: 6878 ldr r0, [r7, #4] 800531e: f000 f8ce bl 80054be 8005322: e005 b.n 8005330 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); 8005324: 6878 ldr r0, [r7, #4] 8005326: f000 f8c0 bl 80054aa HAL_TIM_PWM_PulseFinishedCallback(htim); 800532a: 6878 ldr r0, [r7, #4] 800532c: f000 f8d1 bl 80054d2 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; 8005330: 687b ldr r3, [r7, #4] 8005332: 2200 movs r2, #0 8005334: 771a strb r2, [r3, #28] } } /* Capture compare 3 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) 8005336: 687b ldr r3, [r7, #4] 8005338: 681b ldr r3, [r3, #0] 800533a: 691b ldr r3, [r3, #16] 800533c: f003 0308 and.w r3, r3, #8 8005340: 2b08 cmp r3, #8 8005342: d122 bne.n 800538a { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) 8005344: 687b ldr r3, [r7, #4] 8005346: 681b ldr r3, [r3, #0] 8005348: 68db ldr r3, [r3, #12] 800534a: f003 0308 and.w r3, r3, #8 800534e: 2b08 cmp r3, #8 8005350: d11b bne.n 800538a { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); 8005352: 687b ldr r3, [r7, #4] 8005354: 681b ldr r3, [r3, #0] 8005356: f06f 0208 mvn.w r2, #8 800535a: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; 800535c: 687b ldr r3, [r7, #4] 800535e: 2204 movs r2, #4 8005360: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) 8005362: 687b ldr r3, [r7, #4] 8005364: 681b ldr r3, [r3, #0] 8005366: 69db ldr r3, [r3, #28] 8005368: f003 0303 and.w r3, r3, #3 800536c: 2b00 cmp r3, #0 800536e: d003 beq.n 8005378 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); 8005370: 6878 ldr r0, [r7, #4] 8005372: f000 f8a4 bl 80054be 8005376: e005 b.n 8005384 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); 8005378: 6878 ldr r0, [r7, #4] 800537a: f000 f896 bl 80054aa HAL_TIM_PWM_PulseFinishedCallback(htim); 800537e: 6878 ldr r0, [r7, #4] 8005380: f000 f8a7 bl 80054d2 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; 8005384: 687b ldr r3, [r7, #4] 8005386: 2200 movs r2, #0 8005388: 771a strb r2, [r3, #28] } } /* Capture compare 4 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) 800538a: 687b ldr r3, [r7, #4] 800538c: 681b ldr r3, [r3, #0] 800538e: 691b ldr r3, [r3, #16] 8005390: f003 0310 and.w r3, r3, #16 8005394: 2b10 cmp r3, #16 8005396: d122 bne.n 80053de { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) 8005398: 687b ldr r3, [r7, #4] 800539a: 681b ldr r3, [r3, #0] 800539c: 68db ldr r3, [r3, #12] 800539e: f003 0310 and.w r3, r3, #16 80053a2: 2b10 cmp r3, #16 80053a4: d11b bne.n 80053de { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4); 80053a6: 687b ldr r3, [r7, #4] 80053a8: 681b ldr r3, [r3, #0] 80053aa: f06f 0210 mvn.w r2, #16 80053ae: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; 80053b0: 687b ldr r3, [r7, #4] 80053b2: 2208 movs r2, #8 80053b4: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) 80053b6: 687b ldr r3, [r7, #4] 80053b8: 681b ldr r3, [r3, #0] 80053ba: 69db ldr r3, [r3, #28] 80053bc: f403 7340 and.w r3, r3, #768 ; 0x300 80053c0: 2b00 cmp r3, #0 80053c2: d003 beq.n 80053cc { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); 80053c4: 6878 ldr r0, [r7, #4] 80053c6: f000 f87a bl 80054be 80053ca: e005 b.n 80053d8 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); 80053cc: 6878 ldr r0, [r7, #4] 80053ce: f000 f86c bl 80054aa HAL_TIM_PWM_PulseFinishedCallback(htim); 80053d2: 6878 ldr r0, [r7, #4] 80053d4: f000 f87d bl 80054d2 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; 80053d8: 687b ldr r3, [r7, #4] 80053da: 2200 movs r2, #0 80053dc: 771a strb r2, [r3, #28] } } /* TIM Update event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) 80053de: 687b ldr r3, [r7, #4] 80053e0: 681b ldr r3, [r3, #0] 80053e2: 691b ldr r3, [r3, #16] 80053e4: f003 0301 and.w r3, r3, #1 80053e8: 2b01 cmp r3, #1 80053ea: d10e bne.n 800540a { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) 80053ec: 687b ldr r3, [r7, #4] 80053ee: 681b ldr r3, [r3, #0] 80053f0: 68db ldr r3, [r3, #12] 80053f2: f003 0301 and.w r3, r3, #1 80053f6: 2b01 cmp r3, #1 80053f8: d107 bne.n 800540a { __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); 80053fa: 687b ldr r3, [r7, #4] 80053fc: 681b ldr r3, [r3, #0] 80053fe: f06f 0201 mvn.w r2, #1 8005402: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->PeriodElapsedCallback(htim); #else HAL_TIM_PeriodElapsedCallback(htim); 8005404: 6878 ldr r0, [r7, #4] 8005406: f000 f846 bl 8005496 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Break input event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET) 800540a: 687b ldr r3, [r7, #4] 800540c: 681b ldr r3, [r3, #0] 800540e: 691b ldr r3, [r3, #16] 8005410: f003 0380 and.w r3, r3, #128 ; 0x80 8005414: 2b80 cmp r3, #128 ; 0x80 8005416: d10e bne.n 8005436 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) 8005418: 687b ldr r3, [r7, #4] 800541a: 681b ldr r3, [r3, #0] 800541c: 68db ldr r3, [r3, #12] 800541e: f003 0380 and.w r3, r3, #128 ; 0x80 8005422: 2b80 cmp r3, #128 ; 0x80 8005424: d107 bne.n 8005436 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK); 8005426: 687b ldr r3, [r7, #4] 8005428: 681b ldr r3, [r3, #0] 800542a: f06f 0280 mvn.w r2, #128 ; 0x80 800542e: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->BreakCallback(htim); #else HAL_TIMEx_BreakCallback(htim); 8005430: 6878 ldr r0, [r7, #4] 8005432: f000 f989 bl 8005748 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Trigger detection event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET) 8005436: 687b ldr r3, [r7, #4] 8005438: 681b ldr r3, [r3, #0] 800543a: 691b ldr r3, [r3, #16] 800543c: f003 0340 and.w r3, r3, #64 ; 0x40 8005440: 2b40 cmp r3, #64 ; 0x40 8005442: d10e bne.n 8005462 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET) 8005444: 687b ldr r3, [r7, #4] 8005446: 681b ldr r3, [r3, #0] 8005448: 68db ldr r3, [r3, #12] 800544a: f003 0340 and.w r3, r3, #64 ; 0x40 800544e: 2b40 cmp r3, #64 ; 0x40 8005450: d107 bne.n 8005462 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER); 8005452: 687b ldr r3, [r7, #4] 8005454: 681b ldr r3, [r3, #0] 8005456: f06f 0240 mvn.w r2, #64 ; 0x40 800545a: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->TriggerCallback(htim); #else HAL_TIM_TriggerCallback(htim); 800545c: 6878 ldr r0, [r7, #4] 800545e: f000 f842 bl 80054e6 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM commutation event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET) 8005462: 687b ldr r3, [r7, #4] 8005464: 681b ldr r3, [r3, #0] 8005466: 691b ldr r3, [r3, #16] 8005468: f003 0320 and.w r3, r3, #32 800546c: 2b20 cmp r3, #32 800546e: d10e bne.n 800548e { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET) 8005470: 687b ldr r3, [r7, #4] 8005472: 681b ldr r3, [r3, #0] 8005474: 68db ldr r3, [r3, #12] 8005476: f003 0320 and.w r3, r3, #32 800547a: 2b20 cmp r3, #32 800547c: d107 bne.n 800548e { __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM); 800547e: 687b ldr r3, [r7, #4] 8005480: 681b ldr r3, [r3, #0] 8005482: f06f 0220 mvn.w r2, #32 8005486: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->CommutationCallback(htim); #else HAL_TIMEx_CommutCallback(htim); 8005488: 6878 ldr r0, [r7, #4] 800548a: f000 f953 bl 8005734 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } } 800548e: bf00 nop 8005490: 3708 adds r7, #8 8005492: 46bd mov sp, r7 8005494: bd80 pop {r7, pc} 08005496 : * @brief Period elapsed callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { 8005496: b480 push {r7} 8005498: b083 sub sp, #12 800549a: af00 add r7, sp, #0 800549c: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_PeriodElapsedCallback could be implemented in the user file */ } 800549e: bf00 nop 80054a0: 370c adds r7, #12 80054a2: 46bd mov sp, r7 80054a4: f85d 7b04 ldr.w r7, [sp], #4 80054a8: 4770 bx lr 080054aa : * @brief Output Compare callback in non-blocking mode * @param htim TIM OC handle * @retval None */ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) { 80054aa: b480 push {r7} 80054ac: b083 sub sp, #12 80054ae: af00 add r7, sp, #0 80054b0: 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 */ } 80054b2: bf00 nop 80054b4: 370c adds r7, #12 80054b6: 46bd mov sp, r7 80054b8: f85d 7b04 ldr.w r7, [sp], #4 80054bc: 4770 bx lr 080054be : * @brief Input Capture callback in non-blocking mode * @param htim TIM IC handle * @retval None */ __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { 80054be: b480 push {r7} 80054c0: b083 sub sp, #12 80054c2: af00 add r7, sp, #0 80054c4: 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 */ } 80054c6: bf00 nop 80054c8: 370c adds r7, #12 80054ca: 46bd mov sp, r7 80054cc: f85d 7b04 ldr.w r7, [sp], #4 80054d0: 4770 bx lr 080054d2 : * @brief PWM Pulse finished callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { 80054d2: b480 push {r7} 80054d4: b083 sub sp, #12 80054d6: af00 add r7, sp, #0 80054d8: 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 */ } 80054da: bf00 nop 80054dc: 370c adds r7, #12 80054de: 46bd mov sp, r7 80054e0: f85d 7b04 ldr.w r7, [sp], #4 80054e4: 4770 bx lr 080054e6 : * @brief Hall Trigger detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) { 80054e6: b480 push {r7} 80054e8: b083 sub sp, #12 80054ea: af00 add r7, sp, #0 80054ec: 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 */ } 80054ee: bf00 nop 80054f0: 370c adds r7, #12 80054f2: 46bd mov sp, r7 80054f4: f85d 7b04 ldr.w r7, [sp], #4 80054f8: 4770 bx lr ... 080054fc : * @param TIMx TIM peripheral * @param Structure TIM Base configuration structure * @retval None */ void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure) { 80054fc: b480 push {r7} 80054fe: b085 sub sp, #20 8005500: af00 add r7, sp, #0 8005502: 6078 str r0, [r7, #4] 8005504: 6039 str r1, [r7, #0] uint32_t tmpcr1; tmpcr1 = TIMx->CR1; 8005506: 687b ldr r3, [r7, #4] 8005508: 681b ldr r3, [r3, #0] 800550a: 60fb str r3, [r7, #12] /* Set TIM Time Base Unit parameters ---------------------------------------*/ if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) 800550c: 687b ldr r3, [r7, #4] 800550e: 4a40 ldr r2, [pc, #256] ; (8005610 ) 8005510: 4293 cmp r3, r2 8005512: d013 beq.n 800553c 8005514: 687b ldr r3, [r7, #4] 8005516: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 800551a: d00f beq.n 800553c 800551c: 687b ldr r3, [r7, #4] 800551e: 4a3d ldr r2, [pc, #244] ; (8005614 ) 8005520: 4293 cmp r3, r2 8005522: d00b beq.n 800553c 8005524: 687b ldr r3, [r7, #4] 8005526: 4a3c ldr r2, [pc, #240] ; (8005618 ) 8005528: 4293 cmp r3, r2 800552a: d007 beq.n 800553c 800552c: 687b ldr r3, [r7, #4] 800552e: 4a3b ldr r2, [pc, #236] ; (800561c ) 8005530: 4293 cmp r3, r2 8005532: d003 beq.n 800553c 8005534: 687b ldr r3, [r7, #4] 8005536: 4a3a ldr r2, [pc, #232] ; (8005620 ) 8005538: 4293 cmp r3, r2 800553a: d108 bne.n 800554e { /* Select the Counter Mode */ tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); 800553c: 68fb ldr r3, [r7, #12] 800553e: f023 0370 bic.w r3, r3, #112 ; 0x70 8005542: 60fb str r3, [r7, #12] tmpcr1 |= Structure->CounterMode; 8005544: 683b ldr r3, [r7, #0] 8005546: 685b ldr r3, [r3, #4] 8005548: 68fa ldr r2, [r7, #12] 800554a: 4313 orrs r3, r2 800554c: 60fb str r3, [r7, #12] } if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) 800554e: 687b ldr r3, [r7, #4] 8005550: 4a2f ldr r2, [pc, #188] ; (8005610 ) 8005552: 4293 cmp r3, r2 8005554: d02b beq.n 80055ae 8005556: 687b ldr r3, [r7, #4] 8005558: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 800555c: d027 beq.n 80055ae 800555e: 687b ldr r3, [r7, #4] 8005560: 4a2c ldr r2, [pc, #176] ; (8005614 ) 8005562: 4293 cmp r3, r2 8005564: d023 beq.n 80055ae 8005566: 687b ldr r3, [r7, #4] 8005568: 4a2b ldr r2, [pc, #172] ; (8005618 ) 800556a: 4293 cmp r3, r2 800556c: d01f beq.n 80055ae 800556e: 687b ldr r3, [r7, #4] 8005570: 4a2a ldr r2, [pc, #168] ; (800561c ) 8005572: 4293 cmp r3, r2 8005574: d01b beq.n 80055ae 8005576: 687b ldr r3, [r7, #4] 8005578: 4a29 ldr r2, [pc, #164] ; (8005620 ) 800557a: 4293 cmp r3, r2 800557c: d017 beq.n 80055ae 800557e: 687b ldr r3, [r7, #4] 8005580: 4a28 ldr r2, [pc, #160] ; (8005624 ) 8005582: 4293 cmp r3, r2 8005584: d013 beq.n 80055ae 8005586: 687b ldr r3, [r7, #4] 8005588: 4a27 ldr r2, [pc, #156] ; (8005628 ) 800558a: 4293 cmp r3, r2 800558c: d00f beq.n 80055ae 800558e: 687b ldr r3, [r7, #4] 8005590: 4a26 ldr r2, [pc, #152] ; (800562c ) 8005592: 4293 cmp r3, r2 8005594: d00b beq.n 80055ae 8005596: 687b ldr r3, [r7, #4] 8005598: 4a25 ldr r2, [pc, #148] ; (8005630 ) 800559a: 4293 cmp r3, r2 800559c: d007 beq.n 80055ae 800559e: 687b ldr r3, [r7, #4] 80055a0: 4a24 ldr r2, [pc, #144] ; (8005634 ) 80055a2: 4293 cmp r3, r2 80055a4: d003 beq.n 80055ae 80055a6: 687b ldr r3, [r7, #4] 80055a8: 4a23 ldr r2, [pc, #140] ; (8005638 ) 80055aa: 4293 cmp r3, r2 80055ac: d108 bne.n 80055c0 { /* Set the clock division */ tmpcr1 &= ~TIM_CR1_CKD; 80055ae: 68fb ldr r3, [r7, #12] 80055b0: f423 7340 bic.w r3, r3, #768 ; 0x300 80055b4: 60fb str r3, [r7, #12] tmpcr1 |= (uint32_t)Structure->ClockDivision; 80055b6: 683b ldr r3, [r7, #0] 80055b8: 68db ldr r3, [r3, #12] 80055ba: 68fa ldr r2, [r7, #12] 80055bc: 4313 orrs r3, r2 80055be: 60fb str r3, [r7, #12] } /* Set the auto-reload preload */ MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); 80055c0: 68fb ldr r3, [r7, #12] 80055c2: f023 0280 bic.w r2, r3, #128 ; 0x80 80055c6: 683b ldr r3, [r7, #0] 80055c8: 695b ldr r3, [r3, #20] 80055ca: 4313 orrs r3, r2 80055cc: 60fb str r3, [r7, #12] TIMx->CR1 = tmpcr1; 80055ce: 687b ldr r3, [r7, #4] 80055d0: 68fa ldr r2, [r7, #12] 80055d2: 601a str r2, [r3, #0] /* Set the Autoreload value */ TIMx->ARR = (uint32_t)Structure->Period ; 80055d4: 683b ldr r3, [r7, #0] 80055d6: 689a ldr r2, [r3, #8] 80055d8: 687b ldr r3, [r7, #4] 80055da: 62da str r2, [r3, #44] ; 0x2c /* Set the Prescaler value */ TIMx->PSC = Structure->Prescaler; 80055dc: 683b ldr r3, [r7, #0] 80055de: 681a ldr r2, [r3, #0] 80055e0: 687b ldr r3, [r7, #4] 80055e2: 629a str r2, [r3, #40] ; 0x28 if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) 80055e4: 687b ldr r3, [r7, #4] 80055e6: 4a0a ldr r2, [pc, #40] ; (8005610 ) 80055e8: 4293 cmp r3, r2 80055ea: d003 beq.n 80055f4 80055ec: 687b ldr r3, [r7, #4] 80055ee: 4a0c ldr r2, [pc, #48] ; (8005620 ) 80055f0: 4293 cmp r3, r2 80055f2: d103 bne.n 80055fc { /* Set the Repetition Counter value */ TIMx->RCR = Structure->RepetitionCounter; 80055f4: 683b ldr r3, [r7, #0] 80055f6: 691a ldr r2, [r3, #16] 80055f8: 687b ldr r3, [r7, #4] 80055fa: 631a str r2, [r3, #48] ; 0x30 } /* Generate an update event to reload the Prescaler and the repetition counter (only for advanced timer) value immediately */ TIMx->EGR = TIM_EGR_UG; 80055fc: 687b ldr r3, [r7, #4] 80055fe: 2201 movs r2, #1 8005600: 615a str r2, [r3, #20] } 8005602: bf00 nop 8005604: 3714 adds r7, #20 8005606: 46bd mov sp, r7 8005608: f85d 7b04 ldr.w r7, [sp], #4 800560c: 4770 bx lr 800560e: bf00 nop 8005610: 40010000 .word 0x40010000 8005614: 40000400 .word 0x40000400 8005618: 40000800 .word 0x40000800 800561c: 40000c00 .word 0x40000c00 8005620: 40010400 .word 0x40010400 8005624: 40014000 .word 0x40014000 8005628: 40014400 .word 0x40014400 800562c: 40014800 .word 0x40014800 8005630: 40001800 .word 0x40001800 8005634: 40001c00 .word 0x40001c00 8005638: 40002000 .word 0x40002000 0800563c : * mode. * @retval HAL status */ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef *sMasterConfig) { 800563c: b480 push {r7} 800563e: b085 sub sp, #20 8005640: af00 add r7, sp, #0 8005642: 6078 str r0, [r7, #4] 8005644: 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); 8005646: 687b ldr r3, [r7, #4] 8005648: f893 303c ldrb.w r3, [r3, #60] ; 0x3c 800564c: 2b01 cmp r3, #1 800564e: d101 bne.n 8005654 8005650: 2302 movs r3, #2 8005652: e05a b.n 800570a 8005654: 687b ldr r3, [r7, #4] 8005656: 2201 movs r2, #1 8005658: f883 203c strb.w r2, [r3, #60] ; 0x3c /* Change the handler state */ htim->State = HAL_TIM_STATE_BUSY; 800565c: 687b ldr r3, [r7, #4] 800565e: 2202 movs r2, #2 8005660: f883 203d strb.w r2, [r3, #61] ; 0x3d /* Get the TIMx CR2 register value */ tmpcr2 = htim->Instance->CR2; 8005664: 687b ldr r3, [r7, #4] 8005666: 681b ldr r3, [r3, #0] 8005668: 685b ldr r3, [r3, #4] 800566a: 60fb str r3, [r7, #12] /* Get the TIMx SMCR register value */ tmpsmcr = htim->Instance->SMCR; 800566c: 687b ldr r3, [r7, #4] 800566e: 681b ldr r3, [r3, #0] 8005670: 689b ldr r3, [r3, #8] 8005672: 60bb str r3, [r7, #8] /* Reset the MMS Bits */ tmpcr2 &= ~TIM_CR2_MMS; 8005674: 68fb ldr r3, [r7, #12] 8005676: f023 0370 bic.w r3, r3, #112 ; 0x70 800567a: 60fb str r3, [r7, #12] /* Select the TRGO source */ tmpcr2 |= sMasterConfig->MasterOutputTrigger; 800567c: 683b ldr r3, [r7, #0] 800567e: 681b ldr r3, [r3, #0] 8005680: 68fa ldr r2, [r7, #12] 8005682: 4313 orrs r3, r2 8005684: 60fb str r3, [r7, #12] /* Update TIMx CR2 */ htim->Instance->CR2 = tmpcr2; 8005686: 687b ldr r3, [r7, #4] 8005688: 681b ldr r3, [r3, #0] 800568a: 68fa ldr r2, [r7, #12] 800568c: 605a str r2, [r3, #4] if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) 800568e: 687b ldr r3, [r7, #4] 8005690: 681b ldr r3, [r3, #0] 8005692: 4a21 ldr r2, [pc, #132] ; (8005718 ) 8005694: 4293 cmp r3, r2 8005696: d022 beq.n 80056de 8005698: 687b ldr r3, [r7, #4] 800569a: 681b ldr r3, [r3, #0] 800569c: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 80056a0: d01d beq.n 80056de 80056a2: 687b ldr r3, [r7, #4] 80056a4: 681b ldr r3, [r3, #0] 80056a6: 4a1d ldr r2, [pc, #116] ; (800571c ) 80056a8: 4293 cmp r3, r2 80056aa: d018 beq.n 80056de 80056ac: 687b ldr r3, [r7, #4] 80056ae: 681b ldr r3, [r3, #0] 80056b0: 4a1b ldr r2, [pc, #108] ; (8005720 ) 80056b2: 4293 cmp r3, r2 80056b4: d013 beq.n 80056de 80056b6: 687b ldr r3, [r7, #4] 80056b8: 681b ldr r3, [r3, #0] 80056ba: 4a1a ldr r2, [pc, #104] ; (8005724 ) 80056bc: 4293 cmp r3, r2 80056be: d00e beq.n 80056de 80056c0: 687b ldr r3, [r7, #4] 80056c2: 681b ldr r3, [r3, #0] 80056c4: 4a18 ldr r2, [pc, #96] ; (8005728 ) 80056c6: 4293 cmp r3, r2 80056c8: d009 beq.n 80056de 80056ca: 687b ldr r3, [r7, #4] 80056cc: 681b ldr r3, [r3, #0] 80056ce: 4a17 ldr r2, [pc, #92] ; (800572c ) 80056d0: 4293 cmp r3, r2 80056d2: d004 beq.n 80056de 80056d4: 687b ldr r3, [r7, #4] 80056d6: 681b ldr r3, [r3, #0] 80056d8: 4a15 ldr r2, [pc, #84] ; (8005730 ) 80056da: 4293 cmp r3, r2 80056dc: d10c bne.n 80056f8 { /* Reset the MSM Bit */ tmpsmcr &= ~TIM_SMCR_MSM; 80056de: 68bb ldr r3, [r7, #8] 80056e0: f023 0380 bic.w r3, r3, #128 ; 0x80 80056e4: 60bb str r3, [r7, #8] /* Set master mode */ tmpsmcr |= sMasterConfig->MasterSlaveMode; 80056e6: 683b ldr r3, [r7, #0] 80056e8: 685b ldr r3, [r3, #4] 80056ea: 68ba ldr r2, [r7, #8] 80056ec: 4313 orrs r3, r2 80056ee: 60bb str r3, [r7, #8] /* Update TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; 80056f0: 687b ldr r3, [r7, #4] 80056f2: 681b ldr r3, [r3, #0] 80056f4: 68ba ldr r2, [r7, #8] 80056f6: 609a str r2, [r3, #8] } /* Change the htim state */ htim->State = HAL_TIM_STATE_READY; 80056f8: 687b ldr r3, [r7, #4] 80056fa: 2201 movs r2, #1 80056fc: f883 203d strb.w r2, [r3, #61] ; 0x3d __HAL_UNLOCK(htim); 8005700: 687b ldr r3, [r7, #4] 8005702: 2200 movs r2, #0 8005704: f883 203c strb.w r2, [r3, #60] ; 0x3c return HAL_OK; 8005708: 2300 movs r3, #0 } 800570a: 4618 mov r0, r3 800570c: 3714 adds r7, #20 800570e: 46bd mov sp, r7 8005710: f85d 7b04 ldr.w r7, [sp], #4 8005714: 4770 bx lr 8005716: bf00 nop 8005718: 40010000 .word 0x40010000 800571c: 40000400 .word 0x40000400 8005720: 40000800 .word 0x40000800 8005724: 40000c00 .word 0x40000c00 8005728: 40010400 .word 0x40010400 800572c: 40014000 .word 0x40014000 8005730: 40001800 .word 0x40001800 08005734 : * @brief Hall commutation changed callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) { 8005734: b480 push {r7} 8005736: b083 sub sp, #12 8005738: af00 add r7, sp, #0 800573a: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_CommutCallback could be implemented in the user file */ } 800573c: bf00 nop 800573e: 370c adds r7, #12 8005740: 46bd mov sp, r7 8005742: f85d 7b04 ldr.w r7, [sp], #4 8005746: 4770 bx lr 08005748 : * @brief Hall Break detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) { 8005748: b480 push {r7} 800574a: b083 sub sp, #12 800574c: af00 add r7, sp, #0 800574e: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_BreakCallback could be implemented in the user file */ } 8005750: bf00 nop 8005752: 370c adds r7, #12 8005754: 46bd mov sp, r7 8005756: f85d 7b04 ldr.w r7, [sp], #4 800575a: 4770 bx lr 0800575c <__errno>: 800575c: 4b01 ldr r3, [pc, #4] ; (8005764 <__errno+0x8>) 800575e: 6818 ldr r0, [r3, #0] 8005760: 4770 bx lr 8005762: bf00 nop 8005764: 20000010 .word 0x20000010 08005768 <__libc_init_array>: 8005768: b570 push {r4, r5, r6, lr} 800576a: 4e0d ldr r6, [pc, #52] ; (80057a0 <__libc_init_array+0x38>) 800576c: 4c0d ldr r4, [pc, #52] ; (80057a4 <__libc_init_array+0x3c>) 800576e: 1ba4 subs r4, r4, r6 8005770: 10a4 asrs r4, r4, #2 8005772: 2500 movs r5, #0 8005774: 42a5 cmp r5, r4 8005776: d109 bne.n 800578c <__libc_init_array+0x24> 8005778: 4e0b ldr r6, [pc, #44] ; (80057a8 <__libc_init_array+0x40>) 800577a: 4c0c ldr r4, [pc, #48] ; (80057ac <__libc_init_array+0x44>) 800577c: f000 f8c8 bl 8005910 <_init> 8005780: 1ba4 subs r4, r4, r6 8005782: 10a4 asrs r4, r4, #2 8005784: 2500 movs r5, #0 8005786: 42a5 cmp r5, r4 8005788: d105 bne.n 8005796 <__libc_init_array+0x2e> 800578a: bd70 pop {r4, r5, r6, pc} 800578c: f856 3025 ldr.w r3, [r6, r5, lsl #2] 8005790: 4798 blx r3 8005792: 3501 adds r5, #1 8005794: e7ee b.n 8005774 <__libc_init_array+0xc> 8005796: f856 3025 ldr.w r3, [r6, r5, lsl #2] 800579a: 4798 blx r3 800579c: 3501 adds r5, #1 800579e: e7f2 b.n 8005786 <__libc_init_array+0x1e> 80057a0: 08005940 .word 0x08005940 80057a4: 08005940 .word 0x08005940 80057a8: 08005940 .word 0x08005940 80057ac: 08005944 .word 0x08005944 080057b0 : 80057b0: 4402 add r2, r0 80057b2: 4603 mov r3, r0 80057b4: 4293 cmp r3, r2 80057b6: d100 bne.n 80057ba 80057b8: 4770 bx lr 80057ba: f803 1b01 strb.w r1, [r3], #1 80057be: e7f9 b.n 80057b4 080057c0 : 80057c0: b538 push {r3, r4, r5, lr} 80057c2: 4b13 ldr r3, [pc, #76] ; (8005810 ) 80057c4: 681c ldr r4, [r3, #0] 80057c6: 6ba3 ldr r3, [r4, #56] ; 0x38 80057c8: b97b cbnz r3, 80057ea 80057ca: 2018 movs r0, #24 80057cc: f000 f82c bl 8005828 80057d0: 4a10 ldr r2, [pc, #64] ; (8005814 ) 80057d2: 4b11 ldr r3, [pc, #68] ; (8005818 ) 80057d4: 63a0 str r0, [r4, #56] ; 0x38 80057d6: e9c0 2300 strd r2, r3, [r0] 80057da: 4b10 ldr r3, [pc, #64] ; (800581c ) 80057dc: 6083 str r3, [r0, #8] 80057de: 230b movs r3, #11 80057e0: 8183 strh r3, [r0, #12] 80057e2: 2201 movs r2, #1 80057e4: 2300 movs r3, #0 80057e6: e9c0 2304 strd r2, r3, [r0, #16] 80057ea: 6ba1 ldr r1, [r4, #56] ; 0x38 80057ec: 480c ldr r0, [pc, #48] ; (8005820 ) 80057ee: 690a ldr r2, [r1, #16] 80057f0: 694b ldr r3, [r1, #20] 80057f2: 4c0c ldr r4, [pc, #48] ; (8005824 ) 80057f4: 4350 muls r0, r2 80057f6: fb04 0003 mla r0, r4, r3, r0 80057fa: fba2 2304 umull r2, r3, r2, r4 80057fe: 4403 add r3, r0 8005800: 1c54 adds r4, r2, #1 8005802: f143 0500 adc.w r5, r3, #0 8005806: e9c1 4504 strd r4, r5, [r1, #16] 800580a: f025 4000 bic.w r0, r5, #2147483648 ; 0x80000000 800580e: bd38 pop {r3, r4, r5, pc} 8005810: 20000010 .word 0x20000010 8005814: abcd330e .word 0xabcd330e 8005818: e66d1234 .word 0xe66d1234 800581c: 0005deec .word 0x0005deec 8005820: 5851f42d .word 0x5851f42d 8005824: 4c957f2d .word 0x4c957f2d 08005828 : 8005828: 4b02 ldr r3, [pc, #8] ; (8005834 ) 800582a: 4601 mov r1, r0 800582c: 6818 ldr r0, [r3, #0] 800582e: f000 b803 b.w 8005838 <_malloc_r> 8005832: bf00 nop 8005834: 20000010 .word 0x20000010 08005838 <_malloc_r>: 8005838: b570 push {r4, r5, r6, lr} 800583a: 1ccd adds r5, r1, #3 800583c: f025 0503 bic.w r5, r5, #3 8005840: 3508 adds r5, #8 8005842: 2d0c cmp r5, #12 8005844: bf38 it cc 8005846: 250c movcc r5, #12 8005848: 2d00 cmp r5, #0 800584a: 4606 mov r6, r0 800584c: db01 blt.n 8005852 <_malloc_r+0x1a> 800584e: 42a9 cmp r1, r5 8005850: d903 bls.n 800585a <_malloc_r+0x22> 8005852: 230c movs r3, #12 8005854: 6033 str r3, [r6, #0] 8005856: 2000 movs r0, #0 8005858: bd70 pop {r4, r5, r6, pc} 800585a: f000 f857 bl 800590c <__malloc_lock> 800585e: 4a21 ldr r2, [pc, #132] ; (80058e4 <_malloc_r+0xac>) 8005860: 6814 ldr r4, [r2, #0] 8005862: 4621 mov r1, r4 8005864: b991 cbnz r1, 800588c <_malloc_r+0x54> 8005866: 4c20 ldr r4, [pc, #128] ; (80058e8 <_malloc_r+0xb0>) 8005868: 6823 ldr r3, [r4, #0] 800586a: b91b cbnz r3, 8005874 <_malloc_r+0x3c> 800586c: 4630 mov r0, r6 800586e: f000 f83d bl 80058ec <_sbrk_r> 8005872: 6020 str r0, [r4, #0] 8005874: 4629 mov r1, r5 8005876: 4630 mov r0, r6 8005878: f000 f838 bl 80058ec <_sbrk_r> 800587c: 1c43 adds r3, r0, #1 800587e: d124 bne.n 80058ca <_malloc_r+0x92> 8005880: 230c movs r3, #12 8005882: 6033 str r3, [r6, #0] 8005884: 4630 mov r0, r6 8005886: f000 f842 bl 800590e <__malloc_unlock> 800588a: e7e4 b.n 8005856 <_malloc_r+0x1e> 800588c: 680b ldr r3, [r1, #0] 800588e: 1b5b subs r3, r3, r5 8005890: d418 bmi.n 80058c4 <_malloc_r+0x8c> 8005892: 2b0b cmp r3, #11 8005894: d90f bls.n 80058b6 <_malloc_r+0x7e> 8005896: 600b str r3, [r1, #0] 8005898: 50cd str r5, [r1, r3] 800589a: 18cc adds r4, r1, r3 800589c: 4630 mov r0, r6 800589e: f000 f836 bl 800590e <__malloc_unlock> 80058a2: f104 000b add.w r0, r4, #11 80058a6: 1d23 adds r3, r4, #4 80058a8: f020 0007 bic.w r0, r0, #7 80058ac: 1ac3 subs r3, r0, r3 80058ae: d0d3 beq.n 8005858 <_malloc_r+0x20> 80058b0: 425a negs r2, r3 80058b2: 50e2 str r2, [r4, r3] 80058b4: e7d0 b.n 8005858 <_malloc_r+0x20> 80058b6: 428c cmp r4, r1 80058b8: 684b ldr r3, [r1, #4] 80058ba: bf16 itet ne 80058bc: 6063 strne r3, [r4, #4] 80058be: 6013 streq r3, [r2, #0] 80058c0: 460c movne r4, r1 80058c2: e7eb b.n 800589c <_malloc_r+0x64> 80058c4: 460c mov r4, r1 80058c6: 6849 ldr r1, [r1, #4] 80058c8: e7cc b.n 8005864 <_malloc_r+0x2c> 80058ca: 1cc4 adds r4, r0, #3 80058cc: f024 0403 bic.w r4, r4, #3 80058d0: 42a0 cmp r0, r4 80058d2: d005 beq.n 80058e0 <_malloc_r+0xa8> 80058d4: 1a21 subs r1, r4, r0 80058d6: 4630 mov r0, r6 80058d8: f000 f808 bl 80058ec <_sbrk_r> 80058dc: 3001 adds r0, #1 80058de: d0cf beq.n 8005880 <_malloc_r+0x48> 80058e0: 6025 str r5, [r4, #0] 80058e2: e7db b.n 800589c <_malloc_r+0x64> 80058e4: 200003ac .word 0x200003ac 80058e8: 200003b0 .word 0x200003b0 080058ec <_sbrk_r>: 80058ec: b538 push {r3, r4, r5, lr} 80058ee: 4c06 ldr r4, [pc, #24] ; (8005908 <_sbrk_r+0x1c>) 80058f0: 2300 movs r3, #0 80058f2: 4605 mov r5, r0 80058f4: 4608 mov r0, r1 80058f6: 6023 str r3, [r4, #0] 80058f8: f7fd fcb0 bl 800325c <_sbrk> 80058fc: 1c43 adds r3, r0, #1 80058fe: d102 bne.n 8005906 <_sbrk_r+0x1a> 8005900: 6823 ldr r3, [r4, #0] 8005902: b103 cbz r3, 8005906 <_sbrk_r+0x1a> 8005904: 602b str r3, [r5, #0] 8005906: bd38 pop {r3, r4, r5, pc} 8005908: 2000049c .word 0x2000049c 0800590c <__malloc_lock>: 800590c: 4770 bx lr 0800590e <__malloc_unlock>: 800590e: 4770 bx lr 08005910 <_init>: 8005910: b5f8 push {r3, r4, r5, r6, r7, lr} 8005912: bf00 nop 8005914: bcf8 pop {r3, r4, r5, r6, r7} 8005916: bc08 pop {r3} 8005918: 469e mov lr, r3 800591a: 4770 bx lr 0800591c <_fini>: 800591c: b5f8 push {r3, r4, r5, r6, r7, lr} 800591e: bf00 nop 8005920: bcf8 pop {r3, r4, r5, r6, r7} 8005922: bc08 pop {r3} 8005924: 469e mov lr, r3 8005926: 4770 bx lr