Files
LED-Face-Mask-Rough/Debug/STM32F429I-DISC1_LEDFaceMask-Rough.list
2020-09-26 15:34:18 -04:00

13230 lines
493 KiB
Plaintext

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 <frame_dummy>:
80001d4: b508 push {r3, lr}
80001d6: 4b03 ldr r3, [pc, #12] ; (80001e4 <frame_dummy+0x10>)
80001d8: b11b cbz r3, 80001e2 <frame_dummy+0xe>
80001da: 4903 ldr r1, [pc, #12] ; (80001e8 <frame_dummy+0x14>)
80001dc: 4803 ldr r0, [pc, #12] ; (80001ec <frame_dummy+0x18>)
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 <main>:
/**
* @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 <HAL_Init>
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
8000cd4: f000 f85a bl 8000d8c <SystemClock_Config>
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
8000cd8: f000 f98c bl 8000ff4 <MX_GPIO_Init>
MX_SPI4_Init();
8000cdc: f000 f914 bl 8000f08 <MX_SPI4_Init>
MX_TIM6_Init();
8000ce0: f000 f948 bl 8000f74 <MX_TIM6_Init>
MX_ADC3_Init();
8000ce4: f000 f8bc bl 8000e60 <MX_ADC3_Init>
/* USER CODE BEGIN 2 */
updateWS2812BData();
8000ce8: f001 ffbc bl 8002c64 <updateWS2812BData>
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 <main+0xac>)
8000cf2: 4822 ldr r0, [pc, #136] ; (8000d7c <main+0xb0>)
8000cf4: f003 ff34 bl 8004b60 <HAL_SPI_Transmit_IT>
HAL_ADC_Start(&hadc3);
8000cf8: 4821 ldr r0, [pc, #132] ; (8000d80 <main+0xb4>)
8000cfa: f002 fbfd bl 80034f8 <HAL_ADC_Start>
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1) {
if(LEDDesign_PendingChange){
8000cfe: 4b21 ldr r3, [pc, #132] ; (8000d84 <main+0xb8>)
8000d00: 781b ldrb r3, [r3, #0]
8000d02: 2b00 cmp r3, #0
8000d04: d002 beq.n 8000d0c <main+0x40>
LEDDesign_Off();
8000d06: f000 fc67 bl 80015d8 <LEDDesign_Off>
8000d0a: e031 b.n 8000d70 <main+0xa4>
}else{
switch (LEDMode) {
8000d0c: 4b1e ldr r3, [pc, #120] ; (8000d88 <main+0xbc>)
8000d0e: 781b ldrb r3, [r3, #0]
8000d10: 2b07 cmp r3, #7
8000d12: d82b bhi.n 8000d6c <main+0xa0>
8000d14: a201 add r2, pc, #4 ; (adr r2, 8000d1c <main+0x50>)
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 <LEDDesign_Smile>
break;
8000d40: e016 b.n 8000d70 <main+0xa4>
case 1:
LEDDesign_Smile_Audio();
8000d42: f001 f85d bl 8001e00 <LEDDesign_Smile_Audio>
break;
8000d46: e013 b.n 8000d70 <main+0xa4>
case 2:
LEDDesign_Crazy();
8000d48: f000 fd56 bl 80017f8 <LEDDesign_Crazy>
break;
8000d4c: e010 b.n 8000d70 <main+0xa4>
case 3:
LEDDesign_SuperCrazy();
8000d4e: f001 fd67 bl 8002820 <LEDDesign_SuperCrazy>
break;
8000d52: e00d b.n 8000d70 <main+0xa4>
case 4:
LEDDesign_ColorWhite();
8000d54: f000 fc68 bl 8001628 <LEDDesign_ColorWhite>
break;
8000d58: e00a b.n 8000d70 <main+0xa4>
case 5:
LEDDesign_ColorRed();
8000d5a: f000 fd0d bl 8001778 <LEDDesign_ColorRed>
break;
8000d5e: e007 b.n 8000d70 <main+0xa4>
case 6:
LEDDesign_ColorGreen();
8000d60: f000 fcca bl 80016f8 <LEDDesign_ColorGreen>
break;
8000d64: e004 b.n 8000d70 <main+0xa4>
case 7:
LEDDesign_ColorBlue();
8000d66: f000 fc87 bl 8001678 <LEDDesign_ColorBlue>
break;
8000d6a: e001 b.n 8000d70 <main+0xa4>
default:
LEDDesign_Off();
8000d6c: f000 fc34 bl 80015d8 <LEDDesign_Off>
}
}
updateWS2812BData();
8000d70: f001 ff78 bl 8002c64 <updateWS2812BData>
if(LEDDesign_PendingChange){
8000d74: e7c3 b.n 8000cfe <main+0x32>
8000d76: bf00 nop
8000d78: 20000094 .word 0x20000094
8000d7c: 200003fc .word 0x200003fc
8000d80: 200003b4 .word 0x200003b4
8000d84: 20000091 .word 0x20000091
8000d88: 20000090 .word 0x20000090
08000d8c <SystemClock_Config>:
/**
* @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 <memset>
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 <SystemClock_Config+0xcc>)
8000db6: 6c1b ldr r3, [r3, #64] ; 0x40
8000db8: 4a27 ldr r2, [pc, #156] ; (8000e58 <SystemClock_Config+0xcc>)
8000dba: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
8000dbe: 6413 str r3, [r2, #64] ; 0x40
8000dc0: 4b25 ldr r3, [pc, #148] ; (8000e58 <SystemClock_Config+0xcc>)
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 <SystemClock_Config+0xd0>)
8000dd2: 681b ldr r3, [r3, #0]
8000dd4: 4a21 ldr r2, [pc, #132] ; (8000e5c <SystemClock_Config+0xd0>)
8000dd6: f443 4340 orr.w r3, r3, #49152 ; 0xc000
8000dda: 6013 str r3, [r2, #0]
8000ddc: 4b1f ldr r3, [pc, #124] ; (8000e5c <SystemClock_Config+0xd0>)
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 <HAL_RCC_OscConfig>
8000e16: 4603 mov r3, r0
8000e18: 2b00 cmp r3, #0
8000e1a: d001 beq.n 8000e20 <SystemClock_Config+0x94>
{
Error_Handler();
8000e1c: f002 f8c2 bl 8002fa4 <Error_Handler>
}
/** 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 <HAL_RCC_ClockConfig>
8000e44: 4603 mov r3, r0
8000e46: 2b00 cmp r3, #0
8000e48: d001 beq.n 8000e4e <SystemClock_Config+0xc2>
{
Error_Handler();
8000e4a: f002 f8ab bl 8002fa4 <Error_Handler>
}
}
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 <MX_ADC3_Init>:
* @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 <MX_ADC3_Init+0x9c>)
8000e74: 4a22 ldr r2, [pc, #136] ; (8000f00 <MX_ADC3_Init+0xa0>)
8000e76: 601a str r2, [r3, #0]
hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
8000e78: 4b20 ldr r3, [pc, #128] ; (8000efc <MX_ADC3_Init+0x9c>)
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 <MX_ADC3_Init+0x9c>)
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 <MX_ADC3_Init+0x9c>)
8000e8a: 2200 movs r2, #0
8000e8c: 611a str r2, [r3, #16]
hadc3.Init.ContinuousConvMode = DISABLE;
8000e8e: 4b1b ldr r3, [pc, #108] ; (8000efc <MX_ADC3_Init+0x9c>)
8000e90: 2200 movs r2, #0
8000e92: 761a strb r2, [r3, #24]
hadc3.Init.DiscontinuousConvMode = DISABLE;
8000e94: 4b19 ldr r3, [pc, #100] ; (8000efc <MX_ADC3_Init+0x9c>)
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 <MX_ADC3_Init+0x9c>)
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 <MX_ADC3_Init+0x9c>)
8000ea4: 4a17 ldr r2, [pc, #92] ; (8000f04 <MX_ADC3_Init+0xa4>)
8000ea6: 629a str r2, [r3, #40] ; 0x28
hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
8000ea8: 4b14 ldr r3, [pc, #80] ; (8000efc <MX_ADC3_Init+0x9c>)
8000eaa: 2200 movs r2, #0
8000eac: 60da str r2, [r3, #12]
hadc3.Init.NbrOfConversion = 1;
8000eae: 4b13 ldr r3, [pc, #76] ; (8000efc <MX_ADC3_Init+0x9c>)
8000eb0: 2201 movs r2, #1
8000eb2: 61da str r2, [r3, #28]
hadc3.Init.DMAContinuousRequests = DISABLE;
8000eb4: 4b11 ldr r3, [pc, #68] ; (8000efc <MX_ADC3_Init+0x9c>)
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 <MX_ADC3_Init+0x9c>)
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 <MX_ADC3_Init+0x9c>)
8000ec4: f002 fad4 bl 8003470 <HAL_ADC_Init>
8000ec8: 4603 mov r3, r0
8000eca: 2b00 cmp r3, #0
8000ecc: d001 beq.n 8000ed2 <MX_ADC3_Init+0x72>
{
Error_Handler();
8000ece: f002 f869 bl 8002fa4 <Error_Handler>
}
/** 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 <MX_ADC3_Init+0x9c>)
8000ee4: f002 fc60 bl 80037a8 <HAL_ADC_ConfigChannel>
8000ee8: 4603 mov r3, r0
8000eea: 2b00 cmp r3, #0
8000eec: d001 beq.n 8000ef2 <MX_ADC3_Init+0x92>
{
Error_Handler();
8000eee: f002 f859 bl 8002fa4 <Error_Handler>
}
/* 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 <MX_SPI4_Init>:
* @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 <MX_SPI4_Init+0x64>)
8000f0e: 4a18 ldr r2, [pc, #96] ; (8000f70 <MX_SPI4_Init+0x68>)
8000f10: 601a str r2, [r3, #0]
hspi4.Init.Mode = SPI_MODE_MASTER;
8000f12: 4b16 ldr r3, [pc, #88] ; (8000f6c <MX_SPI4_Init+0x64>)
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 <MX_SPI4_Init+0x64>)
8000f1c: 2200 movs r2, #0
8000f1e: 609a str r2, [r3, #8]
hspi4.Init.DataSize = SPI_DATASIZE_8BIT;
8000f20: 4b12 ldr r3, [pc, #72] ; (8000f6c <MX_SPI4_Init+0x64>)
8000f22: 2200 movs r2, #0
8000f24: 60da str r2, [r3, #12]
hspi4.Init.CLKPolarity = SPI_POLARITY_LOW;
8000f26: 4b11 ldr r3, [pc, #68] ; (8000f6c <MX_SPI4_Init+0x64>)
8000f28: 2200 movs r2, #0
8000f2a: 611a str r2, [r3, #16]
hspi4.Init.CLKPhase = SPI_PHASE_1EDGE;
8000f2c: 4b0f ldr r3, [pc, #60] ; (8000f6c <MX_SPI4_Init+0x64>)
8000f2e: 2200 movs r2, #0
8000f30: 615a str r2, [r3, #20]
hspi4.Init.NSS = SPI_NSS_SOFT;
8000f32: 4b0e ldr r3, [pc, #56] ; (8000f6c <MX_SPI4_Init+0x64>)
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 <MX_SPI4_Init+0x64>)
8000f3c: 2220 movs r2, #32
8000f3e: 61da str r2, [r3, #28]
hspi4.Init.FirstBit = SPI_FIRSTBIT_MSB;
8000f40: 4b0a ldr r3, [pc, #40] ; (8000f6c <MX_SPI4_Init+0x64>)
8000f42: 2200 movs r2, #0
8000f44: 621a str r2, [r3, #32]
hspi4.Init.TIMode = SPI_TIMODE_DISABLE;
8000f46: 4b09 ldr r3, [pc, #36] ; (8000f6c <MX_SPI4_Init+0x64>)
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 <MX_SPI4_Init+0x64>)
8000f4e: 2200 movs r2, #0
8000f50: 629a str r2, [r3, #40] ; 0x28
hspi4.Init.CRCPolynomial = 10;
8000f52: 4b06 ldr r3, [pc, #24] ; (8000f6c <MX_SPI4_Init+0x64>)
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 <MX_SPI4_Init+0x64>)
8000f5a: f003 fd9d bl 8004a98 <HAL_SPI_Init>
8000f5e: 4603 mov r3, r0
8000f60: 2b00 cmp r3, #0
8000f62: d001 beq.n 8000f68 <MX_SPI4_Init+0x60>
{
Error_Handler();
8000f64: f002 f81e bl 8002fa4 <Error_Handler>
}
/* 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 <MX_TIM6_Init>:
* @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 <MX_TIM6_Init+0x78>)
8000f84: 4a1a ldr r2, [pc, #104] ; (8000ff0 <MX_TIM6_Init+0x7c>)
8000f86: 601a str r2, [r3, #0]
htim6.Init.Prescaler = 4000;
8000f88: 4b18 ldr r3, [pc, #96] ; (8000fec <MX_TIM6_Init+0x78>)
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 <MX_TIM6_Init+0x78>)
8000f92: 2200 movs r2, #0
8000f94: 609a str r2, [r3, #8]
htim6.Init.Period = 10000;
8000f96: 4b15 ldr r3, [pc, #84] ; (8000fec <MX_TIM6_Init+0x78>)
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 <MX_TIM6_Init+0x78>)
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 <MX_TIM6_Init+0x78>)
8000fa6: f004 f8d9 bl 800515c <HAL_TIM_Base_Init>
8000faa: 4603 mov r3, r0
8000fac: 2b00 cmp r3, #0
8000fae: d001 beq.n 8000fb4 <MX_TIM6_Init+0x40>
{
Error_Handler();
8000fb0: f001 fff8 bl 8002fa4 <Error_Handler>
}
if (HAL_TIM_OnePulse_Init(&htim6, TIM_OPMODE_SINGLE) != HAL_OK)
8000fb4: 2108 movs r1, #8
8000fb6: 480d ldr r0, [pc, #52] ; (8000fec <MX_TIM6_Init+0x78>)
8000fb8: f004 f91f bl 80051fa <HAL_TIM_OnePulse_Init>
8000fbc: 4603 mov r3, r0
8000fbe: 2b00 cmp r3, #0
8000fc0: d001 beq.n 8000fc6 <MX_TIM6_Init+0x52>
{
Error_Handler();
8000fc2: f001 ffef bl 8002fa4 <Error_Handler>
}
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 <MX_TIM6_Init+0x78>)
8000fd4: f004 fb32 bl 800563c <HAL_TIMEx_MasterConfigSynchronization>
8000fd8: 4603 mov r3, r0
8000fda: 2b00 cmp r3, #0
8000fdc: d001 beq.n 8000fe2 <MX_TIM6_Init+0x6e>
{
Error_Handler();
8000fde: f001 ffe1 bl 8002fa4 <Error_Handler>
}
/* 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 <MX_GPIO_Init>:
* @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 <MX_GPIO_Init+0x2dc>)
8001010: 6b1b ldr r3, [r3, #48] ; 0x30
8001012: 4aaf ldr r2, [pc, #700] ; (80012d0 <MX_GPIO_Init+0x2dc>)
8001014: f043 0310 orr.w r3, r3, #16
8001018: 6313 str r3, [r2, #48] ; 0x30
800101a: 4bad ldr r3, [pc, #692] ; (80012d0 <MX_GPIO_Init+0x2dc>)
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 <MX_GPIO_Init+0x2dc>)
800102c: 6b1b ldr r3, [r3, #48] ; 0x30
800102e: 4aa8 ldr r2, [pc, #672] ; (80012d0 <MX_GPIO_Init+0x2dc>)
8001030: f043 0304 orr.w r3, r3, #4
8001034: 6313 str r3, [r2, #48] ; 0x30
8001036: 4ba6 ldr r3, [pc, #664] ; (80012d0 <MX_GPIO_Init+0x2dc>)
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 <MX_GPIO_Init+0x2dc>)
8001048: 6b1b ldr r3, [r3, #48] ; 0x30
800104a: 4aa1 ldr r2, [pc, #644] ; (80012d0 <MX_GPIO_Init+0x2dc>)
800104c: f043 0320 orr.w r3, r3, #32
8001050: 6313 str r3, [r2, #48] ; 0x30
8001052: 4b9f ldr r3, [pc, #636] ; (80012d0 <MX_GPIO_Init+0x2dc>)
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 <MX_GPIO_Init+0x2dc>)
8001064: 6b1b ldr r3, [r3, #48] ; 0x30
8001066: 4a9a ldr r2, [pc, #616] ; (80012d0 <MX_GPIO_Init+0x2dc>)
8001068: f043 0380 orr.w r3, r3, #128 ; 0x80
800106c: 6313 str r3, [r2, #48] ; 0x30
800106e: 4b98 ldr r3, [pc, #608] ; (80012d0 <MX_GPIO_Init+0x2dc>)
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 <MX_GPIO_Init+0x2dc>)
8001080: 6b1b ldr r3, [r3, #48] ; 0x30
8001082: 4a93 ldr r2, [pc, #588] ; (80012d0 <MX_GPIO_Init+0x2dc>)
8001084: f043 0301 orr.w r3, r3, #1
8001088: 6313 str r3, [r2, #48] ; 0x30
800108a: 4b91 ldr r3, [pc, #580] ; (80012d0 <MX_GPIO_Init+0x2dc>)
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 <MX_GPIO_Init+0x2dc>)
800109c: 6b1b ldr r3, [r3, #48] ; 0x30
800109e: 4a8c ldr r2, [pc, #560] ; (80012d0 <MX_GPIO_Init+0x2dc>)
80010a0: f043 0302 orr.w r3, r3, #2
80010a4: 6313 str r3, [r2, #48] ; 0x30
80010a6: 4b8a ldr r3, [pc, #552] ; (80012d0 <MX_GPIO_Init+0x2dc>)
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 <MX_GPIO_Init+0x2dc>)
80010b8: 6b1b ldr r3, [r3, #48] ; 0x30
80010ba: 4a85 ldr r2, [pc, #532] ; (80012d0 <MX_GPIO_Init+0x2dc>)
80010bc: f043 0340 orr.w r3, r3, #64 ; 0x40
80010c0: 6313 str r3, [r2, #48] ; 0x30
80010c2: 4b83 ldr r3, [pc, #524] ; (80012d0 <MX_GPIO_Init+0x2dc>)
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 <MX_GPIO_Init+0x2dc>)
80010d4: 6b1b ldr r3, [r3, #48] ; 0x30
80010d6: 4a7e ldr r2, [pc, #504] ; (80012d0 <MX_GPIO_Init+0x2dc>)
80010d8: f043 0308 orr.w r3, r3, #8
80010dc: 6313 str r3, [r2, #48] ; 0x30
80010de: 4b7c ldr r3, [pc, #496] ; (80012d0 <MX_GPIO_Init+0x2dc>)
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 <MX_GPIO_Init+0x2e0>)
80010f0: f003 f866 bl 80041c0 <HAL_GPIO_WritePin>
/*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 <MX_GPIO_Init+0x2e4>)
80010fa: f003 f861 bl 80041c0 <HAL_GPIO_WritePin>
/*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 <MX_GPIO_Init+0x2e8>)
8001106: f003 f85b bl 80041c0 <HAL_GPIO_WritePin>
/*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 <MX_GPIO_Init+0x2ec>)
8001112: f003 f855 bl 80041c0 <HAL_GPIO_WritePin>
/*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 <MX_GPIO_Init+0x2f0>)
8001134: f002 fe9a bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2f0>)
8001156: f002 fe89 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2f0>)
8001178: f002 fe78 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2e0>)
8001198: f002 fe68 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2e0>)
80011b4: f002 fe5a bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2f4>)
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 <MX_GPIO_Init+0x2e4>)
80011cc: f002 fe4e bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2f8>)
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 <MX_GPIO_Init+0x2e4>)
80011e6: f002 fe41 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2e4>)
8001208: f002 fe30 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2e4>)
8001224: f002 fe22 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2f8>)
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 <MX_GPIO_Init+0x2e0>)
800123c: f002 fe16 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2fc>)
800125c: f002 fe06 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2fc>)
8001274: f002 fdfa bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x2ec>)
8001296: f002 fde9 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x300>)
80012b8: f002 fdd8 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x304>
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 <MX_GPIO_Init+0x4ec>)
8001304: f002 fdb2 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4ec>)
8001326: f002 fda1 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4ec>)
8001340: f002 fd94 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4f0>)
8001362: f002 fd83 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4f0>)
800137c: f002 fd76 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4f0>)
800139a: f002 fd67 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4f4>)
80013bc: f002 fd56 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4f8>)
80013de: f002 fd45 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4f8>)
8001400: f002 fd34 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4fc>)
8001422: f002 fd23 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4fc>)
8001444: f002 fd12 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4f0>)
8001464: f002 fd02 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4f4>)
8001486: f002 fcf1 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4f4>)
80014a4: f002 fce2 bl 8003e6c <HAL_GPIO_Init>
/*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 <MX_GPIO_Init+0x4ec>)
80014c4: f002 fcd2 bl 8003e6c <HAL_GPIO_Init>
/* 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_SetPriority>
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
80014d2: 2006 movs r0, #6
80014d4: f002 fc8d bl 8003df2 <HAL_NVIC_EnableIRQ>
}
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 <getSoundLevel>:
/* 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 <getSoundLevel+0x3a>
HAL_ADC_Start(&hadc3);
8001504: 4830 ldr r0, [pc, #192] ; (80015c8 <getSoundLevel+0xd4>)
8001506: f001 fff7 bl 80034f8 <HAL_ADC_Start>
HAL_ADC_PollForConversion(&hadc3, (uint32_t) 20);
800150a: 2114 movs r1, #20
800150c: 482e ldr r0, [pc, #184] ; (80015c8 <getSoundLevel+0xd4>)
800150e: f002 f8b9 bl 8003684 <HAL_ADC_PollForConversion>
samples[i] = HAL_ADC_GetValue(&hadc3);
8001512: 482d ldr r0, [pc, #180] ; (80015c8 <getSoundLevel+0xd4>)
8001514: f002 f93a bl 800378c <HAL_ADC_GetValue>
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 <getSoundLevel+0x10>
}
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 <getSoundLevel+0x60>
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 <getSoundLevel+0x46>
}
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 <getSoundLevel+0xd8>)
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 <getSoundLevel+0x7e>
returnValue = 0;
800156c: 2300 movs r3, #0
800156e: 81bb strh r3, [r7, #12]
8001570: e006 b.n 8001580 <getSoundLevel+0x8c>
}else{
returnValue = (uint16_t) (2 * (estimatedSoundLevel - cutoff));
8001572: 89fb ldrh r3, [r7, #14]
8001574: 4a15 ldr r2, [pc, #84] ; (80015cc <getSoundLevel+0xd8>)
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 <getSoundLevel+0xdc>)
8001584: 8812 ldrh r2, [r2, #0]
8001586: 1a9b subs r3, r3, r2
8001588: 4a12 ldr r2, [pc, #72] ; (80015d4 <getSoundLevel+0xe0>)
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 <getSoundLevel+0xdc>)
8001596: 881b ldrh r3, [r3, #0]
8001598: 4413 add r3, r2
800159a: b29a uxth r2, r3
800159c: 4b0c ldr r3, [pc, #48] ; (80015d0 <getSoundLevel+0xdc>)
800159e: 801a strh r2, [r3, #0]
if(averagedReturnValue >= 0xFF){
80015a0: 4b0b ldr r3, [pc, #44] ; (80015d0 <getSoundLevel+0xdc>)
80015a2: 881b ldrh r3, [r3, #0]
80015a4: 2bfe cmp r3, #254 ; 0xfe
80015a6: d901 bls.n 80015ac <getSoundLevel+0xb8>
return 0xFF;
80015a8: 23ff movs r3, #255 ; 0xff
80015aa: e008 b.n 80015be <getSoundLevel+0xca>
}else if(averagedReturnValue <= 10){
80015ac: 4b08 ldr r3, [pc, #32] ; (80015d0 <getSoundLevel+0xdc>)
80015ae: 881b ldrh r3, [r3, #0]
80015b0: 2b0a cmp r3, #10
80015b2: d801 bhi.n 80015b8 <getSoundLevel+0xc4>
return 0x00;
80015b4: 2300 movs r3, #0
80015b6: e002 b.n 80015be <getSoundLevel+0xca>
}else{
return averagedReturnValue;
80015b8: 4b05 ldr r3, [pc, #20] ; (80015d0 <getSoundLevel+0xdc>)
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 <LEDDesign_Off>:
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 <LEDDesign_Off+0x38>
for(uint8_t j = 0; j < 3; ++j){
80015e4: 2300 movs r3, #0
80015e6: 71bb strb r3, [r7, #6]
80015e8: e00c b.n 8001604 <LEDDesign_Off+0x2c>
LEDData[i][j] = 0x00;
80015ea: 79fa ldrb r2, [r7, #7]
80015ec: 79b9 ldrb r1, [r7, #6]
80015ee: 480d ldr r0, [pc, #52] ; (8001624 <LEDDesign_Off+0x4c>)
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 <LEDDesign_Off+0x12>
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 <LEDDesign_Off+0xc>
}
}
}
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 <LEDDesign_ColorWhite>:
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 <LEDDesign_ColorWhite+0x38>
for(uint8_t j = 0; j < 3; ++j){
8001634: 2300 movs r3, #0
8001636: 71bb strb r3, [r7, #6]
8001638: e00c b.n 8001654 <LEDDesign_ColorWhite+0x2c>
LEDData[i][j] = 0xFF;
800163a: 79fa ldrb r2, [r7, #7]
800163c: 79b9 ldrb r1, [r7, #6]
800163e: 480d ldr r0, [pc, #52] ; (8001674 <LEDDesign_ColorWhite+0x4c>)
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 <LEDDesign_ColorWhite+0x12>
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 <LEDDesign_ColorWhite+0xc>
}
}
}
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 <LEDDesign_ColorBlue>:
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 <LEDDesign_ColorBlue+0x22>
LEDData[i][0] = 0x00;
8001684: 79fa ldrb r2, [r7, #7]
8001686: 491b ldr r1, [pc, #108] ; (80016f4 <LEDDesign_ColorBlue+0x7c>)
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 <LEDDesign_ColorBlue+0xc>
}
for(uint8_t i = 0; i < 64; ++i){
80016a0: 2300 movs r3, #0
80016a2: 71bb strb r3, [r7, #6]
80016a4: e00b b.n 80016be <LEDDesign_ColorBlue+0x46>
LEDData[i][1] = 0x00;
80016a6: 79ba ldrb r2, [r7, #6]
80016a8: 4912 ldr r1, [pc, #72] ; (80016f4 <LEDDesign_ColorBlue+0x7c>)
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 <LEDDesign_ColorBlue+0x2e>
}
for(uint8_t i = 0; i < 64; ++i){
80016c4: 2300 movs r3, #0
80016c6: 717b strb r3, [r7, #5]
80016c8: e00b b.n 80016e2 <LEDDesign_ColorBlue+0x6a>
LEDData[i][2] = 0xFF;
80016ca: 797a ldrb r2, [r7, #5]
80016cc: 4909 ldr r1, [pc, #36] ; (80016f4 <LEDDesign_ColorBlue+0x7c>)
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 <LEDDesign_ColorBlue+0x52>
}
}
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 <LEDDesign_ColorGreen>:
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 <LEDDesign_ColorGreen+0x22>
LEDData[i][0] = 0xFF;
8001704: 79fa ldrb r2, [r7, #7]
8001706: 491b ldr r1, [pc, #108] ; (8001774 <LEDDesign_ColorGreen+0x7c>)
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 <LEDDesign_ColorGreen+0xc>
}
for(uint8_t i = 0; i < 64; ++i){
8001720: 2300 movs r3, #0
8001722: 71bb strb r3, [r7, #6]
8001724: e00b b.n 800173e <LEDDesign_ColorGreen+0x46>
LEDData[i][1] = 0x00;
8001726: 79ba ldrb r2, [r7, #6]
8001728: 4912 ldr r1, [pc, #72] ; (8001774 <LEDDesign_ColorGreen+0x7c>)
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 <LEDDesign_ColorGreen+0x2e>
}
for(uint8_t i = 0; i < 64; ++i){
8001744: 2300 movs r3, #0
8001746: 717b strb r3, [r7, #5]
8001748: e00b b.n 8001762 <LEDDesign_ColorGreen+0x6a>
LEDData[i][2] = 0x00;
800174a: 797a ldrb r2, [r7, #5]
800174c: 4909 ldr r1, [pc, #36] ; (8001774 <LEDDesign_ColorGreen+0x7c>)
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 <LEDDesign_ColorGreen+0x52>
}
}
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 <LEDDesign_ColorRed>:
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 <LEDDesign_ColorRed+0x22>
LEDData[i][0] = 0x00;
8001784: 79fa ldrb r2, [r7, #7]
8001786: 491b ldr r1, [pc, #108] ; (80017f4 <LEDDesign_ColorRed+0x7c>)
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 <LEDDesign_ColorRed+0xc>
}
for(uint8_t i = 0; i < 64; ++i){
80017a0: 2300 movs r3, #0
80017a2: 71bb strb r3, [r7, #6]
80017a4: e00b b.n 80017be <LEDDesign_ColorRed+0x46>
LEDData[i][1] = 0xFF;
80017a6: 79ba ldrb r2, [r7, #6]
80017a8: 4912 ldr r1, [pc, #72] ; (80017f4 <LEDDesign_ColorRed+0x7c>)
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 <LEDDesign_ColorRed+0x2e>
}
for(uint8_t i = 0; i < 64; ++i){
80017c4: 2300 movs r3, #0
80017c6: 717b strb r3, [r7, #5]
80017c8: e00b b.n 80017e2 <LEDDesign_ColorRed+0x6a>
LEDData[i][2] = 0x00;
80017ca: 797a ldrb r2, [r7, #5]
80017cc: 4909 ldr r1, [pc, #36] ; (80017f4 <LEDDesign_ColorRed+0x7c>)
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 <LEDDesign_ColorRed+0x52>
}
}
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 <LEDDesign_Crazy>:
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 <HAL_Delay>
for(uint8_t i = 0; i < 64; ++i){
8001804: 2300 movs r3, #0
8001806: 73fb strb r3, [r7, #15]
8001808: e029 b.n 800185e <LEDDesign_Crazy+0x66>
for(uint8_t j = 0; j < 3; ++j){
800180a: 2300 movs r3, #0
800180c: 73bb strb r3, [r7, #14]
800180e: e020 b.n 8001852 <LEDDesign_Crazy+0x5a>
LEDData[i][j] = (uint8_t) (0xFF * (((float) rand()) / RAND_MAX));
8001810: f003 ffd6 bl 80057c0 <rand>
8001814: ee07 0a90 vmov s15, r0
8001818: eeb8 7ae7 vcvt.f32.s32 s14, s15
800181c: eddf 6a13 vldr s13, [pc, #76] ; 800186c <LEDDesign_Crazy+0x74>
8001820: eec7 7a26 vdiv.f32 s15, s14, s13
8001824: ed9f 7a12 vldr s14, [pc, #72] ; 8001870 <LEDDesign_Crazy+0x78>
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 <LEDDesign_Crazy+0x7c>)
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 <LEDDesign_Crazy+0x18>
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 <LEDDesign_Crazy+0x12>
}
}
}
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 <LEDDesign_Smile>:
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 <lookupLED>
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>
setLED(lookupLED(0,1), 0x00, 0x00, 0x00);
8001892: 2101 movs r1, #1
8001894: 2000 movs r0, #0
8001896: f001 f845 bl 8002924 <lookupLED>
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>
setLED(lookupLED(0,2), 0x00, 0x00, 0x00);
80018a8: 2102 movs r1, #2
80018aa: 2000 movs r0, #0
80018ac: f001 f83a bl 8002924 <lookupLED>
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>
setLED(lookupLED(0,3), 0x00, 0x00, 0x7F);
80018be: 2103 movs r1, #3
80018c0: 2000 movs r0, #0
80018c2: f001 f82f bl 8002924 <lookupLED>
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>
setLED(lookupLED(0,4), 0x00, 0x00, 0x00);
80018d4: 2104 movs r1, #4
80018d6: 2000 movs r0, #0
80018d8: f001 f824 bl 8002924 <lookupLED>
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>
setLED(lookupLED(0,5), 0x00, 0x00, 0x00);
80018ea: 2105 movs r1, #5
80018ec: 2000 movs r0, #0
80018ee: f001 f819 bl 8002924 <lookupLED>
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>
setLED(lookupLED(0,6), 0x00, 0x00, 0x00);
8001900: 2106 movs r1, #6
8001902: 2000 movs r0, #0
8001904: f001 f80e bl 8002924 <lookupLED>
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>
setLED(lookupLED(0,7), 0x00, 0x00, 0x00);
8001916: 2107 movs r1, #7
8001918: 2000 movs r0, #0
800191a: f001 f803 bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,0), 0x00, 0x00, 0x00);
800192c: 2100 movs r1, #0
800192e: 2001 movs r0, #1
8001930: f000 fff8 bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,1), 0x00, 0x00, 0x00);
8001942: 2101 movs r1, #1
8001944: 2001 movs r0, #1
8001946: f000 ffed bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,2), 0x00, 0x00, 0x7F);
8001958: 2102 movs r1, #2
800195a: 2001 movs r0, #1
800195c: f000 ffe2 bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,3), 0x00, 0x00, 0x00);
800196e: 2103 movs r1, #3
8001970: 2001 movs r0, #1
8001972: f000 ffd7 bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,4), 0x00, 0x00, 0x00);
8001984: 2104 movs r1, #4
8001986: 2001 movs r0, #1
8001988: f000 ffcc bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,5), 0x00, 0x00, 0x00);
800199a: 2105 movs r1, #5
800199c: 2001 movs r0, #1
800199e: f000 ffc1 bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,6), 0x00, 0x00, 0x00);
80019b0: 2106 movs r1, #6
80019b2: 2001 movs r0, #1
80019b4: f000 ffb6 bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,7), 0x00, 0x00, 0x00);
80019c6: 2107 movs r1, #7
80019c8: 2001 movs r0, #1
80019ca: f000 ffab bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,0), 0x00, 0x00, 0x00);
80019dc: 2100 movs r1, #0
80019de: 2002 movs r0, #2
80019e0: f000 ffa0 bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,1), 0x00, 0x00, 0x00);
80019f2: 2101 movs r1, #1
80019f4: 2002 movs r0, #2
80019f6: f000 ff95 bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,2), 0x00, 0x00, 0x7F);
8001a08: 2102 movs r1, #2
8001a0a: 2002 movs r0, #2
8001a0c: f000 ff8a bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,3), 0x00, 0x00, 0x00);
8001a1e: 2103 movs r1, #3
8001a20: 2002 movs r0, #2
8001a22: f000 ff7f bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,4), 0x00, 0x00, 0x00);
8001a34: 2104 movs r1, #4
8001a36: 2002 movs r0, #2
8001a38: f000 ff74 bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,5), 0x00, 0x00, 0x00);
8001a4a: 2105 movs r1, #5
8001a4c: 2002 movs r0, #2
8001a4e: f000 ff69 bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,6), 0x00, 0x00, 0x00);
8001a60: 2106 movs r1, #6
8001a62: 2002 movs r0, #2
8001a64: f000 ff5e bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,7), 0x00, 0x00, 0x00);
8001a76: 2107 movs r1, #7
8001a78: 2002 movs r0, #2
8001a7a: f000 ff53 bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,0), 0x00, 0x00, 0x00);
8001a8c: 2100 movs r1, #0
8001a8e: 2003 movs r0, #3
8001a90: f000 ff48 bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,1), 0x00, 0x00, 0x00);
8001aa2: 2101 movs r1, #1
8001aa4: 2003 movs r0, #3
8001aa6: f000 ff3d bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,2), 0x00, 0x00, 0x7F);
8001ab8: 2102 movs r1, #2
8001aba: 2003 movs r0, #3
8001abc: f000 ff32 bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,3), 0x00, 0x00, 0x00);
8001ace: 2103 movs r1, #3
8001ad0: 2003 movs r0, #3
8001ad2: f000 ff27 bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,4), 0x00, 0x00, 0x00);
8001ae4: 2104 movs r1, #4
8001ae6: 2003 movs r0, #3
8001ae8: f000 ff1c bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,5), 0x00, 0x00, 0x00);
8001afa: 2105 movs r1, #5
8001afc: 2003 movs r0, #3
8001afe: f000 ff11 bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,6), 0x00, 0x00, 0x00);
8001b10: 2106 movs r1, #6
8001b12: 2003 movs r0, #3
8001b14: f000 ff06 bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,7), 0x00, 0x00, 0x00);
8001b26: 2107 movs r1, #7
8001b28: 2003 movs r0, #3
8001b2a: f000 fefb bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,0), 0x00, 0x00, 0x00);
8001b3c: 2100 movs r1, #0
8001b3e: 2004 movs r0, #4
8001b40: f000 fef0 bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,1), 0x00, 0x00, 0x00);
8001b52: 2101 movs r1, #1
8001b54: 2004 movs r0, #4
8001b56: f000 fee5 bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,2), 0x00, 0x00, 0x7F);
8001b68: 2102 movs r1, #2
8001b6a: 2004 movs r0, #4
8001b6c: f000 feda bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,3), 0x00, 0x00, 0x00);
8001b7e: 2103 movs r1, #3
8001b80: 2004 movs r0, #4
8001b82: f000 fecf bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,4), 0x00, 0x00, 0x00);
8001b94: 2104 movs r1, #4
8001b96: 2004 movs r0, #4
8001b98: f000 fec4 bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,5), 0x00, 0x00, 0x00);
8001baa: 2105 movs r1, #5
8001bac: 2004 movs r0, #4
8001bae: f000 feb9 bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,6), 0x00, 0x00, 0x00);
8001bc0: 2106 movs r1, #6
8001bc2: 2004 movs r0, #4
8001bc4: f000 feae bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,7), 0x00, 0x00, 0x00);
8001bd6: 2107 movs r1, #7
8001bd8: 2004 movs r0, #4
8001bda: f000 fea3 bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,0), 0x00, 0x00, 0x00);
8001bec: 2100 movs r1, #0
8001bee: 2005 movs r0, #5
8001bf0: f000 fe98 bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,1), 0x00, 0x00, 0x00);
8001c02: 2101 movs r1, #1
8001c04: 2005 movs r0, #5
8001c06: f000 fe8d bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,2), 0x00, 0x00, 0x7F);
8001c18: 2102 movs r1, #2
8001c1a: 2005 movs r0, #5
8001c1c: f000 fe82 bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,3), 0x00, 0x00, 0x00);
8001c2e: 2103 movs r1, #3
8001c30: 2005 movs r0, #5
8001c32: f000 fe77 bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,4), 0x00, 0x00, 0x00);
8001c44: 2104 movs r1, #4
8001c46: 2005 movs r0, #5
8001c48: f000 fe6c bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,5), 0x00, 0x00, 0x00);
8001c5a: 2105 movs r1, #5
8001c5c: 2005 movs r0, #5
8001c5e: f000 fe61 bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,6), 0x00, 0x00, 0x00);
8001c70: 2106 movs r1, #6
8001c72: 2005 movs r0, #5
8001c74: f000 fe56 bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,7), 0x00, 0x00, 0x00);
8001c86: 2107 movs r1, #7
8001c88: 2005 movs r0, #5
8001c8a: f000 fe4b bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,0), 0x00, 0x00, 0x00);
8001c9c: 2100 movs r1, #0
8001c9e: 2006 movs r0, #6
8001ca0: f000 fe40 bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,1), 0x00, 0x00, 0x00);
8001cb2: 2101 movs r1, #1
8001cb4: 2006 movs r0, #6
8001cb6: f000 fe35 bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,2), 0x00, 0x00, 0x7F);
8001cc8: 2102 movs r1, #2
8001cca: 2006 movs r0, #6
8001ccc: f000 fe2a bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,3), 0x00, 0x00, 0x00);
8001cde: 2103 movs r1, #3
8001ce0: 2006 movs r0, #6
8001ce2: f000 fe1f bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,4), 0x00, 0x00, 0x00);
8001cf4: 2104 movs r1, #4
8001cf6: 2006 movs r0, #6
8001cf8: f000 fe14 bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,5), 0x00, 0x00, 0x00);
8001d0a: 2105 movs r1, #5
8001d0c: 2006 movs r0, #6
8001d0e: f000 fe09 bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,6), 0x00, 0x00, 0x00);
8001d20: 2106 movs r1, #6
8001d22: 2006 movs r0, #6
8001d24: f000 fdfe bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,7), 0x00, 0x00, 0x00);
8001d36: 2107 movs r1, #7
8001d38: 2006 movs r0, #6
8001d3a: f000 fdf3 bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,0), 0x00, 0x00, 0x00);
8001d4c: 2100 movs r1, #0
8001d4e: 2007 movs r0, #7
8001d50: f000 fde8 bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,1), 0x00, 0x00, 0x00);
8001d62: 2101 movs r1, #1
8001d64: 2007 movs r0, #7
8001d66: f000 fddd bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,2), 0x00, 0x00, 0x00);
8001d78: 2102 movs r1, #2
8001d7a: 2007 movs r0, #7
8001d7c: f000 fdd2 bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,3), 0x00, 0x00, 0x7F);
8001d8e: 2103 movs r1, #3
8001d90: 2007 movs r0, #7
8001d92: f000 fdc7 bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,4), 0x00, 0x00, 0x00);
8001da4: 2104 movs r1, #4
8001da6: 2007 movs r0, #7
8001da8: f000 fdbc bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,5), 0x00, 0x00, 0x00);
8001dba: 2105 movs r1, #5
8001dbc: 2007 movs r0, #7
8001dbe: f000 fdb1 bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,6), 0x00, 0x00, 0x00);
8001dd0: 2106 movs r1, #6
8001dd2: 2007 movs r0, #7
8001dd4: f000 fda6 bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,7), 0x00, 0x00, 0x00);
8001de6: 2107 movs r1, #7
8001de8: 2007 movs r0, #7
8001dea: f000 fd9b bl 8002924 <lookupLED>
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 <setLED>
}
8001dfc: bf00 nop
8001dfe: bd80 pop {r7, pc}
08001e00 <LEDDesign_Smile_Audio>:
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 <getSoundLevel>
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 <lookupLED>
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>
setLED(lookupLED(0,1), 0x00, 0x00, 0x00);
8001e24: 2101 movs r1, #1
8001e26: 2000 movs r0, #0
8001e28: f000 fd7c bl 8002924 <lookupLED>
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>
setLED(lookupLED(0,2), 0x00, 0x00, currentSoundLevel * 0.25);
8001e3a: 2102 movs r1, #2
8001e3c: 2000 movs r0, #0
8001e3e: f000 fd71 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x400>)
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>
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 <lookupLED>
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 <LEDDesign_Smile_Audio+0x404>)
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 <LEDDesign_Smile_Audio+0x3f8>)
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>
setLED(lookupLED(0,4), 0x00, 0x00, currentSoundLevel * 0.25);
8001ebc: 2104 movs r1, #4
8001ebe: 2000 movs r0, #0
8001ec0: f000 fd30 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x400>)
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>
setLED(lookupLED(0,5), 0x00, 0x00, 0x00);
8001ef4: 2105 movs r1, #5
8001ef6: 2000 movs r0, #0
8001ef8: f000 fd14 bl 8002924 <lookupLED>
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>
setLED(lookupLED(0,6), 0x00, 0x00, 0x00);
8001f0a: 2106 movs r1, #6
8001f0c: 2000 movs r0, #0
8001f0e: f000 fd09 bl 8002924 <lookupLED>
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>
setLED(lookupLED(0,7), 0x00, 0x00, 0x00);
8001f20: 2107 movs r1, #7
8001f22: 2000 movs r0, #0
8001f24: f000 fcfe bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,0), 0x00, 0x00, 0x00);
8001f36: 2100 movs r1, #0
8001f38: 2001 movs r0, #1
8001f3a: f000 fcf3 bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,1), 0x00, 0x00, currentSoundLevel * 0.5);
8001f4c: 2101 movs r1, #1
8001f4e: 2001 movs r0, #1
8001f50: f000 fce8 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x404>)
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>
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 <lookupLED>
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 <LEDDesign_Smile_Audio+0x404>)
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 <LEDDesign_Smile_Audio+0x3f8>)
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>
setLED(lookupLED(1,3), 0x00, 0x00, currentSoundLevel);
8001fce: 2103 movs r1, #3
8001fd0: 2001 movs r0, #1
8001fd2: f000 fca7 bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,4), 0x00, 0x00, currentSoundLevel);
8001fe4: 2104 movs r1, #4
8001fe6: 2001 movs r0, #1
8001fe8: f000 fc9c bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,5), 0x00, 0x00, currentSoundLevel * 0.5);
8001ffa: 2105 movs r1, #5
8001ffc: 2001 movs r0, #1
8001ffe: f000 fc91 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x404>)
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>
setLED(lookupLED(1,6), 0x00, 0x00, 0x00);
8002032: 2106 movs r1, #6
8002034: 2001 movs r0, #1
8002036: f000 fc75 bl 8002924 <lookupLED>
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>
setLED(lookupLED(1,7), 0x00, 0x00, 0x00);
8002048: 2107 movs r1, #7
800204a: 2001 movs r0, #1
800204c: f000 fc6a bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,0), 0x00, 0x00, 0x00);
800205e: 2100 movs r1, #0
8002060: 2002 movs r0, #2
8002062: f000 fc5f bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,1), 0x00, 0x00, currentSoundLevel * 0.5);
8002074: 2101 movs r1, #1
8002076: 2002 movs r0, #2
8002078: f000 fc54 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x404>)
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>
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 <lookupLED>
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 <LEDDesign_Smile_Audio+0x404>)
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 <LEDDesign_Smile_Audio+0x3f8>)
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>
setLED(lookupLED(2,3), 0x00, 0x00, currentSoundLevel);
80020f6: 2103 movs r1, #3
80020f8: 2002 movs r0, #2
80020fa: f000 fc13 bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,4), 0x00, 0x00, currentSoundLevel);
800210c: 2104 movs r1, #4
800210e: 2002 movs r0, #2
8002110: f000 fc08 bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,5), 0x00, 0x00, currentSoundLevel * 0.5);
8002122: 2105 movs r1, #5
8002124: 2002 movs r0, #2
8002126: f000 fbfd bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x404>)
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>
setLED(lookupLED(2,6), 0x00, 0x00, 0x00);
800215a: 2106 movs r1, #6
800215c: 2002 movs r0, #2
800215e: f000 fbe1 bl 8002924 <lookupLED>
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>
setLED(lookupLED(2,7), 0x00, 0x00, 0x00);
8002170: 2107 movs r1, #7
8002172: 2002 movs r0, #2
8002174: f000 fbd6 bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,0), 0x00, 0x00, currentSoundLevel * 0.25);
8002186: 2100 movs r1, #0
8002188: 2003 movs r0, #3
800218a: f000 fbcb bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x400>)
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>
setLED(lookupLED(3,1), 0x00, 0x00, currentSoundLevel * 0.5);
80021be: 2101 movs r1, #1
80021c0: 2003 movs r0, #3
80021c2: f000 fbaf bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x404>)
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 <LEDDesign_Smile_Audio+0x408>
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>
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 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d0>)
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 <LEDDesign_Smile_Audio+0x7c8>)
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>
setLED(lookupLED(3,3), 0x00, 0x00, currentSoundLevel);
8002258: 2103 movs r1, #3
800225a: 2003 movs r0, #3
800225c: f000 fb62 bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,4), 0x00, 0x00, currentSoundLevel);
800226e: 2104 movs r1, #4
8002270: 2003 movs r0, #3
8002272: f000 fb57 bl 8002924 <lookupLED>
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>
setLED(lookupLED(3,5), 0x00, 0x00, currentSoundLevel * 0.5);
8002284: 2105 movs r1, #5
8002286: 2003 movs r0, #3
8002288: f000 fb4c bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d0>)
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>
setLED(lookupLED(3,6), 0x00, 0x00, currentSoundLevel * 0.25);
80022bc: 2106 movs r1, #6
80022be: 2003 movs r0, #3
80022c0: f000 fb30 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d4>)
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>
setLED(lookupLED(3,7), 0x00, 0x00, 0x00);
80022f4: 2107 movs r1, #7
80022f6: 2003 movs r0, #3
80022f8: f000 fb14 bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,0), 0x00, 0x00, currentSoundLevel * 0.25);
800230a: 2100 movs r1, #0
800230c: 2004 movs r0, #4
800230e: f000 fb09 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d4>)
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>
setLED(lookupLED(4,1), 0x00, 0x00, currentSoundLevel * 0.5);
8002342: 2101 movs r1, #1
8002344: 2004 movs r0, #4
8002346: f000 faed bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d0>)
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>
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 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d0>)
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 <LEDDesign_Smile_Audio+0x7c8>)
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>
setLED(lookupLED(4,3), 0x00, 0x00, currentSoundLevel);
80023c4: 2103 movs r1, #3
80023c6: 2004 movs r0, #4
80023c8: f000 faac bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,4), 0x00, 0x00, currentSoundLevel);
80023da: 2104 movs r1, #4
80023dc: 2004 movs r0, #4
80023de: f000 faa1 bl 8002924 <lookupLED>
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>
setLED(lookupLED(4,5), 0x00, 0x00, currentSoundLevel * 0.5);
80023f0: 2105 movs r1, #5
80023f2: 2004 movs r0, #4
80023f4: f000 fa96 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d0>)
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>
setLED(lookupLED(4,6), 0x00, 0x00, currentSoundLevel * 0.25);
8002428: 2106 movs r1, #6
800242a: 2004 movs r0, #4
800242c: f000 fa7a bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d4>)
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>
setLED(lookupLED(4,7), 0x00, 0x00, 0x00);
8002460: 2107 movs r1, #7
8002462: 2004 movs r0, #4
8002464: f000 fa5e bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,0), 0x00, 0x00, 0x00);
8002476: 2100 movs r1, #0
8002478: 2005 movs r0, #5
800247a: f000 fa53 bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,1), 0x00, 0x00, currentSoundLevel * 0.5);
800248c: 2101 movs r1, #1
800248e: 2005 movs r0, #5
8002490: f000 fa48 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d0>)
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>
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 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d0>)
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 <LEDDesign_Smile_Audio+0x7c8>)
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>
setLED(lookupLED(5,3), 0x00, 0x00, currentSoundLevel);
800250e: 2103 movs r1, #3
8002510: 2005 movs r0, #5
8002512: f000 fa07 bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,4), 0x00, 0x00, currentSoundLevel);
8002524: 2104 movs r1, #4
8002526: 2005 movs r0, #5
8002528: f000 f9fc bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,5), 0x00, 0x00, currentSoundLevel * 0.5);
800253a: 2105 movs r1, #5
800253c: 2005 movs r0, #5
800253e: f000 f9f1 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0x7d0>)
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>
setLED(lookupLED(5,6), 0x00, 0x00, 0x00);
8002572: 2106 movs r1, #6
8002574: 2005 movs r0, #5
8002576: f000 f9d5 bl 8002924 <lookupLED>
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>
setLED(lookupLED(5,7), 0x00, 0x00, 0x00);
8002588: 2107 movs r1, #7
800258a: 2005 movs r0, #5
800258c: f000 f9ca bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,0), 0x00, 0x00, 0x00);
800259e: 2100 movs r1, #0
80025a0: 2006 movs r0, #6
80025a2: f000 f9bf bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,1), 0x00, 0x00, currentSoundLevel * 0.5);
80025b4: 2101 movs r1, #1
80025b6: 2006 movs r0, #6
80025b8: f000 f9b4 bl 8002924 <lookupLED>
80025bc: 4603 mov r3, r0
80025be: 461d mov r5, r3
80025c0: e00a b.n 80025d8 <LEDDesign_Smile_Audio+0x7d8>
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 <LEDDesign_Smile_Audio+0xa18>)
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>
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 <lookupLED>
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 <LEDDesign_Smile_Audio+0xa18>)
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 <LEDDesign_Smile_Audio+0xa10>)
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>
setLED(lookupLED(6,3), 0x00, 0x00, currentSoundLevel);
800264e: 2103 movs r1, #3
8002650: 2006 movs r0, #6
8002652: f000 f967 bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,4), 0x00, 0x00, currentSoundLevel);
8002664: 2104 movs r1, #4
8002666: 2006 movs r0, #6
8002668: f000 f95c bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,5), 0x00, 0x00, currentSoundLevel * 0.5);
800267a: 2105 movs r1, #5
800267c: 2006 movs r0, #6
800267e: f000 f951 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0xa18>)
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>
setLED(lookupLED(6,6), 0x00, 0x00, 0x00);
80026b2: 2106 movs r1, #6
80026b4: 2006 movs r0, #6
80026b6: f000 f935 bl 8002924 <lookupLED>
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>
setLED(lookupLED(6,7), 0x00, 0x00, 0x00);
80026c8: 2107 movs r1, #7
80026ca: 2006 movs r0, #6
80026cc: f000 f92a bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,0), 0x00, 0x00, 0x00);
80026de: 2100 movs r1, #0
80026e0: 2007 movs r0, #7
80026e2: f000 f91f bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,1), 0x00, 0x00, 0x00);
80026f4: 2101 movs r1, #1
80026f6: 2007 movs r0, #7
80026f8: f000 f914 bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,2), 0x00, 0x00, currentSoundLevel * 0.25);
800270a: 2102 movs r1, #2
800270c: 2007 movs r0, #7
800270e: f000 f909 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0xa1c>)
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>
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 <lookupLED>
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 <LEDDesign_Smile_Audio+0xa18>)
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 <LEDDesign_Smile_Audio+0xa10>)
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>
setLED(lookupLED(7,4), 0x00, 0x00, currentSoundLevel * 0.25);
800278c: 2104 movs r1, #4
800278e: 2007 movs r0, #7
8002790: f000 f8c8 bl 8002924 <lookupLED>
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 <LEDDesign_Smile_Audio+0xa1c>)
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>
setLED(lookupLED(7,5), 0x00, 0x00, 0x00);
80027c4: 2105 movs r1, #5
80027c6: 2007 movs r0, #7
80027c8: f000 f8ac bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,6), 0x00, 0x00, 0x00);
80027da: 2106 movs r1, #6
80027dc: 2007 movs r0, #7
80027de: f000 f8a1 bl 8002924 <lookupLED>
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>
setLED(lookupLED(7,7), 0x00, 0x00, 0x00);
80027f0: 2107 movs r1, #7
80027f2: 2007 movs r0, #7
80027f4: f000 f896 bl 8002924 <lookupLED>
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 <setLED>
}
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 <LEDDesign_SuperCrazy>:
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 <HAL_Delay>
uint8_t randomByte = (uint8_t) (0xFF * (((float) rand()) / RAND_MAX));
800282c: f002 ffc8 bl 80057c0 <rand>
8002830: ee07 0a90 vmov s15, r0
8002834: eeb8 7ae7 vcvt.f32.s32 s14, s15
8002838: eddf 6a37 vldr s13, [pc, #220] ; 8002918 <LEDDesign_SuperCrazy+0xf8>
800283c: eec7 7a26 vdiv.f32 s15, s14, s13
8002840: ed9f 7a36 vldr s14, [pc, #216] ; 800291c <LEDDesign_SuperCrazy+0xfc>
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 <LEDDesign_SuperCrazy+0x50>
LEDData[i][0] = randomByte;
800285a: 7bfa ldrb r2, [r7, #15]
800285c: 4930 ldr r1, [pc, #192] ; (8002920 <LEDDesign_SuperCrazy+0x100>)
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 <LEDDesign_SuperCrazy+0x3a>
}
randomByte = (uint8_t) (0xFF * (((float) rand()) / RAND_MAX));
8002876: f002 ffa3 bl 80057c0 <rand>
800287a: ee07 0a90 vmov s15, r0
800287e: eeb8 7ae7 vcvt.f32.s32 s14, s15
8002882: eddf 6a25 vldr s13, [pc, #148] ; 8002918 <LEDDesign_SuperCrazy+0xf8>
8002886: eec7 7a26 vdiv.f32 s15, s14, s13
800288a: ed9f 7a24 vldr s14, [pc, #144] ; 800291c <LEDDesign_SuperCrazy+0xfc>
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 <LEDDesign_SuperCrazy+0x9c>
LEDData[i][1] = randomByte;
80028a4: 7bba ldrb r2, [r7, #14]
80028a6: 491e ldr r1, [pc, #120] ; (8002920 <LEDDesign_SuperCrazy+0x100>)
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 <LEDDesign_SuperCrazy+0x84>
}
randomByte = (uint8_t) (0xFF * (((float) rand()) / RAND_MAX));
80028c2: f002 ff7d bl 80057c0 <rand>
80028c6: ee07 0a90 vmov s15, r0
80028ca: eeb8 7ae7 vcvt.f32.s32 s14, s15
80028ce: eddf 6a12 vldr s13, [pc, #72] ; 8002918 <LEDDesign_SuperCrazy+0xf8>
80028d2: eec7 7a26 vdiv.f32 s15, s14, s13
80028d6: ed9f 7a11 vldr s14, [pc, #68] ; 800291c <LEDDesign_SuperCrazy+0xfc>
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 <LEDDesign_SuperCrazy+0xe8>
LEDData[i][2] = randomByte;
80028f0: 7b7a ldrb r2, [r7, #13]
80028f2: 490b ldr r1, [pc, #44] ; (8002920 <LEDDesign_SuperCrazy+0x100>)
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 <LEDDesign_SuperCrazy+0xd0>
}
}
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 <lookupLED>:
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 <lookupLED+0x2d2>
800293c: a201 add r2, pc, #4 ; (adr r2, 8002944 <lookupLED+0x20>)
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 <lookupLED+0x2b4>
800296c: a201 add r2, pc, #4 ; (adr r2, 8002974 <lookupLED+0x50>)
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 <lookupLED+0x2d4>
break;
case 1:
return 15;
8002998: 230f movs r3, #15
800299a: e12d b.n 8002bf8 <lookupLED+0x2d4>
break;
case 2:
return 16;
800299c: 2310 movs r3, #16
800299e: e12b b.n 8002bf8 <lookupLED+0x2d4>
break;
case 3:
return 31;
80029a0: 231f movs r3, #31
80029a2: e129 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 4:
return 32;
80029a4: 2320 movs r3, #32
80029a6: e127 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 5:
return 47;
80029a8: 232f movs r3, #47 ; 0x2f
80029aa: e125 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 6:
return 48;
80029ac: 2330 movs r3, #48 ; 0x30
80029ae: e123 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 7:
return 63;
80029b0: 233f movs r3, #63 ; 0x3f
80029b2: e121 b.n 8002bf8 <lookupLED+0x2d4>
break;
}
break;
case 1:
switch(row){
80029b4: 79bb ldrb r3, [r7, #6]
80029b6: 2b07 cmp r3, #7
80029b8: f200 8110 bhi.w 8002bdc <lookupLED+0x2b8>
80029bc: a201 add r2, pc, #4 ; (adr r2, 80029c4 <lookupLED+0xa0>)
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 <lookupLED+0x2d4>
break;
case 1:
return 14;
80029e8: 230e movs r3, #14
80029ea: e105 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 2:
return 17;
80029ec: 2311 movs r3, #17
80029ee: e103 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 3:
return 30;
80029f0: 231e movs r3, #30
80029f2: e101 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 4:
return 33;
80029f4: 2321 movs r3, #33 ; 0x21
80029f6: e0ff b.n 8002bf8 <lookupLED+0x2d4>
break;
case 5:
return 46;
80029f8: 232e movs r3, #46 ; 0x2e
80029fa: e0fd b.n 8002bf8 <lookupLED+0x2d4>
break;
case 6:
return 49;
80029fc: 2331 movs r3, #49 ; 0x31
80029fe: e0fb b.n 8002bf8 <lookupLED+0x2d4>
break;
case 7:
return 62;
8002a00: 233e movs r3, #62 ; 0x3e
8002a02: e0f9 b.n 8002bf8 <lookupLED+0x2d4>
break;
}
break;
case 2:
switch(row){
8002a04: 79bb ldrb r3, [r7, #6]
8002a06: 2b07 cmp r3, #7
8002a08: f200 80ea bhi.w 8002be0 <lookupLED+0x2bc>
8002a0c: a201 add r2, pc, #4 ; (adr r2, 8002a14 <lookupLED+0xf0>)
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 <lookupLED+0x2d4>
break;
case 1:
return 13;
8002a38: 230d movs r3, #13
8002a3a: e0dd b.n 8002bf8 <lookupLED+0x2d4>
break;
case 2:
return 18;
8002a3c: 2312 movs r3, #18
8002a3e: e0db b.n 8002bf8 <lookupLED+0x2d4>
break;
case 3:
return 29;
8002a40: 231d movs r3, #29
8002a42: e0d9 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 4:
return 34;
8002a44: 2322 movs r3, #34 ; 0x22
8002a46: e0d7 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 5:
return 45;
8002a48: 232d movs r3, #45 ; 0x2d
8002a4a: e0d5 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 6:
return 50;
8002a4c: 2332 movs r3, #50 ; 0x32
8002a4e: e0d3 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 7:
return 61;
8002a50: 233d movs r3, #61 ; 0x3d
8002a52: e0d1 b.n 8002bf8 <lookupLED+0x2d4>
break;
}
break;
case 3:
switch(row){
8002a54: 79bb ldrb r3, [r7, #6]
8002a56: 2b07 cmp r3, #7
8002a58: f200 80c4 bhi.w 8002be4 <lookupLED+0x2c0>
8002a5c: a201 add r2, pc, #4 ; (adr r2, 8002a64 <lookupLED+0x140>)
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 <lookupLED+0x2d4>
break;
case 1:
return 12;
8002a88: 230c movs r3, #12
8002a8a: e0b5 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 2:
return 19;
8002a8c: 2313 movs r3, #19
8002a8e: e0b3 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 3:
return 28;
8002a90: 231c movs r3, #28
8002a92: e0b1 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 4:
return 35;
8002a94: 2323 movs r3, #35 ; 0x23
8002a96: e0af b.n 8002bf8 <lookupLED+0x2d4>
break;
case 5:
return 44;
8002a98: 232c movs r3, #44 ; 0x2c
8002a9a: e0ad b.n 8002bf8 <lookupLED+0x2d4>
break;
case 6:
return 51;
8002a9c: 2333 movs r3, #51 ; 0x33
8002a9e: e0ab b.n 8002bf8 <lookupLED+0x2d4>
break;
case 7:
return 60;
8002aa0: 233c movs r3, #60 ; 0x3c
8002aa2: e0a9 b.n 8002bf8 <lookupLED+0x2d4>
break;
}
break;
case 4:
switch(row){
8002aa4: 79bb ldrb r3, [r7, #6]
8002aa6: 2b07 cmp r3, #7
8002aa8: f200 809e bhi.w 8002be8 <lookupLED+0x2c4>
8002aac: a201 add r2, pc, #4 ; (adr r2, 8002ab4 <lookupLED+0x190>)
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 <lookupLED+0x2d4>
break;
case 1:
return 11;
8002ad8: 230b movs r3, #11
8002ada: e08d b.n 8002bf8 <lookupLED+0x2d4>
break;
case 2:
return 20;
8002adc: 2314 movs r3, #20
8002ade: e08b b.n 8002bf8 <lookupLED+0x2d4>
break;
case 3:
return 27;
8002ae0: 231b movs r3, #27
8002ae2: e089 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 4:
return 36;
8002ae4: 2324 movs r3, #36 ; 0x24
8002ae6: e087 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 5:
return 43;
8002ae8: 232b movs r3, #43 ; 0x2b
8002aea: e085 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 6:
return 52;
8002aec: 2334 movs r3, #52 ; 0x34
8002aee: e083 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 7:
return 59;
8002af0: 233b movs r3, #59 ; 0x3b
8002af2: e081 b.n 8002bf8 <lookupLED+0x2d4>
break;
}
break;
case 5:
switch(row){
8002af4: 79bb ldrb r3, [r7, #6]
8002af6: 2b07 cmp r3, #7
8002af8: d878 bhi.n 8002bec <lookupLED+0x2c8>
8002afa: a201 add r2, pc, #4 ; (adr r2, 8002b00 <lookupLED+0x1dc>)
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 <lookupLED+0x2d4>
break;
case 1:
return 10;
8002b24: 230a movs r3, #10
8002b26: e067 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 2:
return 21;
8002b28: 2315 movs r3, #21
8002b2a: e065 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 3:
return 26;
8002b2c: 231a movs r3, #26
8002b2e: e063 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 4:
return 37;
8002b30: 2325 movs r3, #37 ; 0x25
8002b32: e061 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 5:
return 42;
8002b34: 232a movs r3, #42 ; 0x2a
8002b36: e05f b.n 8002bf8 <lookupLED+0x2d4>
break;
case 6:
return 53;
8002b38: 2335 movs r3, #53 ; 0x35
8002b3a: e05d b.n 8002bf8 <lookupLED+0x2d4>
break;
case 7:
return 58;
8002b3c: 233a movs r3, #58 ; 0x3a
8002b3e: e05b b.n 8002bf8 <lookupLED+0x2d4>
break;
}
break;
case 6:
switch(row){
8002b40: 79bb ldrb r3, [r7, #6]
8002b42: 2b07 cmp r3, #7
8002b44: d854 bhi.n 8002bf0 <lookupLED+0x2cc>
8002b46: a201 add r2, pc, #4 ; (adr r2, 8002b4c <lookupLED+0x228>)
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 <lookupLED+0x2d4>
break;
case 1:
return 9;
8002b70: 2309 movs r3, #9
8002b72: e041 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 2:
return 22;
8002b74: 2316 movs r3, #22
8002b76: e03f b.n 8002bf8 <lookupLED+0x2d4>
break;
case 3:
return 25;
8002b78: 2319 movs r3, #25
8002b7a: e03d b.n 8002bf8 <lookupLED+0x2d4>
break;
case 4:
return 38;
8002b7c: 2326 movs r3, #38 ; 0x26
8002b7e: e03b b.n 8002bf8 <lookupLED+0x2d4>
break;
case 5:
return 41;
8002b80: 2329 movs r3, #41 ; 0x29
8002b82: e039 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 6:
return 54;
8002b84: 2336 movs r3, #54 ; 0x36
8002b86: e037 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 7:
return 57;
8002b88: 2339 movs r3, #57 ; 0x39
8002b8a: e035 b.n 8002bf8 <lookupLED+0x2d4>
break;
}
break;
case 7:
switch(row){
8002b8c: 79bb ldrb r3, [r7, #6]
8002b8e: 2b07 cmp r3, #7
8002b90: d830 bhi.n 8002bf4 <lookupLED+0x2d0>
8002b92: a201 add r2, pc, #4 ; (adr r2, 8002b98 <lookupLED+0x274>)
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 <lookupLED+0x2d4>
break;
case 1:
return 8;
8002bbc: 2308 movs r3, #8
8002bbe: e01b b.n 8002bf8 <lookupLED+0x2d4>
break;
case 2:
return 23;
8002bc0: 2317 movs r3, #23
8002bc2: e019 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 3:
return 24;
8002bc4: 2318 movs r3, #24
8002bc6: e017 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 4:
return 39;
8002bc8: 2327 movs r3, #39 ; 0x27
8002bca: e015 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 5:
return 40;
8002bcc: 2328 movs r3, #40 ; 0x28
8002bce: e013 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 6:
return 55;
8002bd0: 2337 movs r3, #55 ; 0x37
8002bd2: e011 b.n 8002bf8 <lookupLED+0x2d4>
break;
case 7:
return 56;
8002bd4: 2338 movs r3, #56 ; 0x38
8002bd6: e00f b.n 8002bf8 <lookupLED+0x2d4>
break;
8002bd8: bf00 nop
8002bda: e00c b.n 8002bf6 <lookupLED+0x2d2>
break;
8002bdc: bf00 nop
8002bde: e00a b.n 8002bf6 <lookupLED+0x2d2>
break;
8002be0: bf00 nop
8002be2: e008 b.n 8002bf6 <lookupLED+0x2d2>
break;
8002be4: bf00 nop
8002be6: e006 b.n 8002bf6 <lookupLED+0x2d2>
break;
8002be8: bf00 nop
8002bea: e004 b.n 8002bf6 <lookupLED+0x2d2>
break;
8002bec: bf00 nop
8002bee: e002 b.n 8002bf6 <lookupLED+0x2d2>
break;
8002bf0: bf00 nop
8002bf2: e000 b.n 8002bf6 <lookupLED+0x2d2>
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 <setLED>:
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 <setLED+0x5c>)
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 <setLED+0x5c>)
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 <setLED+0x5c>)
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 <updateWS2812BData>:
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 <updateWS2812BData+0x324>
for (uint8_t j = 0; j < 3; ++j) {
8002c70: 2300 movs r3, #0
8002c72: 71bb strb r3, [r7, #6]
8002c74: e181 b.n 8002f7a <updateWS2812BData+0x316>
byteToConvert = LEDData[i][j];
8002c76: 79fa ldrb r2, [r7, #7]
8002c78: 79b9 ldrb r1, [r7, #6]
8002c7a: 488e ldr r0, [pc, #568] ; (8002eb4 <updateWS2812BData+0x250>)
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 <updateWS2812BData+0xec>
8002c94: a201 add r2, pc, #4 ; (adr r2, 8002c9c <updateWS2812BData+0x38>)
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 <updateWS2812BData+0x254>)
8002cda: 4a78 ldr r2, [pc, #480] ; (8002ebc <updateWS2812BData+0x258>)
8002cdc: 601a str r2, [r3, #0]
break;
8002cde: e03a b.n 8002d56 <updateWS2812BData+0xf2>
case 0x01:
WS2812BConvertedData = 0x00926000;
8002ce0: 4b75 ldr r3, [pc, #468] ; (8002eb8 <updateWS2812BData+0x254>)
8002ce2: 4a77 ldr r2, [pc, #476] ; (8002ec0 <updateWS2812BData+0x25c>)
8002ce4: 601a str r2, [r3, #0]
break;
8002ce6: e036 b.n 8002d56 <updateWS2812BData+0xf2>
case 0x02:
WS2812BConvertedData = 0x00934000;
8002ce8: 4b73 ldr r3, [pc, #460] ; (8002eb8 <updateWS2812BData+0x254>)
8002cea: 4a76 ldr r2, [pc, #472] ; (8002ec4 <updateWS2812BData+0x260>)
8002cec: 601a str r2, [r3, #0]
break;
8002cee: e032 b.n 8002d56 <updateWS2812BData+0xf2>
case 0x03:
WS2812BConvertedData = 0x00936000;
8002cf0: 4b71 ldr r3, [pc, #452] ; (8002eb8 <updateWS2812BData+0x254>)
8002cf2: 4a75 ldr r2, [pc, #468] ; (8002ec8 <updateWS2812BData+0x264>)
8002cf4: 601a str r2, [r3, #0]
break;
8002cf6: e02e b.n 8002d56 <updateWS2812BData+0xf2>
case 0x04:
WS2812BConvertedData = 0x009A4000;
8002cf8: 4b6f ldr r3, [pc, #444] ; (8002eb8 <updateWS2812BData+0x254>)
8002cfa: 4a74 ldr r2, [pc, #464] ; (8002ecc <updateWS2812BData+0x268>)
8002cfc: 601a str r2, [r3, #0]
break;
8002cfe: e02a b.n 8002d56 <updateWS2812BData+0xf2>
case 0x05:
WS2812BConvertedData = 0x009A6000;
8002d00: 4b6d ldr r3, [pc, #436] ; (8002eb8 <updateWS2812BData+0x254>)
8002d02: 4a73 ldr r2, [pc, #460] ; (8002ed0 <updateWS2812BData+0x26c>)
8002d04: 601a str r2, [r3, #0]
break;
8002d06: e026 b.n 8002d56 <updateWS2812BData+0xf2>
case 0x06:
WS2812BConvertedData = 0x009B4000;
8002d08: 4b6b ldr r3, [pc, #428] ; (8002eb8 <updateWS2812BData+0x254>)
8002d0a: 4a72 ldr r2, [pc, #456] ; (8002ed4 <updateWS2812BData+0x270>)
8002d0c: 601a str r2, [r3, #0]
break;
8002d0e: e022 b.n 8002d56 <updateWS2812BData+0xf2>
case 0x07:
WS2812BConvertedData = 0x009B6000;
8002d10: 4b69 ldr r3, [pc, #420] ; (8002eb8 <updateWS2812BData+0x254>)
8002d12: 4a71 ldr r2, [pc, #452] ; (8002ed8 <updateWS2812BData+0x274>)
8002d14: 601a str r2, [r3, #0]
break;
8002d16: e01e b.n 8002d56 <updateWS2812BData+0xf2>
case 0x08:
WS2812BConvertedData = 0x00D24000;
8002d18: 4b67 ldr r3, [pc, #412] ; (8002eb8 <updateWS2812BData+0x254>)
8002d1a: 4a70 ldr r2, [pc, #448] ; (8002edc <updateWS2812BData+0x278>)
8002d1c: 601a str r2, [r3, #0]
break;
8002d1e: e01a b.n 8002d56 <updateWS2812BData+0xf2>
case 0x09:
WS2812BConvertedData = 0x00D26000;
8002d20: 4b65 ldr r3, [pc, #404] ; (8002eb8 <updateWS2812BData+0x254>)
8002d22: 4a6f ldr r2, [pc, #444] ; (8002ee0 <updateWS2812BData+0x27c>)
8002d24: 601a str r2, [r3, #0]
break;
8002d26: e016 b.n 8002d56 <updateWS2812BData+0xf2>
case 0x0A:
WS2812BConvertedData = 0x00D34000;
8002d28: 4b63 ldr r3, [pc, #396] ; (8002eb8 <updateWS2812BData+0x254>)
8002d2a: 4a6e ldr r2, [pc, #440] ; (8002ee4 <updateWS2812BData+0x280>)
8002d2c: 601a str r2, [r3, #0]
break;
8002d2e: e012 b.n 8002d56 <updateWS2812BData+0xf2>
case 0x0B:
WS2812BConvertedData = 0x00D36000;
8002d30: 4b61 ldr r3, [pc, #388] ; (8002eb8 <updateWS2812BData+0x254>)
8002d32: 4a6d ldr r2, [pc, #436] ; (8002ee8 <updateWS2812BData+0x284>)
8002d34: 601a str r2, [r3, #0]
break;
8002d36: e00e b.n 8002d56 <updateWS2812BData+0xf2>
case 0x0C:
WS2812BConvertedData = 0x00DA4000;
8002d38: 4b5f ldr r3, [pc, #380] ; (8002eb8 <updateWS2812BData+0x254>)
8002d3a: 4a6c ldr r2, [pc, #432] ; (8002eec <updateWS2812BData+0x288>)
8002d3c: 601a str r2, [r3, #0]
break;
8002d3e: e00a b.n 8002d56 <updateWS2812BData+0xf2>
case 0x0D:
WS2812BConvertedData = 0x00DA6000;
8002d40: 4b5d ldr r3, [pc, #372] ; (8002eb8 <updateWS2812BData+0x254>)
8002d42: 4a6b ldr r2, [pc, #428] ; (8002ef0 <updateWS2812BData+0x28c>)
8002d44: 601a str r2, [r3, #0]
break;
8002d46: e006 b.n 8002d56 <updateWS2812BData+0xf2>
case 0x0E:
WS2812BConvertedData = 0x00DB4000;
8002d48: 4b5b ldr r3, [pc, #364] ; (8002eb8 <updateWS2812BData+0x254>)
8002d4a: 4a6a ldr r2, [pc, #424] ; (8002ef4 <updateWS2812BData+0x290>)
8002d4c: 601a str r2, [r3, #0]
break;
8002d4e: e002 b.n 8002d56 <updateWS2812BData+0xf2>
default: // 0x0F
WS2812BConvertedData = 0x00DB6000;
8002d50: 4b59 ldr r3, [pc, #356] ; (8002eb8 <updateWS2812BData+0x254>)
8002d52: 4a69 ldr r2, [pc, #420] ; (8002ef8 <updateWS2812BData+0x294>)
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 <updateWS2812BData+0x298>
8002d62: a201 add r2, pc, #4 ; (adr r2, 8002d68 <updateWS2812BData+0x104>)
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 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002db2: 6013 str r3, [r2, #0]
break;
8002db4: e0aa b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x01:
WS2812BConvertedData |= 0x00000926;
8002db6: 4b40 ldr r3, [pc, #256] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002dc4: 6013 str r3, [r2, #0]
break;
8002dc6: e0a1 b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x02:
WS2812BConvertedData |= 0x00000934;
8002dc8: 4b3b ldr r3, [pc, #236] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002dd6: 6013 str r3, [r2, #0]
break;
8002dd8: e098 b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x03:
WS2812BConvertedData |= 0x00000936;
8002dda: 4b37 ldr r3, [pc, #220] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002de8: 6013 str r3, [r2, #0]
break;
8002dea: e08f b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x04:
WS2812BConvertedData |= 0x000009A4;
8002dec: 4b32 ldr r3, [pc, #200] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002dfa: 6013 str r3, [r2, #0]
break;
8002dfc: e086 b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x05:
WS2812BConvertedData |= 0x000009A6;
8002dfe: 4b2e ldr r3, [pc, #184] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002e0c: 6013 str r3, [r2, #0]
break;
8002e0e: e07d b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x06:
WS2812BConvertedData |= 0x000009B4;
8002e10: 4b29 ldr r3, [pc, #164] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002e1e: 6013 str r3, [r2, #0]
break;
8002e20: e074 b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x07:
WS2812BConvertedData |= 0x000009B6;
8002e22: 4b25 ldr r3, [pc, #148] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002e30: 6013 str r3, [r2, #0]
break;
8002e32: e06b b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x08:
WS2812BConvertedData |= 0x00000D24;
8002e34: 4b20 ldr r3, [pc, #128] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002e42: 6013 str r3, [r2, #0]
break;
8002e44: e062 b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x09:
WS2812BConvertedData |= 0x00000D26;
8002e46: 4b1c ldr r3, [pc, #112] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002e54: 6013 str r3, [r2, #0]
break;
8002e56: e059 b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x0A:
WS2812BConvertedData |= 0x00000D34;
8002e58: 4b17 ldr r3, [pc, #92] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002e66: 6013 str r3, [r2, #0]
break;
8002e68: e050 b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x0B:
WS2812BConvertedData |= 0x00000D36;
8002e6a: 4b13 ldr r3, [pc, #76] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002e78: 6013 str r3, [r2, #0]
break;
8002e7a: e047 b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x0C:
WS2812BConvertedData |= 0x00000DA4;
8002e7c: 4b0e ldr r3, [pc, #56] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002e8a: 6013 str r3, [r2, #0]
break;
8002e8c: e03e b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x0D:
WS2812BConvertedData |= 0x00000DA6;
8002e8e: 4b0a ldr r3, [pc, #40] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002e9c: 6013 str r3, [r2, #0]
break;
8002e9e: e035 b.n 8002f0c <updateWS2812BData+0x2a8>
case 0x0E:
WS2812BConvertedData |= 0x00000DB4;
8002ea0: 4b05 ldr r3, [pc, #20] ; (8002eb8 <updateWS2812BData+0x254>)
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 <updateWS2812BData+0x254>)
8002eae: 6013 str r3, [r2, #0]
break;
8002eb0: e02c b.n 8002f0c <updateWS2812BData+0x2a8>
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 <updateWS2812BData+0x338>)
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 <updateWS2812BData+0x338>)
8002f0a: 6013 str r3, [r2, #0]
}
LEDData_WS2812B[i][j][0] = (WS2812BConvertedData & 0x00FF0000) >> 16;
8002f0c: 4b23 ldr r3, [pc, #140] ; (8002f9c <updateWS2812BData+0x338>)
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 <updateWS2812BData+0x33c>)
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 <updateWS2812BData+0x338>)
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 <updateWS2812BData+0x33c>)
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 <updateWS2812BData+0x338>)
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 <updateWS2812BData+0x33c>)
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 <updateWS2812BData+0x12>
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 <updateWS2812BData+0xc>
}
}
}
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 <Error_Handler>:
/**
* @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 <HAL_MspInit>:
/* 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 <HAL_MspInit+0x4c>)
8002fc0: 6c5b ldr r3, [r3, #68] ; 0x44
8002fc2: 4a0f ldr r2, [pc, #60] ; (8003000 <HAL_MspInit+0x4c>)
8002fc4: f443 4380 orr.w r3, r3, #16384 ; 0x4000
8002fc8: 6453 str r3, [r2, #68] ; 0x44
8002fca: 4b0d ldr r3, [pc, #52] ; (8003000 <HAL_MspInit+0x4c>)
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 <HAL_MspInit+0x4c>)
8002fdc: 6c1b ldr r3, [r3, #64] ; 0x40
8002fde: 4a08 ldr r2, [pc, #32] ; (8003000 <HAL_MspInit+0x4c>)
8002fe0: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
8002fe4: 6413 str r3, [r2, #64] ; 0x40
8002fe6: 4b06 ldr r3, [pc, #24] ; (8003000 <HAL_MspInit+0x4c>)
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 <HAL_NVIC_SetPriorityGrouping>
/* 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 <HAL_ADC_MspInit>:
* 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 <HAL_ADC_MspInit+0x7c>)
8003022: 4293 cmp r3, r2
8003024: d127 bne.n 8003076 <HAL_ADC_MspInit+0x72>
{
/* 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 <HAL_ADC_MspInit+0x80>)
800302c: 6c5b ldr r3, [r3, #68] ; 0x44
800302e: 4a15 ldr r2, [pc, #84] ; (8003084 <HAL_ADC_MspInit+0x80>)
8003030: f443 6380 orr.w r3, r3, #1024 ; 0x400
8003034: 6453 str r3, [r2, #68] ; 0x44
8003036: 4b13 ldr r3, [pc, #76] ; (8003084 <HAL_ADC_MspInit+0x80>)
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 <HAL_ADC_MspInit+0x80>)
8003048: 6b1b ldr r3, [r3, #48] ; 0x30
800304a: 4a0e ldr r2, [pc, #56] ; (8003084 <HAL_ADC_MspInit+0x80>)
800304c: f043 0320 orr.w r3, r3, #32
8003050: 6313 str r3, [r2, #48] ; 0x30
8003052: 4b0c ldr r3, [pc, #48] ; (8003084 <HAL_ADC_MspInit+0x80>)
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 <HAL_ADC_MspInit+0x84>)
8003072: f000 fefb bl 8003e6c <HAL_GPIO_Init>
/* 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 <HAL_SPI_MspInit>:
* 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 <HAL_SPI_MspInit+0x94>)
80030aa: 4293 cmp r3, r2
80030ac: d133 bne.n 8003116 <HAL_SPI_MspInit+0x8a>
{
/* 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 <HAL_SPI_MspInit+0x98>)
80030b4: 6c5b ldr r3, [r3, #68] ; 0x44
80030b6: 4a1b ldr r2, [pc, #108] ; (8003124 <HAL_SPI_MspInit+0x98>)
80030b8: f443 5300 orr.w r3, r3, #8192 ; 0x2000
80030bc: 6453 str r3, [r2, #68] ; 0x44
80030be: 4b19 ldr r3, [pc, #100] ; (8003124 <HAL_SPI_MspInit+0x98>)
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 <HAL_SPI_MspInit+0x98>)
80030d0: 6b1b ldr r3, [r3, #48] ; 0x30
80030d2: 4a14 ldr r2, [pc, #80] ; (8003124 <HAL_SPI_MspInit+0x98>)
80030d4: f043 0310 orr.w r3, r3, #16
80030d8: 6313 str r3, [r2, #48] ; 0x30
80030da: 4b12 ldr r3, [pc, #72] ; (8003124 <HAL_SPI_MspInit+0x98>)
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 <HAL_SPI_MspInit+0x9c>)
8003102: f000 feb3 bl 8003e6c <HAL_GPIO_Init>
/* 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_SetPriority>
HAL_NVIC_EnableIRQ(SPI4_IRQn);
8003110: 2054 movs r0, #84 ; 0x54
8003112: f000 fe6e bl 8003df2 <HAL_NVIC_EnableIRQ>
/* 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 <HAL_TIM_Base_MspInit>:
* 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 <HAL_TIM_Base_MspInit+0x48>)
800313a: 4293 cmp r3, r2
800313c: d115 bne.n 800316a <HAL_TIM_Base_MspInit+0x3e>
{
/* 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 <HAL_TIM_Base_MspInit+0x4c>)
8003144: 6c1b ldr r3, [r3, #64] ; 0x40
8003146: 4a0c ldr r2, [pc, #48] ; (8003178 <HAL_TIM_Base_MspInit+0x4c>)
8003148: f043 0310 orr.w r3, r3, #16
800314c: 6413 str r3, [r2, #64] ; 0x40
800314e: 4b0a ldr r3, [pc, #40] ; (8003178 <HAL_TIM_Base_MspInit+0x4c>)
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_SetPriority>
HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
8003164: 2036 movs r0, #54 ; 0x36
8003166: f000 fe44 bl 8003df2 <HAL_NVIC_EnableIRQ>
/* 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 <NMI_Handler>:
/******************************************************************************/
/**
* @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 <HardFault_Handler>:
/**
* @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 <HardFault_Handler+0x4>
08003190 <MemManage_Handler>:
/**
* @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 <MemManage_Handler+0x4>
08003196 <BusFault_Handler>:
/**
* @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 <BusFault_Handler+0x4>
0800319c <UsageFault_Handler>:
/**
* @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 <UsageFault_Handler+0x4>
080031a2 <SVC_Handler>:
/**
* @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 <DebugMon_Handler>:
/**
* @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 <PendSV_Handler>:
/**
* @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 <SysTick_Handler>:
/**
* @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 <HAL_IncTick>
/* USER CODE BEGIN SysTick_IRQn 1 */
/* USER CODE END SysTick_IRQn 1 */
}
80031d4: bf00 nop
80031d6: bd80 pop {r7, pc}
080031d8 <EXTI0_IRQHandler>:
/**
* @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 <HAL_GPIO_EXTI_IRQHandler>
/* USER CODE BEGIN EXTI0_IRQn 1 */
HAL_TIM_Base_Start_IT(&htim6);
80031e2: 4804 ldr r0, [pc, #16] ; (80031f4 <EXTI0_IRQHandler+0x1c>)
80031e4: f001 ffe5 bl 80051b2 <HAL_TIM_Base_Start_IT>
LEDDesign_PendingChange = true;
80031e8: 4b03 ldr r3, [pc, #12] ; (80031f8 <EXTI0_IRQHandler+0x20>)
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 <TIM6_DAC_IRQHandler>:
/**
* @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 <TIM6_DAC_IRQHandler+0x30>)
8003202: f002 f840 bl 8005286 <HAL_TIM_IRQHandler>
/* USER CODE BEGIN TIM6_DAC_IRQn 1 */
LEDMode = (LEDMode + 1) % 8;
8003206: 4b0a ldr r3, [pc, #40] ; (8003230 <TIM6_DAC_IRQHandler+0x34>)
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 <TIM6_DAC_IRQHandler+0x34>)
800321e: 701a strb r2, [r3, #0]
LEDDesign_PendingChange = false;
8003220: 4b04 ldr r3, [pc, #16] ; (8003234 <TIM6_DAC_IRQHandler+0x38>)
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 <SPI4_IRQHandler>:
/**
* @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 <SPI4_IRQHandler+0x1c>)
800323e: f001 fd11 bl 8004c64 <HAL_SPI_IRQHandler>
/* 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 <SPI4_IRQHandler+0x20>)
8003248: 4802 ldr r0, [pc, #8] ; (8003254 <SPI4_IRQHandler+0x1c>)
800324a: f001 fc89 bl 8004b60 <HAL_SPI_Transmit_IT>
/* 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 <SystemInit>:
* 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 <SystemInit+0x28>)
80032ce: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
80032d2: 4a07 ldr r2, [pc, #28] ; (80032f0 <SystemInit+0x28>)
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 <SystemInit+0x28>)
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 <Reset_Handler>:
.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 <LoopFillZerobss+0x14>
/* Copy the data segment initializers from flash to SRAM */
movs r1, #0
80032f8: 2100 movs r1, #0
b LoopCopyDataInit
80032fa: e003 b.n 8003304 <LoopCopyDataInit>
080032fc <CopyDataInit>:
CopyDataInit:
ldr r3, =_sidata
80032fc: 4b0c ldr r3, [pc, #48] ; (8003330 <LoopFillZerobss+0x18>)
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>:
LoopCopyDataInit:
ldr r0, =_sdata
8003304: 480b ldr r0, [pc, #44] ; (8003334 <LoopFillZerobss+0x1c>)
ldr r3, =_edata
8003306: 4b0c ldr r3, [pc, #48] ; (8003338 <LoopFillZerobss+0x20>)
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 <CopyDataInit>
ldr r2, =_sbss
800330e: 4a0b ldr r2, [pc, #44] ; (800333c <LoopFillZerobss+0x24>)
b LoopFillZerobss
8003310: e002 b.n 8003318 <LoopFillZerobss>
08003312 <FillZerobss>:
/* 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>:
LoopFillZerobss:
ldr r3, = _ebss
8003318: 4b09 ldr r3, [pc, #36] ; (8003340 <LoopFillZerobss+0x28>)
cmp r2, r3
800331a: 429a cmp r2, r3
bcc FillZerobss
800331c: d3f9 bcc.n 8003312 <FillZerobss>
/* Call the clock system intitialization function.*/
bl SystemInit
800331e: f7ff ffd3 bl 80032c8 <SystemInit>
/* 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 <main>
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 <ADC_IRQHandler>:
* @retval None
*/
.section .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b Infinite_Loop
8003344: e7fe b.n 8003344 <ADC_IRQHandler>
...
08003348 <HAL_Init>:
* need to ensure that the SysTick time base is always set to 1 millisecond
* to have correct HAL operation.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_Init(void)
{
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 <HAL_Init+0x40>)
800334e: 681b ldr r3, [r3, #0]
8003350: 4a0d ldr r2, [pc, #52] ; (8003388 <HAL_Init+0x40>)
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 <HAL_Init+0x40>)
800335a: 681b ldr r3, [r3, #0]
800335c: 4a0a ldr r2, [pc, #40] ; (8003388 <HAL_Init+0x40>)
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 <HAL_Init+0x40>)
8003366: 681b ldr r3, [r3, #0]
8003368: 4a07 ldr r2, [pc, #28] ; (8003388 <HAL_Init+0x40>)
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 <HAL_NVIC_SetPriorityGrouping>
/* 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 <HAL_InitTick>
/* Init the low level hardware */
HAL_MspInit();
800337c: f7ff fe1a bl 8002fb4 <HAL_MspInit>
/* 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 <HAL_InitTick>:
* 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 <HAL_InitTick+0x54>)
8003396: 681a ldr r2, [r3, #0]
8003398: 4b12 ldr r3, [pc, #72] ; (80033e4 <HAL_InitTick+0x58>)
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 <HAL_SYSTICK_Config>
80033b0: 4603 mov r3, r0
80033b2: 2b00 cmp r3, #0
80033b4: d001 beq.n 80033ba <HAL_InitTick+0x2e>
{
return HAL_ERROR;
80033b6: 2301 movs r3, #1
80033b8: e00e b.n 80033d8 <HAL_InitTick+0x4c>
}
/* 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_InitTick+0x4a>
{
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 <HAL_NVIC_SetPriority>
uwTickPrio = TickPriority;
80033cc: 4a06 ldr r2, [pc, #24] ; (80033e8 <HAL_InitTick+0x5c>)
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 <HAL_InitTick+0x4c>
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 <HAL_IncTick>:
* @note This function is declared as __weak to be overwritten in case of other
* implementations in user file.
* @retval None
*/
__weak void HAL_IncTick(void)
{
80033ec: b480 push {r7}
80033ee: af00 add r7, sp, #0
uwTick += uwTickFreq;
80033f0: 4b06 ldr r3, [pc, #24] ; (800340c <HAL_IncTick+0x20>)
80033f2: 781b ldrb r3, [r3, #0]
80033f4: 461a mov r2, r3
80033f6: 4b06 ldr r3, [pc, #24] ; (8003410 <HAL_IncTick+0x24>)
80033f8: 681b ldr r3, [r3, #0]
80033fa: 4413 add r3, r2
80033fc: 4a04 ldr r2, [pc, #16] ; (8003410 <HAL_IncTick+0x24>)
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 <HAL_GetTick>:
* @note This function is declared as __weak to be overwritten in case of other
* implementations in user file.
* @retval tick value
*/
__weak uint32_t HAL_GetTick(void)
{
8003414: b480 push {r7}
8003416: af00 add r7, sp, #0
return uwTick;
8003418: 4b03 ldr r3, [pc, #12] ; (8003428 <HAL_GetTick+0x14>)
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 <HAL_Delay>:
* 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 <HAL_GetTick>
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 <HAL_Delay+0x26>
{
wait += (uint32_t)(uwTickFreq);
8003446: 4b09 ldr r3, [pc, #36] ; (800346c <HAL_Delay+0x40>)
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 <HAL_GetTick>
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 <HAL_Delay+0x28>
{
}
}
8003464: bf00 nop
8003466: 3710 adds r7, #16
8003468: 46bd mov sp, r7
800346a: bd80 pop {r7, pc}
800346c: 2000000c .word 0x2000000c
08003470 <HAL_ADC_Init>:
* @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 <HAL_ADC_Init+0x16>
{
return HAL_ERROR;
8003482: 2301 movs r3, #1
8003484: e033 b.n 80034ee <HAL_ADC_Init+0x7e>
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 <HAL_ADC_Init+0x32>
/* 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 <HAL_ADC_MspInit>
#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 <HAL_ADC_Init+0x70>
{
/* 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 <ADC_Init>
/* 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_Init+0x74>
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 <HAL_ADC_Start>:
* @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 <HAL_ADC_Start+0x1a>
800350e: 2302 movs r3, #2
8003510: e0a5 b.n 800365e <HAL_ADC_Start+0x166>
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 <HAL_ADC_Start+0x62>
{
/* 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 <HAL_ADC_Start+0x174>)
800353a: 681b ldr r3, [r3, #0]
800353c: 4a4c ldr r2, [pc, #304] ; (8003670 <HAL_ADC_Start+0x178>)
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 <HAL_ADC_Start+0x5c>
{
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 <HAL_ADC_Start+0x56>
}
}
/* 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 <HAL_ADC_Start+0x164>
{
/* 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 <HAL_ADC_Start+0xa2>
{
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 <HAL_ADC_Start+0xbe>
{
/* 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 <HAL_ADC_Start+0xc4>
}
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 <HAL_ADC_Start+0x17c>)
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 <HAL_ADC_Start+0x13c>
{
#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 <HAL_ADC_Start+0x180>)
80035e4: 4293 cmp r3, r2
80035e6: d015 beq.n 8003614 <HAL_ADC_Start+0x11c>
80035e8: 687b ldr r3, [r7, #4]
80035ea: 681b ldr r3, [r3, #0]
80035ec: 4a23 ldr r2, [pc, #140] ; (800367c <HAL_ADC_Start+0x184>)
80035ee: 4293 cmp r3, r2
80035f0: d105 bne.n 80035fe <HAL_ADC_Start+0x106>
80035f2: 4b20 ldr r3, [pc, #128] ; (8003674 <HAL_ADC_Start+0x17c>)
80035f4: 685b ldr r3, [r3, #4]
80035f6: f003 031f and.w r3, r3, #31
80035fa: 2b00 cmp r3, #0
80035fc: d00a beq.n 8003614 <HAL_ADC_Start+0x11c>
|| ((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 <HAL_ADC_Start+0x188>)
8003604: 4293 cmp r3, r2
8003606: d129 bne.n 800365c <HAL_ADC_Start+0x164>
8003608: 4b1a ldr r3, [pc, #104] ; (8003674 <HAL_ADC_Start+0x17c>)
800360a: 685b ldr r3, [r3, #4]
800360c: f003 031f and.w r3, r3, #31
8003610: 2b0f cmp r3, #15
8003612: d823 bhi.n 800365c <HAL_ADC_Start+0x164>
{
#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 <HAL_ADC_Start+0x164>
{
/* 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 <HAL_ADC_Start+0x164>
#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 <HAL_ADC_Start+0x180>)
800363a: 4293 cmp r3, r2
800363c: d10e bne.n 800365c <HAL_ADC_Start+0x164>
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 <HAL_ADC_Start+0x164>
{
/* 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 <HAL_ADC_PollForConversion>:
* 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_ADC_PollForConversion+0x46>
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 <HAL_ADC_PollForConversion+0x46>
{
/* 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 <HAL_ADC_PollForConversion+0x100>
}
/* Get tick */
tickstart = HAL_GetTick();
80036ca: f7ff fea3 bl 8003414 <HAL_GetTick>
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 <HAL_ADC_PollForConversion+0x84>
{
/* 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 <HAL_ADC_PollForConversion+0x84>
{
if((Timeout == 0U) || ((HAL_GetTick() - tickstart ) > Timeout))
80036da: 683b ldr r3, [r7, #0]
80036dc: 2b00 cmp r3, #0
80036de: d007 beq.n 80036f0 <HAL_ADC_PollForConversion+0x6c>
80036e0: f7ff fe98 bl 8003414 <HAL_GetTick>
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 <HAL_ADC_PollForConversion+0x84>
{
/* 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 <HAL_ADC_PollForConversion+0x100>
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 <HAL_ADC_PollForConversion+0x4e>
}
}
}
/* 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 <HAL_ADC_PollForConversion+0xfe>
(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_ADC_PollForConversion+0xfe>
(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_ADC_PollForConversion+0xda>
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 <HAL_ADC_PollForConversion+0xfe>
{
/* 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 <HAL_ADC_PollForConversion+0xfe>
{
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 <HAL_ADC_GetValue>:
* @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 <HAL_ADC_ConfigChannel>:
* 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 <HAL_ADC_ConfigChannel+0x1c>
80037c0: 2302 movs r3, #2
80037c2: e113 b.n 80039ec <HAL_ADC_ConfigChannel+0x244>
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 <HAL_ADC_ConfigChannel+0x78>
{
/* 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 <HAL_ADC_ConfigChannel+0xbe>
}
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 <HAL_ADC_ConfigChannel+0x110>
{
/* 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 <HAL_ADC_ConfigChannel+0x1aa>
}
/* 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 <HAL_ADC_ConfigChannel+0x162>
{
/* 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 <HAL_ADC_ConfigChannel+0x1aa>
}
/* 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 <HAL_ADC_ConfigChannel+0x250>)
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 <HAL_ADC_ConfigChannel+0x254>)
800395c: 4293 cmp r3, r2
800395e: d10f bne.n 8003980 <HAL_ADC_ConfigChannel+0x1d8>
8003960: 683b ldr r3, [r7, #0]
8003962: 681b ldr r3, [r3, #0]
8003964: 2b12 cmp r3, #18
8003966: d10b bne.n 8003980 <HAL_ADC_ConfigChannel+0x1d8>
{
/* 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 <HAL_ADC_ConfigChannel+0x254>)
8003986: 4293 cmp r3, r2
8003988: d12b bne.n 80039e2 <HAL_ADC_ConfigChannel+0x23a>
800398a: 683b ldr r3, [r7, #0]
800398c: 681b ldr r3, [r3, #0]
800398e: 4a1c ldr r2, [pc, #112] ; (8003a00 <HAL_ADC_ConfigChannel+0x258>)
8003990: 4293 cmp r3, r2
8003992: d003 beq.n 800399c <HAL_ADC_ConfigChannel+0x1f4>
8003994: 683b ldr r3, [r7, #0]
8003996: 681b ldr r3, [r3, #0]
8003998: 2b11 cmp r3, #17
800399a: d122 bne.n 80039e2 <HAL_ADC_ConfigChannel+0x23a>
{
/* 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 <HAL_ADC_ConfigChannel+0x258>)
80039ba: 4293 cmp r3, r2
80039bc: d111 bne.n 80039e2 <HAL_ADC_ConfigChannel+0x23a>
{
/* 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 <HAL_ADC_ConfigChannel+0x25c>)
80039c0: 681b ldr r3, [r3, #0]
80039c2: 4a11 ldr r2, [pc, #68] ; (8003a08 <HAL_ADC_ConfigChannel+0x260>)
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 <HAL_ADC_ConfigChannel+0x234>
{
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 <HAL_ADC_ConfigChannel+0x22e>
}
}
}
/* 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 <ADC_Init>:
* @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 <ADC_Init+0x1f0>)
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 <ADC_Init+0x1f4>)
8003aa0: 4293 cmp r3, r2
8003aa2: d022 beq.n 8003aea <ADC_Init+0xde>
{
/* 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 <ADC_Init+0xfe>
}
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 <ADC_Init+0x164>
{
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 <ADC_Init+0x174>
}
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 <NVIC_EncodePriority>:
\param [in] PreemptPriority Preemptive priority value (starting from 0).
\param [in] SubPriority Subpriority value (starting from 0).
\return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
*/
__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
{
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 <NVIC_EncodePriority+0x30>
8003d22: 69fb ldr r3, [r7, #28]
8003d24: 3b03 subs r3, #3
8003d26: e000 b.n 8003d2a <NVIC_EncodePriority+0x32>
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 <SysTick_Config>:
\note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
must contain a vendor-specific implementation of this function.
*/
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
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 <SysTick_Config+0x16>
{
return (1UL); /* Reload value impossible */
8003d72: 2301 movs r3, #1
8003d74: e00f b.n 8003d96 <SysTick_Config+0x36>
}
SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
8003d76: 4a0a ldr r2, [pc, #40] ; (8003da0 <SysTick_Config+0x40>)
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 <SysTick_Config+0x40>)
8003d8a: 2200 movs r2, #0
8003d8c: 609a str r2, [r3, #8]
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
8003d8e: 4b04 ldr r3, [pc, #16] ; (8003da0 <SysTick_Config+0x40>)
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 <HAL_NVIC_SetPriorityGrouping>:
* @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible.
* The pending IRQ priority will be managed only by the subpriority.
* @retval None
*/
void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
{
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 <HAL_NVIC_SetPriority>:
* This parameter can be a value between 0 and 15
* A lower priority value indicates a higher priority.
* @retval None
*/
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
{
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 <NVIC_EncodePriority>
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 <HAL_NVIC_EnableIRQ>:
* This parameter can be an enumerator of IRQn_Type enumeration
* (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (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 <HAL_SYSTICK_Config>:
* @param TicksNumb Specifies the ticks Number of ticks between two interrupts.
* @retval status: - 0 Function succeeded.
* - 1 Function failed.
*/
uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
{
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 <SysTick_Config>
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 <HAL_DMA_Abort_IT>:
* @param hdma pointer to a DMA_HandleTypeDef structure that contains
* the configuration information for the specified DMA Stream.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
{
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 <HAL_DMA_Abort_IT+0x1e>
{
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 <HAL_DMA_Abort_IT+0x38>
}
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 <HAL_GPIO_Init>:
* @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains
* the configuration information for the specified GPIO peripheral.
* @retval None
*/
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
{
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 <HAL_GPIO_Init+0x30c>
{
/* 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 <HAL_GPIO_Init+0x306>
{
/*--------------------- 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 <HAL_GPIO_Init+0x5a>
8003eae: 683b ldr r3, [r7, #0]
8003eb0: 685b ldr r3, [r3, #4]
8003eb2: 2b02 cmp r3, #2
8003eb4: d007 beq.n 8003ec6 <HAL_GPIO_Init+0x5a>
(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 <HAL_GPIO_Init+0x5a>
(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 <HAL_GPIO_Init+0xbc>
{
/* 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 <HAL_GPIO_Init+0xfc>
8003f60: 683b ldr r3, [r7, #0]
8003f62: 685b ldr r3, [r3, #4]
8003f64: 2b12 cmp r3, #18
8003f66: d123 bne.n 8003fb0 <HAL_GPIO_Init+0x144>
{
/* 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 <HAL_GPIO_Init+0x306>
{
/* 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 <HAL_GPIO_Init+0x320>)
8003ff8: 6c5b ldr r3, [r3, #68] ; 0x44
8003ffa: 4a64 ldr r2, [pc, #400] ; (800418c <HAL_GPIO_Init+0x320>)
8003ffc: f443 4380 orr.w r3, r3, #16384 ; 0x4000
8004000: 6453 str r3, [r2, #68] ; 0x44
8004002: 4b62 ldr r3, [pc, #392] ; (800418c <HAL_GPIO_Init+0x320>)
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 <HAL_GPIO_Init+0x324>)
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 <HAL_GPIO_Init+0x328>)
8004036: 4293 cmp r3, r2
8004038: d037 beq.n 80040aa <HAL_GPIO_Init+0x23e>
800403a: 687b ldr r3, [r7, #4]
800403c: 4a56 ldr r2, [pc, #344] ; (8004198 <HAL_GPIO_Init+0x32c>)
800403e: 4293 cmp r3, r2
8004040: d031 beq.n 80040a6 <HAL_GPIO_Init+0x23a>
8004042: 687b ldr r3, [r7, #4]
8004044: 4a55 ldr r2, [pc, #340] ; (800419c <HAL_GPIO_Init+0x330>)
8004046: 4293 cmp r3, r2
8004048: d02b beq.n 80040a2 <HAL_GPIO_Init+0x236>
800404a: 687b ldr r3, [r7, #4]
800404c: 4a54 ldr r2, [pc, #336] ; (80041a0 <HAL_GPIO_Init+0x334>)
800404e: 4293 cmp r3, r2
8004050: d025 beq.n 800409e <HAL_GPIO_Init+0x232>
8004052: 687b ldr r3, [r7, #4]
8004054: 4a53 ldr r2, [pc, #332] ; (80041a4 <HAL_GPIO_Init+0x338>)
8004056: 4293 cmp r3, r2
8004058: d01f beq.n 800409a <HAL_GPIO_Init+0x22e>
800405a: 687b ldr r3, [r7, #4]
800405c: 4a52 ldr r2, [pc, #328] ; (80041a8 <HAL_GPIO_Init+0x33c>)
800405e: 4293 cmp r3, r2
8004060: d019 beq.n 8004096 <HAL_GPIO_Init+0x22a>
8004062: 687b ldr r3, [r7, #4]
8004064: 4a51 ldr r2, [pc, #324] ; (80041ac <HAL_GPIO_Init+0x340>)
8004066: 4293 cmp r3, r2
8004068: d013 beq.n 8004092 <HAL_GPIO_Init+0x226>
800406a: 687b ldr r3, [r7, #4]
800406c: 4a50 ldr r2, [pc, #320] ; (80041b0 <HAL_GPIO_Init+0x344>)
800406e: 4293 cmp r3, r2
8004070: d00d beq.n 800408e <HAL_GPIO_Init+0x222>
8004072: 687b ldr r3, [r7, #4]
8004074: 4a4f ldr r2, [pc, #316] ; (80041b4 <HAL_GPIO_Init+0x348>)
8004076: 4293 cmp r3, r2
8004078: d007 beq.n 800408a <HAL_GPIO_Init+0x21e>
800407a: 687b ldr r3, [r7, #4]
800407c: 4a4e ldr r2, [pc, #312] ; (80041b8 <HAL_GPIO_Init+0x34c>)
800407e: 4293 cmp r3, r2
8004080: d101 bne.n 8004086 <HAL_GPIO_Init+0x21a>
8004082: 2309 movs r3, #9
8004084: e012 b.n 80040ac <HAL_GPIO_Init+0x240>
8004086: 230a movs r3, #10
8004088: e010 b.n 80040ac <HAL_GPIO_Init+0x240>
800408a: 2308 movs r3, #8
800408c: e00e b.n 80040ac <HAL_GPIO_Init+0x240>
800408e: 2307 movs r3, #7
8004090: e00c b.n 80040ac <HAL_GPIO_Init+0x240>
8004092: 2306 movs r3, #6
8004094: e00a b.n 80040ac <HAL_GPIO_Init+0x240>
8004096: 2305 movs r3, #5
8004098: e008 b.n 80040ac <HAL_GPIO_Init+0x240>
800409a: 2304 movs r3, #4
800409c: e006 b.n 80040ac <HAL_GPIO_Init+0x240>
800409e: 2303 movs r3, #3
80040a0: e004 b.n 80040ac <HAL_GPIO_Init+0x240>
80040a2: 2302 movs r3, #2
80040a4: e002 b.n 80040ac <HAL_GPIO_Init+0x240>
80040a6: 2301 movs r3, #1
80040a8: e000 b.n 80040ac <HAL_GPIO_Init+0x240>
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 <HAL_GPIO_Init+0x324>)
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 <HAL_GPIO_Init+0x350>)
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 <HAL_GPIO_Init+0x282>
{
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 <HAL_GPIO_Init+0x350>)
80040f0: 69bb ldr r3, [r7, #24]
80040f2: 6013 str r3, [r2, #0]
temp = EXTI->EMR;
80040f4: 4b31 ldr r3, [pc, #196] ; (80041bc <HAL_GPIO_Init+0x350>)
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 <HAL_GPIO_Init+0x2ac>
{
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 <HAL_GPIO_Init+0x350>)
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 <HAL_GPIO_Init+0x350>)
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 <HAL_GPIO_Init+0x2d6>
{
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 <HAL_GPIO_Init+0x350>)
8004144: 69bb ldr r3, [r7, #24]
8004146: 6093 str r3, [r2, #8]
temp = EXTI->FTSR;
8004148: 4b1c ldr r3, [pc, #112] ; (80041bc <HAL_GPIO_Init+0x350>)
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 <HAL_GPIO_Init+0x300>
{
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 <HAL_GPIO_Init+0x350>)
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 <HAL_GPIO_Init+0x1c>
}
}
}
}
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 <HAL_GPIO_WritePin>:
* @arg GPIO_PIN_RESET: to clear the port pin
* @arg GPIO_PIN_SET: to set the port pin
* @retval None
*/
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
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 <HAL_GPIO_WritePin+0x1e>
{
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 <HAL_GPIO_WritePin+0x26>
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 <HAL_GPIO_EXTI_IRQHandler>:
* @brief This function handles EXTI interrupt request.
* @param GPIO_Pin Specifies the pins connected EXTI line
* @retval None
*/
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
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 <HAL_GPIO_EXTI_IRQHandler+0x2c>)
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_IRQHandler+0x24>
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
800420a: 4a05 ldr r2, [pc, #20] ; (8004220 <HAL_GPIO_EXTI_IRQHandler+0x2c>)
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 <HAL_GPIO_EXTI_Callback>
}
}
8004218: bf00 nop
800421a: 3708 adds r7, #8
800421c: 46bd mov sp, r7
800421e: bd80 pop {r7, pc}
8004220: 40013c00 .word 0x40013c00
08004224 <HAL_GPIO_EXTI_Callback>:
* @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 <HAL_RCC_OscConfig>:
* 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 <HAL_RCC_OscConfig+0x12>
{
return HAL_ERROR;
800424a: 2301 movs r3, #1
800424c: e25b b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
}
/* 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 <HAL_RCC_OscConfig+0x10a>
{
/* 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 <HAL_RCC_OscConfig+0x2ac>)
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_OscConfig+0x44>
((__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 <HAL_RCC_OscConfig+0x2ac>)
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_OscConfig+0x5c>
((__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 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0x5c>
{
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
8004280: 4b99 ldr r3, [pc, #612] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0x108>
800428c: 687b ldr r3, [r7, #4]
800428e: 685b ldr r3, [r3, #4]
8004290: 2b00 cmp r3, #0
8004292: d157 bne.n 8004344 <HAL_RCC_OscConfig+0x108>
{
return HAL_ERROR;
8004294: 2301 movs r3, #1
8004296: e236 b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
}
}
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 <HAL_RCC_OscConfig+0x74>
80042a2: 4b91 ldr r3, [pc, #580] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80042a4: 681b ldr r3, [r3, #0]
80042a6: 4a90 ldr r2, [pc, #576] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80042a8: f443 3380 orr.w r3, r3, #65536 ; 0x10000
80042ac: 6013 str r3, [r2, #0]
80042ae: e01d b.n 80042ec <HAL_RCC_OscConfig+0xb0>
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 <HAL_RCC_OscConfig+0x98>
80042ba: 4b8b ldr r3, [pc, #556] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80042bc: 681b ldr r3, [r3, #0]
80042be: 4a8a ldr r2, [pc, #552] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80042c0: f443 2380 orr.w r3, r3, #262144 ; 0x40000
80042c4: 6013 str r3, [r2, #0]
80042c6: 4b88 ldr r3, [pc, #544] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80042c8: 681b ldr r3, [r3, #0]
80042ca: 4a87 ldr r2, [pc, #540] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80042cc: f443 3380 orr.w r3, r3, #65536 ; 0x10000
80042d0: 6013 str r3, [r2, #0]
80042d2: e00b b.n 80042ec <HAL_RCC_OscConfig+0xb0>
80042d4: 4b84 ldr r3, [pc, #528] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80042d6: 681b ldr r3, [r3, #0]
80042d8: 4a83 ldr r2, [pc, #524] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80042da: f423 3380 bic.w r3, r3, #65536 ; 0x10000
80042de: 6013 str r3, [r2, #0]
80042e0: 4b81 ldr r3, [pc, #516] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80042e2: 681b ldr r3, [r3, #0]
80042e4: 4a80 ldr r2, [pc, #512] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0xe0>
{
/* Get Start Tick */
tickstart = HAL_GetTick();
80042f4: f7ff f88e bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0xd2>
{
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
80042fc: f7ff f88a bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0xd2>
{
return HAL_TIMEOUT;
800430a: 2303 movs r3, #3
800430c: e1fb b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
800430e: 4b76 ldr r3, [pc, #472] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0xc0>
800431a: e014 b.n 8004346 <HAL_RCC_OscConfig+0x10a>
}
}
else
{
/* Get Start Tick */
tickstart = HAL_GetTick();
800431c: f7ff f87a bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0xfa>
{
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
8004324: f7ff f876 bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0xfa>
{
return HAL_TIMEOUT;
8004332: 2303 movs r3, #3
8004334: e1e7 b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
8004336: 4b6c ldr r3, [pc, #432] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0xe8>
8004342: e000 b.n 8004346 <HAL_RCC_OscConfig+0x10a>
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 <HAL_RCC_OscConfig+0x1de>
/* 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 <HAL_RCC_OscConfig+0x2ac>)
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_OscConfig+0x13a>
((__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 <HAL_RCC_OscConfig+0x2ac>)
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_OscConfig+0x168>
((__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 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0x168>
{
/* 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 <HAL_RCC_OscConfig+0x2ac>)
8004378: 681b ldr r3, [r3, #0]
800437a: f003 0302 and.w r3, r3, #2
800437e: 2b00 cmp r3, #0
8004380: d005 beq.n 800438e <HAL_RCC_OscConfig+0x152>
8004382: 687b ldr r3, [r7, #4]
8004384: 68db ldr r3, [r3, #12]
8004386: 2b01 cmp r3, #1
8004388: d001 beq.n 800438e <HAL_RCC_OscConfig+0x152>
{
return HAL_ERROR;
800438a: 2301 movs r3, #1
800438c: e1bb b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
}
/* 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 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0x1de>
}
}
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 <HAL_RCC_OscConfig+0x1b2>
{
/* Enable the Internal High Speed oscillator (HSI). */
__HAL_RCC_HSI_ENABLE();
80043ac: 4b4f ldr r3, [pc, #316] ; (80044ec <HAL_RCC_OscConfig+0x2b0>)
80043ae: 2201 movs r2, #1
80043b0: 601a str r2, [r3, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
80043b2: f7ff f82f bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x190>
{
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
80043ba: f7ff f82b bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x190>
{
return HAL_TIMEOUT;
80043c8: 2303 movs r3, #3
80043ca: e19c b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
80043cc: 4b46 ldr r3, [pc, #280] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80043ce: 681b ldr r3, [r3, #0]
80043d0: f003 0302 and.w r3, r3, #2
80043d4: 2b00 cmp r3, #0
80043d6: d0f0 beq.n 80043ba <HAL_RCC_OscConfig+0x17e>
}
}
/* Adjusts the Internal High Speed oscillator (HSI) calibration value. */
__HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
80043d8: 4b43 ldr r3, [pc, #268] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0x2ac>)
80043e8: 4313 orrs r3, r2
80043ea: 600b str r3, [r1, #0]
80043ec: e015 b.n 800441a <HAL_RCC_OscConfig+0x1de>
}
else
{
/* Disable the Internal High Speed oscillator (HSI). */
__HAL_RCC_HSI_DISABLE();
80043ee: 4b3f ldr r3, [pc, #252] ; (80044ec <HAL_RCC_OscConfig+0x2b0>)
80043f0: 2200 movs r2, #0
80043f2: 601a str r2, [r3, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
80043f4: f7ff f80e bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x1d2>
{
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
80043fc: f7ff f80a bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x1d2>
{
return HAL_TIMEOUT;
800440a: 2303 movs r3, #3
800440c: e17b b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
800440e: 4b36 ldr r3, [pc, #216] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
8004410: 681b ldr r3, [r3, #0]
8004412: f003 0302 and.w r3, r3, #2
8004416: 2b00 cmp r3, #0
8004418: d1f0 bne.n 80043fc <HAL_RCC_OscConfig+0x1c0>
}
}
}
}
/*------------------------------ 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 <HAL_RCC_OscConfig+0x24c>
{
/* 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 <HAL_RCC_OscConfig+0x220>
{
/* Enable the Internal Low Speed oscillator (LSI). */
__HAL_RCC_LSI_ENABLE();
800442e: 4b30 ldr r3, [pc, #192] ; (80044f0 <HAL_RCC_OscConfig+0x2b4>)
8004430: 2201 movs r2, #1
8004432: 601a str r2, [r3, #0]
/* Get Start Tick*/
tickstart = HAL_GetTick();
8004434: f7fe ffee bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x212>
{
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
800443c: f7fe ffea bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x212>
{
return HAL_TIMEOUT;
800444a: 2303 movs r3, #3
800444c: e15b b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
800444e: 4b26 ldr r3, [pc, #152] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0x200>
800445a: e015 b.n 8004488 <HAL_RCC_OscConfig+0x24c>
}
}
else
{
/* Disable the Internal Low Speed oscillator (LSI). */
__HAL_RCC_LSI_DISABLE();
800445c: 4b24 ldr r3, [pc, #144] ; (80044f0 <HAL_RCC_OscConfig+0x2b4>)
800445e: 2200 movs r2, #0
8004460: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
8004462: f7fe ffd7 bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x240>
{
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
800446a: f7fe ffd3 bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x240>
{
return HAL_TIMEOUT;
8004478: 2303 movs r3, #3
800447a: e144 b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
800447c: 4b1a ldr r3, [pc, #104] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0x22e>
}
}
}
}
/*------------------------------ 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 <HAL_RCC_OscConfig+0x39a>
{
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 <HAL_RCC_OscConfig+0x2ac>)
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_OscConfig+0x28a>
{
__HAL_RCC_PWR_CLK_ENABLE();
80044a6: 2300 movs r3, #0
80044a8: 60bb str r3, [r7, #8]
80044aa: 4b0f ldr r3, [pc, #60] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80044ac: 6c1b ldr r3, [r3, #64] ; 0x40
80044ae: 4a0e ldr r2, [pc, #56] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
80044b0: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
80044b4: 6413 str r3, [r2, #64] ; 0x40
80044b6: 4b0c ldr r3, [pc, #48] ; (80044e8 <HAL_RCC_OscConfig+0x2ac>)
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 <HAL_RCC_OscConfig+0x2b8>)
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 <HAL_RCC_OscConfig+0x2da>
{
/* Enable write access to Backup domain */
SET_BIT(PWR->CR, PWR_CR_DBP);
80044d2: 4b08 ldr r3, [pc, #32] ; (80044f4 <HAL_RCC_OscConfig+0x2b8>)
80044d4: 681b ldr r3, [r3, #0]
80044d6: 4a07 ldr r2, [pc, #28] ; (80044f4 <HAL_RCC_OscConfig+0x2b8>)
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 <HAL_GetTick>
80044e2: 6138 str r0, [r7, #16]
while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
80044e4: e011 b.n 800450a <HAL_RCC_OscConfig+0x2ce>
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 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x2ce>
{
return HAL_TIMEOUT;
8004506: 2303 movs r3, #3
8004508: e0fd b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
800450a: 4b81 ldr r3, [pc, #516] ; (8004710 <HAL_RCC_OscConfig+0x4d4>)
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 <HAL_RCC_OscConfig+0x2bc>
}
}
}
/* 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 <HAL_RCC_OscConfig+0x2f0>
800451e: 4b7d ldr r3, [pc, #500] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
8004520: 6f1b ldr r3, [r3, #112] ; 0x70
8004522: 4a7c ldr r2, [pc, #496] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
8004524: f043 0301 orr.w r3, r3, #1
8004528: 6713 str r3, [r2, #112] ; 0x70
800452a: e01c b.n 8004566 <HAL_RCC_OscConfig+0x32a>
800452c: 687b ldr r3, [r7, #4]
800452e: 689b ldr r3, [r3, #8]
8004530: 2b05 cmp r3, #5
8004532: d10c bne.n 800454e <HAL_RCC_OscConfig+0x312>
8004534: 4b77 ldr r3, [pc, #476] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
8004536: 6f1b ldr r3, [r3, #112] ; 0x70
8004538: 4a76 ldr r2, [pc, #472] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
800453a: f043 0304 orr.w r3, r3, #4
800453e: 6713 str r3, [r2, #112] ; 0x70
8004540: 4b74 ldr r3, [pc, #464] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
8004542: 6f1b ldr r3, [r3, #112] ; 0x70
8004544: 4a73 ldr r2, [pc, #460] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
8004546: f043 0301 orr.w r3, r3, #1
800454a: 6713 str r3, [r2, #112] ; 0x70
800454c: e00b b.n 8004566 <HAL_RCC_OscConfig+0x32a>
800454e: 4b71 ldr r3, [pc, #452] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
8004550: 6f1b ldr r3, [r3, #112] ; 0x70
8004552: 4a70 ldr r2, [pc, #448] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
8004554: f023 0301 bic.w r3, r3, #1
8004558: 6713 str r3, [r2, #112] ; 0x70
800455a: 4b6e ldr r3, [pc, #440] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
800455c: 6f1b ldr r3, [r3, #112] ; 0x70
800455e: 4a6d ldr r2, [pc, #436] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
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 <HAL_RCC_OscConfig+0x35e>
{
/* Get Start Tick*/
tickstart = HAL_GetTick();
800456e: f7fe ff51 bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x350>
{
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
8004576: f7fe ff4d bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x350>
{
return HAL_TIMEOUT;
8004588: 2303 movs r3, #3
800458a: e0bc b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
800458c: 4b61 ldr r3, [pc, #388] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
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 <HAL_RCC_OscConfig+0x33a>
8004598: e014 b.n 80045c4 <HAL_RCC_OscConfig+0x388>
}
}
else
{
/* Get Start Tick */
tickstart = HAL_GetTick();
800459a: f7fe ff3b bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x37c>
{
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
80045a2: f7fe ff37 bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x37c>
{
return HAL_TIMEOUT;
80045b4: 2303 movs r3, #3
80045b6: e0a6 b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
80045b8: 4b56 ldr r3, [pc, #344] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
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 <HAL_RCC_OscConfig+0x366>
}
}
}
/* 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_OscConfig+0x39a>
{
__HAL_RCC_PWR_CLK_DISABLE();
80045ca: 4b52 ldr r3, [pc, #328] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
80045cc: 6c1b ldr r3, [r3, #64] ; 0x40
80045ce: 4a51 ldr r2, [pc, #324] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
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 <HAL_RCC_OscConfig+0x4c8>
{
/* 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 <HAL_RCC_OscConfig+0x4d8>)
80045e2: 689b ldr r3, [r3, #8]
80045e4: f003 030c and.w r3, r3, #12
80045e8: 2b08 cmp r3, #8
80045ea: d05c beq.n 80046a6 <HAL_RCC_OscConfig+0x46a>
{
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 <HAL_RCC_OscConfig+0x43c>
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 <HAL_RCC_OscConfig+0x4dc>)
80045f6: 2200 movs r2, #0
80045f8: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
80045fa: f7fe ff0b bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x3d8>
{
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
8004602: f7fe ff07 bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x3d8>
{
return HAL_TIMEOUT;
8004610: 2303 movs r3, #3
8004612: e078 b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
8004614: 4b3f ldr r3, [pc, #252] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
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 <HAL_RCC_OscConfig+0x3c6>
}
}
/* 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 <HAL_RCC_OscConfig+0x4d8>)
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 <HAL_RCC_OscConfig+0x4dc>)
800464c: 2201 movs r2, #1
800464e: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
8004650: f7fe fee0 bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x42e>
{
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
8004658: f7fe fedc bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x42e>
{
return HAL_TIMEOUT;
8004666: 2303 movs r3, #3
8004668: e04d b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
800466a: 4b2a ldr r3, [pc, #168] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
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 <HAL_RCC_OscConfig+0x41c>
8004676: e045 b.n 8004704 <HAL_RCC_OscConfig+0x4c8>
}
}
else
{
/* Disable the main PLL. */
__HAL_RCC_PLL_DISABLE();
8004678: 4b27 ldr r3, [pc, #156] ; (8004718 <HAL_RCC_OscConfig+0x4dc>)
800467a: 2200 movs r2, #0
800467c: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
800467e: f7fe fec9 bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x45c>
{
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
8004686: f7fe fec5 bl 8003414 <HAL_GetTick>
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 <HAL_RCC_OscConfig+0x45c>
{
return HAL_TIMEOUT;
8004694: 2303 movs r3, #3
8004696: e036 b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
8004698: 4b1e ldr r3, [pc, #120] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
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 <HAL_RCC_OscConfig+0x44a>
80046a4: e02e b.n 8004704 <HAL_RCC_OscConfig+0x4c8>
}
}
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 <HAL_RCC_OscConfig+0x476>
{
return HAL_ERROR;
80046ae: 2301 movs r3, #1
80046b0: e029 b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
}
else
{
/* Do not return HAL_ERROR if request repeats the current configuration */
pll_config = RCC->PLLCFGR;
80046b2: 4b18 ldr r3, [pc, #96] ; (8004714 <HAL_RCC_OscConfig+0x4d8>)
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 <HAL_RCC_OscConfig+0x4c4>
(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 <HAL_RCC_OscConfig+0x4c4>
(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 <HAL_RCC_OscConfig+0x4c4>
(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 <HAL_RCC_OscConfig+0x4c4>
(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 <HAL_RCC_OscConfig+0x4c8>
{
return HAL_ERROR;
8004700: 2301 movs r3, #1
8004702: e000 b.n 8004706 <HAL_RCC_OscConfig+0x4ca>
}
}
}
}
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 <HAL_RCC_ClockConfig>:
* HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency
* (for more details refer to section above "Initialization/de-initialization functions")
* @retval None
*/
HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
{
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 <HAL_RCC_ClockConfig+0x14>
{
return HAL_ERROR;
800472c: 2301 movs r3, #1
800472e: e0cc b.n 80048ca <HAL_RCC_ClockConfig+0x1ae>
/* 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 <HAL_RCC_ClockConfig+0x1b8>)
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 <HAL_RCC_ClockConfig+0x3c>
{
/* 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 <HAL_RCC_ClockConfig+0x1b8>)
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 <HAL_RCC_ClockConfig+0x1b8>)
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 <HAL_RCC_ClockConfig+0x3c>
{
return HAL_ERROR;
8004754: 2301 movs r3, #1
8004756: e0b8 b.n 80048ca <HAL_RCC_ClockConfig+0x1ae>
}
}
/*-------------------------- 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 <HAL_RCC_ClockConfig+0x8a>
{
/* 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 <HAL_RCC_ClockConfig+0x60>
{
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
8004770: 4b59 ldr r3, [pc, #356] ; (80048d8 <HAL_RCC_ClockConfig+0x1bc>)
8004772: 689b ldr r3, [r3, #8]
8004774: 4a58 ldr r2, [pc, #352] ; (80048d8 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0x78>
{
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
8004788: 4b53 ldr r3, [pc, #332] ; (80048d8 <HAL_RCC_ClockConfig+0x1bc>)
800478a: 689b ldr r3, [r3, #8]
800478c: 4a52 ldr r2, [pc, #328] ; (80048d8 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0x120>
{
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 <HAL_RCC_ClockConfig+0xae>
{
/* Check the HSE ready flag */
if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
80047ba: 4b47 ldr r3, [pc, #284] ; (80048d8 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0xde>
{
return HAL_ERROR;
80047c6: 2301 movs r3, #1
80047c8: e07f b.n 80048ca <HAL_RCC_ClockConfig+0x1ae>
}
}
/* 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 <HAL_RCC_ClockConfig+0xbe>
(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 <HAL_RCC_ClockConfig+0xce>
{
/* Check the PLL ready flag */
if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
80047da: 4b3f ldr r3, [pc, #252] ; (80048d8 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0xde>
{
return HAL_ERROR;
80047e6: 2301 movs r3, #1
80047e8: e06f b.n 80048ca <HAL_RCC_ClockConfig+0x1ae>
}
/* 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 <HAL_RCC_ClockConfig+0x1bc>)
80047ec: 681b ldr r3, [r3, #0]
80047ee: f003 0302 and.w r3, r3, #2
80047f2: 2b00 cmp r3, #0
80047f4: d101 bne.n 80047fa <HAL_RCC_ClockConfig+0xde>
{
return HAL_ERROR;
80047f6: 2301 movs r3, #1
80047f8: e067 b.n 80048ca <HAL_RCC_ClockConfig+0x1ae>
}
}
__HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);
80047fa: 4b37 ldr r3, [pc, #220] ; (80048d8 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0x1bc>)
8004808: 4313 orrs r3, r2
800480a: 608b str r3, [r1, #8]
/* Get Start Tick */
tickstart = HAL_GetTick();
800480c: f7fe fe02 bl 8003414 <HAL_GetTick>
8004810: 60f8 str r0, [r7, #12]
while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
8004812: e00a b.n 800482a <HAL_RCC_ClockConfig+0x10e>
{
if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
8004814: f7fe fdfe bl 8003414 <HAL_GetTick>
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 <HAL_RCC_ClockConfig+0x10e>
{
return HAL_TIMEOUT;
8004826: 2303 movs r3, #3
8004828: e04f b.n 80048ca <HAL_RCC_ClockConfig+0x1ae>
while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
800482a: 4b2b ldr r3, [pc, #172] ; (80048d8 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0xf8>
}
}
}
/* Decreasing the number of wait states because of lower CPU frequency */
if(FLatency < __HAL_FLASH_GET_LATENCY())
800483c: 4b25 ldr r3, [pc, #148] ; (80048d4 <HAL_RCC_ClockConfig+0x1b8>)
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 <HAL_RCC_ClockConfig+0x148>
{
/* 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 <HAL_RCC_ClockConfig+0x1b8>)
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 <HAL_RCC_ClockConfig+0x1b8>)
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 <HAL_RCC_ClockConfig+0x148>
{
return HAL_ERROR;
8004860: 2301 movs r3, #1
8004862: e032 b.n 80048ca <HAL_RCC_ClockConfig+0x1ae>
}
}
/*-------------------------- 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 <HAL_RCC_ClockConfig+0x166>
{
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 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0x186>
{
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 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_GetSysClockFreq>
80048a6: 4601 mov r1, r0
80048a8: 4b0b ldr r3, [pc, #44] ; (80048d8 <HAL_RCC_ClockConfig+0x1bc>)
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 <HAL_RCC_ClockConfig+0x1c0>)
80048b4: 5cd3 ldrb r3, [r2, r3]
80048b6: fa21 f303 lsr.w r3, r1, r3
80048ba: 4a09 ldr r2, [pc, #36] ; (80048e0 <HAL_RCC_ClockConfig+0x1c4>)
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 <HAL_RCC_ClockConfig+0x1c8>)
80048c0: 681b ldr r3, [r3, #0]
80048c2: 4618 mov r0, r3
80048c4: f7fe fd62 bl 800338c <HAL_InitTick>
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 <HAL_RCC_GetSysClockFreq>:
*
*
* @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 <HAL_RCC_GetSysClockFreq+0x1a4>)
8004900: 689b ldr r3, [r3, #8]
8004902: f003 030c and.w r3, r3, #12
8004906: 2b04 cmp r3, #4
8004908: d007 beq.n 800491a <HAL_RCC_GetSysClockFreq+0x32>
800490a: 2b08 cmp r3, #8
800490c: d008 beq.n 8004920 <HAL_RCC_GetSysClockFreq+0x38>
800490e: 2b00 cmp r3, #0
8004910: f040 80b4 bne.w 8004a7c <HAL_RCC_GetSysClockFreq+0x194>
{
case RCC_CFGR_SWS_HSI: /* HSI used as system clock source */
{
sysclockfreq = HSI_VALUE;
8004914: 4b5e ldr r3, [pc, #376] ; (8004a90 <HAL_RCC_GetSysClockFreq+0x1a8>)
8004916: 60bb str r3, [r7, #8]
break;
8004918: e0b3 b.n 8004a82 <HAL_RCC_GetSysClockFreq+0x19a>
}
case RCC_CFGR_SWS_HSE: /* HSE used as system clock source */
{
sysclockfreq = HSE_VALUE;
800491a: 4b5e ldr r3, [pc, #376] ; (8004a94 <HAL_RCC_GetSysClockFreq+0x1ac>)
800491c: 60bb str r3, [r7, #8]
break;
800491e: e0b0 b.n 8004a82 <HAL_RCC_GetSysClockFreq+0x19a>
}
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 <HAL_RCC_GetSysClockFreq+0x1a4>)
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 <HAL_RCC_GetSysClockFreq+0x1a4>)
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 <HAL_RCC_GetSysClockFreq+0xe4>
{
/* 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 <HAL_RCC_GetSysClockFreq+0x1a4>)
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 <HAL_RCC_GetSysClockFreq+0x178>
}
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 <HAL_RCC_GetSysClockFreq+0x1a4>)
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 <HAL_RCC_GetSysClockFreq+0x1a4>)
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 <HAL_RCC_GetSysClockFreq+0x19a>
}
default:
{
sysclockfreq = HSI_VALUE;
8004a7c: 4b04 ldr r3, [pc, #16] ; (8004a90 <HAL_RCC_GetSysClockFreq+0x1a8>)
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 <HAL_SPI_Init>:
* @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 <HAL_SPI_Init+0x12>
{
return HAL_ERROR;
8004aa6: 2301 movs r3, #1
8004aa8: e056 b.n 8004b58 <HAL_SPI_Init+0xc0>
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 <HAL_SPI_Init+0x32>
{
/* 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 <HAL_SPI_MspInit>
#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 <HAL_SPI_Transmit_IT>:
* @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 <HAL_SPI_Transmit_IT+0x20>
8004b7c: 2302 movs r3, #2
8004b7e: e067 b.n 8004c50 <HAL_SPI_Transmit_IT+0xf0>
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 <HAL_SPI_Transmit_IT+0x34>
8004b8e: 88fb ldrh r3, [r7, #6]
8004b90: 2b00 cmp r3, #0
8004b92: d102 bne.n 8004b9a <HAL_SPI_Transmit_IT+0x3a>
{
errorcode = HAL_ERROR;
8004b94: 2301 movs r3, #1
8004b96: 75fb strb r3, [r7, #23]
goto error;
8004b98: e055 b.n 8004c46 <HAL_SPI_Transmit_IT+0xe6>
}
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 <HAL_SPI_Transmit_IT+0x4c>
{
errorcode = HAL_BUSY;
8004ba6: 2302 movs r3, #2
8004ba8: 75fb strb r3, [r7, #23]
goto error;
8004baa: e04c b.n 8004c46 <HAL_SPI_Transmit_IT+0xe6>
}
/* 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 <HAL_SPI_Transmit_IT+0x94>
{
hspi->TxISR = SPI_TxISR_16BIT;
8004bec: 68fb ldr r3, [r7, #12]
8004bee: 4a1b ldr r2, [pc, #108] ; (8004c5c <HAL_SPI_Transmit_IT+0xfc>)
8004bf0: 645a str r2, [r3, #68] ; 0x44
8004bf2: e002 b.n 8004bfa <HAL_SPI_Transmit_IT+0x9a>
}
else
{
hspi->TxISR = SPI_TxISR_8BIT;
8004bf4: 68fb ldr r3, [r7, #12]
8004bf6: 4a1a ldr r2, [pc, #104] ; (8004c60 <HAL_SPI_Transmit_IT+0x100>)
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 <HAL_SPI_Transmit_IT+0xb4>
{
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 <HAL_SPI_Transmit_IT+0xe4>
{
/* 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 <HAL_SPI_Transmit_IT+0xe6>
}
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 <HAL_SPI_IRQHandler>:
* @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 <HAL_SPI_IRQHandler+0x44>
(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 <HAL_SPI_IRQHandler+0x44>
(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 <HAL_SPI_IRQHandler+0x44>
{
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 <HAL_SPI_IRQHandler+0x1f6>
}
/* 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 <HAL_SPI_IRQHandler+0x66>
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 <HAL_SPI_IRQHandler+0x66>
{
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 <HAL_SPI_IRQHandler+0x1f6>
}
/* 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 <HAL_SPI_IRQHandler+0x8c>
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 <HAL_SPI_IRQHandler+0x8c>
|| (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 <HAL_SPI_IRQHandler+0x1f6>
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 <HAL_SPI_IRQHandler+0x1f6>
{
/* 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 <HAL_SPI_IRQHandler+0xee>
{
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 <HAL_SPI_IRQHandler+0xd6>
{
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 <HAL_SPI_IRQHandler+0xee>
}
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 <HAL_SPI_IRQHandler+0x1f6>
}
}
/* 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 <HAL_SPI_IRQHandler+0x124>
{
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 <HAL_SPI_IRQHandler+0x14a>
{
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 <HAL_SPI_IRQHandler+0x1f4>
{
/* 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 <HAL_SPI_IRQHandler+0x17e>
8004dd8: 69fb ldr r3, [r7, #28]
8004dda: f003 0301 and.w r3, r3, #1
8004dde: 2b00 cmp r3, #0
8004de0: d034 beq.n 8004e4c <HAL_SPI_IRQHandler+0x1e8>
{
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 <HAL_SPI_IRQHandler+0x1ba>
{
/* 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 <HAL_SPI_IRQHandler+0x1fc>)
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 <HAL_DMA_Abort_IT>
8004e0c: 4603 mov r3, r0
8004e0e: 2b00 cmp r3, #0
8004e10: d005 beq.n 8004e1e <HAL_SPI_IRQHandler+0x1ba>
{
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 <HAL_SPI_IRQHandler+0x1f0>
{
/* 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 <HAL_SPI_IRQHandler+0x1fc>)
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 <HAL_DMA_Abort_IT>
8004e38: 4603 mov r3, r0
8004e3a: 2b00 cmp r3, #0
8004e3c: d00a beq.n 8004e54 <HAL_SPI_IRQHandler+0x1f0>
{
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 <HAL_SPI_IRQHandler+0x1f0>
{
/* 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 <HAL_SPI_ErrorCallback>
#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
}
}
return;
8004e52: e000 b.n 8004e56 <HAL_SPI_IRQHandler+0x1f2>
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 <HAL_SPI_TxCpltCallback>:
* @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 <HAL_SPI_ErrorCallback>:
* @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 <SPI_DMAAbortOnError>:
* (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 <HAL_SPI_ErrorCallback>
#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 <SPI_TxISR_8BIT>:
* @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 <SPI_TxISR_8BIT+0x3e>
{
/* 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 <SPI_CloseTx_ISR>
}
}
8004ef2: bf00 nop
8004ef4: 3708 adds r7, #8
8004ef6: 46bd mov sp, r7
8004ef8: bd80 pop {r7, pc}
08004efa <SPI_TxISR_16BIT>:
* @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 <SPI_TxISR_16BIT+0x3c>
{
/* 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 <SPI_CloseTx_ISR>
}
}
8004f36: bf00 nop
8004f38: 3708 adds r7, #8
8004f3a: 46bd mov sp, r7
8004f3c: bd80 pop {r7, pc}
08004f3e <SPI_WaitFlagStateUntilTimeout>:
* @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 <SPI_WaitFlagStateUntilTimeout+0xac>
{
if (Timeout != HAL_MAX_DELAY)
8004f50: 683b ldr r3, [r7, #0]
8004f52: f1b3 3fff cmp.w r3, #4294967295
8004f56: d048 beq.n 8004fea <SPI_WaitFlagStateUntilTimeout+0xac>
{
if (((HAL_GetTick() - Tickstart) >= Timeout) || (Timeout == 0U))
8004f58: f7fe fa5c bl 8003414 <HAL_GetTick>
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 <SPI_WaitFlagStateUntilTimeout+0x30>
8004f68: 683b ldr r3, [r7, #0]
8004f6a: 2b00 cmp r3, #0
8004f6c: d13d bne.n 8004fea <SPI_WaitFlagStateUntilTimeout+0xac>
/* 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 <SPI_WaitFlagStateUntilTimeout+0x6e>
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 <SPI_WaitFlagStateUntilTimeout+0x5e>
|| (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 <SPI_WaitFlagStateUntilTimeout+0x6e>
{
/* 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_WaitFlagStateUntilTimeout+0x98>
{
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 <SPI_WaitFlagStateUntilTimeout+0xcc>
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 <SPI_WaitFlagStateUntilTimeout+0x12>
}
}
}
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 <SPI_EndRxTxTransaction>:
* @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 <SPI_EndRxTxTransaction+0x7c>)
8005022: 681b ldr r3, [r3, #0]
8005024: 4a1b ldr r2, [pc, #108] ; (8005094 <SPI_EndRxTxTransaction+0x80>)
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 <SPI_EndRxTxTransaction+0x52>
{
/* 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 <SPI_WaitFlagStateUntilTimeout>
8005050: 4603 mov r3, r0
8005052: 2b00 cmp r3, #0
8005054: d016 beq.n 8005084 <SPI_EndRxTxTransaction+0x70>
{
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 <SPI_EndRxTxTransaction+0x72>
* 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 <SPI_EndRxTxTransaction+0x6e>
{
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 <SPI_EndRxTxTransaction+0x52>
8005080: e000 b.n 8005084 <SPI_EndRxTxTransaction+0x70>
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 <SPI_CloseTx_ISR>:
* @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 <SPI_CloseTx_ISR+0xbc>)
80050a2: 681b ldr r3, [r3, #0]
80050a4: 4a2c ldr r2, [pc, #176] ; (8005158 <SPI_CloseTx_ISR+0xc0>)
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 <HAL_GetTick>
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 <SPI_CloseTx_ISR+0x36>
{
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 <SPI_CloseTx_ISR+0x4a>
}
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 <SPI_CloseTx_ISR+0x22>
/* 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 <SPI_EndRxTxTransaction>
80050fc: 4603 mov r3, r0
80050fe: 2b00 cmp r3, #0
8005100: d005 beq.n 800510e <SPI_CloseTx_ISR+0x76>
{
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 <SPI_CloseTx_ISR+0x94>
{
__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 <SPI_CloseTx_ISR+0xac>
{
/* 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 <HAL_SPI_ErrorCallback>
hspi->TxCpltCallback(hspi);
#else
HAL_SPI_TxCpltCallback(hspi);
#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
}
}
8005142: e002 b.n 800514a <SPI_CloseTx_ISR+0xb2>
HAL_SPI_TxCpltCallback(hspi);
8005144: 6878 ldr r0, [r7, #4]
8005146: f7ff fe8d bl 8004e64 <HAL_SPI_TxCpltCallback>
}
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 <HAL_TIM_Base_Init>:
* Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init()
* @param htim TIM Base handle
* @retval HAL status
*/
HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
{
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 <HAL_TIM_Base_Init+0x12>
{
return HAL_ERROR;
800516a: 2301 movs r3, #1
800516c: e01d b.n 80051aa <HAL_TIM_Base_Init+0x4e>
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 <HAL_TIM_Base_Init+0x2c>
{
/* 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 <HAL_TIM_Base_MspInit>
#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 <TIM_Base_SetConfig>
/* 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 <HAL_TIM_Base_Start_IT>:
* @brief Starts the TIM Base generation in interrupt mode.
* @param htim TIM Base handle
* @retval HAL status
*/
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
{
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_Base_Start_IT+0x3a>
{
__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 <HAL_TIM_OnePulse_Init>:
* @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 <HAL_TIM_OnePulse_Init+0x14>
{
return HAL_ERROR;
800520a: 2301 movs r3, #1
800520c: e02d b.n 800526a <HAL_TIM_OnePulse_Init+0x70>
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 <HAL_TIM_OnePulse_Init+0x2e>
{
/* 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 <HAL_TIM_OnePulse_MspInit>
#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 <TIM_Base_SetConfig>
/* 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 <HAL_TIM_OnePulse_MspInit>:
* @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 <HAL_TIM_IRQHandler>:
* @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 <HAL_TIM_IRQHandler+0x5c>
{
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_IRQHandler+0x5c>
{
{
__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 <HAL_TIM_IRQHandler+0x4a>
{
#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 <HAL_TIM_IC_CaptureCallback>
80052ce: e005 b.n 80052dc <HAL_TIM_IRQHandler+0x56>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
80052d0: 6878 ldr r0, [r7, #4]
80052d2: f000 f8ea bl 80054aa <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
80052d6: 6878 ldr r0, [r7, #4]
80052d8: f000 f8fb bl 80054d2 <HAL_TIM_PWM_PulseFinishedCallback>
#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 <HAL_TIM_IRQHandler+0xb0>
{
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_IRQHandler+0xb0>
{
__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 <HAL_TIM_IRQHandler+0x9e>
{
#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 <HAL_TIM_IC_CaptureCallback>
8005322: e005 b.n 8005330 <HAL_TIM_IRQHandler+0xaa>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
8005324: 6878 ldr r0, [r7, #4]
8005326: f000 f8c0 bl 80054aa <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
800532a: 6878 ldr r0, [r7, #4]
800532c: f000 f8d1 bl 80054d2 <HAL_TIM_PWM_PulseFinishedCallback>
#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 <HAL_TIM_IRQHandler+0x104>
{
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_IRQHandler+0x104>
{
__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 <HAL_TIM_IRQHandler+0xf2>
{
#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 <HAL_TIM_IC_CaptureCallback>
8005376: e005 b.n 8005384 <HAL_TIM_IRQHandler+0xfe>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
8005378: 6878 ldr r0, [r7, #4]
800537a: f000 f896 bl 80054aa <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
800537e: 6878 ldr r0, [r7, #4]
8005380: f000 f8a7 bl 80054d2 <HAL_TIM_PWM_PulseFinishedCallback>
#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 <HAL_TIM_IRQHandler+0x158>
{
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_IRQHandler+0x158>
{
__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 <HAL_TIM_IRQHandler+0x146>
{
#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 <HAL_TIM_IC_CaptureCallback>
80053ca: e005 b.n 80053d8 <HAL_TIM_IRQHandler+0x152>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
80053cc: 6878 ldr r0, [r7, #4]
80053ce: f000 f86c bl 80054aa <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
80053d2: 6878 ldr r0, [r7, #4]
80053d4: f000 f87d bl 80054d2 <HAL_TIM_PWM_PulseFinishedCallback>
#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 <HAL_TIM_IRQHandler+0x184>
{
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_IRQHandler+0x184>
{
__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 <HAL_TIM_PeriodElapsedCallback>
#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 <HAL_TIM_IRQHandler+0x1b0>
{
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_IRQHandler+0x1b0>
{
__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 <HAL_TIMEx_BreakCallback>
#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 <HAL_TIM_IRQHandler+0x1dc>
{
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_IRQHandler+0x1dc>
{
__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 <HAL_TIM_TriggerCallback>
#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 <HAL_TIM_IRQHandler+0x208>
{
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_IRQHandler+0x208>
{
__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 <HAL_TIMEx_CommutCallback>
#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 <HAL_TIM_PeriodElapsedCallback>:
* @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 <HAL_TIM_OC_DelayElapsedCallback>:
* @brief Output Compare callback in non-blocking mode
* @param htim TIM OC handle
* @retval None
*/
__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{
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 <HAL_TIM_IC_CaptureCallback>:
* @brief Input Capture callback in non-blocking mode
* @param htim TIM IC handle
* @retval None
*/
__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
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 <HAL_TIM_PWM_PulseFinishedCallback>:
* @brief PWM Pulse finished callback in non-blocking mode
* @param htim TIM handle
* @retval None
*/
__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
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 <HAL_TIM_TriggerCallback>:
* @brief Hall Trigger detection callback in non-blocking mode
* @param htim TIM handle
* @retval None
*/
__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)
{
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 <TIM_Base_SetConfig>:
* @param TIMx TIM peripheral
* @param Structure TIM Base configuration structure
* @retval None
*/
void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)
{
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 <TIM_Base_SetConfig+0x114>)
8005510: 4293 cmp r3, r2
8005512: d013 beq.n 800553c <TIM_Base_SetConfig+0x40>
8005514: 687b ldr r3, [r7, #4]
8005516: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
800551a: d00f beq.n 800553c <TIM_Base_SetConfig+0x40>
800551c: 687b ldr r3, [r7, #4]
800551e: 4a3d ldr r2, [pc, #244] ; (8005614 <TIM_Base_SetConfig+0x118>)
8005520: 4293 cmp r3, r2
8005522: d00b beq.n 800553c <TIM_Base_SetConfig+0x40>
8005524: 687b ldr r3, [r7, #4]
8005526: 4a3c ldr r2, [pc, #240] ; (8005618 <TIM_Base_SetConfig+0x11c>)
8005528: 4293 cmp r3, r2
800552a: d007 beq.n 800553c <TIM_Base_SetConfig+0x40>
800552c: 687b ldr r3, [r7, #4]
800552e: 4a3b ldr r2, [pc, #236] ; (800561c <TIM_Base_SetConfig+0x120>)
8005530: 4293 cmp r3, r2
8005532: d003 beq.n 800553c <TIM_Base_SetConfig+0x40>
8005534: 687b ldr r3, [r7, #4]
8005536: 4a3a ldr r2, [pc, #232] ; (8005620 <TIM_Base_SetConfig+0x124>)
8005538: 4293 cmp r3, r2
800553a: d108 bne.n 800554e <TIM_Base_SetConfig+0x52>
{
/* 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 <TIM_Base_SetConfig+0x114>)
8005552: 4293 cmp r3, r2
8005554: d02b beq.n 80055ae <TIM_Base_SetConfig+0xb2>
8005556: 687b ldr r3, [r7, #4]
8005558: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
800555c: d027 beq.n 80055ae <TIM_Base_SetConfig+0xb2>
800555e: 687b ldr r3, [r7, #4]
8005560: 4a2c ldr r2, [pc, #176] ; (8005614 <TIM_Base_SetConfig+0x118>)
8005562: 4293 cmp r3, r2
8005564: d023 beq.n 80055ae <TIM_Base_SetConfig+0xb2>
8005566: 687b ldr r3, [r7, #4]
8005568: 4a2b ldr r2, [pc, #172] ; (8005618 <TIM_Base_SetConfig+0x11c>)
800556a: 4293 cmp r3, r2
800556c: d01f beq.n 80055ae <TIM_Base_SetConfig+0xb2>
800556e: 687b ldr r3, [r7, #4]
8005570: 4a2a ldr r2, [pc, #168] ; (800561c <TIM_Base_SetConfig+0x120>)
8005572: 4293 cmp r3, r2
8005574: d01b beq.n 80055ae <TIM_Base_SetConfig+0xb2>
8005576: 687b ldr r3, [r7, #4]
8005578: 4a29 ldr r2, [pc, #164] ; (8005620 <TIM_Base_SetConfig+0x124>)
800557a: 4293 cmp r3, r2
800557c: d017 beq.n 80055ae <TIM_Base_SetConfig+0xb2>
800557e: 687b ldr r3, [r7, #4]
8005580: 4a28 ldr r2, [pc, #160] ; (8005624 <TIM_Base_SetConfig+0x128>)
8005582: 4293 cmp r3, r2
8005584: d013 beq.n 80055ae <TIM_Base_SetConfig+0xb2>
8005586: 687b ldr r3, [r7, #4]
8005588: 4a27 ldr r2, [pc, #156] ; (8005628 <TIM_Base_SetConfig+0x12c>)
800558a: 4293 cmp r3, r2
800558c: d00f beq.n 80055ae <TIM_Base_SetConfig+0xb2>
800558e: 687b ldr r3, [r7, #4]
8005590: 4a26 ldr r2, [pc, #152] ; (800562c <TIM_Base_SetConfig+0x130>)
8005592: 4293 cmp r3, r2
8005594: d00b beq.n 80055ae <TIM_Base_SetConfig+0xb2>
8005596: 687b ldr r3, [r7, #4]
8005598: 4a25 ldr r2, [pc, #148] ; (8005630 <TIM_Base_SetConfig+0x134>)
800559a: 4293 cmp r3, r2
800559c: d007 beq.n 80055ae <TIM_Base_SetConfig+0xb2>
800559e: 687b ldr r3, [r7, #4]
80055a0: 4a24 ldr r2, [pc, #144] ; (8005634 <TIM_Base_SetConfig+0x138>)
80055a2: 4293 cmp r3, r2
80055a4: d003 beq.n 80055ae <TIM_Base_SetConfig+0xb2>
80055a6: 687b ldr r3, [r7, #4]
80055a8: 4a23 ldr r2, [pc, #140] ; (8005638 <TIM_Base_SetConfig+0x13c>)
80055aa: 4293 cmp r3, r2
80055ac: d108 bne.n 80055c0 <TIM_Base_SetConfig+0xc4>
{
/* 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 <TIM_Base_SetConfig+0x114>)
80055e8: 4293 cmp r3, r2
80055ea: d003 beq.n 80055f4 <TIM_Base_SetConfig+0xf8>
80055ec: 687b ldr r3, [r7, #4]
80055ee: 4a0c ldr r2, [pc, #48] ; (8005620 <TIM_Base_SetConfig+0x124>)
80055f0: 4293 cmp r3, r2
80055f2: d103 bne.n 80055fc <TIM_Base_SetConfig+0x100>
{
/* 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 <HAL_TIMEx_MasterConfigSynchronization>:
* 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 <HAL_TIMEx_MasterConfigSynchronization+0x18>
8005650: 2302 movs r3, #2
8005652: e05a b.n 800570a <HAL_TIMEx_MasterConfigSynchronization+0xce>
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 <HAL_TIMEx_MasterConfigSynchronization+0xdc>)
8005694: 4293 cmp r3, r2
8005696: d022 beq.n 80056de <HAL_TIMEx_MasterConfigSynchronization+0xa2>
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 <HAL_TIMEx_MasterConfigSynchronization+0xa2>
80056a2: 687b ldr r3, [r7, #4]
80056a4: 681b ldr r3, [r3, #0]
80056a6: 4a1d ldr r2, [pc, #116] ; (800571c <HAL_TIMEx_MasterConfigSynchronization+0xe0>)
80056a8: 4293 cmp r3, r2
80056aa: d018 beq.n 80056de <HAL_TIMEx_MasterConfigSynchronization+0xa2>
80056ac: 687b ldr r3, [r7, #4]
80056ae: 681b ldr r3, [r3, #0]
80056b0: 4a1b ldr r2, [pc, #108] ; (8005720 <HAL_TIMEx_MasterConfigSynchronization+0xe4>)
80056b2: 4293 cmp r3, r2
80056b4: d013 beq.n 80056de <HAL_TIMEx_MasterConfigSynchronization+0xa2>
80056b6: 687b ldr r3, [r7, #4]
80056b8: 681b ldr r3, [r3, #0]
80056ba: 4a1a ldr r2, [pc, #104] ; (8005724 <HAL_TIMEx_MasterConfigSynchronization+0xe8>)
80056bc: 4293 cmp r3, r2
80056be: d00e beq.n 80056de <HAL_TIMEx_MasterConfigSynchronization+0xa2>
80056c0: 687b ldr r3, [r7, #4]
80056c2: 681b ldr r3, [r3, #0]
80056c4: 4a18 ldr r2, [pc, #96] ; (8005728 <HAL_TIMEx_MasterConfigSynchronization+0xec>)
80056c6: 4293 cmp r3, r2
80056c8: d009 beq.n 80056de <HAL_TIMEx_MasterConfigSynchronization+0xa2>
80056ca: 687b ldr r3, [r7, #4]
80056cc: 681b ldr r3, [r3, #0]
80056ce: 4a17 ldr r2, [pc, #92] ; (800572c <HAL_TIMEx_MasterConfigSynchronization+0xf0>)
80056d0: 4293 cmp r3, r2
80056d2: d004 beq.n 80056de <HAL_TIMEx_MasterConfigSynchronization+0xa2>
80056d4: 687b ldr r3, [r7, #4]
80056d6: 681b ldr r3, [r3, #0]
80056d8: 4a15 ldr r2, [pc, #84] ; (8005730 <HAL_TIMEx_MasterConfigSynchronization+0xf4>)
80056da: 4293 cmp r3, r2
80056dc: d10c bne.n 80056f8 <HAL_TIMEx_MasterConfigSynchronization+0xbc>
{
/* 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 <HAL_TIMEx_CommutCallback>:
* @brief Hall commutation changed callback in non-blocking mode
* @param htim TIM handle
* @retval None
*/
__weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim)
{
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 <HAL_TIMEx_BreakCallback>:
* @brief Hall Break detection callback in non-blocking mode
* @param htim TIM handle
* @retval None
*/
__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim)
{
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 <memset>:
80057b0: 4402 add r2, r0
80057b2: 4603 mov r3, r0
80057b4: 4293 cmp r3, r2
80057b6: d100 bne.n 80057ba <memset+0xa>
80057b8: 4770 bx lr
80057ba: f803 1b01 strb.w r1, [r3], #1
80057be: e7f9 b.n 80057b4 <memset+0x4>
080057c0 <rand>:
80057c0: b538 push {r3, r4, r5, lr}
80057c2: 4b13 ldr r3, [pc, #76] ; (8005810 <rand+0x50>)
80057c4: 681c ldr r4, [r3, #0]
80057c6: 6ba3 ldr r3, [r4, #56] ; 0x38
80057c8: b97b cbnz r3, 80057ea <rand+0x2a>
80057ca: 2018 movs r0, #24
80057cc: f000 f82c bl 8005828 <malloc>
80057d0: 4a10 ldr r2, [pc, #64] ; (8005814 <rand+0x54>)
80057d2: 4b11 ldr r3, [pc, #68] ; (8005818 <rand+0x58>)
80057d4: 63a0 str r0, [r4, #56] ; 0x38
80057d6: e9c0 2300 strd r2, r3, [r0]
80057da: 4b10 ldr r3, [pc, #64] ; (800581c <rand+0x5c>)
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 <rand+0x60>)
80057ee: 690a ldr r2, [r1, #16]
80057f0: 694b ldr r3, [r1, #20]
80057f2: 4c0c ldr r4, [pc, #48] ; (8005824 <rand+0x64>)
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 <malloc>:
8005828: 4b02 ldr r3, [pc, #8] ; (8005834 <malloc+0xc>)
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