A141/Debug/A141 Amplifier.list

18373 lines
702 KiB
Plaintext
Raw Normal View History

new file: .cproject new file: .gitignore new file: .mxproject new file: .project new file: .settings/com.atollic.truestudio.debug.hardware_device.prefs new file: .settings/language.settings.xml new file: .settings/org.eclipse.cdt.managedbuilder.core.prefs new file: .settings/org.eclipse.core.resources.prefs new file: A141 Amplifier.elf.launch new file: Amplifier.elf.launch new file: Amplifier.ioc new file: Core/Inc/flash.h new file: Core/Inc/gpio.h new file: Core/Inc/main.h new file: Core/Inc/my.h new file: Core/Inc/stm32l0xx_hal_conf.h new file: Core/Inc/stm32l0xx_it.h new file: Core/Inc/tim.h new file: Core/Inc/usart.h new file: Core/Src/amplif.c new file: Core/Src/flash.c new file: Core/Src/gpio.c new file: Core/Src/main.c new file: Core/Src/stm32l0xx_hal_msp.c new file: Core/Src/stm32l0xx_it.c new file: Core/Src/syscalls.c new file: Core/Src/system_stm32l0xx.c new file: Core/Src/tim.c new file: Core/Src/usart.c new file: Debug/A141 Amplifier.list new file: Debug/A141 Amplifier.map new file: Debug/Amplifier.list new file: Debug/Amplifier.map new file: Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l072xx.h new file: Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h new file: Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h new file: Drivers/CMSIS/Include/cmsis_armcc.h new file: Drivers/CMSIS/Include/cmsis_armclang.h new file: Drivers/CMSIS/Include/cmsis_compiler.h new file: Drivers/CMSIS/Include/cmsis_gcc.h new file: Drivers/CMSIS/Include/cmsis_iccarm.h new file: Drivers/CMSIS/Include/cmsis_version.h new file: Drivers/CMSIS/Include/core_armv8mbl.h new file: Drivers/CMSIS/Include/core_armv8mml.h new file: Drivers/CMSIS/Include/core_cm0.h new file: Drivers/CMSIS/Include/core_cm0plus.h new file: Drivers/CMSIS/Include/core_cm1.h new file: Drivers/CMSIS/Include/core_cm23.h new file: Drivers/CMSIS/Include/core_cm3.h new file: Drivers/CMSIS/Include/core_cm33.h new file: Drivers/CMSIS/Include/core_cm4.h new file: Drivers/CMSIS/Include/core_cm7.h new file: Drivers/CMSIS/Include/core_sc000.h new file: Drivers/CMSIS/Include/core_sc300.h new file: Drivers/CMSIS/Include/mpu_armv7.h new file: Drivers/CMSIS/Include/mpu_armv8.h new file: Drivers/CMSIS/Include/tz_context.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h new file: Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c new file: Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c new file: STM32L072CB_FLASH.ld new file: startup/startup_stm32l072xx.s
2023-12-19 15:23:01 +03:00
A141 Amplifier.elf: file format elf32-littlearm
Sections:
Idx Name Size VMA LMA File off Algn
0 .isr_vector 000000c0 08000000 08000000 00010000 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .text 00006f28 080000c0 080000c0 000100c0 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .rodata 000004a4 08006fe8 08006fe8 00016fe8 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .ARM 00000008 0800748c 0800748c 0001748c 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .init_array 00000004 08007494 08007494 00017494 2**2
CONTENTS, ALLOC, LOAD, DATA
5 .fini_array 00000004 08007498 08007498 00017498 2**2
CONTENTS, ALLOC, LOAD, DATA
6 .data 00000010 20000000 0800749c 00020000 2**2
CONTENTS, ALLOC, LOAD, DATA
7 .bss 00000398 20000010 080074ac 00020010 2**2
ALLOC
8 ._user_heap_stack 00000600 200003a8 080074ac 000203a8 2**0
ALLOC
9 .ARM.attributes 00000028 00000000 00000000 00020010 2**0
CONTENTS, READONLY
10 .debug_info 0001130a 00000000 00000000 00020038 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_abbrev 000029ed 00000000 00000000 00031342 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_aranges 00000e40 00000000 00000000 00033d30 2**3
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 00000d18 00000000 00000000 00034b70 2**3
CONTENTS, READONLY, DEBUGGING
14 .debug_line 00007152 00000000 00000000 00035888 2**0
CONTENTS, READONLY, DEBUGGING
15 .debug_str 000045bb 00000000 00000000 0003c9da 2**0
CONTENTS, READONLY, DEBUGGING
16 .comment 0000007c 00000000 00000000 00040f95 2**0
CONTENTS, READONLY
17 .debug_frame 00003434 00000000 00000000 00041014 2**2
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
080000c0 <__do_global_dtors_aux>:
80000c0: b510 push {r4, lr}
80000c2: 4c06 ldr r4, [pc, #24] ; (80000dc <__do_global_dtors_aux+0x1c>)
80000c4: 7823 ldrb r3, [r4, #0]
80000c6: 2b00 cmp r3, #0
80000c8: d107 bne.n 80000da <__do_global_dtors_aux+0x1a>
80000ca: 4b05 ldr r3, [pc, #20] ; (80000e0 <__do_global_dtors_aux+0x20>)
80000cc: 2b00 cmp r3, #0
80000ce: d002 beq.n 80000d6 <__do_global_dtors_aux+0x16>
80000d0: 4804 ldr r0, [pc, #16] ; (80000e4 <__do_global_dtors_aux+0x24>)
80000d2: e000 b.n 80000d6 <__do_global_dtors_aux+0x16>
80000d4: bf00 nop
80000d6: 2301 movs r3, #1
80000d8: 7023 strb r3, [r4, #0]
80000da: bd10 pop {r4, pc}
80000dc: 20000010 .word 0x20000010
80000e0: 00000000 .word 0x00000000
80000e4: 08006fd0 .word 0x08006fd0
080000e8 <frame_dummy>:
80000e8: 4b04 ldr r3, [pc, #16] ; (80000fc <frame_dummy+0x14>)
80000ea: b510 push {r4, lr}
80000ec: 2b00 cmp r3, #0
80000ee: d003 beq.n 80000f8 <frame_dummy+0x10>
80000f0: 4903 ldr r1, [pc, #12] ; (8000100 <frame_dummy+0x18>)
80000f2: 4804 ldr r0, [pc, #16] ; (8000104 <frame_dummy+0x1c>)
80000f4: e000 b.n 80000f8 <frame_dummy+0x10>
80000f6: bf00 nop
80000f8: bd10 pop {r4, pc}
80000fa: 46c0 nop ; (mov r8, r8)
80000fc: 00000000 .word 0x00000000
8000100: 20000014 .word 0x20000014
8000104: 08006fd0 .word 0x08006fd0
08000108 <__udivsi3>:
8000108: 2200 movs r2, #0
800010a: 0843 lsrs r3, r0, #1
800010c: 428b cmp r3, r1
800010e: d374 bcc.n 80001fa <__udivsi3+0xf2>
8000110: 0903 lsrs r3, r0, #4
8000112: 428b cmp r3, r1
8000114: d35f bcc.n 80001d6 <__udivsi3+0xce>
8000116: 0a03 lsrs r3, r0, #8
8000118: 428b cmp r3, r1
800011a: d344 bcc.n 80001a6 <__udivsi3+0x9e>
800011c: 0b03 lsrs r3, r0, #12
800011e: 428b cmp r3, r1
8000120: d328 bcc.n 8000174 <__udivsi3+0x6c>
8000122: 0c03 lsrs r3, r0, #16
8000124: 428b cmp r3, r1
8000126: d30d bcc.n 8000144 <__udivsi3+0x3c>
8000128: 22ff movs r2, #255 ; 0xff
800012a: 0209 lsls r1, r1, #8
800012c: ba12 rev r2, r2
800012e: 0c03 lsrs r3, r0, #16
8000130: 428b cmp r3, r1
8000132: d302 bcc.n 800013a <__udivsi3+0x32>
8000134: 1212 asrs r2, r2, #8
8000136: 0209 lsls r1, r1, #8
8000138: d065 beq.n 8000206 <__udivsi3+0xfe>
800013a: 0b03 lsrs r3, r0, #12
800013c: 428b cmp r3, r1
800013e: d319 bcc.n 8000174 <__udivsi3+0x6c>
8000140: e000 b.n 8000144 <__udivsi3+0x3c>
8000142: 0a09 lsrs r1, r1, #8
8000144: 0bc3 lsrs r3, r0, #15
8000146: 428b cmp r3, r1
8000148: d301 bcc.n 800014e <__udivsi3+0x46>
800014a: 03cb lsls r3, r1, #15
800014c: 1ac0 subs r0, r0, r3
800014e: 4152 adcs r2, r2
8000150: 0b83 lsrs r3, r0, #14
8000152: 428b cmp r3, r1
8000154: d301 bcc.n 800015a <__udivsi3+0x52>
8000156: 038b lsls r3, r1, #14
8000158: 1ac0 subs r0, r0, r3
800015a: 4152 adcs r2, r2
800015c: 0b43 lsrs r3, r0, #13
800015e: 428b cmp r3, r1
8000160: d301 bcc.n 8000166 <__udivsi3+0x5e>
8000162: 034b lsls r3, r1, #13
8000164: 1ac0 subs r0, r0, r3
8000166: 4152 adcs r2, r2
8000168: 0b03 lsrs r3, r0, #12
800016a: 428b cmp r3, r1
800016c: d301 bcc.n 8000172 <__udivsi3+0x6a>
800016e: 030b lsls r3, r1, #12
8000170: 1ac0 subs r0, r0, r3
8000172: 4152 adcs r2, r2
8000174: 0ac3 lsrs r3, r0, #11
8000176: 428b cmp r3, r1
8000178: d301 bcc.n 800017e <__udivsi3+0x76>
800017a: 02cb lsls r3, r1, #11
800017c: 1ac0 subs r0, r0, r3
800017e: 4152 adcs r2, r2
8000180: 0a83 lsrs r3, r0, #10
8000182: 428b cmp r3, r1
8000184: d301 bcc.n 800018a <__udivsi3+0x82>
8000186: 028b lsls r3, r1, #10
8000188: 1ac0 subs r0, r0, r3
800018a: 4152 adcs r2, r2
800018c: 0a43 lsrs r3, r0, #9
800018e: 428b cmp r3, r1
8000190: d301 bcc.n 8000196 <__udivsi3+0x8e>
8000192: 024b lsls r3, r1, #9
8000194: 1ac0 subs r0, r0, r3
8000196: 4152 adcs r2, r2
8000198: 0a03 lsrs r3, r0, #8
800019a: 428b cmp r3, r1
800019c: d301 bcc.n 80001a2 <__udivsi3+0x9a>
800019e: 020b lsls r3, r1, #8
80001a0: 1ac0 subs r0, r0, r3
80001a2: 4152 adcs r2, r2
80001a4: d2cd bcs.n 8000142 <__udivsi3+0x3a>
80001a6: 09c3 lsrs r3, r0, #7
80001a8: 428b cmp r3, r1
80001aa: d301 bcc.n 80001b0 <__udivsi3+0xa8>
80001ac: 01cb lsls r3, r1, #7
80001ae: 1ac0 subs r0, r0, r3
80001b0: 4152 adcs r2, r2
80001b2: 0983 lsrs r3, r0, #6
80001b4: 428b cmp r3, r1
80001b6: d301 bcc.n 80001bc <__udivsi3+0xb4>
80001b8: 018b lsls r3, r1, #6
80001ba: 1ac0 subs r0, r0, r3
80001bc: 4152 adcs r2, r2
80001be: 0943 lsrs r3, r0, #5
80001c0: 428b cmp r3, r1
80001c2: d301 bcc.n 80001c8 <__udivsi3+0xc0>
80001c4: 014b lsls r3, r1, #5
80001c6: 1ac0 subs r0, r0, r3
80001c8: 4152 adcs r2, r2
80001ca: 0903 lsrs r3, r0, #4
80001cc: 428b cmp r3, r1
80001ce: d301 bcc.n 80001d4 <__udivsi3+0xcc>
80001d0: 010b lsls r3, r1, #4
80001d2: 1ac0 subs r0, r0, r3
80001d4: 4152 adcs r2, r2
80001d6: 08c3 lsrs r3, r0, #3
80001d8: 428b cmp r3, r1
80001da: d301 bcc.n 80001e0 <__udivsi3+0xd8>
80001dc: 00cb lsls r3, r1, #3
80001de: 1ac0 subs r0, r0, r3
80001e0: 4152 adcs r2, r2
80001e2: 0883 lsrs r3, r0, #2
80001e4: 428b cmp r3, r1
80001e6: d301 bcc.n 80001ec <__udivsi3+0xe4>
80001e8: 008b lsls r3, r1, #2
80001ea: 1ac0 subs r0, r0, r3
80001ec: 4152 adcs r2, r2
80001ee: 0843 lsrs r3, r0, #1
80001f0: 428b cmp r3, r1
80001f2: d301 bcc.n 80001f8 <__udivsi3+0xf0>
80001f4: 004b lsls r3, r1, #1
80001f6: 1ac0 subs r0, r0, r3
80001f8: 4152 adcs r2, r2
80001fa: 1a41 subs r1, r0, r1
80001fc: d200 bcs.n 8000200 <__udivsi3+0xf8>
80001fe: 4601 mov r1, r0
8000200: 4152 adcs r2, r2
8000202: 4610 mov r0, r2
8000204: 4770 bx lr
8000206: e7ff b.n 8000208 <__udivsi3+0x100>
8000208: b501 push {r0, lr}
800020a: 2000 movs r0, #0
800020c: f000 f806 bl 800021c <__aeabi_idiv0>
8000210: bd02 pop {r1, pc}
8000212: 46c0 nop ; (mov r8, r8)
08000214 <__aeabi_uidivmod>:
8000214: 2900 cmp r1, #0
8000216: d0f7 beq.n 8000208 <__udivsi3+0x100>
8000218: e776 b.n 8000108 <__udivsi3>
800021a: 4770 bx lr
0800021c <__aeabi_idiv0>:
800021c: 4770 bx lr
800021e: 46c0 nop ; (mov r8, r8)
08000220 <__aeabi_cdrcmple>:
8000220: 4684 mov ip, r0
8000222: 1c10 adds r0, r2, #0
8000224: 4662 mov r2, ip
8000226: 468c mov ip, r1
8000228: 1c19 adds r1, r3, #0
800022a: 4663 mov r3, ip
800022c: e000 b.n 8000230 <__aeabi_cdcmpeq>
800022e: 46c0 nop ; (mov r8, r8)
08000230 <__aeabi_cdcmpeq>:
8000230: b51f push {r0, r1, r2, r3, r4, lr}
8000232: f000 ff3f bl 80010b4 <__ledf2>
8000236: 2800 cmp r0, #0
8000238: d401 bmi.n 800023e <__aeabi_cdcmpeq+0xe>
800023a: 2100 movs r1, #0
800023c: 42c8 cmn r0, r1
800023e: bd1f pop {r0, r1, r2, r3, r4, pc}
08000240 <__aeabi_dcmpeq>:
8000240: b510 push {r4, lr}
8000242: f000 fe99 bl 8000f78 <__eqdf2>
8000246: 4240 negs r0, r0
8000248: 3001 adds r0, #1
800024a: bd10 pop {r4, pc}
0800024c <__aeabi_dcmplt>:
800024c: b510 push {r4, lr}
800024e: f000 ff31 bl 80010b4 <__ledf2>
8000252: 2800 cmp r0, #0
8000254: db01 blt.n 800025a <__aeabi_dcmplt+0xe>
8000256: 2000 movs r0, #0
8000258: bd10 pop {r4, pc}
800025a: 2001 movs r0, #1
800025c: bd10 pop {r4, pc}
800025e: 46c0 nop ; (mov r8, r8)
08000260 <__aeabi_dcmple>:
8000260: b510 push {r4, lr}
8000262: f000 ff27 bl 80010b4 <__ledf2>
8000266: 2800 cmp r0, #0
8000268: dd01 ble.n 800026e <__aeabi_dcmple+0xe>
800026a: 2000 movs r0, #0
800026c: bd10 pop {r4, pc}
800026e: 2001 movs r0, #1
8000270: bd10 pop {r4, pc}
8000272: 46c0 nop ; (mov r8, r8)
08000274 <__aeabi_dcmpgt>:
8000274: b510 push {r4, lr}
8000276: f000 feb9 bl 8000fec <__gedf2>
800027a: 2800 cmp r0, #0
800027c: dc01 bgt.n 8000282 <__aeabi_dcmpgt+0xe>
800027e: 2000 movs r0, #0
8000280: bd10 pop {r4, pc}
8000282: 2001 movs r0, #1
8000284: bd10 pop {r4, pc}
8000286: 46c0 nop ; (mov r8, r8)
08000288 <__aeabi_dcmpge>:
8000288: b510 push {r4, lr}
800028a: f000 feaf bl 8000fec <__gedf2>
800028e: 2800 cmp r0, #0
8000290: da01 bge.n 8000296 <__aeabi_dcmpge+0xe>
8000292: 2000 movs r0, #0
8000294: bd10 pop {r4, pc}
8000296: 2001 movs r0, #1
8000298: bd10 pop {r4, pc}
800029a: 46c0 nop ; (mov r8, r8)
0800029c <__aeabi_cfrcmple>:
800029c: 4684 mov ip, r0
800029e: 1c08 adds r0, r1, #0
80002a0: 4661 mov r1, ip
80002a2: e7ff b.n 80002a4 <__aeabi_cfcmpeq>
080002a4 <__aeabi_cfcmpeq>:
80002a4: b51f push {r0, r1, r2, r3, r4, lr}
80002a6: f000 fb03 bl 80008b0 <__lesf2>
80002aa: 2800 cmp r0, #0
80002ac: d401 bmi.n 80002b2 <__aeabi_cfcmpeq+0xe>
80002ae: 2100 movs r1, #0
80002b0: 42c8 cmn r0, r1
80002b2: bd1f pop {r0, r1, r2, r3, r4, pc}
080002b4 <__aeabi_fcmpeq>:
80002b4: b510 push {r4, lr}
80002b6: f000 fa95 bl 80007e4 <__eqsf2>
80002ba: 4240 negs r0, r0
80002bc: 3001 adds r0, #1
80002be: bd10 pop {r4, pc}
080002c0 <__aeabi_fcmplt>:
80002c0: b510 push {r4, lr}
80002c2: f000 faf5 bl 80008b0 <__lesf2>
80002c6: 2800 cmp r0, #0
80002c8: db01 blt.n 80002ce <__aeabi_fcmplt+0xe>
80002ca: 2000 movs r0, #0
80002cc: bd10 pop {r4, pc}
80002ce: 2001 movs r0, #1
80002d0: bd10 pop {r4, pc}
80002d2: 46c0 nop ; (mov r8, r8)
080002d4 <__aeabi_fcmple>:
80002d4: b510 push {r4, lr}
80002d6: f000 faeb bl 80008b0 <__lesf2>
80002da: 2800 cmp r0, #0
80002dc: dd01 ble.n 80002e2 <__aeabi_fcmple+0xe>
80002de: 2000 movs r0, #0
80002e0: bd10 pop {r4, pc}
80002e2: 2001 movs r0, #1
80002e4: bd10 pop {r4, pc}
80002e6: 46c0 nop ; (mov r8, r8)
080002e8 <__aeabi_fcmpgt>:
80002e8: b510 push {r4, lr}
80002ea: f000 faa1 bl 8000830 <__gesf2>
80002ee: 2800 cmp r0, #0
80002f0: dc01 bgt.n 80002f6 <__aeabi_fcmpgt+0xe>
80002f2: 2000 movs r0, #0
80002f4: bd10 pop {r4, pc}
80002f6: 2001 movs r0, #1
80002f8: bd10 pop {r4, pc}
80002fa: 46c0 nop ; (mov r8, r8)
080002fc <__aeabi_fcmpge>:
80002fc: b510 push {r4, lr}
80002fe: f000 fa97 bl 8000830 <__gesf2>
8000302: 2800 cmp r0, #0
8000304: da01 bge.n 800030a <__aeabi_fcmpge+0xe>
8000306: 2000 movs r0, #0
8000308: bd10 pop {r4, pc}
800030a: 2001 movs r0, #1
800030c: bd10 pop {r4, pc}
800030e: 46c0 nop ; (mov r8, r8)
08000310 <__aeabi_uldivmod>:
8000310: 2b00 cmp r3, #0
8000312: d111 bne.n 8000338 <__aeabi_uldivmod+0x28>
8000314: 2a00 cmp r2, #0
8000316: d10f bne.n 8000338 <__aeabi_uldivmod+0x28>
8000318: 2900 cmp r1, #0
800031a: d100 bne.n 800031e <__aeabi_uldivmod+0xe>
800031c: 2800 cmp r0, #0
800031e: d002 beq.n 8000326 <__aeabi_uldivmod+0x16>
8000320: 2100 movs r1, #0
8000322: 43c9 mvns r1, r1
8000324: 1c08 adds r0, r1, #0
8000326: b407 push {r0, r1, r2}
8000328: 4802 ldr r0, [pc, #8] ; (8000334 <__aeabi_uldivmod+0x24>)
800032a: a102 add r1, pc, #8 ; (adr r1, 8000334 <__aeabi_uldivmod+0x24>)
800032c: 1840 adds r0, r0, r1
800032e: 9002 str r0, [sp, #8]
8000330: bd03 pop {r0, r1, pc}
8000332: 46c0 nop ; (mov r8, r8)
8000334: fffffee9 .word 0xfffffee9
8000338: b403 push {r0, r1}
800033a: 4668 mov r0, sp
800033c: b501 push {r0, lr}
800033e: 9802 ldr r0, [sp, #8]
8000340: f000 f848 bl 80003d4 <__udivmoddi4>
8000344: 9b01 ldr r3, [sp, #4]
8000346: 469e mov lr, r3
8000348: b002 add sp, #8
800034a: bc0c pop {r2, r3}
800034c: 4770 bx lr
800034e: 46c0 nop ; (mov r8, r8)
08000350 <__aeabi_lmul>:
8000350: b5f0 push {r4, r5, r6, r7, lr}
8000352: 46ce mov lr, r9
8000354: 4647 mov r7, r8
8000356: 0415 lsls r5, r2, #16
8000358: 0c2d lsrs r5, r5, #16
800035a: 002e movs r6, r5
800035c: b580 push {r7, lr}
800035e: 0407 lsls r7, r0, #16
8000360: 0c14 lsrs r4, r2, #16
8000362: 0c3f lsrs r7, r7, #16
8000364: 4699 mov r9, r3
8000366: 0c03 lsrs r3, r0, #16
8000368: 437e muls r6, r7
800036a: 435d muls r5, r3
800036c: 4367 muls r7, r4
800036e: 4363 muls r3, r4
8000370: 197f adds r7, r7, r5
8000372: 0c34 lsrs r4, r6, #16
8000374: 19e4 adds r4, r4, r7
8000376: 469c mov ip, r3
8000378: 42a5 cmp r5, r4
800037a: d903 bls.n 8000384 <__aeabi_lmul+0x34>
800037c: 2380 movs r3, #128 ; 0x80
800037e: 025b lsls r3, r3, #9
8000380: 4698 mov r8, r3
8000382: 44c4 add ip, r8
8000384: 464b mov r3, r9
8000386: 4351 muls r1, r2
8000388: 4343 muls r3, r0
800038a: 0436 lsls r6, r6, #16
800038c: 0c36 lsrs r6, r6, #16
800038e: 0c25 lsrs r5, r4, #16
8000390: 0424 lsls r4, r4, #16
8000392: 4465 add r5, ip
8000394: 19a4 adds r4, r4, r6
8000396: 1859 adds r1, r3, r1
8000398: 1949 adds r1, r1, r5
800039a: 0020 movs r0, r4
800039c: bc0c pop {r2, r3}
800039e: 4690 mov r8, r2
80003a0: 4699 mov r9, r3
80003a2: bdf0 pop {r4, r5, r6, r7, pc}
080003a4 <__aeabi_f2uiz>:
80003a4: 219e movs r1, #158 ; 0x9e
80003a6: b510 push {r4, lr}
80003a8: 05c9 lsls r1, r1, #23
80003aa: 1c04 adds r4, r0, #0
80003ac: f7ff ffa6 bl 80002fc <__aeabi_fcmpge>
80003b0: 2800 cmp r0, #0
80003b2: d103 bne.n 80003bc <__aeabi_f2uiz+0x18>
80003b4: 1c20 adds r0, r4, #0
80003b6: f000 fd79 bl 8000eac <__aeabi_f2iz>
80003ba: bd10 pop {r4, pc}
80003bc: 219e movs r1, #158 ; 0x9e
80003be: 1c20 adds r0, r4, #0
80003c0: 05c9 lsls r1, r1, #23
80003c2: f000 fbd7 bl 8000b74 <__aeabi_fsub>
80003c6: f000 fd71 bl 8000eac <__aeabi_f2iz>
80003ca: 2380 movs r3, #128 ; 0x80
80003cc: 061b lsls r3, r3, #24
80003ce: 469c mov ip, r3
80003d0: 4460 add r0, ip
80003d2: e7f2 b.n 80003ba <__aeabi_f2uiz+0x16>
080003d4 <__udivmoddi4>:
80003d4: b5f0 push {r4, r5, r6, r7, lr}
80003d6: 4657 mov r7, sl
80003d8: 464e mov r6, r9
80003da: 4645 mov r5, r8
80003dc: 46de mov lr, fp
80003de: b5e0 push {r5, r6, r7, lr}
80003e0: 0004 movs r4, r0
80003e2: b083 sub sp, #12
80003e4: 000d movs r5, r1
80003e6: 4692 mov sl, r2
80003e8: 4699 mov r9, r3
80003ea: 428b cmp r3, r1
80003ec: d82f bhi.n 800044e <__udivmoddi4+0x7a>
80003ee: d02c beq.n 800044a <__udivmoddi4+0x76>
80003f0: 4649 mov r1, r9
80003f2: 4650 mov r0, sl
80003f4: f000 ff30 bl 8001258 <__clzdi2>
80003f8: 0029 movs r1, r5
80003fa: 0006 movs r6, r0
80003fc: 0020 movs r0, r4
80003fe: f000 ff2b bl 8001258 <__clzdi2>
8000402: 1a33 subs r3, r6, r0
8000404: 4698 mov r8, r3
8000406: 3b20 subs r3, #32
8000408: 469b mov fp, r3
800040a: d500 bpl.n 800040e <__udivmoddi4+0x3a>
800040c: e074 b.n 80004f8 <__udivmoddi4+0x124>
800040e: 4653 mov r3, sl
8000410: 465a mov r2, fp
8000412: 4093 lsls r3, r2
8000414: 001f movs r7, r3
8000416: 4653 mov r3, sl
8000418: 4642 mov r2, r8
800041a: 4093 lsls r3, r2
800041c: 001e movs r6, r3
800041e: 42af cmp r7, r5
8000420: d829 bhi.n 8000476 <__udivmoddi4+0xa2>
8000422: d026 beq.n 8000472 <__udivmoddi4+0x9e>
8000424: 465b mov r3, fp
8000426: 1ba4 subs r4, r4, r6
8000428: 41bd sbcs r5, r7
800042a: 2b00 cmp r3, #0
800042c: da00 bge.n 8000430 <__udivmoddi4+0x5c>
800042e: e079 b.n 8000524 <__udivmoddi4+0x150>
8000430: 2200 movs r2, #0
8000432: 2300 movs r3, #0
8000434: 9200 str r2, [sp, #0]
8000436: 9301 str r3, [sp, #4]
8000438: 2301 movs r3, #1
800043a: 465a mov r2, fp
800043c: 4093 lsls r3, r2
800043e: 9301 str r3, [sp, #4]
8000440: 2301 movs r3, #1
8000442: 4642 mov r2, r8
8000444: 4093 lsls r3, r2
8000446: 9300 str r3, [sp, #0]
8000448: e019 b.n 800047e <__udivmoddi4+0xaa>
800044a: 4282 cmp r2, r0
800044c: d9d0 bls.n 80003f0 <__udivmoddi4+0x1c>
800044e: 2200 movs r2, #0
8000450: 2300 movs r3, #0
8000452: 9200 str r2, [sp, #0]
8000454: 9301 str r3, [sp, #4]
8000456: 9b0c ldr r3, [sp, #48] ; 0x30
8000458: 2b00 cmp r3, #0
800045a: d001 beq.n 8000460 <__udivmoddi4+0x8c>
800045c: 601c str r4, [r3, #0]
800045e: 605d str r5, [r3, #4]
8000460: 9800 ldr r0, [sp, #0]
8000462: 9901 ldr r1, [sp, #4]
8000464: b003 add sp, #12
8000466: bc3c pop {r2, r3, r4, r5}
8000468: 4690 mov r8, r2
800046a: 4699 mov r9, r3
800046c: 46a2 mov sl, r4
800046e: 46ab mov fp, r5
8000470: bdf0 pop {r4, r5, r6, r7, pc}
8000472: 42a3 cmp r3, r4
8000474: d9d6 bls.n 8000424 <__udivmoddi4+0x50>
8000476: 2200 movs r2, #0
8000478: 2300 movs r3, #0
800047a: 9200 str r2, [sp, #0]
800047c: 9301 str r3, [sp, #4]
800047e: 4643 mov r3, r8
8000480: 2b00 cmp r3, #0
8000482: d0e8 beq.n 8000456 <__udivmoddi4+0x82>
8000484: 07fb lsls r3, r7, #31
8000486: 0872 lsrs r2, r6, #1
8000488: 431a orrs r2, r3
800048a: 4646 mov r6, r8
800048c: 087b lsrs r3, r7, #1
800048e: e00e b.n 80004ae <__udivmoddi4+0xda>
8000490: 42ab cmp r3, r5
8000492: d101 bne.n 8000498 <__udivmoddi4+0xc4>
8000494: 42a2 cmp r2, r4
8000496: d80c bhi.n 80004b2 <__udivmoddi4+0xde>
8000498: 1aa4 subs r4, r4, r2
800049a: 419d sbcs r5, r3
800049c: 2001 movs r0, #1
800049e: 1924 adds r4, r4, r4
80004a0: 416d adcs r5, r5
80004a2: 2100 movs r1, #0
80004a4: 3e01 subs r6, #1
80004a6: 1824 adds r4, r4, r0
80004a8: 414d adcs r5, r1
80004aa: 2e00 cmp r6, #0
80004ac: d006 beq.n 80004bc <__udivmoddi4+0xe8>
80004ae: 42ab cmp r3, r5
80004b0: d9ee bls.n 8000490 <__udivmoddi4+0xbc>
80004b2: 3e01 subs r6, #1
80004b4: 1924 adds r4, r4, r4
80004b6: 416d adcs r5, r5
80004b8: 2e00 cmp r6, #0
80004ba: d1f8 bne.n 80004ae <__udivmoddi4+0xda>
80004bc: 465b mov r3, fp
80004be: 9800 ldr r0, [sp, #0]
80004c0: 9901 ldr r1, [sp, #4]
80004c2: 1900 adds r0, r0, r4
80004c4: 4169 adcs r1, r5
80004c6: 2b00 cmp r3, #0
80004c8: db22 blt.n 8000510 <__udivmoddi4+0x13c>
80004ca: 002b movs r3, r5
80004cc: 465a mov r2, fp
80004ce: 40d3 lsrs r3, r2
80004d0: 002a movs r2, r5
80004d2: 4644 mov r4, r8
80004d4: 40e2 lsrs r2, r4
80004d6: 001c movs r4, r3
80004d8: 465b mov r3, fp
80004da: 0015 movs r5, r2
80004dc: 2b00 cmp r3, #0
80004de: db2c blt.n 800053a <__udivmoddi4+0x166>
80004e0: 0026 movs r6, r4
80004e2: 409e lsls r6, r3
80004e4: 0033 movs r3, r6
80004e6: 0026 movs r6, r4
80004e8: 4647 mov r7, r8
80004ea: 40be lsls r6, r7
80004ec: 0032 movs r2, r6
80004ee: 1a80 subs r0, r0, r2
80004f0: 4199 sbcs r1, r3
80004f2: 9000 str r0, [sp, #0]
80004f4: 9101 str r1, [sp, #4]
80004f6: e7ae b.n 8000456 <__udivmoddi4+0x82>
80004f8: 4642 mov r2, r8
80004fa: 2320 movs r3, #32
80004fc: 1a9b subs r3, r3, r2
80004fe: 4652 mov r2, sl
8000500: 40da lsrs r2, r3
8000502: 4641 mov r1, r8
8000504: 0013 movs r3, r2
8000506: 464a mov r2, r9
8000508: 408a lsls r2, r1
800050a: 0017 movs r7, r2
800050c: 431f orrs r7, r3
800050e: e782 b.n 8000416 <__udivmoddi4+0x42>
8000510: 4642 mov r2, r8
8000512: 2320 movs r3, #32
8000514: 1a9b subs r3, r3, r2
8000516: 002a movs r2, r5
8000518: 4646 mov r6, r8
800051a: 409a lsls r2, r3
800051c: 0023 movs r3, r4
800051e: 40f3 lsrs r3, r6
8000520: 4313 orrs r3, r2
8000522: e7d5 b.n 80004d0 <__udivmoddi4+0xfc>
8000524: 4642 mov r2, r8
8000526: 2320 movs r3, #32
8000528: 2100 movs r1, #0
800052a: 1a9b subs r3, r3, r2
800052c: 2200 movs r2, #0
800052e: 9100 str r1, [sp, #0]
8000530: 9201 str r2, [sp, #4]
8000532: 2201 movs r2, #1
8000534: 40da lsrs r2, r3
8000536: 9201 str r2, [sp, #4]
8000538: e782 b.n 8000440 <__udivmoddi4+0x6c>
800053a: 4642 mov r2, r8
800053c: 2320 movs r3, #32
800053e: 0026 movs r6, r4
8000540: 1a9b subs r3, r3, r2
8000542: 40de lsrs r6, r3
8000544: 002f movs r7, r5
8000546: 46b4 mov ip, r6
8000548: 4097 lsls r7, r2
800054a: 4666 mov r6, ip
800054c: 003b movs r3, r7
800054e: 4333 orrs r3, r6
8000550: e7c9 b.n 80004e6 <__udivmoddi4+0x112>
8000552: 46c0 nop ; (mov r8, r8)
08000554 <__aeabi_fdiv>:
8000554: b5f0 push {r4, r5, r6, r7, lr}
8000556: 4657 mov r7, sl
8000558: 464e mov r6, r9
800055a: 46de mov lr, fp
800055c: 4645 mov r5, r8
800055e: b5e0 push {r5, r6, r7, lr}
8000560: 0244 lsls r4, r0, #9
8000562: 0043 lsls r3, r0, #1
8000564: 0fc6 lsrs r6, r0, #31
8000566: b083 sub sp, #12
8000568: 1c0f adds r7, r1, #0
800056a: 0a64 lsrs r4, r4, #9
800056c: 0e1b lsrs r3, r3, #24
800056e: 46b2 mov sl, r6
8000570: d053 beq.n 800061a <__aeabi_fdiv+0xc6>
8000572: 2bff cmp r3, #255 ; 0xff
8000574: d027 beq.n 80005c6 <__aeabi_fdiv+0x72>
8000576: 2280 movs r2, #128 ; 0x80
8000578: 00e4 lsls r4, r4, #3
800057a: 04d2 lsls r2, r2, #19
800057c: 4314 orrs r4, r2
800057e: 227f movs r2, #127 ; 0x7f
8000580: 4252 negs r2, r2
8000582: 4690 mov r8, r2
8000584: 4498 add r8, r3
8000586: 2300 movs r3, #0
8000588: 4699 mov r9, r3
800058a: 469b mov fp, r3
800058c: 027d lsls r5, r7, #9
800058e: 0078 lsls r0, r7, #1
8000590: 0ffb lsrs r3, r7, #31
8000592: 0a6d lsrs r5, r5, #9
8000594: 0e00 lsrs r0, r0, #24
8000596: 9300 str r3, [sp, #0]
8000598: d024 beq.n 80005e4 <__aeabi_fdiv+0x90>
800059a: 28ff cmp r0, #255 ; 0xff
800059c: d046 beq.n 800062c <__aeabi_fdiv+0xd8>
800059e: 2380 movs r3, #128 ; 0x80
80005a0: 2100 movs r1, #0
80005a2: 00ed lsls r5, r5, #3
80005a4: 04db lsls r3, r3, #19
80005a6: 431d orrs r5, r3
80005a8: 387f subs r0, #127 ; 0x7f
80005aa: 4647 mov r7, r8
80005ac: 1a38 subs r0, r7, r0
80005ae: 464f mov r7, r9
80005b0: 430f orrs r7, r1
80005b2: 00bf lsls r7, r7, #2
80005b4: 46b9 mov r9, r7
80005b6: 0033 movs r3, r6
80005b8: 9a00 ldr r2, [sp, #0]
80005ba: 4f87 ldr r7, [pc, #540] ; (80007d8 <__aeabi_fdiv+0x284>)
80005bc: 4053 eors r3, r2
80005be: 464a mov r2, r9
80005c0: 58ba ldr r2, [r7, r2]
80005c2: 9301 str r3, [sp, #4]
80005c4: 4697 mov pc, r2
80005c6: 2c00 cmp r4, #0
80005c8: d14e bne.n 8000668 <__aeabi_fdiv+0x114>
80005ca: 2308 movs r3, #8
80005cc: 4699 mov r9, r3
80005ce: 33f7 adds r3, #247 ; 0xf7
80005d0: 4698 mov r8, r3
80005d2: 3bfd subs r3, #253 ; 0xfd
80005d4: 469b mov fp, r3
80005d6: 027d lsls r5, r7, #9
80005d8: 0078 lsls r0, r7, #1
80005da: 0ffb lsrs r3, r7, #31
80005dc: 0a6d lsrs r5, r5, #9
80005de: 0e00 lsrs r0, r0, #24
80005e0: 9300 str r3, [sp, #0]
80005e2: d1da bne.n 800059a <__aeabi_fdiv+0x46>
80005e4: 2d00 cmp r5, #0
80005e6: d126 bne.n 8000636 <__aeabi_fdiv+0xe2>
80005e8: 2000 movs r0, #0
80005ea: 2101 movs r1, #1
80005ec: 0033 movs r3, r6
80005ee: 9a00 ldr r2, [sp, #0]
80005f0: 4f7a ldr r7, [pc, #488] ; (80007dc <__aeabi_fdiv+0x288>)
80005f2: 4053 eors r3, r2
80005f4: 4642 mov r2, r8
80005f6: 1a10 subs r0, r2, r0
80005f8: 464a mov r2, r9
80005fa: 430a orrs r2, r1
80005fc: 0092 lsls r2, r2, #2
80005fe: 58ba ldr r2, [r7, r2]
8000600: 001d movs r5, r3
8000602: 4697 mov pc, r2
8000604: 9b00 ldr r3, [sp, #0]
8000606: 002c movs r4, r5
8000608: 469a mov sl, r3
800060a: 468b mov fp, r1
800060c: 465b mov r3, fp
800060e: 2b02 cmp r3, #2
8000610: d131 bne.n 8000676 <__aeabi_fdiv+0x122>
8000612: 4653 mov r3, sl
8000614: 21ff movs r1, #255 ; 0xff
8000616: 2400 movs r4, #0
8000618: e038 b.n 800068c <__aeabi_fdiv+0x138>
800061a: 2c00 cmp r4, #0
800061c: d117 bne.n 800064e <__aeabi_fdiv+0xfa>
800061e: 2304 movs r3, #4
8000620: 4699 mov r9, r3
8000622: 2300 movs r3, #0
8000624: 4698 mov r8, r3
8000626: 3301 adds r3, #1
8000628: 469b mov fp, r3
800062a: e7af b.n 800058c <__aeabi_fdiv+0x38>
800062c: 20ff movs r0, #255 ; 0xff
800062e: 2d00 cmp r5, #0
8000630: d10b bne.n 800064a <__aeabi_fdiv+0xf6>
8000632: 2102 movs r1, #2
8000634: e7da b.n 80005ec <__aeabi_fdiv+0x98>
8000636: 0028 movs r0, r5
8000638: f000 fdf0 bl 800121c <__clzsi2>
800063c: 1f43 subs r3, r0, #5
800063e: 409d lsls r5, r3
8000640: 2376 movs r3, #118 ; 0x76
8000642: 425b negs r3, r3
8000644: 1a18 subs r0, r3, r0
8000646: 2100 movs r1, #0
8000648: e7af b.n 80005aa <__aeabi_fdiv+0x56>
800064a: 2103 movs r1, #3
800064c: e7ad b.n 80005aa <__aeabi_fdiv+0x56>
800064e: 0020 movs r0, r4
8000650: f000 fde4 bl 800121c <__clzsi2>
8000654: 1f43 subs r3, r0, #5
8000656: 409c lsls r4, r3
8000658: 2376 movs r3, #118 ; 0x76
800065a: 425b negs r3, r3
800065c: 1a1b subs r3, r3, r0
800065e: 4698 mov r8, r3
8000660: 2300 movs r3, #0
8000662: 4699 mov r9, r3
8000664: 469b mov fp, r3
8000666: e791 b.n 800058c <__aeabi_fdiv+0x38>
8000668: 230c movs r3, #12
800066a: 4699 mov r9, r3
800066c: 33f3 adds r3, #243 ; 0xf3
800066e: 4698 mov r8, r3
8000670: 3bfc subs r3, #252 ; 0xfc
8000672: 469b mov fp, r3
8000674: e78a b.n 800058c <__aeabi_fdiv+0x38>
8000676: 2b03 cmp r3, #3
8000678: d100 bne.n 800067c <__aeabi_fdiv+0x128>
800067a: e0a5 b.n 80007c8 <__aeabi_fdiv+0x274>
800067c: 4655 mov r5, sl
800067e: 2b01 cmp r3, #1
8000680: d000 beq.n 8000684 <__aeabi_fdiv+0x130>
8000682: e081 b.n 8000788 <__aeabi_fdiv+0x234>
8000684: 2301 movs r3, #1
8000686: 2100 movs r1, #0
8000688: 2400 movs r4, #0
800068a: 402b ands r3, r5
800068c: 0264 lsls r4, r4, #9
800068e: 05c9 lsls r1, r1, #23
8000690: 0a60 lsrs r0, r4, #9
8000692: 07db lsls r3, r3, #31
8000694: 4308 orrs r0, r1
8000696: 4318 orrs r0, r3
8000698: b003 add sp, #12
800069a: bc3c pop {r2, r3, r4, r5}
800069c: 4690 mov r8, r2
800069e: 4699 mov r9, r3
80006a0: 46a2 mov sl, r4
80006a2: 46ab mov fp, r5
80006a4: bdf0 pop {r4, r5, r6, r7, pc}
80006a6: 2480 movs r4, #128 ; 0x80
80006a8: 2300 movs r3, #0
80006aa: 03e4 lsls r4, r4, #15
80006ac: 21ff movs r1, #255 ; 0xff
80006ae: e7ed b.n 800068c <__aeabi_fdiv+0x138>
80006b0: 21ff movs r1, #255 ; 0xff
80006b2: 2400 movs r4, #0
80006b4: e7ea b.n 800068c <__aeabi_fdiv+0x138>
80006b6: 2301 movs r3, #1
80006b8: 1a59 subs r1, r3, r1
80006ba: 291b cmp r1, #27
80006bc: dd66 ble.n 800078c <__aeabi_fdiv+0x238>
80006be: 9a01 ldr r2, [sp, #4]
80006c0: 4013 ands r3, r2
80006c2: 2100 movs r1, #0
80006c4: 2400 movs r4, #0
80006c6: e7e1 b.n 800068c <__aeabi_fdiv+0x138>
80006c8: 2380 movs r3, #128 ; 0x80
80006ca: 03db lsls r3, r3, #15
80006cc: 421c tst r4, r3
80006ce: d038 beq.n 8000742 <__aeabi_fdiv+0x1ee>
80006d0: 421d tst r5, r3
80006d2: d051 beq.n 8000778 <__aeabi_fdiv+0x224>
80006d4: 431c orrs r4, r3
80006d6: 0264 lsls r4, r4, #9
80006d8: 0a64 lsrs r4, r4, #9
80006da: 0033 movs r3, r6
80006dc: 21ff movs r1, #255 ; 0xff
80006de: e7d5 b.n 800068c <__aeabi_fdiv+0x138>
80006e0: 0163 lsls r3, r4, #5
80006e2: 016c lsls r4, r5, #5
80006e4: 42a3 cmp r3, r4
80006e6: d23b bcs.n 8000760 <__aeabi_fdiv+0x20c>
80006e8: 261b movs r6, #27
80006ea: 2100 movs r1, #0
80006ec: 3801 subs r0, #1
80006ee: 2501 movs r5, #1
80006f0: 001f movs r7, r3
80006f2: 0049 lsls r1, r1, #1
80006f4: 005b lsls r3, r3, #1
80006f6: 2f00 cmp r7, #0
80006f8: db01 blt.n 80006fe <__aeabi_fdiv+0x1aa>
80006fa: 429c cmp r4, r3
80006fc: d801 bhi.n 8000702 <__aeabi_fdiv+0x1ae>
80006fe: 1b1b subs r3, r3, r4
8000700: 4329 orrs r1, r5
8000702: 3e01 subs r6, #1
8000704: 2e00 cmp r6, #0
8000706: d1f3 bne.n 80006f0 <__aeabi_fdiv+0x19c>
8000708: 001c movs r4, r3
800070a: 1e63 subs r3, r4, #1
800070c: 419c sbcs r4, r3
800070e: 430c orrs r4, r1
8000710: 0001 movs r1, r0
8000712: 317f adds r1, #127 ; 0x7f
8000714: 2900 cmp r1, #0
8000716: ddce ble.n 80006b6 <__aeabi_fdiv+0x162>
8000718: 0763 lsls r3, r4, #29
800071a: d004 beq.n 8000726 <__aeabi_fdiv+0x1d2>
800071c: 230f movs r3, #15
800071e: 4023 ands r3, r4
8000720: 2b04 cmp r3, #4
8000722: d000 beq.n 8000726 <__aeabi_fdiv+0x1d2>
8000724: 3404 adds r4, #4
8000726: 0123 lsls r3, r4, #4
8000728: d503 bpl.n 8000732 <__aeabi_fdiv+0x1de>
800072a: 0001 movs r1, r0
800072c: 4b2c ldr r3, [pc, #176] ; (80007e0 <__aeabi_fdiv+0x28c>)
800072e: 3180 adds r1, #128 ; 0x80
8000730: 401c ands r4, r3
8000732: 29fe cmp r1, #254 ; 0xfe
8000734: dd0d ble.n 8000752 <__aeabi_fdiv+0x1fe>
8000736: 2301 movs r3, #1
8000738: 9a01 ldr r2, [sp, #4]
800073a: 21ff movs r1, #255 ; 0xff
800073c: 4013 ands r3, r2
800073e: 2400 movs r4, #0
8000740: e7a4 b.n 800068c <__aeabi_fdiv+0x138>
8000742: 2380 movs r3, #128 ; 0x80
8000744: 03db lsls r3, r3, #15
8000746: 431c orrs r4, r3
8000748: 0264 lsls r4, r4, #9
800074a: 0a64 lsrs r4, r4, #9
800074c: 0033 movs r3, r6
800074e: 21ff movs r1, #255 ; 0xff
8000750: e79c b.n 800068c <__aeabi_fdiv+0x138>
8000752: 2301 movs r3, #1
8000754: 9a01 ldr r2, [sp, #4]
8000756: 01a4 lsls r4, r4, #6
8000758: 0a64 lsrs r4, r4, #9
800075a: b2c9 uxtb r1, r1
800075c: 4013 ands r3, r2
800075e: e795 b.n 800068c <__aeabi_fdiv+0x138>
8000760: 1b1b subs r3, r3, r4
8000762: 261a movs r6, #26
8000764: 2101 movs r1, #1
8000766: e7c2 b.n 80006ee <__aeabi_fdiv+0x19a>
8000768: 9b00 ldr r3, [sp, #0]
800076a: 468b mov fp, r1
800076c: 469a mov sl, r3
800076e: 2400 movs r4, #0
8000770: e74c b.n 800060c <__aeabi_fdiv+0xb8>
8000772: 0263 lsls r3, r4, #9
8000774: d5e5 bpl.n 8000742 <__aeabi_fdiv+0x1ee>
8000776: 2500 movs r5, #0
8000778: 2480 movs r4, #128 ; 0x80
800077a: 03e4 lsls r4, r4, #15
800077c: 432c orrs r4, r5
800077e: 0264 lsls r4, r4, #9
8000780: 0a64 lsrs r4, r4, #9
8000782: 9b00 ldr r3, [sp, #0]
8000784: 21ff movs r1, #255 ; 0xff
8000786: e781 b.n 800068c <__aeabi_fdiv+0x138>
8000788: 9501 str r5, [sp, #4]
800078a: e7c1 b.n 8000710 <__aeabi_fdiv+0x1bc>
800078c: 0023 movs r3, r4
800078e: 2020 movs r0, #32
8000790: 40cb lsrs r3, r1
8000792: 1a41 subs r1, r0, r1
8000794: 408c lsls r4, r1
8000796: 1e61 subs r1, r4, #1
8000798: 418c sbcs r4, r1
800079a: 431c orrs r4, r3
800079c: 0763 lsls r3, r4, #29
800079e: d004 beq.n 80007aa <__aeabi_fdiv+0x256>
80007a0: 230f movs r3, #15
80007a2: 4023 ands r3, r4
80007a4: 2b04 cmp r3, #4
80007a6: d000 beq.n 80007aa <__aeabi_fdiv+0x256>
80007a8: 3404 adds r4, #4
80007aa: 0163 lsls r3, r4, #5
80007ac: d505 bpl.n 80007ba <__aeabi_fdiv+0x266>
80007ae: 2301 movs r3, #1
80007b0: 9a01 ldr r2, [sp, #4]
80007b2: 2101 movs r1, #1
80007b4: 4013 ands r3, r2
80007b6: 2400 movs r4, #0
80007b8: e768 b.n 800068c <__aeabi_fdiv+0x138>
80007ba: 2301 movs r3, #1
80007bc: 9a01 ldr r2, [sp, #4]
80007be: 01a4 lsls r4, r4, #6
80007c0: 0a64 lsrs r4, r4, #9
80007c2: 4013 ands r3, r2
80007c4: 2100 movs r1, #0
80007c6: e761 b.n 800068c <__aeabi_fdiv+0x138>
80007c8: 2380 movs r3, #128 ; 0x80
80007ca: 03db lsls r3, r3, #15
80007cc: 431c orrs r4, r3
80007ce: 0264 lsls r4, r4, #9
80007d0: 0a64 lsrs r4, r4, #9
80007d2: 4653 mov r3, sl
80007d4: 21ff movs r1, #255 ; 0xff
80007d6: e759 b.n 800068c <__aeabi_fdiv+0x138>
80007d8: 08006fe8 .word 0x08006fe8
80007dc: 08007028 .word 0x08007028
80007e0: f7ffffff .word 0xf7ffffff
080007e4 <__eqsf2>:
80007e4: b570 push {r4, r5, r6, lr}
80007e6: 0042 lsls r2, r0, #1
80007e8: 0245 lsls r5, r0, #9
80007ea: 024e lsls r6, r1, #9
80007ec: 004c lsls r4, r1, #1
80007ee: 0fc3 lsrs r3, r0, #31
80007f0: 0a6d lsrs r5, r5, #9
80007f2: 0e12 lsrs r2, r2, #24
80007f4: 0a76 lsrs r6, r6, #9
80007f6: 0e24 lsrs r4, r4, #24
80007f8: 0fc9 lsrs r1, r1, #31
80007fa: 2001 movs r0, #1
80007fc: 2aff cmp r2, #255 ; 0xff
80007fe: d006 beq.n 800080e <__eqsf2+0x2a>
8000800: 2cff cmp r4, #255 ; 0xff
8000802: d003 beq.n 800080c <__eqsf2+0x28>
8000804: 42a2 cmp r2, r4
8000806: d101 bne.n 800080c <__eqsf2+0x28>
8000808: 42b5 cmp r5, r6
800080a: d006 beq.n 800081a <__eqsf2+0x36>
800080c: bd70 pop {r4, r5, r6, pc}
800080e: 2d00 cmp r5, #0
8000810: d1fc bne.n 800080c <__eqsf2+0x28>
8000812: 2cff cmp r4, #255 ; 0xff
8000814: d1fa bne.n 800080c <__eqsf2+0x28>
8000816: 2e00 cmp r6, #0
8000818: d1f8 bne.n 800080c <__eqsf2+0x28>
800081a: 428b cmp r3, r1
800081c: d006 beq.n 800082c <__eqsf2+0x48>
800081e: 2001 movs r0, #1
8000820: 2a00 cmp r2, #0
8000822: d1f3 bne.n 800080c <__eqsf2+0x28>
8000824: 0028 movs r0, r5
8000826: 1e45 subs r5, r0, #1
8000828: 41a8 sbcs r0, r5
800082a: e7ef b.n 800080c <__eqsf2+0x28>
800082c: 2000 movs r0, #0
800082e: e7ed b.n 800080c <__eqsf2+0x28>
08000830 <__gesf2>:
8000830: b5f0 push {r4, r5, r6, r7, lr}
8000832: 0042 lsls r2, r0, #1
8000834: 0245 lsls r5, r0, #9
8000836: 024c lsls r4, r1, #9
8000838: 0fc3 lsrs r3, r0, #31
800083a: 0048 lsls r0, r1, #1
800083c: 0a6d lsrs r5, r5, #9
800083e: 0e12 lsrs r2, r2, #24
8000840: 0a64 lsrs r4, r4, #9
8000842: 0e00 lsrs r0, r0, #24
8000844: 0fc9 lsrs r1, r1, #31
8000846: 2aff cmp r2, #255 ; 0xff
8000848: d01e beq.n 8000888 <__gesf2+0x58>
800084a: 28ff cmp r0, #255 ; 0xff
800084c: d021 beq.n 8000892 <__gesf2+0x62>
800084e: 2a00 cmp r2, #0
8000850: d10a bne.n 8000868 <__gesf2+0x38>
8000852: 426e negs r6, r5
8000854: 416e adcs r6, r5
8000856: b2f6 uxtb r6, r6
8000858: 2800 cmp r0, #0
800085a: d10f bne.n 800087c <__gesf2+0x4c>
800085c: 2c00 cmp r4, #0
800085e: d10d bne.n 800087c <__gesf2+0x4c>
8000860: 2000 movs r0, #0
8000862: 2d00 cmp r5, #0
8000864: d009 beq.n 800087a <__gesf2+0x4a>
8000866: e005 b.n 8000874 <__gesf2+0x44>
8000868: 2800 cmp r0, #0
800086a: d101 bne.n 8000870 <__gesf2+0x40>
800086c: 2c00 cmp r4, #0
800086e: d001 beq.n 8000874 <__gesf2+0x44>
8000870: 428b cmp r3, r1
8000872: d011 beq.n 8000898 <__gesf2+0x68>
8000874: 2101 movs r1, #1
8000876: 4258 negs r0, r3
8000878: 4308 orrs r0, r1
800087a: bdf0 pop {r4, r5, r6, r7, pc}
800087c: 2e00 cmp r6, #0
800087e: d0f7 beq.n 8000870 <__gesf2+0x40>
8000880: 2001 movs r0, #1
8000882: 3901 subs r1, #1
8000884: 4308 orrs r0, r1
8000886: e7f8 b.n 800087a <__gesf2+0x4a>
8000888: 2d00 cmp r5, #0
800088a: d0de beq.n 800084a <__gesf2+0x1a>
800088c: 2002 movs r0, #2
800088e: 4240 negs r0, r0
8000890: e7f3 b.n 800087a <__gesf2+0x4a>
8000892: 2c00 cmp r4, #0
8000894: d0db beq.n 800084e <__gesf2+0x1e>
8000896: e7f9 b.n 800088c <__gesf2+0x5c>
8000898: 4282 cmp r2, r0
800089a: dceb bgt.n 8000874 <__gesf2+0x44>
800089c: db04 blt.n 80008a8 <__gesf2+0x78>
800089e: 42a5 cmp r5, r4
80008a0: d8e8 bhi.n 8000874 <__gesf2+0x44>
80008a2: 2000 movs r0, #0
80008a4: 42a5 cmp r5, r4
80008a6: d2e8 bcs.n 800087a <__gesf2+0x4a>
80008a8: 2101 movs r1, #1
80008aa: 1e58 subs r0, r3, #1
80008ac: 4308 orrs r0, r1
80008ae: e7e4 b.n 800087a <__gesf2+0x4a>
080008b0 <__lesf2>:
80008b0: b5f0 push {r4, r5, r6, r7, lr}
80008b2: 0042 lsls r2, r0, #1
80008b4: 024d lsls r5, r1, #9
80008b6: 004c lsls r4, r1, #1
80008b8: 0246 lsls r6, r0, #9
80008ba: 0a76 lsrs r6, r6, #9
80008bc: 0e12 lsrs r2, r2, #24
80008be: 0fc3 lsrs r3, r0, #31
80008c0: 0a6d lsrs r5, r5, #9
80008c2: 0e24 lsrs r4, r4, #24
80008c4: 0fc9 lsrs r1, r1, #31
80008c6: 2aff cmp r2, #255 ; 0xff
80008c8: d016 beq.n 80008f8 <__lesf2+0x48>
80008ca: 2cff cmp r4, #255 ; 0xff
80008cc: d018 beq.n 8000900 <__lesf2+0x50>
80008ce: 2a00 cmp r2, #0
80008d0: d10a bne.n 80008e8 <__lesf2+0x38>
80008d2: 4270 negs r0, r6
80008d4: 4170 adcs r0, r6
80008d6: b2c0 uxtb r0, r0
80008d8: 2c00 cmp r4, #0
80008da: d015 beq.n 8000908 <__lesf2+0x58>
80008dc: 2800 cmp r0, #0
80008de: d005 beq.n 80008ec <__lesf2+0x3c>
80008e0: 2001 movs r0, #1
80008e2: 3901 subs r1, #1
80008e4: 4308 orrs r0, r1
80008e6: bdf0 pop {r4, r5, r6, r7, pc}
80008e8: 2c00 cmp r4, #0
80008ea: d013 beq.n 8000914 <__lesf2+0x64>
80008ec: 4299 cmp r1, r3
80008ee: d014 beq.n 800091a <__lesf2+0x6a>
80008f0: 2001 movs r0, #1
80008f2: 425b negs r3, r3
80008f4: 4318 orrs r0, r3
80008f6: e7f6 b.n 80008e6 <__lesf2+0x36>
80008f8: 2002 movs r0, #2
80008fa: 2e00 cmp r6, #0
80008fc: d1f3 bne.n 80008e6 <__lesf2+0x36>
80008fe: e7e4 b.n 80008ca <__lesf2+0x1a>
8000900: 2002 movs r0, #2
8000902: 2d00 cmp r5, #0
8000904: d1ef bne.n 80008e6 <__lesf2+0x36>
8000906: e7e2 b.n 80008ce <__lesf2+0x1e>
8000908: 2d00 cmp r5, #0
800090a: d1e7 bne.n 80008dc <__lesf2+0x2c>
800090c: 2000 movs r0, #0
800090e: 2e00 cmp r6, #0
8000910: d0e9 beq.n 80008e6 <__lesf2+0x36>
8000912: e7ed b.n 80008f0 <__lesf2+0x40>
8000914: 2d00 cmp r5, #0
8000916: d1e9 bne.n 80008ec <__lesf2+0x3c>
8000918: e7ea b.n 80008f0 <__lesf2+0x40>
800091a: 42a2 cmp r2, r4
800091c: dc06 bgt.n 800092c <__lesf2+0x7c>
800091e: dbdf blt.n 80008e0 <__lesf2+0x30>
8000920: 42ae cmp r6, r5
8000922: d803 bhi.n 800092c <__lesf2+0x7c>
8000924: 2000 movs r0, #0
8000926: 42ae cmp r6, r5
8000928: d3da bcc.n 80008e0 <__lesf2+0x30>
800092a: e7dc b.n 80008e6 <__lesf2+0x36>
800092c: 2001 movs r0, #1
800092e: 4249 negs r1, r1
8000930: 4308 orrs r0, r1
8000932: e7d8 b.n 80008e6 <__lesf2+0x36>
08000934 <__aeabi_fmul>:
8000934: b5f8 push {r3, r4, r5, r6, r7, lr}
8000936: 4657 mov r7, sl
8000938: 464e mov r6, r9
800093a: 4645 mov r5, r8
800093c: 46de mov lr, fp
800093e: b5e0 push {r5, r6, r7, lr}
8000940: 0247 lsls r7, r0, #9
8000942: 0046 lsls r6, r0, #1
8000944: 4688 mov r8, r1
8000946: 0a7f lsrs r7, r7, #9
8000948: 0e36 lsrs r6, r6, #24
800094a: 0fc4 lsrs r4, r0, #31
800094c: 2e00 cmp r6, #0
800094e: d047 beq.n 80009e0 <__aeabi_fmul+0xac>
8000950: 2eff cmp r6, #255 ; 0xff
8000952: d024 beq.n 800099e <__aeabi_fmul+0x6a>
8000954: 00fb lsls r3, r7, #3
8000956: 2780 movs r7, #128 ; 0x80
8000958: 04ff lsls r7, r7, #19
800095a: 431f orrs r7, r3
800095c: 2300 movs r3, #0
800095e: 4699 mov r9, r3
8000960: 469a mov sl, r3
8000962: 3e7f subs r6, #127 ; 0x7f
8000964: 4643 mov r3, r8
8000966: 025d lsls r5, r3, #9
8000968: 0058 lsls r0, r3, #1
800096a: 0fdb lsrs r3, r3, #31
800096c: 0a6d lsrs r5, r5, #9
800096e: 0e00 lsrs r0, r0, #24
8000970: 4698 mov r8, r3
8000972: d043 beq.n 80009fc <__aeabi_fmul+0xc8>
8000974: 28ff cmp r0, #255 ; 0xff
8000976: d03b beq.n 80009f0 <__aeabi_fmul+0xbc>
8000978: 00eb lsls r3, r5, #3
800097a: 2580 movs r5, #128 ; 0x80
800097c: 2200 movs r2, #0
800097e: 04ed lsls r5, r5, #19
8000980: 431d orrs r5, r3
8000982: 387f subs r0, #127 ; 0x7f
8000984: 1836 adds r6, r6, r0
8000986: 1c73 adds r3, r6, #1
8000988: 4641 mov r1, r8
800098a: 469b mov fp, r3
800098c: 464b mov r3, r9
800098e: 4061 eors r1, r4
8000990: 4313 orrs r3, r2
8000992: 2b0f cmp r3, #15
8000994: d864 bhi.n 8000a60 <__aeabi_fmul+0x12c>
8000996: 4875 ldr r0, [pc, #468] ; (8000b6c <__aeabi_fmul+0x238>)
8000998: 009b lsls r3, r3, #2
800099a: 58c3 ldr r3, [r0, r3]
800099c: 469f mov pc, r3
800099e: 2f00 cmp r7, #0
80009a0: d142 bne.n 8000a28 <__aeabi_fmul+0xf4>
80009a2: 2308 movs r3, #8
80009a4: 4699 mov r9, r3
80009a6: 3b06 subs r3, #6
80009a8: 26ff movs r6, #255 ; 0xff
80009aa: 469a mov sl, r3
80009ac: e7da b.n 8000964 <__aeabi_fmul+0x30>
80009ae: 4641 mov r1, r8
80009b0: 2a02 cmp r2, #2
80009b2: d028 beq.n 8000a06 <__aeabi_fmul+0xd2>
80009b4: 2a03 cmp r2, #3
80009b6: d100 bne.n 80009ba <__aeabi_fmul+0x86>
80009b8: e0ce b.n 8000b58 <__aeabi_fmul+0x224>
80009ba: 2a01 cmp r2, #1
80009bc: d000 beq.n 80009c0 <__aeabi_fmul+0x8c>
80009be: e0ac b.n 8000b1a <__aeabi_fmul+0x1e6>
80009c0: 4011 ands r1, r2
80009c2: 2000 movs r0, #0
80009c4: 2200 movs r2, #0
80009c6: b2cc uxtb r4, r1
80009c8: 0240 lsls r0, r0, #9
80009ca: 05d2 lsls r2, r2, #23
80009cc: 0a40 lsrs r0, r0, #9
80009ce: 07e4 lsls r4, r4, #31
80009d0: 4310 orrs r0, r2
80009d2: 4320 orrs r0, r4
80009d4: bc3c pop {r2, r3, r4, r5}
80009d6: 4690 mov r8, r2
80009d8: 4699 mov r9, r3
80009da: 46a2 mov sl, r4
80009dc: 46ab mov fp, r5
80009de: bdf8 pop {r3, r4, r5, r6, r7, pc}
80009e0: 2f00 cmp r7, #0
80009e2: d115 bne.n 8000a10 <__aeabi_fmul+0xdc>
80009e4: 2304 movs r3, #4
80009e6: 4699 mov r9, r3
80009e8: 3b03 subs r3, #3
80009ea: 2600 movs r6, #0
80009ec: 469a mov sl, r3
80009ee: e7b9 b.n 8000964 <__aeabi_fmul+0x30>
80009f0: 20ff movs r0, #255 ; 0xff
80009f2: 2202 movs r2, #2
80009f4: 2d00 cmp r5, #0
80009f6: d0c5 beq.n 8000984 <__aeabi_fmul+0x50>
80009f8: 2203 movs r2, #3
80009fa: e7c3 b.n 8000984 <__aeabi_fmul+0x50>
80009fc: 2d00 cmp r5, #0
80009fe: d119 bne.n 8000a34 <__aeabi_fmul+0x100>
8000a00: 2000 movs r0, #0
8000a02: 2201 movs r2, #1
8000a04: e7be b.n 8000984 <__aeabi_fmul+0x50>
8000a06: 2401 movs r4, #1
8000a08: 22ff movs r2, #255 ; 0xff
8000a0a: 400c ands r4, r1
8000a0c: 2000 movs r0, #0
8000a0e: e7db b.n 80009c8 <__aeabi_fmul+0x94>
8000a10: 0038 movs r0, r7
8000a12: f000 fc03 bl 800121c <__clzsi2>
8000a16: 2676 movs r6, #118 ; 0x76
8000a18: 1f43 subs r3, r0, #5
8000a1a: 409f lsls r7, r3
8000a1c: 2300 movs r3, #0
8000a1e: 4276 negs r6, r6
8000a20: 1a36 subs r6, r6, r0
8000a22: 4699 mov r9, r3
8000a24: 469a mov sl, r3
8000a26: e79d b.n 8000964 <__aeabi_fmul+0x30>
8000a28: 230c movs r3, #12
8000a2a: 4699 mov r9, r3
8000a2c: 3b09 subs r3, #9
8000a2e: 26ff movs r6, #255 ; 0xff
8000a30: 469a mov sl, r3
8000a32: e797 b.n 8000964 <__aeabi_fmul+0x30>
8000a34: 0028 movs r0, r5
8000a36: f000 fbf1 bl 800121c <__clzsi2>
8000a3a: 1f43 subs r3, r0, #5
8000a3c: 409d lsls r5, r3
8000a3e: 2376 movs r3, #118 ; 0x76
8000a40: 425b negs r3, r3
8000a42: 1a18 subs r0, r3, r0
8000a44: 2200 movs r2, #0
8000a46: e79d b.n 8000984 <__aeabi_fmul+0x50>
8000a48: 2080 movs r0, #128 ; 0x80
8000a4a: 2400 movs r4, #0
8000a4c: 03c0 lsls r0, r0, #15
8000a4e: 22ff movs r2, #255 ; 0xff
8000a50: e7ba b.n 80009c8 <__aeabi_fmul+0x94>
8000a52: 003d movs r5, r7
8000a54: 4652 mov r2, sl
8000a56: e7ab b.n 80009b0 <__aeabi_fmul+0x7c>
8000a58: 003d movs r5, r7
8000a5a: 0021 movs r1, r4
8000a5c: 4652 mov r2, sl
8000a5e: e7a7 b.n 80009b0 <__aeabi_fmul+0x7c>
8000a60: 0c3b lsrs r3, r7, #16
8000a62: 469c mov ip, r3
8000a64: 042a lsls r2, r5, #16
8000a66: 0c12 lsrs r2, r2, #16
8000a68: 0c2b lsrs r3, r5, #16
8000a6a: 0014 movs r4, r2
8000a6c: 4660 mov r0, ip
8000a6e: 4665 mov r5, ip
8000a70: 043f lsls r7, r7, #16
8000a72: 0c3f lsrs r7, r7, #16
8000a74: 437c muls r4, r7
8000a76: 4342 muls r2, r0
8000a78: 435d muls r5, r3
8000a7a: 437b muls r3, r7
8000a7c: 0c27 lsrs r7, r4, #16
8000a7e: 189b adds r3, r3, r2
8000a80: 18ff adds r7, r7, r3
8000a82: 42ba cmp r2, r7
8000a84: d903 bls.n 8000a8e <__aeabi_fmul+0x15a>
8000a86: 2380 movs r3, #128 ; 0x80
8000a88: 025b lsls r3, r3, #9
8000a8a: 469c mov ip, r3
8000a8c: 4465 add r5, ip
8000a8e: 0424 lsls r4, r4, #16
8000a90: 043a lsls r2, r7, #16
8000a92: 0c24 lsrs r4, r4, #16
8000a94: 1912 adds r2, r2, r4
8000a96: 0193 lsls r3, r2, #6
8000a98: 1e5c subs r4, r3, #1
8000a9a: 41a3 sbcs r3, r4
8000a9c: 0c3f lsrs r7, r7, #16
8000a9e: 0e92 lsrs r2, r2, #26
8000aa0: 197d adds r5, r7, r5
8000aa2: 431a orrs r2, r3
8000aa4: 01ad lsls r5, r5, #6
8000aa6: 4315 orrs r5, r2
8000aa8: 012b lsls r3, r5, #4
8000aaa: d504 bpl.n 8000ab6 <__aeabi_fmul+0x182>
8000aac: 2301 movs r3, #1
8000aae: 465e mov r6, fp
8000ab0: 086a lsrs r2, r5, #1
8000ab2: 401d ands r5, r3
8000ab4: 4315 orrs r5, r2
8000ab6: 0032 movs r2, r6
8000ab8: 327f adds r2, #127 ; 0x7f
8000aba: 2a00 cmp r2, #0
8000abc: dd25 ble.n 8000b0a <__aeabi_fmul+0x1d6>
8000abe: 076b lsls r3, r5, #29
8000ac0: d004 beq.n 8000acc <__aeabi_fmul+0x198>
8000ac2: 230f movs r3, #15
8000ac4: 402b ands r3, r5
8000ac6: 2b04 cmp r3, #4
8000ac8: d000 beq.n 8000acc <__aeabi_fmul+0x198>
8000aca: 3504 adds r5, #4
8000acc: 012b lsls r3, r5, #4
8000ace: d503 bpl.n 8000ad8 <__aeabi_fmul+0x1a4>
8000ad0: 0032 movs r2, r6
8000ad2: 4b27 ldr r3, [pc, #156] ; (8000b70 <__aeabi_fmul+0x23c>)
8000ad4: 3280 adds r2, #128 ; 0x80
8000ad6: 401d ands r5, r3
8000ad8: 2afe cmp r2, #254 ; 0xfe
8000ada: dc94 bgt.n 8000a06 <__aeabi_fmul+0xd2>
8000adc: 2401 movs r4, #1
8000ade: 01a8 lsls r0, r5, #6
8000ae0: 0a40 lsrs r0, r0, #9
8000ae2: b2d2 uxtb r2, r2
8000ae4: 400c ands r4, r1
8000ae6: e76f b.n 80009c8 <__aeabi_fmul+0x94>
8000ae8: 2080 movs r0, #128 ; 0x80
8000aea: 03c0 lsls r0, r0, #15
8000aec: 4207 tst r7, r0
8000aee: d007 beq.n 8000b00 <__aeabi_fmul+0x1cc>
8000af0: 4205 tst r5, r0
8000af2: d105 bne.n 8000b00 <__aeabi_fmul+0x1cc>
8000af4: 4328 orrs r0, r5
8000af6: 0240 lsls r0, r0, #9
8000af8: 0a40 lsrs r0, r0, #9
8000afa: 4644 mov r4, r8
8000afc: 22ff movs r2, #255 ; 0xff
8000afe: e763 b.n 80009c8 <__aeabi_fmul+0x94>
8000b00: 4338 orrs r0, r7
8000b02: 0240 lsls r0, r0, #9
8000b04: 0a40 lsrs r0, r0, #9
8000b06: 22ff movs r2, #255 ; 0xff
8000b08: e75e b.n 80009c8 <__aeabi_fmul+0x94>
8000b0a: 2401 movs r4, #1
8000b0c: 1aa3 subs r3, r4, r2
8000b0e: 2b1b cmp r3, #27
8000b10: dd05 ble.n 8000b1e <__aeabi_fmul+0x1ea>
8000b12: 400c ands r4, r1
8000b14: 2200 movs r2, #0
8000b16: 2000 movs r0, #0
8000b18: e756 b.n 80009c8 <__aeabi_fmul+0x94>
8000b1a: 465e mov r6, fp
8000b1c: e7cb b.n 8000ab6 <__aeabi_fmul+0x182>
8000b1e: 002a movs r2, r5
8000b20: 2020 movs r0, #32
8000b22: 40da lsrs r2, r3
8000b24: 1ac3 subs r3, r0, r3
8000b26: 409d lsls r5, r3
8000b28: 002b movs r3, r5
8000b2a: 1e5d subs r5, r3, #1
8000b2c: 41ab sbcs r3, r5
8000b2e: 4313 orrs r3, r2
8000b30: 075a lsls r2, r3, #29
8000b32: d004 beq.n 8000b3e <__aeabi_fmul+0x20a>
8000b34: 220f movs r2, #15
8000b36: 401a ands r2, r3
8000b38: 2a04 cmp r2, #4
8000b3a: d000 beq.n 8000b3e <__aeabi_fmul+0x20a>
8000b3c: 3304 adds r3, #4
8000b3e: 015a lsls r2, r3, #5
8000b40: d504 bpl.n 8000b4c <__aeabi_fmul+0x218>
8000b42: 2401 movs r4, #1
8000b44: 2201 movs r2, #1
8000b46: 400c ands r4, r1
8000b48: 2000 movs r0, #0
8000b4a: e73d b.n 80009c8 <__aeabi_fmul+0x94>
8000b4c: 2401 movs r4, #1
8000b4e: 019b lsls r3, r3, #6
8000b50: 0a58 lsrs r0, r3, #9
8000b52: 400c ands r4, r1
8000b54: 2200 movs r2, #0
8000b56: e737 b.n 80009c8 <__aeabi_fmul+0x94>
8000b58: 2080 movs r0, #128 ; 0x80
8000b5a: 2401 movs r4, #1
8000b5c: 03c0 lsls r0, r0, #15
8000b5e: 4328 orrs r0, r5
8000b60: 0240 lsls r0, r0, #9
8000b62: 0a40 lsrs r0, r0, #9
8000b64: 400c ands r4, r1
8000b66: 22ff movs r2, #255 ; 0xff
8000b68: e72e b.n 80009c8 <__aeabi_fmul+0x94>
8000b6a: 46c0 nop ; (mov r8, r8)
8000b6c: 08007068 .word 0x08007068
8000b70: f7ffffff .word 0xf7ffffff
08000b74 <__aeabi_fsub>:
8000b74: b5f0 push {r4, r5, r6, r7, lr}
8000b76: 464f mov r7, r9
8000b78: 46d6 mov lr, sl
8000b7a: 4646 mov r6, r8
8000b7c: 0044 lsls r4, r0, #1
8000b7e: b5c0 push {r6, r7, lr}
8000b80: 0fc2 lsrs r2, r0, #31
8000b82: 0247 lsls r7, r0, #9
8000b84: 0248 lsls r0, r1, #9
8000b86: 0a40 lsrs r0, r0, #9
8000b88: 4684 mov ip, r0
8000b8a: 4666 mov r6, ip
8000b8c: 0a7b lsrs r3, r7, #9
8000b8e: 0048 lsls r0, r1, #1
8000b90: 0fc9 lsrs r1, r1, #31
8000b92: 469a mov sl, r3
8000b94: 0e24 lsrs r4, r4, #24
8000b96: 0015 movs r5, r2
8000b98: 00db lsls r3, r3, #3
8000b9a: 0e00 lsrs r0, r0, #24
8000b9c: 4689 mov r9, r1
8000b9e: 00f6 lsls r6, r6, #3
8000ba0: 28ff cmp r0, #255 ; 0xff
8000ba2: d100 bne.n 8000ba6 <__aeabi_fsub+0x32>
8000ba4: e08f b.n 8000cc6 <__aeabi_fsub+0x152>
8000ba6: 2101 movs r1, #1
8000ba8: 464f mov r7, r9
8000baa: 404f eors r7, r1
8000bac: 0039 movs r1, r7
8000bae: 4291 cmp r1, r2
8000bb0: d066 beq.n 8000c80 <__aeabi_fsub+0x10c>
8000bb2: 1a22 subs r2, r4, r0
8000bb4: 2a00 cmp r2, #0
8000bb6: dc00 bgt.n 8000bba <__aeabi_fsub+0x46>
8000bb8: e09d b.n 8000cf6 <__aeabi_fsub+0x182>
8000bba: 2800 cmp r0, #0
8000bbc: d13d bne.n 8000c3a <__aeabi_fsub+0xc6>
8000bbe: 2e00 cmp r6, #0
8000bc0: d100 bne.n 8000bc4 <__aeabi_fsub+0x50>
8000bc2: e08b b.n 8000cdc <__aeabi_fsub+0x168>
8000bc4: 1e51 subs r1, r2, #1
8000bc6: 2900 cmp r1, #0
8000bc8: d000 beq.n 8000bcc <__aeabi_fsub+0x58>
8000bca: e0b5 b.n 8000d38 <__aeabi_fsub+0x1c4>
8000bcc: 2401 movs r4, #1
8000bce: 1b9b subs r3, r3, r6
8000bd0: 015a lsls r2, r3, #5
8000bd2: d544 bpl.n 8000c5e <__aeabi_fsub+0xea>
8000bd4: 019b lsls r3, r3, #6
8000bd6: 099f lsrs r7, r3, #6
8000bd8: 0038 movs r0, r7
8000bda: f000 fb1f bl 800121c <__clzsi2>
8000bde: 3805 subs r0, #5
8000be0: 4087 lsls r7, r0
8000be2: 4284 cmp r4, r0
8000be4: dd00 ble.n 8000be8 <__aeabi_fsub+0x74>
8000be6: e096 b.n 8000d16 <__aeabi_fsub+0x1a2>
8000be8: 1b04 subs r4, r0, r4
8000bea: 003a movs r2, r7
8000bec: 2020 movs r0, #32
8000bee: 3401 adds r4, #1
8000bf0: 40e2 lsrs r2, r4
8000bf2: 1b04 subs r4, r0, r4
8000bf4: 40a7 lsls r7, r4
8000bf6: 003b movs r3, r7
8000bf8: 1e5f subs r7, r3, #1
8000bfa: 41bb sbcs r3, r7
8000bfc: 2400 movs r4, #0
8000bfe: 4313 orrs r3, r2
8000c00: 075a lsls r2, r3, #29
8000c02: d004 beq.n 8000c0e <__aeabi_fsub+0x9a>
8000c04: 220f movs r2, #15
8000c06: 401a ands r2, r3
8000c08: 2a04 cmp r2, #4
8000c0a: d000 beq.n 8000c0e <__aeabi_fsub+0x9a>
8000c0c: 3304 adds r3, #4
8000c0e: 015a lsls r2, r3, #5
8000c10: d527 bpl.n 8000c62 <__aeabi_fsub+0xee>
8000c12: 3401 adds r4, #1
8000c14: 2cff cmp r4, #255 ; 0xff
8000c16: d100 bne.n 8000c1a <__aeabi_fsub+0xa6>
8000c18: e079 b.n 8000d0e <__aeabi_fsub+0x19a>
8000c1a: 2201 movs r2, #1
8000c1c: 019b lsls r3, r3, #6
8000c1e: 0a5b lsrs r3, r3, #9
8000c20: b2e4 uxtb r4, r4
8000c22: 402a ands r2, r5
8000c24: 025b lsls r3, r3, #9
8000c26: 05e4 lsls r4, r4, #23
8000c28: 0a58 lsrs r0, r3, #9
8000c2a: 07d2 lsls r2, r2, #31
8000c2c: 4320 orrs r0, r4
8000c2e: 4310 orrs r0, r2
8000c30: bc1c pop {r2, r3, r4}
8000c32: 4690 mov r8, r2
8000c34: 4699 mov r9, r3
8000c36: 46a2 mov sl, r4
8000c38: bdf0 pop {r4, r5, r6, r7, pc}
8000c3a: 2cff cmp r4, #255 ; 0xff
8000c3c: d0e0 beq.n 8000c00 <__aeabi_fsub+0x8c>
8000c3e: 2180 movs r1, #128 ; 0x80
8000c40: 04c9 lsls r1, r1, #19
8000c42: 430e orrs r6, r1
8000c44: 2a1b cmp r2, #27
8000c46: dc7b bgt.n 8000d40 <__aeabi_fsub+0x1cc>
8000c48: 0031 movs r1, r6
8000c4a: 2020 movs r0, #32
8000c4c: 40d1 lsrs r1, r2
8000c4e: 1a82 subs r2, r0, r2
8000c50: 4096 lsls r6, r2
8000c52: 1e72 subs r2, r6, #1
8000c54: 4196 sbcs r6, r2
8000c56: 430e orrs r6, r1
8000c58: 1b9b subs r3, r3, r6
8000c5a: 015a lsls r2, r3, #5
8000c5c: d4ba bmi.n 8000bd4 <__aeabi_fsub+0x60>
8000c5e: 075a lsls r2, r3, #29
8000c60: d1d0 bne.n 8000c04 <__aeabi_fsub+0x90>
8000c62: 2201 movs r2, #1
8000c64: 08df lsrs r7, r3, #3
8000c66: 402a ands r2, r5
8000c68: 2cff cmp r4, #255 ; 0xff
8000c6a: d133 bne.n 8000cd4 <__aeabi_fsub+0x160>
8000c6c: 2f00 cmp r7, #0
8000c6e: d100 bne.n 8000c72 <__aeabi_fsub+0xfe>
8000c70: e0a8 b.n 8000dc4 <__aeabi_fsub+0x250>
8000c72: 2380 movs r3, #128 ; 0x80
8000c74: 03db lsls r3, r3, #15
8000c76: 433b orrs r3, r7
8000c78: 025b lsls r3, r3, #9
8000c7a: 0a5b lsrs r3, r3, #9
8000c7c: 24ff movs r4, #255 ; 0xff
8000c7e: e7d1 b.n 8000c24 <__aeabi_fsub+0xb0>
8000c80: 1a21 subs r1, r4, r0
8000c82: 2900 cmp r1, #0
8000c84: dd4c ble.n 8000d20 <__aeabi_fsub+0x1ac>
8000c86: 2800 cmp r0, #0
8000c88: d02a beq.n 8000ce0 <__aeabi_fsub+0x16c>
8000c8a: 2cff cmp r4, #255 ; 0xff
8000c8c: d0b8 beq.n 8000c00 <__aeabi_fsub+0x8c>
8000c8e: 2080 movs r0, #128 ; 0x80
8000c90: 04c0 lsls r0, r0, #19
8000c92: 4306 orrs r6, r0
8000c94: 291b cmp r1, #27
8000c96: dd00 ble.n 8000c9a <__aeabi_fsub+0x126>
8000c98: e0af b.n 8000dfa <__aeabi_fsub+0x286>
8000c9a: 0030 movs r0, r6
8000c9c: 2720 movs r7, #32
8000c9e: 40c8 lsrs r0, r1
8000ca0: 1a79 subs r1, r7, r1
8000ca2: 408e lsls r6, r1
8000ca4: 1e71 subs r1, r6, #1
8000ca6: 418e sbcs r6, r1
8000ca8: 4306 orrs r6, r0
8000caa: 199b adds r3, r3, r6
8000cac: 0159 lsls r1, r3, #5
8000cae: d5d6 bpl.n 8000c5e <__aeabi_fsub+0xea>
8000cb0: 3401 adds r4, #1
8000cb2: 2cff cmp r4, #255 ; 0xff
8000cb4: d100 bne.n 8000cb8 <__aeabi_fsub+0x144>
8000cb6: e085 b.n 8000dc4 <__aeabi_fsub+0x250>
8000cb8: 2201 movs r2, #1
8000cba: 497a ldr r1, [pc, #488] ; (8000ea4 <__aeabi_fsub+0x330>)
8000cbc: 401a ands r2, r3
8000cbe: 085b lsrs r3, r3, #1
8000cc0: 400b ands r3, r1
8000cc2: 4313 orrs r3, r2
8000cc4: e79c b.n 8000c00 <__aeabi_fsub+0x8c>
8000cc6: 2e00 cmp r6, #0
8000cc8: d000 beq.n 8000ccc <__aeabi_fsub+0x158>
8000cca: e770 b.n 8000bae <__aeabi_fsub+0x3a>
8000ccc: e76b b.n 8000ba6 <__aeabi_fsub+0x32>
8000cce: 1e3b subs r3, r7, #0
8000cd0: d1c5 bne.n 8000c5e <__aeabi_fsub+0xea>
8000cd2: 2200 movs r2, #0
8000cd4: 027b lsls r3, r7, #9
8000cd6: 0a5b lsrs r3, r3, #9
8000cd8: b2e4 uxtb r4, r4
8000cda: e7a3 b.n 8000c24 <__aeabi_fsub+0xb0>
8000cdc: 0014 movs r4, r2
8000cde: e78f b.n 8000c00 <__aeabi_fsub+0x8c>
8000ce0: 2e00 cmp r6, #0
8000ce2: d04d beq.n 8000d80 <__aeabi_fsub+0x20c>
8000ce4: 1e48 subs r0, r1, #1
8000ce6: 2800 cmp r0, #0
8000ce8: d157 bne.n 8000d9a <__aeabi_fsub+0x226>
8000cea: 199b adds r3, r3, r6
8000cec: 2401 movs r4, #1
8000cee: 015a lsls r2, r3, #5
8000cf0: d5b5 bpl.n 8000c5e <__aeabi_fsub+0xea>
8000cf2: 2402 movs r4, #2
8000cf4: e7e0 b.n 8000cb8 <__aeabi_fsub+0x144>
8000cf6: 2a00 cmp r2, #0
8000cf8: d125 bne.n 8000d46 <__aeabi_fsub+0x1d2>
8000cfa: 1c62 adds r2, r4, #1
8000cfc: b2d2 uxtb r2, r2
8000cfe: 2a01 cmp r2, #1
8000d00: dd72 ble.n 8000de8 <__aeabi_fsub+0x274>
8000d02: 1b9f subs r7, r3, r6
8000d04: 017a lsls r2, r7, #5
8000d06: d535 bpl.n 8000d74 <__aeabi_fsub+0x200>
8000d08: 1af7 subs r7, r6, r3
8000d0a: 000d movs r5, r1
8000d0c: e764 b.n 8000bd8 <__aeabi_fsub+0x64>
8000d0e: 2201 movs r2, #1
8000d10: 2300 movs r3, #0
8000d12: 402a ands r2, r5
8000d14: e786 b.n 8000c24 <__aeabi_fsub+0xb0>
8000d16: 003b movs r3, r7
8000d18: 4a63 ldr r2, [pc, #396] ; (8000ea8 <__aeabi_fsub+0x334>)
8000d1a: 1a24 subs r4, r4, r0
8000d1c: 4013 ands r3, r2
8000d1e: e76f b.n 8000c00 <__aeabi_fsub+0x8c>
8000d20: 2900 cmp r1, #0
8000d22: d16c bne.n 8000dfe <__aeabi_fsub+0x28a>
8000d24: 1c61 adds r1, r4, #1
8000d26: b2c8 uxtb r0, r1
8000d28: 2801 cmp r0, #1
8000d2a: dd4e ble.n 8000dca <__aeabi_fsub+0x256>
8000d2c: 29ff cmp r1, #255 ; 0xff
8000d2e: d049 beq.n 8000dc4 <__aeabi_fsub+0x250>
8000d30: 199b adds r3, r3, r6
8000d32: 085b lsrs r3, r3, #1
8000d34: 000c movs r4, r1
8000d36: e763 b.n 8000c00 <__aeabi_fsub+0x8c>
8000d38: 2aff cmp r2, #255 ; 0xff
8000d3a: d041 beq.n 8000dc0 <__aeabi_fsub+0x24c>
8000d3c: 000a movs r2, r1
8000d3e: e781 b.n 8000c44 <__aeabi_fsub+0xd0>
8000d40: 2601 movs r6, #1
8000d42: 1b9b subs r3, r3, r6
8000d44: e789 b.n 8000c5a <__aeabi_fsub+0xe6>
8000d46: 2c00 cmp r4, #0
8000d48: d01c beq.n 8000d84 <__aeabi_fsub+0x210>
8000d4a: 28ff cmp r0, #255 ; 0xff
8000d4c: d021 beq.n 8000d92 <__aeabi_fsub+0x21e>
8000d4e: 2480 movs r4, #128 ; 0x80
8000d50: 04e4 lsls r4, r4, #19
8000d52: 4252 negs r2, r2
8000d54: 4323 orrs r3, r4
8000d56: 2a1b cmp r2, #27
8000d58: dd00 ble.n 8000d5c <__aeabi_fsub+0x1e8>
8000d5a: e096 b.n 8000e8a <__aeabi_fsub+0x316>
8000d5c: 001c movs r4, r3
8000d5e: 2520 movs r5, #32
8000d60: 40d4 lsrs r4, r2
8000d62: 1aaa subs r2, r5, r2
8000d64: 4093 lsls r3, r2
8000d66: 1e5a subs r2, r3, #1
8000d68: 4193 sbcs r3, r2
8000d6a: 4323 orrs r3, r4
8000d6c: 1af3 subs r3, r6, r3
8000d6e: 0004 movs r4, r0
8000d70: 000d movs r5, r1
8000d72: e72d b.n 8000bd0 <__aeabi_fsub+0x5c>
8000d74: 2f00 cmp r7, #0
8000d76: d000 beq.n 8000d7a <__aeabi_fsub+0x206>
8000d78: e72e b.n 8000bd8 <__aeabi_fsub+0x64>
8000d7a: 2200 movs r2, #0
8000d7c: 2400 movs r4, #0
8000d7e: e7a9 b.n 8000cd4 <__aeabi_fsub+0x160>
8000d80: 000c movs r4, r1
8000d82: e73d b.n 8000c00 <__aeabi_fsub+0x8c>
8000d84: 2b00 cmp r3, #0
8000d86: d058 beq.n 8000e3a <__aeabi_fsub+0x2c6>
8000d88: 43d2 mvns r2, r2
8000d8a: 2a00 cmp r2, #0
8000d8c: d0ee beq.n 8000d6c <__aeabi_fsub+0x1f8>
8000d8e: 28ff cmp r0, #255 ; 0xff
8000d90: d1e1 bne.n 8000d56 <__aeabi_fsub+0x1e2>
8000d92: 0033 movs r3, r6
8000d94: 24ff movs r4, #255 ; 0xff
8000d96: 000d movs r5, r1
8000d98: e732 b.n 8000c00 <__aeabi_fsub+0x8c>
8000d9a: 29ff cmp r1, #255 ; 0xff
8000d9c: d010 beq.n 8000dc0 <__aeabi_fsub+0x24c>
8000d9e: 0001 movs r1, r0
8000da0: e778 b.n 8000c94 <__aeabi_fsub+0x120>
8000da2: 2b00 cmp r3, #0
8000da4: d06e beq.n 8000e84 <__aeabi_fsub+0x310>
8000da6: 24ff movs r4, #255 ; 0xff
8000da8: 2e00 cmp r6, #0
8000daa: d100 bne.n 8000dae <__aeabi_fsub+0x23a>
8000dac: e728 b.n 8000c00 <__aeabi_fsub+0x8c>
8000dae: 2280 movs r2, #128 ; 0x80
8000db0: 4651 mov r1, sl
8000db2: 03d2 lsls r2, r2, #15
8000db4: 4211 tst r1, r2
8000db6: d003 beq.n 8000dc0 <__aeabi_fsub+0x24c>
8000db8: 4661 mov r1, ip
8000dba: 4211 tst r1, r2
8000dbc: d100 bne.n 8000dc0 <__aeabi_fsub+0x24c>
8000dbe: 0033 movs r3, r6
8000dc0: 24ff movs r4, #255 ; 0xff
8000dc2: e71d b.n 8000c00 <__aeabi_fsub+0x8c>
8000dc4: 24ff movs r4, #255 ; 0xff
8000dc6: 2300 movs r3, #0
8000dc8: e72c b.n 8000c24 <__aeabi_fsub+0xb0>
8000dca: 2c00 cmp r4, #0
8000dcc: d1e9 bne.n 8000da2 <__aeabi_fsub+0x22e>
8000dce: 2b00 cmp r3, #0
8000dd0: d063 beq.n 8000e9a <__aeabi_fsub+0x326>
8000dd2: 2e00 cmp r6, #0
8000dd4: d100 bne.n 8000dd8 <__aeabi_fsub+0x264>
8000dd6: e713 b.n 8000c00 <__aeabi_fsub+0x8c>
8000dd8: 199b adds r3, r3, r6
8000dda: 015a lsls r2, r3, #5
8000ddc: d400 bmi.n 8000de0 <__aeabi_fsub+0x26c>
8000dde: e73e b.n 8000c5e <__aeabi_fsub+0xea>
8000de0: 4a31 ldr r2, [pc, #196] ; (8000ea8 <__aeabi_fsub+0x334>)
8000de2: 000c movs r4, r1
8000de4: 4013 ands r3, r2
8000de6: e70b b.n 8000c00 <__aeabi_fsub+0x8c>
8000de8: 2c00 cmp r4, #0
8000dea: d11e bne.n 8000e2a <__aeabi_fsub+0x2b6>
8000dec: 2b00 cmp r3, #0
8000dee: d12f bne.n 8000e50 <__aeabi_fsub+0x2dc>
8000df0: 2e00 cmp r6, #0
8000df2: d04f beq.n 8000e94 <__aeabi_fsub+0x320>
8000df4: 0033 movs r3, r6
8000df6: 000d movs r5, r1
8000df8: e702 b.n 8000c00 <__aeabi_fsub+0x8c>
8000dfa: 2601 movs r6, #1
8000dfc: e755 b.n 8000caa <__aeabi_fsub+0x136>
8000dfe: 2c00 cmp r4, #0
8000e00: d11f bne.n 8000e42 <__aeabi_fsub+0x2ce>
8000e02: 2b00 cmp r3, #0
8000e04: d043 beq.n 8000e8e <__aeabi_fsub+0x31a>
8000e06: 43c9 mvns r1, r1
8000e08: 2900 cmp r1, #0
8000e0a: d00b beq.n 8000e24 <__aeabi_fsub+0x2b0>
8000e0c: 28ff cmp r0, #255 ; 0xff
8000e0e: d039 beq.n 8000e84 <__aeabi_fsub+0x310>
8000e10: 291b cmp r1, #27
8000e12: dc44 bgt.n 8000e9e <__aeabi_fsub+0x32a>
8000e14: 001c movs r4, r3
8000e16: 2720 movs r7, #32
8000e18: 40cc lsrs r4, r1
8000e1a: 1a79 subs r1, r7, r1
8000e1c: 408b lsls r3, r1
8000e1e: 1e59 subs r1, r3, #1
8000e20: 418b sbcs r3, r1
8000e22: 4323 orrs r3, r4
8000e24: 199b adds r3, r3, r6
8000e26: 0004 movs r4, r0
8000e28: e740 b.n 8000cac <__aeabi_fsub+0x138>
8000e2a: 2b00 cmp r3, #0
8000e2c: d11a bne.n 8000e64 <__aeabi_fsub+0x2f0>
8000e2e: 2e00 cmp r6, #0
8000e30: d124 bne.n 8000e7c <__aeabi_fsub+0x308>
8000e32: 2780 movs r7, #128 ; 0x80
8000e34: 2200 movs r2, #0
8000e36: 03ff lsls r7, r7, #15
8000e38: e71b b.n 8000c72 <__aeabi_fsub+0xfe>
8000e3a: 0033 movs r3, r6
8000e3c: 0004 movs r4, r0
8000e3e: 000d movs r5, r1
8000e40: e6de b.n 8000c00 <__aeabi_fsub+0x8c>
8000e42: 28ff cmp r0, #255 ; 0xff
8000e44: d01e beq.n 8000e84 <__aeabi_fsub+0x310>
8000e46: 2480 movs r4, #128 ; 0x80
8000e48: 04e4 lsls r4, r4, #19
8000e4a: 4249 negs r1, r1
8000e4c: 4323 orrs r3, r4
8000e4e: e7df b.n 8000e10 <__aeabi_fsub+0x29c>
8000e50: 2e00 cmp r6, #0
8000e52: d100 bne.n 8000e56 <__aeabi_fsub+0x2e2>
8000e54: e6d4 b.n 8000c00 <__aeabi_fsub+0x8c>
8000e56: 1b9f subs r7, r3, r6
8000e58: 017a lsls r2, r7, #5
8000e5a: d400 bmi.n 8000e5e <__aeabi_fsub+0x2ea>
8000e5c: e737 b.n 8000cce <__aeabi_fsub+0x15a>
8000e5e: 1af3 subs r3, r6, r3
8000e60: 000d movs r5, r1
8000e62: e6cd b.n 8000c00 <__aeabi_fsub+0x8c>
8000e64: 24ff movs r4, #255 ; 0xff
8000e66: 2e00 cmp r6, #0
8000e68: d100 bne.n 8000e6c <__aeabi_fsub+0x2f8>
8000e6a: e6c9 b.n 8000c00 <__aeabi_fsub+0x8c>
8000e6c: 2280 movs r2, #128 ; 0x80
8000e6e: 4650 mov r0, sl
8000e70: 03d2 lsls r2, r2, #15
8000e72: 4210 tst r0, r2
8000e74: d0a4 beq.n 8000dc0 <__aeabi_fsub+0x24c>
8000e76: 4660 mov r0, ip
8000e78: 4210 tst r0, r2
8000e7a: d1a1 bne.n 8000dc0 <__aeabi_fsub+0x24c>
8000e7c: 0033 movs r3, r6
8000e7e: 000d movs r5, r1
8000e80: 24ff movs r4, #255 ; 0xff
8000e82: e6bd b.n 8000c00 <__aeabi_fsub+0x8c>
8000e84: 0033 movs r3, r6
8000e86: 24ff movs r4, #255 ; 0xff
8000e88: e6ba b.n 8000c00 <__aeabi_fsub+0x8c>
8000e8a: 2301 movs r3, #1
8000e8c: e76e b.n 8000d6c <__aeabi_fsub+0x1f8>
8000e8e: 0033 movs r3, r6
8000e90: 0004 movs r4, r0
8000e92: e6b5 b.n 8000c00 <__aeabi_fsub+0x8c>
8000e94: 2700 movs r7, #0
8000e96: 2200 movs r2, #0
8000e98: e71c b.n 8000cd4 <__aeabi_fsub+0x160>
8000e9a: 0033 movs r3, r6
8000e9c: e6b0 b.n 8000c00 <__aeabi_fsub+0x8c>
8000e9e: 2301 movs r3, #1
8000ea0: e7c0 b.n 8000e24 <__aeabi_fsub+0x2b0>
8000ea2: 46c0 nop ; (mov r8, r8)
8000ea4: 7dffffff .word 0x7dffffff
8000ea8: fbffffff .word 0xfbffffff
08000eac <__aeabi_f2iz>:
8000eac: 0241 lsls r1, r0, #9
8000eae: 0043 lsls r3, r0, #1
8000eb0: 0fc2 lsrs r2, r0, #31
8000eb2: 0a49 lsrs r1, r1, #9
8000eb4: 0e1b lsrs r3, r3, #24
8000eb6: 2000 movs r0, #0
8000eb8: 2b7e cmp r3, #126 ; 0x7e
8000eba: dd0d ble.n 8000ed8 <__aeabi_f2iz+0x2c>
8000ebc: 2b9d cmp r3, #157 ; 0x9d
8000ebe: dc0c bgt.n 8000eda <__aeabi_f2iz+0x2e>
8000ec0: 2080 movs r0, #128 ; 0x80
8000ec2: 0400 lsls r0, r0, #16
8000ec4: 4301 orrs r1, r0
8000ec6: 2b95 cmp r3, #149 ; 0x95
8000ec8: dc0a bgt.n 8000ee0 <__aeabi_f2iz+0x34>
8000eca: 2096 movs r0, #150 ; 0x96
8000ecc: 1ac3 subs r3, r0, r3
8000ece: 40d9 lsrs r1, r3
8000ed0: 4248 negs r0, r1
8000ed2: 2a00 cmp r2, #0
8000ed4: d100 bne.n 8000ed8 <__aeabi_f2iz+0x2c>
8000ed6: 0008 movs r0, r1
8000ed8: 4770 bx lr
8000eda: 4b03 ldr r3, [pc, #12] ; (8000ee8 <__aeabi_f2iz+0x3c>)
8000edc: 18d0 adds r0, r2, r3
8000ede: e7fb b.n 8000ed8 <__aeabi_f2iz+0x2c>
8000ee0: 3b96 subs r3, #150 ; 0x96
8000ee2: 4099 lsls r1, r3
8000ee4: e7f4 b.n 8000ed0 <__aeabi_f2iz+0x24>
8000ee6: 46c0 nop ; (mov r8, r8)
8000ee8: 7fffffff .word 0x7fffffff
08000eec <__aeabi_ui2f>:
8000eec: b510 push {r4, lr}
8000eee: 1e04 subs r4, r0, #0
8000ef0: d027 beq.n 8000f42 <__aeabi_ui2f+0x56>
8000ef2: f000 f993 bl 800121c <__clzsi2>
8000ef6: 239e movs r3, #158 ; 0x9e
8000ef8: 1a1b subs r3, r3, r0
8000efa: 2b96 cmp r3, #150 ; 0x96
8000efc: dc0a bgt.n 8000f14 <__aeabi_ui2f+0x28>
8000efe: 2296 movs r2, #150 ; 0x96
8000f00: 1ad2 subs r2, r2, r3
8000f02: 4094 lsls r4, r2
8000f04: 0264 lsls r4, r4, #9
8000f06: 0a64 lsrs r4, r4, #9
8000f08: b2db uxtb r3, r3
8000f0a: 0264 lsls r4, r4, #9
8000f0c: 05db lsls r3, r3, #23
8000f0e: 0a60 lsrs r0, r4, #9
8000f10: 4318 orrs r0, r3
8000f12: bd10 pop {r4, pc}
8000f14: 2b99 cmp r3, #153 ; 0x99
8000f16: dc17 bgt.n 8000f48 <__aeabi_ui2f+0x5c>
8000f18: 2299 movs r2, #153 ; 0x99
8000f1a: 1ad2 subs r2, r2, r3
8000f1c: 2a00 cmp r2, #0
8000f1e: dd27 ble.n 8000f70 <__aeabi_ui2f+0x84>
8000f20: 4094 lsls r4, r2
8000f22: 0022 movs r2, r4
8000f24: 4c13 ldr r4, [pc, #76] ; (8000f74 <__aeabi_ui2f+0x88>)
8000f26: 4014 ands r4, r2
8000f28: 0751 lsls r1, r2, #29
8000f2a: d004 beq.n 8000f36 <__aeabi_ui2f+0x4a>
8000f2c: 210f movs r1, #15
8000f2e: 400a ands r2, r1
8000f30: 2a04 cmp r2, #4
8000f32: d000 beq.n 8000f36 <__aeabi_ui2f+0x4a>
8000f34: 3404 adds r4, #4
8000f36: 0162 lsls r2, r4, #5
8000f38: d412 bmi.n 8000f60 <__aeabi_ui2f+0x74>
8000f3a: 01a4 lsls r4, r4, #6
8000f3c: 0a64 lsrs r4, r4, #9
8000f3e: b2db uxtb r3, r3
8000f40: e7e3 b.n 8000f0a <__aeabi_ui2f+0x1e>
8000f42: 2300 movs r3, #0
8000f44: 2400 movs r4, #0
8000f46: e7e0 b.n 8000f0a <__aeabi_ui2f+0x1e>
8000f48: 22b9 movs r2, #185 ; 0xb9
8000f4a: 0021 movs r1, r4
8000f4c: 1ad2 subs r2, r2, r3
8000f4e: 4091 lsls r1, r2
8000f50: 000a movs r2, r1
8000f52: 1e51 subs r1, r2, #1
8000f54: 418a sbcs r2, r1
8000f56: 2105 movs r1, #5
8000f58: 1a09 subs r1, r1, r0
8000f5a: 40cc lsrs r4, r1
8000f5c: 4314 orrs r4, r2
8000f5e: e7db b.n 8000f18 <__aeabi_ui2f+0x2c>
8000f60: 4b04 ldr r3, [pc, #16] ; (8000f74 <__aeabi_ui2f+0x88>)
8000f62: 401c ands r4, r3
8000f64: 239f movs r3, #159 ; 0x9f
8000f66: 01a4 lsls r4, r4, #6
8000f68: 1a1b subs r3, r3, r0
8000f6a: 0a64 lsrs r4, r4, #9
8000f6c: b2db uxtb r3, r3
8000f6e: e7cc b.n 8000f0a <__aeabi_ui2f+0x1e>
8000f70: 0022 movs r2, r4
8000f72: e7d7 b.n 8000f24 <__aeabi_ui2f+0x38>
8000f74: fbffffff .word 0xfbffffff
08000f78 <__eqdf2>:
8000f78: b5f0 push {r4, r5, r6, r7, lr}
8000f7a: 464f mov r7, r9
8000f7c: 4646 mov r6, r8
8000f7e: 46d6 mov lr, sl
8000f80: 005c lsls r4, r3, #1
8000f82: b5c0 push {r6, r7, lr}
8000f84: 031f lsls r7, r3, #12
8000f86: 0fdb lsrs r3, r3, #31
8000f88: 469a mov sl, r3
8000f8a: 4b17 ldr r3, [pc, #92] ; (8000fe8 <__eqdf2+0x70>)
8000f8c: 030e lsls r6, r1, #12
8000f8e: 004d lsls r5, r1, #1
8000f90: 4684 mov ip, r0
8000f92: 4680 mov r8, r0
8000f94: 0b36 lsrs r6, r6, #12
8000f96: 0d6d lsrs r5, r5, #21
8000f98: 0fc9 lsrs r1, r1, #31
8000f9a: 4691 mov r9, r2
8000f9c: 0b3f lsrs r7, r7, #12
8000f9e: 0d64 lsrs r4, r4, #21
8000fa0: 2001 movs r0, #1
8000fa2: 429d cmp r5, r3
8000fa4: d008 beq.n 8000fb8 <__eqdf2+0x40>
8000fa6: 429c cmp r4, r3
8000fa8: d001 beq.n 8000fae <__eqdf2+0x36>
8000faa: 42a5 cmp r5, r4
8000fac: d00b beq.n 8000fc6 <__eqdf2+0x4e>
8000fae: bc1c pop {r2, r3, r4}
8000fb0: 4690 mov r8, r2
8000fb2: 4699 mov r9, r3
8000fb4: 46a2 mov sl, r4
8000fb6: bdf0 pop {r4, r5, r6, r7, pc}
8000fb8: 4663 mov r3, ip
8000fba: 4333 orrs r3, r6
8000fbc: d1f7 bne.n 8000fae <__eqdf2+0x36>
8000fbe: 42ac cmp r4, r5
8000fc0: d1f5 bne.n 8000fae <__eqdf2+0x36>
8000fc2: 433a orrs r2, r7
8000fc4: d1f3 bne.n 8000fae <__eqdf2+0x36>
8000fc6: 2001 movs r0, #1
8000fc8: 42be cmp r6, r7
8000fca: d1f0 bne.n 8000fae <__eqdf2+0x36>
8000fcc: 45c8 cmp r8, r9
8000fce: d1ee bne.n 8000fae <__eqdf2+0x36>
8000fd0: 4551 cmp r1, sl
8000fd2: d007 beq.n 8000fe4 <__eqdf2+0x6c>
8000fd4: 2d00 cmp r5, #0
8000fd6: d1ea bne.n 8000fae <__eqdf2+0x36>
8000fd8: 4663 mov r3, ip
8000fda: 431e orrs r6, r3
8000fdc: 0030 movs r0, r6
8000fde: 1e46 subs r6, r0, #1
8000fe0: 41b0 sbcs r0, r6
8000fe2: e7e4 b.n 8000fae <__eqdf2+0x36>
8000fe4: 2000 movs r0, #0
8000fe6: e7e2 b.n 8000fae <__eqdf2+0x36>
8000fe8: 000007ff .word 0x000007ff
08000fec <__gedf2>:
8000fec: b5f0 push {r4, r5, r6, r7, lr}
8000fee: 4645 mov r5, r8
8000ff0: 46de mov lr, fp
8000ff2: 4657 mov r7, sl
8000ff4: 464e mov r6, r9
8000ff6: b5e0 push {r5, r6, r7, lr}
8000ff8: 031f lsls r7, r3, #12
8000ffa: 0b3d lsrs r5, r7, #12
8000ffc: 4f2c ldr r7, [pc, #176] ; (80010b0 <__gedf2+0xc4>)
8000ffe: 030e lsls r6, r1, #12
8001000: 004c lsls r4, r1, #1
8001002: 46ab mov fp, r5
8001004: 005d lsls r5, r3, #1
8001006: 4684 mov ip, r0
8001008: 0b36 lsrs r6, r6, #12
800100a: 0d64 lsrs r4, r4, #21
800100c: 0fc9 lsrs r1, r1, #31
800100e: 4690 mov r8, r2
8001010: 0d6d lsrs r5, r5, #21
8001012: 0fdb lsrs r3, r3, #31
8001014: 42bc cmp r4, r7
8001016: d02a beq.n 800106e <__gedf2+0x82>
8001018: 4f25 ldr r7, [pc, #148] ; (80010b0 <__gedf2+0xc4>)
800101a: 42bd cmp r5, r7
800101c: d02d beq.n 800107a <__gedf2+0x8e>
800101e: 2c00 cmp r4, #0
8001020: d10f bne.n 8001042 <__gedf2+0x56>
8001022: 4330 orrs r0, r6
8001024: 0007 movs r7, r0
8001026: 4681 mov r9, r0
8001028: 4278 negs r0, r7
800102a: 4178 adcs r0, r7
800102c: b2c0 uxtb r0, r0
800102e: 2d00 cmp r5, #0
8001030: d117 bne.n 8001062 <__gedf2+0x76>
8001032: 465f mov r7, fp
8001034: 433a orrs r2, r7
8001036: d114 bne.n 8001062 <__gedf2+0x76>
8001038: 464b mov r3, r9
800103a: 2000 movs r0, #0
800103c: 2b00 cmp r3, #0
800103e: d00a beq.n 8001056 <__gedf2+0x6a>
8001040: e006 b.n 8001050 <__gedf2+0x64>
8001042: 2d00 cmp r5, #0
8001044: d102 bne.n 800104c <__gedf2+0x60>
8001046: 4658 mov r0, fp
8001048: 4302 orrs r2, r0
800104a: d001 beq.n 8001050 <__gedf2+0x64>
800104c: 4299 cmp r1, r3
800104e: d018 beq.n 8001082 <__gedf2+0x96>
8001050: 4248 negs r0, r1
8001052: 2101 movs r1, #1
8001054: 4308 orrs r0, r1
8001056: bc3c pop {r2, r3, r4, r5}
8001058: 4690 mov r8, r2
800105a: 4699 mov r9, r3
800105c: 46a2 mov sl, r4
800105e: 46ab mov fp, r5
8001060: bdf0 pop {r4, r5, r6, r7, pc}
8001062: 2800 cmp r0, #0
8001064: d0f2 beq.n 800104c <__gedf2+0x60>
8001066: 2001 movs r0, #1
8001068: 3b01 subs r3, #1
800106a: 4318 orrs r0, r3
800106c: e7f3 b.n 8001056 <__gedf2+0x6a>
800106e: 0037 movs r7, r6
8001070: 4307 orrs r7, r0
8001072: d0d1 beq.n 8001018 <__gedf2+0x2c>
8001074: 2002 movs r0, #2
8001076: 4240 negs r0, r0
8001078: e7ed b.n 8001056 <__gedf2+0x6a>
800107a: 465f mov r7, fp
800107c: 4317 orrs r7, r2
800107e: d0ce beq.n 800101e <__gedf2+0x32>
8001080: e7f8 b.n 8001074 <__gedf2+0x88>
8001082: 42ac cmp r4, r5
8001084: dce4 bgt.n 8001050 <__gedf2+0x64>
8001086: da03 bge.n 8001090 <__gedf2+0xa4>
8001088: 1e48 subs r0, r1, #1
800108a: 2101 movs r1, #1
800108c: 4308 orrs r0, r1
800108e: e7e2 b.n 8001056 <__gedf2+0x6a>
8001090: 455e cmp r6, fp
8001092: d8dd bhi.n 8001050 <__gedf2+0x64>
8001094: d006 beq.n 80010a4 <__gedf2+0xb8>
8001096: 2000 movs r0, #0
8001098: 455e cmp r6, fp
800109a: d2dc bcs.n 8001056 <__gedf2+0x6a>
800109c: 2301 movs r3, #1
800109e: 1e48 subs r0, r1, #1
80010a0: 4318 orrs r0, r3
80010a2: e7d8 b.n 8001056 <__gedf2+0x6a>
80010a4: 45c4 cmp ip, r8
80010a6: d8d3 bhi.n 8001050 <__gedf2+0x64>
80010a8: 2000 movs r0, #0
80010aa: 45c4 cmp ip, r8
80010ac: d3f6 bcc.n 800109c <__gedf2+0xb0>
80010ae: e7d2 b.n 8001056 <__gedf2+0x6a>
80010b0: 000007ff .word 0x000007ff
080010b4 <__ledf2>:
80010b4: b5f0 push {r4, r5, r6, r7, lr}
80010b6: 464e mov r6, r9
80010b8: 4645 mov r5, r8
80010ba: 46de mov lr, fp
80010bc: 4657 mov r7, sl
80010be: 005c lsls r4, r3, #1
80010c0: b5e0 push {r5, r6, r7, lr}
80010c2: 031f lsls r7, r3, #12
80010c4: 0fdb lsrs r3, r3, #31
80010c6: 4699 mov r9, r3
80010c8: 4b2a ldr r3, [pc, #168] ; (8001174 <__ledf2+0xc0>)
80010ca: 030e lsls r6, r1, #12
80010cc: 004d lsls r5, r1, #1
80010ce: 0fc9 lsrs r1, r1, #31
80010d0: 4684 mov ip, r0
80010d2: 0b36 lsrs r6, r6, #12
80010d4: 0d6d lsrs r5, r5, #21
80010d6: 468b mov fp, r1
80010d8: 4690 mov r8, r2
80010da: 0b3f lsrs r7, r7, #12
80010dc: 0d64 lsrs r4, r4, #21
80010de: 429d cmp r5, r3
80010e0: d020 beq.n 8001124 <__ledf2+0x70>
80010e2: 4b24 ldr r3, [pc, #144] ; (8001174 <__ledf2+0xc0>)
80010e4: 429c cmp r4, r3
80010e6: d022 beq.n 800112e <__ledf2+0x7a>
80010e8: 2d00 cmp r5, #0
80010ea: d112 bne.n 8001112 <__ledf2+0x5e>
80010ec: 4330 orrs r0, r6
80010ee: 4243 negs r3, r0
80010f0: 4143 adcs r3, r0
80010f2: b2db uxtb r3, r3
80010f4: 2c00 cmp r4, #0
80010f6: d01f beq.n 8001138 <__ledf2+0x84>
80010f8: 2b00 cmp r3, #0
80010fa: d00c beq.n 8001116 <__ledf2+0x62>
80010fc: 464b mov r3, r9
80010fe: 2001 movs r0, #1
8001100: 3b01 subs r3, #1
8001102: 4303 orrs r3, r0
8001104: 0018 movs r0, r3
8001106: bc3c pop {r2, r3, r4, r5}
8001108: 4690 mov r8, r2
800110a: 4699 mov r9, r3
800110c: 46a2 mov sl, r4
800110e: 46ab mov fp, r5
8001110: bdf0 pop {r4, r5, r6, r7, pc}
8001112: 2c00 cmp r4, #0
8001114: d016 beq.n 8001144 <__ledf2+0x90>
8001116: 45cb cmp fp, r9
8001118: d017 beq.n 800114a <__ledf2+0x96>
800111a: 465b mov r3, fp
800111c: 4259 negs r1, r3
800111e: 2301 movs r3, #1
8001120: 430b orrs r3, r1
8001122: e7ef b.n 8001104 <__ledf2+0x50>
8001124: 0031 movs r1, r6
8001126: 2302 movs r3, #2
8001128: 4301 orrs r1, r0
800112a: d1eb bne.n 8001104 <__ledf2+0x50>
800112c: e7d9 b.n 80010e2 <__ledf2+0x2e>
800112e: 0039 movs r1, r7
8001130: 2302 movs r3, #2
8001132: 4311 orrs r1, r2
8001134: d1e6 bne.n 8001104 <__ledf2+0x50>
8001136: e7d7 b.n 80010e8 <__ledf2+0x34>
8001138: 433a orrs r2, r7
800113a: d1dd bne.n 80010f8 <__ledf2+0x44>
800113c: 2300 movs r3, #0
800113e: 2800 cmp r0, #0
8001140: d0e0 beq.n 8001104 <__ledf2+0x50>
8001142: e7ea b.n 800111a <__ledf2+0x66>
8001144: 433a orrs r2, r7
8001146: d1e6 bne.n 8001116 <__ledf2+0x62>
8001148: e7e7 b.n 800111a <__ledf2+0x66>
800114a: 42a5 cmp r5, r4
800114c: dce5 bgt.n 800111a <__ledf2+0x66>
800114e: db05 blt.n 800115c <__ledf2+0xa8>
8001150: 42be cmp r6, r7
8001152: d8e2 bhi.n 800111a <__ledf2+0x66>
8001154: d007 beq.n 8001166 <__ledf2+0xb2>
8001156: 2300 movs r3, #0
8001158: 42be cmp r6, r7
800115a: d2d3 bcs.n 8001104 <__ledf2+0x50>
800115c: 4659 mov r1, fp
800115e: 2301 movs r3, #1
8001160: 3901 subs r1, #1
8001162: 430b orrs r3, r1
8001164: e7ce b.n 8001104 <__ledf2+0x50>
8001166: 45c4 cmp ip, r8
8001168: d8d7 bhi.n 800111a <__ledf2+0x66>
800116a: 2300 movs r3, #0
800116c: 45c4 cmp ip, r8
800116e: d3f5 bcc.n 800115c <__ledf2+0xa8>
8001170: e7c8 b.n 8001104 <__ledf2+0x50>
8001172: 46c0 nop ; (mov r8, r8)
8001174: 000007ff .word 0x000007ff
08001178 <__aeabi_f2d>:
8001178: 0041 lsls r1, r0, #1
800117a: 0e09 lsrs r1, r1, #24
800117c: 1c4b adds r3, r1, #1
800117e: b570 push {r4, r5, r6, lr}
8001180: b2db uxtb r3, r3
8001182: 0246 lsls r6, r0, #9
8001184: 0a75 lsrs r5, r6, #9
8001186: 0fc4 lsrs r4, r0, #31
8001188: 2b01 cmp r3, #1
800118a: dd14 ble.n 80011b6 <__aeabi_f2d+0x3e>
800118c: 23e0 movs r3, #224 ; 0xe0
800118e: 009b lsls r3, r3, #2
8001190: 076d lsls r5, r5, #29
8001192: 0b36 lsrs r6, r6, #12
8001194: 18cb adds r3, r1, r3
8001196: 2100 movs r1, #0
8001198: 0d0a lsrs r2, r1, #20
800119a: 0028 movs r0, r5
800119c: 0512 lsls r2, r2, #20
800119e: 4d1c ldr r5, [pc, #112] ; (8001210 <__aeabi_f2d+0x98>)
80011a0: 4332 orrs r2, r6
80011a2: 055b lsls r3, r3, #21
80011a4: 402a ands r2, r5
80011a6: 085b lsrs r3, r3, #1
80011a8: 4313 orrs r3, r2
80011aa: 005b lsls r3, r3, #1
80011ac: 07e4 lsls r4, r4, #31
80011ae: 085b lsrs r3, r3, #1
80011b0: 4323 orrs r3, r4
80011b2: 0019 movs r1, r3
80011b4: bd70 pop {r4, r5, r6, pc}
80011b6: 2900 cmp r1, #0
80011b8: d114 bne.n 80011e4 <__aeabi_f2d+0x6c>
80011ba: 2d00 cmp r5, #0
80011bc: d01e beq.n 80011fc <__aeabi_f2d+0x84>
80011be: 0028 movs r0, r5
80011c0: f000 f82c bl 800121c <__clzsi2>
80011c4: 280a cmp r0, #10
80011c6: dc1c bgt.n 8001202 <__aeabi_f2d+0x8a>
80011c8: 230b movs r3, #11
80011ca: 002a movs r2, r5
80011cc: 1a1b subs r3, r3, r0
80011ce: 40da lsrs r2, r3
80011d0: 0003 movs r3, r0
80011d2: 3315 adds r3, #21
80011d4: 409d lsls r5, r3
80011d6: 4b0f ldr r3, [pc, #60] ; (8001214 <__aeabi_f2d+0x9c>)
80011d8: 0312 lsls r2, r2, #12
80011da: 1a1b subs r3, r3, r0
80011dc: 055b lsls r3, r3, #21
80011de: 0b16 lsrs r6, r2, #12
80011e0: 0d5b lsrs r3, r3, #21
80011e2: e7d8 b.n 8001196 <__aeabi_f2d+0x1e>
80011e4: 2d00 cmp r5, #0
80011e6: d006 beq.n 80011f6 <__aeabi_f2d+0x7e>
80011e8: 0b32 lsrs r2, r6, #12
80011ea: 2680 movs r6, #128 ; 0x80
80011ec: 0336 lsls r6, r6, #12
80011ee: 076d lsls r5, r5, #29
80011f0: 4316 orrs r6, r2
80011f2: 4b09 ldr r3, [pc, #36] ; (8001218 <__aeabi_f2d+0xa0>)
80011f4: e7cf b.n 8001196 <__aeabi_f2d+0x1e>
80011f6: 4b08 ldr r3, [pc, #32] ; (8001218 <__aeabi_f2d+0xa0>)
80011f8: 2600 movs r6, #0
80011fa: e7cc b.n 8001196 <__aeabi_f2d+0x1e>
80011fc: 2300 movs r3, #0
80011fe: 2600 movs r6, #0
8001200: e7c9 b.n 8001196 <__aeabi_f2d+0x1e>
8001202: 0003 movs r3, r0
8001204: 002a movs r2, r5
8001206: 3b0b subs r3, #11
8001208: 409a lsls r2, r3
800120a: 2500 movs r5, #0
800120c: e7e3 b.n 80011d6 <__aeabi_f2d+0x5e>
800120e: 46c0 nop ; (mov r8, r8)
8001210: 800fffff .word 0x800fffff
8001214: 00000389 .word 0x00000389
8001218: 000007ff .word 0x000007ff
0800121c <__clzsi2>:
800121c: 211c movs r1, #28
800121e: 2301 movs r3, #1
8001220: 041b lsls r3, r3, #16
8001222: 4298 cmp r0, r3
8001224: d301 bcc.n 800122a <__clzsi2+0xe>
8001226: 0c00 lsrs r0, r0, #16
8001228: 3910 subs r1, #16
800122a: 0a1b lsrs r3, r3, #8
800122c: 4298 cmp r0, r3
800122e: d301 bcc.n 8001234 <__clzsi2+0x18>
8001230: 0a00 lsrs r0, r0, #8
8001232: 3908 subs r1, #8
8001234: 091b lsrs r3, r3, #4
8001236: 4298 cmp r0, r3
8001238: d301 bcc.n 800123e <__clzsi2+0x22>
800123a: 0900 lsrs r0, r0, #4
800123c: 3904 subs r1, #4
800123e: a202 add r2, pc, #8 ; (adr r2, 8001248 <__clzsi2+0x2c>)
8001240: 5c10 ldrb r0, [r2, r0]
8001242: 1840 adds r0, r0, r1
8001244: 4770 bx lr
8001246: 46c0 nop ; (mov r8, r8)
8001248: 02020304 .word 0x02020304
800124c: 01010101 .word 0x01010101
...
08001258 <__clzdi2>:
8001258: b510 push {r4, lr}
800125a: 2900 cmp r1, #0
800125c: d103 bne.n 8001266 <__clzdi2+0xe>
800125e: f7ff ffdd bl 800121c <__clzsi2>
8001262: 3020 adds r0, #32
8001264: e002 b.n 800126c <__clzdi2+0x14>
8001266: 1c08 adds r0, r1, #0
8001268: f7ff ffd8 bl 800121c <__clzsi2>
800126c: bd10 pop {r4, pc}
800126e: 46c0 nop ; (mov r8, r8)
08001270 <SetAndCorrect>:
//------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//------------------------------------------------------
void SetAndCorrect(void)
{
8001270: b580 push {r7, lr}
8001272: b082 sub sp, #8
8001274: af00 add r7, sp, #0
float fKU, sens_f;
uint32_t k;
switch(pardata.IIN)
8001276: 4bd3 ldr r3, [pc, #844] ; (80015c4 <SetAndCorrect+0x354>)
8001278: 88db ldrh r3, [r3, #6]
800127a: b29b uxth r3, r3
800127c: 2b00 cmp r3, #0
800127e: d002 beq.n 8001286 <SetAndCorrect+0x16>
8001280: 2b01 cmp r3, #1
8001282: d037 beq.n 80012f4 <SetAndCorrect+0x84>
8001284: e06f b.n 8001366 <SetAndCorrect+0xf6>
{
case CHARGE: // ZAR
HAL_GPIO_WritePin(GPIOB, (A2_Pin | A3_Pin), GPIO_PIN_RESET);
8001286: 4bd0 ldr r3, [pc, #832] ; (80015c8 <SetAndCorrect+0x358>)
8001288: 2200 movs r2, #0
800128a: 210c movs r1, #12
800128c: 0018 movs r0, r3
800128e: f003 fc3e bl 8004b0e <HAL_GPIO_WritePin>
if(pardata.IKU < Ku1)
8001292: 4bcc ldr r3, [pc, #816] ; (80015c4 <SetAndCorrect+0x354>)
8001294: 899b ldrh r3, [r3, #12]
8001296: b29b uxth r3, r3
8001298: 2b02 cmp r3, #2
800129a: d80c bhi.n 80012b6 <SetAndCorrect+0x46>
{
HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_RESET);
800129c: 4bca ldr r3, [pc, #808] ; (80015c8 <SetAndCorrect+0x358>)
800129e: 2200 movs r2, #0
80012a0: 2101 movs r1, #1
80012a2: 0018 movs r0, r3
80012a4: f003 fc33 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_SET);
80012a8: 4bc7 ldr r3, [pc, #796] ; (80015c8 <SetAndCorrect+0x358>)
80012aa: 2201 movs r2, #1
80012ac: 2102 movs r1, #2
80012ae: 0018 movs r0, r3
80012b0: f003 fc2d bl 8004b0e <HAL_GPIO_WritePin>
else
{
HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET);
}
break;
80012b4: e057 b.n 8001366 <SetAndCorrect+0xf6>
if(pardata.IKU > Ku100) // >= x200
80012b6: 4bc3 ldr r3, [pc, #780] ; (80015c4 <SetAndCorrect+0x354>)
80012b8: 899b ldrh r3, [r3, #12]
80012ba: b29b uxth r3, r3
80012bc: 2b09 cmp r3, #9
80012be: d90c bls.n 80012da <SetAndCorrect+0x6a>
HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_SET);
80012c0: 4bc1 ldr r3, [pc, #772] ; (80015c8 <SetAndCorrect+0x358>)
80012c2: 2201 movs r2, #1
80012c4: 2101 movs r1, #1
80012c6: 0018 movs r0, r3
80012c8: f003 fc21 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET);
80012cc: 4bbe ldr r3, [pc, #760] ; (80015c8 <SetAndCorrect+0x358>)
80012ce: 2200 movs r2, #0
80012d0: 2102 movs r1, #2
80012d2: 0018 movs r0, r3
80012d4: f003 fc1b bl 8004b0e <HAL_GPIO_WritePin>
break;
80012d8: e045 b.n 8001366 <SetAndCorrect+0xf6>
HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_RESET);
80012da: 4bbb ldr r3, [pc, #748] ; (80015c8 <SetAndCorrect+0x358>)
80012dc: 2200 movs r2, #0
80012de: 2101 movs r1, #1
80012e0: 0018 movs r0, r3
80012e2: f003 fc14 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET);
80012e6: 4bb8 ldr r3, [pc, #736] ; (80015c8 <SetAndCorrect+0x358>)
80012e8: 2200 movs r2, #0
80012ea: 2102 movs r1, #2
80012ec: 0018 movs r0, r3
80012ee: f003 fc0e bl 8004b0e <HAL_GPIO_WritePin>
break;
80012f2: e038 b.n 8001366 <SetAndCorrect+0xf6>
case ICP: // ICP
if(pardata.IKU<Ku1){
80012f4: 4bb3 ldr r3, [pc, #716] ; (80015c4 <SetAndCorrect+0x354>)
80012f6: 899b ldrh r3, [r3, #12]
80012f8: b29b uxth r3, r3
80012fa: 2b02 cmp r3, #2
80012fc: d802 bhi.n 8001304 <SetAndCorrect+0x94>
pardata.IKU=Ku1;
80012fe: 4bb1 ldr r3, [pc, #708] ; (80015c4 <SetAndCorrect+0x354>)
8001300: 2203 movs r2, #3
8001302: 819a strh r2, [r3, #12]
}
if(pardata.IKU > Ku100) // >= x200
8001304: 4baf ldr r3, [pc, #700] ; (80015c4 <SetAndCorrect+0x354>)
8001306: 899b ldrh r3, [r3, #12]
8001308: b29b uxth r3, r3
800130a: 2b09 cmp r3, #9
800130c: d912 bls.n 8001334 <SetAndCorrect+0xc4>
{
HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_SET);
800130e: 4bae ldr r3, [pc, #696] ; (80015c8 <SetAndCorrect+0x358>)
8001310: 2201 movs r2, #1
8001312: 2101 movs r1, #1
8001314: 0018 movs r0, r3
8001316: f003 fbfa bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET);
800131a: 4bab ldr r3, [pc, #684] ; (80015c8 <SetAndCorrect+0x358>)
800131c: 2200 movs r2, #0
800131e: 2102 movs r1, #2
8001320: 0018 movs r0, r3
8001322: f003 fbf4 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A2_Pin | A3_Pin), GPIO_PIN_SET);
8001326: 4ba8 ldr r3, [pc, #672] ; (80015c8 <SetAndCorrect+0x358>)
8001328: 2201 movs r2, #1
800132a: 210c movs r1, #12
800132c: 0018 movs r0, r3
800132e: f003 fbee bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, A2_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, A3_Pin, GPIO_PIN_RESET);
}
break;
8001332: e017 b.n 8001364 <SetAndCorrect+0xf4>
HAL_GPIO_WritePin(GPIOB, A0_Pin, GPIO_PIN_RESET);
8001334: 4ba4 ldr r3, [pc, #656] ; (80015c8 <SetAndCorrect+0x358>)
8001336: 2200 movs r2, #0
8001338: 2101 movs r1, #1
800133a: 0018 movs r0, r3
800133c: f003 fbe7 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A1_Pin, GPIO_PIN_RESET);
8001340: 4ba1 ldr r3, [pc, #644] ; (80015c8 <SetAndCorrect+0x358>)
8001342: 2200 movs r2, #0
8001344: 2102 movs r1, #2
8001346: 0018 movs r0, r3
8001348: f003 fbe1 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A2_Pin, GPIO_PIN_SET);
800134c: 4b9e ldr r3, [pc, #632] ; (80015c8 <SetAndCorrect+0x358>)
800134e: 2201 movs r2, #1
8001350: 2104 movs r1, #4
8001352: 0018 movs r0, r3
8001354: f003 fbdb bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A3_Pin, GPIO_PIN_RESET);
8001358: 4b9b ldr r3, [pc, #620] ; (80015c8 <SetAndCorrect+0x358>)
800135a: 2200 movs r2, #0
800135c: 2108 movs r1, #8
800135e: 0018 movs r0, r3
8001360: f003 fbd5 bl 8004b0e <HAL_GPIO_WritePin>
break;
8001364: 46c0 nop ; (mov r8, r8)
}
switch(pardata.IKU)
8001366: 4b97 ldr r3, [pc, #604] ; (80015c4 <SetAndCorrect+0x354>)
8001368: 899b ldrh r3, [r3, #12]
800136a: b29b uxth r3, r3
800136c: 2b0c cmp r3, #12
800136e: d853 bhi.n 8001418 <SetAndCorrect+0x1a8>
8001370: 009a lsls r2, r3, #2
8001372: 4b96 ldr r3, [pc, #600] ; (80015cc <SetAndCorrect+0x35c>)
8001374: 18d3 adds r3, r2, r3
8001376: 681b ldr r3, [r3, #0]
8001378: 469f mov pc, r3
{//todo
case Ku0_1: case Ku1: // 0.1, 1
HAL_GPIO_WritePin(GPIOB, (A4_Pin | A5_Pin | A6_Pin), GPIO_PIN_RESET);
800137a: 4b93 ldr r3, [pc, #588] ; (80015c8 <SetAndCorrect+0x358>)
800137c: 2200 movs r2, #0
800137e: 2170 movs r1, #112 ; 0x70
8001380: 0018 movs r0, r3
8001382: f003 fbc4 bl 8004b0e <HAL_GPIO_WritePin>
break;
8001386: e047 b.n 8001418 <SetAndCorrect+0x1a8>
case Ku0_2: case Ku2: // 0.2, 2
HAL_GPIO_WritePin(GPIOB, A4_Pin, GPIO_PIN_SET);
8001388: 4b8f ldr r3, [pc, #572] ; (80015c8 <SetAndCorrect+0x358>)
800138a: 2201 movs r2, #1
800138c: 2110 movs r1, #16
800138e: 0018 movs r0, r3
8001390: f003 fbbd bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A5_Pin | A6_Pin), GPIO_PIN_RESET);
8001394: 4b8c ldr r3, [pc, #560] ; (80015c8 <SetAndCorrect+0x358>)
8001396: 2200 movs r2, #0
8001398: 2160 movs r1, #96 ; 0x60
800139a: 0018 movs r0, r3
800139c: f003 fbb7 bl 8004b0e <HAL_GPIO_WritePin>
break;
80013a0: e03a b.n 8001418 <SetAndCorrect+0x1a8>
case Ku0_5: case Ku5: // 0.5, 5
HAL_GPIO_WritePin(GPIOB, A5_Pin, GPIO_PIN_SET);
80013a2: 4b89 ldr r3, [pc, #548] ; (80015c8 <SetAndCorrect+0x358>)
80013a4: 2201 movs r2, #1
80013a6: 2120 movs r1, #32
80013a8: 0018 movs r0, r3
80013aa: f003 fbb0 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A4_Pin | A6_Pin), GPIO_PIN_RESET);
80013ae: 4b86 ldr r3, [pc, #536] ; (80015c8 <SetAndCorrect+0x358>)
80013b0: 2200 movs r2, #0
80013b2: 2150 movs r1, #80 ; 0x50
80013b4: 0018 movs r0, r3
80013b6: f003 fbaa bl 8004b0e <HAL_GPIO_WritePin>
break;
80013ba: e02d b.n 8001418 <SetAndCorrect+0x1a8>
case Ku10: // 10
HAL_GPIO_WritePin(GPIOB, A6_Pin, GPIO_PIN_RESET);
80013bc: 4b82 ldr r3, [pc, #520] ; (80015c8 <SetAndCorrect+0x358>)
80013be: 2200 movs r2, #0
80013c0: 2140 movs r1, #64 ; 0x40
80013c2: 0018 movs r0, r3
80013c4: f003 fba3 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A4_Pin | A5_Pin), GPIO_PIN_SET);
80013c8: 4b7f ldr r3, [pc, #508] ; (80015c8 <SetAndCorrect+0x358>)
80013ca: 2201 movs r2, #1
80013cc: 2130 movs r1, #48 ; 0x30
80013ce: 0018 movs r0, r3
80013d0: f003 fb9d bl 8004b0e <HAL_GPIO_WritePin>
break;
80013d4: e020 b.n 8001418 <SetAndCorrect+0x1a8>
case Ku20: case Ku200: // 20, 200
HAL_GPIO_WritePin(GPIOB, (A4_Pin | A6_Pin), GPIO_PIN_SET);
80013d6: 4b7c ldr r3, [pc, #496] ; (80015c8 <SetAndCorrect+0x358>)
80013d8: 2201 movs r2, #1
80013da: 2150 movs r1, #80 ; 0x50
80013dc: 0018 movs r0, r3
80013de: f003 fb96 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A5_Pin, GPIO_PIN_RESET);
80013e2: 4b79 ldr r3, [pc, #484] ; (80015c8 <SetAndCorrect+0x358>)
80013e4: 2200 movs r2, #0
80013e6: 2120 movs r1, #32
80013e8: 0018 movs r0, r3
80013ea: f003 fb90 bl 8004b0e <HAL_GPIO_WritePin>
break;
80013ee: e013 b.n 8001418 <SetAndCorrect+0x1a8>
case Ku50: case Ku500: // 50, 500
HAL_GPIO_WritePin(GPIOB, (A5_Pin | A6_Pin), GPIO_PIN_SET);
80013f0: 4b75 ldr r3, [pc, #468] ; (80015c8 <SetAndCorrect+0x358>)
80013f2: 2201 movs r2, #1
80013f4: 2160 movs r1, #96 ; 0x60
80013f6: 0018 movs r0, r3
80013f8: f003 fb89 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A4_Pin, GPIO_PIN_RESET);
80013fc: 4b72 ldr r3, [pc, #456] ; (80015c8 <SetAndCorrect+0x358>)
80013fe: 2200 movs r2, #0
8001400: 2110 movs r1, #16
8001402: 0018 movs r0, r3
8001404: f003 fb83 bl 8004b0e <HAL_GPIO_WritePin>
break;
8001408: e006 b.n 8001418 <SetAndCorrect+0x1a8>
case Ku100: case Ku1000: // 100, 1000
HAL_GPIO_WritePin(GPIOB, (A4_Pin | A5_Pin | A6_Pin), GPIO_PIN_SET);
800140a: 4b6f ldr r3, [pc, #444] ; (80015c8 <SetAndCorrect+0x358>)
800140c: 2201 movs r2, #1
800140e: 2170 movs r1, #112 ; 0x70
8001410: 0018 movs r0, r3
8001412: f003 fb7c bl 8004b0e <HAL_GPIO_WritePin>
break;
8001416: 46c0 nop ; (mov r8, r8)
}
if(clbr)
8001418: 4b6d ldr r3, [pc, #436] ; (80015d0 <SetAndCorrect+0x360>)
800141a: 781b ldrb r3, [r3, #0]
800141c: b2db uxtb r3, r3
800141e: 2b00 cmp r3, #0
8001420: d015 beq.n 800144e <SetAndCorrect+0x1de>
{
HAL_GPIO_WritePin(GPIOB, (A7_Pin | A8_Pin), GPIO_PIN_SET); //HP 2HZ
8001422: 23c0 movs r3, #192 ; 0xc0
8001424: 005b lsls r3, r3, #1
8001426: 4868 ldr r0, [pc, #416] ; (80015c8 <SetAndCorrect+0x358>)
8001428: 2201 movs r2, #1
800142a: 0019 movs r1, r3
800142c: f003 fb6f bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A9_Pin, GPIO_PIN_RESET); //HP 2HZ
8001430: 2380 movs r3, #128 ; 0x80
8001432: 009b lsls r3, r3, #2
8001434: 4864 ldr r0, [pc, #400] ; (80015c8 <SetAndCorrect+0x358>)
8001436: 2200 movs r2, #0
8001438: 0019 movs r1, r3
800143a: f003 fb68 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin | A12_Pin), GPIO_PIN_SET); //LP 100kHz
800143e: 23e0 movs r3, #224 ; 0xe0
8001440: 015b lsls r3, r3, #5
8001442: 4861 ldr r0, [pc, #388] ; (80015c8 <SetAndCorrect+0x358>)
8001444: 2201 movs r2, #1
8001446: 0019 movs r1, r3
8001448: f003 fb61 bl 8004b0e <HAL_GPIO_WritePin>
800144c: e0ce b.n 80015ec <SetAndCorrect+0x37c>
}
else
{
switch(pardata.IFV) // HPF
800144e: 4b5d ldr r3, [pc, #372] ; (80015c4 <SetAndCorrect+0x354>)
8001450: 891b ldrh r3, [r3, #8]
8001452: b29b uxth r3, r3
8001454: 2b04 cmp r3, #4
8001456: d847 bhi.n 80014e8 <SetAndCorrect+0x278>
8001458: 009a lsls r2, r3, #2
800145a: 4b5e ldr r3, [pc, #376] ; (80015d4 <SetAndCorrect+0x364>)
800145c: 18d3 adds r3, r2, r3
800145e: 681b ldr r3, [r3, #0]
8001460: 469f mov pc, r3
{
case Hp0_2: // 0,2 Hz
HAL_GPIO_WritePin(GPIOB, (A7_Pin | A8_Pin | A9_Pin), GPIO_PIN_RESET);
8001462: 23e0 movs r3, #224 ; 0xe0
8001464: 009b lsls r3, r3, #2
8001466: 4858 ldr r0, [pc, #352] ; (80015c8 <SetAndCorrect+0x358>)
8001468: 2200 movs r2, #0
800146a: 0019 movs r1, r3
800146c: f003 fb4f bl 8004b0e <HAL_GPIO_WritePin>
break;
8001470: e03a b.n 80014e8 <SetAndCorrect+0x278>
case Hp0_3: // 0,3 Hz
HAL_GPIO_WritePin(GPIOB, A7_Pin, GPIO_PIN_SET);
8001472: 4b55 ldr r3, [pc, #340] ; (80015c8 <SetAndCorrect+0x358>)
8001474: 2201 movs r2, #1
8001476: 2180 movs r1, #128 ; 0x80
8001478: 0018 movs r0, r3
800147a: f003 fb48 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A8_Pin | A9_Pin), GPIO_PIN_RESET);
800147e: 23c0 movs r3, #192 ; 0xc0
8001480: 009b lsls r3, r3, #2
8001482: 4851 ldr r0, [pc, #324] ; (80015c8 <SetAndCorrect+0x358>)
8001484: 2200 movs r2, #0
8001486: 0019 movs r1, r3
8001488: f003 fb41 bl 8004b0e <HAL_GPIO_WritePin>
break;
800148c: e02c b.n 80014e8 <SetAndCorrect+0x278>
case Hp1: // 1 Hz
HAL_GPIO_WritePin(GPIOB, A8_Pin, GPIO_PIN_SET);
800148e: 2380 movs r3, #128 ; 0x80
8001490: 005b lsls r3, r3, #1
8001492: 484d ldr r0, [pc, #308] ; (80015c8 <SetAndCorrect+0x358>)
8001494: 2201 movs r2, #1
8001496: 0019 movs r1, r3
8001498: f003 fb39 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A7_Pin | A9_Pin), GPIO_PIN_RESET);
800149c: 23a0 movs r3, #160 ; 0xa0
800149e: 009b lsls r3, r3, #2
80014a0: 4849 ldr r0, [pc, #292] ; (80015c8 <SetAndCorrect+0x358>)
80014a2: 2200 movs r2, #0
80014a4: 0019 movs r1, r3
80014a6: f003 fb32 bl 8004b0e <HAL_GPIO_WritePin>
break;
80014aa: e01d b.n 80014e8 <SetAndCorrect+0x278>
case Hp2: // 2 Hz
HAL_GPIO_WritePin(GPIOB, (A7_Pin | A8_Pin), GPIO_PIN_SET);
80014ac: 23c0 movs r3, #192 ; 0xc0
80014ae: 005b lsls r3, r3, #1
80014b0: 4845 ldr r0, [pc, #276] ; (80015c8 <SetAndCorrect+0x358>)
80014b2: 2201 movs r2, #1
80014b4: 0019 movs r1, r3
80014b6: f003 fb2a bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A9_Pin, GPIO_PIN_RESET);
80014ba: 2380 movs r3, #128 ; 0x80
80014bc: 009b lsls r3, r3, #2
80014be: 4842 ldr r0, [pc, #264] ; (80015c8 <SetAndCorrect+0x358>)
80014c0: 2200 movs r2, #0
80014c2: 0019 movs r1, r3
80014c4: f003 fb23 bl 8004b0e <HAL_GPIO_WritePin>
break;
80014c8: e00e b.n 80014e8 <SetAndCorrect+0x278>
case Hp10: // 10 Hz
HAL_GPIO_WritePin(GPIOB, A9_Pin, GPIO_PIN_SET);
80014ca: 2380 movs r3, #128 ; 0x80
80014cc: 009b lsls r3, r3, #2
80014ce: 483e ldr r0, [pc, #248] ; (80015c8 <SetAndCorrect+0x358>)
80014d0: 2201 movs r2, #1
80014d2: 0019 movs r1, r3
80014d4: f003 fb1b bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A7_Pin | A8_Pin), GPIO_PIN_RESET);
80014d8: 23c0 movs r3, #192 ; 0xc0
80014da: 005b lsls r3, r3, #1
80014dc: 483a ldr r0, [pc, #232] ; (80015c8 <SetAndCorrect+0x358>)
80014de: 2200 movs r2, #0
80014e0: 0019 movs r1, r3
80014e2: f003 fb14 bl 8004b0e <HAL_GPIO_WritePin>
break;
80014e6: 46c0 nop ; (mov r8, r8)
}
switch(pardata.IFN) //LPF
80014e8: 4b36 ldr r3, [pc, #216] ; (80015c4 <SetAndCorrect+0x354>)
80014ea: 895b ldrh r3, [r3, #10]
80014ec: b29b uxth r3, r3
80014ee: 2b07 cmp r3, #7
80014f0: d900 bls.n 80014f4 <SetAndCorrect+0x284>
80014f2: e07b b.n 80015ec <SetAndCorrect+0x37c>
80014f4: 009a lsls r2, r3, #2
80014f6: 4b38 ldr r3, [pc, #224] ; (80015d8 <SetAndCorrect+0x368>)
80014f8: 18d3 adds r3, r2, r3
80014fa: 681b ldr r3, [r3, #0]
80014fc: 469f mov pc, r3
{
case Lp200: // 200 Hz
HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin | A12_Pin), GPIO_PIN_RESET);
80014fe: 23e0 movs r3, #224 ; 0xe0
8001500: 015b lsls r3, r3, #5
8001502: 4831 ldr r0, [pc, #196] ; (80015c8 <SetAndCorrect+0x358>)
8001504: 2200 movs r2, #0
8001506: 0019 movs r1, r3
8001508: f003 fb01 bl 8004b0e <HAL_GPIO_WritePin>
break; // 500 Hz
800150c: e06e b.n 80015ec <SetAndCorrect+0x37c>
case Lp500:
HAL_GPIO_WritePin(GPIOB, A10_Pin, GPIO_PIN_SET);
800150e: 2380 movs r3, #128 ; 0x80
8001510: 00db lsls r3, r3, #3
8001512: 482d ldr r0, [pc, #180] ; (80015c8 <SetAndCorrect+0x358>)
8001514: 2201 movs r2, #1
8001516: 0019 movs r1, r3
8001518: f003 faf9 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A11_Pin | A12_Pin), GPIO_PIN_RESET);
800151c: 23c0 movs r3, #192 ; 0xc0
800151e: 015b lsls r3, r3, #5
8001520: 4829 ldr r0, [pc, #164] ; (80015c8 <SetAndCorrect+0x358>)
8001522: 2200 movs r2, #0
8001524: 0019 movs r1, r3
8001526: f003 faf2 bl 8004b0e <HAL_GPIO_WritePin>
break;
800152a: e05f b.n 80015ec <SetAndCorrect+0x37c>
case Lp1000: // 1 kHz
HAL_GPIO_WritePin(GPIOB, A11_Pin, GPIO_PIN_SET);
800152c: 2380 movs r3, #128 ; 0x80
800152e: 011b lsls r3, r3, #4
8001530: 4825 ldr r0, [pc, #148] ; (80015c8 <SetAndCorrect+0x358>)
8001532: 2201 movs r2, #1
8001534: 0019 movs r1, r3
8001536: f003 faea bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A10_Pin | A12_Pin), GPIO_PIN_RESET);
800153a: 23a0 movs r3, #160 ; 0xa0
800153c: 015b lsls r3, r3, #5
800153e: 4822 ldr r0, [pc, #136] ; (80015c8 <SetAndCorrect+0x358>)
8001540: 2200 movs r2, #0
8001542: 0019 movs r1, r3
8001544: f003 fae3 bl 8004b0e <HAL_GPIO_WritePin>
break;
8001548: e050 b.n 80015ec <SetAndCorrect+0x37c>
case Lp5000: // 5 kHz
HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin), GPIO_PIN_SET);
800154a: 23c0 movs r3, #192 ; 0xc0
800154c: 011b lsls r3, r3, #4
800154e: 481e ldr r0, [pc, #120] ; (80015c8 <SetAndCorrect+0x358>)
8001550: 2201 movs r2, #1
8001552: 0019 movs r1, r3
8001554: f003 fadb bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A12_Pin, GPIO_PIN_RESET);
8001558: 2380 movs r3, #128 ; 0x80
800155a: 015b lsls r3, r3, #5
800155c: 481a ldr r0, [pc, #104] ; (80015c8 <SetAndCorrect+0x358>)
800155e: 2200 movs r2, #0
8001560: 0019 movs r1, r3
8001562: f003 fad4 bl 8004b0e <HAL_GPIO_WritePin>
break;
8001566: e041 b.n 80015ec <SetAndCorrect+0x37c>
case Lp10000: // 10 kHz
HAL_GPIO_WritePin(GPIOB, A12_Pin, GPIO_PIN_SET);
8001568: 2380 movs r3, #128 ; 0x80
800156a: 015b lsls r3, r3, #5
800156c: 4816 ldr r0, [pc, #88] ; (80015c8 <SetAndCorrect+0x358>)
800156e: 2201 movs r2, #1
8001570: 0019 movs r1, r3
8001572: f003 facc bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin), GPIO_PIN_RESET);
8001576: 23c0 movs r3, #192 ; 0xc0
8001578: 011b lsls r3, r3, #4
800157a: 4813 ldr r0, [pc, #76] ; (80015c8 <SetAndCorrect+0x358>)
800157c: 2200 movs r2, #0
800157e: 0019 movs r1, r3
8001580: f003 fac5 bl 8004b0e <HAL_GPIO_WritePin>
break;
8001584: e032 b.n 80015ec <SetAndCorrect+0x37c>
case Lp20000: // 20 kHz
HAL_GPIO_WritePin(GPIOB, (A12_Pin | A10_Pin), GPIO_PIN_SET);
8001586: 23a0 movs r3, #160 ; 0xa0
8001588: 015b lsls r3, r3, #5
800158a: 480f ldr r0, [pc, #60] ; (80015c8 <SetAndCorrect+0x358>)
800158c: 2201 movs r2, #1
800158e: 0019 movs r1, r3
8001590: f003 fabd bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A11_Pin, GPIO_PIN_RESET);
8001594: 2380 movs r3, #128 ; 0x80
8001596: 011b lsls r3, r3, #4
8001598: 480b ldr r0, [pc, #44] ; (80015c8 <SetAndCorrect+0x358>)
800159a: 2200 movs r2, #0
800159c: 0019 movs r1, r3
800159e: f003 fab6 bl 8004b0e <HAL_GPIO_WritePin>
break;
80015a2: e023 b.n 80015ec <SetAndCorrect+0x37c>
case Lp50000: // 50 kHz
HAL_GPIO_WritePin(GPIOB, (A12_Pin | A11_Pin), GPIO_PIN_SET);
80015a4: 23c0 movs r3, #192 ; 0xc0
80015a6: 015b lsls r3, r3, #5
80015a8: 4807 ldr r0, [pc, #28] ; (80015c8 <SetAndCorrect+0x358>)
80015aa: 2201 movs r2, #1
80015ac: 0019 movs r1, r3
80015ae: f003 faae bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, A10_Pin, GPIO_PIN_RESET);
80015b2: 2380 movs r3, #128 ; 0x80
80015b4: 00db lsls r3, r3, #3
80015b6: 4804 ldr r0, [pc, #16] ; (80015c8 <SetAndCorrect+0x358>)
80015b8: 2200 movs r2, #0
80015ba: 0019 movs r1, r3
80015bc: f003 faa7 bl 8004b0e <HAL_GPIO_WritePin>
break;
80015c0: e014 b.n 80015ec <SetAndCorrect+0x37c>
80015c2: 46c0 nop ; (mov r8, r8)
80015c4: 20000098 .word 0x20000098
80015c8: 50000400 .word 0x50000400
80015cc: 080070a8 .word 0x080070a8
80015d0: 20000034 .word 0x20000034
80015d4: 080070dc .word 0x080070dc
80015d8: 080070f0 .word 0x080070f0
case Lp100000: // 100 kHz
HAL_GPIO_WritePin(GPIOB, (A10_Pin | A11_Pin | A12_Pin), GPIO_PIN_SET);
80015dc: 23e0 movs r3, #224 ; 0xe0
80015de: 015b lsls r3, r3, #5
80015e0: 48a6 ldr r0, [pc, #664] ; (800187c <SetAndCorrect+0x60c>)
80015e2: 2201 movs r2, #1
80015e4: 0019 movs r1, r3
80015e6: f003 fa92 bl 8004b0e <HAL_GPIO_WritePin>
break;
80015ea: 46c0 nop ; (mov r8, r8)
}
}
fKU = (float) CorrWord[pardata.IIN][pardata.IKU];
80015ec: 4ba4 ldr r3, [pc, #656] ; (8001880 <SetAndCorrect+0x610>)
80015ee: 88db ldrh r3, [r3, #6]
80015f0: b29b uxth r3, r3
80015f2: 0019 movs r1, r3
80015f4: 4ba2 ldr r3, [pc, #648] ; (8001880 <SetAndCorrect+0x610>)
80015f6: 899b ldrh r3, [r3, #12]
80015f8: b29b uxth r3, r3
80015fa: 0018 movs r0, r3
80015fc: 4aa1 ldr r2, [pc, #644] ; (8001884 <SetAndCorrect+0x614>)
80015fe: 000b movs r3, r1
8001600: 009b lsls r3, r3, #2
8001602: 185b adds r3, r3, r1
8001604: 009b lsls r3, r3, #2
8001606: 181b adds r3, r3, r0
8001608: 005b lsls r3, r3, #1
800160a: 5a9b ldrh r3, [r3, r2]
800160c: b29b uxth r3, r3
800160e: 0018 movs r0, r3
8001610: f7ff fc6c bl 8000eec <__aeabi_ui2f>
8001614: 1c03 adds r3, r0, #0
8001616: 607b str r3, [r7, #4]
if(DVD > 0xfff) {
DVD = 0xfff;
}
*/
if (pardata.SENS>=0.0001&&pardata.SENS<0.001) {OffsetKuDisplay=0; kNormToDAC=pardata.SENS*10000;} // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
8001618: 4b99 ldr r3, [pc, #612] ; (8001880 <SetAndCorrect+0x610>)
800161a: 6a1b ldr r3, [r3, #32]
800161c: 1c18 adds r0, r3, #0
800161e: f7ff fdab bl 8001178 <__aeabi_f2d>
8001622: 4a99 ldr r2, [pc, #612] ; (8001888 <SetAndCorrect+0x618>)
8001624: 4b99 ldr r3, [pc, #612] ; (800188c <SetAndCorrect+0x61c>)
8001626: f7fe fe2f bl 8000288 <__aeabi_dcmpge>
800162a: 1e03 subs r3, r0, #0
800162c: d018 beq.n 8001660 <SetAndCorrect+0x3f0>
800162e: 4b94 ldr r3, [pc, #592] ; (8001880 <SetAndCorrect+0x610>)
8001630: 6a1b ldr r3, [r3, #32]
8001632: 1c18 adds r0, r3, #0
8001634: f7ff fda0 bl 8001178 <__aeabi_f2d>
8001638: 4a95 ldr r2, [pc, #596] ; (8001890 <SetAndCorrect+0x620>)
800163a: 4b96 ldr r3, [pc, #600] ; (8001894 <SetAndCorrect+0x624>)
800163c: f7fe fe06 bl 800024c <__aeabi_dcmplt>
8001640: 1e03 subs r3, r0, #0
8001642: d00d beq.n 8001660 <SetAndCorrect+0x3f0>
8001644: 4b94 ldr r3, [pc, #592] ; (8001898 <SetAndCorrect+0x628>)
8001646: 2200 movs r2, #0
8001648: 601a str r2, [r3, #0]
800164a: 4b8d ldr r3, [pc, #564] ; (8001880 <SetAndCorrect+0x610>)
800164c: 6a1b ldr r3, [r3, #32]
800164e: 4993 ldr r1, [pc, #588] ; (800189c <SetAndCorrect+0x62c>)
8001650: 1c18 adds r0, r3, #0
8001652: f7ff f96f bl 8000934 <__aeabi_fmul>
8001656: 1c03 adds r3, r0, #0
8001658: 1c1a adds r2, r3, #0
800165a: 4b91 ldr r3, [pc, #580] ; (80018a0 <SetAndCorrect+0x630>)
800165c: 601a str r2, [r3, #0]
800165e: e0f9 b.n 8001854 <SetAndCorrect+0x5e4>
else if (pardata.SENS>=0.001&&pardata.SENS<0.01){OffsetKuDisplay=0; kNormToDAC=pardata.SENS*1000;}
8001660: 4b87 ldr r3, [pc, #540] ; (8001880 <SetAndCorrect+0x610>)
8001662: 6a1b ldr r3, [r3, #32]
8001664: 1c18 adds r0, r3, #0
8001666: f7ff fd87 bl 8001178 <__aeabi_f2d>
800166a: 4a89 ldr r2, [pc, #548] ; (8001890 <SetAndCorrect+0x620>)
800166c: 4b89 ldr r3, [pc, #548] ; (8001894 <SetAndCorrect+0x624>)
800166e: f7fe fe0b bl 8000288 <__aeabi_dcmpge>
8001672: 1e03 subs r3, r0, #0
8001674: d018 beq.n 80016a8 <SetAndCorrect+0x438>
8001676: 4b82 ldr r3, [pc, #520] ; (8001880 <SetAndCorrect+0x610>)
8001678: 6a1b ldr r3, [r3, #32]
800167a: 1c18 adds r0, r3, #0
800167c: f7ff fd7c bl 8001178 <__aeabi_f2d>
8001680: 4a88 ldr r2, [pc, #544] ; (80018a4 <SetAndCorrect+0x634>)
8001682: 4b89 ldr r3, [pc, #548] ; (80018a8 <SetAndCorrect+0x638>)
8001684: f7fe fde2 bl 800024c <__aeabi_dcmplt>
8001688: 1e03 subs r3, r0, #0
800168a: d00d beq.n 80016a8 <SetAndCorrect+0x438>
800168c: 4b82 ldr r3, [pc, #520] ; (8001898 <SetAndCorrect+0x628>)
800168e: 2200 movs r2, #0
8001690: 601a str r2, [r3, #0]
8001692: 4b7b ldr r3, [pc, #492] ; (8001880 <SetAndCorrect+0x610>)
8001694: 6a1b ldr r3, [r3, #32]
8001696: 4985 ldr r1, [pc, #532] ; (80018ac <SetAndCorrect+0x63c>)
8001698: 1c18 adds r0, r3, #0
800169a: f7ff f94b bl 8000934 <__aeabi_fmul>
800169e: 1c03 adds r3, r0, #0
80016a0: 1c1a adds r2, r3, #0
80016a2: 4b7f ldr r3, [pc, #508] ; (80018a0 <SetAndCorrect+0x630>)
80016a4: 601a str r2, [r3, #0]
80016a6: e0d5 b.n 8001854 <SetAndCorrect+0x5e4>
else if (pardata.SENS>=0.01&&pardata.SENS<0.1){OffsetKuDisplay=3; kNormToDAC=pardata.SENS*100;}
80016a8: 4b75 ldr r3, [pc, #468] ; (8001880 <SetAndCorrect+0x610>)
80016aa: 6a1b ldr r3, [r3, #32]
80016ac: 1c18 adds r0, r3, #0
80016ae: f7ff fd63 bl 8001178 <__aeabi_f2d>
80016b2: 4a7c ldr r2, [pc, #496] ; (80018a4 <SetAndCorrect+0x634>)
80016b4: 4b7c ldr r3, [pc, #496] ; (80018a8 <SetAndCorrect+0x638>)
80016b6: f7fe fde7 bl 8000288 <__aeabi_dcmpge>
80016ba: 1e03 subs r3, r0, #0
80016bc: d018 beq.n 80016f0 <SetAndCorrect+0x480>
80016be: 4b70 ldr r3, [pc, #448] ; (8001880 <SetAndCorrect+0x610>)
80016c0: 6a1b ldr r3, [r3, #32]
80016c2: 1c18 adds r0, r3, #0
80016c4: f7ff fd58 bl 8001178 <__aeabi_f2d>
80016c8: 4a79 ldr r2, [pc, #484] ; (80018b0 <SetAndCorrect+0x640>)
80016ca: 4b7a ldr r3, [pc, #488] ; (80018b4 <SetAndCorrect+0x644>)
80016cc: f7fe fdbe bl 800024c <__aeabi_dcmplt>
80016d0: 1e03 subs r3, r0, #0
80016d2: d00d beq.n 80016f0 <SetAndCorrect+0x480>
80016d4: 4b70 ldr r3, [pc, #448] ; (8001898 <SetAndCorrect+0x628>)
80016d6: 2203 movs r2, #3
80016d8: 601a str r2, [r3, #0]
80016da: 4b69 ldr r3, [pc, #420] ; (8001880 <SetAndCorrect+0x610>)
80016dc: 6a1b ldr r3, [r3, #32]
80016de: 4976 ldr r1, [pc, #472] ; (80018b8 <SetAndCorrect+0x648>)
80016e0: 1c18 adds r0, r3, #0
80016e2: f7ff f927 bl 8000934 <__aeabi_fmul>
80016e6: 1c03 adds r3, r0, #0
80016e8: 1c1a adds r2, r3, #0
80016ea: 4b6d ldr r3, [pc, #436] ; (80018a0 <SetAndCorrect+0x630>)
80016ec: 601a str r2, [r3, #0]
80016ee: e0b1 b.n 8001854 <SetAndCorrect+0x5e4>
else if (pardata.SENS>=0.1&&pardata.SENS<1){OffsetKuDisplay=6; kNormToDAC=pardata.SENS*10;}
80016f0: 4b63 ldr r3, [pc, #396] ; (8001880 <SetAndCorrect+0x610>)
80016f2: 6a1b ldr r3, [r3, #32]
80016f4: 1c18 adds r0, r3, #0
80016f6: f7ff fd3f bl 8001178 <__aeabi_f2d>
80016fa: 4a6d ldr r2, [pc, #436] ; (80018b0 <SetAndCorrect+0x640>)
80016fc: 4b6d ldr r3, [pc, #436] ; (80018b4 <SetAndCorrect+0x644>)
80016fe: f7fe fdc3 bl 8000288 <__aeabi_dcmpge>
8001702: 1e03 subs r3, r0, #0
8001704: d016 beq.n 8001734 <SetAndCorrect+0x4c4>
8001706: 4b5e ldr r3, [pc, #376] ; (8001880 <SetAndCorrect+0x610>)
8001708: 6a1b ldr r3, [r3, #32]
800170a: 21fe movs r1, #254 ; 0xfe
800170c: 0589 lsls r1, r1, #22
800170e: 1c18 adds r0, r3, #0
8001710: f7fe fdd6 bl 80002c0 <__aeabi_fcmplt>
8001714: 1e03 subs r3, r0, #0
8001716: d00d beq.n 8001734 <SetAndCorrect+0x4c4>
8001718: 4b5f ldr r3, [pc, #380] ; (8001898 <SetAndCorrect+0x628>)
800171a: 2206 movs r2, #6
800171c: 601a str r2, [r3, #0]
800171e: 4b58 ldr r3, [pc, #352] ; (8001880 <SetAndCorrect+0x610>)
8001720: 6a1b ldr r3, [r3, #32]
8001722: 4966 ldr r1, [pc, #408] ; (80018bc <SetAndCorrect+0x64c>)
8001724: 1c18 adds r0, r3, #0
8001726: f7ff f905 bl 8000934 <__aeabi_fmul>
800172a: 1c03 adds r3, r0, #0
800172c: 1c1a adds r2, r3, #0
800172e: 4b5c ldr r3, [pc, #368] ; (80018a0 <SetAndCorrect+0x630>)
8001730: 601a str r2, [r3, #0]
8001732: e08f b.n 8001854 <SetAndCorrect+0x5e4>
else if (pardata.SENS>=1&&pardata.SENS<10){OffsetKuDisplay=9; kNormToDAC=pardata.SENS/1;}
8001734: 4b52 ldr r3, [pc, #328] ; (8001880 <SetAndCorrect+0x610>)
8001736: 6a1b ldr r3, [r3, #32]
8001738: 21fe movs r1, #254 ; 0xfe
800173a: 0589 lsls r1, r1, #22
800173c: 1c18 adds r0, r3, #0
800173e: f7fe fddd bl 80002fc <__aeabi_fcmpge>
8001742: 1e03 subs r3, r0, #0
8001744: d00f beq.n 8001766 <SetAndCorrect+0x4f6>
8001746: 4b4e ldr r3, [pc, #312] ; (8001880 <SetAndCorrect+0x610>)
8001748: 6a1b ldr r3, [r3, #32]
800174a: 495c ldr r1, [pc, #368] ; (80018bc <SetAndCorrect+0x64c>)
800174c: 1c18 adds r0, r3, #0
800174e: f7fe fdb7 bl 80002c0 <__aeabi_fcmplt>
8001752: 1e03 subs r3, r0, #0
8001754: d007 beq.n 8001766 <SetAndCorrect+0x4f6>
8001756: 4b50 ldr r3, [pc, #320] ; (8001898 <SetAndCorrect+0x628>)
8001758: 2209 movs r2, #9
800175a: 601a str r2, [r3, #0]
800175c: 4b48 ldr r3, [pc, #288] ; (8001880 <SetAndCorrect+0x610>)
800175e: 6a1a ldr r2, [r3, #32]
8001760: 4b4f ldr r3, [pc, #316] ; (80018a0 <SetAndCorrect+0x630>)
8001762: 601a str r2, [r3, #0]
8001764: e076 b.n 8001854 <SetAndCorrect+0x5e4>
else if (pardata.SENS>=10&&pardata.SENS<100){OffsetKuDisplay=12; kNormToDAC=pardata.SENS/10;}
8001766: 4b46 ldr r3, [pc, #280] ; (8001880 <SetAndCorrect+0x610>)
8001768: 6a1b ldr r3, [r3, #32]
800176a: 4954 ldr r1, [pc, #336] ; (80018bc <SetAndCorrect+0x64c>)
800176c: 1c18 adds r0, r3, #0
800176e: f7fe fdc5 bl 80002fc <__aeabi_fcmpge>
8001772: 1e03 subs r3, r0, #0
8001774: d015 beq.n 80017a2 <SetAndCorrect+0x532>
8001776: 4b42 ldr r3, [pc, #264] ; (8001880 <SetAndCorrect+0x610>)
8001778: 6a1b ldr r3, [r3, #32]
800177a: 494f ldr r1, [pc, #316] ; (80018b8 <SetAndCorrect+0x648>)
800177c: 1c18 adds r0, r3, #0
800177e: f7fe fd9f bl 80002c0 <__aeabi_fcmplt>
8001782: 1e03 subs r3, r0, #0
8001784: d00d beq.n 80017a2 <SetAndCorrect+0x532>
8001786: 4b44 ldr r3, [pc, #272] ; (8001898 <SetAndCorrect+0x628>)
8001788: 220c movs r2, #12
800178a: 601a str r2, [r3, #0]
800178c: 4b3c ldr r3, [pc, #240] ; (8001880 <SetAndCorrect+0x610>)
800178e: 6a1b ldr r3, [r3, #32]
8001790: 494a ldr r1, [pc, #296] ; (80018bc <SetAndCorrect+0x64c>)
8001792: 1c18 adds r0, r3, #0
8001794: f7fe fede bl 8000554 <__aeabi_fdiv>
8001798: 1c03 adds r3, r0, #0
800179a: 1c1a adds r2, r3, #0
800179c: 4b40 ldr r3, [pc, #256] ; (80018a0 <SetAndCorrect+0x630>)
800179e: 601a str r2, [r3, #0]
80017a0: e058 b.n 8001854 <SetAndCorrect+0x5e4>
else if (pardata.SENS>=100&&pardata.SENS<1000){OffsetKuDisplay=15; kNormToDAC=pardata.SENS/100;}
80017a2: 4b37 ldr r3, [pc, #220] ; (8001880 <SetAndCorrect+0x610>)
80017a4: 6a1b ldr r3, [r3, #32]
80017a6: 4944 ldr r1, [pc, #272] ; (80018b8 <SetAndCorrect+0x648>)
80017a8: 1c18 adds r0, r3, #0
80017aa: f7fe fda7 bl 80002fc <__aeabi_fcmpge>
80017ae: 1e03 subs r3, r0, #0
80017b0: d015 beq.n 80017de <SetAndCorrect+0x56e>
80017b2: 4b33 ldr r3, [pc, #204] ; (8001880 <SetAndCorrect+0x610>)
80017b4: 6a1b ldr r3, [r3, #32]
80017b6: 493d ldr r1, [pc, #244] ; (80018ac <SetAndCorrect+0x63c>)
80017b8: 1c18 adds r0, r3, #0
80017ba: f7fe fd81 bl 80002c0 <__aeabi_fcmplt>
80017be: 1e03 subs r3, r0, #0
80017c0: d00d beq.n 80017de <SetAndCorrect+0x56e>
80017c2: 4b35 ldr r3, [pc, #212] ; (8001898 <SetAndCorrect+0x628>)
80017c4: 220f movs r2, #15
80017c6: 601a str r2, [r3, #0]
80017c8: 4b2d ldr r3, [pc, #180] ; (8001880 <SetAndCorrect+0x610>)
80017ca: 6a1b ldr r3, [r3, #32]
80017cc: 493a ldr r1, [pc, #232] ; (80018b8 <SetAndCorrect+0x648>)
80017ce: 1c18 adds r0, r3, #0
80017d0: f7fe fec0 bl 8000554 <__aeabi_fdiv>
80017d4: 1c03 adds r3, r0, #0
80017d6: 1c1a adds r2, r3, #0
80017d8: 4b31 ldr r3, [pc, #196] ; (80018a0 <SetAndCorrect+0x630>)
80017da: 601a str r2, [r3, #0]
80017dc: e03a b.n 8001854 <SetAndCorrect+0x5e4>
else if (pardata.SENS>=1000&&pardata.SENS<10000){OffsetKuDisplay=18; kNormToDAC=pardata.SENS/1000;}
80017de: 4b28 ldr r3, [pc, #160] ; (8001880 <SetAndCorrect+0x610>)
80017e0: 6a1b ldr r3, [r3, #32]
80017e2: 4932 ldr r1, [pc, #200] ; (80018ac <SetAndCorrect+0x63c>)
80017e4: 1c18 adds r0, r3, #0
80017e6: f7fe fd89 bl 80002fc <__aeabi_fcmpge>
80017ea: 1e03 subs r3, r0, #0
80017ec: d015 beq.n 800181a <SetAndCorrect+0x5aa>
80017ee: 4b24 ldr r3, [pc, #144] ; (8001880 <SetAndCorrect+0x610>)
80017f0: 6a1b ldr r3, [r3, #32]
80017f2: 492a ldr r1, [pc, #168] ; (800189c <SetAndCorrect+0x62c>)
80017f4: 1c18 adds r0, r3, #0
80017f6: f7fe fd63 bl 80002c0 <__aeabi_fcmplt>
80017fa: 1e03 subs r3, r0, #0
80017fc: d00d beq.n 800181a <SetAndCorrect+0x5aa>
80017fe: 4b26 ldr r3, [pc, #152] ; (8001898 <SetAndCorrect+0x628>)
8001800: 2212 movs r2, #18
8001802: 601a str r2, [r3, #0]
8001804: 4b1e ldr r3, [pc, #120] ; (8001880 <SetAndCorrect+0x610>)
8001806: 6a1b ldr r3, [r3, #32]
8001808: 4928 ldr r1, [pc, #160] ; (80018ac <SetAndCorrect+0x63c>)
800180a: 1c18 adds r0, r3, #0
800180c: f7fe fea2 bl 8000554 <__aeabi_fdiv>
8001810: 1c03 adds r3, r0, #0
8001812: 1c1a adds r2, r3, #0
8001814: 4b22 ldr r3, [pc, #136] ; (80018a0 <SetAndCorrect+0x630>)
8001816: 601a str r2, [r3, #0]
8001818: e01c b.n 8001854 <SetAndCorrect+0x5e4>
else if (pardata.SENS>=10000&&pardata.SENS<100000){OffsetKuDisplay=21; kNormToDAC=pardata.SENS/10000;}
800181a: 4b19 ldr r3, [pc, #100] ; (8001880 <SetAndCorrect+0x610>)
800181c: 6a1b ldr r3, [r3, #32]
800181e: 491f ldr r1, [pc, #124] ; (800189c <SetAndCorrect+0x62c>)
8001820: 1c18 adds r0, r3, #0
8001822: f7fe fd6b bl 80002fc <__aeabi_fcmpge>
8001826: 1e03 subs r3, r0, #0
8001828: d014 beq.n 8001854 <SetAndCorrect+0x5e4>
800182a: 4b15 ldr r3, [pc, #84] ; (8001880 <SetAndCorrect+0x610>)
800182c: 6a1b ldr r3, [r3, #32]
800182e: 4924 ldr r1, [pc, #144] ; (80018c0 <SetAndCorrect+0x650>)
8001830: 1c18 adds r0, r3, #0
8001832: f7fe fd45 bl 80002c0 <__aeabi_fcmplt>
8001836: 1e03 subs r3, r0, #0
8001838: d00c beq.n 8001854 <SetAndCorrect+0x5e4>
800183a: 4b17 ldr r3, [pc, #92] ; (8001898 <SetAndCorrect+0x628>)
800183c: 2215 movs r2, #21
800183e: 601a str r2, [r3, #0]
8001840: 4b0f ldr r3, [pc, #60] ; (8001880 <SetAndCorrect+0x610>)
8001842: 6a1b ldr r3, [r3, #32]
8001844: 4915 ldr r1, [pc, #84] ; (800189c <SetAndCorrect+0x62c>)
8001846: 1c18 adds r0, r3, #0
8001848: f7fe fe84 bl 8000554 <__aeabi_fdiv>
800184c: 1c03 adds r3, r0, #0
800184e: 1c1a adds r2, r3, #0
8001850: 4b13 ldr r3, [pc, #76] ; (80018a0 <SetAndCorrect+0x630>)
8001852: 601a str r2, [r3, #0]
//void setDAC(void) //from 1210
DVD = fKU/kNormToDAC; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
8001854: 4b12 ldr r3, [pc, #72] ; (80018a0 <SetAndCorrect+0x630>)
8001856: 681b ldr r3, [r3, #0]
8001858: 1c19 adds r1, r3, #0
800185a: 6878 ldr r0, [r7, #4]
800185c: f7fe fe7a bl 8000554 <__aeabi_fdiv>
8001860: 1c03 adds r3, r0, #0
8001862: 1c18 adds r0, r3, #0
8001864: f7fe fd9e bl 80003a4 <__aeabi_f2uiz>
8001868: 0003 movs r3, r0
800186a: b29a uxth r2, r3
800186c: 4b15 ldr r3, [pc, #84] ; (80018c4 <SetAndCorrect+0x654>)
800186e: 801a strh r2, [r3, #0]
WRDAC();
8001870: f000 f8f6 bl 8001a60 <WRDAC>
// Load RDAC
}
8001874: 46c0 nop ; (mov r8, r8)
8001876: 46bd mov sp, r7
8001878: b002 add sp, #8
800187a: bd80 pop {r7, pc}
800187c: 50000400 .word 0x50000400
8001880: 20000098 .word 0x20000098
8001884: 20000048 .word 0x20000048
8001888: eb1c432d .word 0xeb1c432d
800188c: 3f1a36e2 .word 0x3f1a36e2
8001890: d2f1a9fc .word 0xd2f1a9fc
8001894: 3f50624d .word 0x3f50624d
8001898: 2000003c .word 0x2000003c
800189c: 461c4000 .word 0x461c4000
80018a0: 20000044 .word 0x20000044
80018a4: 47ae147b .word 0x47ae147b
80018a8: 3f847ae1 .word 0x3f847ae1
80018ac: 447a0000 .word 0x447a0000
80018b0: 9999999a .word 0x9999999a
80018b4: 3fb99999 .word 0x3fb99999
80018b8: 42c80000 .word 0x42c80000
80018bc: 41200000 .word 0x41200000
80018c0: 47c35000 .word 0x47c35000
80018c4: 20000040 .word 0x20000040
080018c8 <initCalibr>:
void initCalibr(void)
{
80018c8: b580 push {r7, lr}
80018ca: af00 add r7, sp, #0
pardata.IKE = 0;
80018cc: 4b60 ldr r3, [pc, #384] ; (8001a50 <initCalibr+0x188>)
80018ce: 2200 movs r2, #0
80018d0: 81da strh r2, [r3, #14]
pardata.IKD = 0;
80018d2: 4b5f ldr r3, [pc, #380] ; (8001a50 <initCalibr+0x188>)
80018d4: 2200 movs r2, #0
80018d6: 821a strh r2, [r3, #16]
pardata.IKS = 1;
80018d8: 4b5d ldr r3, [pc, #372] ; (8001a50 <initCalibr+0x188>)
80018da: 2201 movs r2, #1
80018dc: 825a strh r2, [r3, #18]
pardata.IFV = Hp1;
80018de: 4b5c ldr r3, [pc, #368] ; (8001a50 <initCalibr+0x188>)
80018e0: 2202 movs r2, #2
80018e2: 811a strh r2, [r3, #8]
pardata.IFN = Lp100000;
80018e4: 4b5a ldr r3, [pc, #360] ; (8001a50 <initCalibr+0x188>)
80018e6: 2207 movs r2, #7
80018e8: 815a strh r2, [r3, #10]
switch(faseClbr)
80018ea: 4b5a ldr r3, [pc, #360] ; (8001a54 <initCalibr+0x18c>)
80018ec: 681b ldr r3, [r3, #0]
80018ee: 2b16 cmp r3, #22
80018f0: d900 bls.n 80018f4 <initCalibr+0x2c>
80018f2: e0a5 b.n 8001a40 <initCalibr+0x178>
80018f4: 009a lsls r2, r3, #2
80018f6: 4b58 ldr r3, [pc, #352] ; (8001a58 <initCalibr+0x190>)
80018f8: 18d3 adds r3, r2, r3
80018fa: 681b ldr r3, [r3, #0]
80018fc: 469f mov pc, r3
{
case 0: // CHARGE 0.1
pardata.IIN = CHARGE;
80018fe: 4b54 ldr r3, [pc, #336] ; (8001a50 <initCalibr+0x188>)
8001900: 2200 movs r2, #0
8001902: 80da strh r2, [r3, #6]
pardata.IKU = Ku0_1;
8001904: 4b52 ldr r3, [pc, #328] ; (8001a50 <initCalibr+0x188>)
8001906: 2200 movs r2, #0
8001908: 819a strh r2, [r3, #12]
break;
800190a: e099 b.n 8001a40 <initCalibr+0x178>
case 1: // CHARGE 0.2
pardata.IIN = CHARGE;
800190c: 4b50 ldr r3, [pc, #320] ; (8001a50 <initCalibr+0x188>)
800190e: 2200 movs r2, #0
8001910: 80da strh r2, [r3, #6]
pardata.IKU = Ku0_2;
8001912: 4b4f ldr r3, [pc, #316] ; (8001a50 <initCalibr+0x188>)
8001914: 2201 movs r2, #1
8001916: 819a strh r2, [r3, #12]
break;
8001918: e092 b.n 8001a40 <initCalibr+0x178>
case 2: // CHARGE 0.5
pardata.IIN = CHARGE;
800191a: 4b4d ldr r3, [pc, #308] ; (8001a50 <initCalibr+0x188>)
800191c: 2200 movs r2, #0
800191e: 80da strh r2, [r3, #6]
pardata.IKU = Ku0_5;
8001920: 4b4b ldr r3, [pc, #300] ; (8001a50 <initCalibr+0x188>)
8001922: 2202 movs r2, #2
8001924: 819a strh r2, [r3, #12]
break;
8001926: e08b b.n 8001a40 <initCalibr+0x178>
case 3: // CHARGE 1
pardata.IIN = CHARGE;
8001928: 4b49 ldr r3, [pc, #292] ; (8001a50 <initCalibr+0x188>)
800192a: 2200 movs r2, #0
800192c: 80da strh r2, [r3, #6]
pardata.IKU = Ku1;
800192e: 4b48 ldr r3, [pc, #288] ; (8001a50 <initCalibr+0x188>)
8001930: 2203 movs r2, #3
8001932: 819a strh r2, [r3, #12]
break;
8001934: e084 b.n 8001a40 <initCalibr+0x178>
case 4: // CHARGE 2
pardata.IIN = CHARGE;
8001936: 4b46 ldr r3, [pc, #280] ; (8001a50 <initCalibr+0x188>)
8001938: 2200 movs r2, #0
800193a: 80da strh r2, [r3, #6]
pardata.IKU = Ku2;
800193c: 4b44 ldr r3, [pc, #272] ; (8001a50 <initCalibr+0x188>)
800193e: 2204 movs r2, #4
8001940: 819a strh r2, [r3, #12]
break;
8001942: e07d b.n 8001a40 <initCalibr+0x178>
case 5: // CHARGE 5
pardata.IIN = CHARGE;
8001944: 4b42 ldr r3, [pc, #264] ; (8001a50 <initCalibr+0x188>)
8001946: 2200 movs r2, #0
8001948: 80da strh r2, [r3, #6]
pardata.IKU = Ku5;
800194a: 4b41 ldr r3, [pc, #260] ; (8001a50 <initCalibr+0x188>)
800194c: 2205 movs r2, #5
800194e: 819a strh r2, [r3, #12]
break;
8001950: e076 b.n 8001a40 <initCalibr+0x178>
case 6: // CHARGE 10
pardata.IIN = CHARGE;
8001952: 4b3f ldr r3, [pc, #252] ; (8001a50 <initCalibr+0x188>)
8001954: 2200 movs r2, #0
8001956: 80da strh r2, [r3, #6]
pardata.IKU = Ku10;
8001958: 4b3d ldr r3, [pc, #244] ; (8001a50 <initCalibr+0x188>)
800195a: 2206 movs r2, #6
800195c: 819a strh r2, [r3, #12]
break;
800195e: e06f b.n 8001a40 <initCalibr+0x178>
case 7: // CHARGE 20
pardata.IIN = CHARGE;
8001960: 4b3b ldr r3, [pc, #236] ; (8001a50 <initCalibr+0x188>)
8001962: 2200 movs r2, #0
8001964: 80da strh r2, [r3, #6]
pardata.IKU = Ku20;
8001966: 4b3a ldr r3, [pc, #232] ; (8001a50 <initCalibr+0x188>)
8001968: 2207 movs r2, #7
800196a: 819a strh r2, [r3, #12]
break;
800196c: e068 b.n 8001a40 <initCalibr+0x178>
case 8: // CHARGE 50
pardata.IIN = CHARGE;
800196e: 4b38 ldr r3, [pc, #224] ; (8001a50 <initCalibr+0x188>)
8001970: 2200 movs r2, #0
8001972: 80da strh r2, [r3, #6]
pardata.IKU = Ku50;
8001974: 4b36 ldr r3, [pc, #216] ; (8001a50 <initCalibr+0x188>)
8001976: 2208 movs r2, #8
8001978: 819a strh r2, [r3, #12]
break;
800197a: e061 b.n 8001a40 <initCalibr+0x178>
case 9: // CHARGE 100
pardata.IIN = CHARGE;
800197c: 4b34 ldr r3, [pc, #208] ; (8001a50 <initCalibr+0x188>)
800197e: 2200 movs r2, #0
8001980: 80da strh r2, [r3, #6]
pardata.IKU = Ku100;
8001982: 4b33 ldr r3, [pc, #204] ; (8001a50 <initCalibr+0x188>)
8001984: 2209 movs r2, #9
8001986: 819a strh r2, [r3, #12]
break;
8001988: e05a b.n 8001a40 <initCalibr+0x178>
case 10:// CHARGE 200
pardata.IIN = CHARGE;
800198a: 4b31 ldr r3, [pc, #196] ; (8001a50 <initCalibr+0x188>)
800198c: 2200 movs r2, #0
800198e: 80da strh r2, [r3, #6]
pardata.IKU = Ku200;
8001990: 4b2f ldr r3, [pc, #188] ; (8001a50 <initCalibr+0x188>)
8001992: 220a movs r2, #10
8001994: 819a strh r2, [r3, #12]
break;
8001996: e053 b.n 8001a40 <initCalibr+0x178>
case 11:// CHARGE 500
pardata.IIN = CHARGE;
8001998: 4b2d ldr r3, [pc, #180] ; (8001a50 <initCalibr+0x188>)
800199a: 2200 movs r2, #0
800199c: 80da strh r2, [r3, #6]
pardata.IKU = Ku500;
800199e: 4b2c ldr r3, [pc, #176] ; (8001a50 <initCalibr+0x188>)
80019a0: 220b movs r2, #11
80019a2: 819a strh r2, [r3, #12]
break;
80019a4: e04c b.n 8001a40 <initCalibr+0x178>
case 12:// CHARGE 1000
pardata.IIN = CHARGE;
80019a6: 4b2a ldr r3, [pc, #168] ; (8001a50 <initCalibr+0x188>)
80019a8: 2200 movs r2, #0
80019aa: 80da strh r2, [r3, #6]
pardata.IKU = Ku1000;
80019ac: 4b28 ldr r3, [pc, #160] ; (8001a50 <initCalibr+0x188>)
80019ae: 220c movs r2, #12
80019b0: 819a strh r2, [r3, #12]
break;
80019b2: e045 b.n 8001a40 <initCalibr+0x178>
case 13: // ICP 1
pardata.IIN = ICP;
80019b4: 4b26 ldr r3, [pc, #152] ; (8001a50 <initCalibr+0x188>)
80019b6: 2201 movs r2, #1
80019b8: 80da strh r2, [r3, #6]
pardata.IKU = Ku1;
80019ba: 4b25 ldr r3, [pc, #148] ; (8001a50 <initCalibr+0x188>)
80019bc: 2203 movs r2, #3
80019be: 819a strh r2, [r3, #12]
break;
80019c0: e03e b.n 8001a40 <initCalibr+0x178>
case 14: // ICP 2
pardata.IIN = ICP;
80019c2: 4b23 ldr r3, [pc, #140] ; (8001a50 <initCalibr+0x188>)
80019c4: 2201 movs r2, #1
80019c6: 80da strh r2, [r3, #6]
pardata.IKU = Ku2;
80019c8: 4b21 ldr r3, [pc, #132] ; (8001a50 <initCalibr+0x188>)
80019ca: 2204 movs r2, #4
80019cc: 819a strh r2, [r3, #12]
break;
80019ce: e037 b.n 8001a40 <initCalibr+0x178>
case 15: // ICP 5
pardata.IIN = ICP;
80019d0: 4b1f ldr r3, [pc, #124] ; (8001a50 <initCalibr+0x188>)
80019d2: 2201 movs r2, #1
80019d4: 80da strh r2, [r3, #6]
pardata.IKU = Ku5;
80019d6: 4b1e ldr r3, [pc, #120] ; (8001a50 <initCalibr+0x188>)
80019d8: 2205 movs r2, #5
80019da: 819a strh r2, [r3, #12]
break;
80019dc: e030 b.n 8001a40 <initCalibr+0x178>
case 16: // ICP 10
pardata.IIN = ICP;
80019de: 4b1c ldr r3, [pc, #112] ; (8001a50 <initCalibr+0x188>)
80019e0: 2201 movs r2, #1
80019e2: 80da strh r2, [r3, #6]
pardata.IKU = Ku10;
80019e4: 4b1a ldr r3, [pc, #104] ; (8001a50 <initCalibr+0x188>)
80019e6: 2206 movs r2, #6
80019e8: 819a strh r2, [r3, #12]
break;
80019ea: e029 b.n 8001a40 <initCalibr+0x178>
case 17: // ICP 20
pardata.IIN = ICP;
80019ec: 4b18 ldr r3, [pc, #96] ; (8001a50 <initCalibr+0x188>)
80019ee: 2201 movs r2, #1
80019f0: 80da strh r2, [r3, #6]
pardata.IKU = Ku20;
80019f2: 4b17 ldr r3, [pc, #92] ; (8001a50 <initCalibr+0x188>)
80019f4: 2207 movs r2, #7
80019f6: 819a strh r2, [r3, #12]
break;
80019f8: e022 b.n 8001a40 <initCalibr+0x178>
case 18: // ICP 50
pardata.IIN = ICP;
80019fa: 4b15 ldr r3, [pc, #84] ; (8001a50 <initCalibr+0x188>)
80019fc: 2201 movs r2, #1
80019fe: 80da strh r2, [r3, #6]
pardata.IKU = Ku50;
8001a00: 4b13 ldr r3, [pc, #76] ; (8001a50 <initCalibr+0x188>)
8001a02: 2208 movs r2, #8
8001a04: 819a strh r2, [r3, #12]
break;
8001a06: e01b b.n 8001a40 <initCalibr+0x178>
case 19: // ICP 100
pardata.IIN = ICP;
8001a08: 4b11 ldr r3, [pc, #68] ; (8001a50 <initCalibr+0x188>)
8001a0a: 2201 movs r2, #1
8001a0c: 80da strh r2, [r3, #6]
pardata.IKU = Ku100;
8001a0e: 4b10 ldr r3, [pc, #64] ; (8001a50 <initCalibr+0x188>)
8001a10: 2209 movs r2, #9
8001a12: 819a strh r2, [r3, #12]
break;
8001a14: e014 b.n 8001a40 <initCalibr+0x178>
case 20: // ICP 200
pardata.IIN = ICP;
8001a16: 4b0e ldr r3, [pc, #56] ; (8001a50 <initCalibr+0x188>)
8001a18: 2201 movs r2, #1
8001a1a: 80da strh r2, [r3, #6]
pardata.IKU = Ku200;
8001a1c: 4b0c ldr r3, [pc, #48] ; (8001a50 <initCalibr+0x188>)
8001a1e: 220a movs r2, #10
8001a20: 819a strh r2, [r3, #12]
break;
8001a22: e00d b.n 8001a40 <initCalibr+0x178>
case 21: // ICP 500
pardata.IIN = ICP;
8001a24: 4b0a ldr r3, [pc, #40] ; (8001a50 <initCalibr+0x188>)
8001a26: 2201 movs r2, #1
8001a28: 80da strh r2, [r3, #6]
pardata.IKU = Ku500;
8001a2a: 4b09 ldr r3, [pc, #36] ; (8001a50 <initCalibr+0x188>)
8001a2c: 220b movs r2, #11
8001a2e: 819a strh r2, [r3, #12]
break;
8001a30: e006 b.n 8001a40 <initCalibr+0x178>
case 22: // ICP 1000
pardata.IIN = ICP;
8001a32: 4b07 ldr r3, [pc, #28] ; (8001a50 <initCalibr+0x188>)
8001a34: 2201 movs r2, #1
8001a36: 80da strh r2, [r3, #6]
pardata.IKU = Ku1000;
8001a38: 4b05 ldr r3, [pc, #20] ; (8001a50 <initCalibr+0x188>)
8001a3a: 220c movs r2, #12
8001a3c: 819a strh r2, [r3, #12]
break;
8001a3e: 46c0 nop ; (mov r8, r8)
}
clbr = true;
8001a40: 4b06 ldr r3, [pc, #24] ; (8001a5c <initCalibr+0x194>)
8001a42: 2201 movs r2, #1
8001a44: 701a strb r2, [r3, #0]
SetAndCorrect();
8001a46: f7ff fc13 bl 8001270 <SetAndCorrect>
}
8001a4a: 46c0 nop ; (mov r8, r8)
8001a4c: 46bd mov sp, r7
8001a4e: bd80 pop {r7, pc}
8001a50: 20000098 .word 0x20000098
8001a54: 20000030 .word 0x20000030
8001a58: 08007110 .word 0x08007110
8001a5c: 20000034 .word 0x20000034
08001a60 <WRDAC>:
//******************************************************************************
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//******************************************************************************
void WRDAC(void)
{
8001a60: b580 push {r7, lr}
8001a62: b082 sub sp, #8
8001a64: af00 add r7, sp, #0
uint8_t i;
uint16_t dvd = DVD;
8001a66: 1d3b adds r3, r7, #4
8001a68: 4a2a ldr r2, [pc, #168] ; (8001b14 <WRDAC+0xb4>)
8001a6a: 8812 ldrh r2, [r2, #0]
8001a6c: 801a strh r2, [r3, #0]
dvd <<= 4;
8001a6e: 1d3b adds r3, r7, #4
8001a70: 1d3a adds r2, r7, #4
8001a72: 8812 ldrh r2, [r2, #0]
8001a74: 0112 lsls r2, r2, #4
8001a76: 801a strh r2, [r3, #0]
for(i = 0; i < 12; i++)
8001a78: 1dfb adds r3, r7, #7
8001a7a: 2200 movs r2, #0
8001a7c: 701a strb r2, [r3, #0]
8001a7e: e02b b.n 8001ad8 <WRDAC+0x78>
{
if(dvd & 0x8000)
8001a80: 1d3b adds r3, r7, #4
8001a82: 2200 movs r2, #0
8001a84: 5e9b ldrsh r3, [r3, r2]
8001a86: 2b00 cmp r3, #0
8001a88: da07 bge.n 8001a9a <WRDAC+0x3a>
HAL_GPIO_WritePin(GPIOB, STD_Pin, GPIO_PIN_SET);
8001a8a: 2380 movs r3, #128 ; 0x80
8001a8c: 01db lsls r3, r3, #7
8001a8e: 4822 ldr r0, [pc, #136] ; (8001b18 <WRDAC+0xb8>)
8001a90: 2201 movs r2, #1
8001a92: 0019 movs r1, r3
8001a94: f003 f83b bl 8004b0e <HAL_GPIO_WritePin>
8001a98: e006 b.n 8001aa8 <WRDAC+0x48>
else HAL_GPIO_WritePin(GPIOB, STD_Pin, GPIO_PIN_RESET);
8001a9a: 2380 movs r3, #128 ; 0x80
8001a9c: 01db lsls r3, r3, #7
8001a9e: 481e ldr r0, [pc, #120] ; (8001b18 <WRDAC+0xb8>)
8001aa0: 2200 movs r2, #0
8001aa2: 0019 movs r1, r3
8001aa4: f003 f833 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, SCK_Pin, GPIO_PIN_RESET);
8001aa8: 2380 movs r3, #128 ; 0x80
8001aaa: 021b lsls r3, r3, #8
8001aac: 481a ldr r0, [pc, #104] ; (8001b18 <WRDAC+0xb8>)
8001aae: 2200 movs r2, #0
8001ab0: 0019 movs r1, r3
8001ab2: f003 f82c bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, SCK_Pin, GPIO_PIN_SET);
8001ab6: 2380 movs r3, #128 ; 0x80
8001ab8: 021b lsls r3, r3, #8
8001aba: 4817 ldr r0, [pc, #92] ; (8001b18 <WRDAC+0xb8>)
8001abc: 2201 movs r2, #1
8001abe: 0019 movs r1, r3
8001ac0: f003 f825 bl 8004b0e <HAL_GPIO_WritePin>
dvd <<= 1;
8001ac4: 1d3a adds r2, r7, #4
8001ac6: 1d3b adds r3, r7, #4
8001ac8: 881b ldrh r3, [r3, #0]
8001aca: 18db adds r3, r3, r3
8001acc: 8013 strh r3, [r2, #0]
for(i = 0; i < 12; i++)
8001ace: 1dfb adds r3, r7, #7
8001ad0: 781a ldrb r2, [r3, #0]
8001ad2: 1dfb adds r3, r7, #7
8001ad4: 3201 adds r2, #1
8001ad6: 701a strb r2, [r3, #0]
8001ad8: 1dfb adds r3, r7, #7
8001ada: 781b ldrb r3, [r3, #0]
8001adc: 2b0b cmp r3, #11
8001ade: d9cf bls.n 8001a80 <WRDAC+0x20>
}
HAL_GPIO_WritePin(GPIOB, FL_Pin, GPIO_PIN_RESET);
8001ae0: 2380 movs r3, #128 ; 0x80
8001ae2: 019b lsls r3, r3, #6
8001ae4: 480c ldr r0, [pc, #48] ; (8001b18 <WRDAC+0xb8>)
8001ae6: 2200 movs r2, #0
8001ae8: 0019 movs r1, r3
8001aea: f003 f810 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, FL_Pin, GPIO_PIN_SET);
8001aee: 2380 movs r3, #128 ; 0x80
8001af0: 019b lsls r3, r3, #6
8001af2: 4809 ldr r0, [pc, #36] ; (8001b18 <WRDAC+0xb8>)
8001af4: 2201 movs r2, #1
8001af6: 0019 movs r1, r3
8001af8: f003 f809 bl 8004b0e <HAL_GPIO_WritePin>
HAL_GPIO_WritePin(GPIOB, STD_Pin, GPIO_PIN_SET);
8001afc: 2380 movs r3, #128 ; 0x80
8001afe: 01db lsls r3, r3, #7
8001b00: 4805 ldr r0, [pc, #20] ; (8001b18 <WRDAC+0xb8>)
8001b02: 2201 movs r2, #1
8001b04: 0019 movs r1, r3
8001b06: f003 f802 bl 8004b0e <HAL_GPIO_WritePin>
}
8001b0a: 46c0 nop ; (mov r8, r8)
8001b0c: 46bd mov sp, r7
8001b0e: b002 add sp, #8
8001b10: bd80 pop {r7, pc}
8001b12: 46c0 nop ; (mov r8, r8)
8001b14: 20000040 .word 0x20000040
8001b18: 50000400 .word 0x50000400
08001b1c <MX_FLASH_Init>:
void MX_FLASH_Init(void)
{
8001b1c: b580 push {r7, lr}
8001b1e: af00 add r7, sp, #0
__HAL_RCC_SYSCFG_CLK_ENABLE();
8001b20: 4b06 ldr r3, [pc, #24] ; (8001b3c <MX_FLASH_Init+0x20>)
8001b22: 4a06 ldr r2, [pc, #24] ; (8001b3c <MX_FLASH_Init+0x20>)
8001b24: 6b52 ldr r2, [r2, #52] ; 0x34
8001b26: 2101 movs r1, #1
8001b28: 430a orrs r2, r1
8001b2a: 635a str r2, [r3, #52] ; 0x34
rdPar();
8001b2c: f000 f866 bl 8001bfc <rdPar>
rdCorr();
8001b30: f000 f97a bl 8001e28 <rdCorr>
}
8001b34: 46c0 nop ; (mov r8, r8)
8001b36: 46bd mov sp, r7
8001b38: bd80 pop {r7, pc}
8001b3a: 46c0 nop ; (mov r8, r8)
8001b3c: 40021000 .word 0x40021000
08001b40 <wrPar>:
void wrPar(void)
{
8001b40: b580 push {r7, lr}
8001b42: b084 sub sp, #16
8001b44: af00 add r7, sp, #0
uint8_t i, len;
uint32_t *pData, Address;
len = sizeof(UserData_TypeDef);
8001b46: 1cfb adds r3, r7, #3
8001b48: 2228 movs r2, #40 ; 0x28
8001b4a: 701a strb r2, [r3, #0]
len >>= 2;
8001b4c: 1cfb adds r3, r7, #3
8001b4e: 1cfa adds r2, r7, #3
8001b50: 7812 ldrb r2, [r2, #0]
8001b52: 0892 lsrs r2, r2, #2
8001b54: 701a strb r2, [r3, #0]
HAL_FLASH_Unlock();
8001b56: f002 fbc7 bl 80042e8 <HAL_FLASH_Unlock>
FLASH_PageErase(USERPAGE);
8001b5a: 4b24 ldr r3, [pc, #144] ; (8001bec <wrPar+0xac>)
8001b5c: 0018 movs r0, r3
8001b5e: f002 fd35 bl 80045cc <FLASH_PageErase>
CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG);
8001b62: 4b23 ldr r3, [pc, #140] ; (8001bf0 <wrPar+0xb0>)
8001b64: 4a22 ldr r2, [pc, #136] ; (8001bf0 <wrPar+0xb0>)
8001b66: 6852 ldr r2, [r2, #4]
8001b68: 2108 movs r1, #8
8001b6a: 438a bics r2, r1
8001b6c: 605a str r2, [r3, #4]
CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE);
8001b6e: 4b20 ldr r3, [pc, #128] ; (8001bf0 <wrPar+0xb0>)
8001b70: 4a1f ldr r2, [pc, #124] ; (8001bf0 <wrPar+0xb0>)
8001b72: 6852 ldr r2, [r2, #4]
8001b74: 491f ldr r1, [pc, #124] ; (8001bf4 <wrPar+0xb4>)
8001b76: 400a ands r2, r1
8001b78: 605a str r2, [r3, #4]
FLASH_WaitForLastOperation(100);
8001b7a: 2064 movs r0, #100 ; 0x64
8001b7c: f002 fc18 bl 80043b0 <FLASH_WaitForLastOperation>
Address = USERPAGE;
8001b80: 4b1a ldr r3, [pc, #104] ; (8001bec <wrPar+0xac>)
8001b82: 607b str r3, [r7, #4]
pData = (uint32_t *) &pardata;
8001b84: 4b1c ldr r3, [pc, #112] ; (8001bf8 <wrPar+0xb8>)
8001b86: 60bb str r3, [r7, #8]
for(i = 0; i < len; i++)
8001b88: 230f movs r3, #15
8001b8a: 18fb adds r3, r7, r3
8001b8c: 2200 movs r2, #0
8001b8e: 701a strb r2, [r3, #0]
8001b90: e012 b.n 8001bb8 <wrPar+0x78>
{
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, *pData++);
8001b92: 68bb ldr r3, [r7, #8]
8001b94: 1d1a adds r2, r3, #4
8001b96: 60ba str r2, [r7, #8]
8001b98: 681a ldr r2, [r3, #0]
8001b9a: 687b ldr r3, [r7, #4]
8001b9c: 0019 movs r1, r3
8001b9e: 2002 movs r0, #2
8001ba0: f002 fb66 bl 8004270 <HAL_FLASH_Program>
Address += 4;
8001ba4: 687b ldr r3, [r7, #4]
8001ba6: 3304 adds r3, #4
8001ba8: 607b str r3, [r7, #4]
for(i = 0; i < len; i++)
8001baa: 230f movs r3, #15
8001bac: 18fb adds r3, r7, r3
8001bae: 781a ldrb r2, [r3, #0]
8001bb0: 230f movs r3, #15
8001bb2: 18fb adds r3, r7, r3
8001bb4: 3201 adds r2, #1
8001bb6: 701a strb r2, [r3, #0]
8001bb8: 230f movs r3, #15
8001bba: 18fa adds r2, r7, r3
8001bbc: 1cfb adds r3, r7, #3
8001bbe: 7812 ldrb r2, [r2, #0]
8001bc0: 781b ldrb r3, [r3, #0]
8001bc2: 429a cmp r2, r3
8001bc4: d3e5 bcc.n 8001b92 <wrPar+0x52>
}
CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG);
8001bc6: 4b0a ldr r3, [pc, #40] ; (8001bf0 <wrPar+0xb0>)
8001bc8: 4a09 ldr r2, [pc, #36] ; (8001bf0 <wrPar+0xb0>)
8001bca: 6852 ldr r2, [r2, #4]
8001bcc: 2108 movs r1, #8
8001bce: 438a bics r2, r1
8001bd0: 605a str r2, [r3, #4]
CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE);
8001bd2: 4b07 ldr r3, [pc, #28] ; (8001bf0 <wrPar+0xb0>)
8001bd4: 4a06 ldr r2, [pc, #24] ; (8001bf0 <wrPar+0xb0>)
8001bd6: 6852 ldr r2, [r2, #4]
8001bd8: 4906 ldr r1, [pc, #24] ; (8001bf4 <wrPar+0xb4>)
8001bda: 400a ands r2, r1
8001bdc: 605a str r2, [r3, #4]
HAL_FLASH_Lock();
8001bde: f002 fbd3 bl 8004388 <HAL_FLASH_Lock>
}
8001be2: 46c0 nop ; (mov r8, r8)
8001be4: 46bd mov sp, r7
8001be6: b004 add sp, #16
8001be8: bd80 pop {r7, pc}
8001bea: 46c0 nop ; (mov r8, r8)
8001bec: 0801ff00 .word 0x0801ff00
8001bf0: 40022000 .word 0x40022000
8001bf4: fffffdff .word 0xfffffdff
8001bf8: 20000098 .word 0x20000098
08001bfc <rdPar>:
void rdPar(void)
{
8001bfc: b590 push {r4, r7, lr}
8001bfe: b083 sub sp, #12
8001c00: af00 add r7, sp, #0
uint8_t rewrite = 0;
8001c02: 1dfb adds r3, r7, #7
8001c04: 2200 movs r2, #0
8001c06: 701a strb r2, [r3, #0]
memcpy((void *) &pardata, (void *) USERPAGE, sizeof(UserData_TypeDef));
8001c08: 4b54 ldr r3, [pc, #336] ; (8001d5c <rdPar+0x160>)
8001c0a: 4a55 ldr r2, [pc, #340] ; (8001d60 <rdPar+0x164>)
8001c0c: ca13 ldmia r2!, {r0, r1, r4}
8001c0e: c313 stmia r3!, {r0, r1, r4}
8001c10: ca13 ldmia r2!, {r0, r1, r4}
8001c12: c313 stmia r3!, {r0, r1, r4}
8001c14: ca13 ldmia r2!, {r0, r1, r4}
8001c16: c313 stmia r3!, {r0, r1, r4}
8001c18: 6812 ldr r2, [r2, #0]
8001c1a: 601a str r2, [r3, #0]
//pardata.OWN = 0;
if((pardata.OWN != MY_ADDRESS) || (pardata.OWN == 0))
8001c1c: 4b4f ldr r3, [pc, #316] ; (8001d5c <rdPar+0x160>)
8001c1e: 881b ldrh r3, [r3, #0]
8001c20: b29b uxth r3, r3
8001c22: 2b03 cmp r3, #3
8001c24: d104 bne.n 8001c30 <rdPar+0x34>
8001c26: 4b4d ldr r3, [pc, #308] ; (8001d5c <rdPar+0x160>)
8001c28: 881b ldrh r3, [r3, #0]
8001c2a: b29b uxth r3, r3
8001c2c: 2b00 cmp r3, #0
8001c2e: d132 bne.n 8001c96 <rdPar+0x9a>
{
pardata.OWN = MY_ADDRESS;
8001c30: 4b4a ldr r3, [pc, #296] ; (8001d5c <rdPar+0x160>)
8001c32: 2203 movs r2, #3
8001c34: 801a strh r2, [r3, #0]
pardata.BAUD = 7; //115200
8001c36: 4b49 ldr r3, [pc, #292] ; (8001d5c <rdPar+0x160>)
8001c38: 2207 movs r2, #7
8001c3a: 805a strh r2, [r3, #2]
pardata.INFB = 0;
8001c3c: 4b47 ldr r3, [pc, #284] ; (8001d5c <rdPar+0x160>)
8001c3e: 2200 movs r2, #0
8001c40: 809a strh r2, [r3, #4]
pardata.IIN = CHARGE;
8001c42: 4b46 ldr r3, [pc, #280] ; (8001d5c <rdPar+0x160>)
8001c44: 2200 movs r2, #0
8001c46: 80da strh r2, [r3, #6]
pardata.IFV = Hp0_2;
8001c48: 4b44 ldr r3, [pc, #272] ; (8001d5c <rdPar+0x160>)
8001c4a: 2200 movs r2, #0
8001c4c: 811a strh r2, [r3, #8]
pardata.IFN = Lp100000;
8001c4e: 4b43 ldr r3, [pc, #268] ; (8001d5c <rdPar+0x160>)
8001c50: 2207 movs r2, #7
8001c52: 815a strh r2, [r3, #10]
pardata.IKU = Ku1;
8001c54: 4b41 ldr r3, [pc, #260] ; (8001d5c <rdPar+0x160>)
8001c56: 2203 movs r2, #3
8001c58: 819a strh r2, [r3, #12]
pardata.IKE = 0;
8001c5a: 4b40 ldr r3, [pc, #256] ; (8001d5c <rdPar+0x160>)
8001c5c: 2200 movs r2, #0
8001c5e: 81da strh r2, [r3, #14]
pardata.IKD = 0;
8001c60: 4b3e ldr r3, [pc, #248] ; (8001d5c <rdPar+0x160>)
8001c62: 2200 movs r2, #0
8001c64: 821a strh r2, [r3, #16]
pardata.IKS = 1;
8001c66: 4b3d ldr r3, [pc, #244] ; (8001d5c <rdPar+0x160>)
8001c68: 2201 movs r2, #1
8001c6a: 825a strh r2, [r3, #18]
pardata.IPZ = 0;
8001c6c: 4b3b ldr r3, [pc, #236] ; (8001d5c <rdPar+0x160>)
8001c6e: 2200 movs r2, #0
8001c70: 829a strh r2, [r3, #20]
pardata.OPZ = 0;
8001c72: 4b3a ldr r3, [pc, #232] ; (8001d5c <rdPar+0x160>)
8001c74: 2200 movs r2, #0
8001c76: 82da strh r2, [r3, #22]
pardata.VAL = Accel;
8001c78: 4b38 ldr r3, [pc, #224] ; (8001d5c <rdPar+0x160>)
8001c7a: 2200 movs r2, #0
8001c7c: 831a strh r2, [r3, #24]
pardata.KCOND = 1.00001f;
8001c7e: 4b37 ldr r3, [pc, #220] ; (8001d5c <rdPar+0x160>)
8001c80: 4a38 ldr r2, [pc, #224] ; (8001d64 <rdPar+0x168>)
8001c82: 61da str r2, [r3, #28]
pardata.SENS = 1.00001f;
8001c84: 4b35 ldr r3, [pc, #212] ; (8001d5c <rdPar+0x160>)
8001c86: 4a37 ldr r2, [pc, #220] ; (8001d64 <rdPar+0x168>)
8001c88: 621a str r2, [r3, #32]
pardata.ACCEL = 10.00001f;
8001c8a: 4b34 ldr r3, [pc, #208] ; (8001d5c <rdPar+0x160>)
8001c8c: 4a36 ldr r2, [pc, #216] ; (8001d68 <rdPar+0x16c>)
8001c8e: 625a str r2, [r3, #36] ; 0x24
rewrite = 1;
8001c90: 1dfb adds r3, r7, #7
8001c92: 2201 movs r2, #1
8001c94: 701a strb r2, [r3, #0]
}
if((pardata.IKE == 0) && (pardata.IKD == 0) && (pardata.IKS == 0)) {
8001c96: 4b31 ldr r3, [pc, #196] ; (8001d5c <rdPar+0x160>)
8001c98: 89db ldrh r3, [r3, #14]
8001c9a: b29b uxth r3, r3
8001c9c: 2b00 cmp r3, #0
8001c9e: d115 bne.n 8001ccc <rdPar+0xd0>
8001ca0: 4b2e ldr r3, [pc, #184] ; (8001d5c <rdPar+0x160>)
8001ca2: 8a1b ldrh r3, [r3, #16]
8001ca4: b29b uxth r3, r3
8001ca6: 2b00 cmp r3, #0
8001ca8: d110 bne.n 8001ccc <rdPar+0xd0>
8001caa: 4b2c ldr r3, [pc, #176] ; (8001d5c <rdPar+0x160>)
8001cac: 8a5b ldrh r3, [r3, #18]
8001cae: b29b uxth r3, r3
8001cb0: 2b00 cmp r3, #0
8001cb2: d10b bne.n 8001ccc <rdPar+0xd0>
pardata.IKE = 0;
8001cb4: 4b29 ldr r3, [pc, #164] ; (8001d5c <rdPar+0x160>)
8001cb6: 2200 movs r2, #0
8001cb8: 81da strh r2, [r3, #14]
pardata.IKD = 0;
8001cba: 4b28 ldr r3, [pc, #160] ; (8001d5c <rdPar+0x160>)
8001cbc: 2200 movs r2, #0
8001cbe: 821a strh r2, [r3, #16]
pardata.IKS = 1;
8001cc0: 4b26 ldr r3, [pc, #152] ; (8001d5c <rdPar+0x160>)
8001cc2: 2201 movs r2, #1
8001cc4: 825a strh r2, [r3, #18]
rewrite = true;
8001cc6: 1dfb adds r3, r7, #7
8001cc8: 2201 movs r2, #1
8001cca: 701a strb r2, [r3, #0]
}
if(pardata.SENS == 0.0f) {
8001ccc: 4b23 ldr r3, [pc, #140] ; (8001d5c <rdPar+0x160>)
8001cce: 6a1b ldr r3, [r3, #32]
8001cd0: 2100 movs r1, #0
8001cd2: 1c18 adds r0, r3, #0
8001cd4: f7fe faee bl 80002b4 <__aeabi_fcmpeq>
8001cd8: 1e03 subs r3, r0, #0
8001cda: d006 beq.n 8001cea <rdPar+0xee>
pardata.SENS = 1.0f;
8001cdc: 4b1f ldr r3, [pc, #124] ; (8001d5c <rdPar+0x160>)
8001cde: 22fe movs r2, #254 ; 0xfe
8001ce0: 0592 lsls r2, r2, #22
8001ce2: 621a str r2, [r3, #32]
rewrite = true;
8001ce4: 1dfb adds r3, r7, #7
8001ce6: 2201 movs r2, #1
8001ce8: 701a strb r2, [r3, #0]
}
if(pardata.IFN > Lp100000) {
8001cea: 4b1c ldr r3, [pc, #112] ; (8001d5c <rdPar+0x160>)
8001cec: 895b ldrh r3, [r3, #10]
8001cee: b29b uxth r3, r3
8001cf0: 2b07 cmp r3, #7
8001cf2: d905 bls.n 8001d00 <rdPar+0x104>
pardata.IFN = Lp100000;
8001cf4: 4b19 ldr r3, [pc, #100] ; (8001d5c <rdPar+0x160>)
8001cf6: 2207 movs r2, #7
8001cf8: 815a strh r2, [r3, #10]
rewrite = true;
8001cfa: 1dfb adds r3, r7, #7
8001cfc: 2201 movs r2, #1
8001cfe: 701a strb r2, [r3, #0]
}
if(pardata.IFV > Hp10) {
8001d00: 4b16 ldr r3, [pc, #88] ; (8001d5c <rdPar+0x160>)
8001d02: 891b ldrh r3, [r3, #8]
8001d04: b29b uxth r3, r3
8001d06: 2b04 cmp r3, #4
8001d08: d905 bls.n 8001d16 <rdPar+0x11a>
pardata.IFN = Hp10;
8001d0a: 4b14 ldr r3, [pc, #80] ; (8001d5c <rdPar+0x160>)
8001d0c: 2204 movs r2, #4
8001d0e: 815a strh r2, [r3, #10]
rewrite = true;
8001d10: 1dfb adds r3, r7, #7
8001d12: 2201 movs r2, #1
8001d14: 701a strb r2, [r3, #0]
}
if(pardata.IKU > Ku1000) {
8001d16: 4b11 ldr r3, [pc, #68] ; (8001d5c <rdPar+0x160>)
8001d18: 899b ldrh r3, [r3, #12]
8001d1a: b29b uxth r3, r3
8001d1c: 2b0c cmp r3, #12
8001d1e: d905 bls.n 8001d2c <rdPar+0x130>
pardata.IKU = Ku1000;
8001d20: 4b0e ldr r3, [pc, #56] ; (8001d5c <rdPar+0x160>)
8001d22: 220c movs r2, #12
8001d24: 819a strh r2, [r3, #12]
rewrite = true;
8001d26: 1dfb adds r3, r7, #7
8001d28: 2201 movs r2, #1
8001d2a: 701a strb r2, [r3, #0]
}
if(pardata.VAL > Nython) {
8001d2c: 4b0b ldr r3, [pc, #44] ; (8001d5c <rdPar+0x160>)
8001d2e: 8b1b ldrh r3, [r3, #24]
8001d30: b29b uxth r3, r3
8001d32: 2b05 cmp r3, #5
8001d34: d905 bls.n 8001d42 <rdPar+0x146>
pardata.VAL = Accel;
8001d36: 4b09 ldr r3, [pc, #36] ; (8001d5c <rdPar+0x160>)
8001d38: 2200 movs r2, #0
8001d3a: 831a strh r2, [r3, #24]
rewrite = true;
8001d3c: 1dfb adds r3, r7, #7
8001d3e: 2201 movs r2, #1
8001d40: 701a strb r2, [r3, #0]
}
/////////////////////////////
if(rewrite)
8001d42: 1dfb adds r3, r7, #7
8001d44: 781b ldrb r3, [r3, #0]
8001d46: 2b00 cmp r3, #0
8001d48: d004 beq.n 8001d54 <rdPar+0x158>
{
rewrite = 0;
8001d4a: 1dfb adds r3, r7, #7
8001d4c: 2200 movs r2, #0
8001d4e: 701a strb r2, [r3, #0]
wrPar();
8001d50: f7ff fef6 bl 8001b40 <wrPar>
}
/////////////////////////////
}
8001d54: 46c0 nop ; (mov r8, r8)
8001d56: 46bd mov sp, r7
8001d58: b003 add sp, #12
8001d5a: bd90 pop {r4, r7, pc}
8001d5c: 20000098 .word 0x20000098
8001d60: 0801ff00 .word 0x0801ff00
8001d64: 3f800054 .word 0x3f800054
8001d68: 4120000a .word 0x4120000a
08001d6c <wrCorr>:
void wrCorr(void)
{
8001d6c: b580 push {r7, lr}
8001d6e: b084 sub sp, #16
8001d70: af00 add r7, sp, #0
uint8_t i, len;
uint32_t *pData, Address;
len = sizeof(CorrWord);
8001d72: 1cfb adds r3, r7, #3
8001d74: 2250 movs r2, #80 ; 0x50
8001d76: 701a strb r2, [r3, #0]
len >>= 2;
8001d78: 1cfb adds r3, r7, #3
8001d7a: 1cfa adds r2, r7, #3
8001d7c: 7812 ldrb r2, [r2, #0]
8001d7e: 0892 lsrs r2, r2, #2
8001d80: 701a strb r2, [r3, #0]
HAL_FLASH_Unlock();
8001d82: f002 fab1 bl 80042e8 <HAL_FLASH_Unlock>
FLASH_PageErase(CORRPAGE);
8001d86: 4b24 ldr r3, [pc, #144] ; (8001e18 <wrCorr+0xac>)
8001d88: 0018 movs r0, r3
8001d8a: f002 fc1f bl 80045cc <FLASH_PageErase>
CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG);
8001d8e: 4b23 ldr r3, [pc, #140] ; (8001e1c <wrCorr+0xb0>)
8001d90: 4a22 ldr r2, [pc, #136] ; (8001e1c <wrCorr+0xb0>)
8001d92: 6852 ldr r2, [r2, #4]
8001d94: 2108 movs r1, #8
8001d96: 438a bics r2, r1
8001d98: 605a str r2, [r3, #4]
CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE);
8001d9a: 4b20 ldr r3, [pc, #128] ; (8001e1c <wrCorr+0xb0>)
8001d9c: 4a1f ldr r2, [pc, #124] ; (8001e1c <wrCorr+0xb0>)
8001d9e: 6852 ldr r2, [r2, #4]
8001da0: 491f ldr r1, [pc, #124] ; (8001e20 <wrCorr+0xb4>)
8001da2: 400a ands r2, r1
8001da4: 605a str r2, [r3, #4]
FLASH_WaitForLastOperation(100);
8001da6: 2064 movs r0, #100 ; 0x64
8001da8: f002 fb02 bl 80043b0 <FLASH_WaitForLastOperation>
Address = CORRPAGE;
8001dac: 4b1a ldr r3, [pc, #104] ; (8001e18 <wrCorr+0xac>)
8001dae: 607b str r3, [r7, #4]
pData = (uint32_t *) &CorrWord;
8001db0: 4b1c ldr r3, [pc, #112] ; (8001e24 <wrCorr+0xb8>)
8001db2: 60bb str r3, [r7, #8]
for(i = 0; i < len; i++)
8001db4: 230f movs r3, #15
8001db6: 18fb adds r3, r7, r3
8001db8: 2200 movs r2, #0
8001dba: 701a strb r2, [r3, #0]
8001dbc: e012 b.n 8001de4 <wrCorr+0x78>
{
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, *pData++);
8001dbe: 68bb ldr r3, [r7, #8]
8001dc0: 1d1a adds r2, r3, #4
8001dc2: 60ba str r2, [r7, #8]
8001dc4: 681a ldr r2, [r3, #0]
8001dc6: 687b ldr r3, [r7, #4]
8001dc8: 0019 movs r1, r3
8001dca: 2002 movs r0, #2
8001dcc: f002 fa50 bl 8004270 <HAL_FLASH_Program>
Address += 4;
8001dd0: 687b ldr r3, [r7, #4]
8001dd2: 3304 adds r3, #4
8001dd4: 607b str r3, [r7, #4]
for(i = 0; i < len; i++)
8001dd6: 230f movs r3, #15
8001dd8: 18fb adds r3, r7, r3
8001dda: 781a ldrb r2, [r3, #0]
8001ddc: 230f movs r3, #15
8001dde: 18fb adds r3, r7, r3
8001de0: 3201 adds r2, #1
8001de2: 701a strb r2, [r3, #0]
8001de4: 230f movs r3, #15
8001de6: 18fa adds r2, r7, r3
8001de8: 1cfb adds r3, r7, #3
8001dea: 7812 ldrb r2, [r2, #0]
8001dec: 781b ldrb r3, [r3, #0]
8001dee: 429a cmp r2, r3
8001df0: d3e5 bcc.n 8001dbe <wrCorr+0x52>
}
CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG);
8001df2: 4b0a ldr r3, [pc, #40] ; (8001e1c <wrCorr+0xb0>)
8001df4: 4a09 ldr r2, [pc, #36] ; (8001e1c <wrCorr+0xb0>)
8001df6: 6852 ldr r2, [r2, #4]
8001df8: 2108 movs r1, #8
8001dfa: 438a bics r2, r1
8001dfc: 605a str r2, [r3, #4]
CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE);
8001dfe: 4b07 ldr r3, [pc, #28] ; (8001e1c <wrCorr+0xb0>)
8001e00: 4a06 ldr r2, [pc, #24] ; (8001e1c <wrCorr+0xb0>)
8001e02: 6852 ldr r2, [r2, #4]
8001e04: 4906 ldr r1, [pc, #24] ; (8001e20 <wrCorr+0xb4>)
8001e06: 400a ands r2, r1
8001e08: 605a str r2, [r3, #4]
HAL_FLASH_Lock();
8001e0a: f002 fabd bl 8004388 <HAL_FLASH_Lock>
}
8001e0e: 46c0 nop ; (mov r8, r8)
8001e10: 46bd mov sp, r7
8001e12: b004 add sp, #16
8001e14: bd80 pop {r7, pc}
8001e16: 46c0 nop ; (mov r8, r8)
8001e18: 0801ff80 .word 0x0801ff80
8001e1c: 40022000 .word 0x40022000
8001e20: fffffdff .word 0xfffffdff
8001e24: 20000048 .word 0x20000048
08001e28 <rdCorr>:
void rdCorr(void)
{
8001e28: b5b0 push {r4, r5, r7, lr}
8001e2a: b082 sub sp, #8
8001e2c: af00 add r7, sp, #0
uint8_t i, j;
memcpy((void *) &CorrWord, (void *) CORRPAGE, sizeof(CorrWord));
8001e2e: 4b2b ldr r3, [pc, #172] ; (8001edc <rdCorr+0xb4>)
8001e30: 4a2b ldr r2, [pc, #172] ; (8001ee0 <rdCorr+0xb8>)
8001e32: 0018 movs r0, r3
8001e34: 0011 movs r1, r2
8001e36: 2350 movs r3, #80 ; 0x50
8001e38: 001a movs r2, r3
8001e3a: f005 f8b7 bl 8006fac <memcpy>
if(((CorrWord[0][0] == 0xffff) || (CorrWord[0][1] == 0xffff)) || ((CorrWord[0][0] == 0) || (CorrWord[0][1] == 0)))
8001e3e: 4b27 ldr r3, [pc, #156] ; (8001edc <rdCorr+0xb4>)
8001e40: 881b ldrh r3, [r3, #0]
8001e42: b29b uxth r3, r3
8001e44: 4a27 ldr r2, [pc, #156] ; (8001ee4 <rdCorr+0xbc>)
8001e46: 4293 cmp r3, r2
8001e48: d00f beq.n 8001e6a <rdCorr+0x42>
8001e4a: 4b24 ldr r3, [pc, #144] ; (8001edc <rdCorr+0xb4>)
8001e4c: 885b ldrh r3, [r3, #2]
8001e4e: b29b uxth r3, r3
8001e50: 4a24 ldr r2, [pc, #144] ; (8001ee4 <rdCorr+0xbc>)
8001e52: 4293 cmp r3, r2
8001e54: d009 beq.n 8001e6a <rdCorr+0x42>
8001e56: 4b21 ldr r3, [pc, #132] ; (8001edc <rdCorr+0xb4>)
8001e58: 881b ldrh r3, [r3, #0]
8001e5a: b29b uxth r3, r3
8001e5c: 2b00 cmp r3, #0
8001e5e: d004 beq.n 8001e6a <rdCorr+0x42>
8001e60: 4b1e ldr r3, [pc, #120] ; (8001edc <rdCorr+0xb4>)
8001e62: 885b ldrh r3, [r3, #2]
8001e64: b29b uxth r3, r3
8001e66: 2b00 cmp r3, #0
8001e68: d134 bne.n 8001ed4 <rdCorr+0xac>
{
for(j = 0; j < 2; j++)
8001e6a: 1dbb adds r3, r7, #6
8001e6c: 2200 movs r2, #0
8001e6e: 701a strb r2, [r3, #0]
8001e70: e02a b.n 8001ec8 <rdCorr+0xa0>
{
for(i = 0; i < 20; i++) {
8001e72: 1dfb adds r3, r7, #7
8001e74: 2200 movs r2, #0
8001e76: 701a strb r2, [r3, #0]
8001e78: e01d b.n 8001eb6 <rdCorr+0x8e>
CorrWord[j][i] = FACTORY_CORR[j][i];
8001e7a: 1dbb adds r3, r7, #6
8001e7c: 781a ldrb r2, [r3, #0]
8001e7e: 1dfb adds r3, r7, #7
8001e80: 7818 ldrb r0, [r3, #0]
8001e82: 1dbb adds r3, r7, #6
8001e84: 7819 ldrb r1, [r3, #0]
8001e86: 1dfb adds r3, r7, #7
8001e88: 781d ldrb r5, [r3, #0]
8001e8a: 4c17 ldr r4, [pc, #92] ; (8001ee8 <rdCorr+0xc0>)
8001e8c: 000b movs r3, r1
8001e8e: 009b lsls r3, r3, #2
8001e90: 185b adds r3, r3, r1
8001e92: 009b lsls r3, r3, #2
8001e94: 195b adds r3, r3, r5
8001e96: 005b lsls r3, r3, #1
8001e98: 5b1c ldrh r4, [r3, r4]
8001e9a: 4910 ldr r1, [pc, #64] ; (8001edc <rdCorr+0xb4>)
8001e9c: 0013 movs r3, r2
8001e9e: 009b lsls r3, r3, #2
8001ea0: 189b adds r3, r3, r2
8001ea2: 009b lsls r3, r3, #2
8001ea4: 181b adds r3, r3, r0
8001ea6: 005b lsls r3, r3, #1
8001ea8: 1c22 adds r2, r4, #0
8001eaa: 525a strh r2, [r3, r1]
for(i = 0; i < 20; i++) {
8001eac: 1dfb adds r3, r7, #7
8001eae: 781a ldrb r2, [r3, #0]
8001eb0: 1dfb adds r3, r7, #7
8001eb2: 3201 adds r2, #1
8001eb4: 701a strb r2, [r3, #0]
8001eb6: 1dfb adds r3, r7, #7
8001eb8: 781b ldrb r3, [r3, #0]
8001eba: 2b13 cmp r3, #19
8001ebc: d9dd bls.n 8001e7a <rdCorr+0x52>
for(j = 0; j < 2; j++)
8001ebe: 1dbb adds r3, r7, #6
8001ec0: 781a ldrb r2, [r3, #0]
8001ec2: 1dbb adds r3, r7, #6
8001ec4: 3201 adds r2, #1
8001ec6: 701a strb r2, [r3, #0]
8001ec8: 1dbb adds r3, r7, #6
8001eca: 781b ldrb r3, [r3, #0]
8001ecc: 2b01 cmp r3, #1
8001ece: d9d0 bls.n 8001e72 <rdCorr+0x4a>
}
}
wrCorr();
8001ed0: f7ff ff4c bl 8001d6c <wrCorr>
}
}
8001ed4: 46c0 nop ; (mov r8, r8)
8001ed6: 46bd mov sp, r7
8001ed8: b002 add sp, #8
8001eda: bdb0 pop {r4, r5, r7, pc}
8001edc: 20000048 .word 0x20000048
8001ee0: 0801ff80 .word 0x0801ff80
8001ee4: 0000ffff .word 0x0000ffff
8001ee8: 0800716c .word 0x0800716c
08001eec <MX_GPIO_Init>:
* Output
* EVENT_OUT
* EXTI
*/
void MX_GPIO_Init(void)
{
8001eec: b580 push {r7, lr}
8001eee: b088 sub sp, #32
8001ef0: af00 add r7, sp, #0
GPIO_InitTypeDef GPIO_InitStruct = {0};
8001ef2: 230c movs r3, #12
8001ef4: 18fb adds r3, r7, r3
8001ef6: 0018 movs r0, r3
8001ef8: 2314 movs r3, #20
8001efa: 001a movs r2, r3
8001efc: 2100 movs r1, #0
8001efe: f005 f85e bl 8006fbe <memset>
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOA_CLK_ENABLE();
8001f02: 4b5a ldr r3, [pc, #360] ; (800206c <MX_GPIO_Init+0x180>)
8001f04: 4a59 ldr r2, [pc, #356] ; (800206c <MX_GPIO_Init+0x180>)
8001f06: 6ad2 ldr r2, [r2, #44] ; 0x2c
8001f08: 2101 movs r1, #1
8001f0a: 430a orrs r2, r1
8001f0c: 62da str r2, [r3, #44] ; 0x2c
8001f0e: 4b57 ldr r3, [pc, #348] ; (800206c <MX_GPIO_Init+0x180>)
8001f10: 6adb ldr r3, [r3, #44] ; 0x2c
8001f12: 2201 movs r2, #1
8001f14: 4013 ands r3, r2
8001f16: 60bb str r3, [r7, #8]
8001f18: 68bb ldr r3, [r7, #8]
__HAL_RCC_GPIOB_CLK_ENABLE();
8001f1a: 4b54 ldr r3, [pc, #336] ; (800206c <MX_GPIO_Init+0x180>)
8001f1c: 4a53 ldr r2, [pc, #332] ; (800206c <MX_GPIO_Init+0x180>)
8001f1e: 6ad2 ldr r2, [r2, #44] ; 0x2c
8001f20: 2102 movs r1, #2
8001f22: 430a orrs r2, r1
8001f24: 62da str r2, [r3, #44] ; 0x2c
8001f26: 4b51 ldr r3, [pc, #324] ; (800206c <MX_GPIO_Init+0x180>)
8001f28: 6adb ldr r3, [r3, #44] ; 0x2c
8001f2a: 2202 movs r2, #2
8001f2c: 4013 ands r3, r2
8001f2e: 607b str r3, [r7, #4]
8001f30: 687b ldr r3, [r7, #4]
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, PER_Pin|RE_Pin, GPIO_PIN_RESET);
8001f32: 2388 movs r3, #136 ; 0x88
8001f34: 0059 lsls r1, r3, #1
8001f36: 23a0 movs r3, #160 ; 0xa0
8001f38: 05db lsls r3, r3, #23
8001f3a: 2200 movs r2, #0
8001f3c: 0018 movs r0, r3
8001f3e: f002 fde6 bl 8004b0e <HAL_GPIO_WritePin>
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, A0_Pin|A1_Pin|A2_Pin|A10_Pin
8001f42: 494b ldr r1, [pc, #300] ; (8002070 <MX_GPIO_Init+0x184>)
8001f44: 4b4b ldr r3, [pc, #300] ; (8002074 <MX_GPIO_Init+0x188>)
8001f46: 2200 movs r2, #0
8001f48: 0018 movs r0, r3
8001f4a: f002 fde0 bl 8004b0e <HAL_GPIO_WritePin>
|A11_Pin|A12_Pin|A3_Pin|A4_Pin
|A5_Pin|A6_Pin|A7_Pin|A8_Pin
|A9_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, FL_Pin|STD_Pin|SCK_Pin, GPIO_PIN_SET);
8001f4e: 23e0 movs r3, #224 ; 0xe0
8001f50: 021b lsls r3, r3, #8
8001f52: 4848 ldr r0, [pc, #288] ; (8002074 <MX_GPIO_Init+0x188>)
8001f54: 2201 movs r2, #1
8001f56: 0019 movs r1, r3
8001f58: f002 fdd9 bl 8004b0e <HAL_GPIO_WritePin>
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = PER_Pin;
8001f5c: 230c movs r3, #12
8001f5e: 18fb adds r3, r7, r3
8001f60: 2210 movs r2, #16
8001f62: 601a str r2, [r3, #0]
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
8001f64: 230c movs r3, #12
8001f66: 18fb adds r3, r7, r3
8001f68: 2201 movs r2, #1
8001f6a: 605a str r2, [r3, #4]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8001f6c: 230c movs r3, #12
8001f6e: 18fb adds r3, r7, r3
8001f70: 2200 movs r2, #0
8001f72: 609a str r2, [r3, #8]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
8001f74: 230c movs r3, #12
8001f76: 18fb adds r3, r7, r3
8001f78: 2202 movs r2, #2
8001f7a: 60da str r2, [r3, #12]
HAL_GPIO_Init(PER_GPIO_Port, &GPIO_InitStruct);
8001f7c: 230c movs r3, #12
8001f7e: 18fa adds r2, r7, r3
8001f80: 23a0 movs r3, #160 ; 0xa0
8001f82: 05db lsls r3, r3, #23
8001f84: 0011 movs r1, r2
8001f86: 0018 movs r0, r3
8001f88: f002 fb42 bl 8004610 <HAL_GPIO_Init>
/*Configure GPIO pins : PBPin PBPin PBPin PBPin
PBPin PBPin PBPin PBPin
PBPin PBPin PBPin PBPin
PBPin */
GPIO_InitStruct.Pin = A0_Pin|A1_Pin|A2_Pin|A10_Pin
8001f8c: 230c movs r3, #12
8001f8e: 18fb adds r3, r7, r3
8001f90: 4a37 ldr r2, [pc, #220] ; (8002070 <MX_GPIO_Init+0x184>)
8001f92: 601a str r2, [r3, #0]
|A11_Pin|A12_Pin|A3_Pin|A4_Pin
|A5_Pin|A6_Pin|A7_Pin|A8_Pin
|A9_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
8001f94: 230c movs r3, #12
8001f96: 18fb adds r3, r7, r3
8001f98: 2201 movs r2, #1
8001f9a: 605a str r2, [r3, #4]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8001f9c: 230c movs r3, #12
8001f9e: 18fb adds r3, r7, r3
8001fa0: 2200 movs r2, #0
8001fa2: 609a str r2, [r3, #8]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
8001fa4: 230c movs r3, #12
8001fa6: 18fb adds r3, r7, r3
8001fa8: 2200 movs r2, #0
8001faa: 60da str r2, [r3, #12]
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
8001fac: 230c movs r3, #12
8001fae: 18fb adds r3, r7, r3
8001fb0: 4a30 ldr r2, [pc, #192] ; (8002074 <MX_GPIO_Init+0x188>)
8001fb2: 0019 movs r1, r3
8001fb4: 0010 movs r0, r2
8001fb6: f002 fb2b bl 8004610 <HAL_GPIO_Init>
/*Configure GPIO pins : PBPin PBPin PBPin */
GPIO_InitStruct.Pin = FL_Pin|STD_Pin|SCK_Pin;
8001fba: 230c movs r3, #12
8001fbc: 18fb adds r3, r7, r3
8001fbe: 22e0 movs r2, #224 ; 0xe0
8001fc0: 0212 lsls r2, r2, #8
8001fc2: 601a str r2, [r3, #0]
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
8001fc4: 230c movs r3, #12
8001fc6: 18fb adds r3, r7, r3
8001fc8: 2201 movs r2, #1
8001fca: 605a str r2, [r3, #4]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8001fcc: 230c movs r3, #12
8001fce: 18fb adds r3, r7, r3
8001fd0: 2200 movs r2, #0
8001fd2: 609a str r2, [r3, #8]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
8001fd4: 230c movs r3, #12
8001fd6: 18fb adds r3, r7, r3
8001fd8: 2203 movs r2, #3
8001fda: 60da str r2, [r3, #12]
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
8001fdc: 230c movs r3, #12
8001fde: 18fb adds r3, r7, r3
8001fe0: 4a24 ldr r2, [pc, #144] ; (8002074 <MX_GPIO_Init+0x188>)
8001fe2: 0019 movs r1, r3
8001fe4: 0010 movs r0, r2
8001fe6: f002 fb13 bl 8004610 <HAL_GPIO_Init>
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = RE_Pin;
8001fea: 230c movs r3, #12
8001fec: 18fb adds r3, r7, r3
8001fee: 2280 movs r2, #128 ; 0x80
8001ff0: 0052 lsls r2, r2, #1
8001ff2: 601a str r2, [r3, #0]
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
8001ff4: 230c movs r3, #12
8001ff6: 18fb adds r3, r7, r3
8001ff8: 2201 movs r2, #1
8001ffa: 605a str r2, [r3, #4]
GPIO_InitStruct.Pull = GPIO_NOPULL;
8001ffc: 230c movs r3, #12
8001ffe: 18fb adds r3, r7, r3
8002000: 2200 movs r2, #0
8002002: 609a str r2, [r3, #8]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
8002004: 230c movs r3, #12
8002006: 18fb adds r3, r7, r3
8002008: 2203 movs r2, #3
800200a: 60da str r2, [r3, #12]
HAL_GPIO_Init(RE_GPIO_Port, &GPIO_InitStruct);
800200c: 230c movs r3, #12
800200e: 18fa adds r2, r7, r3
8002010: 23a0 movs r3, #160 ; 0xa0
8002012: 05db lsls r3, r3, #23
8002014: 0011 movs r1, r2
8002016: 0018 movs r0, r3
8002018: f002 fafa bl 8004610 <HAL_GPIO_Init>
/*Configure GPIO pins : PAPin PAPin PAPin */
GPIO_InitStruct.Pin = UPER_Pin|OP_Pin|KZ_Pin;
800201c: 230c movs r3, #12
800201e: 18fb adds r3, r7, r3
8002020: 2207 movs r2, #7
8002022: 601a str r2, [r3, #0]
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
8002024: 230c movs r3, #12
8002026: 18fb adds r3, r7, r3
8002028: 4a13 ldr r2, [pc, #76] ; (8002078 <MX_GPIO_Init+0x18c>)
800202a: 605a str r2, [r3, #4]
GPIO_InitStruct.Pull = GPIO_NOPULL;
800202c: 230c movs r3, #12
800202e: 18fb adds r3, r7, r3
8002030: 2200 movs r2, #0
8002032: 609a str r2, [r3, #8]
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
8002034: 230c movs r3, #12
8002036: 18fa adds r2, r7, r3
8002038: 23a0 movs r3, #160 ; 0xa0
800203a: 05db lsls r3, r3, #23
800203c: 0011 movs r1, r2
800203e: 0018 movs r0, r3
8002040: f002 fae6 bl 8004610 <HAL_GPIO_Init>
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI0_1_IRQn, 1, 0);
8002044: 2200 movs r2, #0
8002046: 2101 movs r1, #1
8002048: 2005 movs r0, #5
800204a: f002 f845 bl 80040d8 <HAL_NVIC_SetPriority>
HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
800204e: 2005 movs r0, #5
8002050: f002 f858 bl 8004104 <HAL_NVIC_EnableIRQ>
HAL_NVIC_SetPriority(EXTI2_3_IRQn, 1, 0);
8002054: 2200 movs r2, #0
8002056: 2101 movs r1, #1
8002058: 2006 movs r0, #6
800205a: f002 f83d bl 80040d8 <HAL_NVIC_SetPriority>
HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
800205e: 2006 movs r0, #6
8002060: f002 f850 bl 8004104 <HAL_NVIC_EnableIRQ>
}
8002064: 46c0 nop ; (mov r8, r8)
8002066: 46bd mov sp, r7
8002068: b008 add sp, #32
800206a: bd80 pop {r7, pc}
800206c: 40021000 .word 0x40021000
8002070: 00001fff .word 0x00001fff
8002074: 50000400 .word 0x50000400
8002078: 10310000 .word 0x10310000
0800207c <main>:
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
800207c: b580 push {r7, lr}
800207e: af00 add r7, sp, #0
HAL_Init();
8002080: f001 feee bl 8003e60 <HAL_Init>
SystemClock_Config();
8002084: f000 f834 bl 80020f0 <SystemClock_Config>
MX_GPIO_Init();
8002088: f7ff ff30 bl 8001eec <MX_GPIO_Init>
MX_FLASH_Init();
800208c: f7ff fd46 bl 8001b1c <MX_FLASH_Init>
MX_TIM7_Init();
8002090: f000 f93a bl 8002308 <MX_TIM7_Init>
//pardata.OWN = 1; // was defined in my.h
SetAndCorrect();
8002094: f7ff f8ec bl 8001270 <SetAndCorrect>
MX_USART1_UART_Init();
8002098: f000 f9ac bl 80023f4 <MX_USART1_UART_Init>
while (1)
{
if(needClbr)
800209c: 4b11 ldr r3, [pc, #68] ; (80020e4 <main+0x68>)
800209e: 781b ldrb r3, [r3, #0]
80020a0: b2db uxtb r3, r3
80020a2: 2b00 cmp r3, #0
80020a4: d004 beq.n 80020b0 <main+0x34>
{
needClbr = false;
80020a6: 4b0f ldr r3, [pc, #60] ; (80020e4 <main+0x68>)
80020a8: 2200 movs r2, #0
80020aa: 701a strb r2, [r3, #0]
initCalibr();
80020ac: f7ff fc0c bl 80018c8 <initCalibr>
}
if(needSave)
80020b0: 4b0d ldr r3, [pc, #52] ; (80020e8 <main+0x6c>)
80020b2: 781b ldrb r3, [r3, #0]
80020b4: b2db uxtb r3, r3
80020b6: 2b00 cmp r3, #0
80020b8: d006 beq.n 80020c8 <main+0x4c>
{
needSave = false;
80020ba: 4b0b ldr r3, [pc, #44] ; (80020e8 <main+0x6c>)
80020bc: 2200 movs r2, #0
80020be: 701a strb r2, [r3, #0]
SetAndCorrect();
80020c0: f7ff f8d6 bl 8001270 <SetAndCorrect>
wrPar();
80020c4: f7ff fd3c bl 8001b40 <wrPar>
}
if(needCorr)
80020c8: 4b08 ldr r3, [pc, #32] ; (80020ec <main+0x70>)
80020ca: 781b ldrb r3, [r3, #0]
80020cc: b2db uxtb r3, r3
80020ce: 2b00 cmp r3, #0
80020d0: d0e4 beq.n 800209c <main+0x20>
{
needCorr = false;
80020d2: 4b06 ldr r3, [pc, #24] ; (80020ec <main+0x70>)
80020d4: 2200 movs r2, #0
80020d6: 701a strb r2, [r3, #0]
SetAndCorrect();
80020d8: f7ff f8ca bl 8001270 <SetAndCorrect>
wrCorr();
80020dc: f7ff fe46 bl 8001d6c <wrCorr>
if(needClbr)
80020e0: e7dc b.n 800209c <main+0x20>
80020e2: 46c0 nop ; (mov r8, r8)
80020e4: 2000002e .word 0x2000002e
80020e8: 20000037 .word 0x20000037
80020ec: 20000038 .word 0x20000038
080020f0 <SystemClock_Config>:
/**
* @brief System Clock Configuration
* @retval None
*/
void SystemClock_Config(void)
{
80020f0: b580 push {r7, lr}
80020f2: b09c sub sp, #112 ; 0x70
80020f4: af00 add r7, sp, #0
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
80020f6: 2338 movs r3, #56 ; 0x38
80020f8: 18fb adds r3, r7, r3
80020fa: 0018 movs r0, r3
80020fc: 2338 movs r3, #56 ; 0x38
80020fe: 001a movs r2, r3
8002100: 2100 movs r1, #0
8002102: f004 ff5c bl 8006fbe <memset>
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
8002106: 2324 movs r3, #36 ; 0x24
8002108: 18fb adds r3, r7, r3
800210a: 0018 movs r0, r3
800210c: 2314 movs r3, #20
800210e: 001a movs r2, r3
8002110: 2100 movs r1, #0
8002112: f004 ff54 bl 8006fbe <memset>
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
8002116: 003b movs r3, r7
8002118: 0018 movs r0, r3
800211a: 2324 movs r3, #36 ; 0x24
800211c: 001a movs r2, r3
800211e: 2100 movs r1, #0
8002120: f004 ff4d bl 8006fbe <memset>
/** Configure the main internal regulator output voltage
*/
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
8002124: 4b2f ldr r3, [pc, #188] ; (80021e4 <SystemClock_Config+0xf4>)
8002126: 4a2f ldr r2, [pc, #188] ; (80021e4 <SystemClock_Config+0xf4>)
8002128: 6812 ldr r2, [r2, #0]
800212a: 492f ldr r1, [pc, #188] ; (80021e8 <SystemClock_Config+0xf8>)
800212c: 400a ands r2, r1
800212e: 2180 movs r1, #128 ; 0x80
8002130: 0109 lsls r1, r1, #4
8002132: 430a orrs r2, r1
8002134: 601a str r2, [r3, #0]
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
8002136: 2338 movs r3, #56 ; 0x38
8002138: 18fb adds r3, r7, r3
800213a: 2202 movs r2, #2
800213c: 601a str r2, [r3, #0]
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
800213e: 2338 movs r3, #56 ; 0x38
8002140: 18fb adds r3, r7, r3
8002142: 2201 movs r2, #1
8002144: 60da str r2, [r3, #12]
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
8002146: 2338 movs r3, #56 ; 0x38
8002148: 18fb adds r3, r7, r3
800214a: 2210 movs r2, #16
800214c: 611a str r2, [r3, #16]
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
800214e: 2338 movs r3, #56 ; 0x38
8002150: 18fb adds r3, r7, r3
8002152: 2202 movs r2, #2
8002154: 629a str r2, [r3, #40] ; 0x28
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
8002156: 2338 movs r3, #56 ; 0x38
8002158: 18fb adds r3, r7, r3
800215a: 2200 movs r2, #0
800215c: 62da str r2, [r3, #44] ; 0x2c
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_3;
800215e: 2338 movs r3, #56 ; 0x38
8002160: 18fb adds r3, r7, r3
8002162: 2200 movs r2, #0
8002164: 631a str r2, [r3, #48] ; 0x30
RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_3;
8002166: 2338 movs r3, #56 ; 0x38
8002168: 18fb adds r3, r7, r3
800216a: 2280 movs r2, #128 ; 0x80
800216c: 0412 lsls r2, r2, #16
800216e: 635a str r2, [r3, #52] ; 0x34
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
8002170: 2338 movs r3, #56 ; 0x38
8002172: 18fb adds r3, r7, r3
8002174: 0018 movs r0, r3
8002176: f002 fd03 bl 8004b80 <HAL_RCC_OscConfig>
800217a: 1e03 subs r3, r0, #0
800217c: d001 beq.n 8002182 <SystemClock_Config+0x92>
{
Error_Handler();
800217e: f000 f835 bl 80021ec <Error_Handler>
}
/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
8002182: 2324 movs r3, #36 ; 0x24
8002184: 18fb adds r3, r7, r3
8002186: 220f movs r2, #15
8002188: 601a str r2, [r3, #0]
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
800218a: 2324 movs r3, #36 ; 0x24
800218c: 18fb adds r3, r7, r3
800218e: 2203 movs r2, #3
8002190: 605a str r2, [r3, #4]
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV2;
8002192: 2324 movs r3, #36 ; 0x24
8002194: 18fb adds r3, r7, r3
8002196: 2280 movs r2, #128 ; 0x80
8002198: 609a str r2, [r3, #8]
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
800219a: 2324 movs r3, #36 ; 0x24
800219c: 18fb adds r3, r7, r3
800219e: 2200 movs r2, #0
80021a0: 60da str r2, [r3, #12]
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
80021a2: 2324 movs r3, #36 ; 0x24
80021a4: 18fb adds r3, r7, r3
80021a6: 2200 movs r2, #0
80021a8: 611a str r2, [r3, #16]
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
80021aa: 2324 movs r3, #36 ; 0x24
80021ac: 18fb adds r3, r7, r3
80021ae: 2100 movs r1, #0
80021b0: 0018 movs r0, r3
80021b2: f003 f8b7 bl 8005324 <HAL_RCC_ClockConfig>
80021b6: 1e03 subs r3, r0, #0
80021b8: d001 beq.n 80021be <SystemClock_Config+0xce>
{
Error_Handler();
80021ba: f000 f817 bl 80021ec <Error_Handler>
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
80021be: 003b movs r3, r7
80021c0: 2201 movs r2, #1
80021c2: 601a str r2, [r3, #0]
PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
80021c4: 003b movs r3, r7
80021c6: 2200 movs r2, #0
80021c8: 609a str r2, [r3, #8]
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
80021ca: 003b movs r3, r7
80021cc: 0018 movs r0, r3
80021ce: f003 fac9 bl 8005764 <HAL_RCCEx_PeriphCLKConfig>
80021d2: 1e03 subs r3, r0, #0
80021d4: d001 beq.n 80021da <SystemClock_Config+0xea>
{
Error_Handler();
80021d6: f000 f809 bl 80021ec <Error_Handler>
}
}
80021da: 46c0 nop ; (mov r8, r8)
80021dc: 46bd mov sp, r7
80021de: b01c add sp, #112 ; 0x70
80021e0: bd80 pop {r7, pc}
80021e2: 46c0 nop ; (mov r8, r8)
80021e4: 40007000 .word 0x40007000
80021e8: ffffe7ff .word 0xffffe7ff
080021ec <Error_Handler>:
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void Error_Handler(void)
{
80021ec: b580 push {r7, lr}
80021ee: af00 add r7, sp, #0
\details Disables IRQ interrupts by setting the I-bit in the CPSR.
Can only be executed in Privileged modes.
*/
__STATIC_FORCEINLINE void __disable_irq(void)
{
__ASM volatile ("cpsid i" : : : "memory");
80021f0: b672 cpsid i
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
__disable_irq();
while (1)
80021f2: e7fe b.n 80021f2 <Error_Handler+0x6>
080021f4 <HAL_MspInit>:
/* USER CODE END 0 */
/**
* Initializes the Global MSP.
*/
void HAL_MspInit(void)
{
80021f4: b580 push {r7, lr}
80021f6: af00 add r7, sp, #0
/* USER CODE BEGIN MspInit 0 */
/* USER CODE END MspInit 0 */
__HAL_RCC_SYSCFG_CLK_ENABLE();
80021f8: 4b07 ldr r3, [pc, #28] ; (8002218 <HAL_MspInit+0x24>)
80021fa: 4a07 ldr r2, [pc, #28] ; (8002218 <HAL_MspInit+0x24>)
80021fc: 6b52 ldr r2, [r2, #52] ; 0x34
80021fe: 2101 movs r1, #1
8002200: 430a orrs r2, r1
8002202: 635a str r2, [r3, #52] ; 0x34
__HAL_RCC_PWR_CLK_ENABLE();
8002204: 4b04 ldr r3, [pc, #16] ; (8002218 <HAL_MspInit+0x24>)
8002206: 4a04 ldr r2, [pc, #16] ; (8002218 <HAL_MspInit+0x24>)
8002208: 6b92 ldr r2, [r2, #56] ; 0x38
800220a: 2180 movs r1, #128 ; 0x80
800220c: 0549 lsls r1, r1, #21
800220e: 430a orrs r2, r1
8002210: 639a str r2, [r3, #56] ; 0x38
/* System interrupt init*/
/* USER CODE BEGIN MspInit 1 */
/* USER CODE END MspInit 1 */
}
8002212: 46c0 nop ; (mov r8, r8)
8002214: 46bd mov sp, r7
8002216: bd80 pop {r7, pc}
8002218: 40021000 .word 0x40021000
0800221c <NMI_Handler>:
/******************************************************************************/
/**
* @brief This function handles Non maskable Interrupt.
*/
void NMI_Handler(void)
{
800221c: b580 push {r7, lr}
800221e: af00 add r7, sp, #0
/* USER CODE BEGIN NonMaskableInt_IRQn 0 */
/* USER CODE END NonMaskableInt_IRQn 0 */
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
while (1)
8002220: e7fe b.n 8002220 <NMI_Handler+0x4>
08002222 <HardFault_Handler>:
/**
* @brief This function handles Hard fault interrupt.
*/
void HardFault_Handler(void)
{
8002222: b580 push {r7, lr}
8002224: af00 add r7, sp, #0
/* USER CODE BEGIN HardFault_IRQn 0 */
/* USER CODE END HardFault_IRQn 0 */
while (1)
8002226: e7fe b.n 8002226 <HardFault_Handler+0x4>
08002228 <SVC_Handler>:
/**
* @brief This function handles System service call via SWI instruction.
*/
void SVC_Handler(void)
{
8002228: b580 push {r7, lr}
800222a: af00 add r7, sp, #0
/* USER CODE END SVC_IRQn 0 */
/* USER CODE BEGIN SVC_IRQn 1 */
/* USER CODE END SVC_IRQn 1 */
}
800222c: 46c0 nop ; (mov r8, r8)
800222e: 46bd mov sp, r7
8002230: bd80 pop {r7, pc}
08002232 <PendSV_Handler>:
/**
* @brief This function handles Pendable request for system service.
*/
void PendSV_Handler(void)
{
8002232: b580 push {r7, lr}
8002234: af00 add r7, sp, #0
/* USER CODE END PendSV_IRQn 0 */
/* USER CODE BEGIN PendSV_IRQn 1 */
/* USER CODE END PendSV_IRQn 1 */
}
8002236: 46c0 nop ; (mov r8, r8)
8002238: 46bd mov sp, r7
800223a: bd80 pop {r7, pc}
0800223c <SysTick_Handler>:
/**
* @brief This function handles System tick timer.
*/
void SysTick_Handler(void)
{
800223c: b580 push {r7, lr}
800223e: af00 add r7, sp, #0
/* USER CODE BEGIN SysTick_IRQn 0 */
/* USER CODE END SysTick_IRQn 0 */
HAL_IncTick();
8002240: f001 fe62 bl 8003f08 <HAL_IncTick>
if(timeout)
8002244: 4b17 ldr r3, [pc, #92] ; (80022a4 <SysTick_Handler+0x68>)
8002246: 781b ldrb r3, [r3, #0]
8002248: 2b00 cmp r3, #0
800224a: d006 beq.n 800225a <SysTick_Handler+0x1e>
timeout--;
800224c: 4b15 ldr r3, [pc, #84] ; (80022a4 <SysTick_Handler+0x68>)
800224e: 781b ldrb r3, [r3, #0]
8002250: 3b01 subs r3, #1
8002252: b2da uxtb r2, r3
8002254: 4b13 ldr r3, [pc, #76] ; (80022a4 <SysTick_Handler+0x68>)
8002256: 701a strb r2, [r3, #0]
}
else
send = false;
}
}
8002258: e020 b.n 800229c <SysTick_Handler+0x60>
if(iolen)
800225a: 4b13 ldr r3, [pc, #76] ; (80022a8 <SysTick_Handler+0x6c>)
800225c: 781b ldrb r3, [r3, #0]
800225e: 2b00 cmp r3, #0
8002260: d002 beq.n 8002268 <SysTick_Handler+0x2c>
iolen = 0;
8002262: 4b11 ldr r3, [pc, #68] ; (80022a8 <SysTick_Handler+0x6c>)
8002264: 2200 movs r2, #0
8002266: 701a strb r2, [r3, #0]
if(sendreq)
8002268: 4b10 ldr r3, [pc, #64] ; (80022ac <SysTick_Handler+0x70>)
800226a: 781b ldrb r3, [r3, #0]
800226c: 2b00 cmp r3, #0
800226e: d012 beq.n 8002296 <SysTick_Handler+0x5a>
sendreq = false;
8002270: 4b0e ldr r3, [pc, #56] ; (80022ac <SysTick_Handler+0x70>)
8002272: 2200 movs r2, #0
8002274: 701a strb r2, [r3, #0]
send = true;
8002276: 4b0e ldr r3, [pc, #56] ; (80022b0 <SysTick_Handler+0x74>)
8002278: 2201 movs r2, #1
800227a: 701a strb r2, [r3, #0]
timeout = time35[pardata.BAUD];
800227c: 4b0d ldr r3, [pc, #52] ; (80022b4 <SysTick_Handler+0x78>)
800227e: 885b ldrh r3, [r3, #2]
8002280: b29b uxth r3, r3
8002282: 001a movs r2, r3
8002284: 4b0c ldr r3, [pc, #48] ; (80022b8 <SysTick_Handler+0x7c>)
8002286: 0052 lsls r2, r2, #1
8002288: 5ad3 ldrh r3, [r2, r3]
800228a: b2da uxtb r2, r3
800228c: 4b05 ldr r3, [pc, #20] ; (80022a4 <SysTick_Handler+0x68>)
800228e: 701a strb r2, [r3, #0]
StartTransfer();
8002290: f001 fd52 bl 8003d38 <StartTransfer>
}
8002294: e002 b.n 800229c <SysTick_Handler+0x60>
send = false;
8002296: 4b06 ldr r3, [pc, #24] ; (80022b0 <SysTick_Handler+0x74>)
8002298: 2200 movs r2, #0
800229a: 701a strb r2, [r3, #0]
}
800229c: 46c0 nop ; (mov r8, r8)
800229e: 46bd mov sp, r7
80022a0: bd80 pop {r7, pc}
80022a2: 46c0 nop ; (mov r8, r8)
80022a4: 20000288 .word 0x20000288
80022a8: 20000035 .word 0x20000035
80022ac: 20000036 .word 0x20000036
80022b0: 20000005 .word 0x20000005
80022b4: 20000098 .word 0x20000098
80022b8: 080071bc .word 0x080071bc
080022bc <EXTI0_1_IRQHandler>:
/**
* @brief This function handles EXTI line 0 and line 1 interrupts.
*/
void EXTI0_1_IRQHandler(void)
{
80022bc: b580 push {r7, lr}
80022be: af00 add r7, sp, #0
/* USER CODE BEGIN EXTI0_1_IRQn 0 */
/* USER CODE END EXTI0_1_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
80022c0: 2001 movs r0, #1
80022c2: f002 fc41 bl 8004b48 <HAL_GPIO_EXTI_IRQHandler>
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
80022c6: 2002 movs r0, #2
80022c8: f002 fc3e bl 8004b48 <HAL_GPIO_EXTI_IRQHandler>
/* USER CODE BEGIN EXTI0_1_IRQn 1 */
/* USER CODE END EXTI0_1_IRQn 1 */
}
80022cc: 46c0 nop ; (mov r8, r8)
80022ce: 46bd mov sp, r7
80022d0: bd80 pop {r7, pc}
080022d2 <EXTI2_3_IRQHandler>:
/**
* @brief This function handles EXTI line 2 and line 3 interrupts.
*/
void EXTI2_3_IRQHandler(void)
{
80022d2: b580 push {r7, lr}
80022d4: af00 add r7, sp, #0
/* USER CODE BEGIN EXTI2_3_IRQn 0 */
/* USER CODE END EXTI2_3_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
80022d6: 2004 movs r0, #4
80022d8: f002 fc36 bl 8004b48 <HAL_GPIO_EXTI_IRQHandler>
/* USER CODE BEGIN EXTI2_3_IRQn 1 */
/* USER CODE END EXTI2_3_IRQn 1 */
}
80022dc: 46c0 nop ; (mov r8, r8)
80022de: 46bd mov sp, r7
80022e0: bd80 pop {r7, pc}
...
080022e4 <TIM7_IRQHandler>:
*/
/* USER CODE BEGIN 1 */
void TIM7_IRQHandler(void)
{
80022e4: b580 push {r7, lr}
80022e6: af00 add r7, sp, #0
HAL_TIM_IRQHandler(&htim7);
80022e8: 4b03 ldr r3, [pc, #12] ; (80022f8 <TIM7_IRQHandler+0x14>)
80022ea: 0018 movs r0, r3
80022ec: f003 fc1e bl 8005b2c <HAL_TIM_IRQHandler>
}
80022f0: 46c0 nop ; (mov r8, r8)
80022f2: 46bd mov sp, r7
80022f4: bd80 pop {r7, pc}
80022f6: 46c0 nop ; (mov r8, r8)
80022f8: 200000c0 .word 0x200000c0
080022fc <SystemInit>:
* @brief Setup the microcontroller system.
* @param None
* @retval None
*/
void SystemInit (void)
{
80022fc: b580 push {r7, lr}
80022fe: af00 add r7, sp, #0
/* Configure the Vector Table location add offset address ------------------*/
#if defined (USER_VECT_TAB_ADDRESS)
SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#endif /* USER_VECT_TAB_ADDRESS */
}
8002300: 46c0 nop ; (mov r8, r8)
8002302: 46bd mov sp, r7
8002304: bd80 pop {r7, pc}
...
08002308 <MX_TIM7_Init>:
/* TIM7 init function */
void MX_TIM7_Init(void)
{
8002308: b580 push {r7, lr}
800230a: b082 sub sp, #8
800230c: af00 add r7, sp, #0
TIM_MasterConfigTypeDef sMasterConfig = {0};
800230e: 003b movs r3, r7
8002310: 0018 movs r0, r3
8002312: 2308 movs r3, #8
8002314: 001a movs r2, r3
8002316: 2100 movs r1, #0
8002318: f004 fe51 bl 8006fbe <memset>
htim7.Instance = TIM7;
800231c: 4b17 ldr r3, [pc, #92] ; (800237c <MX_TIM7_Init+0x74>)
800231e: 4a18 ldr r2, [pc, #96] ; (8002380 <MX_TIM7_Init+0x78>)
8002320: 601a str r2, [r3, #0]
htim7.Init.Prescaler = 0;
8002322: 4b16 ldr r3, [pc, #88] ; (800237c <MX_TIM7_Init+0x74>)
8002324: 2200 movs r2, #0
8002326: 605a str r2, [r3, #4]
htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
8002328: 4b14 ldr r3, [pc, #80] ; (800237c <MX_TIM7_Init+0x74>)
800232a: 2200 movs r2, #0
800232c: 609a str r2, [r3, #8]
htim7.Init.Period = 7999; // Irq's 1ms
800232e: 4b13 ldr r3, [pc, #76] ; (800237c <MX_TIM7_Init+0x74>)
8002330: 4a14 ldr r2, [pc, #80] ; (8002384 <MX_TIM7_Init+0x7c>)
8002332: 60da str r2, [r3, #12]
htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
8002334: 4b11 ldr r3, [pc, #68] ; (800237c <MX_TIM7_Init+0x74>)
8002336: 2200 movs r2, #0
8002338: 615a str r2, [r3, #20]
if (HAL_TIM_Base_Init(&htim7) != HAL_OK)
800233a: 4b10 ldr r3, [pc, #64] ; (800237c <MX_TIM7_Init+0x74>)
800233c: 0018 movs r0, r3
800233e: f003 fb63 bl 8005a08 <HAL_TIM_Base_Init>
8002342: 1e03 subs r3, r0, #0
8002344: d001 beq.n 800234a <MX_TIM7_Init+0x42>
{
Error_Handler();
8002346: f7ff ff51 bl 80021ec <Error_Handler>
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
800234a: 003b movs r3, r7
800234c: 2220 movs r2, #32
800234e: 601a str r2, [r3, #0]
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
8002350: 003b movs r3, r7
8002352: 2200 movs r2, #0
8002354: 605a str r2, [r3, #4]
if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK)
8002356: 003a movs r2, r7
8002358: 4b08 ldr r3, [pc, #32] ; (800237c <MX_TIM7_Init+0x74>)
800235a: 0011 movs r1, r2
800235c: 0018 movs r0, r3
800235e: f003 fd4b bl 8005df8 <HAL_TIMEx_MasterConfigSynchronization>
8002362: 1e03 subs r3, r0, #0
8002364: d001 beq.n 800236a <MX_TIM7_Init+0x62>
{
Error_Handler();
8002366: f7ff ff41 bl 80021ec <Error_Handler>
}
/* USER CODE BEGIN TIM7_Init 2 */
HAL_TIM_Base_Start_IT(&htim7);
800236a: 4b04 ldr r3, [pc, #16] ; (800237c <MX_TIM7_Init+0x74>)
800236c: 0018 movs r0, r3
800236e: f003 fb8b bl 8005a88 <HAL_TIM_Base_Start_IT>
/* USER CODE END TIM7_Init 2 */
}
8002372: 46c0 nop ; (mov r8, r8)
8002374: 46bd mov sp, r7
8002376: b002 add sp, #8
8002378: bd80 pop {r7, pc}
800237a: 46c0 nop ; (mov r8, r8)
800237c: 200000c0 .word 0x200000c0
8002380: 40001400 .word 0x40001400
8002384: 00001f3f .word 0x00001f3f
08002388 <HAL_TIM_Base_MspInit>:
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
{
8002388: b580 push {r7, lr}
800238a: b082 sub sp, #8
800238c: af00 add r7, sp, #0
800238e: 6078 str r0, [r7, #4]
if(tim_baseHandle->Instance==TIM7)
8002390: 687b ldr r3, [r7, #4]
8002392: 681b ldr r3, [r3, #0]
8002394: 4a0a ldr r2, [pc, #40] ; (80023c0 <HAL_TIM_Base_MspInit+0x38>)
8002396: 4293 cmp r3, r2
8002398: d10d bne.n 80023b6 <HAL_TIM_Base_MspInit+0x2e>
{
/* USER CODE BEGIN TIM7_MspInit 0 */
/* USER CODE END TIM7_MspInit 0 */
/* TIM7 clock enable */
__HAL_RCC_TIM7_CLK_ENABLE();
800239a: 4b0a ldr r3, [pc, #40] ; (80023c4 <HAL_TIM_Base_MspInit+0x3c>)
800239c: 4a09 ldr r2, [pc, #36] ; (80023c4 <HAL_TIM_Base_MspInit+0x3c>)
800239e: 6b92 ldr r2, [r2, #56] ; 0x38
80023a0: 2120 movs r1, #32
80023a2: 430a orrs r2, r1
80023a4: 639a str r2, [r3, #56] ; 0x38
/* TIM7 interrupt Init */
HAL_NVIC_SetPriority(TIM7_IRQn, 2, 0);
80023a6: 2200 movs r2, #0
80023a8: 2102 movs r1, #2
80023aa: 2012 movs r0, #18
80023ac: f001 fe94 bl 80040d8 <HAL_NVIC_SetPriority>
HAL_NVIC_EnableIRQ(TIM7_IRQn);
80023b0: 2012 movs r0, #18
80023b2: f001 fea7 bl 8004104 <HAL_NVIC_EnableIRQ>
/* USER CODE BEGIN TIM7_MspInit 1 */
/* USER CODE END TIM7_MspInit 1 */
}
}
80023b6: 46c0 nop ; (mov r8, r8)
80023b8: 46bd mov sp, r7
80023ba: b002 add sp, #8
80023bc: bd80 pop {r7, pc}
80023be: 46c0 nop ; (mov r8, r8)
80023c0: 40001400 .word 0x40001400
80023c4: 40021000 .word 0x40021000
080023c8 <HAL_TIM_PeriodElapsedCallback>:
/* USER CODE BEGIN 1 */
/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
80023c8: b580 push {r7, lr}
80023ca: b082 sub sp, #8
80023cc: af00 add r7, sp, #0
80023ce: 6078 str r0, [r7, #4]
if((uint32_t) htim->Instance == TIM7_SOURCE) //TIM2_IRQs every 1024 Hz
80023d0: 687b ldr r3, [r7, #4]
80023d2: 681b ldr r3, [r3, #0]
80023d4: 001a movs r2, r3
80023d6: 4b06 ldr r3, [pc, #24] ; (80023f0 <HAL_TIM_PeriodElapsedCallback+0x28>)
80023d8: 429a cmp r2, r3
80023da: d104 bne.n 80023e6 <HAL_TIM_PeriodElapsedCallback+0x1e>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
80023dc: 687b ldr r3, [r7, #4]
80023de: 681b ldr r3, [r3, #0]
80023e0: 2202 movs r2, #2
80023e2: 4252 negs r2, r2
80023e4: 611a str r2, [r3, #16]
timerKZ--;
if(!timerKZ)
AMP_STATUS &= ~KZ_Pin;
}*/
}
}
80023e6: 46c0 nop ; (mov r8, r8)
80023e8: 46bd mov sp, r7
80023ea: b002 add sp, #8
80023ec: bd80 pop {r7, pc}
80023ee: 46c0 nop ; (mov r8, r8)
80023f0: 40001400 .word 0x40001400
080023f4 <MX_USART1_UART_Init>:
const int8_t inversely[] = {3, 1, -1,-3};
static const uint32_t BAUDRATE[] = {4800, 7200, 9600, 14400, 19200, 38400, 57600, 115200, 128000, 230400};
void MX_USART1_UART_Init(void)
{
80023f4: b580 push {r7, lr}
80023f6: af00 add r7, sp, #0
huart1.Instance = USART1;
80023f8: 4b4a ldr r3, [pc, #296] ; (8002524 <MX_USART1_UART_Init+0x130>)
80023fa: 4a4b ldr r2, [pc, #300] ; (8002528 <MX_USART1_UART_Init+0x134>)
80023fc: 601a str r2, [r3, #0]
huart1.Init.BaudRate = BAUDRATE[pardata.BAUD];
80023fe: 4b4b ldr r3, [pc, #300] ; (800252c <MX_USART1_UART_Init+0x138>)
8002400: 885b ldrh r3, [r3, #2]
8002402: b29b uxth r3, r3
8002404: 001a movs r2, r3
8002406: 4b4a ldr r3, [pc, #296] ; (8002530 <MX_USART1_UART_Init+0x13c>)
8002408: 0092 lsls r2, r2, #2
800240a: 58d2 ldr r2, [r2, r3]
800240c: 4b45 ldr r3, [pc, #276] ; (8002524 <MX_USART1_UART_Init+0x130>)
800240e: 605a str r2, [r3, #4]
huart1.Init.WordLength = UART_WORDLENGTH_8B;
8002410: 4b44 ldr r3, [pc, #272] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002412: 2200 movs r2, #0
8002414: 609a str r2, [r3, #8]
huart1.Init.StopBits = UART_STOPBITS_1;
8002416: 4b43 ldr r3, [pc, #268] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002418: 2200 movs r2, #0
800241a: 60da str r2, [r3, #12]
switch(pardata.INFB)
800241c: 4b43 ldr r3, [pc, #268] ; (800252c <MX_USART1_UART_Init+0x138>)
800241e: 889b ldrh r3, [r3, #4]
8002420: b29b uxth r3, r3
8002422: 2b01 cmp r3, #1
8002424: d00a beq.n 800243c <MX_USART1_UART_Init+0x48>
8002426: 2b02 cmp r3, #2
8002428: d011 beq.n 800244e <MX_USART1_UART_Init+0x5a>
800242a: 2b00 cmp r3, #0
800242c: d118 bne.n 8002460 <MX_USART1_UART_Init+0x6c>
{
case 0: //NONE
huart1.Init.WordLength = UART_WORDLENGTH_8B;
800242e: 4b3d ldr r3, [pc, #244] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002430: 2200 movs r2, #0
8002432: 609a str r2, [r3, #8]
huart1.Init.Parity = UART_PARITY_NONE;
8002434: 4b3b ldr r3, [pc, #236] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002436: 2200 movs r2, #0
8002438: 611a str r2, [r3, #16]
break;
800243a: e011 b.n 8002460 <MX_USART1_UART_Init+0x6c>
case 1: //ODD
huart1.Init.WordLength = UART_WORDLENGTH_9B;
800243c: 4b39 ldr r3, [pc, #228] ; (8002524 <MX_USART1_UART_Init+0x130>)
800243e: 2280 movs r2, #128 ; 0x80
8002440: 0152 lsls r2, r2, #5
8002442: 609a str r2, [r3, #8]
huart1.Init.Parity = UART_PARITY_ODD;
8002444: 4b37 ldr r3, [pc, #220] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002446: 22c0 movs r2, #192 ; 0xc0
8002448: 00d2 lsls r2, r2, #3
800244a: 611a str r2, [r3, #16]
break;
800244c: e008 b.n 8002460 <MX_USART1_UART_Init+0x6c>
case 2: //EVEN
huart1.Init.WordLength = UART_WORDLENGTH_9B;
800244e: 4b35 ldr r3, [pc, #212] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002450: 2280 movs r2, #128 ; 0x80
8002452: 0152 lsls r2, r2, #5
8002454: 609a str r2, [r3, #8]
huart1.Init.Parity = UART_PARITY_EVEN;
8002456: 4b33 ldr r3, [pc, #204] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002458: 2280 movs r2, #128 ; 0x80
800245a: 00d2 lsls r2, r2, #3
800245c: 611a str r2, [r3, #16]
break;
800245e: 46c0 nop ; (mov r8, r8)
}
if(pardata.BAUD < 7)
8002460: 4b32 ldr r3, [pc, #200] ; (800252c <MX_USART1_UART_Init+0x138>)
8002462: 885b ldrh r3, [r3, #2]
8002464: b29b uxth r3, r3
8002466: 2b06 cmp r3, #6
8002468: d804 bhi.n 8002474 <MX_USART1_UART_Init+0x80>
huart1.Init.OverSampling = UART_OVERSAMPLING_8;
800246a: 4b2e ldr r3, [pc, #184] ; (8002524 <MX_USART1_UART_Init+0x130>)
800246c: 2280 movs r2, #128 ; 0x80
800246e: 0212 lsls r2, r2, #8
8002470: 61da str r2, [r3, #28]
8002472: e002 b.n 800247a <MX_USART1_UART_Init+0x86>
else huart1.Init.OverSampling = UART_OVERSAMPLING_16;
8002474: 4b2b ldr r3, [pc, #172] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002476: 2200 movs r2, #0
8002478: 61da str r2, [r3, #28]
huart1.Init.Mode = UART_MODE_TX_RX;
800247a: 4b2a ldr r3, [pc, #168] ; (8002524 <MX_USART1_UART_Init+0x130>)
800247c: 220c movs r2, #12
800247e: 615a str r2, [r3, #20]
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
8002480: 4b28 ldr r3, [pc, #160] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002482: 2200 movs r2, #0
8002484: 619a str r2, [r3, #24]
huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
8002486: 4b27 ldr r3, [pc, #156] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002488: 2200 movs r2, #0
800248a: 621a str r2, [r3, #32]
huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
800248c: 4b25 ldr r3, [pc, #148] ; (8002524 <MX_USART1_UART_Init+0x130>)
800248e: 2200 movs r2, #0
8002490: 625a str r2, [r3, #36] ; 0x24
if(HAL_UART_Init(&huart1) != HAL_OK) {
8002492: 4b24 ldr r3, [pc, #144] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002494: 0018 movs r0, r3
8002496: f003 fd0d bl 8005eb4 <HAL_UART_Init>
800249a: 1e03 subs r3, r0, #0
800249c: d001 beq.n 80024a2 <MX_USART1_UART_Init+0xae>
Error_Handler();
800249e: f7ff fea5 bl 80021ec <Error_Handler>
}
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE))
80024a2: 4b20 ldr r3, [pc, #128] ; (8002524 <MX_USART1_UART_Init+0x130>)
80024a4: 681b ldr r3, [r3, #0]
80024a6: 69db ldr r3, [r3, #28]
80024a8: 2208 movs r2, #8
80024aa: 4013 ands r3, r2
80024ac: 2b08 cmp r3, #8
80024ae: d103 bne.n 80024b8 <MX_USART1_UART_Init+0xc4>
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE);
80024b0: 4b1c ldr r3, [pc, #112] ; (8002524 <MX_USART1_UART_Init+0x130>)
80024b2: 681b ldr r3, [r3, #0]
80024b4: 2208 movs r2, #8
80024b6: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_PE))
80024b8: 4b1a ldr r3, [pc, #104] ; (8002524 <MX_USART1_UART_Init+0x130>)
80024ba: 681b ldr r3, [r3, #0]
80024bc: 69db ldr r3, [r3, #28]
80024be: 2201 movs r2, #1
80024c0: 4013 ands r3, r2
80024c2: 2b01 cmp r3, #1
80024c4: d103 bne.n 80024ce <MX_USART1_UART_Init+0xda>
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_PE);
80024c6: 4b17 ldr r3, [pc, #92] ; (8002524 <MX_USART1_UART_Init+0x130>)
80024c8: 681b ldr r3, [r3, #0]
80024ca: 2201 movs r2, #1
80024cc: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_FE))
80024ce: 4b15 ldr r3, [pc, #84] ; (8002524 <MX_USART1_UART_Init+0x130>)
80024d0: 681b ldr r3, [r3, #0]
80024d2: 69db ldr r3, [r3, #28]
80024d4: 2202 movs r2, #2
80024d6: 4013 ands r3, r2
80024d8: 2b02 cmp r3, #2
80024da: d103 bne.n 80024e4 <MX_USART1_UART_Init+0xf0>
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_FE);
80024dc: 4b11 ldr r3, [pc, #68] ; (8002524 <MX_USART1_UART_Init+0x130>)
80024de: 681b ldr r3, [r3, #0]
80024e0: 2202 movs r2, #2
80024e2: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_NE))
80024e4: 4b0f ldr r3, [pc, #60] ; (8002524 <MX_USART1_UART_Init+0x130>)
80024e6: 681b ldr r3, [r3, #0]
80024e8: 69db ldr r3, [r3, #28]
80024ea: 2204 movs r2, #4
80024ec: 4013 ands r3, r2
80024ee: 2b04 cmp r3, #4
80024f0: d103 bne.n 80024fa <MX_USART1_UART_Init+0x106>
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_NE);
80024f2: 4b0c ldr r3, [pc, #48] ; (8002524 <MX_USART1_UART_Init+0x130>)
80024f4: 681b ldr r3, [r3, #0]
80024f6: 2204 movs r2, #4
80024f8: 621a str r2, [r3, #32]
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
80024fa: 2380 movs r3, #128 ; 0x80
80024fc: 0059 lsls r1, r3, #1
80024fe: 23a0 movs r3, #160 ; 0xa0
8002500: 05db lsls r3, r3, #23
8002502: 2200 movs r2, #0
8002504: 0018 movs r0, r3
8002506: f002 fb02 bl 8004b0e <HAL_GPIO_WritePin>
SET_BIT(huart1.Instance->CR1, USART_CR1_RXNEIE | USART_CR1_PEIE);
800250a: 4b06 ldr r3, [pc, #24] ; (8002524 <MX_USART1_UART_Init+0x130>)
800250c: 681b ldr r3, [r3, #0]
800250e: 4a05 ldr r2, [pc, #20] ; (8002524 <MX_USART1_UART_Init+0x130>)
8002510: 6812 ldr r2, [r2, #0]
8002512: 6812 ldr r2, [r2, #0]
8002514: 2190 movs r1, #144 ; 0x90
8002516: 0049 lsls r1, r1, #1
8002518: 430a orrs r2, r1
800251a: 601a str r2, [r3, #0]
}
800251c: 46c0 nop ; (mov r8, r8)
800251e: 46bd mov sp, r7
8002520: bd80 pop {r7, pc}
8002522: 46c0 nop ; (mov r8, r8)
8002524: 20000104 .word 0x20000104
8002528: 40013800 .word 0x40013800
800252c: 20000098 .word 0x20000098
8002530: 0800741c .word 0x0800741c
08002534 <MX_USART1_UART_DeInit>:
void MX_USART1_UART_DeInit(void)
{
8002534: b580 push {r7, lr}
8002536: af00 add r7, sp, #0
if(HAL_UART_DeInit(&huart1) != HAL_OK) {
8002538: 4b06 ldr r3, [pc, #24] ; (8002554 <MX_USART1_UART_DeInit+0x20>)
800253a: 0018 movs r0, r3
800253c: f003 fd0e bl 8005f5c <HAL_UART_DeInit>
8002540: 1e03 subs r3, r0, #0
8002542: d001 beq.n 8002548 <MX_USART1_UART_DeInit+0x14>
Error_Handler();
8002544: f7ff fe52 bl 80021ec <Error_Handler>
}
HAL_NVIC_DisableIRQ(USART1_IRQn);
8002548: 201b movs r0, #27
800254a: f001 fdeb bl 8004124 <HAL_NVIC_DisableIRQ>
}
800254e: 46c0 nop ; (mov r8, r8)
8002550: 46bd mov sp, r7
8002552: bd80 pop {r7, pc}
8002554: 20000104 .word 0x20000104
08002558 <HAL_UART_MspInit>:
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{
8002558: b580 push {r7, lr}
800255a: b088 sub sp, #32
800255c: af00 add r7, sp, #0
800255e: 6078 str r0, [r7, #4]
GPIO_InitTypeDef GPIO_InitStruct = {0};
8002560: 230c movs r3, #12
8002562: 18fb adds r3, r7, r3
8002564: 0018 movs r0, r3
8002566: 2314 movs r3, #20
8002568: 001a movs r2, r3
800256a: 2100 movs r1, #0
800256c: f004 fd27 bl 8006fbe <memset>
if(uartHandle->Instance==USART1)
8002570: 687b ldr r3, [r7, #4]
8002572: 681b ldr r3, [r3, #0]
8002574: 4a1f ldr r2, [pc, #124] ; (80025f4 <HAL_UART_MspInit+0x9c>)
8002576: 4293 cmp r3, r2
8002578: d137 bne.n 80025ea <HAL_UART_MspInit+0x92>
{
__HAL_RCC_USART1_CLK_ENABLE();
800257a: 4b1f ldr r3, [pc, #124] ; (80025f8 <HAL_UART_MspInit+0xa0>)
800257c: 4a1e ldr r2, [pc, #120] ; (80025f8 <HAL_UART_MspInit+0xa0>)
800257e: 6b52 ldr r2, [r2, #52] ; 0x34
8002580: 2180 movs r1, #128 ; 0x80
8002582: 01c9 lsls r1, r1, #7
8002584: 430a orrs r2, r1
8002586: 635a str r2, [r3, #52] ; 0x34
__HAL_RCC_GPIOA_CLK_ENABLE();
8002588: 4b1b ldr r3, [pc, #108] ; (80025f8 <HAL_UART_MspInit+0xa0>)
800258a: 4a1b ldr r2, [pc, #108] ; (80025f8 <HAL_UART_MspInit+0xa0>)
800258c: 6ad2 ldr r2, [r2, #44] ; 0x2c
800258e: 2101 movs r1, #1
8002590: 430a orrs r2, r1
8002592: 62da str r2, [r3, #44] ; 0x2c
8002594: 4b18 ldr r3, [pc, #96] ; (80025f8 <HAL_UART_MspInit+0xa0>)
8002596: 6adb ldr r3, [r3, #44] ; 0x2c
8002598: 2201 movs r2, #1
800259a: 4013 ands r3, r2
800259c: 60bb str r3, [r7, #8]
800259e: 68bb ldr r3, [r7, #8]
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
80025a0: 230c movs r3, #12
80025a2: 18fb adds r3, r7, r3
80025a4: 22c0 movs r2, #192 ; 0xc0
80025a6: 00d2 lsls r2, r2, #3
80025a8: 601a str r2, [r3, #0]
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
80025aa: 230c movs r3, #12
80025ac: 18fb adds r3, r7, r3
80025ae: 2202 movs r2, #2
80025b0: 605a str r2, [r3, #4]
GPIO_InitStruct.Pull = GPIO_NOPULL;
80025b2: 230c movs r3, #12
80025b4: 18fb adds r3, r7, r3
80025b6: 2200 movs r2, #0
80025b8: 609a str r2, [r3, #8]
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
80025ba: 230c movs r3, #12
80025bc: 18fb adds r3, r7, r3
80025be: 2203 movs r2, #3
80025c0: 60da str r2, [r3, #12]
GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
80025c2: 230c movs r3, #12
80025c4: 18fb adds r3, r7, r3
80025c6: 2204 movs r2, #4
80025c8: 611a str r2, [r3, #16]
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
80025ca: 230c movs r3, #12
80025cc: 18fa adds r2, r7, r3
80025ce: 23a0 movs r3, #160 ; 0xa0
80025d0: 05db lsls r3, r3, #23
80025d2: 0011 movs r1, r2
80025d4: 0018 movs r0, r3
80025d6: f002 f81b bl 8004610 <HAL_GPIO_Init>
/* USART1 interrupt Init */
HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);
80025da: 2200 movs r2, #0
80025dc: 2103 movs r1, #3
80025de: 201b movs r0, #27
80025e0: f001 fd7a bl 80040d8 <HAL_NVIC_SetPriority>
HAL_NVIC_EnableIRQ(USART1_IRQn);
80025e4: 201b movs r0, #27
80025e6: f001 fd8d bl 8004104 <HAL_NVIC_EnableIRQ>
}
}
80025ea: 46c0 nop ; (mov r8, r8)
80025ec: 46bd mov sp, r7
80025ee: b008 add sp, #32
80025f0: bd80 pop {r7, pc}
80025f2: 46c0 nop ; (mov r8, r8)
80025f4: 40013800 .word 0x40013800
80025f8: 40021000 .word 0x40021000
080025fc <HAL_UART_MspDeInit>:
void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{
80025fc: b580 push {r7, lr}
80025fe: b082 sub sp, #8
8002600: af00 add r7, sp, #0
8002602: 6078 str r0, [r7, #4]
if(uartHandle->Instance==USART1)
8002604: 687b ldr r3, [r7, #4]
8002606: 681b ldr r3, [r3, #0]
8002608: 4a0b ldr r2, [pc, #44] ; (8002638 <HAL_UART_MspDeInit+0x3c>)
800260a: 4293 cmp r3, r2
800260c: d110 bne.n 8002630 <HAL_UART_MspDeInit+0x34>
{
/* USER CODE BEGIN USART1_MspDeInit 0 */
/* USER CODE END USART1_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_USART1_CLK_DISABLE();
800260e: 4b0b ldr r3, [pc, #44] ; (800263c <HAL_UART_MspDeInit+0x40>)
8002610: 4a0a ldr r2, [pc, #40] ; (800263c <HAL_UART_MspDeInit+0x40>)
8002612: 6b52 ldr r2, [r2, #52] ; 0x34
8002614: 490a ldr r1, [pc, #40] ; (8002640 <HAL_UART_MspDeInit+0x44>)
8002616: 400a ands r2, r1
8002618: 635a str r2, [r3, #52] ; 0x34
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
800261a: 23c0 movs r3, #192 ; 0xc0
800261c: 00da lsls r2, r3, #3
800261e: 23a0 movs r3, #160 ; 0xa0
8002620: 05db lsls r3, r3, #23
8002622: 0011 movs r1, r2
8002624: 0018 movs r0, r3
8002626: f002 f971 bl 800490c <HAL_GPIO_DeInit>
/* USART1 interrupt Deinit */
HAL_NVIC_DisableIRQ(USART1_IRQn);
800262a: 201b movs r0, #27
800262c: f001 fd7a bl 8004124 <HAL_NVIC_DisableIRQ>
/* USER CODE BEGIN USART1_MspDeInit 1 */
/* USER CODE END USART1_MspDeInit 1 */
}
}
8002630: 46c0 nop ; (mov r8, r8)
8002632: 46bd mov sp, r7
8002634: b002 add sp, #8
8002636: bd80 pop {r7, pc}
8002638: 40013800 .word 0x40013800
800263c: 40021000 .word 0x40021000
8002640: ffffbfff .word 0xffffbfff
08002644 <USART1_IRQHandler>:
/* USER CODE BEGIN 1 */
void USART1_IRQHandler(void)
{
8002644: b580 push {r7, lr}
8002646: af00 add r7, sp, #0
if((__HAL_UART_GET_IT_SOURCE(&huart1, UART_IT_RXNE)) && (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE)))
8002648: 4b22 ldr r3, [pc, #136] ; (80026d4 <USART1_IRQHandler+0x90>)
800264a: 681b ldr r3, [r3, #0]
800264c: 681b ldr r3, [r3, #0]
800264e: 2220 movs r2, #32
8002650: 4013 ands r3, r2
8002652: d00b beq.n 800266c <USART1_IRQHandler+0x28>
8002654: 4b1f ldr r3, [pc, #124] ; (80026d4 <USART1_IRQHandler+0x90>)
8002656: 681b ldr r3, [r3, #0]
8002658: 69db ldr r3, [r3, #28]
800265a: 2220 movs r2, #32
800265c: 4013 ands r3, r2
800265e: 2b20 cmp r3, #32
8002660: d104 bne.n 800266c <USART1_IRQHandler+0x28>
{
HAL_UART_RxCpltCallback(&huart1);
8002662: 4b1c ldr r3, [pc, #112] ; (80026d4 <USART1_IRQHandler+0x90>)
8002664: 0018 movs r0, r3
8002666: f000 f929 bl 80028bc <HAL_UART_RxCpltCallback>
800266a: e003 b.n 8002674 <USART1_IRQHandler+0x30>
}
else
{
HAL_UART_IRQHandler(&huart1);
800266c: 4b19 ldr r3, [pc, #100] ; (80026d4 <USART1_IRQHandler+0x90>)
800266e: 0018 movs r0, r3
8002670: f003 fd1c bl 80060ac <HAL_UART_IRQHandler>
}
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE))
8002674: 4b17 ldr r3, [pc, #92] ; (80026d4 <USART1_IRQHandler+0x90>)
8002676: 681b ldr r3, [r3, #0]
8002678: 69db ldr r3, [r3, #28]
800267a: 2208 movs r2, #8
800267c: 4013 ands r3, r2
800267e: 2b08 cmp r3, #8
8002680: d103 bne.n 800268a <USART1_IRQHandler+0x46>
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE);
8002682: 4b14 ldr r3, [pc, #80] ; (80026d4 <USART1_IRQHandler+0x90>)
8002684: 681b ldr r3, [r3, #0]
8002686: 2208 movs r2, #8
8002688: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_PE))
800268a: 4b12 ldr r3, [pc, #72] ; (80026d4 <USART1_IRQHandler+0x90>)
800268c: 681b ldr r3, [r3, #0]
800268e: 69db ldr r3, [r3, #28]
8002690: 2201 movs r2, #1
8002692: 4013 ands r3, r2
8002694: 2b01 cmp r3, #1
8002696: d103 bne.n 80026a0 <USART1_IRQHandler+0x5c>
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_PE);
8002698: 4b0e ldr r3, [pc, #56] ; (80026d4 <USART1_IRQHandler+0x90>)
800269a: 681b ldr r3, [r3, #0]
800269c: 2201 movs r2, #1
800269e: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_FE))
80026a0: 4b0c ldr r3, [pc, #48] ; (80026d4 <USART1_IRQHandler+0x90>)
80026a2: 681b ldr r3, [r3, #0]
80026a4: 69db ldr r3, [r3, #28]
80026a6: 2202 movs r2, #2
80026a8: 4013 ands r3, r2
80026aa: 2b02 cmp r3, #2
80026ac: d103 bne.n 80026b6 <USART1_IRQHandler+0x72>
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_FE);
80026ae: 4b09 ldr r3, [pc, #36] ; (80026d4 <USART1_IRQHandler+0x90>)
80026b0: 681b ldr r3, [r3, #0]
80026b2: 2202 movs r2, #2
80026b4: 621a str r2, [r3, #32]
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_NE))
80026b6: 4b07 ldr r3, [pc, #28] ; (80026d4 <USART1_IRQHandler+0x90>)
80026b8: 681b ldr r3, [r3, #0]
80026ba: 69db ldr r3, [r3, #28]
80026bc: 2204 movs r2, #4
80026be: 4013 ands r3, r2
80026c0: 2b04 cmp r3, #4
80026c2: d103 bne.n 80026cc <USART1_IRQHandler+0x88>
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_NE);
80026c4: 4b03 ldr r3, [pc, #12] ; (80026d4 <USART1_IRQHandler+0x90>)
80026c6: 681b ldr r3, [r3, #0]
80026c8: 2204 movs r2, #4
80026ca: 621a str r2, [r3, #32]
}
80026cc: 46c0 nop ; (mov r8, r8)
80026ce: 46bd mov sp, r7
80026d0: bd80 pop {r7, pc}
80026d2: 46c0 nop ; (mov r8, r8)
80026d4: 20000104 .word 0x20000104
080026d8 <strtOut>:
/* USER CODE END 1 */
void strtOut(uint16_t n)
{
80026d8: b590 push {r4, r7, lr}
80026da: b085 sub sp, #20
80026dc: af00 add r7, sp, #0
80026de: 0002 movs r2, r0
80026e0: 1dbb adds r3, r7, #6
80026e2: 801a strh r2, [r3, #0]
uint16_t crc;
if(tx[0])
80026e4: 4b1d ldr r3, [pc, #116] ; (800275c <strtOut+0x84>)
80026e6: 781b ldrb r3, [r3, #0]
80026e8: 2b00 cmp r3, #0
80026ea: d02f beq.n 800274c <strtOut+0x74>
{
lastbyte = n + 2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
80026ec: 1dbb adds r3, r7, #6
80026ee: 881b ldrh r3, [r3, #0]
80026f0: 3302 adds r3, #2
80026f2: b29a uxth r2, r3
80026f4: 4b1a ldr r3, [pc, #104] ; (8002760 <strtOut+0x88>)
80026f6: 801a strh r2, [r3, #0]
crc = Crc16_TX(n); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CRC16
80026f8: 230e movs r3, #14
80026fa: 18fc adds r4, r7, r3
80026fc: 1dbb adds r3, r7, #6
80026fe: 881b ldrh r3, [r3, #0]
8002700: 0018 movs r0, r3
8002702: f000 f875 bl 80027f0 <Crc16_TX>
8002706: 0003 movs r3, r0
8002708: 8023 strh r3, [r4, #0]
tx[n] = lo(crc); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CRC16
800270a: 1dbb adds r3, r7, #6
800270c: 881b ldrh r3, [r3, #0]
800270e: 220e movs r2, #14
8002710: 18ba adds r2, r7, r2
8002712: 8812 ldrh r2, [r2, #0]
8002714: b2d1 uxtb r1, r2
8002716: 4a11 ldr r2, [pc, #68] ; (800275c <strtOut+0x84>)
8002718: 54d1 strb r1, [r2, r3]
tx[n + 1] = hi(crc); // <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>
800271a: 1dbb adds r3, r7, #6
800271c: 881b ldrh r3, [r3, #0]
800271e: 3301 adds r3, #1
8002720: 220e movs r2, #14
8002722: 18ba adds r2, r7, r2
8002724: 8812 ldrh r2, [r2, #0]
8002726: 0a12 lsrs r2, r2, #8
8002728: b292 uxth r2, r2
800272a: b2d1 uxtb r1, r2
800272c: 4a0b ldr r2, [pc, #44] ; (800275c <strtOut+0x84>)
800272e: 54d1 strb r1, [r2, r3]
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_SET); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RS485 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
8002730: 2380 movs r3, #128 ; 0x80
8002732: 0059 lsls r1, r3, #1
8002734: 23a0 movs r3, #160 ; 0xa0
8002736: 05db lsls r3, r3, #23
8002738: 2201 movs r2, #1
800273a: 0018 movs r0, r3
800273c: f002 f9e7 bl 8004b0e <HAL_GPIO_WritePin>
ioa = 1;
8002740: 4b08 ldr r3, [pc, #32] ; (8002764 <strtOut+0x8c>)
8002742: 2201 movs r2, #1
8002744: 701a strb r2, [r3, #0]
sendreq = true;
8002746: 4b08 ldr r3, [pc, #32] ; (8002768 <strtOut+0x90>)
8002748: 2201 movs r2, #1
800274a: 701a strb r2, [r3, #0]
}
iolen = 0;
800274c: 4b07 ldr r3, [pc, #28] ; (800276c <strtOut+0x94>)
800274e: 2200 movs r2, #0
8002750: 701a strb r2, [r3, #0]
}
8002752: 46c0 nop ; (mov r8, r8)
8002754: 46bd mov sp, r7
8002756: b005 add sp, #20
8002758: bd90 pop {r4, r7, pc}
800275a: 46c0 nop ; (mov r8, r8)
800275c: 20000188 .word 0x20000188
8002760: 2000028a .word 0x2000028a
8002764: 20000100 .word 0x20000100
8002768: 20000036 .word 0x20000036
800276c: 20000035 .word 0x20000035
08002770 <Crc16>:
uint16_t Crc16(uint16_t len)
{
8002770: b580 push {r7, lr}
8002772: b084 sub sp, #16
8002774: af00 add r7, sp, #0
8002776: 0002 movs r2, r0
8002778: 1dbb adds r3, r7, #6
800277a: 801a strh r2, [r3, #0]
uint16_t i;
uint16_t crc = 0xFFFF;
800277c: 230c movs r3, #12
800277e: 18fb adds r3, r7, r3
8002780: 2201 movs r2, #1
8002782: 4252 negs r2, r2
8002784: 801a strh r2, [r3, #0]
for(i = 0; i < len; i++) {
8002786: 230e movs r3, #14
8002788: 18fb adds r3, r7, r3
800278a: 2200 movs r2, #0
800278c: 801a strh r2, [r3, #0]
800278e: e01d b.n 80027cc <Crc16+0x5c>
crc = (crc >> 8) ^ Crc16Table[(crc & 0xFF) ^ iobuf[i]];
8002790: 230c movs r3, #12
8002792: 18fb adds r3, r7, r3
8002794: 881b ldrh r3, [r3, #0]
8002796: 0a1b lsrs r3, r3, #8
8002798: b299 uxth r1, r3
800279a: 230c movs r3, #12
800279c: 18fb adds r3, r7, r3
800279e: 881b ldrh r3, [r3, #0]
80027a0: 22ff movs r2, #255 ; 0xff
80027a2: 4013 ands r3, r2
80027a4: 220e movs r2, #14
80027a6: 18ba adds r2, r7, r2
80027a8: 8812 ldrh r2, [r2, #0]
80027aa: 480f ldr r0, [pc, #60] ; (80027e8 <Crc16+0x78>)
80027ac: 5c82 ldrb r2, [r0, r2]
80027ae: 405a eors r2, r3
80027b0: 4b0e ldr r3, [pc, #56] ; (80027ec <Crc16+0x7c>)
80027b2: 0052 lsls r2, r2, #1
80027b4: 5ad2 ldrh r2, [r2, r3]
80027b6: 230c movs r3, #12
80027b8: 18fb adds r3, r7, r3
80027ba: 404a eors r2, r1
80027bc: 801a strh r2, [r3, #0]
for(i = 0; i < len; i++) {
80027be: 230e movs r3, #14
80027c0: 18fb adds r3, r7, r3
80027c2: 881a ldrh r2, [r3, #0]
80027c4: 230e movs r3, #14
80027c6: 18fb adds r3, r7, r3
80027c8: 3201 adds r2, #1
80027ca: 801a strh r2, [r3, #0]
80027cc: 230e movs r3, #14
80027ce: 18fa adds r2, r7, r3
80027d0: 1dbb adds r3, r7, #6
80027d2: 8812 ldrh r2, [r2, #0]
80027d4: 881b ldrh r3, [r3, #0]
80027d6: 429a cmp r2, r3
80027d8: d3da bcc.n 8002790 <Crc16+0x20>
}
return crc;
80027da: 230c movs r3, #12
80027dc: 18fb adds r3, r7, r3
80027de: 881b ldrh r3, [r3, #0]
}
80027e0: 0018 movs r0, r3
80027e2: 46bd mov sp, r7
80027e4: b004 add sp, #16
80027e6: bd80 pop {r7, pc}
80027e8: 2000028c .word 0x2000028c
80027ec: 080071f4 .word 0x080071f4
080027f0 <Crc16_TX>:
uint16_t Crc16_TX(uint16_t len)
{
80027f0: b580 push {r7, lr}
80027f2: b084 sub sp, #16
80027f4: af00 add r7, sp, #0
80027f6: 0002 movs r2, r0
80027f8: 1dbb adds r3, r7, #6
80027fa: 801a strh r2, [r3, #0]
uint16_t i;
uint16_t crc = 0xFFFF;
80027fc: 230c movs r3, #12
80027fe: 18fb adds r3, r7, r3
8002800: 2201 movs r2, #1
8002802: 4252 negs r2, r2
8002804: 801a strh r2, [r3, #0]
for(i = 0; i < len; i++) {
8002806: 230e movs r3, #14
8002808: 18fb adds r3, r7, r3
800280a: 2200 movs r2, #0
800280c: 801a strh r2, [r3, #0]
800280e: e01d b.n 800284c <Crc16_TX+0x5c>
crc = (crc >> 8) ^ Crc16Table[(crc & 0xFF) ^ tx[i]];
8002810: 230c movs r3, #12
8002812: 18fb adds r3, r7, r3
8002814: 881b ldrh r3, [r3, #0]
8002816: 0a1b lsrs r3, r3, #8
8002818: b299 uxth r1, r3
800281a: 230c movs r3, #12
800281c: 18fb adds r3, r7, r3
800281e: 881b ldrh r3, [r3, #0]
8002820: 22ff movs r2, #255 ; 0xff
8002822: 4013 ands r3, r2
8002824: 220e movs r2, #14
8002826: 18ba adds r2, r7, r2
8002828: 8812 ldrh r2, [r2, #0]
800282a: 480f ldr r0, [pc, #60] ; (8002868 <Crc16_TX+0x78>)
800282c: 5c82 ldrb r2, [r0, r2]
800282e: 405a eors r2, r3
8002830: 4b0e ldr r3, [pc, #56] ; (800286c <Crc16_TX+0x7c>)
8002832: 0052 lsls r2, r2, #1
8002834: 5ad2 ldrh r2, [r2, r3]
8002836: 230c movs r3, #12
8002838: 18fb adds r3, r7, r3
800283a: 404a eors r2, r1
800283c: 801a strh r2, [r3, #0]
for(i = 0; i < len; i++) {
800283e: 230e movs r3, #14
8002840: 18fb adds r3, r7, r3
8002842: 881a ldrh r2, [r3, #0]
8002844: 230e movs r3, #14
8002846: 18fb adds r3, r7, r3
8002848: 3201 adds r2, #1
800284a: 801a strh r2, [r3, #0]
800284c: 230e movs r3, #14
800284e: 18fa adds r2, r7, r3
8002850: 1dbb adds r3, r7, #6
8002852: 8812 ldrh r2, [r2, #0]
8002854: 881b ldrh r3, [r3, #0]
8002856: 429a cmp r2, r3
8002858: d3da bcc.n 8002810 <Crc16_TX+0x20>
}
return crc;
800285a: 230c movs r3, #12
800285c: 18fb adds r3, r7, r3
800285e: 881b ldrh r3, [r3, #0]
}
8002860: 0018 movs r0, r3
8002862: 46bd mov sp, r7
8002864: b004 add sp, #16
8002866: bd80 pop {r7, pc}
8002868: 20000188 .word 0x20000188
800286c: 080071f4 .word 0x080071f4
08002870 <SetBaudRate>:
void SetBaudRate()
{
8002870: b580 push {r7, lr}
8002872: af00 add r7, sp, #0
timeout = time35[pardata.BAUD];
8002874: 4b0c ldr r3, [pc, #48] ; (80028a8 <SetBaudRate+0x38>)
8002876: 885b ldrh r3, [r3, #2]
8002878: b29b uxth r3, r3
800287a: 001a movs r2, r3
800287c: 4b0b ldr r3, [pc, #44] ; (80028ac <SetBaudRate+0x3c>)
800287e: 0052 lsls r2, r2, #1
8002880: 5ad3 ldrh r3, [r2, r3]
8002882: b2da uxtb r2, r3
8002884: 4b0a ldr r3, [pc, #40] ; (80028b0 <SetBaudRate+0x40>)
8002886: 701a strb r2, [r3, #0]
delayREDE = sendtime[pardata.BAUD];
8002888: 4b07 ldr r3, [pc, #28] ; (80028a8 <SetBaudRate+0x38>)
800288a: 885b ldrh r3, [r3, #2]
800288c: b29b uxth r3, r3
800288e: 001a movs r2, r3
8002890: 4b08 ldr r3, [pc, #32] ; (80028b4 <SetBaudRate+0x44>)
8002892: 0052 lsls r2, r2, #1
8002894: 5ad2 ldrh r2, [r2, r3]
8002896: 4b08 ldr r3, [pc, #32] ; (80028b8 <SetBaudRate+0x48>)
8002898: 801a strh r2, [r3, #0]
MX_USART1_UART_DeInit();
800289a: f7ff fe4b bl 8002534 <MX_USART1_UART_DeInit>
MX_USART1_UART_Init();
800289e: f7ff fda9 bl 80023f4 <MX_USART1_UART_Init>
}
80028a2: 46c0 nop ; (mov r8, r8)
80028a4: 46bd mov sp, r7
80028a6: bd80 pop {r7, pc}
80028a8: 20000098 .word 0x20000098
80028ac: 08007408 .word 0x08007408
80028b0: 20000288 .word 0x20000288
80028b4: 080073f4 .word 0x080073f4
80028b8: 20000102 .word 0x20000102
080028bc <HAL_UART_RxCpltCallback>:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
80028bc: b5b0 push {r4, r5, r7, lr}
80028be: b088 sub sp, #32
80028c0: af00 add r7, sp, #0
80028c2: 6078 str r0, [r7, #4]
usfloat f;
uint8_t tmp, tmp1;
uint16_t tmp16;
float tmpf;
timeout = time35[pardata.BAUD];
80028c4: 4bd5 ldr r3, [pc, #852] ; (8002c1c <HAL_UART_RxCpltCallback+0x360>)
80028c6: 885b ldrh r3, [r3, #2]
80028c8: b29b uxth r3, r3
80028ca: 001a movs r2, r3
80028cc: 4bd4 ldr r3, [pc, #848] ; (8002c20 <HAL_UART_RxCpltCallback+0x364>)
80028ce: 0052 lsls r2, r2, #1
80028d0: 5ad3 ldrh r3, [r2, r3]
80028d2: b2da uxtb r2, r3
80028d4: 4bd3 ldr r3, [pc, #844] ; (8002c24 <HAL_UART_RxCpltCallback+0x368>)
80028d6: 701a strb r2, [r3, #0]
iobuf[iolen++] = (uint8_t) (USART1->RDR & 0xFF);
80028d8: 4bd3 ldr r3, [pc, #844] ; (8002c28 <HAL_UART_RxCpltCallback+0x36c>)
80028da: 781b ldrb r3, [r3, #0]
80028dc: 1c5a adds r2, r3, #1
80028de: b2d1 uxtb r1, r2
80028e0: 4ad1 ldr r2, [pc, #836] ; (8002c28 <HAL_UART_RxCpltCallback+0x36c>)
80028e2: 7011 strb r1, [r2, #0]
80028e4: 001a movs r2, r3
80028e6: 4bd1 ldr r3, [pc, #836] ; (8002c2c <HAL_UART_RxCpltCallback+0x370>)
80028e8: 6a5b ldr r3, [r3, #36] ; 0x24
80028ea: b2d9 uxtb r1, r3
80028ec: 4bd0 ldr r3, [pc, #832] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
80028ee: 5499 strb r1, [r3, r2]
if((iobuf[0] == pardata.OWN) || (!iobuf[0]))
80028f0: 4bcf ldr r3, [pc, #828] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
80028f2: 781b ldrb r3, [r3, #0]
80028f4: b29a uxth r2, r3
80028f6: 4bc9 ldr r3, [pc, #804] ; (8002c1c <HAL_UART_RxCpltCallback+0x360>)
80028f8: 881b ldrh r3, [r3, #0]
80028fa: b29b uxth r3, r3
80028fc: 429a cmp r2, r3
80028fe: d005 beq.n 800290c <HAL_UART_RxCpltCallback+0x50>
8002900: 4bcb ldr r3, [pc, #812] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002902: 781b ldrb r3, [r3, #0]
8002904: 2b00 cmp r3, #0
8002906: d001 beq.n 800290c <HAL_UART_RxCpltCallback+0x50>
8002908: f001 f9a6 bl 8003c58 <HAL_UART_RxCpltCallback+0x139c>
{
if(iolen > 1)
800290c: 4bc6 ldr r3, [pc, #792] ; (8002c28 <HAL_UART_RxCpltCallback+0x36c>)
800290e: 781b ldrb r3, [r3, #0]
8002910: 2b01 cmp r3, #1
8002912: d801 bhi.n 8002918 <HAL_UART_RxCpltCallback+0x5c>
8002914: f001 f9a0 bl 8003c58 <HAL_UART_RxCpltCallback+0x139c>
{
if(iolen == 2)
8002918: 4bc3 ldr r3, [pc, #780] ; (8002c28 <HAL_UART_RxCpltCallback+0x36c>)
800291a: 781b ldrb r3, [r3, #0]
800291c: 2b02 cmp r3, #2
800291e: d124 bne.n 800296a <HAL_UART_RxCpltCallback+0xae>
{
switch(iobuf[1])
8002920: 4bc3 ldr r3, [pc, #780] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002922: 785b ldrb r3, [r3, #1]
8002924: 2b03 cmp r3, #3
8002926: d002 beq.n 800292e <HAL_UART_RxCpltCallback+0x72>
8002928: 2b10 cmp r3, #16
800292a: d004 beq.n 8002936 <HAL_UART_RxCpltCallback+0x7a>
800292c: e007 b.n 800293e <HAL_UART_RxCpltCallback+0x82>
{
case 0x03:
lastbyte = 7;
800292e: 4bc1 ldr r3, [pc, #772] ; (8002c34 <HAL_UART_RxCpltCallback+0x378>)
8002930: 2207 movs r2, #7
8002932: 801a strh r2, [r3, #0]
break;
8002934: e019 b.n 800296a <HAL_UART_RxCpltCallback+0xae>
case 0x10:
lastbyte = 6;
8002936: 4bbf ldr r3, [pc, #764] ; (8002c34 <HAL_UART_RxCpltCallback+0x378>)
8002938: 2206 movs r2, #6
800293a: 801a strh r2, [r3, #0]
break;
800293c: e015 b.n 800296a <HAL_UART_RxCpltCallback+0xae>
default:
lastbyte = 3;
800293e: 4bbd ldr r3, [pc, #756] ; (8002c34 <HAL_UART_RxCpltCallback+0x378>)
8002940: 2203 movs r2, #3
8002942: 801a strh r2, [r3, #0]
tx[0] = iobuf[0];
8002944: 4bba ldr r3, [pc, #744] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002946: 781a ldrb r2, [r3, #0]
8002948: 4bbb ldr r3, [pc, #748] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
800294a: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
800294c: 4bb8 ldr r3, [pc, #736] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
800294e: 785b ldrb r3, [r3, #1]
8002950: 2280 movs r2, #128 ; 0x80
8002952: 4252 negs r2, r2
8002954: 4313 orrs r3, r2
8002956: b2da uxtb r2, r3
8002958: 4bb7 ldr r3, [pc, #732] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
800295a: 705a strb r2, [r3, #1]
tx[2] = 0x03;
800295c: 4bb6 ldr r3, [pc, #728] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
800295e: 2203 movs r2, #3
8002960: 709a strb r2, [r3, #2]
strtOut(3);
8002962: 2003 movs r0, #3
8002964: f7ff feb8 bl 80026d8 <strtOut>
break;
8002968: 46c0 nop ; (mov r8, r8)
}
}
if(iolen > lastbyte)
800296a: 4baf ldr r3, [pc, #700] ; (8002c28 <HAL_UART_RxCpltCallback+0x36c>)
800296c: 781b ldrb r3, [r3, #0]
800296e: b29a uxth r2, r3
8002970: 4bb0 ldr r3, [pc, #704] ; (8002c34 <HAL_UART_RxCpltCallback+0x378>)
8002972: 881b ldrh r3, [r3, #0]
8002974: 429a cmp r2, r3
8002976: d801 bhi.n 800297c <HAL_UART_RxCpltCallback+0xc0>
8002978: f001 f96e bl 8003c58 <HAL_UART_RxCpltCallback+0x139c>
{
switch(iobuf[1])
800297c: 4bac ldr r3, [pc, #688] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
800297e: 785b ldrb r3, [r3, #1]
8002980: 2b03 cmp r3, #3
8002982: d004 beq.n 800298e <HAL_UART_RxCpltCallback+0xd2>
8002984: 2b10 cmp r3, #16
8002986: d100 bne.n 800298a <HAL_UART_RxCpltCallback+0xce>
8002988: e267 b.n 8002e5a <HAL_UART_RxCpltCallback+0x59e>
}
}
}
//iolen++;
}
800298a: f001 f965 bl 8003c58 <HAL_UART_RxCpltCallback+0x139c>
iolen = 0;
800298e: 4ba6 ldr r3, [pc, #664] ; (8002c28 <HAL_UART_RxCpltCallback+0x36c>)
8002990: 2200 movs r2, #0
8002992: 701a strb r2, [r3, #0]
crc.ch[0] = iobuf[6];
8002994: 4ba6 ldr r3, [pc, #664] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002996: 799a ldrb r2, [r3, #6]
8002998: 2314 movs r3, #20
800299a: 18fb adds r3, r7, r3
800299c: 701a strb r2, [r3, #0]
crc.ch[1] = iobuf[7];
800299e: 4ba4 ldr r3, [pc, #656] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
80029a0: 79da ldrb r2, [r3, #7]
80029a2: 2314 movs r3, #20
80029a4: 18fb adds r3, r7, r3
80029a6: 705a strb r2, [r3, #1]
if(crc.sh == Crc16(6)) // ïðè êîððåêòíîì çíà÷åíèè CRC
80029a8: 2314 movs r3, #20
80029aa: 18fb adds r3, r7, r3
80029ac: 881c ldrh r4, [r3, #0]
80029ae: 2006 movs r0, #6
80029b0: f7ff fede bl 8002770 <Crc16>
80029b4: 0003 movs r3, r0
80029b6: 429c cmp r4, r3
80029b8: d001 beq.n 80029be <HAL_UART_RxCpltCallback+0x102>
80029ba: f001 f94c bl 8003c56 <HAL_UART_RxCpltCallback+0x139a>
addr.ch[1] = iobuf[2]; //ñò áàéò àäðåñà ðåãèñòðà
80029be: 4b9c ldr r3, [pc, #624] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
80029c0: 789a ldrb r2, [r3, #2]
80029c2: 2310 movs r3, #16
80029c4: 18fb adds r3, r7, r3
80029c6: 705a strb r2, [r3, #1]
addr.ch[0] = iobuf[3]; // ìë áàéò àäðåñà ðåãèñòðà
80029c8: 4b99 ldr r3, [pc, #612] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
80029ca: 78da ldrb r2, [r3, #3]
80029cc: 2310 movs r3, #16
80029ce: 18fb adds r3, r7, r3
80029d0: 701a strb r2, [r3, #0]
regs.ch[1] = iobuf[4]; // ñò áàéò êîë-âà ðåãèñòðîâ (ñëîâ)
80029d2: 4b97 ldr r3, [pc, #604] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
80029d4: 791a ldrb r2, [r3, #4]
80029d6: 230c movs r3, #12
80029d8: 18fb adds r3, r7, r3
80029da: 705a strb r2, [r3, #1]
regs.ch[0] = iobuf[5]; // ìë áàéò êîë-âî ðåãèñòðîâ (ñëîâ)
80029dc: 4b94 ldr r3, [pc, #592] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
80029de: 795a ldrb r2, [r3, #5]
80029e0: 230c movs r3, #12
80029e2: 18fb adds r3, r7, r3
80029e4: 701a strb r2, [r3, #0]
if(addr.sh == 1000) // ×òåíèå áàéòà ÏÅÐÅÃÐÓÇÊÈ
80029e6: 2310 movs r3, #16
80029e8: 18fb adds r3, r7, r3
80029ea: 881a ldrh r2, [r3, #0]
80029ec: 23fa movs r3, #250 ; 0xfa
80029ee: 009b lsls r3, r3, #2
80029f0: 429a cmp r2, r3
80029f2: d142 bne.n 8002a7a <HAL_UART_RxCpltCallback+0x1be>
if(regs.ch[0] != 1) // åñëè çàïðîøåí íå ÎÄÈÍ ðåãèñòð
80029f4: 230c movs r3, #12
80029f6: 18fb adds r3, r7, r3
80029f8: 781b ldrb r3, [r3, #0]
80029fa: 2b01 cmp r3, #1
80029fc: d013 beq.n 8002a26 <HAL_UART_RxCpltCallback+0x16a>
tx[0] = iobuf[0];
80029fe: 4b8c ldr r3, [pc, #560] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002a00: 781a ldrb r2, [r3, #0]
8002a02: 4b8d ldr r3, [pc, #564] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a04: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
8002a06: 4b8a ldr r3, [pc, #552] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002a08: 785b ldrb r3, [r3, #1]
8002a0a: 2280 movs r2, #128 ; 0x80
8002a0c: 4252 negs r2, r2
8002a0e: 4313 orrs r3, r2
8002a10: b2da uxtb r2, r3
8002a12: 4b89 ldr r3, [pc, #548] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a14: 705a strb r2, [r3, #1]
tx[2] = 0x03;
8002a16: 4b88 ldr r3, [pc, #544] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a18: 2203 movs r2, #3
8002a1a: 709a strb r2, [r3, #2]
strtOut(3);
8002a1c: 2003 movs r0, #3
8002a1e: f7ff fe5b bl 80026d8 <strtOut>
break;
8002a22: f001 f918 bl 8003c56 <HAL_UART_RxCpltCallback+0x139a>
tx[0] = iobuf[0];
8002a26: 4b82 ldr r3, [pc, #520] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002a28: 781a ldrb r2, [r3, #0]
8002a2a: 4b83 ldr r3, [pc, #524] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a2c: 701a strb r2, [r3, #0]
tx[1] = iobuf[1];
8002a2e: 4b80 ldr r3, [pc, #512] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002a30: 785a ldrb r2, [r3, #1]
8002a32: 4b81 ldr r3, [pc, #516] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a34: 705a strb r2, [r3, #1]
tx[2] = regs.ch[0] << 1; // êîë-âî áàéò
8002a36: 230c movs r3, #12
8002a38: 18fb adds r3, r7, r3
8002a3a: 781b ldrb r3, [r3, #0]
8002a3c: 18db adds r3, r3, r3
8002a3e: b2da uxtb r2, r3
8002a40: 4b7d ldr r3, [pc, #500] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a42: 709a strb r2, [r3, #2]
tx[3] = 0;
8002a44: 4b7c ldr r3, [pc, #496] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a46: 2200 movs r2, #0
8002a48: 70da strb r2, [r3, #3]
tx[4] = lo(AMP_STATUS);
8002a4a: 4b7c ldr r3, [pc, #496] ; (8002c3c <HAL_UART_RxCpltCallback+0x380>)
8002a4c: 881b ldrh r3, [r3, #0]
8002a4e: b29b uxth r3, r3
8002a50: b2da uxtb r2, r3
8002a52: 4b79 ldr r3, [pc, #484] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a54: 711a strb r2, [r3, #4]
tx[5] = hi(AMP_STATUS);
8002a56: 4b79 ldr r3, [pc, #484] ; (8002c3c <HAL_UART_RxCpltCallback+0x380>)
8002a58: 881b ldrh r3, [r3, #0]
8002a5a: b29b uxth r3, r3
8002a5c: 0a1b lsrs r3, r3, #8
8002a5e: b29b uxth r3, r3
8002a60: b2da uxtb r2, r3
8002a62: 4b75 ldr r3, [pc, #468] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a64: 715a strb r2, [r3, #5]
strtOut(3 + tx[2]);
8002a66: 4b74 ldr r3, [pc, #464] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002a68: 789b ldrb r3, [r3, #2]
8002a6a: b29b uxth r3, r3
8002a6c: 3303 adds r3, #3
8002a6e: b29b uxth r3, r3
8002a70: 0018 movs r0, r3
8002a72: f7ff fe31 bl 80026d8 <strtOut>
break;
8002a76: f001 f8ee bl 8003c56 <HAL_UART_RxCpltCallback+0x139a>
switch(addr.sh)
8002a7a: 2310 movs r3, #16
8002a7c: 18fb adds r3, r7, r3
8002a7e: 881b ldrh r3, [r3, #0]
8002a80: 4a6f ldr r2, [pc, #444] ; (8002c40 <HAL_UART_RxCpltCallback+0x384>)
8002a82: 4293 cmp r3, r2
8002a84: d100 bne.n 8002a88 <HAL_UART_RxCpltCallback+0x1cc>
8002a86: e111 b.n 8002cac <HAL_UART_RxCpltCallback+0x3f0>
8002a88: 4a6d ldr r2, [pc, #436] ; (8002c40 <HAL_UART_RxCpltCallback+0x384>)
8002a8a: 4293 cmp r3, r2
8002a8c: dc0b bgt.n 8002aa6 <HAL_UART_RxCpltCallback+0x1ea>
8002a8e: 4a6d ldr r2, [pc, #436] ; (8002c44 <HAL_UART_RxCpltCallback+0x388>)
8002a90: 4293 cmp r3, r2
8002a92: da00 bge.n 8002a96 <HAL_UART_RxCpltCallback+0x1da>
8002a94: e1cc b.n 8002e30 <HAL_UART_RxCpltCallback+0x574>
8002a96: 4a6c ldr r2, [pc, #432] ; (8002c48 <HAL_UART_RxCpltCallback+0x38c>)
8002a98: 4293 cmp r3, r2
8002a9a: dd19 ble.n 8002ad0 <HAL_UART_RxCpltCallback+0x214>
8002a9c: 4a6b ldr r2, [pc, #428] ; (8002c4c <HAL_UART_RxCpltCallback+0x390>)
8002a9e: 4293 cmp r3, r2
8002aa0: d100 bne.n 8002aa4 <HAL_UART_RxCpltCallback+0x1e8>
8002aa2: e07a b.n 8002b9a <HAL_UART_RxCpltCallback+0x2de>
8002aa4: e1c4 b.n 8002e30 <HAL_UART_RxCpltCallback+0x574>
8002aa6: 4a6a ldr r2, [pc, #424] ; (8002c50 <HAL_UART_RxCpltCallback+0x394>)
8002aa8: 4293 cmp r3, r2
8002aaa: d100 bne.n 8002aae <HAL_UART_RxCpltCallback+0x1f2>
8002aac: e075 b.n 8002b9a <HAL_UART_RxCpltCallback+0x2de>
8002aae: 4a68 ldr r2, [pc, #416] ; (8002c50 <HAL_UART_RxCpltCallback+0x394>)
8002ab0: 4293 cmp r3, r2
8002ab2: dc04 bgt.n 8002abe <HAL_UART_RxCpltCallback+0x202>
8002ab4: 4a67 ldr r2, [pc, #412] ; (8002c54 <HAL_UART_RxCpltCallback+0x398>)
8002ab6: 4293 cmp r3, r2
8002ab8: d100 bne.n 8002abc <HAL_UART_RxCpltCallback+0x200>
8002aba: e158 b.n 8002d6e <HAL_UART_RxCpltCallback+0x4b2>
8002abc: e1b8 b.n 8002e30 <HAL_UART_RxCpltCallback+0x574>
8002abe: 4a66 ldr r2, [pc, #408] ; (8002c58 <HAL_UART_RxCpltCallback+0x39c>)
8002ac0: 4293 cmp r3, r2
8002ac2: d100 bne.n 8002ac6 <HAL_UART_RxCpltCallback+0x20a>
8002ac4: e0f2 b.n 8002cac <HAL_UART_RxCpltCallback+0x3f0>
8002ac6: 4a65 ldr r2, [pc, #404] ; (8002c5c <HAL_UART_RxCpltCallback+0x3a0>)
8002ac8: 4293 cmp r3, r2
8002aca: d100 bne.n 8002ace <HAL_UART_RxCpltCallback+0x212>
8002acc: e14f b.n 8002d6e <HAL_UART_RxCpltCallback+0x4b2>
8002ace: e1af b.n 8002e30 <HAL_UART_RxCpltCallback+0x574>
if(regs.ch[0] > (5011 - addr.sh))
8002ad0: 230c movs r3, #12
8002ad2: 18fb adds r3, r7, r3
8002ad4: 781b ldrb r3, [r3, #0]
8002ad6: 001a movs r2, r3
8002ad8: 2310 movs r3, #16
8002ada: 18fb adds r3, r7, r3
8002adc: 881b ldrh r3, [r3, #0]
8002ade: 0019 movs r1, r3
8002ae0: 4b5f ldr r3, [pc, #380] ; (8002c60 <HAL_UART_RxCpltCallback+0x3a4>)
8002ae2: 1a5b subs r3, r3, r1
8002ae4: 429a cmp r2, r3
8002ae6: dd12 ble.n 8002b0e <HAL_UART_RxCpltCallback+0x252>
tx[0] = iobuf[0];
8002ae8: 4b51 ldr r3, [pc, #324] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002aea: 781a ldrb r2, [r3, #0]
8002aec: 4b52 ldr r3, [pc, #328] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002aee: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
8002af0: 4b4f ldr r3, [pc, #316] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002af2: 785b ldrb r3, [r3, #1]
8002af4: 2280 movs r2, #128 ; 0x80
8002af6: 4252 negs r2, r2
8002af8: 4313 orrs r3, r2
8002afa: b2da uxtb r2, r3
8002afc: 4b4e ldr r3, [pc, #312] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002afe: 705a strb r2, [r3, #1]
tx[2] = 0x03;
8002b00: 4b4d ldr r3, [pc, #308] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002b02: 2203 movs r2, #3
8002b04: 709a strb r2, [r3, #2]
strtOut(3);
8002b06: 2003 movs r0, #3
8002b08: f7ff fde6 bl 80026d8 <strtOut>
break;
8002b0c: e1a3 b.n 8002e56 <HAL_UART_RxCpltCallback+0x59a>
tx[0] = iobuf[0];
8002b0e: 4b48 ldr r3, [pc, #288] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002b10: 781a ldrb r2, [r3, #0]
8002b12: 4b49 ldr r3, [pc, #292] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002b14: 701a strb r2, [r3, #0]
tx[1] = iobuf[1];
8002b16: 4b46 ldr r3, [pc, #280] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002b18: 785a ldrb r2, [r3, #1]
8002b1a: 4b47 ldr r3, [pc, #284] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002b1c: 705a strb r2, [r3, #1]
tx[2] = regs.ch[0] << 1;
8002b1e: 230c movs r3, #12
8002b20: 18fb adds r3, r7, r3
8002b22: 781b ldrb r3, [r3, #0]
8002b24: 18db adds r3, r3, r3
8002b26: b2da uxtb r2, r3
8002b28: 4b43 ldr r3, [pc, #268] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002b2a: 709a strb r2, [r3, #2]
pch = (uint8_t *) &pardata.IIN + ((addr.sh - 5001) << 1);
8002b2c: 2310 movs r3, #16
8002b2e: 18fb adds r3, r7, r3
8002b30: 881b ldrh r3, [r3, #0]
8002b32: 4a4c ldr r2, [pc, #304] ; (8002c64 <HAL_UART_RxCpltCallback+0x3a8>)
8002b34: 4694 mov ip, r2
8002b36: 4463 add r3, ip
8002b38: 005b lsls r3, r3, #1
8002b3a: 001a movs r2, r3
8002b3c: 4b4a ldr r3, [pc, #296] ; (8002c68 <HAL_UART_RxCpltCallback+0x3ac>)
8002b3e: 18d3 adds r3, r2, r3
8002b40: 61bb str r3, [r7, #24]
for(j = 0; j < tx[2]; j++)
8002b42: 231f movs r3, #31
8002b44: 18fb adds r3, r7, r3
8002b46: 2200 movs r2, #0
8002b48: 701a strb r2, [r3, #0]
8002b4a: e016 b.n 8002b7a <HAL_UART_RxCpltCallback+0x2be>
tx[j + 3] = *(pch + (j ^ 1));
8002b4c: 231f movs r3, #31
8002b4e: 18fb adds r3, r7, r3
8002b50: 781b ldrb r3, [r3, #0]
8002b52: 3303 adds r3, #3
8002b54: 221f movs r2, #31
8002b56: 18ba adds r2, r7, r2
8002b58: 7812 ldrb r2, [r2, #0]
8002b5a: 2101 movs r1, #1
8002b5c: 404a eors r2, r1
8002b5e: b2d2 uxtb r2, r2
8002b60: 0011 movs r1, r2
8002b62: 69ba ldr r2, [r7, #24]
8002b64: 1852 adds r2, r2, r1
8002b66: 7811 ldrb r1, [r2, #0]
8002b68: 4a33 ldr r2, [pc, #204] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002b6a: 54d1 strb r1, [r2, r3]
for(j = 0; j < tx[2]; j++)
8002b6c: 231f movs r3, #31
8002b6e: 18fb adds r3, r7, r3
8002b70: 781a ldrb r2, [r3, #0]
8002b72: 231f movs r3, #31
8002b74: 18fb adds r3, r7, r3
8002b76: 3201 adds r2, #1
8002b78: 701a strb r2, [r3, #0]
8002b7a: 4b2f ldr r3, [pc, #188] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002b7c: 789b ldrb r3, [r3, #2]
8002b7e: 221f movs r2, #31
8002b80: 18ba adds r2, r7, r2
8002b82: 7812 ldrb r2, [r2, #0]
8002b84: 429a cmp r2, r3
8002b86: d3e1 bcc.n 8002b4c <HAL_UART_RxCpltCallback+0x290>
strtOut(3 + tx[2]);
8002b88: 4b2b ldr r3, [pc, #172] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002b8a: 789b ldrb r3, [r3, #2]
8002b8c: b29b uxth r3, r3
8002b8e: 3303 adds r3, #3
8002b90: b29b uxth r3, r3
8002b92: 0018 movs r0, r3
8002b94: f7ff fda0 bl 80026d8 <strtOut>
break;
8002b98: e15d b.n 8002e56 <HAL_UART_RxCpltCallback+0x59a>
tmp = 3;
8002b9a: 231e movs r3, #30
8002b9c: 18fb adds r3, r7, r3
8002b9e: 2203 movs r2, #3
8002ba0: 701a strb r2, [r3, #0]
tx[0] = iobuf[0];
8002ba2: 4b23 ldr r3, [pc, #140] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002ba4: 781a ldrb r2, [r3, #0]
8002ba6: 4b24 ldr r3, [pc, #144] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002ba8: 701a strb r2, [r3, #0]
tx[1] = iobuf[1];
8002baa: 4b21 ldr r3, [pc, #132] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002bac: 785a ldrb r2, [r3, #1]
8002bae: 4b22 ldr r3, [pc, #136] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002bb0: 705a strb r2, [r3, #1]
tx[2] = regs.ch[0] << 2; // êîë-âî áàéò äàííûõ
8002bb2: 230c movs r3, #12
8002bb4: 18fb adds r3, r7, r3
8002bb6: 781b ldrb r3, [r3, #0]
8002bb8: 009b lsls r3, r3, #2
8002bba: b2da uxtb r2, r3
8002bbc: 4b1e ldr r3, [pc, #120] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002bbe: 709a strb r2, [r3, #2]
if(addr.sh == 7002)
8002bc0: 2310 movs r3, #16
8002bc2: 18fb adds r3, r7, r3
8002bc4: 881b ldrh r3, [r3, #0]
8002bc6: 4a21 ldr r2, [pc, #132] ; (8002c4c <HAL_UART_RxCpltCallback+0x390>)
8002bc8: 4293 cmp r3, r2
8002bca: d10c bne.n 8002be6 <HAL_UART_RxCpltCallback+0x32a>
tmp <<= 1; //tmp=6
8002bcc: 231e movs r3, #30
8002bce: 18fa adds r2, r7, r3
8002bd0: 231e movs r3, #30
8002bd2: 18fb adds r3, r7, r3
8002bd4: 781b ldrb r3, [r3, #0]
8002bd6: 18db adds r3, r3, r3
8002bd8: 7013 strb r3, [r2, #0]
tx[2] >>= 1; //êîë-âî ñëîâ äàííûõ
8002bda: 4b17 ldr r3, [pc, #92] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002bdc: 789b ldrb r3, [r3, #2]
8002bde: 085b lsrs r3, r3, #1
8002be0: b2da uxtb r2, r3
8002be2: 4b15 ldr r3, [pc, #84] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002be4: 709a strb r2, [r3, #2]
if(regs.ch[0] > tmp)
8002be6: 230c movs r3, #12
8002be8: 18fb adds r3, r7, r3
8002bea: 781b ldrb r3, [r3, #0]
8002bec: 221e movs r2, #30
8002bee: 18ba adds r2, r7, r2
8002bf0: 7812 ldrb r2, [r2, #0]
8002bf2: 429a cmp r2, r3
8002bf4: d23a bcs.n 8002c6c <HAL_UART_RxCpltCallback+0x3b0>
tx[0] = iobuf[0];
8002bf6: 4b0e ldr r3, [pc, #56] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002bf8: 781a ldrb r2, [r3, #0]
8002bfa: 4b0f ldr r3, [pc, #60] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002bfc: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
8002bfe: 4b0c ldr r3, [pc, #48] ; (8002c30 <HAL_UART_RxCpltCallback+0x374>)
8002c00: 785b ldrb r3, [r3, #1]
8002c02: 2280 movs r2, #128 ; 0x80
8002c04: 4252 negs r2, r2
8002c06: 4313 orrs r3, r2
8002c08: b2da uxtb r2, r3
8002c0a: 4b0b ldr r3, [pc, #44] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002c0c: 705a strb r2, [r3, #1]
tx[2] = 0x03;
8002c0e: 4b0a ldr r3, [pc, #40] ; (8002c38 <HAL_UART_RxCpltCallback+0x37c>)
8002c10: 2203 movs r2, #3
8002c12: 709a strb r2, [r3, #2]
strtOut(3);
8002c14: 2003 movs r0, #3
8002c16: f7ff fd5f bl 80026d8 <strtOut>
break;
8002c1a: e11c b.n 8002e56 <HAL_UART_RxCpltCallback+0x59a>
8002c1c: 20000098 .word 0x20000098
8002c20: 08007408 .word 0x08007408
8002c24: 20000288 .word 0x20000288
8002c28: 20000035 .word 0x20000035
8002c2c: 40013800 .word 0x40013800
8002c30: 2000028c .word 0x2000028c
8002c34: 2000028a .word 0x2000028a
8002c38: 20000188 .word 0x20000188
8002c3c: 2000002c .word 0x2000002c
8002c40: 00001b5c .word 0x00001b5c
8002c44: 00001389 .word 0x00001389
8002c48: 00001392 .word 0x00001392
8002c4c: 00001b5a .word 0x00001b5a
8002c50: 00001d4d .word 0x00001d4d
8002c54: 00001b5e .word 0x00001b5e
8002c58: 00001d4e .word 0x00001d4e
8002c5c: 00001d4f .word 0x00001d4f
8002c60: 00001393 .word 0x00001393
8002c64: ffffec77 .word 0xffffec77
8002c68: 2000009e .word 0x2000009e
f.fl = pardata.KCOND;
8002c6c: 4be9 ldr r3, [pc, #932] ; (8003014 <HAL_UART_RxCpltCallback+0x758>)
8002c6e: 69db ldr r3, [r3, #28]
8002c70: 60bb str r3, [r7, #8]
tx[3] = f.ch[3];
8002c72: 2308 movs r3, #8
8002c74: 18fb adds r3, r7, r3
8002c76: 78da ldrb r2, [r3, #3]
8002c78: 4be7 ldr r3, [pc, #924] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002c7a: 70da strb r2, [r3, #3]
tx[4] = f.ch[2];
8002c7c: 2308 movs r3, #8
8002c7e: 18fb adds r3, r7, r3
8002c80: 789a ldrb r2, [r3, #2]
8002c82: 4be5 ldr r3, [pc, #916] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002c84: 711a strb r2, [r3, #4]
tx[5] = f.ch[1];
8002c86: 2308 movs r3, #8
8002c88: 18fb adds r3, r7, r3
8002c8a: 785a ldrb r2, [r3, #1]
8002c8c: 4be2 ldr r3, [pc, #904] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002c8e: 715a strb r2, [r3, #5]
tx[6] = f.ch[0];
8002c90: 2308 movs r3, #8
8002c92: 18fb adds r3, r7, r3
8002c94: 781a ldrb r2, [r3, #0]
8002c96: 4be0 ldr r3, [pc, #896] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002c98: 719a strb r2, [r3, #6]
strtOut(3 + tx[2]);
8002c9a: 4bdf ldr r3, [pc, #892] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002c9c: 789b ldrb r3, [r3, #2]
8002c9e: b29b uxth r3, r3
8002ca0: 3303 adds r3, #3
8002ca2: b29b uxth r3, r3
8002ca4: 0018 movs r0, r3
8002ca6: f7ff fd17 bl 80026d8 <strtOut>
break;
8002caa: e0d4 b.n 8002e56 <HAL_UART_RxCpltCallback+0x59a>
tmp = 2;
8002cac: 231e movs r3, #30
8002cae: 18fb adds r3, r7, r3
8002cb0: 2202 movs r2, #2
8002cb2: 701a strb r2, [r3, #0]
tx[0] = iobuf[0];
8002cb4: 4bd9 ldr r3, [pc, #868] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002cb6: 781a ldrb r2, [r3, #0]
8002cb8: 4bd7 ldr r3, [pc, #860] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002cba: 701a strb r2, [r3, #0]
tx[1] = iobuf[1];
8002cbc: 4bd7 ldr r3, [pc, #860] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002cbe: 785a ldrb r2, [r3, #1]
8002cc0: 4bd5 ldr r3, [pc, #852] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002cc2: 705a strb r2, [r3, #1]
tx[2] = regs.ch[0] << 2;
8002cc4: 230c movs r3, #12
8002cc6: 18fb adds r3, r7, r3
8002cc8: 781b ldrb r3, [r3, #0]
8002cca: 009b lsls r3, r3, #2
8002ccc: b2da uxtb r2, r3
8002cce: 4bd2 ldr r3, [pc, #840] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002cd0: 709a strb r2, [r3, #2]
if(addr.sh == 7004)
8002cd2: 2310 movs r3, #16
8002cd4: 18fb adds r3, r7, r3
8002cd6: 881b ldrh r3, [r3, #0]
8002cd8: 4ad1 ldr r2, [pc, #836] ; (8003020 <HAL_UART_RxCpltCallback+0x764>)
8002cda: 4293 cmp r3, r2
8002cdc: d10c bne.n 8002cf8 <HAL_UART_RxCpltCallback+0x43c>
tmp <<= 1;
8002cde: 231e movs r3, #30
8002ce0: 18fa adds r2, r7, r3
8002ce2: 231e movs r3, #30
8002ce4: 18fb adds r3, r7, r3
8002ce6: 781b ldrb r3, [r3, #0]
8002ce8: 18db adds r3, r3, r3
8002cea: 7013 strb r3, [r2, #0]
tx[2] >>= 1;
8002cec: 4bca ldr r3, [pc, #808] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002cee: 789b ldrb r3, [r3, #2]
8002cf0: 085b lsrs r3, r3, #1
8002cf2: b2da uxtb r2, r3
8002cf4: 4bc8 ldr r3, [pc, #800] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002cf6: 709a strb r2, [r3, #2]
if(regs.ch[0] > tmp)
8002cf8: 230c movs r3, #12
8002cfa: 18fb adds r3, r7, r3
8002cfc: 781b ldrb r3, [r3, #0]
8002cfe: 221e movs r2, #30
8002d00: 18ba adds r2, r7, r2
8002d02: 7812 ldrb r2, [r2, #0]
8002d04: 429a cmp r2, r3
8002d06: d212 bcs.n 8002d2e <HAL_UART_RxCpltCallback+0x472>
tx[0] = iobuf[0];
8002d08: 4bc4 ldr r3, [pc, #784] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002d0a: 781a ldrb r2, [r3, #0]
8002d0c: 4bc2 ldr r3, [pc, #776] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d0e: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
8002d10: 4bc2 ldr r3, [pc, #776] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002d12: 785b ldrb r3, [r3, #1]
8002d14: 2280 movs r2, #128 ; 0x80
8002d16: 4252 negs r2, r2
8002d18: 4313 orrs r3, r2
8002d1a: b2da uxtb r2, r3
8002d1c: 4bbe ldr r3, [pc, #760] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d1e: 705a strb r2, [r3, #1]
tx[2] = 0x03;
8002d20: 4bbd ldr r3, [pc, #756] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d22: 2203 movs r2, #3
8002d24: 709a strb r2, [r3, #2]
strtOut(3);
8002d26: 2003 movs r0, #3
8002d28: f7ff fcd6 bl 80026d8 <strtOut>
break;
8002d2c: e093 b.n 8002e56 <HAL_UART_RxCpltCallback+0x59a>
f.fl = pardata.SENS;
8002d2e: 4bb9 ldr r3, [pc, #740] ; (8003014 <HAL_UART_RxCpltCallback+0x758>)
8002d30: 6a1b ldr r3, [r3, #32]
8002d32: 60bb str r3, [r7, #8]
tx[3] = f.ch[3];
8002d34: 2308 movs r3, #8
8002d36: 18fb adds r3, r7, r3
8002d38: 78da ldrb r2, [r3, #3]
8002d3a: 4bb7 ldr r3, [pc, #732] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d3c: 70da strb r2, [r3, #3]
tx[4] = f.ch[2];
8002d3e: 2308 movs r3, #8
8002d40: 18fb adds r3, r7, r3
8002d42: 789a ldrb r2, [r3, #2]
8002d44: 4bb4 ldr r3, [pc, #720] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d46: 711a strb r2, [r3, #4]
tx[5] = f.ch[1];
8002d48: 2308 movs r3, #8
8002d4a: 18fb adds r3, r7, r3
8002d4c: 785a ldrb r2, [r3, #1]
8002d4e: 4bb2 ldr r3, [pc, #712] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d50: 715a strb r2, [r3, #5]
tx[6] = f.ch[0];
8002d52: 2308 movs r3, #8
8002d54: 18fb adds r3, r7, r3
8002d56: 781a ldrb r2, [r3, #0]
8002d58: 4baf ldr r3, [pc, #700] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d5a: 719a strb r2, [r3, #6]
strtOut(3 + tx[2]);
8002d5c: 4bae ldr r3, [pc, #696] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d5e: 789b ldrb r3, [r3, #2]
8002d60: b29b uxth r3, r3
8002d62: 3303 adds r3, #3
8002d64: b29b uxth r3, r3
8002d66: 0018 movs r0, r3
8002d68: f7ff fcb6 bl 80026d8 <strtOut>
break;
8002d6c: e073 b.n 8002e56 <HAL_UART_RxCpltCallback+0x59a>
tmp = 1;
8002d6e: 231e movs r3, #30
8002d70: 18fb adds r3, r7, r3
8002d72: 2201 movs r2, #1
8002d74: 701a strb r2, [r3, #0]
tx[0] = iobuf[0];
8002d76: 4ba9 ldr r3, [pc, #676] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002d78: 781a ldrb r2, [r3, #0]
8002d7a: 4ba7 ldr r3, [pc, #668] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d7c: 701a strb r2, [r3, #0]
tx[1] = iobuf[1];
8002d7e: 4ba7 ldr r3, [pc, #668] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002d80: 785a ldrb r2, [r3, #1]
8002d82: 4ba5 ldr r3, [pc, #660] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d84: 705a strb r2, [r3, #1]
tx[2] = regs.ch[0] << 2;
8002d86: 230c movs r3, #12
8002d88: 18fb adds r3, r7, r3
8002d8a: 781b ldrb r3, [r3, #0]
8002d8c: 009b lsls r3, r3, #2
8002d8e: b2da uxtb r2, r3
8002d90: 4ba1 ldr r3, [pc, #644] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002d92: 709a strb r2, [r3, #2]
if(addr.sh == 7006)
8002d94: 2310 movs r3, #16
8002d96: 18fb adds r3, r7, r3
8002d98: 881b ldrh r3, [r3, #0]
8002d9a: 4aa2 ldr r2, [pc, #648] ; (8003024 <HAL_UART_RxCpltCallback+0x768>)
8002d9c: 4293 cmp r3, r2
8002d9e: d10c bne.n 8002dba <HAL_UART_RxCpltCallback+0x4fe>
tmp <<= 1;
8002da0: 231e movs r3, #30
8002da2: 18fa adds r2, r7, r3
8002da4: 231e movs r3, #30
8002da6: 18fb adds r3, r7, r3
8002da8: 781b ldrb r3, [r3, #0]
8002daa: 18db adds r3, r3, r3
8002dac: 7013 strb r3, [r2, #0]
tx[2] >>= 1;
8002dae: 4b9a ldr r3, [pc, #616] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002db0: 789b ldrb r3, [r3, #2]
8002db2: 085b lsrs r3, r3, #1
8002db4: b2da uxtb r2, r3
8002db6: 4b98 ldr r3, [pc, #608] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002db8: 709a strb r2, [r3, #2]
if(regs.ch[0] > tmp)
8002dba: 230c movs r3, #12
8002dbc: 18fb adds r3, r7, r3
8002dbe: 781b ldrb r3, [r3, #0]
8002dc0: 221e movs r2, #30
8002dc2: 18ba adds r2, r7, r2
8002dc4: 7812 ldrb r2, [r2, #0]
8002dc6: 429a cmp r2, r3
8002dc8: d212 bcs.n 8002df0 <HAL_UART_RxCpltCallback+0x534>
tx[0] = iobuf[0];
8002dca: 4b94 ldr r3, [pc, #592] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002dcc: 781a ldrb r2, [r3, #0]
8002dce: 4b92 ldr r3, [pc, #584] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002dd0: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
8002dd2: 4b92 ldr r3, [pc, #584] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002dd4: 785b ldrb r3, [r3, #1]
8002dd6: 2280 movs r2, #128 ; 0x80
8002dd8: 4252 negs r2, r2
8002dda: 4313 orrs r3, r2
8002ddc: b2da uxtb r2, r3
8002dde: 4b8e ldr r3, [pc, #568] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002de0: 705a strb r2, [r3, #1]
tx[2] = 0x03;
8002de2: 4b8d ldr r3, [pc, #564] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002de4: 2203 movs r2, #3
8002de6: 709a strb r2, [r3, #2]
strtOut(3);
8002de8: 2003 movs r0, #3
8002dea: f7ff fc75 bl 80026d8 <strtOut>
break;
8002dee: e032 b.n 8002e56 <HAL_UART_RxCpltCallback+0x59a>
f.fl = pardata.ACCEL;
8002df0: 4b88 ldr r3, [pc, #544] ; (8003014 <HAL_UART_RxCpltCallback+0x758>)
8002df2: 6a5b ldr r3, [r3, #36] ; 0x24
8002df4: 60bb str r3, [r7, #8]
tx[3] = f.ch[3];
8002df6: 2308 movs r3, #8
8002df8: 18fb adds r3, r7, r3
8002dfa: 78da ldrb r2, [r3, #3]
8002dfc: 4b86 ldr r3, [pc, #536] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002dfe: 70da strb r2, [r3, #3]
tx[4] = f.ch[2];
8002e00: 2308 movs r3, #8
8002e02: 18fb adds r3, r7, r3
8002e04: 789a ldrb r2, [r3, #2]
8002e06: 4b84 ldr r3, [pc, #528] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002e08: 711a strb r2, [r3, #4]
tx[5] = f.ch[1];
8002e0a: 2308 movs r3, #8
8002e0c: 18fb adds r3, r7, r3
8002e0e: 785a ldrb r2, [r3, #1]
8002e10: 4b81 ldr r3, [pc, #516] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002e12: 715a strb r2, [r3, #5]
tx[6] = f.ch[0];
8002e14: 2308 movs r3, #8
8002e16: 18fb adds r3, r7, r3
8002e18: 781a ldrb r2, [r3, #0]
8002e1a: 4b7f ldr r3, [pc, #508] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002e1c: 719a strb r2, [r3, #6]
strtOut(3 + tx[2]);
8002e1e: 4b7e ldr r3, [pc, #504] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002e20: 789b ldrb r3, [r3, #2]
8002e22: b29b uxth r3, r3
8002e24: 3303 adds r3, #3
8002e26: b29b uxth r3, r3
8002e28: 0018 movs r0, r3
8002e2a: f7ff fc55 bl 80026d8 <strtOut>
break;
8002e2e: e012 b.n 8002e56 <HAL_UART_RxCpltCallback+0x59a>
tx[0] = iobuf[0];
8002e30: 4b7a ldr r3, [pc, #488] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002e32: 781a ldrb r2, [r3, #0]
8002e34: 4b78 ldr r3, [pc, #480] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002e36: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
8002e38: 4b78 ldr r3, [pc, #480] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002e3a: 785b ldrb r3, [r3, #1]
8002e3c: 2280 movs r2, #128 ; 0x80
8002e3e: 4252 negs r2, r2
8002e40: 4313 orrs r3, r2
8002e42: b2da uxtb r2, r3
8002e44: 4b74 ldr r3, [pc, #464] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002e46: 705a strb r2, [r3, #1]
tx[2] = 0x02;
8002e48: 4b73 ldr r3, [pc, #460] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002e4a: 2202 movs r2, #2
8002e4c: 709a strb r2, [r3, #2]
strtOut(3);
8002e4e: 2003 movs r0, #3
8002e50: f7ff fc42 bl 80026d8 <strtOut>
break;
8002e54: 46c0 nop ; (mov r8, r8)
break;
8002e56: f000 fefe bl 8003c56 <HAL_UART_RxCpltCallback+0x139a>
addr.ch[1] = iobuf[2];
8002e5a: 4b70 ldr r3, [pc, #448] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002e5c: 789a ldrb r2, [r3, #2]
8002e5e: 2310 movs r3, #16
8002e60: 18fb adds r3, r7, r3
8002e62: 705a strb r2, [r3, #1]
addr.ch[0] = iobuf[3];
8002e64: 4b6d ldr r3, [pc, #436] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002e66: 78da ldrb r2, [r3, #3]
8002e68: 2310 movs r3, #16
8002e6a: 18fb adds r3, r7, r3
8002e6c: 701a strb r2, [r3, #0]
regs.ch[1] = iobuf[4];
8002e6e: 4b6b ldr r3, [pc, #428] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002e70: 791a ldrb r2, [r3, #4]
8002e72: 230c movs r3, #12
8002e74: 18fb adds r3, r7, r3
8002e76: 705a strb r2, [r3, #1]
regs.ch[0] = iobuf[5];
8002e78: 4b68 ldr r3, [pc, #416] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002e7a: 795a ldrb r2, [r3, #5]
8002e7c: 230c movs r3, #12
8002e7e: 18fb adds r3, r7, r3
8002e80: 701a strb r2, [r3, #0]
switch(addr.sh) // Запись pardata
8002e82: 2310 movs r3, #16
8002e84: 18fb adds r3, r7, r3
8002e86: 881b ldrh r3, [r3, #0]
8002e88: 4a67 ldr r2, [pc, #412] ; (8003028 <HAL_UART_RxCpltCallback+0x76c>)
8002e8a: 4293 cmp r3, r2
8002e8c: d101 bne.n 8002e92 <HAL_UART_RxCpltCallback+0x5d6>
8002e8e: f000 fba4 bl 80035da <HAL_UART_RxCpltCallback+0xd1e>
8002e92: 4a65 ldr r2, [pc, #404] ; (8003028 <HAL_UART_RxCpltCallback+0x76c>)
8002e94: 4293 cmp r3, r2
8002e96: dc13 bgt.n 8002ec0 <HAL_UART_RxCpltCallback+0x604>
8002e98: 4a64 ldr r2, [pc, #400] ; (800302c <HAL_UART_RxCpltCallback+0x770>)
8002e9a: 4293 cmp r3, r2
8002e9c: dc08 bgt.n 8002eb0 <HAL_UART_RxCpltCallback+0x5f4>
8002e9e: 4a64 ldr r2, [pc, #400] ; (8003030 <HAL_UART_RxCpltCallback+0x774>)
8002ea0: 4293 cmp r3, r2
8002ea2: db00 blt.n 8002ea6 <HAL_UART_RxCpltCallback+0x5ea>
8002ea4: e0d8 b.n 8003058 <HAL_UART_RxCpltCallback+0x79c>
8002ea6: 4a63 ldr r2, [pc, #396] ; (8003034 <HAL_UART_RxCpltCallback+0x778>)
8002ea8: 4293 cmp r3, r2
8002eaa: d029 beq.n 8002f00 <HAL_UART_RxCpltCallback+0x644>
8002eac: f000 feb4 bl 8003c18 <HAL_UART_RxCpltCallback+0x135c>
8002eb0: 4a61 ldr r2, [pc, #388] ; (8003038 <HAL_UART_RxCpltCallback+0x77c>)
8002eb2: 4694 mov ip, r2
8002eb4: 4463 add r3, ip
8002eb6: 2b09 cmp r3, #9
8002eb8: d901 bls.n 8002ebe <HAL_UART_RxCpltCallback+0x602>
8002eba: f000 fead bl 8003c18 <HAL_UART_RxCpltCallback+0x135c>
8002ebe: e2ac b.n 800341a <HAL_UART_RxCpltCallback+0xb5e>
8002ec0: 4a5e ldr r2, [pc, #376] ; (800303c <HAL_UART_RxCpltCallback+0x780>)
8002ec2: 4293 cmp r3, r2
8002ec4: d101 bne.n 8002eca <HAL_UART_RxCpltCallback+0x60e>
8002ec6: f000 fb88 bl 80035da <HAL_UART_RxCpltCallback+0xd1e>
8002eca: 4a5c ldr r2, [pc, #368] ; (800303c <HAL_UART_RxCpltCallback+0x780>)
8002ecc: 4293 cmp r3, r2
8002ece: dc0b bgt.n 8002ee8 <HAL_UART_RxCpltCallback+0x62c>
8002ed0: 4a53 ldr r2, [pc, #332] ; (8003020 <HAL_UART_RxCpltCallback+0x764>)
8002ed2: 4293 cmp r3, r2
8002ed4: d101 bne.n 8002eda <HAL_UART_RxCpltCallback+0x61e>
8002ed6: f000 fd03 bl 80038e0 <HAL_UART_RxCpltCallback+0x1024>
8002eda: 4a52 ldr r2, [pc, #328] ; (8003024 <HAL_UART_RxCpltCallback+0x768>)
8002edc: 4293 cmp r3, r2
8002ede: d101 bne.n 8002ee4 <HAL_UART_RxCpltCallback+0x628>
8002ee0: f000 fddc bl 8003a9c <HAL_UART_RxCpltCallback+0x11e0>
8002ee4: f000 fe98 bl 8003c18 <HAL_UART_RxCpltCallback+0x135c>
8002ee8: 4a55 ldr r2, [pc, #340] ; (8003040 <HAL_UART_RxCpltCallback+0x784>)
8002eea: 4293 cmp r3, r2
8002eec: d101 bne.n 8002ef2 <HAL_UART_RxCpltCallback+0x636>
8002eee: f000 fcf7 bl 80038e0 <HAL_UART_RxCpltCallback+0x1024>
8002ef2: 4a54 ldr r2, [pc, #336] ; (8003044 <HAL_UART_RxCpltCallback+0x788>)
8002ef4: 4293 cmp r3, r2
8002ef6: d101 bne.n 8002efc <HAL_UART_RxCpltCallback+0x640>
8002ef8: f000 fdd0 bl 8003a9c <HAL_UART_RxCpltCallback+0x11e0>
8002efc: f000 fe8c bl 8003c18 <HAL_UART_RxCpltCallback+0x135c>
if((regs.ch[0] > 1) || (iobuf[6] != (regs.ch[0] << 1)))
8002f00: 230c movs r3, #12
8002f02: 18fb adds r3, r7, r3
8002f04: 781b ldrb r3, [r3, #0]
8002f06: 2b01 cmp r3, #1
8002f08: d808 bhi.n 8002f1c <HAL_UART_RxCpltCallback+0x660>
8002f0a: 4b44 ldr r3, [pc, #272] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002f0c: 799b ldrb r3, [r3, #6]
8002f0e: 001a movs r2, r3
8002f10: 230c movs r3, #12
8002f12: 18fb adds r3, r7, r3
8002f14: 781b ldrb r3, [r3, #0]
8002f16: 005b lsls r3, r3, #1
8002f18: 429a cmp r2, r3
8002f1a: d013 beq.n 8002f44 <HAL_UART_RxCpltCallback+0x688>
tx[0] = iobuf[0];
8002f1c: 4b3f ldr r3, [pc, #252] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002f1e: 781a ldrb r2, [r3, #0]
8002f20: 4b3d ldr r3, [pc, #244] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002f22: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
8002f24: 4b3d ldr r3, [pc, #244] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002f26: 785b ldrb r3, [r3, #1]
8002f28: 2280 movs r2, #128 ; 0x80
8002f2a: 4252 negs r2, r2
8002f2c: 4313 orrs r3, r2
8002f2e: b2da uxtb r2, r3
8002f30: 4b39 ldr r3, [pc, #228] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002f32: 705a strb r2, [r3, #1]
tx[2] = 0x03;
8002f34: 4b38 ldr r3, [pc, #224] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002f36: 2203 movs r2, #3
8002f38: 709a strb r2, [r3, #2]
strtOut(3);
8002f3a: 2003 movs r0, #3
8002f3c: f7ff fbcc bl 80026d8 <strtOut>
break;
8002f40: f000 fe7d bl 8003c3e <HAL_UART_RxCpltCallback+0x1382>
j = 8 + iobuf[6];
8002f44: 4b35 ldr r3, [pc, #212] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002f46: 799a ldrb r2, [r3, #6]
8002f48: 231f movs r3, #31
8002f4a: 18fb adds r3, r7, r3
8002f4c: 3208 adds r2, #8
8002f4e: 701a strb r2, [r3, #0]
if(iolen > j)
8002f50: 4b3d ldr r3, [pc, #244] ; (8003048 <HAL_UART_RxCpltCallback+0x78c>)
8002f52: 781b ldrb r3, [r3, #0]
8002f54: 221f movs r2, #31
8002f56: 18ba adds r2, r7, r2
8002f58: 7812 ldrb r2, [r2, #0]
8002f5a: 429a cmp r2, r3
8002f5c: d301 bcc.n 8002f62 <HAL_UART_RxCpltCallback+0x6a6>
8002f5e: f000 fe6e bl 8003c3e <HAL_UART_RxCpltCallback+0x1382>
iolen = 0;
8002f62: 4b39 ldr r3, [pc, #228] ; (8003048 <HAL_UART_RxCpltCallback+0x78c>)
8002f64: 2200 movs r2, #0
8002f66: 701a strb r2, [r3, #0]
crc.ch[0] = iobuf[j - 1];
8002f68: 231f movs r3, #31
8002f6a: 18fb adds r3, r7, r3
8002f6c: 781b ldrb r3, [r3, #0]
8002f6e: 3b01 subs r3, #1
8002f70: 4a2a ldr r2, [pc, #168] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002f72: 5cd2 ldrb r2, [r2, r3]
8002f74: 2314 movs r3, #20
8002f76: 18fb adds r3, r7, r3
8002f78: 701a strb r2, [r3, #0]
crc.ch[1] = iobuf[j];
8002f7a: 231f movs r3, #31
8002f7c: 18fb adds r3, r7, r3
8002f7e: 781b ldrb r3, [r3, #0]
8002f80: 4a26 ldr r2, [pc, #152] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002f82: 5cd2 ldrb r2, [r2, r3]
8002f84: 2314 movs r3, #20
8002f86: 18fb adds r3, r7, r3
8002f88: 705a strb r2, [r3, #1]
if(crc.sh == Crc16(j - 1))
8002f8a: 2314 movs r3, #20
8002f8c: 18fb adds r3, r7, r3
8002f8e: 881c ldrh r4, [r3, #0]
8002f90: 231f movs r3, #31
8002f92: 18fb adds r3, r7, r3
8002f94: 781b ldrb r3, [r3, #0]
8002f96: b29b uxth r3, r3
8002f98: 3b01 subs r3, #1
8002f9a: b29b uxth r3, r3
8002f9c: 0018 movs r0, r3
8002f9e: f7ff fbe7 bl 8002770 <Crc16>
8002fa2: 0003 movs r3, r0
8002fa4: 429c cmp r4, r3
8002fa6: d001 beq.n 8002fac <HAL_UART_RxCpltCallback+0x6f0>
8002fa8: f000 fe49 bl 8003c3e <HAL_UART_RxCpltCallback+0x1382>
if(!iobuf[8])
8002fac: 4b1b ldr r3, [pc, #108] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002fae: 7a1b ldrb r3, [r3, #8]
8002fb0: 2b00 cmp r3, #0
8002fb2: d106 bne.n 8002fc2 <HAL_UART_RxCpltCallback+0x706>
faseClbr = 0;
8002fb4: 4b25 ldr r3, [pc, #148] ; (800304c <HAL_UART_RxCpltCallback+0x790>)
8002fb6: 2200 movs r2, #0
8002fb8: 601a str r2, [r3, #0]
clbr = false;
8002fba: 4b25 ldr r3, [pc, #148] ; (8003050 <HAL_UART_RxCpltCallback+0x794>)
8002fbc: 2200 movs r2, #0
8002fbe: 701a strb r2, [r3, #0]
8002fc0: e008 b.n 8002fd4 <HAL_UART_RxCpltCallback+0x718>
needClbr = true;
8002fc2: 4b24 ldr r3, [pc, #144] ; (8003054 <HAL_UART_RxCpltCallback+0x798>)
8002fc4: 2201 movs r2, #1
8002fc6: 701a strb r2, [r3, #0]
faseClbr = iobuf[8] - 1;
8002fc8: 4b14 ldr r3, [pc, #80] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002fca: 7a1b ldrb r3, [r3, #8]
8002fcc: 3b01 subs r3, #1
8002fce: 001a movs r2, r3
8002fd0: 4b1e ldr r3, [pc, #120] ; (800304c <HAL_UART_RxCpltCallback+0x790>)
8002fd2: 601a str r2, [r3, #0]
for(j = 0; j < 6; j++) {
8002fd4: 231f movs r3, #31
8002fd6: 18fb adds r3, r7, r3
8002fd8: 2200 movs r2, #0
8002fda: 701a strb r2, [r3, #0]
8002fdc: e010 b.n 8003000 <HAL_UART_RxCpltCallback+0x744>
tx[j] = iobuf[j];
8002fde: 231f movs r3, #31
8002fe0: 18fb adds r3, r7, r3
8002fe2: 781b ldrb r3, [r3, #0]
8002fe4: 221f movs r2, #31
8002fe6: 18ba adds r2, r7, r2
8002fe8: 7812 ldrb r2, [r2, #0]
8002fea: 490c ldr r1, [pc, #48] ; (800301c <HAL_UART_RxCpltCallback+0x760>)
8002fec: 5c89 ldrb r1, [r1, r2]
8002fee: 4a0a ldr r2, [pc, #40] ; (8003018 <HAL_UART_RxCpltCallback+0x75c>)
8002ff0: 54d1 strb r1, [r2, r3]
for(j = 0; j < 6; j++) {
8002ff2: 231f movs r3, #31
8002ff4: 18fb adds r3, r7, r3
8002ff6: 781a ldrb r2, [r3, #0]
8002ff8: 231f movs r3, #31
8002ffa: 18fb adds r3, r7, r3
8002ffc: 3201 adds r2, #1
8002ffe: 701a strb r2, [r3, #0]
8003000: 231f movs r3, #31
8003002: 18fb adds r3, r7, r3
8003004: 781b ldrb r3, [r3, #0]
8003006: 2b05 cmp r3, #5
8003008: d9e9 bls.n 8002fde <HAL_UART_RxCpltCallback+0x722>
strtOut(6);
800300a: 2006 movs r0, #6
800300c: f7ff fb64 bl 80026d8 <strtOut>
break;
8003010: f000 fe15 bl 8003c3e <HAL_UART_RxCpltCallback+0x1382>
8003014: 20000098 .word 0x20000098
8003018: 20000188 .word 0x20000188
800301c: 2000028c .word 0x2000028c
8003020: 00001b5c .word 0x00001b5c
8003024: 00001b5e .word 0x00001b5e
8003028: 00001b5a .word 0x00001b5a
800302c: 00000bcf .word 0x00000bcf
8003030: 00000bb9 .word 0x00000bb9
8003034: 00000bb8 .word 0x00000bb8
8003038: ffffec77 .word 0xffffec77
800303c: 00001d4d .word 0x00001d4d
8003040: 00001d4e .word 0x00001d4e
8003044: 00001d4f .word 0x00001d4f
8003048: 20000035 .word 0x20000035
800304c: 20000030 .word 0x20000030
8003050: 20000034 .word 0x20000034
8003054: 2000002e .word 0x2000002e
if((regs.ch[0] > 1) || (iobuf[6] != (regs.ch[0] << 1)))
8003058: 230c movs r3, #12
800305a: 18fb adds r3, r7, r3
800305c: 781b ldrb r3, [r3, #0]
800305e: 2b01 cmp r3, #1
8003060: d808 bhi.n 8003074 <HAL_UART_RxCpltCallback+0x7b8>
8003062: 4bd7 ldr r3, [pc, #860] ; (80033c0 <HAL_UART_RxCpltCallback+0xb04>)
8003064: 799b ldrb r3, [r3, #6]
8003066: 001a movs r2, r3
8003068: 230c movs r3, #12
800306a: 18fb adds r3, r7, r3
800306c: 781b ldrb r3, [r3, #0]
800306e: 005b lsls r3, r3, #1
8003070: 429a cmp r2, r3
8003072: d013 beq.n 800309c <HAL_UART_RxCpltCallback+0x7e0>
tx[0] = iobuf[0];
8003074: 4bd2 ldr r3, [pc, #840] ; (80033c0 <HAL_UART_RxCpltCallback+0xb04>)
8003076: 781a ldrb r2, [r3, #0]
8003078: 4bd2 ldr r3, [pc, #840] ; (80033c4 <HAL_UART_RxCpltCallback+0xb08>)
800307a: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
800307c: 4bd0 ldr r3, [pc, #832] ; (80033c0 <HAL_UART_RxCpltCallback+0xb04>)
800307e: 785b ldrb r3, [r3, #1]
8003080: 2280 movs r2, #128 ; 0x80
8003082: 4252 negs r2, r2
8003084: 4313 orrs r3, r2
8003086: b2da uxtb r2, r3
8003088: 4bce ldr r3, [pc, #824] ; (80033c4 <HAL_UART_RxCpltCallback+0xb08>)
800308a: 705a strb r2, [r3, #1]
tx[2] = 0x03;
800308c: 4bcd ldr r3, [pc, #820] ; (80033c4 <HAL_UART_RxCpltCallback+0xb08>)
800308e: 2203 movs r2, #3
8003090: 709a strb r2, [r3, #2]
strtOut(3);
8003092: 2003 movs r0, #3
8003094: f7ff fb20 bl 80026d8 <strtOut>
break;
8003098: f000 fdd3 bl 8003c42 <HAL_UART_RxCpltCallback+0x1386>
j = 8 + iobuf[6];
800309c: 4bc8 ldr r3, [pc, #800] ; (80033c0 <HAL_UART_RxCpltCallback+0xb04>)
800309e: 799a ldrb r2, [r3, #6]
80030a0: 231f movs r3, #31
80030a2: 18fb adds r3, r7, r3
80030a4: 3208 adds r2, #8
80030a6: 701a strb r2, [r3, #0]
if(iolen > j)
80030a8: 4bc7 ldr r3, [pc, #796] ; (80033c8 <HAL_UART_RxCpltCallback+0xb0c>)
80030aa: 781b ldrb r3, [r3, #0]
80030ac: 221f movs r2, #31
80030ae: 18ba adds r2, r7, r2
80030b0: 7812 ldrb r2, [r2, #0]
80030b2: 429a cmp r2, r3
80030b4: d301 bcc.n 80030ba <HAL_UART_RxCpltCallback+0x7fe>
80030b6: f000 fdc4 bl 8003c42 <HAL_UART_RxCpltCallback+0x1386>
iolen = 0;
80030ba: 4bc3 ldr r3, [pc, #780] ; (80033c8 <HAL_UART_RxCpltCallback+0xb0c>)
80030bc: 2200 movs r2, #0
80030be: 701a strb r2, [r3, #0]
crc.ch[0] = iobuf[j - 1];
80030c0: 231f movs r3, #31
80030c2: 18fb adds r3, r7, r3
80030c4: 781b ldrb r3, [r3, #0]
80030c6: 3b01 subs r3, #1
80030c8: 4abd ldr r2, [pc, #756] ; (80033c0 <HAL_UART_RxCpltCallback+0xb04>)
80030ca: 5cd2 ldrb r2, [r2, r3]
80030cc: 2314 movs r3, #20
80030ce: 18fb adds r3, r7, r3
80030d0: 701a strb r2, [r3, #0]
crc.ch[1] = iobuf[j];
80030d2: 231f movs r3, #31
80030d4: 18fb adds r3, r7, r3
80030d6: 781b ldrb r3, [r3, #0]
80030d8: 4ab9 ldr r2, [pc, #740] ; (80033c0 <HAL_UART_RxCpltCallback+0xb04>)
80030da: 5cd2 ldrb r2, [r2, r3]
80030dc: 2314 movs r3, #20
80030de: 18fb adds r3, r7, r3
80030e0: 705a strb r2, [r3, #1]
if(crc.sh == Crc16(j - 1))
80030e2: 2314 movs r3, #20
80030e4: 18fb adds r3, r7, r3
80030e6: 881c ldrh r4, [r3, #0]
80030e8: 231f movs r3, #31
80030ea: 18fb adds r3, r7, r3
80030ec: 781b ldrb r3, [r3, #0]
80030ee: b29b uxth r3, r3
80030f0: 3b01 subs r3, #1
80030f2: b29b uxth r3, r3
80030f4: 0018 movs r0, r3
80030f6: f7ff fb3b bl 8002770 <Crc16>
80030fa: 0003 movs r3, r0
80030fc: 429c cmp r4, r3
80030fe: d001 beq.n 8003104 <HAL_UART_RxCpltCallback+0x848>
8003100: f000 fd9f bl 8003c42 <HAL_UART_RxCpltCallback+0x1386>
if(clbr)
8003104: 4bb1 ldr r3, [pc, #708] ; (80033cc <HAL_UART_RxCpltCallback+0xb10>)
8003106: 781b ldrb r3, [r3, #0]
8003108: b2db uxtb r3, r3
800310a: 2b00 cmp r3, #0
800310c: d100 bne.n 8003110 <HAL_UART_RxCpltCallback+0x854>
800310e: e152 b.n 80033b6 <HAL_UART_RxCpltCallback+0xafa>
switch(iobuf[8])
8003110: 4bab ldr r3, [pc, #684] ; (80033c0 <HAL_UART_RxCpltCallback+0xb04>)
8003112: 7a1b ldrb r3, [r3, #8]
8003114: 2b64 cmp r3, #100 ; 0x64
8003116: d100 bne.n 800311a <HAL_UART_RxCpltCallback+0x85e>
8003118: e0d9 b.n 80032ce <HAL_UART_RxCpltCallback+0xa12>
800311a: dc05 bgt.n 8003128 <HAL_UART_RxCpltCallback+0x86c>
800311c: 2b01 cmp r3, #1
800311e: d00c beq.n 800313a <HAL_UART_RxCpltCallback+0x87e>
8003120: 2b0a cmp r3, #10
8003122: d100 bne.n 8003126 <HAL_UART_RxCpltCallback+0x86a>
8003124: e06c b.n 8003200 <HAL_UART_RxCpltCallback+0x944>
8003126: e142 b.n 80033ae <HAL_UART_RxCpltCallback+0xaf2>
8003128: 2b8a cmp r3, #138 ; 0x8a
800312a: d100 bne.n 800312e <HAL_UART_RxCpltCallback+0x872>
800312c: e09c b.n 8003268 <HAL_UART_RxCpltCallback+0x9ac>
800312e: 2be4 cmp r3, #228 ; 0xe4
8003130: d100 bne.n 8003134 <HAL_UART_RxCpltCallback+0x878>
8003132: e0ff b.n 8003334 <HAL_UART_RxCpltCallback+0xa78>
8003134: 2b81 cmp r3, #129 ; 0x81
8003136: d032 beq.n 800319e <HAL_UART_RxCpltCallback+0x8e2>
8003138: e139 b.n 80033ae <HAL_UART_RxCpltCallback+0xaf2>
if(CorrWord[pardata.IIN][pardata.IKU] < 4095)
800313a: 4ba5 ldr r3, [pc, #660] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
800313c: 88db ldrh r3, [r3, #6]
800313e: b29b uxth r3, r3
8003140: 0019 movs r1, r3
8003142: 4ba3 ldr r3, [pc, #652] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
8003144: 899b ldrh r3, [r3, #12]
8003146: b29b uxth r3, r3
8003148: 0018 movs r0, r3
800314a: 4aa2 ldr r2, [pc, #648] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
800314c: 000b movs r3, r1
800314e: 009b lsls r3, r3, #2
8003150: 185b adds r3, r3, r1
8003152: 009b lsls r3, r3, #2
8003154: 181b adds r3, r3, r0
8003156: 005b lsls r3, r3, #1
8003158: 5a9b ldrh r3, [r3, r2]
800315a: b29b uxth r3, r3
800315c: 4a9e ldr r2, [pc, #632] ; (80033d8 <HAL_UART_RxCpltCallback+0xb1c>)
800315e: 4293 cmp r3, r2
8003160: d900 bls.n 8003164 <HAL_UART_RxCpltCallback+0x8a8>
8003162: e119 b.n 8003398 <HAL_UART_RxCpltCallback+0xadc>
CorrWord[pardata.IIN][pardata.IKU]++;
8003164: 4b9a ldr r3, [pc, #616] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
8003166: 88db ldrh r3, [r3, #6]
8003168: b29b uxth r3, r3
800316a: 001a movs r2, r3
800316c: 4b98 ldr r3, [pc, #608] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
800316e: 899b ldrh r3, [r3, #12]
8003170: b29b uxth r3, r3
8003172: 0019 movs r1, r3
8003174: 4897 ldr r0, [pc, #604] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
8003176: 0013 movs r3, r2
8003178: 009b lsls r3, r3, #2
800317a: 189b adds r3, r3, r2
800317c: 009b lsls r3, r3, #2
800317e: 185b adds r3, r3, r1
8003180: 005b lsls r3, r3, #1
8003182: 5a1b ldrh r3, [r3, r0]
8003184: b29b uxth r3, r3
8003186: 3301 adds r3, #1
8003188: b29c uxth r4, r3
800318a: 4892 ldr r0, [pc, #584] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
800318c: 0013 movs r3, r2
800318e: 009b lsls r3, r3, #2
8003190: 189b adds r3, r3, r2
8003192: 009b lsls r3, r3, #2
8003194: 185b adds r3, r3, r1
8003196: 005b lsls r3, r3, #1
8003198: 1c22 adds r2, r4, #0
800319a: 521a strh r2, [r3, r0]
break;
800319c: e0fc b.n 8003398 <HAL_UART_RxCpltCallback+0xadc>
if(CorrWord[pardata.IIN][pardata.IKU] > 0)
800319e: 4b8c ldr r3, [pc, #560] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
80031a0: 88db ldrh r3, [r3, #6]
80031a2: b29b uxth r3, r3
80031a4: 0019 movs r1, r3
80031a6: 4b8a ldr r3, [pc, #552] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
80031a8: 899b ldrh r3, [r3, #12]
80031aa: b29b uxth r3, r3
80031ac: 0018 movs r0, r3
80031ae: 4a89 ldr r2, [pc, #548] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
80031b0: 000b movs r3, r1
80031b2: 009b lsls r3, r3, #2
80031b4: 185b adds r3, r3, r1
80031b6: 009b lsls r3, r3, #2
80031b8: 181b adds r3, r3, r0
80031ba: 005b lsls r3, r3, #1
80031bc: 5a9b ldrh r3, [r3, r2]
80031be: b29b uxth r3, r3
80031c0: 2b00 cmp r3, #0
80031c2: d100 bne.n 80031c6 <HAL_UART_RxCpltCallback+0x90a>
80031c4: e0ea b.n 800339c <HAL_UART_RxCpltCallback+0xae0>
CorrWord[pardata.IIN][pardata.IKU]--;
80031c6: 4b82 ldr r3, [pc, #520] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
80031c8: 88db ldrh r3, [r3, #6]
80031ca: b29b uxth r3, r3
80031cc: 001a movs r2, r3
80031ce: 4b80 ldr r3, [pc, #512] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
80031d0: 899b ldrh r3, [r3, #12]
80031d2: b29b uxth r3, r3
80031d4: 0019 movs r1, r3
80031d6: 487f ldr r0, [pc, #508] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
80031d8: 0013 movs r3, r2
80031da: 009b lsls r3, r3, #2
80031dc: 189b adds r3, r3, r2
80031de: 009b lsls r3, r3, #2
80031e0: 185b adds r3, r3, r1
80031e2: 005b lsls r3, r3, #1
80031e4: 5a1b ldrh r3, [r3, r0]
80031e6: b29b uxth r3, r3
80031e8: 3b01 subs r3, #1
80031ea: b29c uxth r4, r3
80031ec: 4879 ldr r0, [pc, #484] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
80031ee: 0013 movs r3, r2
80031f0: 009b lsls r3, r3, #2
80031f2: 189b adds r3, r3, r2
80031f4: 009b lsls r3, r3, #2
80031f6: 185b adds r3, r3, r1
80031f8: 005b lsls r3, r3, #1
80031fa: 1c22 adds r2, r4, #0
80031fc: 521a strh r2, [r3, r0]
break;
80031fe: e0cd b.n 800339c <HAL_UART_RxCpltCallback+0xae0>
if(CorrWord[pardata.IIN][pardata.IKU] < 4085)
8003200: 4b73 ldr r3, [pc, #460] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
8003202: 88db ldrh r3, [r3, #6]
8003204: b29b uxth r3, r3
8003206: 0019 movs r1, r3
8003208: 4b71 ldr r3, [pc, #452] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
800320a: 899b ldrh r3, [r3, #12]
800320c: b29b uxth r3, r3
800320e: 0018 movs r0, r3
8003210: 4a70 ldr r2, [pc, #448] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
8003212: 000b movs r3, r1
8003214: 009b lsls r3, r3, #2
8003216: 185b adds r3, r3, r1
8003218: 009b lsls r3, r3, #2
800321a: 181b adds r3, r3, r0
800321c: 005b lsls r3, r3, #1
800321e: 5a9b ldrh r3, [r3, r2]
8003220: b29b uxth r3, r3
8003222: 4a6e ldr r2, [pc, #440] ; (80033dc <HAL_UART_RxCpltCallback+0xb20>)
8003224: 4293 cmp r3, r2
8003226: d900 bls.n 800322a <HAL_UART_RxCpltCallback+0x96e>
8003228: e0ba b.n 80033a0 <HAL_UART_RxCpltCallback+0xae4>
CorrWord[pardata.IIN][pardata.IKU] += 10;
800322a: 4b69 ldr r3, [pc, #420] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
800322c: 88db ldrh r3, [r3, #6]
800322e: b29a uxth r2, r3
8003230: 0011 movs r1, r2
8003232: 4b67 ldr r3, [pc, #412] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
8003234: 899b ldrh r3, [r3, #12]
8003236: b29b uxth r3, r3
8003238: 001c movs r4, r3
800323a: 0010 movs r0, r2
800323c: 001d movs r5, r3
800323e: 4a65 ldr r2, [pc, #404] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
8003240: 0003 movs r3, r0
8003242: 009b lsls r3, r3, #2
8003244: 181b adds r3, r3, r0
8003246: 009b lsls r3, r3, #2
8003248: 195b adds r3, r3, r5
800324a: 005b lsls r3, r3, #1
800324c: 5a9b ldrh r3, [r3, r2]
800324e: b29b uxth r3, r3
8003250: 330a adds r3, #10
8003252: b298 uxth r0, r3
8003254: 4a5f ldr r2, [pc, #380] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
8003256: 000b movs r3, r1
8003258: 009b lsls r3, r3, #2
800325a: 185b adds r3, r3, r1
800325c: 009b lsls r3, r3, #2
800325e: 191b adds r3, r3, r4
8003260: 005b lsls r3, r3, #1
8003262: 1c01 adds r1, r0, #0
8003264: 5299 strh r1, [r3, r2]
break;
8003266: e09b b.n 80033a0 <HAL_UART_RxCpltCallback+0xae4>
if(CorrWord[pardata.IIN][pardata.IKU] > 10)
8003268: 4b59 ldr r3, [pc, #356] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
800326a: 88db ldrh r3, [r3, #6]
800326c: b29b uxth r3, r3
800326e: 0019 movs r1, r3
8003270: 4b57 ldr r3, [pc, #348] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
8003272: 899b ldrh r3, [r3, #12]
8003274: b29b uxth r3, r3
8003276: 0018 movs r0, r3
8003278: 4a56 ldr r2, [pc, #344] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
800327a: 000b movs r3, r1
800327c: 009b lsls r3, r3, #2
800327e: 185b adds r3, r3, r1
8003280: 009b lsls r3, r3, #2
8003282: 181b adds r3, r3, r0
8003284: 005b lsls r3, r3, #1
8003286: 5a9b ldrh r3, [r3, r2]
8003288: b29b uxth r3, r3
800328a: 2b0a cmp r3, #10
800328c: d800 bhi.n 8003290 <HAL_UART_RxCpltCallback+0x9d4>
800328e: e089 b.n 80033a4 <HAL_UART_RxCpltCallback+0xae8>
CorrWord[pardata.IIN][pardata.IKU] -= 10;
8003290: 4b4f ldr r3, [pc, #316] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
8003292: 88db ldrh r3, [r3, #6]
8003294: b29a uxth r2, r3
8003296: 0011 movs r1, r2
8003298: 4b4d ldr r3, [pc, #308] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
800329a: 899b ldrh r3, [r3, #12]
800329c: b29b uxth r3, r3
800329e: 001c movs r4, r3
80032a0: 0010 movs r0, r2
80032a2: 001d movs r5, r3
80032a4: 4a4b ldr r2, [pc, #300] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
80032a6: 0003 movs r3, r0
80032a8: 009b lsls r3, r3, #2
80032aa: 181b adds r3, r3, r0
80032ac: 009b lsls r3, r3, #2
80032ae: 195b adds r3, r3, r5
80032b0: 005b lsls r3, r3, #1
80032b2: 5a9b ldrh r3, [r3, r2]
80032b4: b29b uxth r3, r3
80032b6: 3b0a subs r3, #10
80032b8: b298 uxth r0, r3
80032ba: 4a46 ldr r2, [pc, #280] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
80032bc: 000b movs r3, r1
80032be: 009b lsls r3, r3, #2
80032c0: 185b adds r3, r3, r1
80032c2: 009b lsls r3, r3, #2
80032c4: 191b adds r3, r3, r4
80032c6: 005b lsls r3, r3, #1
80032c8: 1c01 adds r1, r0, #0
80032ca: 5299 strh r1, [r3, r2]
break;
80032cc: e06a b.n 80033a4 <HAL_UART_RxCpltCallback+0xae8>
if(CorrWord[pardata.IIN][pardata.IKU] < 3995)
80032ce: 4b40 ldr r3, [pc, #256] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
80032d0: 88db ldrh r3, [r3, #6]
80032d2: b29b uxth r3, r3
80032d4: 0019 movs r1, r3
80032d6: 4b3e ldr r3, [pc, #248] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
80032d8: 899b ldrh r3, [r3, #12]
80032da: b29b uxth r3, r3
80032dc: 0018 movs r0, r3
80032de: 4a3d ldr r2, [pc, #244] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
80032e0: 000b movs r3, r1
80032e2: 009b lsls r3, r3, #2
80032e4: 185b adds r3, r3, r1
80032e6: 009b lsls r3, r3, #2
80032e8: 181b adds r3, r3, r0
80032ea: 005b lsls r3, r3, #1
80032ec: 5a9b ldrh r3, [r3, r2]
80032ee: b29b uxth r3, r3
80032f0: 4a3b ldr r2, [pc, #236] ; (80033e0 <HAL_UART_RxCpltCallback+0xb24>)
80032f2: 4293 cmp r3, r2
80032f4: d858 bhi.n 80033a8 <HAL_UART_RxCpltCallback+0xaec>
CorrWord[pardata.IIN][pardata.IKU] += 100;
80032f6: 4b36 ldr r3, [pc, #216] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
80032f8: 88db ldrh r3, [r3, #6]
80032fa: b29a uxth r2, r3
80032fc: 0011 movs r1, r2
80032fe: 4b34 ldr r3, [pc, #208] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
8003300: 899b ldrh r3, [r3, #12]
8003302: b29b uxth r3, r3
8003304: 001c movs r4, r3
8003306: 0010 movs r0, r2
8003308: 001d movs r5, r3
800330a: 4a32 ldr r2, [pc, #200] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
800330c: 0003 movs r3, r0
800330e: 009b lsls r3, r3, #2
8003310: 181b adds r3, r3, r0
8003312: 009b lsls r3, r3, #2
8003314: 195b adds r3, r3, r5
8003316: 005b lsls r3, r3, #1
8003318: 5a9b ldrh r3, [r3, r2]
800331a: b29b uxth r3, r3
800331c: 3364 adds r3, #100 ; 0x64
800331e: b298 uxth r0, r3
8003320: 4a2c ldr r2, [pc, #176] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
8003322: 000b movs r3, r1
8003324: 009b lsls r3, r3, #2
8003326: 185b adds r3, r3, r1
8003328: 009b lsls r3, r3, #2
800332a: 191b adds r3, r3, r4
800332c: 005b lsls r3, r3, #1
800332e: 1c01 adds r1, r0, #0
8003330: 5299 strh r1, [r3, r2]
break;
8003332: e039 b.n 80033a8 <HAL_UART_RxCpltCallback+0xaec>
if(CorrWord[pardata.IIN][pardata.IKU] > 100)
8003334: 4b26 ldr r3, [pc, #152] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
8003336: 88db ldrh r3, [r3, #6]
8003338: b29b uxth r3, r3
800333a: 0019 movs r1, r3
800333c: 4b24 ldr r3, [pc, #144] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
800333e: 899b ldrh r3, [r3, #12]
8003340: b29b uxth r3, r3
8003342: 0018 movs r0, r3
8003344: 4a23 ldr r2, [pc, #140] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
8003346: 000b movs r3, r1
8003348: 009b lsls r3, r3, #2
800334a: 185b adds r3, r3, r1
800334c: 009b lsls r3, r3, #2
800334e: 181b adds r3, r3, r0
8003350: 005b lsls r3, r3, #1
8003352: 5a9b ldrh r3, [r3, r2]
8003354: b29b uxth r3, r3
8003356: 2b64 cmp r3, #100 ; 0x64
8003358: d928 bls.n 80033ac <HAL_UART_RxCpltCallback+0xaf0>
CorrWord[pardata.IIN][pardata.IKU] -= 100;
800335a: 4b1d ldr r3, [pc, #116] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
800335c: 88db ldrh r3, [r3, #6]
800335e: b29a uxth r2, r3
8003360: 0011 movs r1, r2
8003362: 4b1b ldr r3, [pc, #108] ; (80033d0 <HAL_UART_RxCpltCallback+0xb14>)
8003364: 899b ldrh r3, [r3, #12]
8003366: b29b uxth r3, r3
8003368: 001c movs r4, r3
800336a: 0010 movs r0, r2
800336c: 001d movs r5, r3
800336e: 4a19 ldr r2, [pc, #100] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
8003370: 0003 movs r3, r0
8003372: 009b lsls r3, r3, #2
8003374: 181b adds r3, r3, r0
8003376: 009b lsls r3, r3, #2
8003378: 195b adds r3, r3, r5
800337a: 005b lsls r3, r3, #1
800337c: 5a9b ldrh r3, [r3, r2]
800337e: b29b uxth r3, r3
8003380: 3b64 subs r3, #100 ; 0x64
8003382: b298 uxth r0, r3
8003384: 4a13 ldr r2, [pc, #76] ; (80033d4 <HAL_UART_RxCpltCallback+0xb18>)
8003386: 000b movs r3, r1
8003388: 009b lsls r3, r3, #2
800338a: 185b adds r3, r3, r1
800338c: 009b lsls r3, r3, #2
800338e: 191b adds r3, r3, r4
8003390: 005b lsls r3, r3, #1
8003392: 1c01 adds r1, r0, #0
8003394: 5299 strh r1, [r3, r2]
break;
8003396: e009 b.n 80033ac <HAL_UART_RxCpltCallback+0xaf0>
break;
8003398: 46c0 nop ; (mov r8, r8)
800339a: e008 b.n 80033ae <HAL_UART_RxCpltCallback+0xaf2>
break;
800339c: 46c0 nop ; (mov r8, r8)
800339e: e006 b.n 80033ae <HAL_UART_RxCpltCallback+0xaf2>
break;
80033a0: 46c0 nop ; (mov r8, r8)
80033a2: e004 b.n 80033ae <HAL_UART_RxCpltCallback+0xaf2>
break;
80033a4: 46c0 nop ; (mov r8, r8)
80033a6: e002 b.n 80033ae <HAL_UART_RxCpltCallback+0xaf2>
break;
80033a8: 46c0 nop ; (mov r8, r8)
80033aa: e000 b.n 80033ae <HAL_UART_RxCpltCallback+0xaf2>
break;
80033ac: 46c0 nop ; (mov r8, r8)
SetAndCorrect();
80033ae: f7fd ff5f bl 8001270 <SetAndCorrect>
wrCorr();
80033b2: f7fe fcdb bl 8001d6c <wrCorr>
for(j = 0; j < 6; j++) {
80033b6: 231f movs r3, #31
80033b8: 18fb adds r3, r7, r3
80033ba: 2200 movs r2, #0
80033bc: 701a strb r2, [r3, #0]
80033be: e022 b.n 8003406 <HAL_UART_RxCpltCallback+0xb4a>
80033c0: 2000028c .word 0x2000028c
80033c4: 20000188 .word 0x20000188
80033c8: 20000035 .word 0x20000035
80033cc: 20000034 .word 0x20000034
80033d0: 20000098 .word 0x20000098
80033d4: 20000048 .word 0x20000048
80033d8: 00000ffe .word 0x00000ffe
80033dc: 00000ff4 .word 0x00000ff4
80033e0: 00000f9a .word 0x00000f9a
tx[j] = iobuf[j];
80033e4: 231f movs r3, #31
80033e6: 18fb adds r3, r7, r3
80033e8: 781b ldrb r3, [r3, #0]
80033ea: 221f movs r2, #31
80033ec: 18ba adds r2, r7, r2
80033ee: 7812 ldrb r2, [r2, #0]
80033f0: 49de ldr r1, [pc, #888] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
80033f2: 5c89 ldrb r1, [r1, r2]
80033f4: 4ade ldr r2, [pc, #888] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
80033f6: 54d1 strb r1, [r2, r3]
for(j = 0; j < 6; j++) {
80033f8: 231f movs r3, #31
80033fa: 18fb adds r3, r7, r3
80033fc: 781a ldrb r2, [r3, #0]
80033fe: 231f movs r3, #31
8003400: 18fb adds r3, r7, r3
8003402: 3201 adds r2, #1
8003404: 701a strb r2, [r3, #0]
8003406: 231f movs r3, #31
8003408: 18fb adds r3, r7, r3
800340a: 781b ldrb r3, [r3, #0]
800340c: 2b05 cmp r3, #5
800340e: d9e9 bls.n 80033e4 <HAL_UART_RxCpltCallback+0xb28>
strtOut(6);
8003410: 2006 movs r0, #6
8003412: f7ff f961 bl 80026d8 <strtOut>
break;
8003416: f000 fc14 bl 8003c42 <HAL_UART_RxCpltCallback+0x1386>
if((regs.ch[0] > (5011 - addr.sh)) || (iobuf[6] != (regs.ch[0] << 1)))
800341a: 230c movs r3, #12
800341c: 18fb adds r3, r7, r3
800341e: 781b ldrb r3, [r3, #0]
8003420: 001a movs r2, r3
8003422: 2310 movs r3, #16
8003424: 18fb adds r3, r7, r3
8003426: 881b ldrh r3, [r3, #0]
8003428: 0019 movs r1, r3
800342a: 4bd2 ldr r3, [pc, #840] ; (8003774 <HAL_UART_RxCpltCallback+0xeb8>)
800342c: 1a5b subs r3, r3, r1
800342e: 429a cmp r2, r3
8003430: dc08 bgt.n 8003444 <HAL_UART_RxCpltCallback+0xb88>
8003432: 4bce ldr r3, [pc, #824] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003434: 799b ldrb r3, [r3, #6]
8003436: 001a movs r2, r3
8003438: 230c movs r3, #12
800343a: 18fb adds r3, r7, r3
800343c: 781b ldrb r3, [r3, #0]
800343e: 005b lsls r3, r3, #1
8003440: 429a cmp r2, r3
8003442: d012 beq.n 800346a <HAL_UART_RxCpltCallback+0xbae>
tx[0] = iobuf[0];
8003444: 4bc9 ldr r3, [pc, #804] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003446: 781a ldrb r2, [r3, #0]
8003448: 4bc9 ldr r3, [pc, #804] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
800344a: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
800344c: 4bc7 ldr r3, [pc, #796] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
800344e: 785b ldrb r3, [r3, #1]
8003450: 2280 movs r2, #128 ; 0x80
8003452: 4252 negs r2, r2
8003454: 4313 orrs r3, r2
8003456: b2da uxtb r2, r3
8003458: 4bc5 ldr r3, [pc, #788] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
800345a: 705a strb r2, [r3, #1]
tx[2] = 0x03;
800345c: 4bc4 ldr r3, [pc, #784] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
800345e: 2203 movs r2, #3
8003460: 709a strb r2, [r3, #2]
strtOut(3);
8003462: 2003 movs r0, #3
8003464: f7ff f938 bl 80026d8 <strtOut>
8003468: e0b6 b.n 80035d8 <HAL_UART_RxCpltCallback+0xd1c>
j = 8 + iobuf[6];
800346a: 4bc0 ldr r3, [pc, #768] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
800346c: 799a ldrb r2, [r3, #6]
800346e: 231f movs r3, #31
8003470: 18fb adds r3, r7, r3
8003472: 3208 adds r2, #8
8003474: 701a strb r2, [r3, #0]
if(iolen > j)
8003476: 4bc0 ldr r3, [pc, #768] ; (8003778 <HAL_UART_RxCpltCallback+0xebc>)
8003478: 781b ldrb r3, [r3, #0]
800347a: 221f movs r2, #31
800347c: 18ba adds r2, r7, r2
800347e: 7812 ldrb r2, [r2, #0]
8003480: 429a cmp r2, r3
8003482: d301 bcc.n 8003488 <HAL_UART_RxCpltCallback+0xbcc>
8003484: f000 fbdf bl 8003c46 <HAL_UART_RxCpltCallback+0x138a>
iolen = 0;
8003488: 4bbb ldr r3, [pc, #748] ; (8003778 <HAL_UART_RxCpltCallback+0xebc>)
800348a: 2200 movs r2, #0
800348c: 701a strb r2, [r3, #0]
crc.ch[0] = iobuf[j - 1];
800348e: 231f movs r3, #31
8003490: 18fb adds r3, r7, r3
8003492: 781b ldrb r3, [r3, #0]
8003494: 3b01 subs r3, #1
8003496: 4ab5 ldr r2, [pc, #724] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003498: 5cd2 ldrb r2, [r2, r3]
800349a: 2314 movs r3, #20
800349c: 18fb adds r3, r7, r3
800349e: 701a strb r2, [r3, #0]
crc.ch[1] = iobuf[j];
80034a0: 231f movs r3, #31
80034a2: 18fb adds r3, r7, r3
80034a4: 781b ldrb r3, [r3, #0]
80034a6: 4ab1 ldr r2, [pc, #708] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
80034a8: 5cd2 ldrb r2, [r2, r3]
80034aa: 2314 movs r3, #20
80034ac: 18fb adds r3, r7, r3
80034ae: 705a strb r2, [r3, #1]
if(crc.sh == Crc16(j - 1))
80034b0: 2314 movs r3, #20
80034b2: 18fb adds r3, r7, r3
80034b4: 881c ldrh r4, [r3, #0]
80034b6: 231f movs r3, #31
80034b8: 18fb adds r3, r7, r3
80034ba: 781b ldrb r3, [r3, #0]
80034bc: b29b uxth r3, r3
80034be: 3b01 subs r3, #1
80034c0: b29b uxth r3, r3
80034c2: 0018 movs r0, r3
80034c4: f7ff f954 bl 8002770 <Crc16>
80034c8: 0003 movs r3, r0
80034ca: 429c cmp r4, r3
80034cc: d001 beq.n 80034d2 <HAL_UART_RxCpltCallback+0xc16>
80034ce: f000 fbba bl 8003c46 <HAL_UART_RxCpltCallback+0x138a>
pch = (uint8_t *) &pardata.IIN + ((addr.sh - 5001) << 1);
80034d2: 2310 movs r3, #16
80034d4: 18fb adds r3, r7, r3
80034d6: 881b ldrh r3, [r3, #0]
80034d8: 4aa8 ldr r2, [pc, #672] ; (800377c <HAL_UART_RxCpltCallback+0xec0>)
80034da: 4694 mov ip, r2
80034dc: 4463 add r3, ip
80034de: 005b lsls r3, r3, #1
80034e0: 001a movs r2, r3
80034e2: 4ba7 ldr r3, [pc, #668] ; (8003780 <HAL_UART_RxCpltCallback+0xec4>)
80034e4: 18d3 adds r3, r2, r3
80034e6: 61bb str r3, [r7, #24]
for(j = 0; j < iobuf[6]; j++)
80034e8: 231f movs r3, #31
80034ea: 18fb adds r3, r7, r3
80034ec: 2200 movs r2, #0
80034ee: 701a strb r2, [r3, #0]
80034f0: e016 b.n 8003520 <HAL_UART_RxCpltCallback+0xc64>
*(pch + (j ^ 1)) = iobuf[j + 7];
80034f2: 231f movs r3, #31
80034f4: 18fb adds r3, r7, r3
80034f6: 781b ldrb r3, [r3, #0]
80034f8: 2201 movs r2, #1
80034fa: 4053 eors r3, r2
80034fc: b2db uxtb r3, r3
80034fe: 001a movs r2, r3
8003500: 69bb ldr r3, [r7, #24]
8003502: 189b adds r3, r3, r2
8003504: 221f movs r2, #31
8003506: 18ba adds r2, r7, r2
8003508: 7812 ldrb r2, [r2, #0]
800350a: 3207 adds r2, #7
800350c: 4997 ldr r1, [pc, #604] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
800350e: 5c8a ldrb r2, [r1, r2]
8003510: 701a strb r2, [r3, #0]
for(j = 0; j < iobuf[6]; j++)
8003512: 231f movs r3, #31
8003514: 18fb adds r3, r7, r3
8003516: 781a ldrb r2, [r3, #0]
8003518: 231f movs r3, #31
800351a: 18fb adds r3, r7, r3
800351c: 3201 adds r2, #1
800351e: 701a strb r2, [r3, #0]
8003520: 4b92 ldr r3, [pc, #584] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003522: 799b ldrb r3, [r3, #6]
8003524: 221f movs r2, #31
8003526: 18ba adds r2, r7, r2
8003528: 7812 ldrb r2, [r2, #0]
800352a: 429a cmp r2, r3
800352c: d3e1 bcc.n 80034f2 <HAL_UART_RxCpltCallback+0xc36>
if((pardata.IIN > ICP) || (pardata.IKU > Ku1000) || (pardata.IFV > Hp10) || (pardata.IFN > Lp100000) || (pardata.VAL > mV))
800352e: 4b95 ldr r3, [pc, #596] ; (8003784 <HAL_UART_RxCpltCallback+0xec8>)
8003530: 88db ldrh r3, [r3, #6]
8003532: b29b uxth r3, r3
8003534: 2b01 cmp r3, #1
8003536: d813 bhi.n 8003560 <HAL_UART_RxCpltCallback+0xca4>
8003538: 4b92 ldr r3, [pc, #584] ; (8003784 <HAL_UART_RxCpltCallback+0xec8>)
800353a: 899b ldrh r3, [r3, #12]
800353c: b29b uxth r3, r3
800353e: 2b0c cmp r3, #12
8003540: d80e bhi.n 8003560 <HAL_UART_RxCpltCallback+0xca4>
8003542: 4b90 ldr r3, [pc, #576] ; (8003784 <HAL_UART_RxCpltCallback+0xec8>)
8003544: 891b ldrh r3, [r3, #8]
8003546: b29b uxth r3, r3
8003548: 2b04 cmp r3, #4
800354a: d809 bhi.n 8003560 <HAL_UART_RxCpltCallback+0xca4>
800354c: 4b8d ldr r3, [pc, #564] ; (8003784 <HAL_UART_RxCpltCallback+0xec8>)
800354e: 895b ldrh r3, [r3, #10]
8003550: b29b uxth r3, r3
8003552: 2b07 cmp r3, #7
8003554: d804 bhi.n 8003560 <HAL_UART_RxCpltCallback+0xca4>
8003556: 4b8b ldr r3, [pc, #556] ; (8003784 <HAL_UART_RxCpltCallback+0xec8>)
8003558: 8b1b ldrh r3, [r3, #24]
800355a: b29b uxth r3, r3
800355c: 2b08 cmp r3, #8
800355e: d914 bls.n 800358a <HAL_UART_RxCpltCallback+0xcce>
rdCorr();
8003560: f7fe fc62 bl 8001e28 <rdCorr>
tx[0] = iobuf[0];
8003564: 4b81 ldr r3, [pc, #516] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003566: 781a ldrb r2, [r3, #0]
8003568: 4b81 ldr r3, [pc, #516] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
800356a: 701a strb r2, [r3, #0]
tx[1] = (iobuf[1] | 0x80);
800356c: 4b7f ldr r3, [pc, #508] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
800356e: 785b ldrb r3, [r3, #1]
8003570: 2280 movs r2, #128 ; 0x80
8003572: 4252 negs r2, r2
8003574: 4313 orrs r3, r2
8003576: b2da uxtb r2, r3
8003578: 4b7d ldr r3, [pc, #500] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
800357a: 705a strb r2, [r3, #1]
tx[2] = 0x03;
800357c: 4b7c ldr r3, [pc, #496] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
800357e: 2203 movs r2, #3
8003580: 709a strb r2, [r3, #2]
strtOut(3);
8003582: 2003 movs r0, #3
8003584: f7ff f8a8 bl 80026d8 <strtOut>
8003588: e026 b.n 80035d8 <HAL_UART_RxCpltCallback+0xd1c>
needSave = true;
800358a: 4b7f ldr r3, [pc, #508] ; (8003788 <HAL_UART_RxCpltCallback+0xecc>)
800358c: 2201 movs r2, #1
800358e: 701a strb r2, [r3, #0]
if(iobuf[0])
8003590: 4b76 ldr r3, [pc, #472] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003592: 781b ldrb r3, [r3, #0]
8003594: 2b00 cmp r3, #0
8003596: d100 bne.n 800359a <HAL_UART_RxCpltCallback+0xcde>
8003598: e355 b.n 8003c46 <HAL_UART_RxCpltCallback+0x138a>
for(j = 0; j < 6; j++) {
800359a: 231f movs r3, #31
800359c: 18fb adds r3, r7, r3
800359e: 2200 movs r2, #0
80035a0: 701a strb r2, [r3, #0]
80035a2: e010 b.n 80035c6 <HAL_UART_RxCpltCallback+0xd0a>
tx[j] = iobuf[j];
80035a4: 231f movs r3, #31
80035a6: 18fb adds r3, r7, r3
80035a8: 781b ldrb r3, [r3, #0]
80035aa: 221f movs r2, #31
80035ac: 18ba adds r2, r7, r2
80035ae: 7812 ldrb r2, [r2, #0]
80035b0: 496e ldr r1, [pc, #440] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
80035b2: 5c89 ldrb r1, [r1, r2]
80035b4: 4a6e ldr r2, [pc, #440] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
80035b6: 54d1 strb r1, [r2, r3]
for(j = 0; j < 6; j++) {
80035b8: 231f movs r3, #31
80035ba: 18fb adds r3, r7, r3
80035bc: 781a ldrb r2, [r3, #0]
80035be: 231f movs r3, #31
80035c0: 18fb adds r3, r7, r3
80035c2: 3201 adds r2, #1
80035c4: 701a strb r2, [r3, #0]
80035c6: 231f movs r3, #31
80035c8: 18fb adds r3, r7, r3
80035ca: 781b ldrb r3, [r3, #0]
80035cc: 2b05 cmp r3, #5
80035ce: d9e9 bls.n 80035a4 <HAL_UART_RxCpltCallback+0xce8>
strtOut(6);
80035d0: 2006 movs r0, #6
80035d2: f7ff f881 bl 80026d8 <strtOut>
break;
80035d6: e336 b.n 8003c46 <HAL_UART_RxCpltCallback+0x138a>
80035d8: e335 b.n 8003c46 <HAL_UART_RxCpltCallback+0x138a>
tmp = 3;
80035da: 231e movs r3, #30
80035dc: 18fb adds r3, r7, r3
80035de: 2203 movs r2, #3
80035e0: 701a strb r2, [r3, #0]
tmp1 = 2;
80035e2: 231d movs r3, #29
80035e4: 18fb adds r3, r7, r3
80035e6: 2202 movs r2, #2
80035e8: 701a strb r2, [r3, #0]
if(addr.sh == 7002)
80035ea: 2310 movs r3, #16
80035ec: 18fb adds r3, r7, r3
80035ee: 881b ldrh r3, [r3, #0]
80035f0: 4a66 ldr r2, [pc, #408] ; (800378c <HAL_UART_RxCpltCallback+0xed0>)
80035f2: 4293 cmp r3, r2
80035f4: d10a bne.n 800360c <HAL_UART_RxCpltCallback+0xd50>
tmp <<= 1;
80035f6: 231e movs r3, #30
80035f8: 18fa adds r2, r7, r3
80035fa: 231e movs r3, #30
80035fc: 18fb adds r3, r7, r3
80035fe: 781b ldrb r3, [r3, #0]
8003600: 18db adds r3, r3, r3
8003602: 7013 strb r3, [r2, #0]
tmp1 = 1;
8003604: 231d movs r3, #29
8003606: 18fb adds r3, r7, r3
8003608: 2201 movs r2, #1
800360a: 701a strb r2, [r3, #0]
if((regs.ch[0] > tmp) || (iobuf[6] != (regs.ch[0] << tmp1)))
800360c: 230c movs r3, #12
800360e: 18fb adds r3, r7, r3
8003610: 781b ldrb r3, [r3, #0]
8003612: 221e movs r2, #30
8003614: 18ba adds r2, r7, r2
8003616: 7812 ldrb r2, [r2, #0]
8003618: 429a cmp r2, r3
800361a: d30d bcc.n 8003638 <HAL_UART_RxCpltCallback+0xd7c>
800361c: 4b53 ldr r3, [pc, #332] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
800361e: 799b ldrb r3, [r3, #6]
8003620: 001a movs r2, r3
8003622: 230c movs r3, #12
8003624: 18fb adds r3, r7, r3
8003626: 781b ldrb r3, [r3, #0]
8003628: 0019 movs r1, r3
800362a: 231d movs r3, #29
800362c: 18fb adds r3, r7, r3
800362e: 781b ldrb r3, [r3, #0]
8003630: 4099 lsls r1, r3
8003632: 000b movs r3, r1
8003634: 429a cmp r2, r3
8003636: d012 beq.n 800365e <HAL_UART_RxCpltCallback+0xda2>
tx[0] = iobuf[0];
8003638: 4b4c ldr r3, [pc, #304] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
800363a: 781a ldrb r2, [r3, #0]
800363c: 4b4c ldr r3, [pc, #304] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
800363e: 701a strb r2, [r3, #0]
tx[1] |= 0x80; //модификация кода функции на ошибку
8003640: 4b4b ldr r3, [pc, #300] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
8003642: 785b ldrb r3, [r3, #1]
8003644: 2280 movs r2, #128 ; 0x80
8003646: 4252 negs r2, r2
8003648: 4313 orrs r3, r2
800364a: b2da uxtb r2, r3
800364c: 4b48 ldr r3, [pc, #288] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
800364e: 705a strb r2, [r3, #1]
tx[2] = 0x03; //Адрес данных указанный в запросе не доступен
8003650: 4b47 ldr r3, [pc, #284] ; (8003770 <HAL_UART_RxCpltCallback+0xeb4>)
8003652: 2203 movs r2, #3
8003654: 709a strb r2, [r3, #2]
strtOut(3);
8003656: 2003 movs r0, #3
8003658: f7ff f83e bl 80026d8 <strtOut>
break;
800365c: e2f5 b.n 8003c4a <HAL_UART_RxCpltCallback+0x138e>
j = 8 + iobuf[6];
800365e: 4b43 ldr r3, [pc, #268] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003660: 799a ldrb r2, [r3, #6]
8003662: 231f movs r3, #31
8003664: 18fb adds r3, r7, r3
8003666: 3208 adds r2, #8
8003668: 701a strb r2, [r3, #0]
if(iolen > j)
800366a: 4b43 ldr r3, [pc, #268] ; (8003778 <HAL_UART_RxCpltCallback+0xebc>)
800366c: 781b ldrb r3, [r3, #0]
800366e: 221f movs r2, #31
8003670: 18ba adds r2, r7, r2
8003672: 7812 ldrb r2, [r2, #0]
8003674: 429a cmp r2, r3
8003676: d300 bcc.n 800367a <HAL_UART_RxCpltCallback+0xdbe>
8003678: e2e7 b.n 8003c4a <HAL_UART_RxCpltCallback+0x138e>
crc.ch[0] = iobuf[j - 1];
800367a: 231f movs r3, #31
800367c: 18fb adds r3, r7, r3
800367e: 781b ldrb r3, [r3, #0]
8003680: 3b01 subs r3, #1
8003682: 4a3a ldr r2, [pc, #232] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003684: 5cd2 ldrb r2, [r2, r3]
8003686: 2314 movs r3, #20
8003688: 18fb adds r3, r7, r3
800368a: 701a strb r2, [r3, #0]
crc.ch[1] = iobuf[j];
800368c: 231f movs r3, #31
800368e: 18fb adds r3, r7, r3
8003690: 781b ldrb r3, [r3, #0]
8003692: 4a36 ldr r2, [pc, #216] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003694: 5cd2 ldrb r2, [r2, r3]
8003696: 2314 movs r3, #20
8003698: 18fb adds r3, r7, r3
800369a: 705a strb r2, [r3, #1]
if(crc.sh == Crc16(j - 1))
800369c: 2314 movs r3, #20
800369e: 18fb adds r3, r7, r3
80036a0: 881c ldrh r4, [r3, #0]
80036a2: 231f movs r3, #31
80036a4: 18fb adds r3, r7, r3
80036a6: 781b ldrb r3, [r3, #0]
80036a8: b29b uxth r3, r3
80036aa: 3b01 subs r3, #1
80036ac: b29b uxth r3, r3
80036ae: 0018 movs r0, r3
80036b0: f7ff f85e bl 8002770 <Crc16>
80036b4: 0003 movs r3, r0
80036b6: 429c cmp r4, r3
80036b8: d000 beq.n 80036bc <HAL_UART_RxCpltCallback+0xe00>
80036ba: e2c6 b.n 8003c4a <HAL_UART_RxCpltCallback+0x138e>
if(iobuf[6] == 4)
80036bc: 4b2b ldr r3, [pc, #172] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
80036be: 799b ldrb r3, [r3, #6]
80036c0: 2b04 cmp r3, #4
80036c2: d128 bne.n 8003716 <HAL_UART_RxCpltCallback+0xe5a>
for(j = 0; j < 4; j++)
80036c4: 231f movs r3, #31
80036c6: 18fb adds r3, r7, r3
80036c8: 2200 movs r2, #0
80036ca: 701a strb r2, [r3, #0]
80036cc: e014 b.n 80036f8 <HAL_UART_RxCpltCallback+0xe3c>
f.ch[3 - j] = iobuf[7 + j];
80036ce: 231f movs r3, #31
80036d0: 18fb adds r3, r7, r3
80036d2: 781b ldrb r3, [r3, #0]
80036d4: 2203 movs r2, #3
80036d6: 1ad3 subs r3, r2, r3
80036d8: 221f movs r2, #31
80036da: 18ba adds r2, r7, r2
80036dc: 7812 ldrb r2, [r2, #0]
80036de: 3207 adds r2, #7
80036e0: 4922 ldr r1, [pc, #136] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
80036e2: 5c89 ldrb r1, [r1, r2]
80036e4: 2208 movs r2, #8
80036e6: 18ba adds r2, r7, r2
80036e8: 54d1 strb r1, [r2, r3]
for(j = 0; j < 4; j++)
80036ea: 231f movs r3, #31
80036ec: 18fb adds r3, r7, r3
80036ee: 781a ldrb r2, [r3, #0]
80036f0: 231f movs r3, #31
80036f2: 18fb adds r3, r7, r3
80036f4: 3201 adds r2, #1
80036f6: 701a strb r2, [r3, #0]
80036f8: 231f movs r3, #31
80036fa: 18fb adds r3, r7, r3
80036fc: 781b ldrb r3, [r3, #0]
80036fe: 2b03 cmp r3, #3
8003700: d9e5 bls.n 80036ce <HAL_UART_RxCpltCallback+0xe12>
pardata.KCOND = f.fl;
8003702: 68ba ldr r2, [r7, #8]
8003704: 4b1f ldr r3, [pc, #124] ; (8003784 <HAL_UART_RxCpltCallback+0xec8>)
8003706: 61da str r2, [r3, #28]
needSave = true;
8003708: 4b1f ldr r3, [pc, #124] ; (8003788 <HAL_UART_RxCpltCallback+0xecc>)
800370a: 2201 movs r2, #1
800370c: 701a strb r2, [r3, #0]
strtOut(6);
800370e: 2006 movs r0, #6
8003710: f7fe ffe2 bl 80026d8 <strtOut>
break;
8003714: e299 b.n 8003c4a <HAL_UART_RxCpltCallback+0x138e>
if(iobuf[6] == 8)
8003716: 4b15 ldr r3, [pc, #84] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
8003718: 799b ldrb r3, [r3, #6]
800371a: 2b08 cmp r3, #8
800371c: d15c bne.n 80037d8 <HAL_UART_RxCpltCallback+0xf1c>
for(j = 0; j < 4; j++)
800371e: 231f movs r3, #31
8003720: 18fb adds r3, r7, r3
8003722: 2200 movs r2, #0
8003724: 701a strb r2, [r3, #0]
8003726: e014 b.n 8003752 <HAL_UART_RxCpltCallback+0xe96>
f.ch[3 - j] = iobuf[7 + j];
8003728: 231f movs r3, #31
800372a: 18fb adds r3, r7, r3
800372c: 781b ldrb r3, [r3, #0]
800372e: 2203 movs r2, #3
8003730: 1ad3 subs r3, r2, r3
8003732: 221f movs r2, #31
8003734: 18ba adds r2, r7, r2
8003736: 7812 ldrb r2, [r2, #0]
8003738: 3207 adds r2, #7
800373a: 490c ldr r1, [pc, #48] ; (800376c <HAL_UART_RxCpltCallback+0xeb0>)
800373c: 5c89 ldrb r1, [r1, r2]
800373e: 2208 movs r2, #8
8003740: 18ba adds r2, r7, r2
8003742: 54d1 strb r1, [r2, r3]
for(j = 0; j < 4; j++)
8003744: 231f movs r3, #31
8003746: 18fb adds r3, r7, r3
8003748: 781a ldrb r2, [r3, #0]
800374a: 231f movs r3, #31
800374c: 18fb adds r3, r7, r3
800374e: 3201 adds r2, #1
8003750: 701a strb r2, [r3, #0]
8003752: 231f movs r3, #31
8003754: 18fb adds r3, r7, r3
8003756: 781b ldrb r3, [r3, #0]
8003758: 2b03 cmp r3, #3
800375a: d9e5 bls.n 8003728 <HAL_UART_RxCpltCallback+0xe6c>
pardata.KCOND = f.fl;
800375c: 68ba ldr r2, [r7, #8]
800375e: 4b09 ldr r3, [pc, #36] ; (8003784 <HAL_UART_RxCpltCallback+0xec8>)
8003760: 61da str r2, [r3, #28]
for(j = 0; j < 4; j++)
8003762: 231f movs r3, #31
8003764: 18fb adds r3, r7, r3
8003766: 2200 movs r2, #0
8003768: 701a strb r2, [r3, #0]
800376a: e026 b.n 80037ba <HAL_UART_RxCpltCallback+0xefe>
800376c: 2000028c .word 0x2000028c
8003770: 20000188 .word 0x20000188
8003774: 00001393 .word 0x00001393
8003778: 20000035 .word 0x20000035
800377c: ffffec77 .word 0xffffec77
8003780: 2000009e .word 0x2000009e
8003784: 20000098 .word 0x20000098
8003788: 20000037 .word 0x20000037
800378c: 00001b5a .word 0x00001b5a
f.ch[3 - j] = iobuf[11 + j];
8003790: 231f movs r3, #31
8003792: 18fb adds r3, r7, r3
8003794: 781b ldrb r3, [r3, #0]
8003796: 2203 movs r2, #3
8003798: 1ad3 subs r3, r2, r3
800379a: 221f movs r2, #31
800379c: 18ba adds r2, r7, r2
800379e: 7812 ldrb r2, [r2, #0]
80037a0: 320b adds r2, #11
80037a2: 49df ldr r1, [pc, #892] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
80037a4: 5c89 ldrb r1, [r1, r2]
80037a6: 2208 movs r2, #8
80037a8: 18ba adds r2, r7, r2
80037aa: 54d1 strb r1, [r2, r3]
for(j = 0; j < 4; j++)
80037ac: 231f movs r3, #31
80037ae: 18fb adds r3, r7, r3
80037b0: 781a ldrb r2, [r3, #0]
80037b2: 231f movs r3, #31
80037b4: 18fb adds r3, r7, r3
80037b6: 3201 adds r2, #1
80037b8: 701a strb r2, [r3, #0]
80037ba: 231f movs r3, #31
80037bc: 18fb adds r3, r7, r3
80037be: 781b ldrb r3, [r3, #0]
80037c0: 2b03 cmp r3, #3
80037c2: d9e5 bls.n 8003790 <HAL_UART_RxCpltCallback+0xed4>
pardata.SENS = f.fl;
80037c4: 68ba ldr r2, [r7, #8]
80037c6: 4bd7 ldr r3, [pc, #860] ; (8003b24 <HAL_UART_RxCpltCallback+0x1268>)
80037c8: 621a str r2, [r3, #32]
needSave = true;
80037ca: 4bd7 ldr r3, [pc, #860] ; (8003b28 <HAL_UART_RxCpltCallback+0x126c>)
80037cc: 2201 movs r2, #1
80037ce: 701a strb r2, [r3, #0]
strtOut(6);
80037d0: 2006 movs r0, #6
80037d2: f7fe ff81 bl 80026d8 <strtOut>
break;
80037d6: e238 b.n 8003c4a <HAL_UART_RxCpltCallback+0x138e>
if(iobuf[6] == 12)
80037d8: 4bd1 ldr r3, [pc, #836] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
80037da: 799b ldrb r3, [r3, #6]
80037dc: 2b0c cmp r3, #12
80037de: d16c bne.n 80038ba <HAL_UART_RxCpltCallback+0xffe>
for(j = 0; j < 4; j++)
80037e0: 231f movs r3, #31
80037e2: 18fb adds r3, r7, r3
80037e4: 2200 movs r2, #0
80037e6: 701a strb r2, [r3, #0]
80037e8: e014 b.n 8003814 <HAL_UART_RxCpltCallback+0xf58>
f.ch[3 - j] = iobuf[7 + j];
80037ea: 231f movs r3, #31
80037ec: 18fb adds r3, r7, r3
80037ee: 781b ldrb r3, [r3, #0]
80037f0: 2203 movs r2, #3
80037f2: 1ad3 subs r3, r2, r3
80037f4: 221f movs r2, #31
80037f6: 18ba adds r2, r7, r2
80037f8: 7812 ldrb r2, [r2, #0]
80037fa: 3207 adds r2, #7
80037fc: 49c8 ldr r1, [pc, #800] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
80037fe: 5c89 ldrb r1, [r1, r2]
8003800: 2208 movs r2, #8
8003802: 18ba adds r2, r7, r2
8003804: 54d1 strb r1, [r2, r3]
for(j = 0; j < 4; j++)
8003806: 231f movs r3, #31
8003808: 18fb adds r3, r7, r3
800380a: 781a ldrb r2, [r3, #0]
800380c: 231f movs r3, #31
800380e: 18fb adds r3, r7, r3
8003810: 3201 adds r2, #1
8003812: 701a strb r2, [r3, #0]
8003814: 231f movs r3, #31
8003816: 18fb adds r3, r7, r3
8003818: 781b ldrb r3, [r3, #0]
800381a: 2b03 cmp r3, #3
800381c: d9e5 bls.n 80037ea <HAL_UART_RxCpltCallback+0xf2e>
pardata.KCOND = f.fl;
800381e: 68ba ldr r2, [r7, #8]
8003820: 4bc0 ldr r3, [pc, #768] ; (8003b24 <HAL_UART_RxCpltCallback+0x1268>)
8003822: 61da str r2, [r3, #28]
for(j = 0; j < 4; j++)
8003824: 231f movs r3, #31
8003826: 18fb adds r3, r7, r3
8003828: 2200 movs r2, #0
800382a: 701a strb r2, [r3, #0]
800382c: e014 b.n 8003858 <HAL_UART_RxCpltCallback+0xf9c>
f.ch[3 - j] = iobuf[11 + j];
800382e: 231f movs r3, #31
8003830: 18fb adds r3, r7, r3
8003832: 781b ldrb r3, [r3, #0]
8003834: 2203 movs r2, #3
8003836: 1ad3 subs r3, r2, r3
8003838: 221f movs r2, #31
800383a: 18ba adds r2, r7, r2
800383c: 7812 ldrb r2, [r2, #0]
800383e: 320b adds r2, #11
8003840: 49b7 ldr r1, [pc, #732] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003842: 5c89 ldrb r1, [r1, r2]
8003844: 2208 movs r2, #8
8003846: 18ba adds r2, r7, r2
8003848: 54d1 strb r1, [r2, r3]
for(j = 0; j < 4; j++)
800384a: 231f movs r3, #31
800384c: 18fb adds r3, r7, r3
800384e: 781a ldrb r2, [r3, #0]
8003850: 231f movs r3, #31
8003852: 18fb adds r3, r7, r3
8003854: 3201 adds r2, #1
8003856: 701a strb r2, [r3, #0]
8003858: 231f movs r3, #31
800385a: 18fb adds r3, r7, r3
800385c: 781b ldrb r3, [r3, #0]
800385e: 2b03 cmp r3, #3
8003860: d9e5 bls.n 800382e <HAL_UART_RxCpltCallback+0xf72>
pardata.SENS = f.fl;
8003862: 68ba ldr r2, [r7, #8]
8003864: 4baf ldr r3, [pc, #700] ; (8003b24 <HAL_UART_RxCpltCallback+0x1268>)
8003866: 621a str r2, [r3, #32]
for(j = 0; j < 4; j++)
8003868: 231f movs r3, #31
800386a: 18fb adds r3, r7, r3
800386c: 2200 movs r2, #0
800386e: 701a strb r2, [r3, #0]
8003870: e014 b.n 800389c <HAL_UART_RxCpltCallback+0xfe0>
f.ch[3 - j] = iobuf[15 + j];
8003872: 231f movs r3, #31
8003874: 18fb adds r3, r7, r3
8003876: 781b ldrb r3, [r3, #0]
8003878: 2203 movs r2, #3
800387a: 1ad3 subs r3, r2, r3
800387c: 221f movs r2, #31
800387e: 18ba adds r2, r7, r2
8003880: 7812 ldrb r2, [r2, #0]
8003882: 320f adds r2, #15
8003884: 49a6 ldr r1, [pc, #664] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003886: 5c89 ldrb r1, [r1, r2]
8003888: 2208 movs r2, #8
800388a: 18ba adds r2, r7, r2
800388c: 54d1 strb r1, [r2, r3]
for(j = 0; j < 4; j++)
800388e: 231f movs r3, #31
8003890: 18fb adds r3, r7, r3
8003892: 781a ldrb r2, [r3, #0]
8003894: 231f movs r3, #31
8003896: 18fb adds r3, r7, r3
8003898: 3201 adds r2, #1
800389a: 701a strb r2, [r3, #0]
800389c: 231f movs r3, #31
800389e: 18fb adds r3, r7, r3
80038a0: 781b ldrb r3, [r3, #0]
80038a2: 2b03 cmp r3, #3
80038a4: d9e5 bls.n 8003872 <HAL_UART_RxCpltCallback+0xfb6>
pardata.ACCEL = f.fl;
80038a6: 68ba ldr r2, [r7, #8]
80038a8: 4b9e ldr r3, [pc, #632] ; (8003b24 <HAL_UART_RxCpltCallback+0x1268>)
80038aa: 625a str r2, [r3, #36] ; 0x24
needSave = true;
80038ac: 4b9e ldr r3, [pc, #632] ; (8003b28 <HAL_UART_RxCpltCallback+0x126c>)
80038ae: 2201 movs r2, #1
80038b0: 701a strb r2, [r3, #0]
strtOut(6);
80038b2: 2006 movs r0, #6
80038b4: f7fe ff10 bl 80026d8 <strtOut>
break;
80038b8: e1c7 b.n 8003c4a <HAL_UART_RxCpltCallback+0x138e>
tx[0] = iobuf[0];
80038ba: 4b99 ldr r3, [pc, #612] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
80038bc: 781a ldrb r2, [r3, #0]
80038be: 4b9b ldr r3, [pc, #620] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
80038c0: 701a strb r2, [r3, #0]
tx[1] |= 0x80; //модификация кода функции на ошибку
80038c2: 4b9a ldr r3, [pc, #616] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
80038c4: 785b ldrb r3, [r3, #1]
80038c6: 2280 movs r2, #128 ; 0x80
80038c8: 4252 negs r2, r2
80038ca: 4313 orrs r3, r2
80038cc: b2da uxtb r2, r3
80038ce: 4b97 ldr r3, [pc, #604] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
80038d0: 705a strb r2, [r3, #1]
tx[2] = 0x03; //Адрес данных указанный в запросе не доступен
80038d2: 4b96 ldr r3, [pc, #600] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
80038d4: 2203 movs r2, #3
80038d6: 709a strb r2, [r3, #2]
strtOut(3);
80038d8: 2003 movs r0, #3
80038da: f7fe fefd bl 80026d8 <strtOut>
break;
80038de: e1b4 b.n 8003c4a <HAL_UART_RxCpltCallback+0x138e>
tmp = 2;
80038e0: 231e movs r3, #30
80038e2: 18fb adds r3, r7, r3
80038e4: 2202 movs r2, #2
80038e6: 701a strb r2, [r3, #0]
tmp1 = 2;
80038e8: 231d movs r3, #29
80038ea: 18fb adds r3, r7, r3
80038ec: 2202 movs r2, #2
80038ee: 701a strb r2, [r3, #0]
if(addr.sh == 7004)
80038f0: 2310 movs r3, #16
80038f2: 18fb adds r3, r7, r3
80038f4: 881b ldrh r3, [r3, #0]
80038f6: 4a8e ldr r2, [pc, #568] ; (8003b30 <HAL_UART_RxCpltCallback+0x1274>)
80038f8: 4293 cmp r3, r2
80038fa: d10a bne.n 8003912 <HAL_UART_RxCpltCallback+0x1056>
tmp <<= 1;
80038fc: 231e movs r3, #30
80038fe: 18fa adds r2, r7, r3
8003900: 231e movs r3, #30
8003902: 18fb adds r3, r7, r3
8003904: 781b ldrb r3, [r3, #0]
8003906: 18db adds r3, r3, r3
8003908: 7013 strb r3, [r2, #0]
tmp1 = 1;
800390a: 231d movs r3, #29
800390c: 18fb adds r3, r7, r3
800390e: 2201 movs r2, #1
8003910: 701a strb r2, [r3, #0]
if((regs.ch[0] > tmp) || (iobuf[6] != (regs.ch[0] << tmp1)))
8003912: 230c movs r3, #12
8003914: 18fb adds r3, r7, r3
8003916: 781b ldrb r3, [r3, #0]
8003918: 221e movs r2, #30
800391a: 18ba adds r2, r7, r2
800391c: 7812 ldrb r2, [r2, #0]
800391e: 429a cmp r2, r3
8003920: d30d bcc.n 800393e <HAL_UART_RxCpltCallback+0x1082>
8003922: 4b7f ldr r3, [pc, #508] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003924: 799b ldrb r3, [r3, #6]
8003926: 001a movs r2, r3
8003928: 230c movs r3, #12
800392a: 18fb adds r3, r7, r3
800392c: 781b ldrb r3, [r3, #0]
800392e: 0019 movs r1, r3
8003930: 231d movs r3, #29
8003932: 18fb adds r3, r7, r3
8003934: 781b ldrb r3, [r3, #0]
8003936: 4099 lsls r1, r3
8003938: 000b movs r3, r1
800393a: 429a cmp r2, r3
800393c: d012 beq.n 8003964 <HAL_UART_RxCpltCallback+0x10a8>
tx[0] = iobuf[0];
800393e: 4b78 ldr r3, [pc, #480] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003940: 781a ldrb r2, [r3, #0]
8003942: 4b7a ldr r3, [pc, #488] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003944: 701a strb r2, [r3, #0]
tx[1] |= 0x80; //модификация кода функции на ошибку
8003946: 4b79 ldr r3, [pc, #484] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003948: 785b ldrb r3, [r3, #1]
800394a: 2280 movs r2, #128 ; 0x80
800394c: 4252 negs r2, r2
800394e: 4313 orrs r3, r2
8003950: b2da uxtb r2, r3
8003952: 4b76 ldr r3, [pc, #472] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003954: 705a strb r2, [r3, #1]
tx[2] = 0x03; //Адрес данных указанный в запросе не доступен
8003956: 4b75 ldr r3, [pc, #468] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003958: 2203 movs r2, #3
800395a: 709a strb r2, [r3, #2]
strtOut(3);
800395c: 2003 movs r0, #3
800395e: f7fe febb bl 80026d8 <strtOut>
break;
8003962: e174 b.n 8003c4e <HAL_UART_RxCpltCallback+0x1392>
j = 8 + iobuf[6];
8003964: 4b6e ldr r3, [pc, #440] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003966: 799a ldrb r2, [r3, #6]
8003968: 231f movs r3, #31
800396a: 18fb adds r3, r7, r3
800396c: 3208 adds r2, #8
800396e: 701a strb r2, [r3, #0]
if(iolen > j)
8003970: 4b70 ldr r3, [pc, #448] ; (8003b34 <HAL_UART_RxCpltCallback+0x1278>)
8003972: 781b ldrb r3, [r3, #0]
8003974: 221f movs r2, #31
8003976: 18ba adds r2, r7, r2
8003978: 7812 ldrb r2, [r2, #0]
800397a: 429a cmp r2, r3
800397c: d300 bcc.n 8003980 <HAL_UART_RxCpltCallback+0x10c4>
800397e: e166 b.n 8003c4e <HAL_UART_RxCpltCallback+0x1392>
crc.ch[0] = iobuf[j - 1];
8003980: 231f movs r3, #31
8003982: 18fb adds r3, r7, r3
8003984: 781b ldrb r3, [r3, #0]
8003986: 3b01 subs r3, #1
8003988: 4a65 ldr r2, [pc, #404] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
800398a: 5cd2 ldrb r2, [r2, r3]
800398c: 2314 movs r3, #20
800398e: 18fb adds r3, r7, r3
8003990: 701a strb r2, [r3, #0]
crc.ch[1] = iobuf[j];
8003992: 231f movs r3, #31
8003994: 18fb adds r3, r7, r3
8003996: 781b ldrb r3, [r3, #0]
8003998: 4a61 ldr r2, [pc, #388] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
800399a: 5cd2 ldrb r2, [r2, r3]
800399c: 2314 movs r3, #20
800399e: 18fb adds r3, r7, r3
80039a0: 705a strb r2, [r3, #1]
if(crc.sh == Crc16(j - 1))
80039a2: 2314 movs r3, #20
80039a4: 18fb adds r3, r7, r3
80039a6: 881c ldrh r4, [r3, #0]
80039a8: 231f movs r3, #31
80039aa: 18fb adds r3, r7, r3
80039ac: 781b ldrb r3, [r3, #0]
80039ae: b29b uxth r3, r3
80039b0: 3b01 subs r3, #1
80039b2: b29b uxth r3, r3
80039b4: 0018 movs r0, r3
80039b6: f7fe fedb bl 8002770 <Crc16>
80039ba: 0003 movs r3, r0
80039bc: 429c cmp r4, r3
80039be: d000 beq.n 80039c2 <HAL_UART_RxCpltCallback+0x1106>
80039c0: e145 b.n 8003c4e <HAL_UART_RxCpltCallback+0x1392>
if(iobuf[6] == 4)
80039c2: 4b57 ldr r3, [pc, #348] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
80039c4: 799b ldrb r3, [r3, #6]
80039c6: 2b04 cmp r3, #4
80039c8: d128 bne.n 8003a1c <HAL_UART_RxCpltCallback+0x1160>
for(j = 0; j < 4; j++)
80039ca: 231f movs r3, #31
80039cc: 18fb adds r3, r7, r3
80039ce: 2200 movs r2, #0
80039d0: 701a strb r2, [r3, #0]
80039d2: e014 b.n 80039fe <HAL_UART_RxCpltCallback+0x1142>
f.ch[3 - j] = iobuf[7 + j];
80039d4: 231f movs r3, #31
80039d6: 18fb adds r3, r7, r3
80039d8: 781b ldrb r3, [r3, #0]
80039da: 2203 movs r2, #3
80039dc: 1ad3 subs r3, r2, r3
80039de: 221f movs r2, #31
80039e0: 18ba adds r2, r7, r2
80039e2: 7812 ldrb r2, [r2, #0]
80039e4: 3207 adds r2, #7
80039e6: 494e ldr r1, [pc, #312] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
80039e8: 5c89 ldrb r1, [r1, r2]
80039ea: 2208 movs r2, #8
80039ec: 18ba adds r2, r7, r2
80039ee: 54d1 strb r1, [r2, r3]
for(j = 0; j < 4; j++)
80039f0: 231f movs r3, #31
80039f2: 18fb adds r3, r7, r3
80039f4: 781a ldrb r2, [r3, #0]
80039f6: 231f movs r3, #31
80039f8: 18fb adds r3, r7, r3
80039fa: 3201 adds r2, #1
80039fc: 701a strb r2, [r3, #0]
80039fe: 231f movs r3, #31
8003a00: 18fb adds r3, r7, r3
8003a02: 781b ldrb r3, [r3, #0]
8003a04: 2b03 cmp r3, #3
8003a06: d9e5 bls.n 80039d4 <HAL_UART_RxCpltCallback+0x1118>
pardata.SENS = f.fl;
8003a08: 68ba ldr r2, [r7, #8]
8003a0a: 4b46 ldr r3, [pc, #280] ; (8003b24 <HAL_UART_RxCpltCallback+0x1268>)
8003a0c: 621a str r2, [r3, #32]
needSave = true;
8003a0e: 4b46 ldr r3, [pc, #280] ; (8003b28 <HAL_UART_RxCpltCallback+0x126c>)
8003a10: 2201 movs r2, #1
8003a12: 701a strb r2, [r3, #0]
strtOut(6);
8003a14: 2006 movs r0, #6
8003a16: f7fe fe5f bl 80026d8 <strtOut>
break;
8003a1a: e118 b.n 8003c4e <HAL_UART_RxCpltCallback+0x1392>
if(iobuf[6] == 8)
8003a1c: 4b40 ldr r3, [pc, #256] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003a1e: 799b ldrb r3, [r3, #6]
8003a20: 2b08 cmp r3, #8
8003a22: d128 bne.n 8003a76 <HAL_UART_RxCpltCallback+0x11ba>
for(j = 0; j < 4; j++)
8003a24: 231f movs r3, #31
8003a26: 18fb adds r3, r7, r3
8003a28: 2200 movs r2, #0
8003a2a: 701a strb r2, [r3, #0]
8003a2c: e014 b.n 8003a58 <HAL_UART_RxCpltCallback+0x119c>
f.ch[3 - j] = iobuf[7 + j];
8003a2e: 231f movs r3, #31
8003a30: 18fb adds r3, r7, r3
8003a32: 781b ldrb r3, [r3, #0]
8003a34: 2203 movs r2, #3
8003a36: 1ad3 subs r3, r2, r3
8003a38: 221f movs r2, #31
8003a3a: 18ba adds r2, r7, r2
8003a3c: 7812 ldrb r2, [r2, #0]
8003a3e: 3207 adds r2, #7
8003a40: 4937 ldr r1, [pc, #220] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003a42: 5c89 ldrb r1, [r1, r2]
8003a44: 2208 movs r2, #8
8003a46: 18ba adds r2, r7, r2
8003a48: 54d1 strb r1, [r2, r3]
for(j = 0; j < 4; j++)
8003a4a: 231f movs r3, #31
8003a4c: 18fb adds r3, r7, r3
8003a4e: 781a ldrb r2, [r3, #0]
8003a50: 231f movs r3, #31
8003a52: 18fb adds r3, r7, r3
8003a54: 3201 adds r2, #1
8003a56: 701a strb r2, [r3, #0]
8003a58: 231f movs r3, #31
8003a5a: 18fb adds r3, r7, r3
8003a5c: 781b ldrb r3, [r3, #0]
8003a5e: 2b03 cmp r3, #3
8003a60: d9e5 bls.n 8003a2e <HAL_UART_RxCpltCallback+0x1172>
pardata.ACCEL = f.fl;
8003a62: 68ba ldr r2, [r7, #8]
8003a64: 4b2f ldr r3, [pc, #188] ; (8003b24 <HAL_UART_RxCpltCallback+0x1268>)
8003a66: 625a str r2, [r3, #36] ; 0x24
needSave = true;
8003a68: 4b2f ldr r3, [pc, #188] ; (8003b28 <HAL_UART_RxCpltCallback+0x126c>)
8003a6a: 2201 movs r2, #1
8003a6c: 701a strb r2, [r3, #0]
strtOut(6);
8003a6e: 2006 movs r0, #6
8003a70: f7fe fe32 bl 80026d8 <strtOut>
break;
8003a74: e0eb b.n 8003c4e <HAL_UART_RxCpltCallback+0x1392>
tx[0] = iobuf[0];
8003a76: 4b2a ldr r3, [pc, #168] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003a78: 781a ldrb r2, [r3, #0]
8003a7a: 4b2c ldr r3, [pc, #176] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003a7c: 701a strb r2, [r3, #0]
tx[1] |= 0x80; //модификация кода функции на ошибку
8003a7e: 4b2b ldr r3, [pc, #172] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003a80: 785b ldrb r3, [r3, #1]
8003a82: 2280 movs r2, #128 ; 0x80
8003a84: 4252 negs r2, r2
8003a86: 4313 orrs r3, r2
8003a88: b2da uxtb r2, r3
8003a8a: 4b28 ldr r3, [pc, #160] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003a8c: 705a strb r2, [r3, #1]
tx[2] = 0x03; //Адрес данных указанный в запросе не доступен
8003a8e: 4b27 ldr r3, [pc, #156] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003a90: 2203 movs r2, #3
8003a92: 709a strb r2, [r3, #2]
strtOut(3);
8003a94: 2003 movs r0, #3
8003a96: f7fe fe1f bl 80026d8 <strtOut>
break;
8003a9a: e0d8 b.n 8003c4e <HAL_UART_RxCpltCallback+0x1392>
tmp = 1;
8003a9c: 231e movs r3, #30
8003a9e: 18fb adds r3, r7, r3
8003aa0: 2201 movs r2, #1
8003aa2: 701a strb r2, [r3, #0]
tmp1 = 2;
8003aa4: 231d movs r3, #29
8003aa6: 18fb adds r3, r7, r3
8003aa8: 2202 movs r2, #2
8003aaa: 701a strb r2, [r3, #0]
if(addr.sh == 7006)
8003aac: 2310 movs r3, #16
8003aae: 18fb adds r3, r7, r3
8003ab0: 881b ldrh r3, [r3, #0]
8003ab2: 4a21 ldr r2, [pc, #132] ; (8003b38 <HAL_UART_RxCpltCallback+0x127c>)
8003ab4: 4293 cmp r3, r2
8003ab6: d10a bne.n 8003ace <HAL_UART_RxCpltCallback+0x1212>
tmp <<= 1;
8003ab8: 231e movs r3, #30
8003aba: 18fa adds r2, r7, r3
8003abc: 231e movs r3, #30
8003abe: 18fb adds r3, r7, r3
8003ac0: 781b ldrb r3, [r3, #0]
8003ac2: 18db adds r3, r3, r3
8003ac4: 7013 strb r3, [r2, #0]
tmp1 = 1;
8003ac6: 231d movs r3, #29
8003ac8: 18fb adds r3, r7, r3
8003aca: 2201 movs r2, #1
8003acc: 701a strb r2, [r3, #0]
if((regs.ch[0] > tmp) || (iobuf[6] != (regs.ch[0] << tmp1)))
8003ace: 230c movs r3, #12
8003ad0: 18fb adds r3, r7, r3
8003ad2: 781b ldrb r3, [r3, #0]
8003ad4: 221e movs r2, #30
8003ad6: 18ba adds r2, r7, r2
8003ad8: 7812 ldrb r2, [r2, #0]
8003ada: 429a cmp r2, r3
8003adc: d30d bcc.n 8003afa <HAL_UART_RxCpltCallback+0x123e>
8003ade: 4b10 ldr r3, [pc, #64] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003ae0: 799b ldrb r3, [r3, #6]
8003ae2: 001a movs r2, r3
8003ae4: 230c movs r3, #12
8003ae6: 18fb adds r3, r7, r3
8003ae8: 781b ldrb r3, [r3, #0]
8003aea: 0019 movs r1, r3
8003aec: 231d movs r3, #29
8003aee: 18fb adds r3, r7, r3
8003af0: 781b ldrb r3, [r3, #0]
8003af2: 4099 lsls r1, r3
8003af4: 000b movs r3, r1
8003af6: 429a cmp r2, r3
8003af8: d020 beq.n 8003b3c <HAL_UART_RxCpltCallback+0x1280>
tx[0] = iobuf[0];
8003afa: 4b09 ldr r3, [pc, #36] ; (8003b20 <HAL_UART_RxCpltCallback+0x1264>)
8003afc: 781a ldrb r2, [r3, #0]
8003afe: 4b0b ldr r3, [pc, #44] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003b00: 701a strb r2, [r3, #0]
tx[1] |= 0x80; //модификация кода функции на ошибку
8003b02: 4b0a ldr r3, [pc, #40] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003b04: 785b ldrb r3, [r3, #1]
8003b06: 2280 movs r2, #128 ; 0x80
8003b08: 4252 negs r2, r2
8003b0a: 4313 orrs r3, r2
8003b0c: b2da uxtb r2, r3
8003b0e: 4b07 ldr r3, [pc, #28] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003b10: 705a strb r2, [r3, #1]
tx[2] = 0x03; //Адрес данных указанный в запросе не доступен
8003b12: 4b06 ldr r3, [pc, #24] ; (8003b2c <HAL_UART_RxCpltCallback+0x1270>)
8003b14: 2203 movs r2, #3
8003b16: 709a strb r2, [r3, #2]
strtOut(3);
8003b18: 2003 movs r0, #3
8003b1a: f7fe fddd bl 80026d8 <strtOut>
break;
8003b1e: e098 b.n 8003c52 <HAL_UART_RxCpltCallback+0x1396>
8003b20: 2000028c .word 0x2000028c
8003b24: 20000098 .word 0x20000098
8003b28: 20000037 .word 0x20000037
8003b2c: 20000188 .word 0x20000188
8003b30: 00001b5c .word 0x00001b5c
8003b34: 20000035 .word 0x20000035
8003b38: 00001b5e .word 0x00001b5e
j = 8 + iobuf[6];
8003b3c: 4b48 ldr r3, [pc, #288] ; (8003c60 <HAL_UART_RxCpltCallback+0x13a4>)
8003b3e: 799a ldrb r2, [r3, #6]
8003b40: 231f movs r3, #31
8003b42: 18fb adds r3, r7, r3
8003b44: 3208 adds r2, #8
8003b46: 701a strb r2, [r3, #0]
if(iolen > j)
8003b48: 4b46 ldr r3, [pc, #280] ; (8003c64 <HAL_UART_RxCpltCallback+0x13a8>)
8003b4a: 781b ldrb r3, [r3, #0]
8003b4c: 221f movs r2, #31
8003b4e: 18ba adds r2, r7, r2
8003b50: 7812 ldrb r2, [r2, #0]
8003b52: 429a cmp r2, r3
8003b54: d300 bcc.n 8003b58 <HAL_UART_RxCpltCallback+0x129c>
8003b56: e07c b.n 8003c52 <HAL_UART_RxCpltCallback+0x1396>
crc.ch[0] = iobuf[j - 1];
8003b58: 231f movs r3, #31
8003b5a: 18fb adds r3, r7, r3
8003b5c: 781b ldrb r3, [r3, #0]
8003b5e: 3b01 subs r3, #1
8003b60: 4a3f ldr r2, [pc, #252] ; (8003c60 <HAL_UART_RxCpltCallback+0x13a4>)
8003b62: 5cd2 ldrb r2, [r2, r3]
8003b64: 2314 movs r3, #20
8003b66: 18fb adds r3, r7, r3
8003b68: 701a strb r2, [r3, #0]
crc.ch[1] = iobuf[j];
8003b6a: 231f movs r3, #31
8003b6c: 18fb adds r3, r7, r3
8003b6e: 781b ldrb r3, [r3, #0]
8003b70: 4a3b ldr r2, [pc, #236] ; (8003c60 <HAL_UART_RxCpltCallback+0x13a4>)
8003b72: 5cd2 ldrb r2, [r2, r3]
8003b74: 2314 movs r3, #20
8003b76: 18fb adds r3, r7, r3
8003b78: 705a strb r2, [r3, #1]
if(crc.sh == Crc16(j - 1))
8003b7a: 2314 movs r3, #20
8003b7c: 18fb adds r3, r7, r3
8003b7e: 881c ldrh r4, [r3, #0]
8003b80: 231f movs r3, #31
8003b82: 18fb adds r3, r7, r3
8003b84: 781b ldrb r3, [r3, #0]
8003b86: b29b uxth r3, r3
8003b88: 3b01 subs r3, #1
8003b8a: b29b uxth r3, r3
8003b8c: 0018 movs r0, r3
8003b8e: f7fe fdef bl 8002770 <Crc16>
8003b92: 0003 movs r3, r0
8003b94: 429c cmp r4, r3
8003b96: d15c bne.n 8003c52 <HAL_UART_RxCpltCallback+0x1396>
if(iobuf[6] == 4)
8003b98: 4b31 ldr r3, [pc, #196] ; (8003c60 <HAL_UART_RxCpltCallback+0x13a4>)
8003b9a: 799b ldrb r3, [r3, #6]
8003b9c: 2b04 cmp r3, #4
8003b9e: d128 bne.n 8003bf2 <HAL_UART_RxCpltCallback+0x1336>
for(j = 0; j < 4; j++)
8003ba0: 231f movs r3, #31
8003ba2: 18fb adds r3, r7, r3
8003ba4: 2200 movs r2, #0
8003ba6: 701a strb r2, [r3, #0]
8003ba8: e014 b.n 8003bd4 <HAL_UART_RxCpltCallback+0x1318>
f.ch[3 - j] = iobuf[3 + j];
8003baa: 231f movs r3, #31
8003bac: 18fb adds r3, r7, r3
8003bae: 781b ldrb r3, [r3, #0]
8003bb0: 2203 movs r2, #3
8003bb2: 1ad3 subs r3, r2, r3
8003bb4: 221f movs r2, #31
8003bb6: 18ba adds r2, r7, r2
8003bb8: 7812 ldrb r2, [r2, #0]
8003bba: 3203 adds r2, #3
8003bbc: 4928 ldr r1, [pc, #160] ; (8003c60 <HAL_UART_RxCpltCallback+0x13a4>)
8003bbe: 5c89 ldrb r1, [r1, r2]
8003bc0: 2208 movs r2, #8
8003bc2: 18ba adds r2, r7, r2
8003bc4: 54d1 strb r1, [r2, r3]
for(j = 0; j < 4; j++)
8003bc6: 231f movs r3, #31
8003bc8: 18fb adds r3, r7, r3
8003bca: 781a ldrb r2, [r3, #0]
8003bcc: 231f movs r3, #31
8003bce: 18fb adds r3, r7, r3
8003bd0: 3201 adds r2, #1
8003bd2: 701a strb r2, [r3, #0]
8003bd4: 231f movs r3, #31
8003bd6: 18fb adds r3, r7, r3
8003bd8: 781b ldrb r3, [r3, #0]
8003bda: 2b03 cmp r3, #3
8003bdc: d9e5 bls.n 8003baa <HAL_UART_RxCpltCallback+0x12ee>
pardata.ACCEL = f.fl;
8003bde: 68ba ldr r2, [r7, #8]
8003be0: 4b21 ldr r3, [pc, #132] ; (8003c68 <HAL_UART_RxCpltCallback+0x13ac>)
8003be2: 625a str r2, [r3, #36] ; 0x24
needSave = true;
8003be4: 4b21 ldr r3, [pc, #132] ; (8003c6c <HAL_UART_RxCpltCallback+0x13b0>)
8003be6: 2201 movs r2, #1
8003be8: 701a strb r2, [r3, #0]
strtOut(6);
8003bea: 2006 movs r0, #6
8003bec: f7fe fd74 bl 80026d8 <strtOut>
break;
8003bf0: e02f b.n 8003c52 <HAL_UART_RxCpltCallback+0x1396>
tx[0] = iobuf[0];
8003bf2: 4b1b ldr r3, [pc, #108] ; (8003c60 <HAL_UART_RxCpltCallback+0x13a4>)
8003bf4: 781a ldrb r2, [r3, #0]
8003bf6: 4b1e ldr r3, [pc, #120] ; (8003c70 <HAL_UART_RxCpltCallback+0x13b4>)
8003bf8: 701a strb r2, [r3, #0]
tx[1] |= 0x80; //модификация кода функции на ошибку
8003bfa: 4b1d ldr r3, [pc, #116] ; (8003c70 <HAL_UART_RxCpltCallback+0x13b4>)
8003bfc: 785b ldrb r3, [r3, #1]
8003bfe: 2280 movs r2, #128 ; 0x80
8003c00: 4252 negs r2, r2
8003c02: 4313 orrs r3, r2
8003c04: b2da uxtb r2, r3
8003c06: 4b1a ldr r3, [pc, #104] ; (8003c70 <HAL_UART_RxCpltCallback+0x13b4>)
8003c08: 705a strb r2, [r3, #1]
tx[2] = 0x03; //Адрес данных указанный в запросе не доступен
8003c0a: 4b19 ldr r3, [pc, #100] ; (8003c70 <HAL_UART_RxCpltCallback+0x13b4>)
8003c0c: 2203 movs r2, #3
8003c0e: 709a strb r2, [r3, #2]
strtOut(3);
8003c10: 2003 movs r0, #3
8003c12: f7fe fd61 bl 80026d8 <strtOut>
break;
8003c16: e01c b.n 8003c52 <HAL_UART_RxCpltCallback+0x1396>
tx[0] = iobuf[0];
8003c18: 4b11 ldr r3, [pc, #68] ; (8003c60 <HAL_UART_RxCpltCallback+0x13a4>)
8003c1a: 781a ldrb r2, [r3, #0]
8003c1c: 4b14 ldr r3, [pc, #80] ; (8003c70 <HAL_UART_RxCpltCallback+0x13b4>)
8003c1e: 701a strb r2, [r3, #0]
tx[1] |= 0x80; //модификация кода функции на ошибку
8003c20: 4b13 ldr r3, [pc, #76] ; (8003c70 <HAL_UART_RxCpltCallback+0x13b4>)
8003c22: 785b ldrb r3, [r3, #1]
8003c24: 2280 movs r2, #128 ; 0x80
8003c26: 4252 negs r2, r2
8003c28: 4313 orrs r3, r2
8003c2a: b2da uxtb r2, r3
8003c2c: 4b10 ldr r3, [pc, #64] ; (8003c70 <HAL_UART_RxCpltCallback+0x13b4>)
8003c2e: 705a strb r2, [r3, #1]
tx[2] = 0x02; //Адрес данных указанный в запросе не доступен
8003c30: 4b0f ldr r3, [pc, #60] ; (8003c70 <HAL_UART_RxCpltCallback+0x13b4>)
8003c32: 2202 movs r2, #2
8003c34: 709a strb r2, [r3, #2]
strtOut(3);
8003c36: 2003 movs r0, #3
8003c38: f7fe fd4e bl 80026d8 <strtOut>
break;
8003c3c: e00a b.n 8003c54 <HAL_UART_RxCpltCallback+0x1398>
break;
8003c3e: 46c0 nop ; (mov r8, r8)
8003c40: e00a b.n 8003c58 <HAL_UART_RxCpltCallback+0x139c>
break;
8003c42: 46c0 nop ; (mov r8, r8)
8003c44: e008 b.n 8003c58 <HAL_UART_RxCpltCallback+0x139c>
break;
8003c46: 46c0 nop ; (mov r8, r8)
8003c48: e006 b.n 8003c58 <HAL_UART_RxCpltCallback+0x139c>
break;
8003c4a: 46c0 nop ; (mov r8, r8)
8003c4c: e004 b.n 8003c58 <HAL_UART_RxCpltCallback+0x139c>
break;
8003c4e: 46c0 nop ; (mov r8, r8)
8003c50: e002 b.n 8003c58 <HAL_UART_RxCpltCallback+0x139c>
break;
8003c52: 46c0 nop ; (mov r8, r8)
break;
8003c54: e000 b.n 8003c58 <HAL_UART_RxCpltCallback+0x139c>
break;
8003c56: 46c0 nop ; (mov r8, r8)
}
8003c58: 46c0 nop ; (mov r8, r8)
8003c5a: 46bd mov sp, r7
8003c5c: b008 add sp, #32
8003c5e: bdb0 pop {r4, r5, r7, pc}
8003c60: 2000028c .word 0x2000028c
8003c64: 20000035 .word 0x20000035
8003c68: 20000098 .word 0x20000098
8003c6c: 20000037 .word 0x20000037
8003c70: 20000188 .word 0x20000188
08003c74 <HAL_UART_TxCpltCallback>:
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
8003c74: b580 push {r7, lr}
8003c76: b084 sub sp, #16
8003c78: af00 add r7, sp, #0
8003c7a: 6078 str r0, [r7, #4]
__IO uint16_t a;
a = delayREDE;
8003c7c: 4b2a ldr r3, [pc, #168] ; (8003d28 <HAL_UART_TxCpltCallback+0xb4>)
8003c7e: 881b ldrh r3, [r3, #0]
8003c80: b29a uxth r2, r3
8003c82: 230e movs r3, #14
8003c84: 18fb adds r3, r7, r3
8003c86: 801a strh r2, [r3, #0]
while(a)
8003c88: e02c b.n 8003ce4 <HAL_UART_TxCpltCallback+0x70>
{
a--; a++; a--; a++; a--;
8003c8a: 230e movs r3, #14
8003c8c: 18fb adds r3, r7, r3
8003c8e: 881b ldrh r3, [r3, #0]
8003c90: b29b uxth r3, r3
8003c92: 3b01 subs r3, #1
8003c94: b29a uxth r2, r3
8003c96: 230e movs r3, #14
8003c98: 18fb adds r3, r7, r3
8003c9a: 801a strh r2, [r3, #0]
8003c9c: 230e movs r3, #14
8003c9e: 18fb adds r3, r7, r3
8003ca0: 881b ldrh r3, [r3, #0]
8003ca2: b29b uxth r3, r3
8003ca4: 3301 adds r3, #1
8003ca6: b29a uxth r2, r3
8003ca8: 230e movs r3, #14
8003caa: 18fb adds r3, r7, r3
8003cac: 801a strh r2, [r3, #0]
8003cae: 230e movs r3, #14
8003cb0: 18fb adds r3, r7, r3
8003cb2: 881b ldrh r3, [r3, #0]
8003cb4: b29b uxth r3, r3
8003cb6: 3b01 subs r3, #1
8003cb8: b29a uxth r2, r3
8003cba: 230e movs r3, #14
8003cbc: 18fb adds r3, r7, r3
8003cbe: 801a strh r2, [r3, #0]
8003cc0: 230e movs r3, #14
8003cc2: 18fb adds r3, r7, r3
8003cc4: 881b ldrh r3, [r3, #0]
8003cc6: b29b uxth r3, r3
8003cc8: 3301 adds r3, #1
8003cca: b29a uxth r2, r3
8003ccc: 230e movs r3, #14
8003cce: 18fb adds r3, r7, r3
8003cd0: 801a strh r2, [r3, #0]
8003cd2: 230e movs r3, #14
8003cd4: 18fb adds r3, r7, r3
8003cd6: 881b ldrh r3, [r3, #0]
8003cd8: b29b uxth r3, r3
8003cda: 3b01 subs r3, #1
8003cdc: b29a uxth r2, r3
8003cde: 230e movs r3, #14
8003ce0: 18fb adds r3, r7, r3
8003ce2: 801a strh r2, [r3, #0]
while(a)
8003ce4: 230e movs r3, #14
8003ce6: 18fb adds r3, r7, r3
8003ce8: 881b ldrh r3, [r3, #0]
8003cea: b29b uxth r3, r3
8003cec: 2b00 cmp r3, #0
8003cee: d1cc bne.n 8003c8a <HAL_UART_TxCpltCallback+0x16>
}
if(setbaud)
8003cf0: 4b0e ldr r3, [pc, #56] ; (8003d2c <HAL_UART_TxCpltCallback+0xb8>)
8003cf2: 781b ldrb r3, [r3, #0]
8003cf4: 2b00 cmp r3, #0
8003cf6: d007 beq.n 8003d08 <HAL_UART_TxCpltCallback+0x94>
{
setbaud = false;
8003cf8: 4b0c ldr r3, [pc, #48] ; (8003d2c <HAL_UART_TxCpltCallback+0xb8>)
8003cfa: 2200 movs r2, #0
8003cfc: 701a strb r2, [r3, #0]
needSave = true;
8003cfe: 4b0c ldr r3, [pc, #48] ; (8003d30 <HAL_UART_TxCpltCallback+0xbc>)
8003d00: 2201 movs r2, #1
8003d02: 701a strb r2, [r3, #0]
SetBaudRate();
8003d04: f7fe fdb4 bl 8002870 <SetBaudRate>
}
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_TC);
8003d08: 4b0a ldr r3, [pc, #40] ; (8003d34 <HAL_UART_TxCpltCallback+0xc0>)
8003d0a: 681b ldr r3, [r3, #0]
8003d0c: 2240 movs r2, #64 ; 0x40
8003d0e: 621a str r2, [r3, #32]
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
8003d10: 2380 movs r3, #128 ; 0x80
8003d12: 0059 lsls r1, r3, #1
8003d14: 23a0 movs r3, #160 ; 0xa0
8003d16: 05db lsls r3, r3, #23
8003d18: 2200 movs r2, #0
8003d1a: 0018 movs r0, r3
8003d1c: f000 fef7 bl 8004b0e <HAL_GPIO_WritePin>
}
8003d20: 46c0 nop ; (mov r8, r8)
8003d22: 46bd mov sp, r7
8003d24: b004 add sp, #16
8003d26: bd80 pop {r7, pc}
8003d28: 20000102 .word 0x20000102
8003d2c: 20000004 .word 0x20000004
8003d30: 20000037 .word 0x20000037
8003d34: 20000104 .word 0x20000104
08003d38 <StartTransfer>:
void StartTransfer(void)
{
8003d38: b580 push {r7, lr}
8003d3a: b082 sub sp, #8
8003d3c: af00 add r7, sp, #0
while(a)
{
a--; a++; a--; a++; a--;
}*/
HAL_UART_Transmit_IT(&huart1, tx, lastbyte);
8003d3e: 4b05 ldr r3, [pc, #20] ; (8003d54 <StartTransfer+0x1c>)
8003d40: 881a ldrh r2, [r3, #0]
8003d42: 4905 ldr r1, [pc, #20] ; (8003d58 <StartTransfer+0x20>)
8003d44: 4b05 ldr r3, [pc, #20] ; (8003d5c <StartTransfer+0x24>)
8003d46: 0018 movs r0, r3
8003d48: f002 f942 bl 8005fd0 <HAL_UART_Transmit_IT>
}
8003d4c: 46c0 nop ; (mov r8, r8)
8003d4e: 46bd mov sp, r7
8003d50: b002 add sp, #8
8003d52: bd80 pop {r7, pc}
8003d54: 2000028a .word 0x2000028a
8003d58: 20000188 .word 0x20000188
8003d5c: 20000104 .word 0x20000104
08003d60 <HAL_GPIO_EXTI_Callback>:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
8003d60: b580 push {r7, lr}
8003d62: b082 sub sp, #8
8003d64: af00 add r7, sp, #0
8003d66: 0002 movs r2, r0
8003d68: 1dbb adds r3, r7, #6
8003d6a: 801a strh r2, [r3, #0]
if(GPIO_Pin == UPER_Pin) // Overdrive
8003d6c: 1dbb adds r3, r7, #6
8003d6e: 881b ldrh r3, [r3, #0]
8003d70: 2b01 cmp r3, #1
8003d72: d12a bne.n 8003dca <HAL_GPIO_EXTI_Callback+0x6a>
{
__HAL_GPIO_EXTI_CLEAR_FLAG(UPER_Pin);
8003d74: 4b38 ldr r3, [pc, #224] ; (8003e58 <HAL_GPIO_EXTI_Callback+0xf8>)
8003d76: 2201 movs r2, #1
8003d78: 615a str r2, [r3, #20]
if(HAL_GPIO_ReadPin(GPIOA, UPER_Pin) == GPIO_PIN_SET)
8003d7a: 23a0 movs r3, #160 ; 0xa0
8003d7c: 05db lsls r3, r3, #23
8003d7e: 2101 movs r1, #1
8003d80: 0018 movs r0, r3
8003d82: f000 fea7 bl 8004ad4 <HAL_GPIO_ReadPin>
8003d86: 0003 movs r3, r0
8003d88: 2b01 cmp r3, #1
8003d8a: d10f bne.n 8003dac <HAL_GPIO_EXTI_Callback+0x4c>
{
//timerUPER = 1000;
HAL_GPIO_WritePin(GPIOA, PER_Pin, GPIO_PIN_SET);
8003d8c: 23a0 movs r3, #160 ; 0xa0
8003d8e: 05db lsls r3, r3, #23
8003d90: 2201 movs r2, #1
8003d92: 2110 movs r1, #16
8003d94: 0018 movs r0, r3
8003d96: f000 feba bl 8004b0e <HAL_GPIO_WritePin>
AMP_STATUS |= UPER_Pin;
8003d9a: 4b30 ldr r3, [pc, #192] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003d9c: 881b ldrh r3, [r3, #0]
8003d9e: b29b uxth r3, r3
8003da0: 2201 movs r2, #1
8003da2: 4313 orrs r3, r2
8003da4: b29a uxth r2, r3
8003da6: 4b2d ldr r3, [pc, #180] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003da8: 801a strh r2, [r3, #0]
8003daa: e00e b.n 8003dca <HAL_GPIO_EXTI_Callback+0x6a>
}
else
{
AMP_STATUS &= ~UPER_Pin;
8003dac: 4b2b ldr r3, [pc, #172] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003dae: 881b ldrh r3, [r3, #0]
8003db0: b29b uxth r3, r3
8003db2: 2201 movs r2, #1
8003db4: 4393 bics r3, r2
8003db6: b29a uxth r2, r3
8003db8: 4b28 ldr r3, [pc, #160] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003dba: 801a strh r2, [r3, #0]
HAL_GPIO_WritePin(GPIOA, PER_Pin, GPIO_PIN_RESET);
8003dbc: 23a0 movs r3, #160 ; 0xa0
8003dbe: 05db lsls r3, r3, #23
8003dc0: 2200 movs r2, #0
8003dc2: 2110 movs r1, #16
8003dc4: 0018 movs r0, r3
8003dc6: f000 fea2 bl 8004b0e <HAL_GPIO_WritePin>
}
}
if(GPIO_Pin == OP_Pin) // OP
8003dca: 1dbb adds r3, r7, #6
8003dcc: 881b ldrh r3, [r3, #0]
8003dce: 2b02 cmp r3, #2
8003dd0: d11c bne.n 8003e0c <HAL_GPIO_EXTI_Callback+0xac>
{
__HAL_GPIO_EXTI_CLEAR_FLAG(OP_Pin);
8003dd2: 4b21 ldr r3, [pc, #132] ; (8003e58 <HAL_GPIO_EXTI_Callback+0xf8>)
8003dd4: 2202 movs r2, #2
8003dd6: 615a str r2, [r3, #20]
if(HAL_GPIO_ReadPin(GPIOA, OP_Pin) == GPIO_PIN_SET)
8003dd8: 23a0 movs r3, #160 ; 0xa0
8003dda: 05db lsls r3, r3, #23
8003ddc: 2102 movs r1, #2
8003dde: 0018 movs r0, r3
8003de0: f000 fe78 bl 8004ad4 <HAL_GPIO_ReadPin>
8003de4: 0003 movs r3, r0
8003de6: 2b01 cmp r3, #1
8003de8: d108 bne.n 8003dfc <HAL_GPIO_EXTI_Callback+0x9c>
{
//timerOP = 1000;
AMP_STATUS |= OP_Pin;
8003dea: 4b1c ldr r3, [pc, #112] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003dec: 881b ldrh r3, [r3, #0]
8003dee: b29b uxth r3, r3
8003df0: 2202 movs r2, #2
8003df2: 4313 orrs r3, r2
8003df4: b29a uxth r2, r3
8003df6: 4b19 ldr r3, [pc, #100] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003df8: 801a strh r2, [r3, #0]
8003dfa: e007 b.n 8003e0c <HAL_GPIO_EXTI_Callback+0xac>
}
else
{
AMP_STATUS &= ~OP_Pin;
8003dfc: 4b17 ldr r3, [pc, #92] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003dfe: 881b ldrh r3, [r3, #0]
8003e00: b29b uxth r3, r3
8003e02: 2202 movs r2, #2
8003e04: 4393 bics r3, r2
8003e06: b29a uxth r2, r3
8003e08: 4b14 ldr r3, [pc, #80] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003e0a: 801a strh r2, [r3, #0]
}
}
if(GPIO_Pin == KZ_Pin) // KZ
8003e0c: 1dbb adds r3, r7, #6
8003e0e: 881b ldrh r3, [r3, #0]
8003e10: 2b04 cmp r3, #4
8003e12: d11c bne.n 8003e4e <HAL_GPIO_EXTI_Callback+0xee>
{
__HAL_GPIO_EXTI_CLEAR_FLAG(KZ_Pin);
8003e14: 4b10 ldr r3, [pc, #64] ; (8003e58 <HAL_GPIO_EXTI_Callback+0xf8>)
8003e16: 2204 movs r2, #4
8003e18: 615a str r2, [r3, #20]
if(HAL_GPIO_ReadPin(GPIOA, KZ_Pin) == GPIO_PIN_SET)
8003e1a: 23a0 movs r3, #160 ; 0xa0
8003e1c: 05db lsls r3, r3, #23
8003e1e: 2104 movs r1, #4
8003e20: 0018 movs r0, r3
8003e22: f000 fe57 bl 8004ad4 <HAL_GPIO_ReadPin>
8003e26: 0003 movs r3, r0
8003e28: 2b01 cmp r3, #1
8003e2a: d108 bne.n 8003e3e <HAL_GPIO_EXTI_Callback+0xde>
{
//timerKZ = 1000;
AMP_STATUS |= KZ_Pin;
8003e2c: 4b0b ldr r3, [pc, #44] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003e2e: 881b ldrh r3, [r3, #0]
8003e30: b29b uxth r3, r3
8003e32: 2204 movs r2, #4
8003e34: 4313 orrs r3, r2
8003e36: b29a uxth r2, r3
8003e38: 4b08 ldr r3, [pc, #32] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003e3a: 801a strh r2, [r3, #0]
else
{
AMP_STATUS &= ~KZ_Pin;
}
}
}
8003e3c: e007 b.n 8003e4e <HAL_GPIO_EXTI_Callback+0xee>
AMP_STATUS &= ~KZ_Pin;
8003e3e: 4b07 ldr r3, [pc, #28] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003e40: 881b ldrh r3, [r3, #0]
8003e42: b29b uxth r3, r3
8003e44: 2204 movs r2, #4
8003e46: 4393 bics r3, r2
8003e48: b29a uxth r2, r3
8003e4a: 4b04 ldr r3, [pc, #16] ; (8003e5c <HAL_GPIO_EXTI_Callback+0xfc>)
8003e4c: 801a strh r2, [r3, #0]
}
8003e4e: 46c0 nop ; (mov r8, r8)
8003e50: 46bd mov sp, r7
8003e52: b002 add sp, #8
8003e54: bd80 pop {r7, pc}
8003e56: 46c0 nop ; (mov r8, r8)
8003e58: 40010400 .word 0x40010400
8003e5c: 2000002c .word 0x2000002c
08003e60 <HAL_Init>:
* In the default implementation,Systick is used as source of time base.
* the tick variable is incremented each 1ms in its ISR.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_Init(void)
{
8003e60: b580 push {r7, lr}
8003e62: b082 sub sp, #8
8003e64: af00 add r7, sp, #0
HAL_StatusTypeDef status = HAL_OK;
8003e66: 1dfb adds r3, r7, #7
8003e68: 2200 movs r2, #0
8003e6a: 701a strb r2, [r3, #0]
#if (BUFFER_CACHE_DISABLE != 0)
__HAL_FLASH_BUFFER_CACHE_DISABLE();
#endif /* BUFFER_CACHE_DISABLE */
#if (PREREAD_ENABLE != 0)
__HAL_FLASH_PREREAD_BUFFER_ENABLE();
8003e6c: 4b0b ldr r3, [pc, #44] ; (8003e9c <HAL_Init+0x3c>)
8003e6e: 4a0b ldr r2, [pc, #44] ; (8003e9c <HAL_Init+0x3c>)
8003e70: 6812 ldr r2, [r2, #0]
8003e72: 2140 movs r1, #64 ; 0x40
8003e74: 430a orrs r2, r1
8003e76: 601a str r2, [r3, #0]
#if (PREFETCH_ENABLE != 0)
__HAL_FLASH_PREFETCH_BUFFER_ENABLE();
#endif /* PREFETCH_ENABLE */
/* Use SysTick as time base source and configure 1ms tick (default clock after Reset is MSI) */
if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)
8003e78: 2000 movs r0, #0
8003e7a: f000 f811 bl 8003ea0 <HAL_InitTick>
8003e7e: 1e03 subs r3, r0, #0
8003e80: d003 beq.n 8003e8a <HAL_Init+0x2a>
{
status = HAL_ERROR;
8003e82: 1dfb adds r3, r7, #7
8003e84: 2201 movs r2, #1
8003e86: 701a strb r2, [r3, #0]
8003e88: e001 b.n 8003e8e <HAL_Init+0x2e>
}
else
{
/* Init the low level hardware */
HAL_MspInit();
8003e8a: f7fe f9b3 bl 80021f4 <HAL_MspInit>
}
/* Return function status */
return status;
8003e8e: 1dfb adds r3, r7, #7
8003e90: 781b ldrb r3, [r3, #0]
}
8003e92: 0018 movs r0, r3
8003e94: 46bd mov sp, r7
8003e96: b002 add sp, #8
8003e98: bd80 pop {r7, pc}
8003e9a: 46c0 nop ; (mov r8, r8)
8003e9c: 40022000 .word 0x40022000
08003ea0 <HAL_InitTick>:
* implementation in user file.
* @param TickPriority Tick interrupt priority.
* @retval HAL status
*/
__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
8003ea0: b590 push {r4, r7, lr}
8003ea2: b083 sub sp, #12
8003ea4: af00 add r7, sp, #0
8003ea6: 6078 str r0, [r7, #4]
/* Configure the SysTick to have interrupt in 1ms time basis*/
if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)
8003ea8: 4b14 ldr r3, [pc, #80] ; (8003efc <HAL_InitTick+0x5c>)
8003eaa: 681c ldr r4, [r3, #0]
8003eac: 4b14 ldr r3, [pc, #80] ; (8003f00 <HAL_InitTick+0x60>)
8003eae: 781b ldrb r3, [r3, #0]
8003eb0: 0019 movs r1, r3
8003eb2: 23fa movs r3, #250 ; 0xfa
8003eb4: 0098 lsls r0, r3, #2
8003eb6: f7fc f927 bl 8000108 <__udivsi3>
8003eba: 0003 movs r3, r0
8003ebc: 0019 movs r1, r3
8003ebe: 0020 movs r0, r4
8003ec0: f7fc f922 bl 8000108 <__udivsi3>
8003ec4: 0003 movs r3, r0
8003ec6: 0018 movs r0, r3
8003ec8: f000 f93c bl 8004144 <HAL_SYSTICK_Config>
8003ecc: 1e03 subs r3, r0, #0
8003ece: d001 beq.n 8003ed4 <HAL_InitTick+0x34>
{
return HAL_ERROR;
8003ed0: 2301 movs r3, #1
8003ed2: e00f b.n 8003ef4 <HAL_InitTick+0x54>
}
/* Configure the SysTick IRQ priority */
if (TickPriority < (1UL << __NVIC_PRIO_BITS))
8003ed4: 687b ldr r3, [r7, #4]
8003ed6: 2b03 cmp r3, #3
8003ed8: d80b bhi.n 8003ef2 <HAL_InitTick+0x52>
{
HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
8003eda: 6879 ldr r1, [r7, #4]
8003edc: 2301 movs r3, #1
8003ede: 425b negs r3, r3
8003ee0: 2200 movs r2, #0
8003ee2: 0018 movs r0, r3
8003ee4: f000 f8f8 bl 80040d8 <HAL_NVIC_SetPriority>
uwTickPrio = TickPriority;
8003ee8: 4b06 ldr r3, [pc, #24] ; (8003f04 <HAL_InitTick+0x64>)
8003eea: 687a ldr r2, [r7, #4]
8003eec: 601a str r2, [r3, #0]
{
return HAL_ERROR;
}
/* Return function status */
return HAL_OK;
8003eee: 2300 movs r3, #0
8003ef0: e000 b.n 8003ef4 <HAL_InitTick+0x54>
return HAL_ERROR;
8003ef2: 2301 movs r3, #1
}
8003ef4: 0018 movs r0, r3
8003ef6: 46bd mov sp, r7
8003ef8: b003 add sp, #12
8003efa: bd90 pop {r4, r7, pc}
8003efc: 20000000 .word 0x20000000
8003f00: 2000000c .word 0x2000000c
8003f04: 20000008 .word 0x20000008
08003f08 <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)
{
8003f08: b580 push {r7, lr}
8003f0a: af00 add r7, sp, #0
uwTick += uwTickFreq;
8003f0c: 4b05 ldr r3, [pc, #20] ; (8003f24 <HAL_IncTick+0x1c>)
8003f0e: 781b ldrb r3, [r3, #0]
8003f10: 001a movs r2, r3
8003f12: 4b05 ldr r3, [pc, #20] ; (8003f28 <HAL_IncTick+0x20>)
8003f14: 681b ldr r3, [r3, #0]
8003f16: 18d2 adds r2, r2, r3
8003f18: 4b03 ldr r3, [pc, #12] ; (8003f28 <HAL_IncTick+0x20>)
8003f1a: 601a str r2, [r3, #0]
}
8003f1c: 46c0 nop ; (mov r8, r8)
8003f1e: 46bd mov sp, r7
8003f20: bd80 pop {r7, pc}
8003f22: 46c0 nop ; (mov r8, r8)
8003f24: 2000000c .word 0x2000000c
8003f28: 2000038c .word 0x2000038c
08003f2c <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)
{
8003f2c: b580 push {r7, lr}
8003f2e: af00 add r7, sp, #0
return uwTick;
8003f30: 4b02 ldr r3, [pc, #8] ; (8003f3c <HAL_GetTick+0x10>)
8003f32: 681b ldr r3, [r3, #0]
}
8003f34: 0018 movs r0, r3
8003f36: 46bd mov sp, r7
8003f38: bd80 pop {r7, pc}
8003f3a: 46c0 nop ; (mov r8, r8)
8003f3c: 2000038c .word 0x2000038c
08003f40 <__NVIC_EnableIRQ>:
\details Enables a device specific interrupt in the NVIC interrupt controller.
\param [in] IRQn Device specific interrupt number.
\note IRQn must not be negative.
*/
__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
{
8003f40: b580 push {r7, lr}
8003f42: b082 sub sp, #8
8003f44: af00 add r7, sp, #0
8003f46: 0002 movs r2, r0
8003f48: 1dfb adds r3, r7, #7
8003f4a: 701a strb r2, [r3, #0]
if ((int32_t)(IRQn) >= 0)
8003f4c: 1dfb adds r3, r7, #7
8003f4e: 781b ldrb r3, [r3, #0]
8003f50: 2b7f cmp r3, #127 ; 0x7f
8003f52: d809 bhi.n 8003f68 <__NVIC_EnableIRQ+0x28>
{
NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
8003f54: 4b06 ldr r3, [pc, #24] ; (8003f70 <__NVIC_EnableIRQ+0x30>)
8003f56: 1dfa adds r2, r7, #7
8003f58: 7812 ldrb r2, [r2, #0]
8003f5a: 0011 movs r1, r2
8003f5c: 221f movs r2, #31
8003f5e: 400a ands r2, r1
8003f60: 2101 movs r1, #1
8003f62: 4091 lsls r1, r2
8003f64: 000a movs r2, r1
8003f66: 601a str r2, [r3, #0]
}
}
8003f68: 46c0 nop ; (mov r8, r8)
8003f6a: 46bd mov sp, r7
8003f6c: b002 add sp, #8
8003f6e: bd80 pop {r7, pc}
8003f70: e000e100 .word 0xe000e100
08003f74 <__NVIC_DisableIRQ>:
\details Disables a device specific interrupt in the NVIC interrupt controller.
\param [in] IRQn Device specific interrupt number.
\note IRQn must not be negative.
*/
__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)
{
8003f74: b580 push {r7, lr}
8003f76: b082 sub sp, #8
8003f78: af00 add r7, sp, #0
8003f7a: 0002 movs r2, r0
8003f7c: 1dfb adds r3, r7, #7
8003f7e: 701a strb r2, [r3, #0]
if ((int32_t)(IRQn) >= 0)
8003f80: 1dfb adds r3, r7, #7
8003f82: 781b ldrb r3, [r3, #0]
8003f84: 2b7f cmp r3, #127 ; 0x7f
8003f86: d80e bhi.n 8003fa6 <__NVIC_DisableIRQ+0x32>
{
NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
8003f88: 4909 ldr r1, [pc, #36] ; (8003fb0 <__NVIC_DisableIRQ+0x3c>)
8003f8a: 1dfb adds r3, r7, #7
8003f8c: 781b ldrb r3, [r3, #0]
8003f8e: 001a movs r2, r3
8003f90: 231f movs r3, #31
8003f92: 4013 ands r3, r2
8003f94: 2201 movs r2, #1
8003f96: 409a lsls r2, r3
8003f98: 0013 movs r3, r2
8003f9a: 2280 movs r2, #128 ; 0x80
8003f9c: 508b str r3, [r1, r2]
\details Acts as a special kind of Data Memory Barrier.
It completes when all explicit memory accesses before this instruction complete.
*/
__STATIC_FORCEINLINE void __DSB(void)
{
__ASM volatile ("dsb 0xF":::"memory");
8003f9e: f3bf 8f4f dsb sy
__ASM volatile ("isb 0xF":::"memory");
8003fa2: f3bf 8f6f isb sy
__DSB();
__ISB();
}
}
8003fa6: 46c0 nop ; (mov r8, r8)
8003fa8: 46bd mov sp, r7
8003faa: b002 add sp, #8
8003fac: bd80 pop {r7, pc}
8003fae: 46c0 nop ; (mov r8, r8)
8003fb0: e000e100 .word 0xe000e100
08003fb4 <__NVIC_SetPriority>:
\param [in] IRQn Interrupt number.
\param [in] priority Priority to set.
\note The priority cannot be set for every processor exception.
*/
__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
8003fb4: b5b0 push {r4, r5, r7, lr}
8003fb6: b082 sub sp, #8
8003fb8: af00 add r7, sp, #0
8003fba: 0002 movs r2, r0
8003fbc: 6039 str r1, [r7, #0]
8003fbe: 1dfb adds r3, r7, #7
8003fc0: 701a strb r2, [r3, #0]
if ((int32_t)(IRQn) >= 0)
8003fc2: 1dfb adds r3, r7, #7
8003fc4: 781b ldrb r3, [r3, #0]
8003fc6: 2b7f cmp r3, #127 ; 0x7f
8003fc8: d828 bhi.n 800401c <__NVIC_SetPriority+0x68>
{
NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
8003fca: 4c2f ldr r4, [pc, #188] ; (8004088 <__NVIC_SetPriority+0xd4>)
8003fcc: 1dfb adds r3, r7, #7
8003fce: 781b ldrb r3, [r3, #0]
8003fd0: b25b sxtb r3, r3
8003fd2: 089b lsrs r3, r3, #2
8003fd4: 492c ldr r1, [pc, #176] ; (8004088 <__NVIC_SetPriority+0xd4>)
8003fd6: 1dfa adds r2, r7, #7
8003fd8: 7812 ldrb r2, [r2, #0]
8003fda: b252 sxtb r2, r2
8003fdc: 0892 lsrs r2, r2, #2
8003fde: 32c0 adds r2, #192 ; 0xc0
8003fe0: 0092 lsls r2, r2, #2
8003fe2: 5852 ldr r2, [r2, r1]
8003fe4: 1df9 adds r1, r7, #7
8003fe6: 7809 ldrb r1, [r1, #0]
8003fe8: 0008 movs r0, r1
8003fea: 2103 movs r1, #3
8003fec: 4001 ands r1, r0
8003fee: 00c9 lsls r1, r1, #3
8003ff0: 20ff movs r0, #255 ; 0xff
8003ff2: 4088 lsls r0, r1
8003ff4: 0001 movs r1, r0
8003ff6: 43c9 mvns r1, r1
8003ff8: 4011 ands r1, r2
(((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
8003ffa: 683a ldr r2, [r7, #0]
8003ffc: 0192 lsls r2, r2, #6
8003ffe: 20ff movs r0, #255 ; 0xff
8004000: 4010 ands r0, r2
8004002: 1dfa adds r2, r7, #7
8004004: 7812 ldrb r2, [r2, #0]
8004006: 0015 movs r5, r2
8004008: 2203 movs r2, #3
800400a: 402a ands r2, r5
800400c: 00d2 lsls r2, r2, #3
800400e: 4090 lsls r0, r2
8004010: 0002 movs r2, r0
NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
8004012: 430a orrs r2, r1
8004014: 33c0 adds r3, #192 ; 0xc0
8004016: 009b lsls r3, r3, #2
8004018: 511a str r2, [r3, r4]
else
{
SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
(((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
}
}
800401a: e031 b.n 8004080 <__NVIC_SetPriority+0xcc>
SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
800401c: 4c1b ldr r4, [pc, #108] ; (800408c <__NVIC_SetPriority+0xd8>)
800401e: 1dfb adds r3, r7, #7
8004020: 781b ldrb r3, [r3, #0]
8004022: 001a movs r2, r3
8004024: 230f movs r3, #15
8004026: 4013 ands r3, r2
8004028: 3b08 subs r3, #8
800402a: 0899 lsrs r1, r3, #2
800402c: 4a17 ldr r2, [pc, #92] ; (800408c <__NVIC_SetPriority+0xd8>)
800402e: 1dfb adds r3, r7, #7
8004030: 781b ldrb r3, [r3, #0]
8004032: 0018 movs r0, r3
8004034: 230f movs r3, #15
8004036: 4003 ands r3, r0
8004038: 3b08 subs r3, #8
800403a: 089b lsrs r3, r3, #2
800403c: 3306 adds r3, #6
800403e: 009b lsls r3, r3, #2
8004040: 18d3 adds r3, r2, r3
8004042: 3304 adds r3, #4
8004044: 681b ldr r3, [r3, #0]
8004046: 1dfa adds r2, r7, #7
8004048: 7812 ldrb r2, [r2, #0]
800404a: 0010 movs r0, r2
800404c: 2203 movs r2, #3
800404e: 4002 ands r2, r0
8004050: 00d2 lsls r2, r2, #3
8004052: 20ff movs r0, #255 ; 0xff
8004054: 4090 lsls r0, r2
8004056: 0002 movs r2, r0
8004058: 43d2 mvns r2, r2
800405a: 401a ands r2, r3
(((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
800405c: 683b ldr r3, [r7, #0]
800405e: 019b lsls r3, r3, #6
8004060: 20ff movs r0, #255 ; 0xff
8004062: 4018 ands r0, r3
8004064: 1dfb adds r3, r7, #7
8004066: 781b ldrb r3, [r3, #0]
8004068: 001d movs r5, r3
800406a: 2303 movs r3, #3
800406c: 402b ands r3, r5
800406e: 00db lsls r3, r3, #3
8004070: 4098 lsls r0, r3
8004072: 0003 movs r3, r0
SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
8004074: 431a orrs r2, r3
8004076: 1d8b adds r3, r1, #6
8004078: 009b lsls r3, r3, #2
800407a: 18e3 adds r3, r4, r3
800407c: 3304 adds r3, #4
800407e: 601a str r2, [r3, #0]
}
8004080: 46c0 nop ; (mov r8, r8)
8004082: 46bd mov sp, r7
8004084: b002 add sp, #8
8004086: bdb0 pop {r4, r5, r7, pc}
8004088: e000e100 .word 0xe000e100
800408c: e000ed00 .word 0xe000ed00
08004090 <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)
{
8004090: b580 push {r7, lr}
8004092: b082 sub sp, #8
8004094: af00 add r7, sp, #0
8004096: 6078 str r0, [r7, #4]
if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
8004098: 687b ldr r3, [r7, #4]
800409a: 3b01 subs r3, #1
800409c: 4a0c ldr r2, [pc, #48] ; (80040d0 <SysTick_Config+0x40>)
800409e: 4293 cmp r3, r2
80040a0: d901 bls.n 80040a6 <SysTick_Config+0x16>
{
return (1UL); /* Reload value impossible */
80040a2: 2301 movs r3, #1
80040a4: e010 b.n 80040c8 <SysTick_Config+0x38>
}
SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
80040a6: 4b0b ldr r3, [pc, #44] ; (80040d4 <SysTick_Config+0x44>)
80040a8: 687a ldr r2, [r7, #4]
80040aa: 3a01 subs r2, #1
80040ac: 605a str r2, [r3, #4]
NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
80040ae: 2301 movs r3, #1
80040b0: 425b negs r3, r3
80040b2: 2103 movs r1, #3
80040b4: 0018 movs r0, r3
80040b6: f7ff ff7d bl 8003fb4 <__NVIC_SetPriority>
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
80040ba: 4b06 ldr r3, [pc, #24] ; (80040d4 <SysTick_Config+0x44>)
80040bc: 2200 movs r2, #0
80040be: 609a str r2, [r3, #8]
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
80040c0: 4b04 ldr r3, [pc, #16] ; (80040d4 <SysTick_Config+0x44>)
80040c2: 2207 movs r2, #7
80040c4: 601a str r2, [r3, #0]
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0UL); /* Function successful */
80040c6: 2300 movs r3, #0
}
80040c8: 0018 movs r0, r3
80040ca: 46bd mov sp, r7
80040cc: b002 add sp, #8
80040ce: bd80 pop {r7, pc}
80040d0: 00ffffff .word 0x00ffffff
80040d4: e000e010 .word 0xe000e010
080040d8 <HAL_NVIC_SetPriority>:
* with stm32l0xx devices, this parameter is a dummy value and it is ignored, because
* no subpriority supported in Cortex M0+ based products.
* @retval None
*/
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
{
80040d8: b580 push {r7, lr}
80040da: b084 sub sp, #16
80040dc: af00 add r7, sp, #0
80040de: 60b9 str r1, [r7, #8]
80040e0: 607a str r2, [r7, #4]
80040e2: 230f movs r3, #15
80040e4: 18fb adds r3, r7, r3
80040e6: 1c02 adds r2, r0, #0
80040e8: 701a strb r2, [r3, #0]
/* Check the parameters */
assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
NVIC_SetPriority(IRQn,PreemptPriority);
80040ea: 68ba ldr r2, [r7, #8]
80040ec: 230f movs r3, #15
80040ee: 18fb adds r3, r7, r3
80040f0: 781b ldrb r3, [r3, #0]
80040f2: b25b sxtb r3, r3
80040f4: 0011 movs r1, r2
80040f6: 0018 movs r0, r3
80040f8: f7ff ff5c bl 8003fb4 <__NVIC_SetPriority>
}
80040fc: 46c0 nop ; (mov r8, r8)
80040fe: 46bd mov sp, r7
8004100: b004 add sp, #16
8004102: bd80 pop {r7, pc}
08004104 <HAL_NVIC_EnableIRQ>:
* This parameter can be an enumerator of IRQn_Type enumeration
* (For the complete STM32 Devices IRQ Channels list, please refer to stm32l0xx.h file)
* @retval None
*/
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
{
8004104: b580 push {r7, lr}
8004106: b082 sub sp, #8
8004108: af00 add r7, sp, #0
800410a: 0002 movs r2, r0
800410c: 1dfb adds r3, r7, #7
800410e: 701a strb r2, [r3, #0]
/* Check the parameters */
assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
/* Enable interrupt */
NVIC_EnableIRQ(IRQn);
8004110: 1dfb adds r3, r7, #7
8004112: 781b ldrb r3, [r3, #0]
8004114: b25b sxtb r3, r3
8004116: 0018 movs r0, r3
8004118: f7ff ff12 bl 8003f40 <__NVIC_EnableIRQ>
}
800411c: 46c0 nop ; (mov r8, r8)
800411e: 46bd mov sp, r7
8004120: b002 add sp, #8
8004122: bd80 pop {r7, pc}
08004124 <HAL_NVIC_DisableIRQ>:
* This parameter can be an enumerator of IRQn_Type enumeration
* (For the complete STM32 Devices IRQ Channels list, please refer to stm32l0xx.h file)
* @retval None
*/
void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
{
8004124: b580 push {r7, lr}
8004126: b082 sub sp, #8
8004128: af00 add r7, sp, #0
800412a: 0002 movs r2, r0
800412c: 1dfb adds r3, r7, #7
800412e: 701a strb r2, [r3, #0]
/* Check the parameters */
assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
/* Disable interrupt */
NVIC_DisableIRQ(IRQn);
8004130: 1dfb adds r3, r7, #7
8004132: 781b ldrb r3, [r3, #0]
8004134: b25b sxtb r3, r3
8004136: 0018 movs r0, r3
8004138: f7ff ff1c bl 8003f74 <__NVIC_DisableIRQ>
}
800413c: 46c0 nop ; (mov r8, r8)
800413e: 46bd mov sp, r7
8004140: b002 add sp, #8
8004142: bd80 pop {r7, pc}
08004144 <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)
{
8004144: b580 push {r7, lr}
8004146: b082 sub sp, #8
8004148: af00 add r7, sp, #0
800414a: 6078 str r0, [r7, #4]
return SysTick_Config(TicksNumb);
800414c: 687b ldr r3, [r7, #4]
800414e: 0018 movs r0, r3
8004150: f7ff ff9e bl 8004090 <SysTick_Config>
8004154: 0003 movs r3, r0
}
8004156: 0018 movs r0, r3
8004158: 46bd mov sp, r7
800415a: b002 add sp, #8
800415c: bd80 pop {r7, pc}
0800415e <HAL_DMA_Abort>:
* @param hdma pointer to a DMA_HandleTypeDef structure that contains
* the configuration information for the specified DMA Channel.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
{
800415e: b580 push {r7, lr}
8004160: b084 sub sp, #16
8004162: af00 add r7, sp, #0
8004164: 6078 str r0, [r7, #4]
HAL_StatusTypeDef status = HAL_OK;
8004166: 230f movs r3, #15
8004168: 18fb adds r3, r7, r3
800416a: 2200 movs r2, #0
800416c: 701a strb r2, [r3, #0]
/* Check the DMA peripheral state */
if(hdma->State != HAL_DMA_STATE_BUSY)
800416e: 687b ldr r3, [r7, #4]
8004170: 2225 movs r2, #37 ; 0x25
8004172: 5c9b ldrb r3, [r3, r2]
8004174: b2db uxtb r3, r3
8004176: 2b02 cmp r3, #2
8004178: d008 beq.n 800418c <HAL_DMA_Abort+0x2e>
{
hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;
800417a: 687b ldr r3, [r7, #4]
800417c: 2204 movs r2, #4
800417e: 63da str r2, [r3, #60] ; 0x3c
/* Process Unlocked */
__HAL_UNLOCK(hdma);
8004180: 687b ldr r3, [r7, #4]
8004182: 2224 movs r2, #36 ; 0x24
8004184: 2100 movs r1, #0
8004186: 5499 strb r1, [r3, r2]
return HAL_ERROR;
8004188: 2301 movs r3, #1
800418a: e024 b.n 80041d6 <HAL_DMA_Abort+0x78>
}
else
{
/* Disable DMA IT */
__HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
800418c: 687b ldr r3, [r7, #4]
800418e: 681b ldr r3, [r3, #0]
8004190: 687a ldr r2, [r7, #4]
8004192: 6812 ldr r2, [r2, #0]
8004194: 6812 ldr r2, [r2, #0]
8004196: 210e movs r1, #14
8004198: 438a bics r2, r1
800419a: 601a str r2, [r3, #0]
/* Disable the channel */
__HAL_DMA_DISABLE(hdma);
800419c: 687b ldr r3, [r7, #4]
800419e: 681b ldr r3, [r3, #0]
80041a0: 687a ldr r2, [r7, #4]
80041a2: 6812 ldr r2, [r2, #0]
80041a4: 6812 ldr r2, [r2, #0]
80041a6: 2101 movs r1, #1
80041a8: 438a bics r2, r1
80041aa: 601a str r2, [r3, #0]
/* Clear all flags */
hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU));
80041ac: 687b ldr r3, [r7, #4]
80041ae: 6c1b ldr r3, [r3, #64] ; 0x40
80041b0: 687a ldr r2, [r7, #4]
80041b2: 6c52 ldr r2, [r2, #68] ; 0x44
80041b4: 211c movs r1, #28
80041b6: 400a ands r2, r1
80041b8: 2101 movs r1, #1
80041ba: 4091 lsls r1, r2
80041bc: 000a movs r2, r1
80041be: 605a str r2, [r3, #4]
/* Change the DMA state */
hdma->State = HAL_DMA_STATE_READY;
80041c0: 687b ldr r3, [r7, #4]
80041c2: 2225 movs r2, #37 ; 0x25
80041c4: 2101 movs r1, #1
80041c6: 5499 strb r1, [r3, r2]
/* Process Unlocked */
__HAL_UNLOCK(hdma);
80041c8: 687b ldr r3, [r7, #4]
80041ca: 2224 movs r2, #36 ; 0x24
80041cc: 2100 movs r1, #0
80041ce: 5499 strb r1, [r3, r2]
return status;
80041d0: 230f movs r3, #15
80041d2: 18fb adds r3, r7, r3
80041d4: 781b ldrb r3, [r3, #0]
}
}
80041d6: 0018 movs r0, r3
80041d8: 46bd mov sp, r7
80041da: b004 add sp, #16
80041dc: bd80 pop {r7, pc}
080041de <HAL_DMA_Abort_IT>:
* @param hdma pointer to a DMA_HandleTypeDef structure that contains
* the configuration information for the specified DMA Channel.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
{
80041de: b580 push {r7, lr}
80041e0: b084 sub sp, #16
80041e2: af00 add r7, sp, #0
80041e4: 6078 str r0, [r7, #4]
HAL_StatusTypeDef status = HAL_OK;
80041e6: 230f movs r3, #15
80041e8: 18fb adds r3, r7, r3
80041ea: 2200 movs r2, #0
80041ec: 701a strb r2, [r3, #0]
if(HAL_DMA_STATE_BUSY != hdma->State)
80041ee: 687b ldr r3, [r7, #4]
80041f0: 2225 movs r2, #37 ; 0x25
80041f2: 5c9b ldrb r3, [r3, r2]
80041f4: b2db uxtb r3, r3
80041f6: 2b02 cmp r3, #2
80041f8: d007 beq.n 800420a <HAL_DMA_Abort_IT+0x2c>
{
/* no transfer ongoing */
hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;
80041fa: 687b ldr r3, [r7, #4]
80041fc: 2204 movs r2, #4
80041fe: 63da str r2, [r3, #60] ; 0x3c
status = HAL_ERROR;
8004200: 230f movs r3, #15
8004202: 18fb adds r3, r7, r3
8004204: 2201 movs r2, #1
8004206: 701a strb r2, [r3, #0]
8004208: e02a b.n 8004260 <HAL_DMA_Abort_IT+0x82>
}
else
{
/* Disable DMA IT */
__HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
800420a: 687b ldr r3, [r7, #4]
800420c: 681b ldr r3, [r3, #0]
800420e: 687a ldr r2, [r7, #4]
8004210: 6812 ldr r2, [r2, #0]
8004212: 6812 ldr r2, [r2, #0]
8004214: 210e movs r1, #14
8004216: 438a bics r2, r1
8004218: 601a str r2, [r3, #0]
/* Disable the channel */
__HAL_DMA_DISABLE(hdma);
800421a: 687b ldr r3, [r7, #4]
800421c: 681b ldr r3, [r3, #0]
800421e: 687a ldr r2, [r7, #4]
8004220: 6812 ldr r2, [r2, #0]
8004222: 6812 ldr r2, [r2, #0]
8004224: 2101 movs r1, #1
8004226: 438a bics r2, r1
8004228: 601a str r2, [r3, #0]
/* Clear all flags */
hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU));
800422a: 687b ldr r3, [r7, #4]
800422c: 6c1b ldr r3, [r3, #64] ; 0x40
800422e: 687a ldr r2, [r7, #4]
8004230: 6c52 ldr r2, [r2, #68] ; 0x44
8004232: 211c movs r1, #28
8004234: 400a ands r2, r1
8004236: 2101 movs r1, #1
8004238: 4091 lsls r1, r2
800423a: 000a movs r2, r1
800423c: 605a str r2, [r3, #4]
/* Change the DMA state */
hdma->State = HAL_DMA_STATE_READY;
800423e: 687b ldr r3, [r7, #4]
8004240: 2225 movs r2, #37 ; 0x25
8004242: 2101 movs r1, #1
8004244: 5499 strb r1, [r3, r2]
/* Process Unlocked */
__HAL_UNLOCK(hdma);
8004246: 687b ldr r3, [r7, #4]
8004248: 2224 movs r2, #36 ; 0x24
800424a: 2100 movs r1, #0
800424c: 5499 strb r1, [r3, r2]
/* Call User Abort callback */
if(hdma->XferAbortCallback != NULL)
800424e: 687b ldr r3, [r7, #4]
8004250: 6b9b ldr r3, [r3, #56] ; 0x38
8004252: 2b00 cmp r3, #0
8004254: d004 beq.n 8004260 <HAL_DMA_Abort_IT+0x82>
{
hdma->XferAbortCallback(hdma);
8004256: 687b ldr r3, [r7, #4]
8004258: 6b9b ldr r3, [r3, #56] ; 0x38
800425a: 687a ldr r2, [r7, #4]
800425c: 0010 movs r0, r2
800425e: 4798 blx r3
}
}
return status;
8004260: 230f movs r3, #15
8004262: 18fb adds r3, r7, r3
8004264: 781b ldrb r3, [r3, #0]
}
8004266: 0018 movs r0, r3
8004268: 46bd mov sp, r7
800426a: b004 add sp, #16
800426c: bd80 pop {r7, pc}
...
08004270 <HAL_FLASH_Program>:
* @param Data Specifie the data to be programmed
*
* @retval HAL_StatusTypeDef HAL Status
*/
HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data)
{
8004270: b590 push {r4, r7, lr}
8004272: b087 sub sp, #28
8004274: af00 add r7, sp, #0
8004276: 60f8 str r0, [r7, #12]
8004278: 60b9 str r1, [r7, #8]
800427a: 607a str r2, [r7, #4]
HAL_StatusTypeDef status = HAL_ERROR;
800427c: 2317 movs r3, #23
800427e: 18fb adds r3, r7, r3
8004280: 2201 movs r2, #1
8004282: 701a strb r2, [r3, #0]
/* Process Locked */
__HAL_LOCK(&pFlash);
8004284: 4b16 ldr r3, [pc, #88] ; (80042e0 <HAL_FLASH_Program+0x70>)
8004286: 7c1b ldrb r3, [r3, #16]
8004288: 2b01 cmp r3, #1
800428a: d101 bne.n 8004290 <HAL_FLASH_Program+0x20>
800428c: 2302 movs r3, #2
800428e: e023 b.n 80042d8 <HAL_FLASH_Program+0x68>
8004290: 4b13 ldr r3, [pc, #76] ; (80042e0 <HAL_FLASH_Program+0x70>)
8004292: 2201 movs r2, #1
8004294: 741a strb r2, [r3, #16]
/* Check the parameters */
assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
assert_param(IS_FLASH_PROGRAM_ADDRESS(Address));
/* Wait for last operation to be completed */
status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);
8004296: 2317 movs r3, #23
8004298: 18fc adds r4, r7, r3
800429a: 4b12 ldr r3, [pc, #72] ; (80042e4 <HAL_FLASH_Program+0x74>)
800429c: 0018 movs r0, r3
800429e: f000 f887 bl 80043b0 <FLASH_WaitForLastOperation>
80042a2: 0003 movs r3, r0
80042a4: 7023 strb r3, [r4, #0]
if(status == HAL_OK)
80042a6: 2317 movs r3, #23
80042a8: 18fb adds r3, r7, r3
80042aa: 781b ldrb r3, [r3, #0]
80042ac: 2b00 cmp r3, #0
80042ae: d10d bne.n 80042cc <HAL_FLASH_Program+0x5c>
{
/* Clean the error context */
pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
80042b0: 4b0b ldr r3, [pc, #44] ; (80042e0 <HAL_FLASH_Program+0x70>)
80042b2: 2200 movs r2, #0
80042b4: 615a str r2, [r3, #20]
/*Program word (32-bit) at a specified address.*/
*(__IO uint32_t *)Address = Data;
80042b6: 68bb ldr r3, [r7, #8]
80042b8: 687a ldr r2, [r7, #4]
80042ba: 601a str r2, [r3, #0]
/* Wait for last operation to be completed */
status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);
80042bc: 2317 movs r3, #23
80042be: 18fc adds r4, r7, r3
80042c0: 4b08 ldr r3, [pc, #32] ; (80042e4 <HAL_FLASH_Program+0x74>)
80042c2: 0018 movs r0, r3
80042c4: f000 f874 bl 80043b0 <FLASH_WaitForLastOperation>
80042c8: 0003 movs r3, r0
80042ca: 7023 strb r3, [r4, #0]
}
/* Process Unlocked */
__HAL_UNLOCK(&pFlash);
80042cc: 4b04 ldr r3, [pc, #16] ; (80042e0 <HAL_FLASH_Program+0x70>)
80042ce: 2200 movs r2, #0
80042d0: 741a strb r2, [r3, #16]
return status;
80042d2: 2317 movs r3, #23
80042d4: 18fb adds r3, r7, r3
80042d6: 781b ldrb r3, [r3, #0]
}
80042d8: 0018 movs r0, r3
80042da: 46bd mov sp, r7
80042dc: b007 add sp, #28
80042de: bd90 pop {r4, r7, pc}
80042e0: 20000390 .word 0x20000390
80042e4: 0000c350 .word 0x0000c350
080042e8 <HAL_FLASH_Unlock>:
/**
* @brief Unlock the FLASH control register access
* @retval HAL Status
*/
HAL_StatusTypeDef HAL_FLASH_Unlock(void)
{
80042e8: b580 push {r7, lr}
80042ea: b086 sub sp, #24
80042ec: af00 add r7, sp, #0
uint32_t primask_bit;
/* Unlocking FLASH_PECR register access*/
if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK))
80042ee: 4b21 ldr r3, [pc, #132] ; (8004374 <HAL_FLASH_Unlock+0x8c>)
80042f0: 685b ldr r3, [r3, #4]
80042f2: 2201 movs r2, #1
80042f4: 4013 ands r3, r2
80042f6: 2b01 cmp r3, #1
80042f8: d118 bne.n 800432c <HAL_FLASH_Unlock+0x44>
__ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory");
80042fa: f3ef 8310 mrs r3, PRIMASK
80042fe: 60fb str r3, [r7, #12]
return(result);
8004300: 68fb ldr r3, [r7, #12]
{
/* Disable interrupts to avoid any interruption during unlock sequence */
primask_bit = __get_PRIMASK();
8004302: 617b str r3, [r7, #20]
__ASM volatile ("cpsid i" : : : "memory");
8004304: b672 cpsid i
__disable_irq();
WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY1);
8004306: 4b1b ldr r3, [pc, #108] ; (8004374 <HAL_FLASH_Unlock+0x8c>)
8004308: 4a1b ldr r2, [pc, #108] ; (8004378 <HAL_FLASH_Unlock+0x90>)
800430a: 60da str r2, [r3, #12]
WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY2);
800430c: 4b19 ldr r3, [pc, #100] ; (8004374 <HAL_FLASH_Unlock+0x8c>)
800430e: 4a1b ldr r2, [pc, #108] ; (800437c <HAL_FLASH_Unlock+0x94>)
8004310: 60da str r2, [r3, #12]
8004312: 697b ldr r3, [r7, #20]
8004314: 613b str r3, [r7, #16]
__ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
8004316: 693b ldr r3, [r7, #16]
8004318: f383 8810 msr PRIMASK, r3
/* Re-enable the interrupts: restore previous priority mask */
__set_PRIMASK(primask_bit);
if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK))
800431c: 4b15 ldr r3, [pc, #84] ; (8004374 <HAL_FLASH_Unlock+0x8c>)
800431e: 685b ldr r3, [r3, #4]
8004320: 2201 movs r2, #1
8004322: 4013 ands r3, r2
8004324: 2b01 cmp r3, #1
8004326: d101 bne.n 800432c <HAL_FLASH_Unlock+0x44>
{
return HAL_ERROR;
8004328: 2301 movs r3, #1
800432a: e01f b.n 800436c <HAL_FLASH_Unlock+0x84>
}
}
if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PRGLOCK))
800432c: 4b11 ldr r3, [pc, #68] ; (8004374 <HAL_FLASH_Unlock+0x8c>)
800432e: 685b ldr r3, [r3, #4]
8004330: 2202 movs r2, #2
8004332: 4013 ands r3, r2
8004334: 2b02 cmp r3, #2
8004336: d118 bne.n 800436a <HAL_FLASH_Unlock+0x82>
__ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory");
8004338: f3ef 8310 mrs r3, PRIMASK
800433c: 607b str r3, [r7, #4]
return(result);
800433e: 687b ldr r3, [r7, #4]
{
/* Disable interrupts to avoid any interruption during unlock sequence */
primask_bit = __get_PRIMASK();
8004340: 617b str r3, [r7, #20]
__ASM volatile ("cpsid i" : : : "memory");
8004342: b672 cpsid i
__disable_irq();
/* Unlocking the program memory access */
WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY1);
8004344: 4b0b ldr r3, [pc, #44] ; (8004374 <HAL_FLASH_Unlock+0x8c>)
8004346: 4a0e ldr r2, [pc, #56] ; (8004380 <HAL_FLASH_Unlock+0x98>)
8004348: 611a str r2, [r3, #16]
WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY2);
800434a: 4b0a ldr r3, [pc, #40] ; (8004374 <HAL_FLASH_Unlock+0x8c>)
800434c: 4a0d ldr r2, [pc, #52] ; (8004384 <HAL_FLASH_Unlock+0x9c>)
800434e: 611a str r2, [r3, #16]
8004350: 697b ldr r3, [r7, #20]
8004352: 60bb str r3, [r7, #8]
__ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
8004354: 68bb ldr r3, [r7, #8]
8004356: f383 8810 msr PRIMASK, r3
/* Re-enable the interrupts: restore previous priority mask */
__set_PRIMASK(primask_bit);
if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PRGLOCK))
800435a: 4b06 ldr r3, [pc, #24] ; (8004374 <HAL_FLASH_Unlock+0x8c>)
800435c: 685b ldr r3, [r3, #4]
800435e: 2202 movs r2, #2
8004360: 4013 ands r3, r2
8004362: 2b02 cmp r3, #2
8004364: d101 bne.n 800436a <HAL_FLASH_Unlock+0x82>
{
return HAL_ERROR;
8004366: 2301 movs r3, #1
8004368: e000 b.n 800436c <HAL_FLASH_Unlock+0x84>
}
}
return HAL_OK;
800436a: 2300 movs r3, #0
}
800436c: 0018 movs r0, r3
800436e: 46bd mov sp, r7
8004370: b006 add sp, #24
8004372: bd80 pop {r7, pc}
8004374: 40022000 .word 0x40022000
8004378: 89abcdef .word 0x89abcdef
800437c: 02030405 .word 0x02030405
8004380: 8c9daebf .word 0x8c9daebf
8004384: 13141516 .word 0x13141516
08004388 <HAL_FLASH_Lock>:
/**
* @brief Locks the FLASH control register access
* @retval HAL Status
*/
HAL_StatusTypeDef HAL_FLASH_Lock(void)
{
8004388: b580 push {r7, lr}
800438a: af00 add r7, sp, #0
/* Set the PRGLOCK Bit to lock the FLASH Registers access */
SET_BIT(FLASH->PECR, FLASH_PECR_PRGLOCK);
800438c: 4b07 ldr r3, [pc, #28] ; (80043ac <HAL_FLASH_Lock+0x24>)
800438e: 4a07 ldr r2, [pc, #28] ; (80043ac <HAL_FLASH_Lock+0x24>)
8004390: 6852 ldr r2, [r2, #4]
8004392: 2102 movs r1, #2
8004394: 430a orrs r2, r1
8004396: 605a str r2, [r3, #4]
/* Set the PELOCK Bit to lock the PECR Register access */
SET_BIT(FLASH->PECR, FLASH_PECR_PELOCK);
8004398: 4b04 ldr r3, [pc, #16] ; (80043ac <HAL_FLASH_Lock+0x24>)
800439a: 4a04 ldr r2, [pc, #16] ; (80043ac <HAL_FLASH_Lock+0x24>)
800439c: 6852 ldr r2, [r2, #4]
800439e: 2101 movs r1, #1
80043a0: 430a orrs r2, r1
80043a2: 605a str r2, [r3, #4]
return HAL_OK;
80043a4: 2300 movs r3, #0
}
80043a6: 0018 movs r0, r3
80043a8: 46bd mov sp, r7
80043aa: bd80 pop {r7, pc}
80043ac: 40022000 .word 0x40022000
080043b0 <FLASH_WaitForLastOperation>:
* @brief Wait for a FLASH operation to complete.
* @param Timeout maximum flash operation timeout
* @retval HAL Status
*/
HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
{
80043b0: b580 push {r7, lr}
80043b2: b084 sub sp, #16
80043b4: af00 add r7, sp, #0
80043b6: 6078 str r0, [r7, #4]
/* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
Even if the FLASH operation fails, the BUSY flag will be reset and an error
flag will be set */
uint32_t tickstart = HAL_GetTick();
80043b8: f7ff fdb8 bl 8003f2c <HAL_GetTick>
80043bc: 0003 movs r3, r0
80043be: 60fb str r3, [r7, #12]
while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
80043c0: e00f b.n 80043e2 <FLASH_WaitForLastOperation+0x32>
{
if (Timeout != HAL_MAX_DELAY)
80043c2: 687b ldr r3, [r7, #4]
80043c4: 3301 adds r3, #1
80043c6: d00c beq.n 80043e2 <FLASH_WaitForLastOperation+0x32>
{
if((Timeout == 0U) || ((HAL_GetTick()-tickstart) > Timeout))
80043c8: 687b ldr r3, [r7, #4]
80043ca: 2b00 cmp r3, #0
80043cc: d007 beq.n 80043de <FLASH_WaitForLastOperation+0x2e>
80043ce: f7ff fdad bl 8003f2c <HAL_GetTick>
80043d2: 0002 movs r2, r0
80043d4: 68fb ldr r3, [r7, #12]
80043d6: 1ad2 subs r2, r2, r3
80043d8: 687b ldr r3, [r7, #4]
80043da: 429a cmp r2, r3
80043dc: d901 bls.n 80043e2 <FLASH_WaitForLastOperation+0x32>
{
return HAL_TIMEOUT;
80043de: 2303 movs r3, #3
80043e0: e052 b.n 8004488 <FLASH_WaitForLastOperation+0xd8>
while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
80043e2: 4b2b ldr r3, [pc, #172] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
80043e4: 699b ldr r3, [r3, #24]
80043e6: 2201 movs r2, #1
80043e8: 4013 ands r3, r2
80043ea: 2b01 cmp r3, #1
80043ec: d0e9 beq.n 80043c2 <FLASH_WaitForLastOperation+0x12>
}
}
}
/* Check FLASH End of Operation flag */
if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
80043ee: 4b28 ldr r3, [pc, #160] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
80043f0: 699b ldr r3, [r3, #24]
80043f2: 2202 movs r2, #2
80043f4: 4013 ands r3, r2
80043f6: 2b02 cmp r3, #2
80043f8: d102 bne.n 8004400 <FLASH_WaitForLastOperation+0x50>
{
/* Clear FLASH End of Operation pending bit */
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
80043fa: 4b25 ldr r3, [pc, #148] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
80043fc: 2202 movs r2, #2
80043fe: 619a str r2, [r3, #24]
}
if( __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) ||
8004400: 4b23 ldr r3, [pc, #140] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
8004402: 699a ldr r2, [r3, #24]
8004404: 2380 movs r3, #128 ; 0x80
8004406: 005b lsls r3, r3, #1
8004408: 401a ands r2, r3
800440a: 2380 movs r3, #128 ; 0x80
800440c: 005b lsls r3, r3, #1
800440e: 429a cmp r2, r3
8004410: d035 beq.n 800447e <FLASH_WaitForLastOperation+0xce>
__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) ||
8004412: 4b1f ldr r3, [pc, #124] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
8004414: 699a ldr r2, [r3, #24]
8004416: 2380 movs r3, #128 ; 0x80
8004418: 009b lsls r3, r3, #2
800441a: 401a ands r2, r3
if( __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) ||
800441c: 2380 movs r3, #128 ; 0x80
800441e: 009b lsls r3, r3, #2
8004420: 429a cmp r2, r3
8004422: d02c beq.n 800447e <FLASH_WaitForLastOperation+0xce>
__HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) ||
8004424: 4b1a ldr r3, [pc, #104] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
8004426: 699a ldr r2, [r3, #24]
8004428: 2380 movs r3, #128 ; 0x80
800442a: 00db lsls r3, r3, #3
800442c: 401a ands r2, r3
__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) ||
800442e: 2380 movs r3, #128 ; 0x80
8004430: 00db lsls r3, r3, #3
8004432: 429a cmp r2, r3
8004434: d023 beq.n 800447e <FLASH_WaitForLastOperation+0xce>
__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) ||
8004436: 4b16 ldr r3, [pc, #88] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
8004438: 699a ldr r2, [r3, #24]
800443a: 2380 movs r3, #128 ; 0x80
800443c: 011b lsls r3, r3, #4
800443e: 401a ands r2, r3
__HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) ||
8004440: 2380 movs r3, #128 ; 0x80
8004442: 011b lsls r3, r3, #4
8004444: 429a cmp r2, r3
8004446: d01a beq.n 800447e <FLASH_WaitForLastOperation+0xce>
__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) ||
8004448: 4b11 ldr r3, [pc, #68] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
800444a: 699a ldr r2, [r3, #24]
800444c: 2380 movs r3, #128 ; 0x80
800444e: 019b lsls r3, r3, #6
8004450: 401a ands r2, r3
__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) ||
8004452: 2380 movs r3, #128 ; 0x80
8004454: 019b lsls r3, r3, #6
8004456: 429a cmp r2, r3
8004458: d011 beq.n 800447e <FLASH_WaitForLastOperation+0xce>
__HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) ||
800445a: 4b0d ldr r3, [pc, #52] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
800445c: 699a ldr r2, [r3, #24]
800445e: 2380 movs r3, #128 ; 0x80
8004460: 029b lsls r3, r3, #10
8004462: 401a ands r2, r3
__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) ||
8004464: 2380 movs r3, #128 ; 0x80
8004466: 029b lsls r3, r3, #10
8004468: 429a cmp r2, r3
800446a: d008 beq.n 800447e <FLASH_WaitForLastOperation+0xce>
__HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) )
800446c: 4b08 ldr r3, [pc, #32] ; (8004490 <FLASH_WaitForLastOperation+0xe0>)
800446e: 699a ldr r2, [r3, #24]
8004470: 2380 movs r3, #128 ; 0x80
8004472: 025b lsls r3, r3, #9
8004474: 401a ands r2, r3
__HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) ||
8004476: 2380 movs r3, #128 ; 0x80
8004478: 025b lsls r3, r3, #9
800447a: 429a cmp r2, r3
800447c: d103 bne.n 8004486 <FLASH_WaitForLastOperation+0xd6>
* cut of the STM32L031xx device or the first cut of the STM32L041xx
* device, this error should be ignored. The revId of the device
* can be retrieved via the HAL_GetREVID() function.
*
*/
FLASH_SetErrorCode();
800447e: f000 f809 bl 8004494 <FLASH_SetErrorCode>
return HAL_ERROR;
8004482: 2301 movs r3, #1
8004484: e000 b.n 8004488 <FLASH_WaitForLastOperation+0xd8>
}
/* There is no error flag set */
return HAL_OK;
8004486: 2300 movs r3, #0
}
8004488: 0018 movs r0, r3
800448a: 46bd mov sp, r7
800448c: b004 add sp, #16
800448e: bd80 pop {r7, pc}
8004490: 40022000 .word 0x40022000
08004494 <FLASH_SetErrorCode>:
/**
* @brief Set the specific FLASH error flag.
* @retval None
*/
static void FLASH_SetErrorCode(void)
{
8004494: b580 push {r7, lr}
8004496: b082 sub sp, #8
8004498: af00 add r7, sp, #0
uint32_t flags = 0;
800449a: 2300 movs r3, #0
800449c: 607b str r3, [r7, #4]
if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR))
800449e: 4b49 ldr r3, [pc, #292] ; (80045c4 <FLASH_SetErrorCode+0x130>)
80044a0: 699a ldr r2, [r3, #24]
80044a2: 2380 movs r3, #128 ; 0x80
80044a4: 005b lsls r3, r3, #1
80044a6: 401a ands r2, r3
80044a8: 2380 movs r3, #128 ; 0x80
80044aa: 005b lsls r3, r3, #1
80044ac: 429a cmp r2, r3
80044ae: d10a bne.n 80044c6 <FLASH_SetErrorCode+0x32>
{
pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP;
80044b0: 4b45 ldr r3, [pc, #276] ; (80045c8 <FLASH_SetErrorCode+0x134>)
80044b2: 695b ldr r3, [r3, #20]
80044b4: 2202 movs r2, #2
80044b6: 431a orrs r2, r3
80044b8: 4b43 ldr r3, [pc, #268] ; (80045c8 <FLASH_SetErrorCode+0x134>)
80044ba: 615a str r2, [r3, #20]
flags |= FLASH_FLAG_WRPERR;
80044bc: 687b ldr r3, [r7, #4]
80044be: 2280 movs r2, #128 ; 0x80
80044c0: 0052 lsls r2, r2, #1
80044c2: 4313 orrs r3, r2
80044c4: 607b str r3, [r7, #4]
}
if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR))
80044c6: 4b3f ldr r3, [pc, #252] ; (80045c4 <FLASH_SetErrorCode+0x130>)
80044c8: 699a ldr r2, [r3, #24]
80044ca: 2380 movs r3, #128 ; 0x80
80044cc: 009b lsls r3, r3, #2
80044ce: 401a ands r2, r3
80044d0: 2380 movs r3, #128 ; 0x80
80044d2: 009b lsls r3, r3, #2
80044d4: 429a cmp r2, r3
80044d6: d10a bne.n 80044ee <FLASH_SetErrorCode+0x5a>
{
pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA;
80044d8: 4b3b ldr r3, [pc, #236] ; (80045c8 <FLASH_SetErrorCode+0x134>)
80044da: 695b ldr r3, [r3, #20]
80044dc: 2201 movs r2, #1
80044de: 431a orrs r2, r3
80044e0: 4b39 ldr r3, [pc, #228] ; (80045c8 <FLASH_SetErrorCode+0x134>)
80044e2: 615a str r2, [r3, #20]
flags |= FLASH_FLAG_PGAERR;
80044e4: 687b ldr r3, [r7, #4]
80044e6: 2280 movs r2, #128 ; 0x80
80044e8: 0092 lsls r2, r2, #2
80044ea: 4313 orrs r3, r2
80044ec: 607b str r3, [r7, #4]
}
if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR))
80044ee: 4b35 ldr r3, [pc, #212] ; (80045c4 <FLASH_SetErrorCode+0x130>)
80044f0: 699a ldr r2, [r3, #24]
80044f2: 2380 movs r3, #128 ; 0x80
80044f4: 00db lsls r3, r3, #3
80044f6: 401a ands r2, r3
80044f8: 2380 movs r3, #128 ; 0x80
80044fa: 00db lsls r3, r3, #3
80044fc: 429a cmp r2, r3
80044fe: d10a bne.n 8004516 <FLASH_SetErrorCode+0x82>
{
pFlash.ErrorCode |= HAL_FLASH_ERROR_SIZE;
8004500: 4b31 ldr r3, [pc, #196] ; (80045c8 <FLASH_SetErrorCode+0x134>)
8004502: 695b ldr r3, [r3, #20]
8004504: 2208 movs r2, #8
8004506: 431a orrs r2, r3
8004508: 4b2f ldr r3, [pc, #188] ; (80045c8 <FLASH_SetErrorCode+0x134>)
800450a: 615a str r2, [r3, #20]
flags |= FLASH_FLAG_SIZERR;
800450c: 687b ldr r3, [r7, #4]
800450e: 2280 movs r2, #128 ; 0x80
8004510: 00d2 lsls r2, r2, #3
8004512: 4313 orrs r3, r2
8004514: 607b str r3, [r7, #4]
}
if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR))
8004516: 4b2b ldr r3, [pc, #172] ; (80045c4 <FLASH_SetErrorCode+0x130>)
8004518: 699a ldr r2, [r3, #24]
800451a: 2380 movs r3, #128 ; 0x80
800451c: 011b lsls r3, r3, #4
800451e: 401a ands r2, r3
8004520: 2380 movs r3, #128 ; 0x80
8004522: 011b lsls r3, r3, #4
8004524: 429a cmp r2, r3
8004526: d10a bne.n 800453e <FLASH_SetErrorCode+0xaa>
* cut of the STM32L031xx device or the first cut of the STM32L041xx
* device, this error should be ignored. The revId of the device
* can be retrieved via the HAL_GetREVID() function.
*
*/
pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV;
8004528: 4b27 ldr r3, [pc, #156] ; (80045c8 <FLASH_SetErrorCode+0x134>)
800452a: 695b ldr r3, [r3, #20]
800452c: 2204 movs r2, #4
800452e: 431a orrs r2, r3
8004530: 4b25 ldr r3, [pc, #148] ; (80045c8 <FLASH_SetErrorCode+0x134>)
8004532: 615a str r2, [r3, #20]
flags |= FLASH_FLAG_OPTVERR;
8004534: 687b ldr r3, [r7, #4]
8004536: 2280 movs r2, #128 ; 0x80
8004538: 0112 lsls r2, r2, #4
800453a: 4313 orrs r3, r2
800453c: 607b str r3, [r7, #4]
}
if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR))
800453e: 4b21 ldr r3, [pc, #132] ; (80045c4 <FLASH_SetErrorCode+0x130>)
8004540: 699a ldr r2, [r3, #24]
8004542: 2380 movs r3, #128 ; 0x80
8004544: 019b lsls r3, r3, #6
8004546: 401a ands r2, r3
8004548: 2380 movs r3, #128 ; 0x80
800454a: 019b lsls r3, r3, #6
800454c: 429a cmp r2, r3
800454e: d10a bne.n 8004566 <FLASH_SetErrorCode+0xd2>
{
pFlash.ErrorCode |= HAL_FLASH_ERROR_RD;
8004550: 4b1d ldr r3, [pc, #116] ; (80045c8 <FLASH_SetErrorCode+0x134>)
8004552: 695b ldr r3, [r3, #20]
8004554: 2210 movs r2, #16
8004556: 431a orrs r2, r3
8004558: 4b1b ldr r3, [pc, #108] ; (80045c8 <FLASH_SetErrorCode+0x134>)
800455a: 615a str r2, [r3, #20]
flags |= FLASH_FLAG_RDERR;
800455c: 687b ldr r3, [r7, #4]
800455e: 2280 movs r2, #128 ; 0x80
8004560: 0192 lsls r2, r2, #6
8004562: 4313 orrs r3, r2
8004564: 607b str r3, [r7, #4]
}
if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR))
8004566: 4b17 ldr r3, [pc, #92] ; (80045c4 <FLASH_SetErrorCode+0x130>)
8004568: 699a ldr r2, [r3, #24]
800456a: 2380 movs r3, #128 ; 0x80
800456c: 029b lsls r3, r3, #10
800456e: 401a ands r2, r3
8004570: 2380 movs r3, #128 ; 0x80
8004572: 029b lsls r3, r3, #10
8004574: 429a cmp r2, r3
8004576: d109 bne.n 800458c <FLASH_SetErrorCode+0xf8>
{
pFlash.ErrorCode |= HAL_FLASH_ERROR_FWWERR;
8004578: 4b13 ldr r3, [pc, #76] ; (80045c8 <FLASH_SetErrorCode+0x134>)
800457a: 695b ldr r3, [r3, #20]
800457c: 2220 movs r2, #32
800457e: 431a orrs r2, r3
8004580: 4b11 ldr r3, [pc, #68] ; (80045c8 <FLASH_SetErrorCode+0x134>)
8004582: 615a str r2, [r3, #20]
flags |= HAL_FLASH_ERROR_FWWERR;
8004584: 687b ldr r3, [r7, #4]
8004586: 2220 movs r2, #32
8004588: 4313 orrs r3, r2
800458a: 607b str r3, [r7, #4]
}
if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR))
800458c: 4b0d ldr r3, [pc, #52] ; (80045c4 <FLASH_SetErrorCode+0x130>)
800458e: 699a ldr r2, [r3, #24]
8004590: 2380 movs r3, #128 ; 0x80
8004592: 025b lsls r3, r3, #9
8004594: 401a ands r2, r3
8004596: 2380 movs r3, #128 ; 0x80
8004598: 025b lsls r3, r3, #9
800459a: 429a cmp r2, r3
800459c: d10a bne.n 80045b4 <FLASH_SetErrorCode+0x120>
{
pFlash.ErrorCode |= HAL_FLASH_ERROR_NOTZERO;
800459e: 4b0a ldr r3, [pc, #40] ; (80045c8 <FLASH_SetErrorCode+0x134>)
80045a0: 695b ldr r3, [r3, #20]
80045a2: 2240 movs r2, #64 ; 0x40
80045a4: 431a orrs r2, r3
80045a6: 4b08 ldr r3, [pc, #32] ; (80045c8 <FLASH_SetErrorCode+0x134>)
80045a8: 615a str r2, [r3, #20]
flags |= FLASH_FLAG_NOTZEROERR;
80045aa: 687b ldr r3, [r7, #4]
80045ac: 2280 movs r2, #128 ; 0x80
80045ae: 0252 lsls r2, r2, #9
80045b0: 4313 orrs r3, r2
80045b2: 607b str r3, [r7, #4]
}
/* Clear FLASH error pending bits */
__HAL_FLASH_CLEAR_FLAG(flags);
80045b4: 4b03 ldr r3, [pc, #12] ; (80045c4 <FLASH_SetErrorCode+0x130>)
80045b6: 687a ldr r2, [r7, #4]
80045b8: 619a str r2, [r3, #24]
}
80045ba: 46c0 nop ; (mov r8, r8)
80045bc: 46bd mov sp, r7
80045be: b002 add sp, #8
80045c0: bd80 pop {r7, pc}
80045c2: 46c0 nop ; (mov r8, r8)
80045c4: 40022000 .word 0x40022000
80045c8: 20000390 .word 0x20000390
080045cc <FLASH_PageErase>:
* @note A Page is erased in the Program memory only if the address to load
* is the start address of a page (multiple of @ref FLASH_PAGE_SIZE bytes).
* @retval None
*/
void FLASH_PageErase(uint32_t PageAddress)
{
80045cc: b580 push {r7, lr}
80045ce: b082 sub sp, #8
80045d0: af00 add r7, sp, #0
80045d2: 6078 str r0, [r7, #4]
/* Clean the error context */
pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
80045d4: 4b0c ldr r3, [pc, #48] ; (8004608 <FLASH_PageErase+0x3c>)
80045d6: 2200 movs r2, #0
80045d8: 615a str r2, [r3, #20]
/* Set the ERASE bit */
SET_BIT(FLASH->PECR, FLASH_PECR_ERASE);
80045da: 4b0c ldr r3, [pc, #48] ; (800460c <FLASH_PageErase+0x40>)
80045dc: 4a0b ldr r2, [pc, #44] ; (800460c <FLASH_PageErase+0x40>)
80045de: 6852 ldr r2, [r2, #4]
80045e0: 2180 movs r1, #128 ; 0x80
80045e2: 0089 lsls r1, r1, #2
80045e4: 430a orrs r2, r1
80045e6: 605a str r2, [r3, #4]
/* Set PROG bit */
SET_BIT(FLASH->PECR, FLASH_PECR_PROG);
80045e8: 4b08 ldr r3, [pc, #32] ; (800460c <FLASH_PageErase+0x40>)
80045ea: 4a08 ldr r2, [pc, #32] ; (800460c <FLASH_PageErase+0x40>)
80045ec: 6852 ldr r2, [r2, #4]
80045ee: 2108 movs r1, #8
80045f0: 430a orrs r2, r1
80045f2: 605a str r2, [r3, #4]
/* Write 00000000h to the first word of the program page to erase */
*(__IO uint32_t *)(uint32_t)(PageAddress & ~(FLASH_PAGE_SIZE - 1)) = 0x00000000;
80045f4: 687b ldr r3, [r7, #4]
80045f6: 227f movs r2, #127 ; 0x7f
80045f8: 4393 bics r3, r2
80045fa: 2200 movs r2, #0
80045fc: 601a str r2, [r3, #0]
}
80045fe: 46c0 nop ; (mov r8, r8)
8004600: 46bd mov sp, r7
8004602: b002 add sp, #8
8004604: bd80 pop {r7, pc}
8004606: 46c0 nop ; (mov r8, r8)
8004608: 20000390 .word 0x20000390
800460c: 40022000 .word 0x40022000
08004610 <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)
{
8004610: b580 push {r7, lr}
8004612: b086 sub sp, #24
8004614: af00 add r7, sp, #0
8004616: 6078 str r0, [r7, #4]
8004618: 6039 str r1, [r7, #0]
uint32_t position = 0x00U;
800461a: 2300 movs r3, #0
800461c: 617b str r3, [r7, #20]
uint32_t iocurrent = 0x00U;
800461e: 2300 movs r3, #0
8004620: 60fb str r3, [r7, #12]
uint32_t temp = 0x00U;
8004622: 2300 movs r3, #0
8004624: 613b str r3, [r7, #16]
assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
assert_param(IS_GPIO_PULL(GPIO_Init->Pull));
assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, (GPIO_Init->Pin)));
/* Configure the port pins */
while (((GPIO_Init->Pin) >> position) != 0)
8004626: e155 b.n 80048d4 <HAL_GPIO_Init+0x2c4>
{
/* Get the IO position */
iocurrent = (GPIO_Init->Pin) & (1U << position);
8004628: 683b ldr r3, [r7, #0]
800462a: 681b ldr r3, [r3, #0]
800462c: 2101 movs r1, #1
800462e: 697a ldr r2, [r7, #20]
8004630: 4091 lsls r1, r2
8004632: 000a movs r2, r1
8004634: 4013 ands r3, r2
8004636: 60fb str r3, [r7, #12]
if (iocurrent)
8004638: 68fb ldr r3, [r7, #12]
800463a: 2b00 cmp r3, #0
800463c: d100 bne.n 8004640 <HAL_GPIO_Init+0x30>
800463e: e146 b.n 80048ce <HAL_GPIO_Init+0x2be>
{
/*--------------------- GPIO Mode Configuration ------------------------*/
/* In case of Output or Alternate function mode selection */
if ((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
8004640: 683b ldr r3, [r7, #0]
8004642: 685b ldr r3, [r3, #4]
8004644: 2b01 cmp r3, #1
8004646: d00b beq.n 8004660 <HAL_GPIO_Init+0x50>
8004648: 683b ldr r3, [r7, #0]
800464a: 685b ldr r3, [r3, #4]
800464c: 2b02 cmp r3, #2
800464e: d007 beq.n 8004660 <HAL_GPIO_Init+0x50>
(GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
8004650: 683b ldr r3, [r7, #0]
8004652: 685b ldr r3, [r3, #4]
if ((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
8004654: 2b11 cmp r3, #17
8004656: d003 beq.n 8004660 <HAL_GPIO_Init+0x50>
(GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
8004658: 683b ldr r3, [r7, #0]
800465a: 685b ldr r3, [r3, #4]
800465c: 2b12 cmp r3, #18
800465e: d130 bne.n 80046c2 <HAL_GPIO_Init+0xb2>
{
/* Check the Speed parameter */
assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
/* Configure the IO Speed */
temp = GPIOx->OSPEEDR;
8004660: 687b ldr r3, [r7, #4]
8004662: 689b ldr r3, [r3, #8]
8004664: 613b str r3, [r7, #16]
temp &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U));
8004666: 697b ldr r3, [r7, #20]
8004668: 005b lsls r3, r3, #1
800466a: 2203 movs r2, #3
800466c: 409a lsls r2, r3
800466e: 0013 movs r3, r2
8004670: 43da mvns r2, r3
8004672: 693b ldr r3, [r7, #16]
8004674: 4013 ands r3, r2
8004676: 613b str r3, [r7, #16]
temp |= (GPIO_Init->Speed << (position * 2U));
8004678: 683b ldr r3, [r7, #0]
800467a: 68da ldr r2, [r3, #12]
800467c: 697b ldr r3, [r7, #20]
800467e: 005b lsls r3, r3, #1
8004680: 409a lsls r2, r3
8004682: 0013 movs r3, r2
8004684: 693a ldr r2, [r7, #16]
8004686: 4313 orrs r3, r2
8004688: 613b str r3, [r7, #16]
GPIOx->OSPEEDR = temp;
800468a: 687b ldr r3, [r7, #4]
800468c: 693a ldr r2, [r7, #16]
800468e: 609a str r2, [r3, #8]
/* Configure the IO Output Type */
temp = GPIOx->OTYPER;
8004690: 687b ldr r3, [r7, #4]
8004692: 685b ldr r3, [r3, #4]
8004694: 613b str r3, [r7, #16]
temp &= ~(GPIO_OTYPER_OT_0 << position) ;
8004696: 2201 movs r2, #1
8004698: 697b ldr r3, [r7, #20]
800469a: 409a lsls r2, r3
800469c: 0013 movs r3, r2
800469e: 43da mvns r2, r3
80046a0: 693b ldr r3, [r7, #16]
80046a2: 4013 ands r3, r2
80046a4: 613b str r3, [r7, #16]
temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4U) << position);
80046a6: 683b ldr r3, [r7, #0]
80046a8: 685b ldr r3, [r3, #4]
80046aa: 091b lsrs r3, r3, #4
80046ac: 2201 movs r2, #1
80046ae: 401a ands r2, r3
80046b0: 697b ldr r3, [r7, #20]
80046b2: 409a lsls r2, r3
80046b4: 0013 movs r3, r2
80046b6: 693a ldr r2, [r7, #16]
80046b8: 4313 orrs r3, r2
80046ba: 613b str r3, [r7, #16]
GPIOx->OTYPER = temp;
80046bc: 687b ldr r3, [r7, #4]
80046be: 693a ldr r2, [r7, #16]
80046c0: 605a str r2, [r3, #4]
}
/* Activate the Pull-up or Pull down resistor for the current IO */
temp = GPIOx->PUPDR;
80046c2: 687b ldr r3, [r7, #4]
80046c4: 68db ldr r3, [r3, #12]
80046c6: 613b str r3, [r7, #16]
temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U));
80046c8: 697b ldr r3, [r7, #20]
80046ca: 005b lsls r3, r3, #1
80046cc: 2203 movs r2, #3
80046ce: 409a lsls r2, r3
80046d0: 0013 movs r3, r2
80046d2: 43da mvns r2, r3
80046d4: 693b ldr r3, [r7, #16]
80046d6: 4013 ands r3, r2
80046d8: 613b str r3, [r7, #16]
temp |= ((GPIO_Init->Pull) << (position * 2U));
80046da: 683b ldr r3, [r7, #0]
80046dc: 689a ldr r2, [r3, #8]
80046de: 697b ldr r3, [r7, #20]
80046e0: 005b lsls r3, r3, #1
80046e2: 409a lsls r2, r3
80046e4: 0013 movs r3, r2
80046e6: 693a ldr r2, [r7, #16]
80046e8: 4313 orrs r3, r2
80046ea: 613b str r3, [r7, #16]
GPIOx->PUPDR = temp;
80046ec: 687b ldr r3, [r7, #4]
80046ee: 693a ldr r2, [r7, #16]
80046f0: 60da str r2, [r3, #12]
/* In case of Alternate function mode selection */
if ((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
80046f2: 683b ldr r3, [r7, #0]
80046f4: 685b ldr r3, [r3, #4]
80046f6: 2b02 cmp r3, #2
80046f8: d003 beq.n 8004702 <HAL_GPIO_Init+0xf2>
80046fa: 683b ldr r3, [r7, #0]
80046fc: 685b ldr r3, [r3, #4]
80046fe: 2b12 cmp r3, #18
8004700: d123 bne.n 800474a <HAL_GPIO_Init+0x13a>
/* Check the Alternate function parameters */
assert_param(IS_GPIO_AF_INSTANCE(GPIOx));
assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
/* Configure Alternate function mapped with the current IO */
temp = GPIOx->AFR[position >> 3U];
8004702: 697b ldr r3, [r7, #20]
8004704: 08da lsrs r2, r3, #3
8004706: 687b ldr r3, [r7, #4]
8004708: 3208 adds r2, #8
800470a: 0092 lsls r2, r2, #2
800470c: 58d3 ldr r3, [r2, r3]
800470e: 613b str r3, [r7, #16]
temp &= ~(0xFUL << ((uint32_t)(position & 0x07UL) * 4U));
8004710: 697b ldr r3, [r7, #20]
8004712: 2207 movs r2, #7
8004714: 4013 ands r3, r2
8004716: 009b lsls r3, r3, #2
8004718: 220f movs r2, #15
800471a: 409a lsls r2, r3
800471c: 0013 movs r3, r2
800471e: 43da mvns r2, r3
8004720: 693b ldr r3, [r7, #16]
8004722: 4013 ands r3, r2
8004724: 613b str r3, [r7, #16]
temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07U) * 4U));
8004726: 683b ldr r3, [r7, #0]
8004728: 691a ldr r2, [r3, #16]
800472a: 697b ldr r3, [r7, #20]
800472c: 2107 movs r1, #7
800472e: 400b ands r3, r1
8004730: 009b lsls r3, r3, #2
8004732: 409a lsls r2, r3
8004734: 0013 movs r3, r2
8004736: 693a ldr r2, [r7, #16]
8004738: 4313 orrs r3, r2
800473a: 613b str r3, [r7, #16]
GPIOx->AFR[position >> 3U] = temp;
800473c: 697b ldr r3, [r7, #20]
800473e: 08da lsrs r2, r3, #3
8004740: 687b ldr r3, [r7, #4]
8004742: 3208 adds r2, #8
8004744: 0092 lsls r2, r2, #2
8004746: 6939 ldr r1, [r7, #16]
8004748: 50d1 str r1, [r2, r3]
}
/* Configure IO Direction mode (Input, Output, Alternate or Analog) */
temp = GPIOx->MODER;
800474a: 687b ldr r3, [r7, #4]
800474c: 681b ldr r3, [r3, #0]
800474e: 613b str r3, [r7, #16]
temp &= ~(GPIO_MODER_MODE0 << (position * 2U));
8004750: 697b ldr r3, [r7, #20]
8004752: 005b lsls r3, r3, #1
8004754: 2203 movs r2, #3
8004756: 409a lsls r2, r3
8004758: 0013 movs r3, r2
800475a: 43da mvns r2, r3
800475c: 693b ldr r3, [r7, #16]
800475e: 4013 ands r3, r2
8004760: 613b str r3, [r7, #16]
temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U));
8004762: 683b ldr r3, [r7, #0]
8004764: 685b ldr r3, [r3, #4]
8004766: 2203 movs r2, #3
8004768: 401a ands r2, r3
800476a: 697b ldr r3, [r7, #20]
800476c: 005b lsls r3, r3, #1
800476e: 409a lsls r2, r3
8004770: 0013 movs r3, r2
8004772: 693a ldr r2, [r7, #16]
8004774: 4313 orrs r3, r2
8004776: 613b str r3, [r7, #16]
GPIOx->MODER = temp;
8004778: 687b ldr r3, [r7, #4]
800477a: 693a ldr r2, [r7, #16]
800477c: 601a str r2, [r3, #0]
/*--------------------- EXTI Mode Configuration ------------------------*/
/* Configure the External Interrupt or event for the current IO */
if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
800477e: 683b ldr r3, [r7, #0]
8004780: 685a ldr r2, [r3, #4]
8004782: 2380 movs r3, #128 ; 0x80
8004784: 055b lsls r3, r3, #21
8004786: 4013 ands r3, r2
8004788: d100 bne.n 800478c <HAL_GPIO_Init+0x17c>
800478a: e0a0 b.n 80048ce <HAL_GPIO_Init+0x2be>
{
/* Enable SYSCFG Clock */
__HAL_RCC_SYSCFG_CLK_ENABLE();
800478c: 4b57 ldr r3, [pc, #348] ; (80048ec <HAL_GPIO_Init+0x2dc>)
800478e: 4a57 ldr r2, [pc, #348] ; (80048ec <HAL_GPIO_Init+0x2dc>)
8004790: 6b52 ldr r2, [r2, #52] ; 0x34
8004792: 2101 movs r1, #1
8004794: 430a orrs r2, r1
8004796: 635a str r2, [r3, #52] ; 0x34
temp = SYSCFG->EXTICR[position >> 2U];
8004798: 4a55 ldr r2, [pc, #340] ; (80048f0 <HAL_GPIO_Init+0x2e0>)
800479a: 697b ldr r3, [r7, #20]
800479c: 089b lsrs r3, r3, #2
800479e: 3302 adds r3, #2
80047a0: 009b lsls r3, r3, #2
80047a2: 589b ldr r3, [r3, r2]
80047a4: 613b str r3, [r7, #16]
CLEAR_BIT(temp, (0x0FUL) << (4U * (position & 0x03U)));
80047a6: 697b ldr r3, [r7, #20]
80047a8: 2203 movs r2, #3
80047aa: 4013 ands r3, r2
80047ac: 009b lsls r3, r3, #2
80047ae: 220f movs r2, #15
80047b0: 409a lsls r2, r3
80047b2: 0013 movs r3, r2
80047b4: 43da mvns r2, r3
80047b6: 693b ldr r3, [r7, #16]
80047b8: 4013 ands r3, r2
80047ba: 613b str r3, [r7, #16]
SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03U)));
80047bc: 687a ldr r2, [r7, #4]
80047be: 23a0 movs r3, #160 ; 0xa0
80047c0: 05db lsls r3, r3, #23
80047c2: 429a cmp r2, r3
80047c4: d01f beq.n 8004806 <HAL_GPIO_Init+0x1f6>
80047c6: 687b ldr r3, [r7, #4]
80047c8: 4a4a ldr r2, [pc, #296] ; (80048f4 <HAL_GPIO_Init+0x2e4>)
80047ca: 4293 cmp r3, r2
80047cc: d019 beq.n 8004802 <HAL_GPIO_Init+0x1f2>
80047ce: 687b ldr r3, [r7, #4]
80047d0: 4a49 ldr r2, [pc, #292] ; (80048f8 <HAL_GPIO_Init+0x2e8>)
80047d2: 4293 cmp r3, r2
80047d4: d013 beq.n 80047fe <HAL_GPIO_Init+0x1ee>
80047d6: 687b ldr r3, [r7, #4]
80047d8: 4a48 ldr r2, [pc, #288] ; (80048fc <HAL_GPIO_Init+0x2ec>)
80047da: 4293 cmp r3, r2
80047dc: d00d beq.n 80047fa <HAL_GPIO_Init+0x1ea>
80047de: 687b ldr r3, [r7, #4]
80047e0: 4a47 ldr r2, [pc, #284] ; (8004900 <HAL_GPIO_Init+0x2f0>)
80047e2: 4293 cmp r3, r2
80047e4: d007 beq.n 80047f6 <HAL_GPIO_Init+0x1e6>
80047e6: 687b ldr r3, [r7, #4]
80047e8: 4a46 ldr r2, [pc, #280] ; (8004904 <HAL_GPIO_Init+0x2f4>)
80047ea: 4293 cmp r3, r2
80047ec: d101 bne.n 80047f2 <HAL_GPIO_Init+0x1e2>
80047ee: 2305 movs r3, #5
80047f0: e00a b.n 8004808 <HAL_GPIO_Init+0x1f8>
80047f2: 2306 movs r3, #6
80047f4: e008 b.n 8004808 <HAL_GPIO_Init+0x1f8>
80047f6: 2304 movs r3, #4
80047f8: e006 b.n 8004808 <HAL_GPIO_Init+0x1f8>
80047fa: 2303 movs r3, #3
80047fc: e004 b.n 8004808 <HAL_GPIO_Init+0x1f8>
80047fe: 2302 movs r3, #2
8004800: e002 b.n 8004808 <HAL_GPIO_Init+0x1f8>
8004802: 2301 movs r3, #1
8004804: e000 b.n 8004808 <HAL_GPIO_Init+0x1f8>
8004806: 2300 movs r3, #0
8004808: 697a ldr r2, [r7, #20]
800480a: 2103 movs r1, #3
800480c: 400a ands r2, r1
800480e: 0092 lsls r2, r2, #2
8004810: 4093 lsls r3, r2
8004812: 693a ldr r2, [r7, #16]
8004814: 4313 orrs r3, r2
8004816: 613b str r3, [r7, #16]
SYSCFG->EXTICR[position >> 2U] = temp;
8004818: 4935 ldr r1, [pc, #212] ; (80048f0 <HAL_GPIO_Init+0x2e0>)
800481a: 697b ldr r3, [r7, #20]
800481c: 089b lsrs r3, r3, #2
800481e: 3302 adds r3, #2
8004820: 009b lsls r3, r3, #2
8004822: 693a ldr r2, [r7, #16]
8004824: 505a str r2, [r3, r1]
/* Clear EXTI line configuration */
temp = EXTI->IMR;
8004826: 4b38 ldr r3, [pc, #224] ; (8004908 <HAL_GPIO_Init+0x2f8>)
8004828: 681b ldr r3, [r3, #0]
800482a: 613b str r3, [r7, #16]
temp &= ~((uint32_t)iocurrent);
800482c: 68fb ldr r3, [r7, #12]
800482e: 43da mvns r2, r3
8004830: 693b ldr r3, [r7, #16]
8004832: 4013 ands r3, r2
8004834: 613b str r3, [r7, #16]
if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
8004836: 683b ldr r3, [r7, #0]
8004838: 685a ldr r2, [r3, #4]
800483a: 2380 movs r3, #128 ; 0x80
800483c: 025b lsls r3, r3, #9
800483e: 4013 ands r3, r2
8004840: d003 beq.n 800484a <HAL_GPIO_Init+0x23a>
{
temp |= iocurrent;
8004842: 693a ldr r2, [r7, #16]
8004844: 68fb ldr r3, [r7, #12]
8004846: 4313 orrs r3, r2
8004848: 613b str r3, [r7, #16]
}
EXTI->IMR = temp;
800484a: 4b2f ldr r3, [pc, #188] ; (8004908 <HAL_GPIO_Init+0x2f8>)
800484c: 693a ldr r2, [r7, #16]
800484e: 601a str r2, [r3, #0]
temp = EXTI->EMR;
8004850: 4b2d ldr r3, [pc, #180] ; (8004908 <HAL_GPIO_Init+0x2f8>)
8004852: 685b ldr r3, [r3, #4]
8004854: 613b str r3, [r7, #16]
temp &= ~((uint32_t)iocurrent);
8004856: 68fb ldr r3, [r7, #12]
8004858: 43da mvns r2, r3
800485a: 693b ldr r3, [r7, #16]
800485c: 4013 ands r3, r2
800485e: 613b str r3, [r7, #16]
if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
8004860: 683b ldr r3, [r7, #0]
8004862: 685a ldr r2, [r3, #4]
8004864: 2380 movs r3, #128 ; 0x80
8004866: 029b lsls r3, r3, #10
8004868: 4013 ands r3, r2
800486a: d003 beq.n 8004874 <HAL_GPIO_Init+0x264>
{
temp |= iocurrent;
800486c: 693a ldr r2, [r7, #16]
800486e: 68fb ldr r3, [r7, #12]
8004870: 4313 orrs r3, r2
8004872: 613b str r3, [r7, #16]
}
EXTI->EMR = temp;
8004874: 4b24 ldr r3, [pc, #144] ; (8004908 <HAL_GPIO_Init+0x2f8>)
8004876: 693a ldr r2, [r7, #16]
8004878: 605a str r2, [r3, #4]
/* Clear Rising Falling edge configuration */
temp = EXTI->RTSR;
800487a: 4b23 ldr r3, [pc, #140] ; (8004908 <HAL_GPIO_Init+0x2f8>)
800487c: 689b ldr r3, [r3, #8]
800487e: 613b str r3, [r7, #16]
temp &= ~((uint32_t)iocurrent);
8004880: 68fb ldr r3, [r7, #12]
8004882: 43da mvns r2, r3
8004884: 693b ldr r3, [r7, #16]
8004886: 4013 ands r3, r2
8004888: 613b str r3, [r7, #16]
if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
800488a: 683b ldr r3, [r7, #0]
800488c: 685a ldr r2, [r3, #4]
800488e: 2380 movs r3, #128 ; 0x80
8004890: 035b lsls r3, r3, #13
8004892: 4013 ands r3, r2
8004894: d003 beq.n 800489e <HAL_GPIO_Init+0x28e>
{
temp |= iocurrent;
8004896: 693a ldr r2, [r7, #16]
8004898: 68fb ldr r3, [r7, #12]
800489a: 4313 orrs r3, r2
800489c: 613b str r3, [r7, #16]
}
EXTI->RTSR = temp;
800489e: 4b1a ldr r3, [pc, #104] ; (8004908 <HAL_GPIO_Init+0x2f8>)
80048a0: 693a ldr r2, [r7, #16]
80048a2: 609a str r2, [r3, #8]
temp = EXTI->FTSR;
80048a4: 4b18 ldr r3, [pc, #96] ; (8004908 <HAL_GPIO_Init+0x2f8>)
80048a6: 68db ldr r3, [r3, #12]
80048a8: 613b str r3, [r7, #16]
temp &= ~((uint32_t)iocurrent);
80048aa: 68fb ldr r3, [r7, #12]
80048ac: 43da mvns r2, r3
80048ae: 693b ldr r3, [r7, #16]
80048b0: 4013 ands r3, r2
80048b2: 613b str r3, [r7, #16]
if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
80048b4: 683b ldr r3, [r7, #0]
80048b6: 685a ldr r2, [r3, #4]
80048b8: 2380 movs r3, #128 ; 0x80
80048ba: 039b lsls r3, r3, #14
80048bc: 4013 ands r3, r2
80048be: d003 beq.n 80048c8 <HAL_GPIO_Init+0x2b8>
{
temp |= iocurrent;
80048c0: 693a ldr r2, [r7, #16]
80048c2: 68fb ldr r3, [r7, #12]
80048c4: 4313 orrs r3, r2
80048c6: 613b str r3, [r7, #16]
}
EXTI->FTSR = temp;
80048c8: 4b0f ldr r3, [pc, #60] ; (8004908 <HAL_GPIO_Init+0x2f8>)
80048ca: 693a ldr r2, [r7, #16]
80048cc: 60da str r2, [r3, #12]
}
}
position++;
80048ce: 697b ldr r3, [r7, #20]
80048d0: 3301 adds r3, #1
80048d2: 617b str r3, [r7, #20]
while (((GPIO_Init->Pin) >> position) != 0)
80048d4: 683b ldr r3, [r7, #0]
80048d6: 681a ldr r2, [r3, #0]
80048d8: 697b ldr r3, [r7, #20]
80048da: 40da lsrs r2, r3
80048dc: 1e13 subs r3, r2, #0
80048de: d000 beq.n 80048e2 <HAL_GPIO_Init+0x2d2>
80048e0: e6a2 b.n 8004628 <HAL_GPIO_Init+0x18>
}
}
80048e2: 46c0 nop ; (mov r8, r8)
80048e4: 46bd mov sp, r7
80048e6: b006 add sp, #24
80048e8: bd80 pop {r7, pc}
80048ea: 46c0 nop ; (mov r8, r8)
80048ec: 40021000 .word 0x40021000
80048f0: 40010000 .word 0x40010000
80048f4: 50000400 .word 0x50000400
80048f8: 50000800 .word 0x50000800
80048fc: 50000c00 .word 0x50000c00
8004900: 50001000 .word 0x50001000
8004904: 50001c00 .word 0x50001c00
8004908: 40010400 .word 0x40010400
0800490c <HAL_GPIO_DeInit>:
* This parameter can be one of GPIO_PIN_x where x can be (0..15).
* All port bits are not necessarily available on all GPIOs.
* @retval None
*/
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
{
800490c: b580 push {r7, lr}
800490e: b086 sub sp, #24
8004910: af00 add r7, sp, #0
8004912: 6078 str r0, [r7, #4]
8004914: 6039 str r1, [r7, #0]
uint32_t position = 0x00U;
8004916: 2300 movs r3, #0
8004918: 617b str r3, [r7, #20]
uint32_t iocurrent = 0x00U;
800491a: 2300 movs r3, #0
800491c: 613b str r3, [r7, #16]
uint32_t tmp = 0x00U;
800491e: 2300 movs r3, #0
8004920: 60fb str r3, [r7, #12]
/* Check the parameters */
assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, GPIO_Pin));
/* Configure the port pins */
while ((GPIO_Pin >> position) != 0)
8004922: e0be b.n 8004aa2 <HAL_GPIO_DeInit+0x196>
{
/* Get the IO position */
iocurrent = (GPIO_Pin) & (1U << position);
8004924: 2201 movs r2, #1
8004926: 697b ldr r3, [r7, #20]
8004928: 409a lsls r2, r3
800492a: 0013 movs r3, r2
800492c: 683a ldr r2, [r7, #0]
800492e: 4013 ands r3, r2
8004930: 613b str r3, [r7, #16]
if (iocurrent)
8004932: 693b ldr r3, [r7, #16]
8004934: 2b00 cmp r3, #0
8004936: d100 bne.n 800493a <HAL_GPIO_DeInit+0x2e>
8004938: e0b0 b.n 8004a9c <HAL_GPIO_DeInit+0x190>
{
/*------------------------- EXTI Mode Configuration --------------------*/
/* Clear the External Interrupt or Event for the current IO */
tmp = SYSCFG->EXTICR[position >> 2U];
800493a: 4a5f ldr r2, [pc, #380] ; (8004ab8 <HAL_GPIO_DeInit+0x1ac>)
800493c: 697b ldr r3, [r7, #20]
800493e: 089b lsrs r3, r3, #2
8004940: 3302 adds r3, #2
8004942: 009b lsls r3, r3, #2
8004944: 589b ldr r3, [r3, r2]
8004946: 60fb str r3, [r7, #12]
tmp &= ((0x0FUL) << (4U * (position & 0x03U)));
8004948: 697b ldr r3, [r7, #20]
800494a: 2203 movs r2, #3
800494c: 4013 ands r3, r2
800494e: 009b lsls r3, r3, #2
8004950: 220f movs r2, #15
8004952: 409a lsls r2, r3
8004954: 68fb ldr r3, [r7, #12]
8004956: 4013 ands r3, r2
8004958: 60fb str r3, [r7, #12]
if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))))
800495a: 687a ldr r2, [r7, #4]
800495c: 23a0 movs r3, #160 ; 0xa0
800495e: 05db lsls r3, r3, #23
8004960: 429a cmp r2, r3
8004962: d01f beq.n 80049a4 <HAL_GPIO_DeInit+0x98>
8004964: 687b ldr r3, [r7, #4]
8004966: 4a55 ldr r2, [pc, #340] ; (8004abc <HAL_GPIO_DeInit+0x1b0>)
8004968: 4293 cmp r3, r2
800496a: d019 beq.n 80049a0 <HAL_GPIO_DeInit+0x94>
800496c: 687b ldr r3, [r7, #4]
800496e: 4a54 ldr r2, [pc, #336] ; (8004ac0 <HAL_GPIO_DeInit+0x1b4>)
8004970: 4293 cmp r3, r2
8004972: d013 beq.n 800499c <HAL_GPIO_DeInit+0x90>
8004974: 687b ldr r3, [r7, #4]
8004976: 4a53 ldr r2, [pc, #332] ; (8004ac4 <HAL_GPIO_DeInit+0x1b8>)
8004978: 4293 cmp r3, r2
800497a: d00d beq.n 8004998 <HAL_GPIO_DeInit+0x8c>
800497c: 687b ldr r3, [r7, #4]
800497e: 4a52 ldr r2, [pc, #328] ; (8004ac8 <HAL_GPIO_DeInit+0x1bc>)
8004980: 4293 cmp r3, r2
8004982: d007 beq.n 8004994 <HAL_GPIO_DeInit+0x88>
8004984: 687b ldr r3, [r7, #4]
8004986: 4a51 ldr r2, [pc, #324] ; (8004acc <HAL_GPIO_DeInit+0x1c0>)
8004988: 4293 cmp r3, r2
800498a: d101 bne.n 8004990 <HAL_GPIO_DeInit+0x84>
800498c: 2305 movs r3, #5
800498e: e00a b.n 80049a6 <HAL_GPIO_DeInit+0x9a>
8004990: 2306 movs r3, #6
8004992: e008 b.n 80049a6 <HAL_GPIO_DeInit+0x9a>
8004994: 2304 movs r3, #4
8004996: e006 b.n 80049a6 <HAL_GPIO_DeInit+0x9a>
8004998: 2303 movs r3, #3
800499a: e004 b.n 80049a6 <HAL_GPIO_DeInit+0x9a>
800499c: 2302 movs r3, #2
800499e: e002 b.n 80049a6 <HAL_GPIO_DeInit+0x9a>
80049a0: 2301 movs r3, #1
80049a2: e000 b.n 80049a6 <HAL_GPIO_DeInit+0x9a>
80049a4: 2300 movs r3, #0
80049a6: 697a ldr r2, [r7, #20]
80049a8: 2103 movs r1, #3
80049aa: 400a ands r2, r1
80049ac: 0092 lsls r2, r2, #2
80049ae: 4093 lsls r3, r2
80049b0: 001a movs r2, r3
80049b2: 68fb ldr r3, [r7, #12]
80049b4: 429a cmp r2, r3
80049b6: d132 bne.n 8004a1e <HAL_GPIO_DeInit+0x112>
{
/* Clear EXTI line configuration */
EXTI->IMR &= ~((uint32_t)iocurrent);
80049b8: 4b45 ldr r3, [pc, #276] ; (8004ad0 <HAL_GPIO_DeInit+0x1c4>)
80049ba: 4a45 ldr r2, [pc, #276] ; (8004ad0 <HAL_GPIO_DeInit+0x1c4>)
80049bc: 6812 ldr r2, [r2, #0]
80049be: 6939 ldr r1, [r7, #16]
80049c0: 43c9 mvns r1, r1
80049c2: 400a ands r2, r1
80049c4: 601a str r2, [r3, #0]
EXTI->EMR &= ~((uint32_t)iocurrent);
80049c6: 4b42 ldr r3, [pc, #264] ; (8004ad0 <HAL_GPIO_DeInit+0x1c4>)
80049c8: 4a41 ldr r2, [pc, #260] ; (8004ad0 <HAL_GPIO_DeInit+0x1c4>)
80049ca: 6852 ldr r2, [r2, #4]
80049cc: 6939 ldr r1, [r7, #16]
80049ce: 43c9 mvns r1, r1
80049d0: 400a ands r2, r1
80049d2: 605a str r2, [r3, #4]
/* Clear Rising Falling edge configuration */
EXTI->RTSR &= ~((uint32_t)iocurrent);
80049d4: 4b3e ldr r3, [pc, #248] ; (8004ad0 <HAL_GPIO_DeInit+0x1c4>)
80049d6: 4a3e ldr r2, [pc, #248] ; (8004ad0 <HAL_GPIO_DeInit+0x1c4>)
80049d8: 6892 ldr r2, [r2, #8]
80049da: 6939 ldr r1, [r7, #16]
80049dc: 43c9 mvns r1, r1
80049de: 400a ands r2, r1
80049e0: 609a str r2, [r3, #8]
EXTI->FTSR &= ~((uint32_t)iocurrent);
80049e2: 4b3b ldr r3, [pc, #236] ; (8004ad0 <HAL_GPIO_DeInit+0x1c4>)
80049e4: 4a3a ldr r2, [pc, #232] ; (8004ad0 <HAL_GPIO_DeInit+0x1c4>)
80049e6: 68d2 ldr r2, [r2, #12]
80049e8: 6939 ldr r1, [r7, #16]
80049ea: 43c9 mvns r1, r1
80049ec: 400a ands r2, r1
80049ee: 60da str r2, [r3, #12]
tmp = (0x0FUL) << (4U * (position & 0x03U));
80049f0: 697b ldr r3, [r7, #20]
80049f2: 2203 movs r2, #3
80049f4: 4013 ands r3, r2
80049f6: 009b lsls r3, r3, #2
80049f8: 220f movs r2, #15
80049fa: 409a lsls r2, r3
80049fc: 0013 movs r3, r2
80049fe: 60fb str r3, [r7, #12]
SYSCFG->EXTICR[position >> 2U] &= ~tmp;
8004a00: 482d ldr r0, [pc, #180] ; (8004ab8 <HAL_GPIO_DeInit+0x1ac>)
8004a02: 697b ldr r3, [r7, #20]
8004a04: 089b lsrs r3, r3, #2
8004a06: 492c ldr r1, [pc, #176] ; (8004ab8 <HAL_GPIO_DeInit+0x1ac>)
8004a08: 697a ldr r2, [r7, #20]
8004a0a: 0892 lsrs r2, r2, #2
8004a0c: 3202 adds r2, #2
8004a0e: 0092 lsls r2, r2, #2
8004a10: 5852 ldr r2, [r2, r1]
8004a12: 68f9 ldr r1, [r7, #12]
8004a14: 43c9 mvns r1, r1
8004a16: 400a ands r2, r1
8004a18: 3302 adds r3, #2
8004a1a: 009b lsls r3, r3, #2
8004a1c: 501a str r2, [r3, r0]
}
/*------------------------- GPIO Mode Configuration --------------------*/
/* Configure IO Direction in Input Floting Mode */
GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2U));
8004a1e: 687b ldr r3, [r7, #4]
8004a20: 681a ldr r2, [r3, #0]
8004a22: 697b ldr r3, [r7, #20]
8004a24: 005b lsls r3, r3, #1
8004a26: 2103 movs r1, #3
8004a28: 4099 lsls r1, r3
8004a2a: 000b movs r3, r1
8004a2c: 431a orrs r2, r3
8004a2e: 687b ldr r3, [r7, #4]
8004a30: 601a str r2, [r3, #0]
/* Configure the default Alternate Function in current IO */
GPIOx->AFR[position >> 3U] &= ~(0xFUL << ((uint32_t)(position & 0x07UL) * 4U));
8004a32: 697b ldr r3, [r7, #20]
8004a34: 08da lsrs r2, r3, #3
8004a36: 697b ldr r3, [r7, #20]
8004a38: 08d9 lsrs r1, r3, #3
8004a3a: 687b ldr r3, [r7, #4]
8004a3c: 3108 adds r1, #8
8004a3e: 0089 lsls r1, r1, #2
8004a40: 58cb ldr r3, [r1, r3]
8004a42: 6979 ldr r1, [r7, #20]
8004a44: 2007 movs r0, #7
8004a46: 4001 ands r1, r0
8004a48: 0089 lsls r1, r1, #2
8004a4a: 200f movs r0, #15
8004a4c: 4088 lsls r0, r1
8004a4e: 0001 movs r1, r0
8004a50: 43c9 mvns r1, r1
8004a52: 4019 ands r1, r3
8004a54: 687b ldr r3, [r7, #4]
8004a56: 3208 adds r2, #8
8004a58: 0092 lsls r2, r2, #2
8004a5a: 50d1 str r1, [r2, r3]
/* Deactivate the Pull-up oand Pull-down resistor for the current IO */
GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPD0 << (position * 2U));
8004a5c: 687b ldr r3, [r7, #4]
8004a5e: 68db ldr r3, [r3, #12]
8004a60: 697a ldr r2, [r7, #20]
8004a62: 0052 lsls r2, r2, #1
8004a64: 2103 movs r1, #3
8004a66: 4091 lsls r1, r2
8004a68: 000a movs r2, r1
8004a6a: 43d2 mvns r2, r2
8004a6c: 401a ands r2, r3
8004a6e: 687b ldr r3, [r7, #4]
8004a70: 60da str r2, [r3, #12]
/* Configure the default value IO Output Type */
GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position);
8004a72: 687b ldr r3, [r7, #4]
8004a74: 685b ldr r3, [r3, #4]
8004a76: 2101 movs r1, #1
8004a78: 697a ldr r2, [r7, #20]
8004a7a: 4091 lsls r1, r2
8004a7c: 000a movs r2, r1
8004a7e: 43d2 mvns r2, r2
8004a80: 401a ands r2, r3
8004a82: 687b ldr r3, [r7, #4]
8004a84: 605a str r2, [r3, #4]
/* Configure the default value for IO Speed */
GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U));
8004a86: 687b ldr r3, [r7, #4]
8004a88: 689b ldr r3, [r3, #8]
8004a8a: 697a ldr r2, [r7, #20]
8004a8c: 0052 lsls r2, r2, #1
8004a8e: 2103 movs r1, #3
8004a90: 4091 lsls r1, r2
8004a92: 000a movs r2, r1
8004a94: 43d2 mvns r2, r2
8004a96: 401a ands r2, r3
8004a98: 687b ldr r3, [r7, #4]
8004a9a: 609a str r2, [r3, #8]
}
position++;
8004a9c: 697b ldr r3, [r7, #20]
8004a9e: 3301 adds r3, #1
8004aa0: 617b str r3, [r7, #20]
while ((GPIO_Pin >> position) != 0)
8004aa2: 683a ldr r2, [r7, #0]
8004aa4: 697b ldr r3, [r7, #20]
8004aa6: 40da lsrs r2, r3
8004aa8: 1e13 subs r3, r2, #0
8004aaa: d000 beq.n 8004aae <HAL_GPIO_DeInit+0x1a2>
8004aac: e73a b.n 8004924 <HAL_GPIO_DeInit+0x18>
}
}
8004aae: 46c0 nop ; (mov r8, r8)
8004ab0: 46bd mov sp, r7
8004ab2: b006 add sp, #24
8004ab4: bd80 pop {r7, pc}
8004ab6: 46c0 nop ; (mov r8, r8)
8004ab8: 40010000 .word 0x40010000
8004abc: 50000400 .word 0x50000400
8004ac0: 50000800 .word 0x50000800
8004ac4: 50000c00 .word 0x50000c00
8004ac8: 50001000 .word 0x50001000
8004acc: 50001c00 .word 0x50001c00
8004ad0: 40010400 .word 0x40010400
08004ad4 <HAL_GPIO_ReadPin>:
* This parameter can be GPIO_PIN_x where x can be (0..15).
* All port bits are not necessarily available on all GPIOs.
* @retval The input port pin value.
*/
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
{
8004ad4: b580 push {r7, lr}
8004ad6: b084 sub sp, #16
8004ad8: af00 add r7, sp, #0
8004ada: 6078 str r0, [r7, #4]
8004adc: 000a movs r2, r1
8004ade: 1cbb adds r3, r7, #2
8004ae0: 801a strh r2, [r3, #0]
GPIO_PinState bitstatus;
/* Check the parameters */
assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, GPIO_Pin));
if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET)
8004ae2: 687b ldr r3, [r7, #4]
8004ae4: 691b ldr r3, [r3, #16]
8004ae6: 1cba adds r2, r7, #2
8004ae8: 8812 ldrh r2, [r2, #0]
8004aea: 4013 ands r3, r2
8004aec: d004 beq.n 8004af8 <HAL_GPIO_ReadPin+0x24>
{
bitstatus = GPIO_PIN_SET;
8004aee: 230f movs r3, #15
8004af0: 18fb adds r3, r7, r3
8004af2: 2201 movs r2, #1
8004af4: 701a strb r2, [r3, #0]
8004af6: e003 b.n 8004b00 <HAL_GPIO_ReadPin+0x2c>
}
else
{
bitstatus = GPIO_PIN_RESET;
8004af8: 230f movs r3, #15
8004afa: 18fb adds r3, r7, r3
8004afc: 2200 movs r2, #0
8004afe: 701a strb r2, [r3, #0]
}
return bitstatus;
8004b00: 230f movs r3, #15
8004b02: 18fb adds r3, r7, r3
8004b04: 781b ldrb r3, [r3, #0]
}
8004b06: 0018 movs r0, r3
8004b08: 46bd mov sp, r7
8004b0a: b004 add sp, #16
8004b0c: bd80 pop {r7, pc}
08004b0e <HAL_GPIO_WritePin>:
* GPIO_PIN_RESET: to clear the port pin
* GPIO_PIN_SET: to set the port pin
* @retval None
*/
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
8004b0e: b580 push {r7, lr}
8004b10: b082 sub sp, #8
8004b12: af00 add r7, sp, #0
8004b14: 6078 str r0, [r7, #4]
8004b16: 0008 movs r0, r1
8004b18: 0011 movs r1, r2
8004b1a: 1cbb adds r3, r7, #2
8004b1c: 1c02 adds r2, r0, #0
8004b1e: 801a strh r2, [r3, #0]
8004b20: 1c7b adds r3, r7, #1
8004b22: 1c0a adds r2, r1, #0
8004b24: 701a strb r2, [r3, #0]
/* Check the parameters */
assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, GPIO_Pin));
assert_param(IS_GPIO_PIN_ACTION(PinState));
if (PinState != GPIO_PIN_RESET)
8004b26: 1c7b adds r3, r7, #1
8004b28: 781b ldrb r3, [r3, #0]
8004b2a: 2b00 cmp r3, #0
8004b2c: d004 beq.n 8004b38 <HAL_GPIO_WritePin+0x2a>
{
GPIOx->BSRR = GPIO_Pin;
8004b2e: 1cbb adds r3, r7, #2
8004b30: 881a ldrh r2, [r3, #0]
8004b32: 687b ldr r3, [r7, #4]
8004b34: 619a str r2, [r3, #24]
}
else
{
GPIOx->BRR = GPIO_Pin ;
}
}
8004b36: e003 b.n 8004b40 <HAL_GPIO_WritePin+0x32>
GPIOx->BRR = GPIO_Pin ;
8004b38: 1cbb adds r3, r7, #2
8004b3a: 881a ldrh r2, [r3, #0]
8004b3c: 687b ldr r3, [r7, #4]
8004b3e: 629a str r2, [r3, #40] ; 0x28
}
8004b40: 46c0 nop ; (mov r8, r8)
8004b42: 46bd mov sp, r7
8004b44: b002 add sp, #8
8004b46: bd80 pop {r7, pc}
08004b48 <HAL_GPIO_EXTI_IRQHandler>:
* @brief This function handles EXTI interrupt request.
* @param GPIO_Pin Specifies the pins connected to the EXTI line.
* @retval None
*/
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
8004b48: b580 push {r7, lr}
8004b4a: b082 sub sp, #8
8004b4c: af00 add r7, sp, #0
8004b4e: 0002 movs r2, r0
8004b50: 1dbb adds r3, r7, #6
8004b52: 801a strh r2, [r3, #0]
/* EXTI line interrupt detected */
if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
8004b54: 4b09 ldr r3, [pc, #36] ; (8004b7c <HAL_GPIO_EXTI_IRQHandler+0x34>)
8004b56: 695b ldr r3, [r3, #20]
8004b58: 1dba adds r2, r7, #6
8004b5a: 8812 ldrh r2, [r2, #0]
8004b5c: 4013 ands r3, r2
8004b5e: d008 beq.n 8004b72 <HAL_GPIO_EXTI_IRQHandler+0x2a>
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
8004b60: 4b06 ldr r3, [pc, #24] ; (8004b7c <HAL_GPIO_EXTI_IRQHandler+0x34>)
8004b62: 1dba adds r2, r7, #6
8004b64: 8812 ldrh r2, [r2, #0]
8004b66: 615a str r2, [r3, #20]
HAL_GPIO_EXTI_Callback(GPIO_Pin);
8004b68: 1dbb adds r3, r7, #6
8004b6a: 881b ldrh r3, [r3, #0]
8004b6c: 0018 movs r0, r3
8004b6e: f7ff f8f7 bl 8003d60 <HAL_GPIO_EXTI_Callback>
}
}
8004b72: 46c0 nop ; (mov r8, r8)
8004b74: 46bd mov sp, r7
8004b76: b002 add sp, #8
8004b78: bd80 pop {r7, pc}
8004b7a: 46c0 nop ; (mov r8, r8)
8004b7c: 40010400 .word 0x40010400
08004b80 <HAL_RCC_OscConfig>:
* supported by this macro. User should request a transition to HSE Off
* first and then HSE On or HSE Bypass.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
{
8004b80: b590 push {r4, r7, lr}
8004b82: b08b sub sp, #44 ; 0x2c
8004b84: af00 add r7, sp, #0
8004b86: 6078 str r0, [r7, #4]
uint32_t hsi_state;
HAL_StatusTypeDef status;
uint32_t sysclk_source, pll_config;
/* Check Null pointer */
if(RCC_OscInitStruct == NULL)
8004b88: 687b ldr r3, [r7, #4]
8004b8a: 2b00 cmp r3, #0
8004b8c: d102 bne.n 8004b94 <HAL_RCC_OscConfig+0x14>
{
return HAL_ERROR;
8004b8e: 2301 movs r3, #1
8004b90: f000 fbbe bl 8005310 <HAL_RCC_OscConfig+0x790>
}
/* Check the parameters */
assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE();
8004b94: 4bc9 ldr r3, [pc, #804] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004b96: 68db ldr r3, [r3, #12]
8004b98: 220c movs r2, #12
8004b9a: 4013 ands r3, r2
8004b9c: 61fb str r3, [r7, #28]
pll_config = __HAL_RCC_GET_PLL_OSCSOURCE();
8004b9e: 4bc7 ldr r3, [pc, #796] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004ba0: 68da ldr r2, [r3, #12]
8004ba2: 2380 movs r3, #128 ; 0x80
8004ba4: 025b lsls r3, r3, #9
8004ba6: 4013 ands r3, r2
8004ba8: 61bb str r3, [r7, #24]
/*------------------------------- HSE Configuration ------------------------*/
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
8004baa: 687b ldr r3, [r7, #4]
8004bac: 681b ldr r3, [r3, #0]
8004bae: 2201 movs r2, #1
8004bb0: 4013 ands r3, r2
8004bb2: d100 bne.n 8004bb6 <HAL_RCC_OscConfig+0x36>
8004bb4: e07e b.n 8004cb4 <HAL_RCC_OscConfig+0x134>
{
/* Check the parameters */
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
/* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */
if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE)
8004bb6: 69fb ldr r3, [r7, #28]
8004bb8: 2b08 cmp r3, #8
8004bba: d007 beq.n 8004bcc <HAL_RCC_OscConfig+0x4c>
|| ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE)))
8004bbc: 69fb ldr r3, [r7, #28]
8004bbe: 2b0c cmp r3, #12
8004bc0: d112 bne.n 8004be8 <HAL_RCC_OscConfig+0x68>
8004bc2: 69ba ldr r2, [r7, #24]
8004bc4: 2380 movs r3, #128 ; 0x80
8004bc6: 025b lsls r3, r3, #9
8004bc8: 429a cmp r2, r3
8004bca: d10d bne.n 8004be8 <HAL_RCC_OscConfig+0x68>
{
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
8004bcc: 4bbb ldr r3, [pc, #748] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004bce: 681a ldr r2, [r3, #0]
8004bd0: 2380 movs r3, #128 ; 0x80
8004bd2: 029b lsls r3, r3, #10
8004bd4: 4013 ands r3, r2
8004bd6: d100 bne.n 8004bda <HAL_RCC_OscConfig+0x5a>
8004bd8: e06b b.n 8004cb2 <HAL_RCC_OscConfig+0x132>
8004bda: 687b ldr r3, [r7, #4]
8004bdc: 685b ldr r3, [r3, #4]
8004bde: 2b00 cmp r3, #0
8004be0: d167 bne.n 8004cb2 <HAL_RCC_OscConfig+0x132>
{
return HAL_ERROR;
8004be2: 2301 movs r3, #1
8004be4: f000 fb94 bl 8005310 <HAL_RCC_OscConfig+0x790>
}
}
else
{
/* Set the new HSE configuration ---------------------------------------*/
__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
8004be8: 687b ldr r3, [r7, #4]
8004bea: 685a ldr r2, [r3, #4]
8004bec: 2380 movs r3, #128 ; 0x80
8004bee: 025b lsls r3, r3, #9
8004bf0: 429a cmp r2, r3
8004bf2: d107 bne.n 8004c04 <HAL_RCC_OscConfig+0x84>
8004bf4: 4bb1 ldr r3, [pc, #708] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004bf6: 4ab1 ldr r2, [pc, #708] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004bf8: 6812 ldr r2, [r2, #0]
8004bfa: 2180 movs r1, #128 ; 0x80
8004bfc: 0249 lsls r1, r1, #9
8004bfe: 430a orrs r2, r1
8004c00: 601a str r2, [r3, #0]
8004c02: e027 b.n 8004c54 <HAL_RCC_OscConfig+0xd4>
8004c04: 687b ldr r3, [r7, #4]
8004c06: 685a ldr r2, [r3, #4]
8004c08: 23a0 movs r3, #160 ; 0xa0
8004c0a: 02db lsls r3, r3, #11
8004c0c: 429a cmp r2, r3
8004c0e: d10e bne.n 8004c2e <HAL_RCC_OscConfig+0xae>
8004c10: 4baa ldr r3, [pc, #680] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c12: 4aaa ldr r2, [pc, #680] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c14: 6812 ldr r2, [r2, #0]
8004c16: 2180 movs r1, #128 ; 0x80
8004c18: 02c9 lsls r1, r1, #11
8004c1a: 430a orrs r2, r1
8004c1c: 601a str r2, [r3, #0]
8004c1e: 4ba7 ldr r3, [pc, #668] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c20: 4aa6 ldr r2, [pc, #664] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c22: 6812 ldr r2, [r2, #0]
8004c24: 2180 movs r1, #128 ; 0x80
8004c26: 0249 lsls r1, r1, #9
8004c28: 430a orrs r2, r1
8004c2a: 601a str r2, [r3, #0]
8004c2c: e012 b.n 8004c54 <HAL_RCC_OscConfig+0xd4>
8004c2e: 4ba3 ldr r3, [pc, #652] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c30: 4aa2 ldr r2, [pc, #648] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c32: 6812 ldr r2, [r2, #0]
8004c34: 49a2 ldr r1, [pc, #648] ; (8004ec0 <HAL_RCC_OscConfig+0x340>)
8004c36: 400a ands r2, r1
8004c38: 601a str r2, [r3, #0]
8004c3a: 4ba0 ldr r3, [pc, #640] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c3c: 681a ldr r2, [r3, #0]
8004c3e: 2380 movs r3, #128 ; 0x80
8004c40: 025b lsls r3, r3, #9
8004c42: 4013 ands r3, r2
8004c44: 60fb str r3, [r7, #12]
8004c46: 68fb ldr r3, [r7, #12]
8004c48: 4b9c ldr r3, [pc, #624] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c4a: 4a9c ldr r2, [pc, #624] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c4c: 6812 ldr r2, [r2, #0]
8004c4e: 499d ldr r1, [pc, #628] ; (8004ec4 <HAL_RCC_OscConfig+0x344>)
8004c50: 400a ands r2, r1
8004c52: 601a str r2, [r3, #0]
/* Check the HSE State */
if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
8004c54: 687b ldr r3, [r7, #4]
8004c56: 685b ldr r3, [r3, #4]
8004c58: 2b00 cmp r3, #0
8004c5a: d015 beq.n 8004c88 <HAL_RCC_OscConfig+0x108>
{
/* Get Start Tick */
tickstart = HAL_GetTick();
8004c5c: f7ff f966 bl 8003f2c <HAL_GetTick>
8004c60: 0003 movs r3, r0
8004c62: 617b str r3, [r7, #20]
/* Wait till HSE is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U)
8004c64: e009 b.n 8004c7a <HAL_RCC_OscConfig+0xfa>
{
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
8004c66: f7ff f961 bl 8003f2c <HAL_GetTick>
8004c6a: 0002 movs r2, r0
8004c6c: 697b ldr r3, [r7, #20]
8004c6e: 1ad3 subs r3, r2, r3
8004c70: 2b64 cmp r3, #100 ; 0x64
8004c72: d902 bls.n 8004c7a <HAL_RCC_OscConfig+0xfa>
{
return HAL_TIMEOUT;
8004c74: 2303 movs r3, #3
8004c76: f000 fb4b bl 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U)
8004c7a: 4b90 ldr r3, [pc, #576] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004c7c: 681a ldr r2, [r3, #0]
8004c7e: 2380 movs r3, #128 ; 0x80
8004c80: 029b lsls r3, r3, #10
8004c82: 4013 ands r3, r2
8004c84: d0ef beq.n 8004c66 <HAL_RCC_OscConfig+0xe6>
8004c86: e015 b.n 8004cb4 <HAL_RCC_OscConfig+0x134>
}
}
else
{
/* Get Start Tick */
tickstart = HAL_GetTick();
8004c88: f7ff f950 bl 8003f2c <HAL_GetTick>
8004c8c: 0003 movs r3, r0
8004c8e: 617b str r3, [r7, #20]
/* Wait till HSE is disabled */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U)
8004c90: e008 b.n 8004ca4 <HAL_RCC_OscConfig+0x124>
{
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
8004c92: f7ff f94b bl 8003f2c <HAL_GetTick>
8004c96: 0002 movs r2, r0
8004c98: 697b ldr r3, [r7, #20]
8004c9a: 1ad3 subs r3, r2, r3
8004c9c: 2b64 cmp r3, #100 ; 0x64
8004c9e: d901 bls.n 8004ca4 <HAL_RCC_OscConfig+0x124>
{
return HAL_TIMEOUT;
8004ca0: 2303 movs r3, #3
8004ca2: e335 b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U)
8004ca4: 4b85 ldr r3, [pc, #532] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004ca6: 681a ldr r2, [r3, #0]
8004ca8: 2380 movs r3, #128 ; 0x80
8004caa: 029b lsls r3, r3, #10
8004cac: 4013 ands r3, r2
8004cae: d1f0 bne.n 8004c92 <HAL_RCC_OscConfig+0x112>
8004cb0: e000 b.n 8004cb4 <HAL_RCC_OscConfig+0x134>
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
8004cb2: 46c0 nop ; (mov r8, r8)
}
}
}
}
/*----------------------------- HSI Configuration --------------------------*/
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
8004cb4: 687b ldr r3, [r7, #4]
8004cb6: 681b ldr r3, [r3, #0]
8004cb8: 2202 movs r2, #2
8004cba: 4013 ands r3, r2
8004cbc: d100 bne.n 8004cc0 <HAL_RCC_OscConfig+0x140>
8004cbe: e099 b.n 8004df4 <HAL_RCC_OscConfig+0x274>
{
/* Check the parameters */
assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
hsi_state = RCC_OscInitStruct->HSIState;
8004cc0: 687b ldr r3, [r7, #4]
8004cc2: 68db ldr r3, [r3, #12]
8004cc4: 627b str r3, [r7, #36] ; 0x24
#if defined(RCC_CR_HSIOUTEN)
if((hsi_state & RCC_HSI_OUTEN) != 0U)
8004cc6: 6a7b ldr r3, [r7, #36] ; 0x24
8004cc8: 2220 movs r2, #32
8004cca: 4013 ands r3, r2
8004ccc: d009 beq.n 8004ce2 <HAL_RCC_OscConfig+0x162>
{
/* HSI Output enable for timer requested */
SET_BIT(RCC->CR, RCC_CR_HSIOUTEN);
8004cce: 4b7b ldr r3, [pc, #492] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004cd0: 4a7a ldr r2, [pc, #488] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004cd2: 6812 ldr r2, [r2, #0]
8004cd4: 2120 movs r1, #32
8004cd6: 430a orrs r2, r1
8004cd8: 601a str r2, [r3, #0]
hsi_state &= ~RCC_CR_HSIOUTEN;
8004cda: 6a7b ldr r3, [r7, #36] ; 0x24
8004cdc: 2220 movs r2, #32
8004cde: 4393 bics r3, r2
8004ce0: 627b str r3, [r7, #36] ; 0x24
}
#endif
/* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI)
8004ce2: 69fb ldr r3, [r7, #28]
8004ce4: 2b04 cmp r3, #4
8004ce6: d005 beq.n 8004cf4 <HAL_RCC_OscConfig+0x174>
|| ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI)))
8004ce8: 69fb ldr r3, [r7, #28]
8004cea: 2b0c cmp r3, #12
8004cec: d13f bne.n 8004d6e <HAL_RCC_OscConfig+0x1ee>
8004cee: 69bb ldr r3, [r7, #24]
8004cf0: 2b00 cmp r3, #0
8004cf2: d13c bne.n 8004d6e <HAL_RCC_OscConfig+0x1ee>
{
/* When HSI is used as system clock it will not disabled */
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (hsi_state == RCC_HSI_OFF))
8004cf4: 4b71 ldr r3, [pc, #452] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004cf6: 681b ldr r3, [r3, #0]
8004cf8: 2204 movs r2, #4
8004cfa: 4013 ands r3, r2
8004cfc: d004 beq.n 8004d08 <HAL_RCC_OscConfig+0x188>
8004cfe: 6a7b ldr r3, [r7, #36] ; 0x24
8004d00: 2b00 cmp r3, #0
8004d02: d101 bne.n 8004d08 <HAL_RCC_OscConfig+0x188>
{
return HAL_ERROR;
8004d04: 2301 movs r3, #1
8004d06: e303 b.n 8005310 <HAL_RCC_OscConfig+0x790>
}
/* Otherwise, just the calibration and HSI or HSIdiv4 are allowed */
else
{
/* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
__HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
8004d08: 4a6c ldr r2, [pc, #432] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004d0a: 4b6c ldr r3, [pc, #432] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004d0c: 685b ldr r3, [r3, #4]
8004d0e: 496e ldr r1, [pc, #440] ; (8004ec8 <HAL_RCC_OscConfig+0x348>)
8004d10: 4019 ands r1, r3
8004d12: 687b ldr r3, [r7, #4]
8004d14: 691b ldr r3, [r3, #16]
8004d16: 021b lsls r3, r3, #8
8004d18: 430b orrs r3, r1
8004d1a: 6053 str r3, [r2, #4]
/* Enable the Internal High Speed oscillator (HSI or HSIdiv4) */
__HAL_RCC_HSI_CONFIG(hsi_state);
8004d1c: 4b67 ldr r3, [pc, #412] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004d1e: 4a67 ldr r2, [pc, #412] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004d20: 6812 ldr r2, [r2, #0]
8004d22: 2109 movs r1, #9
8004d24: 438a bics r2, r1
8004d26: 0011 movs r1, r2
8004d28: 6a7a ldr r2, [r7, #36] ; 0x24
8004d2a: 430a orrs r2, r1
8004d2c: 601a str r2, [r3, #0]
}
/* Update the SystemCoreClock global variable */
SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];
8004d2e: f000 fc41 bl 80055b4 <HAL_RCC_GetSysClockFreq>
8004d32: 0001 movs r1, r0
8004d34: 4b61 ldr r3, [pc, #388] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004d36: 68db ldr r3, [r3, #12]
8004d38: 091b lsrs r3, r3, #4
8004d3a: 220f movs r2, #15
8004d3c: 4013 ands r3, r2
8004d3e: 4a63 ldr r2, [pc, #396] ; (8004ecc <HAL_RCC_OscConfig+0x34c>)
8004d40: 5cd3 ldrb r3, [r2, r3]
8004d42: 000a movs r2, r1
8004d44: 40da lsrs r2, r3
8004d46: 4b62 ldr r3, [pc, #392] ; (8004ed0 <HAL_RCC_OscConfig+0x350>)
8004d48: 601a str r2, [r3, #0]
/* Configure the source of time base considering new system clocks settings*/
status = HAL_InitTick (uwTickPrio);
8004d4a: 4b62 ldr r3, [pc, #392] ; (8004ed4 <HAL_RCC_OscConfig+0x354>)
8004d4c: 681b ldr r3, [r3, #0]
8004d4e: 2213 movs r2, #19
8004d50: 18bc adds r4, r7, r2
8004d52: 0018 movs r0, r3
8004d54: f7ff f8a4 bl 8003ea0 <HAL_InitTick>
8004d58: 0003 movs r3, r0
8004d5a: 7023 strb r3, [r4, #0]
if(status != HAL_OK)
8004d5c: 2313 movs r3, #19
8004d5e: 18fb adds r3, r7, r3
8004d60: 781b ldrb r3, [r3, #0]
8004d62: 2b00 cmp r3, #0
8004d64: d046 beq.n 8004df4 <HAL_RCC_OscConfig+0x274>
{
return status;
8004d66: 2313 movs r3, #19
8004d68: 18fb adds r3, r7, r3
8004d6a: 781b ldrb r3, [r3, #0]
8004d6c: e2d0 b.n 8005310 <HAL_RCC_OscConfig+0x790>
}
}
else
{
/* Check the HSI State */
if(hsi_state != RCC_HSI_OFF)
8004d6e: 6a7b ldr r3, [r7, #36] ; 0x24
8004d70: 2b00 cmp r3, #0
8004d72: d026 beq.n 8004dc2 <HAL_RCC_OscConfig+0x242>
{
/* Enable the Internal High Speed oscillator (HSI or HSIdiv4) */
__HAL_RCC_HSI_CONFIG(hsi_state);
8004d74: 4b51 ldr r3, [pc, #324] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004d76: 4a51 ldr r2, [pc, #324] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004d78: 6812 ldr r2, [r2, #0]
8004d7a: 2109 movs r1, #9
8004d7c: 438a bics r2, r1
8004d7e: 0011 movs r1, r2
8004d80: 6a7a ldr r2, [r7, #36] ; 0x24
8004d82: 430a orrs r2, r1
8004d84: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
8004d86: f7ff f8d1 bl 8003f2c <HAL_GetTick>
8004d8a: 0003 movs r3, r0
8004d8c: 617b str r3, [r7, #20]
/* Wait till HSI is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U)
8004d8e: e008 b.n 8004da2 <HAL_RCC_OscConfig+0x222>
{
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
8004d90: f7ff f8cc bl 8003f2c <HAL_GetTick>
8004d94: 0002 movs r2, r0
8004d96: 697b ldr r3, [r7, #20]
8004d98: 1ad3 subs r3, r2, r3
8004d9a: 2b02 cmp r3, #2
8004d9c: d901 bls.n 8004da2 <HAL_RCC_OscConfig+0x222>
{
return HAL_TIMEOUT;
8004d9e: 2303 movs r3, #3
8004da0: e2b6 b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U)
8004da2: 4b46 ldr r3, [pc, #280] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004da4: 681b ldr r3, [r3, #0]
8004da6: 2204 movs r2, #4
8004da8: 4013 ands r3, r2
8004daa: d0f1 beq.n 8004d90 <HAL_RCC_OscConfig+0x210>
}
}
/* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
__HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
8004dac: 4a43 ldr r2, [pc, #268] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004dae: 4b43 ldr r3, [pc, #268] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004db0: 685b ldr r3, [r3, #4]
8004db2: 4945 ldr r1, [pc, #276] ; (8004ec8 <HAL_RCC_OscConfig+0x348>)
8004db4: 4019 ands r1, r3
8004db6: 687b ldr r3, [r7, #4]
8004db8: 691b ldr r3, [r3, #16]
8004dba: 021b lsls r3, r3, #8
8004dbc: 430b orrs r3, r1
8004dbe: 6053 str r3, [r2, #4]
8004dc0: e018 b.n 8004df4 <HAL_RCC_OscConfig+0x274>
}
else
{
/* Disable the Internal High Speed oscillator (HSI). */
__HAL_RCC_HSI_DISABLE();
8004dc2: 4b3e ldr r3, [pc, #248] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004dc4: 4a3d ldr r2, [pc, #244] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004dc6: 6812 ldr r2, [r2, #0]
8004dc8: 2101 movs r1, #1
8004dca: 438a bics r2, r1
8004dcc: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
8004dce: f7ff f8ad bl 8003f2c <HAL_GetTick>
8004dd2: 0003 movs r3, r0
8004dd4: 617b str r3, [r7, #20]
/* Wait till HSI is disabled */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U)
8004dd6: e008 b.n 8004dea <HAL_RCC_OscConfig+0x26a>
{
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
8004dd8: f7ff f8a8 bl 8003f2c <HAL_GetTick>
8004ddc: 0002 movs r2, r0
8004dde: 697b ldr r3, [r7, #20]
8004de0: 1ad3 subs r3, r2, r3
8004de2: 2b02 cmp r3, #2
8004de4: d901 bls.n 8004dea <HAL_RCC_OscConfig+0x26a>
{
return HAL_TIMEOUT;
8004de6: 2303 movs r3, #3
8004de8: e292 b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U)
8004dea: 4b34 ldr r3, [pc, #208] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004dec: 681b ldr r3, [r3, #0]
8004dee: 2204 movs r2, #4
8004df0: 4013 ands r3, r2
8004df2: d1f1 bne.n 8004dd8 <HAL_RCC_OscConfig+0x258>
}
}
}
}
/*----------------------------- MSI Configuration --------------------------*/
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI)
8004df4: 687b ldr r3, [r7, #4]
8004df6: 681b ldr r3, [r3, #0]
8004df8: 2210 movs r2, #16
8004dfa: 4013 ands r3, r2
8004dfc: d100 bne.n 8004e00 <HAL_RCC_OscConfig+0x280>
8004dfe: e0a1 b.n 8004f44 <HAL_RCC_OscConfig+0x3c4>
{
/* When the MSI is used as system clock it will not be disabled */
if(sysclk_source == RCC_CFGR_SWS_MSI)
8004e00: 69fb ldr r3, [r7, #28]
8004e02: 2b00 cmp r3, #0
8004e04: d141 bne.n 8004e8a <HAL_RCC_OscConfig+0x30a>
{
if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF))
8004e06: 4b2d ldr r3, [pc, #180] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004e08: 681a ldr r2, [r3, #0]
8004e0a: 2380 movs r3, #128 ; 0x80
8004e0c: 009b lsls r3, r3, #2
8004e0e: 4013 ands r3, r2
8004e10: d005 beq.n 8004e1e <HAL_RCC_OscConfig+0x29e>
8004e12: 687b ldr r3, [r7, #4]
8004e14: 69db ldr r3, [r3, #28]
8004e16: 2b00 cmp r3, #0
8004e18: d101 bne.n 8004e1e <HAL_RCC_OscConfig+0x29e>
{
return HAL_ERROR;
8004e1a: 2301 movs r3, #1
8004e1c: e278 b.n 8005310 <HAL_RCC_OscConfig+0x790>
/* Check MSICalibrationValue and MSIClockRange input parameters */
assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue));
assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange));
/* Selects the Multiple Speed oscillator (MSI) clock range .*/
__HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange);
8004e1e: 4a27 ldr r2, [pc, #156] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004e20: 4b26 ldr r3, [pc, #152] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004e22: 685b ldr r3, [r3, #4]
8004e24: 492c ldr r1, [pc, #176] ; (8004ed8 <HAL_RCC_OscConfig+0x358>)
8004e26: 4019 ands r1, r3
8004e28: 687b ldr r3, [r7, #4]
8004e2a: 6a5b ldr r3, [r3, #36] ; 0x24
8004e2c: 430b orrs r3, r1
8004e2e: 6053 str r3, [r2, #4]
/* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/
__HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue);
8004e30: 4a22 ldr r2, [pc, #136] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004e32: 4b22 ldr r3, [pc, #136] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004e34: 685b ldr r3, [r3, #4]
8004e36: 021b lsls r3, r3, #8
8004e38: 0a19 lsrs r1, r3, #8
8004e3a: 687b ldr r3, [r7, #4]
8004e3c: 6a1b ldr r3, [r3, #32]
8004e3e: 061b lsls r3, r3, #24
8004e40: 430b orrs r3, r1
8004e42: 6053 str r3, [r2, #4]
/* Update the SystemCoreClock global variable */
SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U)))
8004e44: 687b ldr r3, [r7, #4]
8004e46: 6a5b ldr r3, [r3, #36] ; 0x24
8004e48: 0b5b lsrs r3, r3, #13
8004e4a: 3301 adds r3, #1
8004e4c: 2280 movs r2, #128 ; 0x80
8004e4e: 0212 lsls r2, r2, #8
8004e50: 409a lsls r2, r3
>> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)];
8004e52: 4b1a ldr r3, [pc, #104] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004e54: 68db ldr r3, [r3, #12]
8004e56: 091b lsrs r3, r3, #4
8004e58: 210f movs r1, #15
8004e5a: 400b ands r3, r1
8004e5c: 491b ldr r1, [pc, #108] ; (8004ecc <HAL_RCC_OscConfig+0x34c>)
8004e5e: 5ccb ldrb r3, [r1, r3]
8004e60: 40da lsrs r2, r3
SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U)))
8004e62: 4b1b ldr r3, [pc, #108] ; (8004ed0 <HAL_RCC_OscConfig+0x350>)
8004e64: 601a str r2, [r3, #0]
/* Configure the source of time base considering new system clocks settings*/
status = HAL_InitTick (uwTickPrio);
8004e66: 4b1b ldr r3, [pc, #108] ; (8004ed4 <HAL_RCC_OscConfig+0x354>)
8004e68: 681b ldr r3, [r3, #0]
8004e6a: 2213 movs r2, #19
8004e6c: 18bc adds r4, r7, r2
8004e6e: 0018 movs r0, r3
8004e70: f7ff f816 bl 8003ea0 <HAL_InitTick>
8004e74: 0003 movs r3, r0
8004e76: 7023 strb r3, [r4, #0]
if(status != HAL_OK)
8004e78: 2313 movs r3, #19
8004e7a: 18fb adds r3, r7, r3
8004e7c: 781b ldrb r3, [r3, #0]
8004e7e: 2b00 cmp r3, #0
8004e80: d060 beq.n 8004f44 <HAL_RCC_OscConfig+0x3c4>
{
return status;
8004e82: 2313 movs r3, #19
8004e84: 18fb adds r3, r7, r3
8004e86: 781b ldrb r3, [r3, #0]
8004e88: e242 b.n 8005310 <HAL_RCC_OscConfig+0x790>
{
/* Check MSI State */
assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState));
/* Check the MSI State */
if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF)
8004e8a: 687b ldr r3, [r7, #4]
8004e8c: 69db ldr r3, [r3, #28]
8004e8e: 2b00 cmp r3, #0
8004e90: d03e beq.n 8004f10 <HAL_RCC_OscConfig+0x390>
{
/* Enable the Multi Speed oscillator (MSI). */
__HAL_RCC_MSI_ENABLE();
8004e92: 4b0a ldr r3, [pc, #40] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004e94: 4a09 ldr r2, [pc, #36] ; (8004ebc <HAL_RCC_OscConfig+0x33c>)
8004e96: 6812 ldr r2, [r2, #0]
8004e98: 2180 movs r1, #128 ; 0x80
8004e9a: 0049 lsls r1, r1, #1
8004e9c: 430a orrs r2, r1
8004e9e: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
8004ea0: f7ff f844 bl 8003f2c <HAL_GetTick>
8004ea4: 0003 movs r3, r0
8004ea6: 617b str r3, [r7, #20]
/* Wait till MSI is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U)
8004ea8: e018 b.n 8004edc <HAL_RCC_OscConfig+0x35c>
{
if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE)
8004eaa: f7ff f83f bl 8003f2c <HAL_GetTick>
8004eae: 0002 movs r2, r0
8004eb0: 697b ldr r3, [r7, #20]
8004eb2: 1ad3 subs r3, r2, r3
8004eb4: 2b02 cmp r3, #2
8004eb6: d911 bls.n 8004edc <HAL_RCC_OscConfig+0x35c>
{
return HAL_TIMEOUT;
8004eb8: 2303 movs r3, #3
8004eba: e229 b.n 8005310 <HAL_RCC_OscConfig+0x790>
8004ebc: 40021000 .word 0x40021000
8004ec0: fffeffff .word 0xfffeffff
8004ec4: fffbffff .word 0xfffbffff
8004ec8: ffffe0ff .word 0xffffe0ff
8004ecc: 080071d0 .word 0x080071d0
8004ed0: 20000000 .word 0x20000000
8004ed4: 20000008 .word 0x20000008
8004ed8: ffff1fff .word 0xffff1fff
while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U)
8004edc: 4bca ldr r3, [pc, #808] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004ede: 681a ldr r2, [r3, #0]
8004ee0: 2380 movs r3, #128 ; 0x80
8004ee2: 009b lsls r3, r3, #2
8004ee4: 4013 ands r3, r2
8004ee6: d0e0 beq.n 8004eaa <HAL_RCC_OscConfig+0x32a>
/* Check MSICalibrationValue and MSIClockRange input parameters */
assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue));
assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange));
/* Selects the Multiple Speed oscillator (MSI) clock range .*/
__HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange);
8004ee8: 4ac7 ldr r2, [pc, #796] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004eea: 4bc7 ldr r3, [pc, #796] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004eec: 685b ldr r3, [r3, #4]
8004eee: 49c7 ldr r1, [pc, #796] ; (800520c <HAL_RCC_OscConfig+0x68c>)
8004ef0: 4019 ands r1, r3
8004ef2: 687b ldr r3, [r7, #4]
8004ef4: 6a5b ldr r3, [r3, #36] ; 0x24
8004ef6: 430b orrs r3, r1
8004ef8: 6053 str r3, [r2, #4]
/* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/
__HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue);
8004efa: 4ac3 ldr r2, [pc, #780] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004efc: 4bc2 ldr r3, [pc, #776] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004efe: 685b ldr r3, [r3, #4]
8004f00: 021b lsls r3, r3, #8
8004f02: 0a19 lsrs r1, r3, #8
8004f04: 687b ldr r3, [r7, #4]
8004f06: 6a1b ldr r3, [r3, #32]
8004f08: 061b lsls r3, r3, #24
8004f0a: 430b orrs r3, r1
8004f0c: 6053 str r3, [r2, #4]
8004f0e: e019 b.n 8004f44 <HAL_RCC_OscConfig+0x3c4>
}
else
{
/* Disable the Multi Speed oscillator (MSI). */
__HAL_RCC_MSI_DISABLE();
8004f10: 4bbd ldr r3, [pc, #756] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004f12: 4abd ldr r2, [pc, #756] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004f14: 6812 ldr r2, [r2, #0]
8004f16: 49be ldr r1, [pc, #760] ; (8005210 <HAL_RCC_OscConfig+0x690>)
8004f18: 400a ands r2, r1
8004f1a: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
8004f1c: f7ff f806 bl 8003f2c <HAL_GetTick>
8004f20: 0003 movs r3, r0
8004f22: 617b str r3, [r7, #20]
/* Wait till MSI is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U)
8004f24: e008 b.n 8004f38 <HAL_RCC_OscConfig+0x3b8>
{
if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE)
8004f26: f7ff f801 bl 8003f2c <HAL_GetTick>
8004f2a: 0002 movs r2, r0
8004f2c: 697b ldr r3, [r7, #20]
8004f2e: 1ad3 subs r3, r2, r3
8004f30: 2b02 cmp r3, #2
8004f32: d901 bls.n 8004f38 <HAL_RCC_OscConfig+0x3b8>
{
return HAL_TIMEOUT;
8004f34: 2303 movs r3, #3
8004f36: e1eb b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U)
8004f38: 4bb3 ldr r3, [pc, #716] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004f3a: 681a ldr r2, [r3, #0]
8004f3c: 2380 movs r3, #128 ; 0x80
8004f3e: 009b lsls r3, r3, #2
8004f40: 4013 ands r3, r2
8004f42: d1f0 bne.n 8004f26 <HAL_RCC_OscConfig+0x3a6>
}
}
}
}
/*------------------------------ LSI Configuration -------------------------*/
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
8004f44: 687b ldr r3, [r7, #4]
8004f46: 681b ldr r3, [r3, #0]
8004f48: 2208 movs r2, #8
8004f4a: 4013 ands r3, r2
8004f4c: d036 beq.n 8004fbc <HAL_RCC_OscConfig+0x43c>
{
/* Check the parameters */
assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
/* Check the LSI State */
if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF)
8004f4e: 687b ldr r3, [r7, #4]
8004f50: 695b ldr r3, [r3, #20]
8004f52: 2b00 cmp r3, #0
8004f54: d019 beq.n 8004f8a <HAL_RCC_OscConfig+0x40a>
{
/* Enable the Internal Low Speed oscillator (LSI). */
__HAL_RCC_LSI_ENABLE();
8004f56: 4bac ldr r3, [pc, #688] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004f58: 4aab ldr r2, [pc, #684] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004f5a: 6d12 ldr r2, [r2, #80] ; 0x50
8004f5c: 2101 movs r1, #1
8004f5e: 430a orrs r2, r1
8004f60: 651a str r2, [r3, #80] ; 0x50
/* Get Start Tick */
tickstart = HAL_GetTick();
8004f62: f7fe ffe3 bl 8003f2c <HAL_GetTick>
8004f66: 0003 movs r3, r0
8004f68: 617b str r3, [r7, #20]
/* Wait till LSI is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U)
8004f6a: e008 b.n 8004f7e <HAL_RCC_OscConfig+0x3fe>
{
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
8004f6c: f7fe ffde bl 8003f2c <HAL_GetTick>
8004f70: 0002 movs r2, r0
8004f72: 697b ldr r3, [r7, #20]
8004f74: 1ad3 subs r3, r2, r3
8004f76: 2b02 cmp r3, #2
8004f78: d901 bls.n 8004f7e <HAL_RCC_OscConfig+0x3fe>
{
return HAL_TIMEOUT;
8004f7a: 2303 movs r3, #3
8004f7c: e1c8 b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U)
8004f7e: 4ba2 ldr r3, [pc, #648] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004f80: 6d1b ldr r3, [r3, #80] ; 0x50
8004f82: 2202 movs r2, #2
8004f84: 4013 ands r3, r2
8004f86: d0f1 beq.n 8004f6c <HAL_RCC_OscConfig+0x3ec>
8004f88: e018 b.n 8004fbc <HAL_RCC_OscConfig+0x43c>
}
}
else
{
/* Disable the Internal Low Speed oscillator (LSI). */
__HAL_RCC_LSI_DISABLE();
8004f8a: 4b9f ldr r3, [pc, #636] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004f8c: 4a9e ldr r2, [pc, #632] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004f8e: 6d12 ldr r2, [r2, #80] ; 0x50
8004f90: 2101 movs r1, #1
8004f92: 438a bics r2, r1
8004f94: 651a str r2, [r3, #80] ; 0x50
/* Get Start Tick */
tickstart = HAL_GetTick();
8004f96: f7fe ffc9 bl 8003f2c <HAL_GetTick>
8004f9a: 0003 movs r3, r0
8004f9c: 617b str r3, [r7, #20]
/* Wait till LSI is disabled */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U)
8004f9e: e008 b.n 8004fb2 <HAL_RCC_OscConfig+0x432>
{
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
8004fa0: f7fe ffc4 bl 8003f2c <HAL_GetTick>
8004fa4: 0002 movs r2, r0
8004fa6: 697b ldr r3, [r7, #20]
8004fa8: 1ad3 subs r3, r2, r3
8004faa: 2b02 cmp r3, #2
8004fac: d901 bls.n 8004fb2 <HAL_RCC_OscConfig+0x432>
{
return HAL_TIMEOUT;
8004fae: 2303 movs r3, #3
8004fb0: e1ae b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U)
8004fb2: 4b95 ldr r3, [pc, #596] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004fb4: 6d1b ldr r3, [r3, #80] ; 0x50
8004fb6: 2202 movs r2, #2
8004fb8: 4013 ands r3, r2
8004fba: d1f1 bne.n 8004fa0 <HAL_RCC_OscConfig+0x420>
}
}
}
}
/*------------------------------ LSE Configuration -------------------------*/
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
8004fbc: 687b ldr r3, [r7, #4]
8004fbe: 681b ldr r3, [r3, #0]
8004fc0: 2204 movs r2, #4
8004fc2: 4013 ands r3, r2
8004fc4: d100 bne.n 8004fc8 <HAL_RCC_OscConfig+0x448>
8004fc6: e0af b.n 8005128 <HAL_RCC_OscConfig+0x5a8>
{
FlagStatus pwrclkchanged = RESET;
8004fc8: 2323 movs r3, #35 ; 0x23
8004fca: 18fb adds r3, r7, r3
8004fcc: 2200 movs r2, #0
8004fce: 701a strb r2, [r3, #0]
/* Check the parameters */
assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
/* Update LSE configuration in Backup Domain control register */
/* Requires to enable write access to Backup Domain of necessary */
if(__HAL_RCC_PWR_IS_CLK_DISABLED())
8004fd0: 4b8d ldr r3, [pc, #564] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004fd2: 6b9a ldr r2, [r3, #56] ; 0x38
8004fd4: 2380 movs r3, #128 ; 0x80
8004fd6: 055b lsls r3, r3, #21
8004fd8: 4013 ands r3, r2
8004fda: d10a bne.n 8004ff2 <HAL_RCC_OscConfig+0x472>
{
__HAL_RCC_PWR_CLK_ENABLE();
8004fdc: 4b8a ldr r3, [pc, #552] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004fde: 4a8a ldr r2, [pc, #552] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8004fe0: 6b92 ldr r2, [r2, #56] ; 0x38
8004fe2: 2180 movs r1, #128 ; 0x80
8004fe4: 0549 lsls r1, r1, #21
8004fe6: 430a orrs r2, r1
8004fe8: 639a str r2, [r3, #56] ; 0x38
pwrclkchanged = SET;
8004fea: 2323 movs r3, #35 ; 0x23
8004fec: 18fb adds r3, r7, r3
8004fee: 2201 movs r2, #1
8004ff0: 701a strb r2, [r3, #0]
}
if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
8004ff2: 4b88 ldr r3, [pc, #544] ; (8005214 <HAL_RCC_OscConfig+0x694>)
8004ff4: 681a ldr r2, [r3, #0]
8004ff6: 2380 movs r3, #128 ; 0x80
8004ff8: 005b lsls r3, r3, #1
8004ffa: 4013 ands r3, r2
8004ffc: d11a bne.n 8005034 <HAL_RCC_OscConfig+0x4b4>
{
/* Enable write access to Backup domain */
SET_BIT(PWR->CR, PWR_CR_DBP);
8004ffe: 4b85 ldr r3, [pc, #532] ; (8005214 <HAL_RCC_OscConfig+0x694>)
8005000: 4a84 ldr r2, [pc, #528] ; (8005214 <HAL_RCC_OscConfig+0x694>)
8005002: 6812 ldr r2, [r2, #0]
8005004: 2180 movs r1, #128 ; 0x80
8005006: 0049 lsls r1, r1, #1
8005008: 430a orrs r2, r1
800500a: 601a str r2, [r3, #0]
/* Wait for Backup domain Write protection disable */
tickstart = HAL_GetTick();
800500c: f7fe ff8e bl 8003f2c <HAL_GetTick>
8005010: 0003 movs r3, r0
8005012: 617b str r3, [r7, #20]
while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
8005014: e008 b.n 8005028 <HAL_RCC_OscConfig+0x4a8>
{
if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
8005016: f7fe ff89 bl 8003f2c <HAL_GetTick>
800501a: 0002 movs r2, r0
800501c: 697b ldr r3, [r7, #20]
800501e: 1ad3 subs r3, r2, r3
8005020: 2b64 cmp r3, #100 ; 0x64
8005022: d901 bls.n 8005028 <HAL_RCC_OscConfig+0x4a8>
{
return HAL_TIMEOUT;
8005024: 2303 movs r3, #3
8005026: e173 b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
8005028: 4b7a ldr r3, [pc, #488] ; (8005214 <HAL_RCC_OscConfig+0x694>)
800502a: 681a ldr r2, [r3, #0]
800502c: 2380 movs r3, #128 ; 0x80
800502e: 005b lsls r3, r3, #1
8005030: 4013 ands r3, r2
8005032: d0f0 beq.n 8005016 <HAL_RCC_OscConfig+0x496>
}
}
}
/* Set the new LSE configuration -----------------------------------------*/
__HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
8005034: 687b ldr r3, [r7, #4]
8005036: 689a ldr r2, [r3, #8]
8005038: 2380 movs r3, #128 ; 0x80
800503a: 005b lsls r3, r3, #1
800503c: 429a cmp r2, r3
800503e: d107 bne.n 8005050 <HAL_RCC_OscConfig+0x4d0>
8005040: 4b71 ldr r3, [pc, #452] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005042: 4a71 ldr r2, [pc, #452] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005044: 6d12 ldr r2, [r2, #80] ; 0x50
8005046: 2180 movs r1, #128 ; 0x80
8005048: 0049 lsls r1, r1, #1
800504a: 430a orrs r2, r1
800504c: 651a str r2, [r3, #80] ; 0x50
800504e: e031 b.n 80050b4 <HAL_RCC_OscConfig+0x534>
8005050: 687b ldr r3, [r7, #4]
8005052: 689b ldr r3, [r3, #8]
8005054: 2b00 cmp r3, #0
8005056: d10c bne.n 8005072 <HAL_RCC_OscConfig+0x4f2>
8005058: 4b6b ldr r3, [pc, #428] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800505a: 4a6b ldr r2, [pc, #428] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800505c: 6d12 ldr r2, [r2, #80] ; 0x50
800505e: 496c ldr r1, [pc, #432] ; (8005210 <HAL_RCC_OscConfig+0x690>)
8005060: 400a ands r2, r1
8005062: 651a str r2, [r3, #80] ; 0x50
8005064: 4b68 ldr r3, [pc, #416] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005066: 4a68 ldr r2, [pc, #416] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005068: 6d12 ldr r2, [r2, #80] ; 0x50
800506a: 496b ldr r1, [pc, #428] ; (8005218 <HAL_RCC_OscConfig+0x698>)
800506c: 400a ands r2, r1
800506e: 651a str r2, [r3, #80] ; 0x50
8005070: e020 b.n 80050b4 <HAL_RCC_OscConfig+0x534>
8005072: 687b ldr r3, [r7, #4]
8005074: 689a ldr r2, [r3, #8]
8005076: 23a0 movs r3, #160 ; 0xa0
8005078: 00db lsls r3, r3, #3
800507a: 429a cmp r2, r3
800507c: d10e bne.n 800509c <HAL_RCC_OscConfig+0x51c>
800507e: 4b62 ldr r3, [pc, #392] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005080: 4a61 ldr r2, [pc, #388] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005082: 6d12 ldr r2, [r2, #80] ; 0x50
8005084: 2180 movs r1, #128 ; 0x80
8005086: 00c9 lsls r1, r1, #3
8005088: 430a orrs r2, r1
800508a: 651a str r2, [r3, #80] ; 0x50
800508c: 4b5e ldr r3, [pc, #376] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800508e: 4a5e ldr r2, [pc, #376] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005090: 6d12 ldr r2, [r2, #80] ; 0x50
8005092: 2180 movs r1, #128 ; 0x80
8005094: 0049 lsls r1, r1, #1
8005096: 430a orrs r2, r1
8005098: 651a str r2, [r3, #80] ; 0x50
800509a: e00b b.n 80050b4 <HAL_RCC_OscConfig+0x534>
800509c: 4b5a ldr r3, [pc, #360] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800509e: 4a5a ldr r2, [pc, #360] ; (8005208 <HAL_RCC_OscConfig+0x688>)
80050a0: 6d12 ldr r2, [r2, #80] ; 0x50
80050a2: 495b ldr r1, [pc, #364] ; (8005210 <HAL_RCC_OscConfig+0x690>)
80050a4: 400a ands r2, r1
80050a6: 651a str r2, [r3, #80] ; 0x50
80050a8: 4b57 ldr r3, [pc, #348] ; (8005208 <HAL_RCC_OscConfig+0x688>)
80050aa: 4a57 ldr r2, [pc, #348] ; (8005208 <HAL_RCC_OscConfig+0x688>)
80050ac: 6d12 ldr r2, [r2, #80] ; 0x50
80050ae: 495a ldr r1, [pc, #360] ; (8005218 <HAL_RCC_OscConfig+0x698>)
80050b0: 400a ands r2, r1
80050b2: 651a str r2, [r3, #80] ; 0x50
/* Check the LSE State */
if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF)
80050b4: 687b ldr r3, [r7, #4]
80050b6: 689b ldr r3, [r3, #8]
80050b8: 2b00 cmp r3, #0
80050ba: d015 beq.n 80050e8 <HAL_RCC_OscConfig+0x568>
{
/* Get Start Tick */
tickstart = HAL_GetTick();
80050bc: f7fe ff36 bl 8003f2c <HAL_GetTick>
80050c0: 0003 movs r3, r0
80050c2: 617b str r3, [r7, #20]
/* Wait till LSE is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)
80050c4: e009 b.n 80050da <HAL_RCC_OscConfig+0x55a>
{
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
80050c6: f7fe ff31 bl 8003f2c <HAL_GetTick>
80050ca: 0002 movs r2, r0
80050cc: 697b ldr r3, [r7, #20]
80050ce: 1ad3 subs r3, r2, r3
80050d0: 4a52 ldr r2, [pc, #328] ; (800521c <HAL_RCC_OscConfig+0x69c>)
80050d2: 4293 cmp r3, r2
80050d4: d901 bls.n 80050da <HAL_RCC_OscConfig+0x55a>
{
return HAL_TIMEOUT;
80050d6: 2303 movs r3, #3
80050d8: e11a b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)
80050da: 4b4b ldr r3, [pc, #300] ; (8005208 <HAL_RCC_OscConfig+0x688>)
80050dc: 6d1a ldr r2, [r3, #80] ; 0x50
80050de: 2380 movs r3, #128 ; 0x80
80050e0: 009b lsls r3, r3, #2
80050e2: 4013 ands r3, r2
80050e4: d0ef beq.n 80050c6 <HAL_RCC_OscConfig+0x546>
80050e6: e014 b.n 8005112 <HAL_RCC_OscConfig+0x592>
}
}
else
{
/* Get Start Tick */
tickstart = HAL_GetTick();
80050e8: f7fe ff20 bl 8003f2c <HAL_GetTick>
80050ec: 0003 movs r3, r0
80050ee: 617b str r3, [r7, #20]
/* Wait till LSE is disabled */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U)
80050f0: e009 b.n 8005106 <HAL_RCC_OscConfig+0x586>
{
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
80050f2: f7fe ff1b bl 8003f2c <HAL_GetTick>
80050f6: 0002 movs r2, r0
80050f8: 697b ldr r3, [r7, #20]
80050fa: 1ad3 subs r3, r2, r3
80050fc: 4a47 ldr r2, [pc, #284] ; (800521c <HAL_RCC_OscConfig+0x69c>)
80050fe: 4293 cmp r3, r2
8005100: d901 bls.n 8005106 <HAL_RCC_OscConfig+0x586>
{
return HAL_TIMEOUT;
8005102: 2303 movs r3, #3
8005104: e104 b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U)
8005106: 4b40 ldr r3, [pc, #256] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005108: 6d1a ldr r2, [r3, #80] ; 0x50
800510a: 2380 movs r3, #128 ; 0x80
800510c: 009b lsls r3, r3, #2
800510e: 4013 ands r3, r2
8005110: d1ef bne.n 80050f2 <HAL_RCC_OscConfig+0x572>
}
}
}
/* Require to disable power clock if necessary */
if(pwrclkchanged == SET)
8005112: 2323 movs r3, #35 ; 0x23
8005114: 18fb adds r3, r7, r3
8005116: 781b ldrb r3, [r3, #0]
8005118: 2b01 cmp r3, #1
800511a: d105 bne.n 8005128 <HAL_RCC_OscConfig+0x5a8>
{
__HAL_RCC_PWR_CLK_DISABLE();
800511c: 4b3a ldr r3, [pc, #232] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800511e: 4a3a ldr r2, [pc, #232] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005120: 6b92 ldr r2, [r2, #56] ; 0x38
8005122: 493f ldr r1, [pc, #252] ; (8005220 <HAL_RCC_OscConfig+0x6a0>)
8005124: 400a ands r2, r1
8005126: 639a str r2, [r3, #56] ; 0x38
}
}
#if defined(RCC_HSI48_SUPPORT)
/*----------------------------- HSI48 Configuration --------------------------*/
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48)
8005128: 687b ldr r3, [r7, #4]
800512a: 681b ldr r3, [r3, #0]
800512c: 2220 movs r2, #32
800512e: 4013 ands r3, r2
8005130: d049 beq.n 80051c6 <HAL_RCC_OscConfig+0x646>
{
/* Check the parameters */
assert_param(IS_RCC_HSI48(RCC_OscInitStruct->HSI48State));
/* Check the HSI48 State */
if(RCC_OscInitStruct->HSI48State != RCC_HSI48_OFF)
8005132: 687b ldr r3, [r7, #4]
8005134: 699b ldr r3, [r3, #24]
8005136: 2b00 cmp r3, #0
8005138: d026 beq.n 8005188 <HAL_RCC_OscConfig+0x608>
{
/* Enable the Internal High Speed oscillator (HSI48). */
__HAL_RCC_HSI48_ENABLE();
800513a: 4b33 ldr r3, [pc, #204] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800513c: 4a32 ldr r2, [pc, #200] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800513e: 6892 ldr r2, [r2, #8]
8005140: 2101 movs r1, #1
8005142: 430a orrs r2, r1
8005144: 609a str r2, [r3, #8]
8005146: 4b30 ldr r3, [pc, #192] ; (8005208 <HAL_RCC_OscConfig+0x688>)
8005148: 4a2f ldr r2, [pc, #188] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800514a: 6b52 ldr r2, [r2, #52] ; 0x34
800514c: 2101 movs r1, #1
800514e: 430a orrs r2, r1
8005150: 635a str r2, [r3, #52] ; 0x34
8005152: 4b34 ldr r3, [pc, #208] ; (8005224 <HAL_RCC_OscConfig+0x6a4>)
8005154: 4a33 ldr r2, [pc, #204] ; (8005224 <HAL_RCC_OscConfig+0x6a4>)
8005156: 6a12 ldr r2, [r2, #32]
8005158: 2180 movs r1, #128 ; 0x80
800515a: 0189 lsls r1, r1, #6
800515c: 430a orrs r2, r1
800515e: 621a str r2, [r3, #32]
/* Get Start Tick */
tickstart = HAL_GetTick();
8005160: f7fe fee4 bl 8003f2c <HAL_GetTick>
8005164: 0003 movs r3, r0
8005166: 617b str r3, [r7, #20]
/* Wait till HSI48 is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) == 0U)
8005168: e008 b.n 800517c <HAL_RCC_OscConfig+0x5fc>
{
if((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE)
800516a: f7fe fedf bl 8003f2c <HAL_GetTick>
800516e: 0002 movs r2, r0
8005170: 697b ldr r3, [r7, #20]
8005172: 1ad3 subs r3, r2, r3
8005174: 2b02 cmp r3, #2
8005176: d901 bls.n 800517c <HAL_RCC_OscConfig+0x5fc>
{
return HAL_TIMEOUT;
8005178: 2303 movs r3, #3
800517a: e0c9 b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) == 0U)
800517c: 4b22 ldr r3, [pc, #136] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800517e: 689b ldr r3, [r3, #8]
8005180: 2202 movs r2, #2
8005182: 4013 ands r3, r2
8005184: d0f1 beq.n 800516a <HAL_RCC_OscConfig+0x5ea>
8005186: e01e b.n 80051c6 <HAL_RCC_OscConfig+0x646>
}
}
else
{
/* Disable the Internal High Speed oscillator (HSI48). */
__HAL_RCC_HSI48_DISABLE();
8005188: 4b1f ldr r3, [pc, #124] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800518a: 4a1f ldr r2, [pc, #124] ; (8005208 <HAL_RCC_OscConfig+0x688>)
800518c: 6892 ldr r2, [r2, #8]
800518e: 2101 movs r1, #1
8005190: 438a bics r2, r1
8005192: 609a str r2, [r3, #8]
8005194: 4b23 ldr r3, [pc, #140] ; (8005224 <HAL_RCC_OscConfig+0x6a4>)
8005196: 4a23 ldr r2, [pc, #140] ; (8005224 <HAL_RCC_OscConfig+0x6a4>)
8005198: 6a12 ldr r2, [r2, #32]
800519a: 4923 ldr r1, [pc, #140] ; (8005228 <HAL_RCC_OscConfig+0x6a8>)
800519c: 400a ands r2, r1
800519e: 621a str r2, [r3, #32]
/* Get Start Tick */
tickstart = HAL_GetTick();
80051a0: f7fe fec4 bl 8003f2c <HAL_GetTick>
80051a4: 0003 movs r3, r0
80051a6: 617b str r3, [r7, #20]
/* Wait till HSI48 is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) != 0U)
80051a8: e008 b.n 80051bc <HAL_RCC_OscConfig+0x63c>
{
if((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE)
80051aa: f7fe febf bl 8003f2c <HAL_GetTick>
80051ae: 0002 movs r2, r0
80051b0: 697b ldr r3, [r7, #20]
80051b2: 1ad3 subs r3, r2, r3
80051b4: 2b02 cmp r3, #2
80051b6: d901 bls.n 80051bc <HAL_RCC_OscConfig+0x63c>
{
return HAL_TIMEOUT;
80051b8: 2303 movs r3, #3
80051ba: e0a9 b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) != 0U)
80051bc: 4b12 ldr r3, [pc, #72] ; (8005208 <HAL_RCC_OscConfig+0x688>)
80051be: 689b ldr r3, [r3, #8]
80051c0: 2202 movs r2, #2
80051c2: 4013 ands r3, r2
80051c4: d1f1 bne.n 80051aa <HAL_RCC_OscConfig+0x62a>
#endif /* RCC_HSI48_SUPPORT */
/*-------------------------------- PLL Configuration -----------------------*/
/* Check the parameters */
assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
80051c6: 687b ldr r3, [r7, #4]
80051c8: 6a9b ldr r3, [r3, #40] ; 0x28
80051ca: 2b00 cmp r3, #0
80051cc: d100 bne.n 80051d0 <HAL_RCC_OscConfig+0x650>
80051ce: e09e b.n 800530e <HAL_RCC_OscConfig+0x78e>
{
/* Check if the PLL is used as system clock or not */
if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
80051d0: 69fb ldr r3, [r7, #28]
80051d2: 2b0c cmp r3, #12
80051d4: d100 bne.n 80051d8 <HAL_RCC_OscConfig+0x658>
80051d6: e077 b.n 80052c8 <HAL_RCC_OscConfig+0x748>
{
if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
80051d8: 687b ldr r3, [r7, #4]
80051da: 6a9b ldr r3, [r3, #40] ; 0x28
80051dc: 2b02 cmp r3, #2
80051de: d158 bne.n 8005292 <HAL_RCC_OscConfig+0x712>
assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL));
assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV));
/* Disable the main PLL. */
__HAL_RCC_PLL_DISABLE();
80051e0: 4b09 ldr r3, [pc, #36] ; (8005208 <HAL_RCC_OscConfig+0x688>)
80051e2: 4a09 ldr r2, [pc, #36] ; (8005208 <HAL_RCC_OscConfig+0x688>)
80051e4: 6812 ldr r2, [r2, #0]
80051e6: 4911 ldr r1, [pc, #68] ; (800522c <HAL_RCC_OscConfig+0x6ac>)
80051e8: 400a ands r2, r1
80051ea: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
80051ec: f7fe fe9e bl 8003f2c <HAL_GetTick>
80051f0: 0003 movs r3, r0
80051f2: 617b str r3, [r7, #20]
/* Wait till PLL is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)
80051f4: e01c b.n 8005230 <HAL_RCC_OscConfig+0x6b0>
{
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
80051f6: f7fe fe99 bl 8003f2c <HAL_GetTick>
80051fa: 0002 movs r2, r0
80051fc: 697b ldr r3, [r7, #20]
80051fe: 1ad3 subs r3, r2, r3
8005200: 2b02 cmp r3, #2
8005202: d915 bls.n 8005230 <HAL_RCC_OscConfig+0x6b0>
{
return HAL_TIMEOUT;
8005204: 2303 movs r3, #3
8005206: e083 b.n 8005310 <HAL_RCC_OscConfig+0x790>
8005208: 40021000 .word 0x40021000
800520c: ffff1fff .word 0xffff1fff
8005210: fffffeff .word 0xfffffeff
8005214: 40007000 .word 0x40007000
8005218: fffffbff .word 0xfffffbff
800521c: 00001388 .word 0x00001388
8005220: efffffff .word 0xefffffff
8005224: 40010000 .word 0x40010000
8005228: ffffdfff .word 0xffffdfff
800522c: feffffff .word 0xfeffffff
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)
8005230: 4b39 ldr r3, [pc, #228] ; (8005318 <HAL_RCC_OscConfig+0x798>)
8005232: 681a ldr r2, [r3, #0]
8005234: 2380 movs r3, #128 ; 0x80
8005236: 049b lsls r3, r3, #18
8005238: 4013 ands r3, r2
800523a: d1dc bne.n 80051f6 <HAL_RCC_OscConfig+0x676>
}
}
/* Configure the main PLL clock source, multiplication and division factors. */
__HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
800523c: 4a36 ldr r2, [pc, #216] ; (8005318 <HAL_RCC_OscConfig+0x798>)
800523e: 4b36 ldr r3, [pc, #216] ; (8005318 <HAL_RCC_OscConfig+0x798>)
8005240: 68db ldr r3, [r3, #12]
8005242: 4936 ldr r1, [pc, #216] ; (800531c <HAL_RCC_OscConfig+0x79c>)
8005244: 4019 ands r1, r3
8005246: 687b ldr r3, [r7, #4]
8005248: 6ad8 ldr r0, [r3, #44] ; 0x2c
800524a: 687b ldr r3, [r7, #4]
800524c: 6b1b ldr r3, [r3, #48] ; 0x30
800524e: 4318 orrs r0, r3
8005250: 687b ldr r3, [r7, #4]
8005252: 6b5b ldr r3, [r3, #52] ; 0x34
8005254: 4303 orrs r3, r0
8005256: 430b orrs r3, r1
8005258: 60d3 str r3, [r2, #12]
RCC_OscInitStruct->PLL.PLLMUL,
RCC_OscInitStruct->PLL.PLLDIV);
/* Enable the main PLL. */
__HAL_RCC_PLL_ENABLE();
800525a: 4b2f ldr r3, [pc, #188] ; (8005318 <HAL_RCC_OscConfig+0x798>)
800525c: 4a2e ldr r2, [pc, #184] ; (8005318 <HAL_RCC_OscConfig+0x798>)
800525e: 6812 ldr r2, [r2, #0]
8005260: 2180 movs r1, #128 ; 0x80
8005262: 0449 lsls r1, r1, #17
8005264: 430a orrs r2, r1
8005266: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
8005268: f7fe fe60 bl 8003f2c <HAL_GetTick>
800526c: 0003 movs r3, r0
800526e: 617b str r3, [r7, #20]
/* Wait till PLL is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U)
8005270: e008 b.n 8005284 <HAL_RCC_OscConfig+0x704>
{
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
8005272: f7fe fe5b bl 8003f2c <HAL_GetTick>
8005276: 0002 movs r2, r0
8005278: 697b ldr r3, [r7, #20]
800527a: 1ad3 subs r3, r2, r3
800527c: 2b02 cmp r3, #2
800527e: d901 bls.n 8005284 <HAL_RCC_OscConfig+0x704>
{
return HAL_TIMEOUT;
8005280: 2303 movs r3, #3
8005282: e045 b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U)
8005284: 4b24 ldr r3, [pc, #144] ; (8005318 <HAL_RCC_OscConfig+0x798>)
8005286: 681a ldr r2, [r3, #0]
8005288: 2380 movs r3, #128 ; 0x80
800528a: 049b lsls r3, r3, #18
800528c: 4013 ands r3, r2
800528e: d0f0 beq.n 8005272 <HAL_RCC_OscConfig+0x6f2>
8005290: e03d b.n 800530e <HAL_RCC_OscConfig+0x78e>
}
}
else
{
/* Disable the main PLL. */
__HAL_RCC_PLL_DISABLE();
8005292: 4b21 ldr r3, [pc, #132] ; (8005318 <HAL_RCC_OscConfig+0x798>)
8005294: 4a20 ldr r2, [pc, #128] ; (8005318 <HAL_RCC_OscConfig+0x798>)
8005296: 6812 ldr r2, [r2, #0]
8005298: 4921 ldr r1, [pc, #132] ; (8005320 <HAL_RCC_OscConfig+0x7a0>)
800529a: 400a ands r2, r1
800529c: 601a str r2, [r3, #0]
/* Get Start Tick */
tickstart = HAL_GetTick();
800529e: f7fe fe45 bl 8003f2c <HAL_GetTick>
80052a2: 0003 movs r3, r0
80052a4: 617b str r3, [r7, #20]
/* Wait till PLL is disabled */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)
80052a6: e008 b.n 80052ba <HAL_RCC_OscConfig+0x73a>
{
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
80052a8: f7fe fe40 bl 8003f2c <HAL_GetTick>
80052ac: 0002 movs r2, r0
80052ae: 697b ldr r3, [r7, #20]
80052b0: 1ad3 subs r3, r2, r3
80052b2: 2b02 cmp r3, #2
80052b4: d901 bls.n 80052ba <HAL_RCC_OscConfig+0x73a>
{
return HAL_TIMEOUT;
80052b6: 2303 movs r3, #3
80052b8: e02a b.n 8005310 <HAL_RCC_OscConfig+0x790>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)
80052ba: 4b17 ldr r3, [pc, #92] ; (8005318 <HAL_RCC_OscConfig+0x798>)
80052bc: 681a ldr r2, [r3, #0]
80052be: 2380 movs r3, #128 ; 0x80
80052c0: 049b lsls r3, r3, #18
80052c2: 4013 ands r3, r2
80052c4: d1f0 bne.n 80052a8 <HAL_RCC_OscConfig+0x728>
80052c6: e022 b.n 800530e <HAL_RCC_OscConfig+0x78e>
}
}
else
{
/* Check if there is a request to disable the PLL used as System clock source */
if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF)
80052c8: 687b ldr r3, [r7, #4]
80052ca: 6a9b ldr r3, [r3, #40] ; 0x28
80052cc: 2b01 cmp r3, #1
80052ce: d101 bne.n 80052d4 <HAL_RCC_OscConfig+0x754>
{
return HAL_ERROR;
80052d0: 2301 movs r3, #1
80052d2: e01d b.n 8005310 <HAL_RCC_OscConfig+0x790>
}
else
{
/* Do not return HAL_ERROR if request repeats the current configuration */
pll_config = RCC->CFGR;
80052d4: 4b10 ldr r3, [pc, #64] ; (8005318 <HAL_RCC_OscConfig+0x798>)
80052d6: 68db ldr r3, [r3, #12]
80052d8: 61bb str r3, [r7, #24]
if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
80052da: 69ba ldr r2, [r7, #24]
80052dc: 2380 movs r3, #128 ; 0x80
80052de: 025b lsls r3, r3, #9
80052e0: 401a ands r2, r3
80052e2: 687b ldr r3, [r7, #4]
80052e4: 6adb ldr r3, [r3, #44] ; 0x2c
80052e6: 429a cmp r2, r3
80052e8: d10f bne.n 800530a <HAL_RCC_OscConfig+0x78a>
(READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) ||
80052ea: 69ba ldr r2, [r7, #24]
80052ec: 23f0 movs r3, #240 ; 0xf0
80052ee: 039b lsls r3, r3, #14
80052f0: 401a ands r2, r3
80052f2: 687b ldr r3, [r7, #4]
80052f4: 6b1b ldr r3, [r3, #48] ; 0x30
if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
80052f6: 429a cmp r2, r3
80052f8: d107 bne.n 800530a <HAL_RCC_OscConfig+0x78a>
(READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV))
80052fa: 69ba ldr r2, [r7, #24]
80052fc: 23c0 movs r3, #192 ; 0xc0
80052fe: 041b lsls r3, r3, #16
8005300: 401a ands r2, r3
8005302: 687b ldr r3, [r7, #4]
8005304: 6b5b ldr r3, [r3, #52] ; 0x34
(READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) ||
8005306: 429a cmp r2, r3
8005308: d001 beq.n 800530e <HAL_RCC_OscConfig+0x78e>
{
return HAL_ERROR;
800530a: 2301 movs r3, #1
800530c: e000 b.n 8005310 <HAL_RCC_OscConfig+0x790>
}
}
}
}
return HAL_OK;
800530e: 2300 movs r3, #0
}
8005310: 0018 movs r0, r3
8005312: 46bd mov sp, r7
8005314: b00b add sp, #44 ; 0x2c
8005316: bd90 pop {r4, r7, pc}
8005318: 40021000 .word 0x40021000
800531c: ff02ffff .word 0xff02ffff
8005320: feffffff .word 0xfeffffff
08005324 <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 HAL status
*/
HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
{
8005324: b590 push {r4, r7, lr}
8005326: b085 sub sp, #20
8005328: af00 add r7, sp, #0
800532a: 6078 str r0, [r7, #4]
800532c: 6039 str r1, [r7, #0]
uint32_t tickstart;
HAL_StatusTypeDef status;
/* Check Null pointer */
if(RCC_ClkInitStruct == NULL)
800532e: 687b ldr r3, [r7, #4]
8005330: 2b00 cmp r3, #0
8005332: d101 bne.n 8005338 <HAL_RCC_ClockConfig+0x14>
{
return HAL_ERROR;
8005334: 2301 movs r3, #1
8005336: e128 b.n 800558a <HAL_RCC_ClockConfig+0x266>
/* To correctly read data from FLASH memory, the number of wait states (LATENCY)
must be correctly programmed according to the frequency of the CPU clock
(HCLK) and the supply voltage of the device. */
/* Increasing the number of wait states because of higher CPU frequency */
if(FLatency > __HAL_FLASH_GET_LATENCY())
8005338: 4b96 ldr r3, [pc, #600] ; (8005594 <HAL_RCC_ClockConfig+0x270>)
800533a: 681b ldr r3, [r3, #0]
800533c: 2201 movs r2, #1
800533e: 401a ands r2, r3
8005340: 683b ldr r3, [r7, #0]
8005342: 429a cmp r2, r3
8005344: d21e bcs.n 8005384 <HAL_RCC_ClockConfig+0x60>
{
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
__HAL_FLASH_SET_LATENCY(FLatency);
8005346: 4b93 ldr r3, [pc, #588] ; (8005594 <HAL_RCC_ClockConfig+0x270>)
8005348: 4a92 ldr r2, [pc, #584] ; (8005594 <HAL_RCC_ClockConfig+0x270>)
800534a: 6812 ldr r2, [r2, #0]
800534c: 2101 movs r1, #1
800534e: 438a bics r2, r1
8005350: 0011 movs r1, r2
8005352: 683a ldr r2, [r7, #0]
8005354: 430a orrs r2, r1
8005356: 601a str r2, [r3, #0]
/* Check that the new number of wait states is taken into account to access the Flash
memory by polling the FLASH_ACR register */
tickstart = HAL_GetTick();
8005358: f7fe fde8 bl 8003f2c <HAL_GetTick>
800535c: 0003 movs r3, r0
800535e: 60fb str r3, [r7, #12]
while (__HAL_FLASH_GET_LATENCY() != FLatency)
8005360: e009 b.n 8005376 <HAL_RCC_ClockConfig+0x52>
{
if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
8005362: f7fe fde3 bl 8003f2c <HAL_GetTick>
8005366: 0002 movs r2, r0
8005368: 68fb ldr r3, [r7, #12]
800536a: 1ad3 subs r3, r2, r3
800536c: 4a8a ldr r2, [pc, #552] ; (8005598 <HAL_RCC_ClockConfig+0x274>)
800536e: 4293 cmp r3, r2
8005370: d901 bls.n 8005376 <HAL_RCC_ClockConfig+0x52>
{
return HAL_TIMEOUT;
8005372: 2303 movs r3, #3
8005374: e109 b.n 800558a <HAL_RCC_ClockConfig+0x266>
while (__HAL_FLASH_GET_LATENCY() != FLatency)
8005376: 4b87 ldr r3, [pc, #540] ; (8005594 <HAL_RCC_ClockConfig+0x270>)
8005378: 681b ldr r3, [r3, #0]
800537a: 2201 movs r2, #1
800537c: 401a ands r2, r3
800537e: 683b ldr r3, [r7, #0]
8005380: 429a cmp r2, r3
8005382: d1ee bne.n 8005362 <HAL_RCC_ClockConfig+0x3e>
}
}
}
/*-------------------------- HCLK Configuration --------------------------*/
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
8005384: 687b ldr r3, [r7, #4]
8005386: 681b ldr r3, [r3, #0]
8005388: 2202 movs r2, #2
800538a: 4013 ands r3, r2
800538c: d009 beq.n 80053a2 <HAL_RCC_ClockConfig+0x7e>
{
assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));
MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
800538e: 4a83 ldr r2, [pc, #524] ; (800559c <HAL_RCC_ClockConfig+0x278>)
8005390: 4b82 ldr r3, [pc, #520] ; (800559c <HAL_RCC_ClockConfig+0x278>)
8005392: 68db ldr r3, [r3, #12]
8005394: 21f0 movs r1, #240 ; 0xf0
8005396: 438b bics r3, r1
8005398: 0019 movs r1, r3
800539a: 687b ldr r3, [r7, #4]
800539c: 689b ldr r3, [r3, #8]
800539e: 430b orrs r3, r1
80053a0: 60d3 str r3, [r2, #12]
}
/*------------------------- SYSCLK Configuration ---------------------------*/
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
80053a2: 687b ldr r3, [r7, #4]
80053a4: 681b ldr r3, [r3, #0]
80053a6: 2201 movs r2, #1
80053a8: 4013 ands r3, r2
80053aa: d100 bne.n 80053ae <HAL_RCC_ClockConfig+0x8a>
80053ac: e089 b.n 80054c2 <HAL_RCC_ClockConfig+0x19e>
{
assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
/* HSE is selected as System Clock Source */
if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
80053ae: 687b ldr r3, [r7, #4]
80053b0: 685b ldr r3, [r3, #4]
80053b2: 2b02 cmp r3, #2
80053b4: d107 bne.n 80053c6 <HAL_RCC_ClockConfig+0xa2>
{
/* Check the HSE ready flag */
if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U)
80053b6: 4b79 ldr r3, [pc, #484] ; (800559c <HAL_RCC_ClockConfig+0x278>)
80053b8: 681a ldr r2, [r3, #0]
80053ba: 2380 movs r3, #128 ; 0x80
80053bc: 029b lsls r3, r3, #10
80053be: 4013 ands r3, r2
80053c0: d120 bne.n 8005404 <HAL_RCC_ClockConfig+0xe0>
{
return HAL_ERROR;
80053c2: 2301 movs r3, #1
80053c4: e0e1 b.n 800558a <HAL_RCC_ClockConfig+0x266>
}
}
/* PLL is selected as System Clock Source */
else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
80053c6: 687b ldr r3, [r7, #4]
80053c8: 685b ldr r3, [r3, #4]
80053ca: 2b03 cmp r3, #3
80053cc: d107 bne.n 80053de <HAL_RCC_ClockConfig+0xba>
{
/* Check the PLL ready flag */
if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U)
80053ce: 4b73 ldr r3, [pc, #460] ; (800559c <HAL_RCC_ClockConfig+0x278>)
80053d0: 681a ldr r2, [r3, #0]
80053d2: 2380 movs r3, #128 ; 0x80
80053d4: 049b lsls r3, r3, #18
80053d6: 4013 ands r3, r2
80053d8: d114 bne.n 8005404 <HAL_RCC_ClockConfig+0xe0>
{
return HAL_ERROR;
80053da: 2301 movs r3, #1
80053dc: e0d5 b.n 800558a <HAL_RCC_ClockConfig+0x266>
}
}
/* HSI is selected as System Clock Source */
else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI)
80053de: 687b ldr r3, [r7, #4]
80053e0: 685b ldr r3, [r3, #4]
80053e2: 2b01 cmp r3, #1
80053e4: d106 bne.n 80053f4 <HAL_RCC_ClockConfig+0xd0>
{
/* Check the HSI ready flag */
if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U)
80053e6: 4b6d ldr r3, [pc, #436] ; (800559c <HAL_RCC_ClockConfig+0x278>)
80053e8: 681b ldr r3, [r3, #0]
80053ea: 2204 movs r2, #4
80053ec: 4013 ands r3, r2
80053ee: d109 bne.n 8005404 <HAL_RCC_ClockConfig+0xe0>
{
return HAL_ERROR;
80053f0: 2301 movs r3, #1
80053f2: e0ca b.n 800558a <HAL_RCC_ClockConfig+0x266>
}
/* MSI is selected as System Clock Source */
else
{
/* Check the MSI ready flag */
if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U)
80053f4: 4b69 ldr r3, [pc, #420] ; (800559c <HAL_RCC_ClockConfig+0x278>)
80053f6: 681a ldr r2, [r3, #0]
80053f8: 2380 movs r3, #128 ; 0x80
80053fa: 009b lsls r3, r3, #2
80053fc: 4013 ands r3, r2
80053fe: d101 bne.n 8005404 <HAL_RCC_ClockConfig+0xe0>
{
return HAL_ERROR;
8005400: 2301 movs r3, #1
8005402: e0c2 b.n 800558a <HAL_RCC_ClockConfig+0x266>
}
}
__HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);
8005404: 4a65 ldr r2, [pc, #404] ; (800559c <HAL_RCC_ClockConfig+0x278>)
8005406: 4b65 ldr r3, [pc, #404] ; (800559c <HAL_RCC_ClockConfig+0x278>)
8005408: 68db ldr r3, [r3, #12]
800540a: 2103 movs r1, #3
800540c: 438b bics r3, r1
800540e: 0019 movs r1, r3
8005410: 687b ldr r3, [r7, #4]
8005412: 685b ldr r3, [r3, #4]
8005414: 430b orrs r3, r1
8005416: 60d3 str r3, [r2, #12]
/* Get Start Tick */
tickstart = HAL_GetTick();
8005418: f7fe fd88 bl 8003f2c <HAL_GetTick>
800541c: 0003 movs r3, r0
800541e: 60fb str r3, [r7, #12]
if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
8005420: 687b ldr r3, [r7, #4]
8005422: 685b ldr r3, [r3, #4]
8005424: 2b02 cmp r3, #2
8005426: d111 bne.n 800544c <HAL_RCC_ClockConfig+0x128>
{
while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE)
8005428: e009 b.n 800543e <HAL_RCC_ClockConfig+0x11a>
{
if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
800542a: f7fe fd7f bl 8003f2c <HAL_GetTick>
800542e: 0002 movs r2, r0
8005430: 68fb ldr r3, [r7, #12]
8005432: 1ad3 subs r3, r2, r3
8005434: 4a58 ldr r2, [pc, #352] ; (8005598 <HAL_RCC_ClockConfig+0x274>)
8005436: 4293 cmp r3, r2
8005438: d901 bls.n 800543e <HAL_RCC_ClockConfig+0x11a>
{
return HAL_TIMEOUT;
800543a: 2303 movs r3, #3
800543c: e0a5 b.n 800558a <HAL_RCC_ClockConfig+0x266>
while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE)
800543e: 4b57 ldr r3, [pc, #348] ; (800559c <HAL_RCC_ClockConfig+0x278>)
8005440: 68db ldr r3, [r3, #12]
8005442: 220c movs r2, #12
8005444: 4013 ands r3, r2
8005446: 2b08 cmp r3, #8
8005448: d1ef bne.n 800542a <HAL_RCC_ClockConfig+0x106>
800544a: e03a b.n 80054c2 <HAL_RCC_ClockConfig+0x19e>
}
}
}
else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
800544c: 687b ldr r3, [r7, #4]
800544e: 685b ldr r3, [r3, #4]
8005450: 2b03 cmp r3, #3
8005452: d111 bne.n 8005478 <HAL_RCC_ClockConfig+0x154>
{
while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
8005454: e009 b.n 800546a <HAL_RCC_ClockConfig+0x146>
{
if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
8005456: f7fe fd69 bl 8003f2c <HAL_GetTick>
800545a: 0002 movs r2, r0
800545c: 68fb ldr r3, [r7, #12]
800545e: 1ad3 subs r3, r2, r3
8005460: 4a4d ldr r2, [pc, #308] ; (8005598 <HAL_RCC_ClockConfig+0x274>)
8005462: 4293 cmp r3, r2
8005464: d901 bls.n 800546a <HAL_RCC_ClockConfig+0x146>
{
return HAL_TIMEOUT;
8005466: 2303 movs r3, #3
8005468: e08f b.n 800558a <HAL_RCC_ClockConfig+0x266>
while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
800546a: 4b4c ldr r3, [pc, #304] ; (800559c <HAL_RCC_ClockConfig+0x278>)
800546c: 68db ldr r3, [r3, #12]
800546e: 220c movs r2, #12
8005470: 4013 ands r3, r2
8005472: 2b0c cmp r3, #12
8005474: d1ef bne.n 8005456 <HAL_RCC_ClockConfig+0x132>
8005476: e024 b.n 80054c2 <HAL_RCC_ClockConfig+0x19e>
}
}
}
else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI)
8005478: 687b ldr r3, [r7, #4]
800547a: 685b ldr r3, [r3, #4]
800547c: 2b01 cmp r3, #1
800547e: d11b bne.n 80054b8 <HAL_RCC_ClockConfig+0x194>
{
while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI)
8005480: e009 b.n 8005496 <HAL_RCC_ClockConfig+0x172>
{
if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
8005482: f7fe fd53 bl 8003f2c <HAL_GetTick>
8005486: 0002 movs r2, r0
8005488: 68fb ldr r3, [r7, #12]
800548a: 1ad3 subs r3, r2, r3
800548c: 4a42 ldr r2, [pc, #264] ; (8005598 <HAL_RCC_ClockConfig+0x274>)
800548e: 4293 cmp r3, r2
8005490: d901 bls.n 8005496 <HAL_RCC_ClockConfig+0x172>
{
return HAL_TIMEOUT;
8005492: 2303 movs r3, #3
8005494: e079 b.n 800558a <HAL_RCC_ClockConfig+0x266>
while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI)
8005496: 4b41 ldr r3, [pc, #260] ; (800559c <HAL_RCC_ClockConfig+0x278>)
8005498: 68db ldr r3, [r3, #12]
800549a: 220c movs r2, #12
800549c: 4013 ands r3, r2
800549e: 2b04 cmp r3, #4
80054a0: d1ef bne.n 8005482 <HAL_RCC_ClockConfig+0x15e>
80054a2: e00e b.n 80054c2 <HAL_RCC_ClockConfig+0x19e>
}
else
{
while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI)
{
if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
80054a4: f7fe fd42 bl 8003f2c <HAL_GetTick>
80054a8: 0002 movs r2, r0
80054aa: 68fb ldr r3, [r7, #12]
80054ac: 1ad3 subs r3, r2, r3
80054ae: 4a3a ldr r2, [pc, #232] ; (8005598 <HAL_RCC_ClockConfig+0x274>)
80054b0: 4293 cmp r3, r2
80054b2: d901 bls.n 80054b8 <HAL_RCC_ClockConfig+0x194>
{
return HAL_TIMEOUT;
80054b4: 2303 movs r3, #3
80054b6: e068 b.n 800558a <HAL_RCC_ClockConfig+0x266>
while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI)
80054b8: 4b38 ldr r3, [pc, #224] ; (800559c <HAL_RCC_ClockConfig+0x278>)
80054ba: 68db ldr r3, [r3, #12]
80054bc: 220c movs r2, #12
80054be: 4013 ands r3, r2
80054c0: d1f0 bne.n 80054a4 <HAL_RCC_ClockConfig+0x180>
}
}
}
}
/* Decreasing the number of wait states because of lower CPU frequency */
if(FLatency < __HAL_FLASH_GET_LATENCY())
80054c2: 4b34 ldr r3, [pc, #208] ; (8005594 <HAL_RCC_ClockConfig+0x270>)
80054c4: 681b ldr r3, [r3, #0]
80054c6: 2201 movs r2, #1
80054c8: 401a ands r2, r3
80054ca: 683b ldr r3, [r7, #0]
80054cc: 429a cmp r2, r3
80054ce: d91e bls.n 800550e <HAL_RCC_ClockConfig+0x1ea>
{
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
__HAL_FLASH_SET_LATENCY(FLatency);
80054d0: 4b30 ldr r3, [pc, #192] ; (8005594 <HAL_RCC_ClockConfig+0x270>)
80054d2: 4a30 ldr r2, [pc, #192] ; (8005594 <HAL_RCC_ClockConfig+0x270>)
80054d4: 6812 ldr r2, [r2, #0]
80054d6: 2101 movs r1, #1
80054d8: 438a bics r2, r1
80054da: 0011 movs r1, r2
80054dc: 683a ldr r2, [r7, #0]
80054de: 430a orrs r2, r1
80054e0: 601a str r2, [r3, #0]
/* Check that the new number of wait states is taken into account to access the Flash
memory by polling the FLASH_ACR register */
tickstart = HAL_GetTick();
80054e2: f7fe fd23 bl 8003f2c <HAL_GetTick>
80054e6: 0003 movs r3, r0
80054e8: 60fb str r3, [r7, #12]
while (__HAL_FLASH_GET_LATENCY() != FLatency)
80054ea: e009 b.n 8005500 <HAL_RCC_ClockConfig+0x1dc>
{
if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
80054ec: f7fe fd1e bl 8003f2c <HAL_GetTick>
80054f0: 0002 movs r2, r0
80054f2: 68fb ldr r3, [r7, #12]
80054f4: 1ad3 subs r3, r2, r3
80054f6: 4a28 ldr r2, [pc, #160] ; (8005598 <HAL_RCC_ClockConfig+0x274>)
80054f8: 4293 cmp r3, r2
80054fa: d901 bls.n 8005500 <HAL_RCC_ClockConfig+0x1dc>
{
return HAL_TIMEOUT;
80054fc: 2303 movs r3, #3
80054fe: e044 b.n 800558a <HAL_RCC_ClockConfig+0x266>
while (__HAL_FLASH_GET_LATENCY() != FLatency)
8005500: 4b24 ldr r3, [pc, #144] ; (8005594 <HAL_RCC_ClockConfig+0x270>)
8005502: 681b ldr r3, [r3, #0]
8005504: 2201 movs r2, #1
8005506: 401a ands r2, r3
8005508: 683b ldr r3, [r7, #0]
800550a: 429a cmp r2, r3
800550c: d1ee bne.n 80054ec <HAL_RCC_ClockConfig+0x1c8>
}
}
}
/*-------------------------- PCLK1 Configuration ---------------------------*/
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
800550e: 687b ldr r3, [r7, #4]
8005510: 681b ldr r3, [r3, #0]
8005512: 2204 movs r2, #4
8005514: 4013 ands r3, r2
8005516: d008 beq.n 800552a <HAL_RCC_ClockConfig+0x206>
{
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
8005518: 4a20 ldr r2, [pc, #128] ; (800559c <HAL_RCC_ClockConfig+0x278>)
800551a: 4b20 ldr r3, [pc, #128] ; (800559c <HAL_RCC_ClockConfig+0x278>)
800551c: 68db ldr r3, [r3, #12]
800551e: 4920 ldr r1, [pc, #128] ; (80055a0 <HAL_RCC_ClockConfig+0x27c>)
8005520: 4019 ands r1, r3
8005522: 687b ldr r3, [r7, #4]
8005524: 68db ldr r3, [r3, #12]
8005526: 430b orrs r3, r1
8005528: 60d3 str r3, [r2, #12]
}
/*-------------------------- PCLK2 Configuration ---------------------------*/
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
800552a: 687b ldr r3, [r7, #4]
800552c: 681b ldr r3, [r3, #0]
800552e: 2208 movs r2, #8
8005530: 4013 ands r3, r2
8005532: d009 beq.n 8005548 <HAL_RCC_ClockConfig+0x224>
{
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
8005534: 4a19 ldr r2, [pc, #100] ; (800559c <HAL_RCC_ClockConfig+0x278>)
8005536: 4b19 ldr r3, [pc, #100] ; (800559c <HAL_RCC_ClockConfig+0x278>)
8005538: 68db ldr r3, [r3, #12]
800553a: 491a ldr r1, [pc, #104] ; (80055a4 <HAL_RCC_ClockConfig+0x280>)
800553c: 4019 ands r1, r3
800553e: 687b ldr r3, [r7, #4]
8005540: 691b ldr r3, [r3, #16]
8005542: 00db lsls r3, r3, #3
8005544: 430b orrs r3, r1
8005546: 60d3 str r3, [r2, #12]
}
/* Update the SystemCoreClock global variable */
SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];
8005548: f000 f834 bl 80055b4 <HAL_RCC_GetSysClockFreq>
800554c: 0001 movs r1, r0
800554e: 4b13 ldr r3, [pc, #76] ; (800559c <HAL_RCC_ClockConfig+0x278>)
8005550: 68db ldr r3, [r3, #12]
8005552: 091b lsrs r3, r3, #4
8005554: 220f movs r2, #15
8005556: 4013 ands r3, r2
8005558: 4a13 ldr r2, [pc, #76] ; (80055a8 <HAL_RCC_ClockConfig+0x284>)
800555a: 5cd3 ldrb r3, [r2, r3]
800555c: 000a movs r2, r1
800555e: 40da lsrs r2, r3
8005560: 4b12 ldr r3, [pc, #72] ; (80055ac <HAL_RCC_ClockConfig+0x288>)
8005562: 601a str r2, [r3, #0]
/* Configure the source of time base considering new system clocks settings*/
status = HAL_InitTick(uwTickPrio);
8005564: 4b12 ldr r3, [pc, #72] ; (80055b0 <HAL_RCC_ClockConfig+0x28c>)
8005566: 681b ldr r3, [r3, #0]
8005568: 220b movs r2, #11
800556a: 18bc adds r4, r7, r2
800556c: 0018 movs r0, r3
800556e: f7fe fc97 bl 8003ea0 <HAL_InitTick>
8005572: 0003 movs r3, r0
8005574: 7023 strb r3, [r4, #0]
if(status != HAL_OK)
8005576: 230b movs r3, #11
8005578: 18fb adds r3, r7, r3
800557a: 781b ldrb r3, [r3, #0]
800557c: 2b00 cmp r3, #0
800557e: d003 beq.n 8005588 <HAL_RCC_ClockConfig+0x264>
{
return status;
8005580: 230b movs r3, #11
8005582: 18fb adds r3, r7, r3
8005584: 781b ldrb r3, [r3, #0]
8005586: e000 b.n 800558a <HAL_RCC_ClockConfig+0x266>
}
return HAL_OK;
8005588: 2300 movs r3, #0
}
800558a: 0018 movs r0, r3
800558c: 46bd mov sp, r7
800558e: b005 add sp, #20
8005590: bd90 pop {r4, r7, pc}
8005592: 46c0 nop ; (mov r8, r8)
8005594: 40022000 .word 0x40022000
8005598: 00001388 .word 0x00001388
800559c: 40021000 .word 0x40021000
80055a0: fffff8ff .word 0xfffff8ff
80055a4: ffffc7ff .word 0xffffc7ff
80055a8: 080071d0 .word 0x080071d0
80055ac: 20000000 .word 0x20000000
80055b0: 20000008 .word 0x20000008
080055b4 <HAL_RCC_GetSysClockFreq>:
* right SYSCLK value. Otherwise, any configuration based on this function will be incorrect.
*
* @retval SYSCLK frequency
*/
uint32_t HAL_RCC_GetSysClockFreq(void)
{
80055b4: b5f0 push {r4, r5, r6, r7, lr}
80055b6: b08f sub sp, #60 ; 0x3c
80055b8: af00 add r7, sp, #0
uint32_t tmpreg, pllm, plld, pllvco, msiclkrange; /* no init needed */
uint32_t sysclockfreq;
tmpreg = RCC->CFGR;
80055ba: 4b4a ldr r3, [pc, #296] ; (80056e4 <HAL_RCC_GetSysClockFreq+0x130>)
80055bc: 68db ldr r3, [r3, #12]
80055be: 62fb str r3, [r7, #44] ; 0x2c
/* Get SYSCLK source -------------------------------------------------------*/
switch (tmpreg & RCC_CFGR_SWS)
80055c0: 6afa ldr r2, [r7, #44] ; 0x2c
80055c2: 230c movs r3, #12
80055c4: 4013 ands r3, r2
80055c6: 2b08 cmp r3, #8
80055c8: d00f beq.n 80055ea <HAL_RCC_GetSysClockFreq+0x36>
80055ca: 2b0c cmp r3, #12
80055cc: d010 beq.n 80055f0 <HAL_RCC_GetSysClockFreq+0x3c>
80055ce: 2b04 cmp r3, #4
80055d0: d000 beq.n 80055d4 <HAL_RCC_GetSysClockFreq+0x20>
80055d2: e073 b.n 80056bc <HAL_RCC_GetSysClockFreq+0x108>
{
case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
{
if ((RCC->CR & RCC_CR_HSIDIVF) != 0U)
80055d4: 4b43 ldr r3, [pc, #268] ; (80056e4 <HAL_RCC_GetSysClockFreq+0x130>)
80055d6: 681b ldr r3, [r3, #0]
80055d8: 2210 movs r2, #16
80055da: 4013 ands r3, r2
80055dc: d002 beq.n 80055e4 <HAL_RCC_GetSysClockFreq+0x30>
{
sysclockfreq = (HSI_VALUE >> 2);
80055de: 4b42 ldr r3, [pc, #264] ; (80056e8 <HAL_RCC_GetSysClockFreq+0x134>)
80055e0: 633b str r3, [r7, #48] ; 0x30
}
else
{
sysclockfreq = HSI_VALUE;
}
break;
80055e2: e079 b.n 80056d8 <HAL_RCC_GetSysClockFreq+0x124>
sysclockfreq = HSI_VALUE;
80055e4: 4b41 ldr r3, [pc, #260] ; (80056ec <HAL_RCC_GetSysClockFreq+0x138>)
80055e6: 633b str r3, [r7, #48] ; 0x30
break;
80055e8: e076 b.n 80056d8 <HAL_RCC_GetSysClockFreq+0x124>
}
case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */
{
sysclockfreq = HSE_VALUE;
80055ea: 4b41 ldr r3, [pc, #260] ; (80056f0 <HAL_RCC_GetSysClockFreq+0x13c>)
80055ec: 633b str r3, [r7, #48] ; 0x30
break;
80055ee: e073 b.n 80056d8 <HAL_RCC_GetSysClockFreq+0x124>
}
case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */
{
pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos];
80055f0: 6afb ldr r3, [r7, #44] ; 0x2c
80055f2: 0c9a lsrs r2, r3, #18
80055f4: 230f movs r3, #15
80055f6: 401a ands r2, r3
80055f8: 4b3e ldr r3, [pc, #248] ; (80056f4 <HAL_RCC_GetSysClockFreq+0x140>)
80055fa: 5c9b ldrb r3, [r3, r2]
80055fc: 62bb str r3, [r7, #40] ; 0x28
plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U;
80055fe: 6afb ldr r3, [r7, #44] ; 0x2c
8005600: 0d9a lsrs r2, r3, #22
8005602: 2303 movs r3, #3
8005604: 4013 ands r3, r2
8005606: 3301 adds r3, #1
8005608: 627b str r3, [r7, #36] ; 0x24
if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI)
800560a: 4b36 ldr r3, [pc, #216] ; (80056e4 <HAL_RCC_GetSysClockFreq+0x130>)
800560c: 68da ldr r2, [r3, #12]
800560e: 2380 movs r3, #128 ; 0x80
8005610: 025b lsls r3, r3, #9
8005612: 4013 ands r3, r2
8005614: d019 beq.n 800564a <HAL_RCC_GetSysClockFreq+0x96>
{
/* HSE used as PLL clock source */
pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld);
8005616: 6abb ldr r3, [r7, #40] ; 0x28
8005618: 61bb str r3, [r7, #24]
800561a: 2300 movs r3, #0
800561c: 61fb str r3, [r7, #28]
800561e: 4a34 ldr r2, [pc, #208] ; (80056f0 <HAL_RCC_GetSysClockFreq+0x13c>)
8005620: 2300 movs r3, #0
8005622: 69b8 ldr r0, [r7, #24]
8005624: 69f9 ldr r1, [r7, #28]
8005626: f7fa fe93 bl 8000350 <__aeabi_lmul>
800562a: 0003 movs r3, r0
800562c: 000c movs r4, r1
800562e: 0018 movs r0, r3
8005630: 0021 movs r1, r4
8005632: 6a7b ldr r3, [r7, #36] ; 0x24
8005634: 613b str r3, [r7, #16]
8005636: 2300 movs r3, #0
8005638: 617b str r3, [r7, #20]
800563a: 693a ldr r2, [r7, #16]
800563c: 697b ldr r3, [r7, #20]
800563e: f7fa fe67 bl 8000310 <__aeabi_uldivmod>
8005642: 0003 movs r3, r0
8005644: 000c movs r4, r1
8005646: 637b str r3, [r7, #52] ; 0x34
8005648: e035 b.n 80056b6 <HAL_RCC_GetSysClockFreq+0x102>
}
else
{
if ((RCC->CR & RCC_CR_HSIDIVF) != 0U)
800564a: 4b26 ldr r3, [pc, #152] ; (80056e4 <HAL_RCC_GetSysClockFreq+0x130>)
800564c: 681b ldr r3, [r3, #0]
800564e: 2210 movs r2, #16
8005650: 4013 ands r3, r2
8005652: d019 beq.n 8005688 <HAL_RCC_GetSysClockFreq+0xd4>
{
pllvco = (uint32_t)((((uint64_t)(HSI_VALUE >> 2)) * (uint64_t)pllm) / (uint64_t)plld);
8005654: 6abb ldr r3, [r7, #40] ; 0x28
8005656: 60bb str r3, [r7, #8]
8005658: 2300 movs r3, #0
800565a: 60fb str r3, [r7, #12]
800565c: 4a22 ldr r2, [pc, #136] ; (80056e8 <HAL_RCC_GetSysClockFreq+0x134>)
800565e: 2300 movs r3, #0
8005660: 68b8 ldr r0, [r7, #8]
8005662: 68f9 ldr r1, [r7, #12]
8005664: f7fa fe74 bl 8000350 <__aeabi_lmul>
8005668: 0003 movs r3, r0
800566a: 000c movs r4, r1
800566c: 0018 movs r0, r3
800566e: 0021 movs r1, r4
8005670: 6a7b ldr r3, [r7, #36] ; 0x24
8005672: 603b str r3, [r7, #0]
8005674: 2300 movs r3, #0
8005676: 607b str r3, [r7, #4]
8005678: 683a ldr r2, [r7, #0]
800567a: 687b ldr r3, [r7, #4]
800567c: f7fa fe48 bl 8000310 <__aeabi_uldivmod>
8005680: 0003 movs r3, r0
8005682: 000c movs r4, r1
8005684: 637b str r3, [r7, #52] ; 0x34
8005686: e016 b.n 80056b6 <HAL_RCC_GetSysClockFreq+0x102>
}
else
{
pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld);
8005688: 6abb ldr r3, [r7, #40] ; 0x28
800568a: 0018 movs r0, r3
800568c: 2300 movs r3, #0
800568e: 0019 movs r1, r3
8005690: 4a16 ldr r2, [pc, #88] ; (80056ec <HAL_RCC_GetSysClockFreq+0x138>)
8005692: 2300 movs r3, #0
8005694: f7fa fe5c bl 8000350 <__aeabi_lmul>
8005698: 0003 movs r3, r0
800569a: 000c movs r4, r1
800569c: 0018 movs r0, r3
800569e: 0021 movs r1, r4
80056a0: 6a7b ldr r3, [r7, #36] ; 0x24
80056a2: 001d movs r5, r3
80056a4: 2300 movs r3, #0
80056a6: 001e movs r6, r3
80056a8: 002a movs r2, r5
80056aa: 0033 movs r3, r6
80056ac: f7fa fe30 bl 8000310 <__aeabi_uldivmod>
80056b0: 0003 movs r3, r0
80056b2: 000c movs r4, r1
80056b4: 637b str r3, [r7, #52] ; 0x34
}
}
sysclockfreq = pllvco;
80056b6: 6b7b ldr r3, [r7, #52] ; 0x34
80056b8: 633b str r3, [r7, #48] ; 0x30
break;
80056ba: e00d b.n 80056d8 <HAL_RCC_GetSysClockFreq+0x124>
}
case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */
default: /* MSI used as system clock */
{
msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos;
80056bc: 4b09 ldr r3, [pc, #36] ; (80056e4 <HAL_RCC_GetSysClockFreq+0x130>)
80056be: 685b ldr r3, [r3, #4]
80056c0: 0b5b lsrs r3, r3, #13
80056c2: 2207 movs r2, #7
80056c4: 4013 ands r3, r2
80056c6: 623b str r3, [r7, #32]
sysclockfreq = (32768U * (1UL << (msiclkrange + 1U)));
80056c8: 6a3b ldr r3, [r7, #32]
80056ca: 3301 adds r3, #1
80056cc: 2280 movs r2, #128 ; 0x80
80056ce: 0212 lsls r2, r2, #8
80056d0: 409a lsls r2, r3
80056d2: 0013 movs r3, r2
80056d4: 633b str r3, [r7, #48] ; 0x30
break;
80056d6: 46c0 nop ; (mov r8, r8)
}
}
return sysclockfreq;
80056d8: 6b3b ldr r3, [r7, #48] ; 0x30
}
80056da: 0018 movs r0, r3
80056dc: 46bd mov sp, r7
80056de: b00f add sp, #60 ; 0x3c
80056e0: bdf0 pop {r4, r5, r6, r7, pc}
80056e2: 46c0 nop ; (mov r8, r8)
80056e4: 40021000 .word 0x40021000
80056e8: 003d0900 .word 0x003d0900
80056ec: 00f42400 .word 0x00f42400
80056f0: 007a1200 .word 0x007a1200
80056f4: 080071e8 .word 0x080071e8
080056f8 <HAL_RCC_GetHCLKFreq>:
* @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency
* and updated within this function
* @retval HCLK frequency
*/
uint32_t HAL_RCC_GetHCLKFreq(void)
{
80056f8: b580 push {r7, lr}
80056fa: af00 add r7, sp, #0
return SystemCoreClock;
80056fc: 4b02 ldr r3, [pc, #8] ; (8005708 <HAL_RCC_GetHCLKFreq+0x10>)
80056fe: 681b ldr r3, [r3, #0]
}
8005700: 0018 movs r0, r3
8005702: 46bd mov sp, r7
8005704: bd80 pop {r7, pc}
8005706: 46c0 nop ; (mov r8, r8)
8005708: 20000000 .word 0x20000000
0800570c <HAL_RCC_GetPCLK1Freq>:
* @note Each time PCLK1 changes, this function must be called to update the
* right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.
* @retval PCLK1 frequency
*/
uint32_t HAL_RCC_GetPCLK1Freq(void)
{
800570c: b580 push {r7, lr}
800570e: af00 add r7, sp, #0
/* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]);
8005710: f7ff fff2 bl 80056f8 <HAL_RCC_GetHCLKFreq>
8005714: 0001 movs r1, r0
8005716: 4b06 ldr r3, [pc, #24] ; (8005730 <HAL_RCC_GetPCLK1Freq+0x24>)
8005718: 68db ldr r3, [r3, #12]
800571a: 0a1b lsrs r3, r3, #8
800571c: 2207 movs r2, #7
800571e: 4013 ands r3, r2
8005720: 4a04 ldr r2, [pc, #16] ; (8005734 <HAL_RCC_GetPCLK1Freq+0x28>)
8005722: 5cd3 ldrb r3, [r2, r3]
8005724: 40d9 lsrs r1, r3
8005726: 000b movs r3, r1
}
8005728: 0018 movs r0, r3
800572a: 46bd mov sp, r7
800572c: bd80 pop {r7, pc}
800572e: 46c0 nop ; (mov r8, r8)
8005730: 40021000 .word 0x40021000
8005734: 080071e0 .word 0x080071e0
08005738 <HAL_RCC_GetPCLK2Freq>:
* @note Each time PCLK2 changes, this function must be called to update the
* right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.
* @retval PCLK2 frequency
*/
uint32_t HAL_RCC_GetPCLK2Freq(void)
{
8005738: b580 push {r7, lr}
800573a: af00 add r7, sp, #0
/* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]);
800573c: f7ff ffdc bl 80056f8 <HAL_RCC_GetHCLKFreq>
8005740: 0001 movs r1, r0
8005742: 4b06 ldr r3, [pc, #24] ; (800575c <HAL_RCC_GetPCLK2Freq+0x24>)
8005744: 68db ldr r3, [r3, #12]
8005746: 0adb lsrs r3, r3, #11
8005748: 2207 movs r2, #7
800574a: 4013 ands r3, r2
800574c: 4a04 ldr r2, [pc, #16] ; (8005760 <HAL_RCC_GetPCLK2Freq+0x28>)
800574e: 5cd3 ldrb r3, [r2, r3]
8005750: 40d9 lsrs r1, r3
8005752: 000b movs r3, r1
}
8005754: 0018 movs r0, r3
8005756: 46bd mov sp, r7
8005758: bd80 pop {r7, pc}
800575a: 46c0 nop ; (mov r8, r8)
800575c: 40021000 .word 0x40021000
8005760: 080071e0 .word 0x080071e0
08005764 <HAL_RCCEx_PeriphCLKConfig>:
* @retval HAL status
* @note If HAL_ERROR returned, first switch-OFF HSE clock oscillator with @ref HAL_RCC_OscConfig()
* to possibly update HSE divider.
*/
HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
{
8005764: b580 push {r7, lr}
8005766: b086 sub sp, #24
8005768: af00 add r7, sp, #0
800576a: 6078 str r0, [r7, #4]
uint32_t tickstart;
uint32_t temp_reg;
FlagStatus pwrclkchanged = RESET;
800576c: 2317 movs r3, #23
800576e: 18fb adds r3, r7, r3
8005770: 2200 movs r2, #0
8005772: 701a strb r2, [r3, #0]
/* Check the parameters */
assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));
/*------------------------------- RTC/LCD Configuration ------------------------*/
if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)
8005774: 687b ldr r3, [r7, #4]
8005776: 681b ldr r3, [r3, #0]
8005778: 2220 movs r2, #32
800577a: 4013 ands r3, r2
800577c: d100 bne.n 8005780 <HAL_RCCEx_PeriphCLKConfig+0x1c>
800577e: e0c2 b.n 8005906 <HAL_RCCEx_PeriphCLKConfig+0x1a2>
#endif /* LCD */
/* As soon as function is called to change RTC clock source, activation of the
power domain is done. */
/* Requires to enable write access to Backup Domain of necessary */
if(__HAL_RCC_PWR_IS_CLK_DISABLED())
8005780: 4b96 ldr r3, [pc, #600] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005782: 6b9a ldr r2, [r3, #56] ; 0x38
8005784: 2380 movs r3, #128 ; 0x80
8005786: 055b lsls r3, r3, #21
8005788: 4013 ands r3, r2
800578a: d10a bne.n 80057a2 <HAL_RCCEx_PeriphCLKConfig+0x3e>
{
__HAL_RCC_PWR_CLK_ENABLE();
800578c: 4b93 ldr r3, [pc, #588] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
800578e: 4a93 ldr r2, [pc, #588] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005790: 6b92 ldr r2, [r2, #56] ; 0x38
8005792: 2180 movs r1, #128 ; 0x80
8005794: 0549 lsls r1, r1, #21
8005796: 430a orrs r2, r1
8005798: 639a str r2, [r3, #56] ; 0x38
pwrclkchanged = SET;
800579a: 2317 movs r3, #23
800579c: 18fb adds r3, r7, r3
800579e: 2201 movs r2, #1
80057a0: 701a strb r2, [r3, #0]
}
if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
80057a2: 4b8f ldr r3, [pc, #572] ; (80059e0 <HAL_RCCEx_PeriphCLKConfig+0x27c>)
80057a4: 681a ldr r2, [r3, #0]
80057a6: 2380 movs r3, #128 ; 0x80
80057a8: 005b lsls r3, r3, #1
80057aa: 4013 ands r3, r2
80057ac: d11a bne.n 80057e4 <HAL_RCCEx_PeriphCLKConfig+0x80>
{
/* Enable write access to Backup domain */
SET_BIT(PWR->CR, PWR_CR_DBP);
80057ae: 4b8c ldr r3, [pc, #560] ; (80059e0 <HAL_RCCEx_PeriphCLKConfig+0x27c>)
80057b0: 4a8b ldr r2, [pc, #556] ; (80059e0 <HAL_RCCEx_PeriphCLKConfig+0x27c>)
80057b2: 6812 ldr r2, [r2, #0]
80057b4: 2180 movs r1, #128 ; 0x80
80057b6: 0049 lsls r1, r1, #1
80057b8: 430a orrs r2, r1
80057ba: 601a str r2, [r3, #0]
/* Wait for Backup domain Write protection disable */
tickstart = HAL_GetTick();
80057bc: f7fe fbb6 bl 8003f2c <HAL_GetTick>
80057c0: 0003 movs r3, r0
80057c2: 613b str r3, [r7, #16]
while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
80057c4: e008 b.n 80057d8 <HAL_RCCEx_PeriphCLKConfig+0x74>
{
if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
80057c6: f7fe fbb1 bl 8003f2c <HAL_GetTick>
80057ca: 0002 movs r2, r0
80057cc: 693b ldr r3, [r7, #16]
80057ce: 1ad3 subs r3, r2, r3
80057d0: 2b64 cmp r3, #100 ; 0x64
80057d2: d901 bls.n 80057d8 <HAL_RCCEx_PeriphCLKConfig+0x74>
{
return HAL_TIMEOUT;
80057d4: 2303 movs r3, #3
80057d6: e0fc b.n 80059d2 <HAL_RCCEx_PeriphCLKConfig+0x26e>
while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
80057d8: 4b81 ldr r3, [pc, #516] ; (80059e0 <HAL_RCCEx_PeriphCLKConfig+0x27c>)
80057da: 681a ldr r2, [r3, #0]
80057dc: 2380 movs r3, #128 ; 0x80
80057de: 005b lsls r3, r3, #1
80057e0: 4013 ands r3, r2
80057e2: d0f0 beq.n 80057c6 <HAL_RCCEx_PeriphCLKConfig+0x62>
}
}
}
/* Check if user wants to change HSE RTC prescaler whereas HSE is enabled */
temp_reg = (RCC->CR & RCC_CR_RTCPRE);
80057e4: 4b7d ldr r3, [pc, #500] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80057e6: 681a ldr r2, [r3, #0]
80057e8: 23c0 movs r3, #192 ; 0xc0
80057ea: 039b lsls r3, r3, #14
80057ec: 4013 ands r3, r2
80057ee: 60fb str r3, [r7, #12]
if ((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CR_RTCPRE))
80057f0: 687b ldr r3, [r7, #4]
80057f2: 685a ldr r2, [r3, #4]
80057f4: 23c0 movs r3, #192 ; 0xc0
80057f6: 039b lsls r3, r3, #14
80057f8: 401a ands r2, r3
80057fa: 68fb ldr r3, [r7, #12]
80057fc: 429a cmp r2, r3
80057fe: d013 beq.n 8005828 <HAL_RCCEx_PeriphCLKConfig+0xc4>
#if defined (LCD)
|| (temp_reg != (PeriphClkInit->LCDClockSelection & RCC_CR_RTCPRE))
#endif /* LCD */
)
{ /* Check HSE State */
if ((PeriphClkInit->RTCClockSelection & RCC_CSR_RTCSEL) == RCC_CSR_RTCSEL_HSE)
8005800: 687b ldr r3, [r7, #4]
8005802: 685a ldr r2, [r3, #4]
8005804: 23c0 movs r3, #192 ; 0xc0
8005806: 029b lsls r3, r3, #10
8005808: 401a ands r2, r3
800580a: 23c0 movs r3, #192 ; 0xc0
800580c: 029b lsls r3, r3, #10
800580e: 429a cmp r2, r3
8005810: d10a bne.n 8005828 <HAL_RCCEx_PeriphCLKConfig+0xc4>
{
if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY))
8005812: 4b72 ldr r3, [pc, #456] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005814: 681a ldr r2, [r3, #0]
8005816: 2380 movs r3, #128 ; 0x80
8005818: 029b lsls r3, r3, #10
800581a: 401a ands r2, r3
800581c: 2380 movs r3, #128 ; 0x80
800581e: 029b lsls r3, r3, #10
8005820: 429a cmp r2, r3
8005822: d101 bne.n 8005828 <HAL_RCCEx_PeriphCLKConfig+0xc4>
{
/* To update HSE divider, first switch-OFF HSE clock oscillator*/
return HAL_ERROR;
8005824: 2301 movs r3, #1
8005826: e0d4 b.n 80059d2 <HAL_RCCEx_PeriphCLKConfig+0x26e>
}
}
}
/* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */
temp_reg = (RCC->CSR & RCC_CSR_RTCSEL);
8005828: 4b6c ldr r3, [pc, #432] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
800582a: 6d1a ldr r2, [r3, #80] ; 0x50
800582c: 23c0 movs r3, #192 ; 0xc0
800582e: 029b lsls r3, r3, #10
8005830: 4013 ands r3, r2
8005832: 60fb str r3, [r7, #12]
if((temp_reg != 0x00000000U) && (((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CSR_RTCSEL)) \
8005834: 68fb ldr r3, [r7, #12]
8005836: 2b00 cmp r3, #0
8005838: d03b beq.n 80058b2 <HAL_RCCEx_PeriphCLKConfig+0x14e>
800583a: 687b ldr r3, [r7, #4]
800583c: 685a ldr r2, [r3, #4]
800583e: 23c0 movs r3, #192 ; 0xc0
8005840: 029b lsls r3, r3, #10
8005842: 401a ands r2, r3
8005844: 68fb ldr r3, [r7, #12]
8005846: 429a cmp r2, r3
8005848: d033 beq.n 80058b2 <HAL_RCCEx_PeriphCLKConfig+0x14e>
&& (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC))
800584a: 687b ldr r3, [r7, #4]
800584c: 681b ldr r3, [r3, #0]
800584e: 2220 movs r2, #32
8005850: 4013 ands r3, r2
8005852: d02e beq.n 80058b2 <HAL_RCCEx_PeriphCLKConfig+0x14e>
&& (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LCD) == RCC_PERIPHCLK_LCD))
#endif /* LCD */
))
{
/* Store the content of CSR register before the reset of Backup Domain */
temp_reg = (RCC->CSR & ~(RCC_CSR_RTCSEL));
8005854: 4b61 ldr r3, [pc, #388] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005856: 6d1b ldr r3, [r3, #80] ; 0x50
8005858: 4a62 ldr r2, [pc, #392] ; (80059e4 <HAL_RCCEx_PeriphCLKConfig+0x280>)
800585a: 4013 ands r3, r2
800585c: 60fb str r3, [r7, #12]
/* RTC Clock selection can be changed only if the Backup Domain is reset */
__HAL_RCC_BACKUPRESET_FORCE();
800585e: 4b5f ldr r3, [pc, #380] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005860: 4a5e ldr r2, [pc, #376] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005862: 6d12 ldr r2, [r2, #80] ; 0x50
8005864: 2180 movs r1, #128 ; 0x80
8005866: 0309 lsls r1, r1, #12
8005868: 430a orrs r2, r1
800586a: 651a str r2, [r3, #80] ; 0x50
__HAL_RCC_BACKUPRESET_RELEASE();
800586c: 4b5b ldr r3, [pc, #364] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
800586e: 4a5b ldr r2, [pc, #364] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005870: 6d12 ldr r2, [r2, #80] ; 0x50
8005872: 495d ldr r1, [pc, #372] ; (80059e8 <HAL_RCCEx_PeriphCLKConfig+0x284>)
8005874: 400a ands r2, r1
8005876: 651a str r2, [r3, #80] ; 0x50
/* Restore the Content of CSR register */
RCC->CSR = temp_reg;
8005878: 4b58 ldr r3, [pc, #352] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
800587a: 68fa ldr r2, [r7, #12]
800587c: 651a str r2, [r3, #80] ; 0x50
/* Wait for LSERDY if LSE was enabled */
if (HAL_IS_BIT_SET(temp_reg, RCC_CSR_LSEON))
800587e: 68fa ldr r2, [r7, #12]
8005880: 2380 movs r3, #128 ; 0x80
8005882: 005b lsls r3, r3, #1
8005884: 4013 ands r3, r2
8005886: d014 beq.n 80058b2 <HAL_RCCEx_PeriphCLKConfig+0x14e>
{
/* Get Start Tick */
tickstart = HAL_GetTick();
8005888: f7fe fb50 bl 8003f2c <HAL_GetTick>
800588c: 0003 movs r3, r0
800588e: 613b str r3, [r7, #16]
/* Wait till LSE is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)
8005890: e009 b.n 80058a6 <HAL_RCCEx_PeriphCLKConfig+0x142>
{
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
8005892: f7fe fb4b bl 8003f2c <HAL_GetTick>
8005896: 0002 movs r2, r0
8005898: 693b ldr r3, [r7, #16]
800589a: 1ad3 subs r3, r2, r3
800589c: 4a53 ldr r2, [pc, #332] ; (80059ec <HAL_RCCEx_PeriphCLKConfig+0x288>)
800589e: 4293 cmp r3, r2
80058a0: d901 bls.n 80058a6 <HAL_RCCEx_PeriphCLKConfig+0x142>
{
return HAL_TIMEOUT;
80058a2: 2303 movs r3, #3
80058a4: e095 b.n 80059d2 <HAL_RCCEx_PeriphCLKConfig+0x26e>
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)
80058a6: 4b4d ldr r3, [pc, #308] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80058a8: 6d1a ldr r2, [r3, #80] ; 0x50
80058aa: 2380 movs r3, #128 ; 0x80
80058ac: 009b lsls r3, r3, #2
80058ae: 4013 ands r3, r2
80058b0: d0ef beq.n 8005892 <HAL_RCCEx_PeriphCLKConfig+0x12e>
}
}
}
}
__HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);
80058b2: 687b ldr r3, [r7, #4]
80058b4: 685a ldr r2, [r3, #4]
80058b6: 23c0 movs r3, #192 ; 0xc0
80058b8: 029b lsls r3, r3, #10
80058ba: 401a ands r2, r3
80058bc: 23c0 movs r3, #192 ; 0xc0
80058be: 029b lsls r3, r3, #10
80058c0: 429a cmp r2, r3
80058c2: d10b bne.n 80058dc <HAL_RCCEx_PeriphCLKConfig+0x178>
80058c4: 4a45 ldr r2, [pc, #276] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80058c6: 4b45 ldr r3, [pc, #276] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80058c8: 681b ldr r3, [r3, #0]
80058ca: 4949 ldr r1, [pc, #292] ; (80059f0 <HAL_RCCEx_PeriphCLKConfig+0x28c>)
80058cc: 4019 ands r1, r3
80058ce: 687b ldr r3, [r7, #4]
80058d0: 6858 ldr r0, [r3, #4]
80058d2: 23c0 movs r3, #192 ; 0xc0
80058d4: 039b lsls r3, r3, #14
80058d6: 4003 ands r3, r0
80058d8: 430b orrs r3, r1
80058da: 6013 str r3, [r2, #0]
80058dc: 4a3f ldr r2, [pc, #252] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80058de: 4b3f ldr r3, [pc, #252] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80058e0: 6d19 ldr r1, [r3, #80] ; 0x50
80058e2: 687b ldr r3, [r7, #4]
80058e4: 6858 ldr r0, [r3, #4]
80058e6: 23c0 movs r3, #192 ; 0xc0
80058e8: 029b lsls r3, r3, #10
80058ea: 4003 ands r3, r0
80058ec: 430b orrs r3, r1
80058ee: 6513 str r3, [r2, #80] ; 0x50
/* Require to disable power clock if necessary */
if(pwrclkchanged == SET)
80058f0: 2317 movs r3, #23
80058f2: 18fb adds r3, r7, r3
80058f4: 781b ldrb r3, [r3, #0]
80058f6: 2b01 cmp r3, #1
80058f8: d105 bne.n 8005906 <HAL_RCCEx_PeriphCLKConfig+0x1a2>
{
__HAL_RCC_PWR_CLK_DISABLE();
80058fa: 4b38 ldr r3, [pc, #224] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80058fc: 4a37 ldr r2, [pc, #220] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80058fe: 6b92 ldr r2, [r2, #56] ; 0x38
8005900: 493c ldr r1, [pc, #240] ; (80059f4 <HAL_RCCEx_PeriphCLKConfig+0x290>)
8005902: 400a ands r2, r1
8005904: 639a str r2, [r3, #56] ; 0x38
}
}
#if defined (RCC_CCIPR_USART1SEL)
/*------------------------------- USART1 Configuration ------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1)
8005906: 687b ldr r3, [r7, #4]
8005908: 681b ldr r3, [r3, #0]
800590a: 2201 movs r2, #1
800590c: 4013 ands r3, r2
800590e: d009 beq.n 8005924 <HAL_RCCEx_PeriphCLKConfig+0x1c0>
{
/* Check the parameters */
assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection));
/* Configure the USART1 clock source */
__HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection);
8005910: 4a32 ldr r2, [pc, #200] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005912: 4b32 ldr r3, [pc, #200] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005914: 6cdb ldr r3, [r3, #76] ; 0x4c
8005916: 2103 movs r1, #3
8005918: 438b bics r3, r1
800591a: 0019 movs r1, r3
800591c: 687b ldr r3, [r7, #4]
800591e: 689b ldr r3, [r3, #8]
8005920: 430b orrs r3, r1
8005922: 64d3 str r3, [r2, #76] ; 0x4c
}
#endif /* RCC_CCIPR_USART1SEL */
/*----------------------------- USART2 Configuration --------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2)
8005924: 687b ldr r3, [r7, #4]
8005926: 681b ldr r3, [r3, #0]
8005928: 2202 movs r2, #2
800592a: 4013 ands r3, r2
800592c: d009 beq.n 8005942 <HAL_RCCEx_PeriphCLKConfig+0x1de>
{
/* Check the parameters */
assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection));
/* Configure the USART2 clock source */
__HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection);
800592e: 4a2b ldr r2, [pc, #172] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005930: 4b2a ldr r3, [pc, #168] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005932: 6cdb ldr r3, [r3, #76] ; 0x4c
8005934: 210c movs r1, #12
8005936: 438b bics r3, r1
8005938: 0019 movs r1, r3
800593a: 687b ldr r3, [r7, #4]
800593c: 68db ldr r3, [r3, #12]
800593e: 430b orrs r3, r1
8005940: 64d3 str r3, [r2, #76] ; 0x4c
}
/*------------------------------ LPUART1 Configuration ------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1)
8005942: 687b ldr r3, [r7, #4]
8005944: 681b ldr r3, [r3, #0]
8005946: 2204 movs r2, #4
8005948: 4013 ands r3, r2
800594a: d008 beq.n 800595e <HAL_RCCEx_PeriphCLKConfig+0x1fa>
{
/* Check the parameters */
assert_param(IS_RCC_LPUART1CLKSOURCE(PeriphClkInit->Lpuart1ClockSelection));
/* Configure the LPUAR1 clock source */
__HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection);
800594c: 4a23 ldr r2, [pc, #140] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
800594e: 4b23 ldr r3, [pc, #140] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005950: 6cdb ldr r3, [r3, #76] ; 0x4c
8005952: 4929 ldr r1, [pc, #164] ; (80059f8 <HAL_RCCEx_PeriphCLKConfig+0x294>)
8005954: 4019 ands r1, r3
8005956: 687b ldr r3, [r7, #4]
8005958: 691b ldr r3, [r3, #16]
800595a: 430b orrs r3, r1
800595c: 64d3 str r3, [r2, #76] ; 0x4c
}
/*------------------------------ I2C1 Configuration ------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1)
800595e: 687b ldr r3, [r7, #4]
8005960: 681b ldr r3, [r3, #0]
8005962: 2208 movs r2, #8
8005964: 4013 ands r3, r2
8005966: d008 beq.n 800597a <HAL_RCCEx_PeriphCLKConfig+0x216>
{
/* Check the parameters */
assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection));
/* Configure the I2C1 clock source */
__HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection);
8005968: 4a1c ldr r2, [pc, #112] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
800596a: 4b1c ldr r3, [pc, #112] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
800596c: 6cdb ldr r3, [r3, #76] ; 0x4c
800596e: 4923 ldr r1, [pc, #140] ; (80059fc <HAL_RCCEx_PeriphCLKConfig+0x298>)
8005970: 4019 ands r1, r3
8005972: 687b ldr r3, [r7, #4]
8005974: 695b ldr r3, [r3, #20]
8005976: 430b orrs r3, r1
8005978: 64d3 str r3, [r2, #76] ; 0x4c
}
#if defined (RCC_CCIPR_I2C3SEL)
/*------------------------------ I2C3 Configuration ------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3)
800597a: 687b ldr r3, [r7, #4]
800597c: 681a ldr r2, [r3, #0]
800597e: 2380 movs r3, #128 ; 0x80
8005980: 005b lsls r3, r3, #1
8005982: 4013 ands r3, r2
8005984: d008 beq.n 8005998 <HAL_RCCEx_PeriphCLKConfig+0x234>
{
/* Check the parameters */
assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection));
/* Configure the I2C3 clock source */
__HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection);
8005986: 4a15 ldr r2, [pc, #84] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
8005988: 4b14 ldr r3, [pc, #80] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
800598a: 6cdb ldr r3, [r3, #76] ; 0x4c
800598c: 4915 ldr r1, [pc, #84] ; (80059e4 <HAL_RCCEx_PeriphCLKConfig+0x280>)
800598e: 4019 ands r1, r3
8005990: 687b ldr r3, [r7, #4]
8005992: 699b ldr r3, [r3, #24]
8005994: 430b orrs r3, r1
8005996: 64d3 str r3, [r2, #76] ; 0x4c
}
#endif /* RCC_CCIPR_I2C3SEL */
#if defined(USB)
/*---------------------------- USB and RNG configuration --------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == (RCC_PERIPHCLK_USB))
8005998: 687b ldr r3, [r7, #4]
800599a: 681b ldr r3, [r3, #0]
800599c: 2240 movs r2, #64 ; 0x40
800599e: 4013 ands r3, r2
80059a0: d008 beq.n 80059b4 <HAL_RCCEx_PeriphCLKConfig+0x250>
{
assert_param(IS_RCC_USBCLKSOURCE(PeriphClkInit->UsbClockSelection));
__HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection);
80059a2: 4a0e ldr r2, [pc, #56] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80059a4: 4b0d ldr r3, [pc, #52] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80059a6: 6cdb ldr r3, [r3, #76] ; 0x4c
80059a8: 4915 ldr r1, [pc, #84] ; (8005a00 <HAL_RCCEx_PeriphCLKConfig+0x29c>)
80059aa: 4019 ands r1, r3
80059ac: 687b ldr r3, [r7, #4]
80059ae: 6a1b ldr r3, [r3, #32]
80059b0: 430b orrs r3, r1
80059b2: 64d3 str r3, [r2, #76] ; 0x4c
}
#endif /* USB */
/*---------------------------- LPTIM1 configuration ------------------------*/
if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == (RCC_PERIPHCLK_LPTIM1))
80059b4: 687b ldr r3, [r7, #4]
80059b6: 681b ldr r3, [r3, #0]
80059b8: 2280 movs r2, #128 ; 0x80
80059ba: 4013 ands r3, r2
80059bc: d008 beq.n 80059d0 <HAL_RCCEx_PeriphCLKConfig+0x26c>
{
assert_param(IS_RCC_LPTIMCLK(PeriphClkInit->LptimClockSelection));
__HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->LptimClockSelection);
80059be: 4a07 ldr r2, [pc, #28] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80059c0: 4b06 ldr r3, [pc, #24] ; (80059dc <HAL_RCCEx_PeriphCLKConfig+0x278>)
80059c2: 6cdb ldr r3, [r3, #76] ; 0x4c
80059c4: 490f ldr r1, [pc, #60] ; (8005a04 <HAL_RCCEx_PeriphCLKConfig+0x2a0>)
80059c6: 4019 ands r1, r3
80059c8: 687b ldr r3, [r7, #4]
80059ca: 69db ldr r3, [r3, #28]
80059cc: 430b orrs r3, r1
80059ce: 64d3 str r3, [r2, #76] ; 0x4c
}
return HAL_OK;
80059d0: 2300 movs r3, #0
}
80059d2: 0018 movs r0, r3
80059d4: 46bd mov sp, r7
80059d6: b006 add sp, #24
80059d8: bd80 pop {r7, pc}
80059da: 46c0 nop ; (mov r8, r8)
80059dc: 40021000 .word 0x40021000
80059e0: 40007000 .word 0x40007000
80059e4: fffcffff .word 0xfffcffff
80059e8: fff7ffff .word 0xfff7ffff
80059ec: 00001388 .word 0x00001388
80059f0: ffcfffff .word 0xffcfffff
80059f4: efffffff .word 0xefffffff
80059f8: fffff3ff .word 0xfffff3ff
80059fc: ffffcfff .word 0xffffcfff
8005a00: fbffffff .word 0xfbffffff
8005a04: fff3ffff .word 0xfff3ffff
08005a08 <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)
{
8005a08: b580 push {r7, lr}
8005a0a: b082 sub sp, #8
8005a0c: af00 add r7, sp, #0
8005a0e: 6078 str r0, [r7, #4]
/* Check the TIM handle allocation */
if (htim == NULL)
8005a10: 687b ldr r3, [r7, #4]
8005a12: 2b00 cmp r3, #0
8005a14: d101 bne.n 8005a1a <HAL_TIM_Base_Init+0x12>
{
return HAL_ERROR;
8005a16: 2301 movs r3, #1
8005a18: e032 b.n 8005a80 <HAL_TIM_Base_Init+0x78>
assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
assert_param(IS_TIM_PERIOD(htim->Init.Period));
assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler));
assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
if (htim->State == HAL_TIM_STATE_RESET)
8005a1a: 687b ldr r3, [r7, #4]
8005a1c: 2239 movs r2, #57 ; 0x39
8005a1e: 5c9b ldrb r3, [r3, r2]
8005a20: b2db uxtb r3, r3
8005a22: 2b00 cmp r3, #0
8005a24: d107 bne.n 8005a36 <HAL_TIM_Base_Init+0x2e>
{
/* Allocate lock resource and initialize it */
htim->Lock = HAL_UNLOCKED;
8005a26: 687b ldr r3, [r7, #4]
8005a28: 2238 movs r2, #56 ; 0x38
8005a2a: 2100 movs r1, #0
8005a2c: 5499 strb r1, [r3, r2]
}
/* Init the low level hardware : GPIO, CLOCK, NVIC */
htim->Base_MspInitCallback(htim);
#else
/* Init the low level hardware : GPIO, CLOCK, NVIC */
HAL_TIM_Base_MspInit(htim);
8005a2e: 687b ldr r3, [r7, #4]
8005a30: 0018 movs r0, r3
8005a32: f7fc fca9 bl 8002388 <HAL_TIM_Base_MspInit>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
/* Set the TIM state */
htim->State = HAL_TIM_STATE_BUSY;
8005a36: 687b ldr r3, [r7, #4]
8005a38: 2239 movs r2, #57 ; 0x39
8005a3a: 2102 movs r1, #2
8005a3c: 5499 strb r1, [r3, r2]
/* Set the Time Base configuration */
TIM_Base_SetConfig(htim->Instance, &htim->Init);
8005a3e: 687b ldr r3, [r7, #4]
8005a40: 681a ldr r2, [r3, #0]
8005a42: 687b ldr r3, [r7, #4]
8005a44: 3304 adds r3, #4
8005a46: 0019 movs r1, r3
8005a48: 0010 movs r0, r2
8005a4a: f000 f977 bl 8005d3c <TIM_Base_SetConfig>
/* Initialize the DMA burst operation state */
htim->DMABurstState = HAL_DMA_BURST_STATE_READY;
8005a4e: 687b ldr r3, [r7, #4]
8005a50: 223e movs r2, #62 ; 0x3e
8005a52: 2101 movs r1, #1
8005a54: 5499 strb r1, [r3, r2]
/* Initialize the TIM channels state */
TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);
8005a56: 687b ldr r3, [r7, #4]
8005a58: 223a movs r2, #58 ; 0x3a
8005a5a: 2101 movs r1, #1
8005a5c: 5499 strb r1, [r3, r2]
8005a5e: 687b ldr r3, [r7, #4]
8005a60: 223b movs r2, #59 ; 0x3b
8005a62: 2101 movs r1, #1
8005a64: 5499 strb r1, [r3, r2]
8005a66: 687b ldr r3, [r7, #4]
8005a68: 223c movs r2, #60 ; 0x3c
8005a6a: 2101 movs r1, #1
8005a6c: 5499 strb r1, [r3, r2]
8005a6e: 687b ldr r3, [r7, #4]
8005a70: 223d movs r2, #61 ; 0x3d
8005a72: 2101 movs r1, #1
8005a74: 5499 strb r1, [r3, r2]
/* Initialize the TIM state*/
htim->State = HAL_TIM_STATE_READY;
8005a76: 687b ldr r3, [r7, #4]
8005a78: 2239 movs r2, #57 ; 0x39
8005a7a: 2101 movs r1, #1
8005a7c: 5499 strb r1, [r3, r2]
return HAL_OK;
8005a7e: 2300 movs r3, #0
}
8005a80: 0018 movs r0, r3
8005a82: 46bd mov sp, r7
8005a84: b002 add sp, #8
8005a86: bd80 pop {r7, pc}
08005a88 <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)
{
8005a88: b580 push {r7, lr}
8005a8a: b084 sub sp, #16
8005a8c: af00 add r7, sp, #0
8005a8e: 6078 str r0, [r7, #4]
/* Check the parameters */
assert_param(IS_TIM_INSTANCE(htim->Instance));
/* Check the TIM state */
if (htim->State != HAL_TIM_STATE_READY)
8005a90: 687b ldr r3, [r7, #4]
8005a92: 2239 movs r2, #57 ; 0x39
8005a94: 5c9b ldrb r3, [r3, r2]
8005a96: b2db uxtb r3, r3
8005a98: 2b01 cmp r3, #1
8005a9a: d001 beq.n 8005aa0 <HAL_TIM_Base_Start_IT+0x18>
{
return HAL_ERROR;
8005a9c: 2301 movs r3, #1
8005a9e: e03b b.n 8005b18 <HAL_TIM_Base_Start_IT+0x90>
}
/* Set the TIM state */
htim->State = HAL_TIM_STATE_BUSY;
8005aa0: 687b ldr r3, [r7, #4]
8005aa2: 2239 movs r2, #57 ; 0x39
8005aa4: 2102 movs r1, #2
8005aa6: 5499 strb r1, [r3, r2]
/* Enable the TIM Update interrupt */
__HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
8005aa8: 687b ldr r3, [r7, #4]
8005aaa: 681b ldr r3, [r3, #0]
8005aac: 687a ldr r2, [r7, #4]
8005aae: 6812 ldr r2, [r2, #0]
8005ab0: 68d2 ldr r2, [r2, #12]
8005ab2: 2101 movs r1, #1
8005ab4: 430a orrs r2, r1
8005ab6: 60da str r2, [r3, #12]
/* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
8005ab8: 687b ldr r3, [r7, #4]
8005aba: 681a ldr r2, [r3, #0]
8005abc: 2380 movs r3, #128 ; 0x80
8005abe: 05db lsls r3, r3, #23
8005ac0: 429a cmp r2, r3
8005ac2: d00e beq.n 8005ae2 <HAL_TIM_Base_Start_IT+0x5a>
8005ac4: 687b ldr r3, [r7, #4]
8005ac6: 681b ldr r3, [r3, #0]
8005ac8: 4a15 ldr r2, [pc, #84] ; (8005b20 <HAL_TIM_Base_Start_IT+0x98>)
8005aca: 4293 cmp r3, r2
8005acc: d009 beq.n 8005ae2 <HAL_TIM_Base_Start_IT+0x5a>
8005ace: 687b ldr r3, [r7, #4]
8005ad0: 681b ldr r3, [r3, #0]
8005ad2: 4a14 ldr r2, [pc, #80] ; (8005b24 <HAL_TIM_Base_Start_IT+0x9c>)
8005ad4: 4293 cmp r3, r2
8005ad6: d004 beq.n 8005ae2 <HAL_TIM_Base_Start_IT+0x5a>
8005ad8: 687b ldr r3, [r7, #4]
8005ada: 681b ldr r3, [r3, #0]
8005adc: 4a12 ldr r2, [pc, #72] ; (8005b28 <HAL_TIM_Base_Start_IT+0xa0>)
8005ade: 4293 cmp r3, r2
8005ae0: d111 bne.n 8005b06 <HAL_TIM_Base_Start_IT+0x7e>
{
tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
8005ae2: 687b ldr r3, [r7, #4]
8005ae4: 681b ldr r3, [r3, #0]
8005ae6: 689b ldr r3, [r3, #8]
8005ae8: 2207 movs r2, #7
8005aea: 4013 ands r3, r2
8005aec: 60fb str r3, [r7, #12]
if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
8005aee: 68fb ldr r3, [r7, #12]
8005af0: 2b06 cmp r3, #6
8005af2: d010 beq.n 8005b16 <HAL_TIM_Base_Start_IT+0x8e>
{
__HAL_TIM_ENABLE(htim);
8005af4: 687b ldr r3, [r7, #4]
8005af6: 681b ldr r3, [r3, #0]
8005af8: 687a ldr r2, [r7, #4]
8005afa: 6812 ldr r2, [r2, #0]
8005afc: 6812 ldr r2, [r2, #0]
8005afe: 2101 movs r1, #1
8005b00: 430a orrs r2, r1
8005b02: 601a str r2, [r3, #0]
if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
8005b04: e007 b.n 8005b16 <HAL_TIM_Base_Start_IT+0x8e>
}
}
else
{
__HAL_TIM_ENABLE(htim);
8005b06: 687b ldr r3, [r7, #4]
8005b08: 681b ldr r3, [r3, #0]
8005b0a: 687a ldr r2, [r7, #4]
8005b0c: 6812 ldr r2, [r2, #0]
8005b0e: 6812 ldr r2, [r2, #0]
8005b10: 2101 movs r1, #1
8005b12: 430a orrs r2, r1
8005b14: 601a str r2, [r3, #0]
}
/* Return function status */
return HAL_OK;
8005b16: 2300 movs r3, #0
}
8005b18: 0018 movs r0, r3
8005b1a: 46bd mov sp, r7
8005b1c: b004 add sp, #16
8005b1e: bd80 pop {r7, pc}
8005b20: 40000400 .word 0x40000400
8005b24: 40010800 .word 0x40010800
8005b28: 40011400 .word 0x40011400
08005b2c <HAL_TIM_IRQHandler>:
* @brief This function handles TIM interrupts requests.
* @param htim TIM handle
* @retval None
*/
void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
{
8005b2c: b580 push {r7, lr}
8005b2e: b082 sub sp, #8
8005b30: af00 add r7, sp, #0
8005b32: 6078 str r0, [r7, #4]
/* Capture compare 1 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET)
8005b34: 687b ldr r3, [r7, #4]
8005b36: 681b ldr r3, [r3, #0]
8005b38: 691b ldr r3, [r3, #16]
8005b3a: 2202 movs r2, #2
8005b3c: 4013 ands r3, r2
8005b3e: 2b02 cmp r3, #2
8005b40: d124 bne.n 8005b8c <HAL_TIM_IRQHandler+0x60>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET)
8005b42: 687b ldr r3, [r7, #4]
8005b44: 681b ldr r3, [r3, #0]
8005b46: 68db ldr r3, [r3, #12]
8005b48: 2202 movs r2, #2
8005b4a: 4013 ands r3, r2
8005b4c: 2b02 cmp r3, #2
8005b4e: d11d bne.n 8005b8c <HAL_TIM_IRQHandler+0x60>
{
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
8005b50: 687b ldr r3, [r7, #4]
8005b52: 681b ldr r3, [r3, #0]
8005b54: 2203 movs r2, #3
8005b56: 4252 negs r2, r2
8005b58: 611a str r2, [r3, #16]
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
8005b5a: 687b ldr r3, [r7, #4]
8005b5c: 2201 movs r2, #1
8005b5e: 761a strb r2, [r3, #24]
/* Input capture event */
if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U)
8005b60: 687b ldr r3, [r7, #4]
8005b62: 681b ldr r3, [r3, #0]
8005b64: 699b ldr r3, [r3, #24]
8005b66: 2203 movs r2, #3
8005b68: 4013 ands r3, r2
8005b6a: d004 beq.n 8005b76 <HAL_TIM_IRQHandler+0x4a>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
HAL_TIM_IC_CaptureCallback(htim);
8005b6c: 687b ldr r3, [r7, #4]
8005b6e: 0018 movs r0, r3
8005b70: f000 f8cc bl 8005d0c <HAL_TIM_IC_CaptureCallback>
8005b74: e007 b.n 8005b86 <HAL_TIM_IRQHandler+0x5a>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
8005b76: 687b ldr r3, [r7, #4]
8005b78: 0018 movs r0, r3
8005b7a: f000 f8bf bl 8005cfc <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
8005b7e: 687b ldr r3, [r7, #4]
8005b80: 0018 movs r0, r3
8005b82: f000 f8cb bl 8005d1c <HAL_TIM_PWM_PulseFinishedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
8005b86: 687b ldr r3, [r7, #4]
8005b88: 2200 movs r2, #0
8005b8a: 761a strb r2, [r3, #24]
}
}
}
/* Capture compare 2 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET)
8005b8c: 687b ldr r3, [r7, #4]
8005b8e: 681b ldr r3, [r3, #0]
8005b90: 691b ldr r3, [r3, #16]
8005b92: 2204 movs r2, #4
8005b94: 4013 ands r3, r2
8005b96: 2b04 cmp r3, #4
8005b98: d125 bne.n 8005be6 <HAL_TIM_IRQHandler+0xba>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET)
8005b9a: 687b ldr r3, [r7, #4]
8005b9c: 681b ldr r3, [r3, #0]
8005b9e: 68db ldr r3, [r3, #12]
8005ba0: 2204 movs r2, #4
8005ba2: 4013 ands r3, r2
8005ba4: 2b04 cmp r3, #4
8005ba6: d11e bne.n 8005be6 <HAL_TIM_IRQHandler+0xba>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);
8005ba8: 687b ldr r3, [r7, #4]
8005baa: 681b ldr r3, [r3, #0]
8005bac: 2205 movs r2, #5
8005bae: 4252 negs r2, r2
8005bb0: 611a str r2, [r3, #16]
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
8005bb2: 687b ldr r3, [r7, #4]
8005bb4: 2202 movs r2, #2
8005bb6: 761a strb r2, [r3, #24]
/* Input capture event */
if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U)
8005bb8: 687b ldr r3, [r7, #4]
8005bba: 681b ldr r3, [r3, #0]
8005bbc: 699a ldr r2, [r3, #24]
8005bbe: 23c0 movs r3, #192 ; 0xc0
8005bc0: 009b lsls r3, r3, #2
8005bc2: 4013 ands r3, r2
8005bc4: d004 beq.n 8005bd0 <HAL_TIM_IRQHandler+0xa4>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
HAL_TIM_IC_CaptureCallback(htim);
8005bc6: 687b ldr r3, [r7, #4]
8005bc8: 0018 movs r0, r3
8005bca: f000 f89f bl 8005d0c <HAL_TIM_IC_CaptureCallback>
8005bce: e007 b.n 8005be0 <HAL_TIM_IRQHandler+0xb4>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
8005bd0: 687b ldr r3, [r7, #4]
8005bd2: 0018 movs r0, r3
8005bd4: f000 f892 bl 8005cfc <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
8005bd8: 687b ldr r3, [r7, #4]
8005bda: 0018 movs r0, r3
8005bdc: f000 f89e bl 8005d1c <HAL_TIM_PWM_PulseFinishedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
8005be0: 687b ldr r3, [r7, #4]
8005be2: 2200 movs r2, #0
8005be4: 761a strb r2, [r3, #24]
}
}
/* Capture compare 3 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET)
8005be6: 687b ldr r3, [r7, #4]
8005be8: 681b ldr r3, [r3, #0]
8005bea: 691b ldr r3, [r3, #16]
8005bec: 2208 movs r2, #8
8005bee: 4013 ands r3, r2
8005bf0: 2b08 cmp r3, #8
8005bf2: d124 bne.n 8005c3e <HAL_TIM_IRQHandler+0x112>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET)
8005bf4: 687b ldr r3, [r7, #4]
8005bf6: 681b ldr r3, [r3, #0]
8005bf8: 68db ldr r3, [r3, #12]
8005bfa: 2208 movs r2, #8
8005bfc: 4013 ands r3, r2
8005bfe: 2b08 cmp r3, #8
8005c00: d11d bne.n 8005c3e <HAL_TIM_IRQHandler+0x112>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);
8005c02: 687b ldr r3, [r7, #4]
8005c04: 681b ldr r3, [r3, #0]
8005c06: 2209 movs r2, #9
8005c08: 4252 negs r2, r2
8005c0a: 611a str r2, [r3, #16]
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
8005c0c: 687b ldr r3, [r7, #4]
8005c0e: 2204 movs r2, #4
8005c10: 761a strb r2, [r3, #24]
/* Input capture event */
if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U)
8005c12: 687b ldr r3, [r7, #4]
8005c14: 681b ldr r3, [r3, #0]
8005c16: 69db ldr r3, [r3, #28]
8005c18: 2203 movs r2, #3
8005c1a: 4013 ands r3, r2
8005c1c: d004 beq.n 8005c28 <HAL_TIM_IRQHandler+0xfc>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
HAL_TIM_IC_CaptureCallback(htim);
8005c1e: 687b ldr r3, [r7, #4]
8005c20: 0018 movs r0, r3
8005c22: f000 f873 bl 8005d0c <HAL_TIM_IC_CaptureCallback>
8005c26: e007 b.n 8005c38 <HAL_TIM_IRQHandler+0x10c>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
8005c28: 687b ldr r3, [r7, #4]
8005c2a: 0018 movs r0, r3
8005c2c: f000 f866 bl 8005cfc <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
8005c30: 687b ldr r3, [r7, #4]
8005c32: 0018 movs r0, r3
8005c34: f000 f872 bl 8005d1c <HAL_TIM_PWM_PulseFinishedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
8005c38: 687b ldr r3, [r7, #4]
8005c3a: 2200 movs r2, #0
8005c3c: 761a strb r2, [r3, #24]
}
}
/* Capture compare 4 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)
8005c3e: 687b ldr r3, [r7, #4]
8005c40: 681b ldr r3, [r3, #0]
8005c42: 691b ldr r3, [r3, #16]
8005c44: 2210 movs r2, #16
8005c46: 4013 ands r3, r2
8005c48: 2b10 cmp r3, #16
8005c4a: d125 bne.n 8005c98 <HAL_TIM_IRQHandler+0x16c>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET)
8005c4c: 687b ldr r3, [r7, #4]
8005c4e: 681b ldr r3, [r3, #0]
8005c50: 68db ldr r3, [r3, #12]
8005c52: 2210 movs r2, #16
8005c54: 4013 ands r3, r2
8005c56: 2b10 cmp r3, #16
8005c58: d11e bne.n 8005c98 <HAL_TIM_IRQHandler+0x16c>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);
8005c5a: 687b ldr r3, [r7, #4]
8005c5c: 681b ldr r3, [r3, #0]
8005c5e: 2211 movs r2, #17
8005c60: 4252 negs r2, r2
8005c62: 611a str r2, [r3, #16]
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
8005c64: 687b ldr r3, [r7, #4]
8005c66: 2208 movs r2, #8
8005c68: 761a strb r2, [r3, #24]
/* Input capture event */
if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U)
8005c6a: 687b ldr r3, [r7, #4]
8005c6c: 681b ldr r3, [r3, #0]
8005c6e: 69da ldr r2, [r3, #28]
8005c70: 23c0 movs r3, #192 ; 0xc0
8005c72: 009b lsls r3, r3, #2
8005c74: 4013 ands r3, r2
8005c76: d004 beq.n 8005c82 <HAL_TIM_IRQHandler+0x156>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
HAL_TIM_IC_CaptureCallback(htim);
8005c78: 687b ldr r3, [r7, #4]
8005c7a: 0018 movs r0, r3
8005c7c: f000 f846 bl 8005d0c <HAL_TIM_IC_CaptureCallback>
8005c80: e007 b.n 8005c92 <HAL_TIM_IRQHandler+0x166>
{
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
HAL_TIM_OC_DelayElapsedCallback(htim);
8005c82: 687b ldr r3, [r7, #4]
8005c84: 0018 movs r0, r3
8005c86: f000 f839 bl 8005cfc <HAL_TIM_OC_DelayElapsedCallback>
HAL_TIM_PWM_PulseFinishedCallback(htim);
8005c8a: 687b ldr r3, [r7, #4]
8005c8c: 0018 movs r0, r3
8005c8e: f000 f845 bl 8005d1c <HAL_TIM_PWM_PulseFinishedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
8005c92: 687b ldr r3, [r7, #4]
8005c94: 2200 movs r2, #0
8005c96: 761a strb r2, [r3, #24]
}
}
/* TIM Update event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
8005c98: 687b ldr r3, [r7, #4]
8005c9a: 681b ldr r3, [r3, #0]
8005c9c: 691b ldr r3, [r3, #16]
8005c9e: 2201 movs r2, #1
8005ca0: 4013 ands r3, r2
8005ca2: 2b01 cmp r3, #1
8005ca4: d10f bne.n 8005cc6 <HAL_TIM_IRQHandler+0x19a>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET)
8005ca6: 687b ldr r3, [r7, #4]
8005ca8: 681b ldr r3, [r3, #0]
8005caa: 68db ldr r3, [r3, #12]
8005cac: 2201 movs r2, #1
8005cae: 4013 ands r3, r2
8005cb0: 2b01 cmp r3, #1
8005cb2: d108 bne.n 8005cc6 <HAL_TIM_IRQHandler+0x19a>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
8005cb4: 687b ldr r3, [r7, #4]
8005cb6: 681b ldr r3, [r3, #0]
8005cb8: 2202 movs r2, #2
8005cba: 4252 negs r2, r2
8005cbc: 611a str r2, [r3, #16]
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->PeriodElapsedCallback(htim);
#else
HAL_TIM_PeriodElapsedCallback(htim);
8005cbe: 687b ldr r3, [r7, #4]
8005cc0: 0018 movs r0, r3
8005cc2: f7fc fb81 bl 80023c8 <HAL_TIM_PeriodElapsedCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
}
/* TIM Trigger detection event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET)
8005cc6: 687b ldr r3, [r7, #4]
8005cc8: 681b ldr r3, [r3, #0]
8005cca: 691b ldr r3, [r3, #16]
8005ccc: 2240 movs r2, #64 ; 0x40
8005cce: 4013 ands r3, r2
8005cd0: 2b40 cmp r3, #64 ; 0x40
8005cd2: d10f bne.n 8005cf4 <HAL_TIM_IRQHandler+0x1c8>
{
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET)
8005cd4: 687b ldr r3, [r7, #4]
8005cd6: 681b ldr r3, [r3, #0]
8005cd8: 68db ldr r3, [r3, #12]
8005cda: 2240 movs r2, #64 ; 0x40
8005cdc: 4013 ands r3, r2
8005cde: 2b40 cmp r3, #64 ; 0x40
8005ce0: d108 bne.n 8005cf4 <HAL_TIM_IRQHandler+0x1c8>
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER);
8005ce2: 687b ldr r3, [r7, #4]
8005ce4: 681b ldr r3, [r3, #0]
8005ce6: 2241 movs r2, #65 ; 0x41
8005ce8: 4252 negs r2, r2
8005cea: 611a str r2, [r3, #16]
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->TriggerCallback(htim);
#else
HAL_TIM_TriggerCallback(htim);
8005cec: 687b ldr r3, [r7, #4]
8005cee: 0018 movs r0, r3
8005cf0: f000 f81c bl 8005d2c <HAL_TIM_TriggerCallback>
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
}
}
8005cf4: 46c0 nop ; (mov r8, r8)
8005cf6: 46bd mov sp, r7
8005cf8: b002 add sp, #8
8005cfa: bd80 pop {r7, pc}
08005cfc <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)
{
8005cfc: b580 push {r7, lr}
8005cfe: b082 sub sp, #8
8005d00: af00 add r7, sp, #0
8005d02: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file
*/
}
8005d04: 46c0 nop ; (mov r8, r8)
8005d06: 46bd mov sp, r7
8005d08: b002 add sp, #8
8005d0a: bd80 pop {r7, pc}
08005d0c <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)
{
8005d0c: b580 push {r7, lr}
8005d0e: b082 sub sp, #8
8005d10: af00 add r7, sp, #0
8005d12: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_IC_CaptureCallback could be implemented in the user file
*/
}
8005d14: 46c0 nop ; (mov r8, r8)
8005d16: 46bd mov sp, r7
8005d18: b002 add sp, #8
8005d1a: bd80 pop {r7, pc}
08005d1c <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)
{
8005d1c: b580 push {r7, lr}
8005d1e: b082 sub sp, #8
8005d20: af00 add r7, sp, #0
8005d22: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file
*/
}
8005d24: 46c0 nop ; (mov r8, r8)
8005d26: 46bd mov sp, r7
8005d28: b002 add sp, #8
8005d2a: bd80 pop {r7, pc}
08005d2c <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)
{
8005d2c: b580 push {r7, lr}
8005d2e: b082 sub sp, #8
8005d30: af00 add r7, sp, #0
8005d32: 6078 str r0, [r7, #4]
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_TriggerCallback could be implemented in the user file
*/
}
8005d34: 46c0 nop ; (mov r8, r8)
8005d36: 46bd mov sp, r7
8005d38: b002 add sp, #8
8005d3a: bd80 pop {r7, pc}
08005d3c <TIM_Base_SetConfig>:
* @param TIMx TIM peripheral
* @param Structure TIM Base configuration structure
* @retval None
*/
static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)
{
8005d3c: b580 push {r7, lr}
8005d3e: b084 sub sp, #16
8005d40: af00 add r7, sp, #0
8005d42: 6078 str r0, [r7, #4]
8005d44: 6039 str r1, [r7, #0]
uint32_t tmpcr1;
tmpcr1 = TIMx->CR1;
8005d46: 687b ldr r3, [r7, #4]
8005d48: 681b ldr r3, [r3, #0]
8005d4a: 60fb str r3, [r7, #12]
/* Set TIM Time Base Unit parameters ---------------------------------------*/
if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
8005d4c: 687a ldr r2, [r7, #4]
8005d4e: 2380 movs r3, #128 ; 0x80
8005d50: 05db lsls r3, r3, #23
8005d52: 429a cmp r2, r3
8005d54: d00b beq.n 8005d6e <TIM_Base_SetConfig+0x32>
8005d56: 687b ldr r3, [r7, #4]
8005d58: 4a23 ldr r2, [pc, #140] ; (8005de8 <TIM_Base_SetConfig+0xac>)
8005d5a: 4293 cmp r3, r2
8005d5c: d007 beq.n 8005d6e <TIM_Base_SetConfig+0x32>
8005d5e: 687b ldr r3, [r7, #4]
8005d60: 4a22 ldr r2, [pc, #136] ; (8005dec <TIM_Base_SetConfig+0xb0>)
8005d62: 4293 cmp r3, r2
8005d64: d003 beq.n 8005d6e <TIM_Base_SetConfig+0x32>
8005d66: 687b ldr r3, [r7, #4]
8005d68: 4a21 ldr r2, [pc, #132] ; (8005df0 <TIM_Base_SetConfig+0xb4>)
8005d6a: 4293 cmp r3, r2
8005d6c: d108 bne.n 8005d80 <TIM_Base_SetConfig+0x44>
{
/* Select the Counter Mode */
tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
8005d6e: 68fb ldr r3, [r7, #12]
8005d70: 2270 movs r2, #112 ; 0x70
8005d72: 4393 bics r3, r2
8005d74: 60fb str r3, [r7, #12]
tmpcr1 |= Structure->CounterMode;
8005d76: 683b ldr r3, [r7, #0]
8005d78: 685b ldr r3, [r3, #4]
8005d7a: 68fa ldr r2, [r7, #12]
8005d7c: 4313 orrs r3, r2
8005d7e: 60fb str r3, [r7, #12]
}
if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))
8005d80: 687a ldr r2, [r7, #4]
8005d82: 2380 movs r3, #128 ; 0x80
8005d84: 05db lsls r3, r3, #23
8005d86: 429a cmp r2, r3
8005d88: d00b beq.n 8005da2 <TIM_Base_SetConfig+0x66>
8005d8a: 687b ldr r3, [r7, #4]
8005d8c: 4a16 ldr r2, [pc, #88] ; (8005de8 <TIM_Base_SetConfig+0xac>)
8005d8e: 4293 cmp r3, r2
8005d90: d007 beq.n 8005da2 <TIM_Base_SetConfig+0x66>
8005d92: 687b ldr r3, [r7, #4]
8005d94: 4a15 ldr r2, [pc, #84] ; (8005dec <TIM_Base_SetConfig+0xb0>)
8005d96: 4293 cmp r3, r2
8005d98: d003 beq.n 8005da2 <TIM_Base_SetConfig+0x66>
8005d9a: 687b ldr r3, [r7, #4]
8005d9c: 4a14 ldr r2, [pc, #80] ; (8005df0 <TIM_Base_SetConfig+0xb4>)
8005d9e: 4293 cmp r3, r2
8005da0: d108 bne.n 8005db4 <TIM_Base_SetConfig+0x78>
{
/* Set the clock division */
tmpcr1 &= ~TIM_CR1_CKD;
8005da2: 68fb ldr r3, [r7, #12]
8005da4: 4a13 ldr r2, [pc, #76] ; (8005df4 <TIM_Base_SetConfig+0xb8>)
8005da6: 4013 ands r3, r2
8005da8: 60fb str r3, [r7, #12]
tmpcr1 |= (uint32_t)Structure->ClockDivision;
8005daa: 683b ldr r3, [r7, #0]
8005dac: 68db ldr r3, [r3, #12]
8005dae: 68fa ldr r2, [r7, #12]
8005db0: 4313 orrs r3, r2
8005db2: 60fb str r3, [r7, #12]
}
/* Set the auto-reload preload */
MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
8005db4: 68fb ldr r3, [r7, #12]
8005db6: 2280 movs r2, #128 ; 0x80
8005db8: 4393 bics r3, r2
8005dba: 001a movs r2, r3
8005dbc: 683b ldr r3, [r7, #0]
8005dbe: 691b ldr r3, [r3, #16]
8005dc0: 4313 orrs r3, r2
8005dc2: 60fb str r3, [r7, #12]
TIMx->CR1 = tmpcr1;
8005dc4: 687b ldr r3, [r7, #4]
8005dc6: 68fa ldr r2, [r7, #12]
8005dc8: 601a str r2, [r3, #0]
/* Set the Autoreload value */
TIMx->ARR = (uint32_t)Structure->Period ;
8005dca: 683b ldr r3, [r7, #0]
8005dcc: 689a ldr r2, [r3, #8]
8005dce: 687b ldr r3, [r7, #4]
8005dd0: 62da str r2, [r3, #44] ; 0x2c
/* Set the Prescaler value */
TIMx->PSC = Structure->Prescaler;
8005dd2: 683b ldr r3, [r7, #0]
8005dd4: 681a ldr r2, [r3, #0]
8005dd6: 687b ldr r3, [r7, #4]
8005dd8: 629a str r2, [r3, #40] ; 0x28
/* Generate an update event to reload the Prescaler
and the repetition counter (only for advanced timer) value immediately */
TIMx->EGR = TIM_EGR_UG;
8005dda: 687b ldr r3, [r7, #4]
8005ddc: 2201 movs r2, #1
8005dde: 615a str r2, [r3, #20]
}
8005de0: 46c0 nop ; (mov r8, r8)
8005de2: 46bd mov sp, r7
8005de4: b004 add sp, #16
8005de6: bd80 pop {r7, pc}
8005de8: 40000400 .word 0x40000400
8005dec: 40010800 .word 0x40010800
8005df0: 40011400 .word 0x40011400
8005df4: fffffcff .word 0xfffffcff
08005df8 <HAL_TIMEx_MasterConfigSynchronization>:
* mode.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
TIM_MasterConfigTypeDef *sMasterConfig)
{
8005df8: b580 push {r7, lr}
8005dfa: b084 sub sp, #16
8005dfc: af00 add r7, sp, #0
8005dfe: 6078 str r0, [r7, #4]
8005e00: 6039 str r1, [r7, #0]
assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
/* Check input state */
__HAL_LOCK(htim);
8005e02: 687b ldr r3, [r7, #4]
8005e04: 2238 movs r2, #56 ; 0x38
8005e06: 5c9b ldrb r3, [r3, r2]
8005e08: 2b01 cmp r3, #1
8005e0a: d101 bne.n 8005e10 <HAL_TIMEx_MasterConfigSynchronization+0x18>
8005e0c: 2302 movs r3, #2
8005e0e: e047 b.n 8005ea0 <HAL_TIMEx_MasterConfigSynchronization+0xa8>
8005e10: 687b ldr r3, [r7, #4]
8005e12: 2238 movs r2, #56 ; 0x38
8005e14: 2101 movs r1, #1
8005e16: 5499 strb r1, [r3, r2]
/* Change the handler state */
htim->State = HAL_TIM_STATE_BUSY;
8005e18: 687b ldr r3, [r7, #4]
8005e1a: 2239 movs r2, #57 ; 0x39
8005e1c: 2102 movs r1, #2
8005e1e: 5499 strb r1, [r3, r2]
/* Get the TIMx CR2 register value */
tmpcr2 = htim->Instance->CR2;
8005e20: 687b ldr r3, [r7, #4]
8005e22: 681b ldr r3, [r3, #0]
8005e24: 685b ldr r3, [r3, #4]
8005e26: 60fb str r3, [r7, #12]
/* Get the TIMx SMCR register value */
tmpsmcr = htim->Instance->SMCR;
8005e28: 687b ldr r3, [r7, #4]
8005e2a: 681b ldr r3, [r3, #0]
8005e2c: 689b ldr r3, [r3, #8]
8005e2e: 60bb str r3, [r7, #8]
/* Reset the MMS Bits */
tmpcr2 &= ~TIM_CR2_MMS;
8005e30: 68fb ldr r3, [r7, #12]
8005e32: 2270 movs r2, #112 ; 0x70
8005e34: 4393 bics r3, r2
8005e36: 60fb str r3, [r7, #12]
/* Select the TRGO source */
tmpcr2 |= sMasterConfig->MasterOutputTrigger;
8005e38: 683b ldr r3, [r7, #0]
8005e3a: 681b ldr r3, [r3, #0]
8005e3c: 68fa ldr r2, [r7, #12]
8005e3e: 4313 orrs r3, r2
8005e40: 60fb str r3, [r7, #12]
/* Update TIMx CR2 */
htim->Instance->CR2 = tmpcr2;
8005e42: 687b ldr r3, [r7, #4]
8005e44: 681b ldr r3, [r3, #0]
8005e46: 68fa ldr r2, [r7, #12]
8005e48: 605a str r2, [r3, #4]
if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
8005e4a: 687b ldr r3, [r7, #4]
8005e4c: 681a ldr r2, [r3, #0]
8005e4e: 2380 movs r3, #128 ; 0x80
8005e50: 05db lsls r3, r3, #23
8005e52: 429a cmp r2, r3
8005e54: d00e beq.n 8005e74 <HAL_TIMEx_MasterConfigSynchronization+0x7c>
8005e56: 687b ldr r3, [r7, #4]
8005e58: 681b ldr r3, [r3, #0]
8005e5a: 4a13 ldr r2, [pc, #76] ; (8005ea8 <HAL_TIMEx_MasterConfigSynchronization+0xb0>)
8005e5c: 4293 cmp r3, r2
8005e5e: d009 beq.n 8005e74 <HAL_TIMEx_MasterConfigSynchronization+0x7c>
8005e60: 687b ldr r3, [r7, #4]
8005e62: 681b ldr r3, [r3, #0]
8005e64: 4a11 ldr r2, [pc, #68] ; (8005eac <HAL_TIMEx_MasterConfigSynchronization+0xb4>)
8005e66: 4293 cmp r3, r2
8005e68: d004 beq.n 8005e74 <HAL_TIMEx_MasterConfigSynchronization+0x7c>
8005e6a: 687b ldr r3, [r7, #4]
8005e6c: 681b ldr r3, [r3, #0]
8005e6e: 4a10 ldr r2, [pc, #64] ; (8005eb0 <HAL_TIMEx_MasterConfigSynchronization+0xb8>)
8005e70: 4293 cmp r3, r2
8005e72: d10c bne.n 8005e8e <HAL_TIMEx_MasterConfigSynchronization+0x96>
{
/* Reset the MSM Bit */
tmpsmcr &= ~TIM_SMCR_MSM;
8005e74: 68bb ldr r3, [r7, #8]
8005e76: 2280 movs r2, #128 ; 0x80
8005e78: 4393 bics r3, r2
8005e7a: 60bb str r3, [r7, #8]
/* Set master mode */
tmpsmcr |= sMasterConfig->MasterSlaveMode;
8005e7c: 683b ldr r3, [r7, #0]
8005e7e: 685b ldr r3, [r3, #4]
8005e80: 68ba ldr r2, [r7, #8]
8005e82: 4313 orrs r3, r2
8005e84: 60bb str r3, [r7, #8]
/* Update TIMx SMCR */
htim->Instance->SMCR = tmpsmcr;
8005e86: 687b ldr r3, [r7, #4]
8005e88: 681b ldr r3, [r3, #0]
8005e8a: 68ba ldr r2, [r7, #8]
8005e8c: 609a str r2, [r3, #8]
}
/* Change the htim state */
htim->State = HAL_TIM_STATE_READY;
8005e8e: 687b ldr r3, [r7, #4]
8005e90: 2239 movs r2, #57 ; 0x39
8005e92: 2101 movs r1, #1
8005e94: 5499 strb r1, [r3, r2]
__HAL_UNLOCK(htim);
8005e96: 687b ldr r3, [r7, #4]
8005e98: 2238 movs r2, #56 ; 0x38
8005e9a: 2100 movs r1, #0
8005e9c: 5499 strb r1, [r3, r2]
return HAL_OK;
8005e9e: 2300 movs r3, #0
}
8005ea0: 0018 movs r0, r3
8005ea2: 46bd mov sp, r7
8005ea4: b004 add sp, #16
8005ea6: bd80 pop {r7, pc}
8005ea8: 40000400 .word 0x40000400
8005eac: 40010800 .word 0x40010800
8005eb0: 40011400 .word 0x40011400
08005eb4 <HAL_UART_Init>:
* parameters in the UART_InitTypeDef and initialize the associated handle.
* @param huart UART handle.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
{
8005eb4: b580 push {r7, lr}
8005eb6: b082 sub sp, #8
8005eb8: af00 add r7, sp, #0
8005eba: 6078 str r0, [r7, #4]
/* Check the UART handle allocation */
if (huart == NULL)
8005ebc: 687b ldr r3, [r7, #4]
8005ebe: 2b00 cmp r3, #0
8005ec0: d101 bne.n 8005ec6 <HAL_UART_Init+0x12>
{
return HAL_ERROR;
8005ec2: 2301 movs r3, #1
8005ec4: e044 b.n 8005f50 <HAL_UART_Init+0x9c>
{
/* Check the parameters */
assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance)));
}
if (huart->gState == HAL_UART_STATE_RESET)
8005ec6: 687b ldr r3, [r7, #4]
8005ec8: 6f9b ldr r3, [r3, #120] ; 0x78
8005eca: 2b00 cmp r3, #0
8005ecc: d107 bne.n 8005ede <HAL_UART_Init+0x2a>
{
/* Allocate lock resource and initialize it */
huart->Lock = HAL_UNLOCKED;
8005ece: 687b ldr r3, [r7, #4]
8005ed0: 2274 movs r2, #116 ; 0x74
8005ed2: 2100 movs r1, #0
8005ed4: 5499 strb r1, [r3, r2]
/* Init the low level hardware */
huart->MspInitCallback(huart);
#else
/* Init the low level hardware : GPIO, CLOCK */
HAL_UART_MspInit(huart);
8005ed6: 687b ldr r3, [r7, #4]
8005ed8: 0018 movs r0, r3
8005eda: f7fc fb3d bl 8002558 <HAL_UART_MspInit>
#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
}
huart->gState = HAL_UART_STATE_BUSY;
8005ede: 687b ldr r3, [r7, #4]
8005ee0: 2224 movs r2, #36 ; 0x24
8005ee2: 679a str r2, [r3, #120] ; 0x78
__HAL_UART_DISABLE(huart);
8005ee4: 687b ldr r3, [r7, #4]
8005ee6: 681b ldr r3, [r3, #0]
8005ee8: 687a ldr r2, [r7, #4]
8005eea: 6812 ldr r2, [r2, #0]
8005eec: 6812 ldr r2, [r2, #0]
8005eee: 2101 movs r1, #1
8005ef0: 438a bics r2, r1
8005ef2: 601a str r2, [r3, #0]
/* Set the UART Communication parameters */
if (UART_SetConfig(huart) == HAL_ERROR)
8005ef4: 687b ldr r3, [r7, #4]
8005ef6: 0018 movs r0, r3
8005ef8: f000 faf8 bl 80064ec <UART_SetConfig>
8005efc: 0003 movs r3, r0
8005efe: 2b01 cmp r3, #1
8005f00: d101 bne.n 8005f06 <HAL_UART_Init+0x52>
{
return HAL_ERROR;
8005f02: 2301 movs r3, #1
8005f04: e024 b.n 8005f50 <HAL_UART_Init+0x9c>
}
if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)
8005f06: 687b ldr r3, [r7, #4]
8005f08: 6a5b ldr r3, [r3, #36] ; 0x24
8005f0a: 2b00 cmp r3, #0
8005f0c: d003 beq.n 8005f16 <HAL_UART_Init+0x62>
{
UART_AdvFeatureConfig(huart);
8005f0e: 687b ldr r3, [r7, #4]
8005f10: 0018 movs r0, r3
8005f12: f000 fdad bl 8006a70 <UART_AdvFeatureConfig>
}
/* In asynchronous mode, the following bits must be kept cleared:
- LINEN and CLKEN bits in the USART_CR2 register,
- SCEN, HDSEL and IREN bits in the USART_CR3 register.*/
CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
8005f16: 687b ldr r3, [r7, #4]
8005f18: 681b ldr r3, [r3, #0]
8005f1a: 687a ldr r2, [r7, #4]
8005f1c: 6812 ldr r2, [r2, #0]
8005f1e: 6852 ldr r2, [r2, #4]
8005f20: 490d ldr r1, [pc, #52] ; (8005f58 <HAL_UART_Init+0xa4>)
8005f22: 400a ands r2, r1
8005f24: 605a str r2, [r3, #4]
CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
8005f26: 687b ldr r3, [r7, #4]
8005f28: 681b ldr r3, [r3, #0]
8005f2a: 687a ldr r2, [r7, #4]
8005f2c: 6812 ldr r2, [r2, #0]
8005f2e: 6892 ldr r2, [r2, #8]
8005f30: 212a movs r1, #42 ; 0x2a
8005f32: 438a bics r2, r1
8005f34: 609a str r2, [r3, #8]
__HAL_UART_ENABLE(huart);
8005f36: 687b ldr r3, [r7, #4]
8005f38: 681b ldr r3, [r3, #0]
8005f3a: 687a ldr r2, [r7, #4]
8005f3c: 6812 ldr r2, [r2, #0]
8005f3e: 6812 ldr r2, [r2, #0]
8005f40: 2101 movs r1, #1
8005f42: 430a orrs r2, r1
8005f44: 601a str r2, [r3, #0]
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
return (UART_CheckIdleState(huart));
8005f46: 687b ldr r3, [r7, #4]
8005f48: 0018 movs r0, r3
8005f4a: f000 fe3d bl 8006bc8 <UART_CheckIdleState>
8005f4e: 0003 movs r3, r0
}
8005f50: 0018 movs r0, r3
8005f52: 46bd mov sp, r7
8005f54: b002 add sp, #8
8005f56: bd80 pop {r7, pc}
8005f58: ffffb7ff .word 0xffffb7ff
08005f5c <HAL_UART_DeInit>:
* @brief DeInitialize the UART peripheral.
* @param huart UART handle.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart)
{
8005f5c: b580 push {r7, lr}
8005f5e: b082 sub sp, #8
8005f60: af00 add r7, sp, #0
8005f62: 6078 str r0, [r7, #4]
/* Check the UART handle allocation */
if (huart == NULL)
8005f64: 687b ldr r3, [r7, #4]
8005f66: 2b00 cmp r3, #0
8005f68: d101 bne.n 8005f6e <HAL_UART_DeInit+0x12>
{
return HAL_ERROR;
8005f6a: 2301 movs r3, #1
8005f6c: e02c b.n 8005fc8 <HAL_UART_DeInit+0x6c>
}
/* Check the parameters */
assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance)));
huart->gState = HAL_UART_STATE_BUSY;
8005f6e: 687b ldr r3, [r7, #4]
8005f70: 2224 movs r2, #36 ; 0x24
8005f72: 679a str r2, [r3, #120] ; 0x78
__HAL_UART_DISABLE(huart);
8005f74: 687b ldr r3, [r7, #4]
8005f76: 681b ldr r3, [r3, #0]
8005f78: 687a ldr r2, [r7, #4]
8005f7a: 6812 ldr r2, [r2, #0]
8005f7c: 6812 ldr r2, [r2, #0]
8005f7e: 2101 movs r1, #1
8005f80: 438a bics r2, r1
8005f82: 601a str r2, [r3, #0]
huart->Instance->CR1 = 0x0U;
8005f84: 687b ldr r3, [r7, #4]
8005f86: 681b ldr r3, [r3, #0]
8005f88: 2200 movs r2, #0
8005f8a: 601a str r2, [r3, #0]
huart->Instance->CR2 = 0x0U;
8005f8c: 687b ldr r3, [r7, #4]
8005f8e: 681b ldr r3, [r3, #0]
8005f90: 2200 movs r2, #0
8005f92: 605a str r2, [r3, #4]
huart->Instance->CR3 = 0x0U;
8005f94: 687b ldr r3, [r7, #4]
8005f96: 681b ldr r3, [r3, #0]
8005f98: 2200 movs r2, #0
8005f9a: 609a str r2, [r3, #8]
}
/* DeInit the low level hardware */
huart->MspDeInitCallback(huart);
#else
/* DeInit the low level hardware */
HAL_UART_MspDeInit(huart);
8005f9c: 687b ldr r3, [r7, #4]
8005f9e: 0018 movs r0, r3
8005fa0: f7fc fb2c bl 80025fc <HAL_UART_MspDeInit>
#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
huart->ErrorCode = HAL_UART_ERROR_NONE;
8005fa4: 687b ldr r3, [r7, #4]
8005fa6: 2280 movs r2, #128 ; 0x80
8005fa8: 2100 movs r1, #0
8005faa: 5099 str r1, [r3, r2]
huart->gState = HAL_UART_STATE_RESET;
8005fac: 687b ldr r3, [r7, #4]
8005fae: 2200 movs r2, #0
8005fb0: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_RESET;
8005fb2: 687b ldr r3, [r7, #4]
8005fb4: 2200 movs r2, #0
8005fb6: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
8005fb8: 687b ldr r3, [r7, #4]
8005fba: 2200 movs r2, #0
8005fbc: 661a str r2, [r3, #96] ; 0x60
__HAL_UNLOCK(huart);
8005fbe: 687b ldr r3, [r7, #4]
8005fc0: 2274 movs r2, #116 ; 0x74
8005fc2: 2100 movs r1, #0
8005fc4: 5499 strb r1, [r3, r2]
return HAL_OK;
8005fc6: 2300 movs r3, #0
}
8005fc8: 0018 movs r0, r3
8005fca: 46bd mov sp, r7
8005fcc: b002 add sp, #8
8005fce: bd80 pop {r7, pc}
08005fd0 <HAL_UART_Transmit_IT>:
* @param pData Pointer to data buffer (u8 or u16 data elements).
* @param Size Amount of data elements (u8 or u16) to be sent.
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
{
8005fd0: b580 push {r7, lr}
8005fd2: b084 sub sp, #16
8005fd4: af00 add r7, sp, #0
8005fd6: 60f8 str r0, [r7, #12]
8005fd8: 60b9 str r1, [r7, #8]
8005fda: 1dbb adds r3, r7, #6
8005fdc: 801a strh r2, [r3, #0]
/* Check that a Tx process is not already ongoing */
if (huart->gState == HAL_UART_STATE_READY)
8005fde: 68fb ldr r3, [r7, #12]
8005fe0: 6f9b ldr r3, [r3, #120] ; 0x78
8005fe2: 2b20 cmp r3, #32
8005fe4: d159 bne.n 800609a <HAL_UART_Transmit_IT+0xca>
{
if ((pData == NULL) || (Size == 0U))
8005fe6: 68bb ldr r3, [r7, #8]
8005fe8: 2b00 cmp r3, #0
8005fea: d003 beq.n 8005ff4 <HAL_UART_Transmit_IT+0x24>
8005fec: 1dbb adds r3, r7, #6
8005fee: 881b ldrh r3, [r3, #0]
8005ff0: 2b00 cmp r3, #0
8005ff2: d101 bne.n 8005ff8 <HAL_UART_Transmit_IT+0x28>
{
return HAL_ERROR;
8005ff4: 2301 movs r3, #1
8005ff6: e051 b.n 800609c <HAL_UART_Transmit_IT+0xcc>
}
/* In case of 9bits/No Parity transfer, pData buffer provided as input parameter
should be aligned on a u16 frontier, as data to be filled into TDR will be
handled through a u16 cast. */
if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
8005ff8: 68fb ldr r3, [r7, #12]
8005ffa: 689a ldr r2, [r3, #8]
8005ffc: 2380 movs r3, #128 ; 0x80
8005ffe: 015b lsls r3, r3, #5
8006000: 429a cmp r2, r3
8006002: d109 bne.n 8006018 <HAL_UART_Transmit_IT+0x48>
8006004: 68fb ldr r3, [r7, #12]
8006006: 691b ldr r3, [r3, #16]
8006008: 2b00 cmp r3, #0
800600a: d105 bne.n 8006018 <HAL_UART_Transmit_IT+0x48>
{
if ((((uint32_t)pData) & 1U) != 0U)
800600c: 68bb ldr r3, [r7, #8]
800600e: 2201 movs r2, #1
8006010: 4013 ands r3, r2
8006012: d001 beq.n 8006018 <HAL_UART_Transmit_IT+0x48>
{
return HAL_ERROR;
8006014: 2301 movs r3, #1
8006016: e041 b.n 800609c <HAL_UART_Transmit_IT+0xcc>
}
}
__HAL_LOCK(huart);
8006018: 68fb ldr r3, [r7, #12]
800601a: 2274 movs r2, #116 ; 0x74
800601c: 5c9b ldrb r3, [r3, r2]
800601e: 2b01 cmp r3, #1
8006020: d101 bne.n 8006026 <HAL_UART_Transmit_IT+0x56>
8006022: 2302 movs r3, #2
8006024: e03a b.n 800609c <HAL_UART_Transmit_IT+0xcc>
8006026: 68fb ldr r3, [r7, #12]
8006028: 2274 movs r2, #116 ; 0x74
800602a: 2101 movs r1, #1
800602c: 5499 strb r1, [r3, r2]
huart->pTxBuffPtr = pData;
800602e: 68fb ldr r3, [r7, #12]
8006030: 68ba ldr r2, [r7, #8]
8006032: 64da str r2, [r3, #76] ; 0x4c
huart->TxXferSize = Size;
8006034: 68fb ldr r3, [r7, #12]
8006036: 1dba adds r2, r7, #6
8006038: 2150 movs r1, #80 ; 0x50
800603a: 8812 ldrh r2, [r2, #0]
800603c: 525a strh r2, [r3, r1]
huart->TxXferCount = Size;
800603e: 68fb ldr r3, [r7, #12]
8006040: 1dba adds r2, r7, #6
8006042: 2152 movs r1, #82 ; 0x52
8006044: 8812 ldrh r2, [r2, #0]
8006046: 525a strh r2, [r3, r1]
huart->TxISR = NULL;
8006048: 68fb ldr r3, [r7, #12]
800604a: 2200 movs r2, #0
800604c: 669a str r2, [r3, #104] ; 0x68
huart->ErrorCode = HAL_UART_ERROR_NONE;
800604e: 68fb ldr r3, [r7, #12]
8006050: 2280 movs r2, #128 ; 0x80
8006052: 2100 movs r1, #0
8006054: 5099 str r1, [r3, r2]
huart->gState = HAL_UART_STATE_BUSY_TX;
8006056: 68fb ldr r3, [r7, #12]
8006058: 2221 movs r2, #33 ; 0x21
800605a: 679a str r2, [r3, #120] ; 0x78
/* Set the Tx ISR function pointer according to the data word length */
if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
800605c: 68fb ldr r3, [r7, #12]
800605e: 689a ldr r2, [r3, #8]
8006060: 2380 movs r3, #128 ; 0x80
8006062: 015b lsls r3, r3, #5
8006064: 429a cmp r2, r3
8006066: d107 bne.n 8006078 <HAL_UART_Transmit_IT+0xa8>
8006068: 68fb ldr r3, [r7, #12]
800606a: 691b ldr r3, [r3, #16]
800606c: 2b00 cmp r3, #0
800606e: d103 bne.n 8006078 <HAL_UART_Transmit_IT+0xa8>
{
huart->TxISR = UART_TxISR_16BIT;
8006070: 68fb ldr r3, [r7, #12]
8006072: 4a0c ldr r2, [pc, #48] ; (80060a4 <HAL_UART_Transmit_IT+0xd4>)
8006074: 669a str r2, [r3, #104] ; 0x68
8006076: e002 b.n 800607e <HAL_UART_Transmit_IT+0xae>
}
else
{
huart->TxISR = UART_TxISR_8BIT;
8006078: 68fb ldr r3, [r7, #12]
800607a: 4a0b ldr r2, [pc, #44] ; (80060a8 <HAL_UART_Transmit_IT+0xd8>)
800607c: 669a str r2, [r3, #104] ; 0x68
}
__HAL_UNLOCK(huart);
800607e: 68fb ldr r3, [r7, #12]
8006080: 2274 movs r2, #116 ; 0x74
8006082: 2100 movs r1, #0
8006084: 5499 strb r1, [r3, r2]
/* Enable the Transmit Data Register Empty interrupt */
SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
8006086: 68fb ldr r3, [r7, #12]
8006088: 681b ldr r3, [r3, #0]
800608a: 68fa ldr r2, [r7, #12]
800608c: 6812 ldr r2, [r2, #0]
800608e: 6812 ldr r2, [r2, #0]
8006090: 2180 movs r1, #128 ; 0x80
8006092: 430a orrs r2, r1
8006094: 601a str r2, [r3, #0]
return HAL_OK;
8006096: 2300 movs r3, #0
8006098: e000 b.n 800609c <HAL_UART_Transmit_IT+0xcc>
}
else
{
return HAL_BUSY;
800609a: 2302 movs r3, #2
}
}
800609c: 0018 movs r0, r3
800609e: 46bd mov sp, r7
80060a0: b004 add sp, #16
80060a2: bd80 pop {r7, pc}
80060a4: 08006e55 .word 0x08006e55
80060a8: 08006de7 .word 0x08006de7
080060ac <HAL_UART_IRQHandler>:
* @brief Handle UART interrupt request.
* @param huart UART handle.
* @retval None
*/
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
{
80060ac: b580 push {r7, lr}
80060ae: b088 sub sp, #32
80060b0: af00 add r7, sp, #0
80060b2: 6078 str r0, [r7, #4]
uint32_t isrflags = READ_REG(huart->Instance->ISR);
80060b4: 687b ldr r3, [r7, #4]
80060b6: 681b ldr r3, [r3, #0]
80060b8: 69db ldr r3, [r3, #28]
80060ba: 61fb str r3, [r7, #28]
uint32_t cr1its = READ_REG(huart->Instance->CR1);
80060bc: 687b ldr r3, [r7, #4]
80060be: 681b ldr r3, [r3, #0]
80060c0: 681b ldr r3, [r3, #0]
80060c2: 61bb str r3, [r7, #24]
uint32_t cr3its = READ_REG(huart->Instance->CR3);
80060c4: 687b ldr r3, [r7, #4]
80060c6: 681b ldr r3, [r3, #0]
80060c8: 689b ldr r3, [r3, #8]
80060ca: 617b str r3, [r7, #20]
uint32_t errorflags;
uint32_t errorcode;
/* If no error occurs */
errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF));
80060cc: 69fb ldr r3, [r7, #28]
80060ce: 4ab7 ldr r2, [pc, #732] ; (80063ac <HAL_UART_IRQHandler+0x300>)
80060d0: 4013 ands r3, r2
80060d2: 613b str r3, [r7, #16]
if (errorflags == 0U)
80060d4: 693b ldr r3, [r7, #16]
80060d6: 2b00 cmp r3, #0
80060d8: d112 bne.n 8006100 <HAL_UART_IRQHandler+0x54>
{
/* UART in mode Receiver ---------------------------------------------------*/
if (((isrflags & USART_ISR_RXNE) != 0U)
80060da: 69fb ldr r3, [r7, #28]
80060dc: 2220 movs r2, #32
80060de: 4013 ands r3, r2
80060e0: d00e beq.n 8006100 <HAL_UART_IRQHandler+0x54>
&& ((cr1its & USART_CR1_RXNEIE) != 0U))
80060e2: 69bb ldr r3, [r7, #24]
80060e4: 2220 movs r2, #32
80060e6: 4013 ands r3, r2
80060e8: d00a beq.n 8006100 <HAL_UART_IRQHandler+0x54>
{
if (huart->RxISR != NULL)
80060ea: 687b ldr r3, [r7, #4]
80060ec: 6e5b ldr r3, [r3, #100] ; 0x64
80060ee: 2b00 cmp r3, #0
80060f0: d100 bne.n 80060f4 <HAL_UART_IRQHandler+0x48>
80060f2: e1d8 b.n 80064a6 <HAL_UART_IRQHandler+0x3fa>
{
huart->RxISR(huart);
80060f4: 687b ldr r3, [r7, #4]
80060f6: 6e5b ldr r3, [r3, #100] ; 0x64
80060f8: 687a ldr r2, [r7, #4]
80060fa: 0010 movs r0, r2
80060fc: 4798 blx r3
}
return;
80060fe: e1d2 b.n 80064a6 <HAL_UART_IRQHandler+0x3fa>
}
}
/* If some errors occur */
if ((errorflags != 0U)
8006100: 693b ldr r3, [r7, #16]
8006102: 2b00 cmp r3, #0
8006104: d100 bne.n 8006108 <HAL_UART_IRQHandler+0x5c>
8006106: e0d9 b.n 80062bc <HAL_UART_IRQHandler+0x210>
&& (((cr3its & USART_CR3_EIE) != 0U)
8006108: 697b ldr r3, [r7, #20]
800610a: 2201 movs r2, #1
800610c: 4013 ands r3, r2
800610e: d104 bne.n 800611a <HAL_UART_IRQHandler+0x6e>
|| ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_RTOIE)) != 0U)))
8006110: 69bb ldr r3, [r7, #24]
8006112: 4aa7 ldr r2, [pc, #668] ; (80063b0 <HAL_UART_IRQHandler+0x304>)
8006114: 4013 ands r3, r2
8006116: d100 bne.n 800611a <HAL_UART_IRQHandler+0x6e>
8006118: e0d0 b.n 80062bc <HAL_UART_IRQHandler+0x210>
{
/* UART parity error interrupt occurred -------------------------------------*/
if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U))
800611a: 69fb ldr r3, [r7, #28]
800611c: 2201 movs r2, #1
800611e: 4013 ands r3, r2
8006120: d010 beq.n 8006144 <HAL_UART_IRQHandler+0x98>
8006122: 69ba ldr r2, [r7, #24]
8006124: 2380 movs r3, #128 ; 0x80
8006126: 005b lsls r3, r3, #1
8006128: 4013 ands r3, r2
800612a: d00b beq.n 8006144 <HAL_UART_IRQHandler+0x98>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF);
800612c: 687b ldr r3, [r7, #4]
800612e: 681b ldr r3, [r3, #0]
8006130: 2201 movs r2, #1
8006132: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_PE;
8006134: 687b ldr r3, [r7, #4]
8006136: 2280 movs r2, #128 ; 0x80
8006138: 589b ldr r3, [r3, r2]
800613a: 2201 movs r2, #1
800613c: 431a orrs r2, r3
800613e: 687b ldr r3, [r7, #4]
8006140: 2180 movs r1, #128 ; 0x80
8006142: 505a str r2, [r3, r1]
}
/* UART frame error interrupt occurred --------------------------------------*/
if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
8006144: 69fb ldr r3, [r7, #28]
8006146: 2202 movs r2, #2
8006148: 4013 ands r3, r2
800614a: d00f beq.n 800616c <HAL_UART_IRQHandler+0xc0>
800614c: 697b ldr r3, [r7, #20]
800614e: 2201 movs r2, #1
8006150: 4013 ands r3, r2
8006152: d00b beq.n 800616c <HAL_UART_IRQHandler+0xc0>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF);
8006154: 687b ldr r3, [r7, #4]
8006156: 681b ldr r3, [r3, #0]
8006158: 2202 movs r2, #2
800615a: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_FE;
800615c: 687b ldr r3, [r7, #4]
800615e: 2280 movs r2, #128 ; 0x80
8006160: 589b ldr r3, [r3, r2]
8006162: 2204 movs r2, #4
8006164: 431a orrs r2, r3
8006166: 687b ldr r3, [r7, #4]
8006168: 2180 movs r1, #128 ; 0x80
800616a: 505a str r2, [r3, r1]
}
/* UART noise error interrupt occurred --------------------------------------*/
if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
800616c: 69fb ldr r3, [r7, #28]
800616e: 2204 movs r2, #4
8006170: 4013 ands r3, r2
8006172: d00f beq.n 8006194 <HAL_UART_IRQHandler+0xe8>
8006174: 697b ldr r3, [r7, #20]
8006176: 2201 movs r2, #1
8006178: 4013 ands r3, r2
800617a: d00b beq.n 8006194 <HAL_UART_IRQHandler+0xe8>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF);
800617c: 687b ldr r3, [r7, #4]
800617e: 681b ldr r3, [r3, #0]
8006180: 2204 movs r2, #4
8006182: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_NE;
8006184: 687b ldr r3, [r7, #4]
8006186: 2280 movs r2, #128 ; 0x80
8006188: 589b ldr r3, [r3, r2]
800618a: 2202 movs r2, #2
800618c: 431a orrs r2, r3
800618e: 687b ldr r3, [r7, #4]
8006190: 2180 movs r1, #128 ; 0x80
8006192: 505a str r2, [r3, r1]
}
/* UART Over-Run interrupt occurred -----------------------------------------*/
if (((isrflags & USART_ISR_ORE) != 0U)
8006194: 69fb ldr r3, [r7, #28]
8006196: 2208 movs r2, #8
8006198: 4013 ands r3, r2
800619a: d013 beq.n 80061c4 <HAL_UART_IRQHandler+0x118>
&& (((cr1its & USART_CR1_RXNEIE) != 0U) ||
800619c: 69bb ldr r3, [r7, #24]
800619e: 2220 movs r2, #32
80061a0: 4013 ands r3, r2
80061a2: d103 bne.n 80061ac <HAL_UART_IRQHandler+0x100>
((cr3its & USART_CR3_EIE) != 0U)))
80061a4: 697b ldr r3, [r7, #20]
80061a6: 2201 movs r2, #1
80061a8: 4013 ands r3, r2
&& (((cr1its & USART_CR1_RXNEIE) != 0U) ||
80061aa: d00b beq.n 80061c4 <HAL_UART_IRQHandler+0x118>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);
80061ac: 687b ldr r3, [r7, #4]
80061ae: 681b ldr r3, [r3, #0]
80061b0: 2208 movs r2, #8
80061b2: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_ORE;
80061b4: 687b ldr r3, [r7, #4]
80061b6: 2280 movs r2, #128 ; 0x80
80061b8: 589b ldr r3, [r3, r2]
80061ba: 2208 movs r2, #8
80061bc: 431a orrs r2, r3
80061be: 687b ldr r3, [r7, #4]
80061c0: 2180 movs r1, #128 ; 0x80
80061c2: 505a str r2, [r3, r1]
}
/* UART Receiver Timeout interrupt occurred ---------------------------------*/
if (((isrflags & USART_ISR_RTOF) != 0U) && ((cr1its & USART_CR1_RTOIE) != 0U))
80061c4: 69fa ldr r2, [r7, #28]
80061c6: 2380 movs r3, #128 ; 0x80
80061c8: 011b lsls r3, r3, #4
80061ca: 4013 ands r3, r2
80061cc: d011 beq.n 80061f2 <HAL_UART_IRQHandler+0x146>
80061ce: 69ba ldr r2, [r7, #24]
80061d0: 2380 movs r3, #128 ; 0x80
80061d2: 04db lsls r3, r3, #19
80061d4: 4013 ands r3, r2
80061d6: d00c beq.n 80061f2 <HAL_UART_IRQHandler+0x146>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
80061d8: 687b ldr r3, [r7, #4]
80061da: 681b ldr r3, [r3, #0]
80061dc: 2280 movs r2, #128 ; 0x80
80061de: 0112 lsls r2, r2, #4
80061e0: 621a str r2, [r3, #32]
huart->ErrorCode |= HAL_UART_ERROR_RTO;
80061e2: 687b ldr r3, [r7, #4]
80061e4: 2280 movs r2, #128 ; 0x80
80061e6: 589b ldr r3, [r3, r2]
80061e8: 2220 movs r2, #32
80061ea: 431a orrs r2, r3
80061ec: 687b ldr r3, [r7, #4]
80061ee: 2180 movs r1, #128 ; 0x80
80061f0: 505a str r2, [r3, r1]
}
/* Call UART Error Call back function if need be ----------------------------*/
if (huart->ErrorCode != HAL_UART_ERROR_NONE)
80061f2: 687b ldr r3, [r7, #4]
80061f4: 2280 movs r2, #128 ; 0x80
80061f6: 589b ldr r3, [r3, r2]
80061f8: 2b00 cmp r3, #0
80061fa: d100 bne.n 80061fe <HAL_UART_IRQHandler+0x152>
80061fc: e155 b.n 80064aa <HAL_UART_IRQHandler+0x3fe>
{
/* UART in mode Receiver --------------------------------------------------*/
if (((isrflags & USART_ISR_RXNE) != 0U)
80061fe: 69fb ldr r3, [r7, #28]
8006200: 2220 movs r2, #32
8006202: 4013 ands r3, r2
8006204: d00c beq.n 8006220 <HAL_UART_IRQHandler+0x174>
&& ((cr1its & USART_CR1_RXNEIE) != 0U))
8006206: 69bb ldr r3, [r7, #24]
8006208: 2220 movs r2, #32
800620a: 4013 ands r3, r2
800620c: d008 beq.n 8006220 <HAL_UART_IRQHandler+0x174>
{
if (huart->RxISR != NULL)
800620e: 687b ldr r3, [r7, #4]
8006210: 6e5b ldr r3, [r3, #100] ; 0x64
8006212: 2b00 cmp r3, #0
8006214: d004 beq.n 8006220 <HAL_UART_IRQHandler+0x174>
{
huart->RxISR(huart);
8006216: 687b ldr r3, [r7, #4]
8006218: 6e5b ldr r3, [r3, #100] ; 0x64
800621a: 687a ldr r2, [r7, #4]
800621c: 0010 movs r0, r2
800621e: 4798 blx r3
/* If Error is to be considered as blocking :
- Receiver Timeout error in Reception
- Overrun error in Reception
- any error occurs in DMA mode reception
*/
errorcode = huart->ErrorCode;
8006220: 687b ldr r3, [r7, #4]
8006222: 2280 movs r2, #128 ; 0x80
8006224: 589b ldr r3, [r3, r2]
8006226: 60fb str r3, [r7, #12]
if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
8006228: 687b ldr r3, [r7, #4]
800622a: 681b ldr r3, [r3, #0]
800622c: 689b ldr r3, [r3, #8]
800622e: 2240 movs r2, #64 ; 0x40
8006230: 4013 ands r3, r2
8006232: 2b40 cmp r3, #64 ; 0x40
8006234: d003 beq.n 800623e <HAL_UART_IRQHandler+0x192>
((errorcode & (HAL_UART_ERROR_RTO | HAL_UART_ERROR_ORE)) != 0U))
8006236: 68fb ldr r3, [r7, #12]
8006238: 2228 movs r2, #40 ; 0x28
800623a: 4013 ands r3, r2
if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
800623c: d033 beq.n 80062a6 <HAL_UART_IRQHandler+0x1fa>
{
/* Blocking error : transfer is aborted
Set the UART state ready to be able to start again the process,
Disable Rx Interrupts, and disable Rx DMA request, if ongoing */
UART_EndRxTransfer(huart);
800623e: 687b ldr r3, [r7, #4]
8006240: 0018 movs r0, r3
8006242: f000 fd89 bl 8006d58 <UART_EndRxTransfer>
/* Disable the UART DMA Rx request if enabled */
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
8006246: 687b ldr r3, [r7, #4]
8006248: 681b ldr r3, [r3, #0]
800624a: 689b ldr r3, [r3, #8]
800624c: 2240 movs r2, #64 ; 0x40
800624e: 4013 ands r3, r2
8006250: 2b40 cmp r3, #64 ; 0x40
8006252: d123 bne.n 800629c <HAL_UART_IRQHandler+0x1f0>
{
CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
8006254: 687b ldr r3, [r7, #4]
8006256: 681b ldr r3, [r3, #0]
8006258: 687a ldr r2, [r7, #4]
800625a: 6812 ldr r2, [r2, #0]
800625c: 6892 ldr r2, [r2, #8]
800625e: 2140 movs r1, #64 ; 0x40
8006260: 438a bics r2, r1
8006262: 609a str r2, [r3, #8]
/* Abort the UART DMA Rx channel */
if (huart->hdmarx != NULL)
8006264: 687b ldr r3, [r7, #4]
8006266: 6f1b ldr r3, [r3, #112] ; 0x70
8006268: 2b00 cmp r3, #0
800626a: d012 beq.n 8006292 <HAL_UART_IRQHandler+0x1e6>
{
/* Set the UART DMA Abort callback :
will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */
huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError;
800626c: 687b ldr r3, [r7, #4]
800626e: 6f1b ldr r3, [r3, #112] ; 0x70
8006270: 4a50 ldr r2, [pc, #320] ; (80063b4 <HAL_UART_IRQHandler+0x308>)
8006272: 639a str r2, [r3, #56] ; 0x38
/* Abort DMA RX */
if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)
8006274: 687b ldr r3, [r7, #4]
8006276: 6f1b ldr r3, [r3, #112] ; 0x70
8006278: 0018 movs r0, r3
800627a: f7fd ffb0 bl 80041de <HAL_DMA_Abort_IT>
800627e: 1e03 subs r3, r0, #0
8006280: d01a beq.n 80062b8 <HAL_UART_IRQHandler+0x20c>
{
/* Call Directly huart->hdmarx->XferAbortCallback function in case of error */
huart->hdmarx->XferAbortCallback(huart->hdmarx);
8006282: 687b ldr r3, [r7, #4]
8006284: 6f1b ldr r3, [r3, #112] ; 0x70
8006286: 6b9a ldr r2, [r3, #56] ; 0x38
8006288: 687b ldr r3, [r7, #4]
800628a: 6f1b ldr r3, [r3, #112] ; 0x70
800628c: 0018 movs r0, r3
800628e: 4790 blx r2
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
8006290: e012 b.n 80062b8 <HAL_UART_IRQHandler+0x20c>
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
huart->ErrorCallback(huart);
#else
/*Call legacy weak error callback*/
HAL_UART_ErrorCallback(huart);
8006292: 687b ldr r3, [r7, #4]
8006294: 0018 movs r0, r3
8006296: f000 f915 bl 80064c4 <HAL_UART_ErrorCallback>
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
800629a: e00d b.n 80062b8 <HAL_UART_IRQHandler+0x20c>
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
huart->ErrorCallback(huart);
#else
/*Call legacy weak error callback*/
HAL_UART_ErrorCallback(huart);
800629c: 687b ldr r3, [r7, #4]
800629e: 0018 movs r0, r3
80062a0: f000 f910 bl 80064c4 <HAL_UART_ErrorCallback>
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
80062a4: e008 b.n 80062b8 <HAL_UART_IRQHandler+0x20c>
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
huart->ErrorCallback(huart);
#else
/*Call legacy weak error callback*/
HAL_UART_ErrorCallback(huart);
80062a6: 687b ldr r3, [r7, #4]
80062a8: 0018 movs r0, r3
80062aa: f000 f90b bl 80064c4 <HAL_UART_ErrorCallback>
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
huart->ErrorCode = HAL_UART_ERROR_NONE;
80062ae: 687b ldr r3, [r7, #4]
80062b0: 2280 movs r2, #128 ; 0x80
80062b2: 2100 movs r1, #0
80062b4: 5099 str r1, [r3, r2]
}
}
return;
80062b6: e0f8 b.n 80064aa <HAL_UART_IRQHandler+0x3fe>
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
80062b8: 46c0 nop ; (mov r8, r8)
return;
80062ba: e0f6 b.n 80064aa <HAL_UART_IRQHandler+0x3fe>
} /* End if some error occurs */
/* Check current reception Mode :
If Reception till IDLE event has been selected : */
if ( (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
80062bc: 687b ldr r3, [r7, #4]
80062be: 6e1b ldr r3, [r3, #96] ; 0x60
80062c0: 2b01 cmp r3, #1
80062c2: d000 beq.n 80062c6 <HAL_UART_IRQHandler+0x21a>
80062c4: e0bb b.n 800643e <HAL_UART_IRQHandler+0x392>
&&((isrflags & USART_ISR_IDLE) != 0U)
80062c6: 69fb ldr r3, [r7, #28]
80062c8: 2210 movs r2, #16
80062ca: 4013 ands r3, r2
80062cc: d100 bne.n 80062d0 <HAL_UART_IRQHandler+0x224>
80062ce: e0b6 b.n 800643e <HAL_UART_IRQHandler+0x392>
&&((cr1its & USART_ISR_IDLE) != 0U))
80062d0: 69bb ldr r3, [r7, #24]
80062d2: 2210 movs r2, #16
80062d4: 4013 ands r3, r2
80062d6: d100 bne.n 80062da <HAL_UART_IRQHandler+0x22e>
80062d8: e0b1 b.n 800643e <HAL_UART_IRQHandler+0x392>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);
80062da: 687b ldr r3, [r7, #4]
80062dc: 681b ldr r3, [r3, #0]
80062de: 2210 movs r2, #16
80062e0: 621a str r2, [r3, #32]
/* Check if DMA mode is enabled in UART */
if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
80062e2: 687b ldr r3, [r7, #4]
80062e4: 681b ldr r3, [r3, #0]
80062e6: 689b ldr r3, [r3, #8]
80062e8: 2240 movs r2, #64 ; 0x40
80062ea: 4013 ands r3, r2
80062ec: 2b40 cmp r3, #64 ; 0x40
80062ee: d165 bne.n 80063bc <HAL_UART_IRQHandler+0x310>
{
/* DMA mode enabled */
/* Check received length : If all expected data are received, do nothing,
(DMA cplt callback will be called).
Otherwise, if at least one data has already been received, IDLE event is to be notified to user */
uint16_t nb_remaining_rx_data = (uint16_t) __HAL_DMA_GET_COUNTER(huart->hdmarx);
80062f0: 687b ldr r3, [r7, #4]
80062f2: 6f1b ldr r3, [r3, #112] ; 0x70
80062f4: 681b ldr r3, [r3, #0]
80062f6: 685a ldr r2, [r3, #4]
80062f8: 230a movs r3, #10
80062fa: 18fb adds r3, r7, r3
80062fc: 801a strh r2, [r3, #0]
if ( (nb_remaining_rx_data > 0U)
80062fe: 230a movs r3, #10
8006300: 18fb adds r3, r7, r3
8006302: 881b ldrh r3, [r3, #0]
8006304: 2b00 cmp r3, #0
8006306: d100 bne.n 800630a <HAL_UART_IRQHandler+0x25e>
8006308: e0d1 b.n 80064ae <HAL_UART_IRQHandler+0x402>
&&(nb_remaining_rx_data < huart->RxXferSize))
800630a: 687b ldr r3, [r7, #4]
800630c: 2258 movs r2, #88 ; 0x58
800630e: 5a9b ldrh r3, [r3, r2]
8006310: 220a movs r2, #10
8006312: 18ba adds r2, r7, r2
8006314: 8812 ldrh r2, [r2, #0]
8006316: 429a cmp r2, r3
8006318: d300 bcc.n 800631c <HAL_UART_IRQHandler+0x270>
800631a: e0c8 b.n 80064ae <HAL_UART_IRQHandler+0x402>
{
/* Reception is not complete */
huart->RxXferCount = nb_remaining_rx_data;
800631c: 687b ldr r3, [r7, #4]
800631e: 220a movs r2, #10
8006320: 18ba adds r2, r7, r2
8006322: 215a movs r1, #90 ; 0x5a
8006324: 8812 ldrh r2, [r2, #0]
8006326: 525a strh r2, [r3, r1]
/* In Normal mode, end DMA xfer and HAL UART Rx process*/
if (HAL_IS_BIT_CLR(huart->hdmarx->Instance->CCR, DMA_CCR_CIRC))
8006328: 687b ldr r3, [r7, #4]
800632a: 6f1b ldr r3, [r3, #112] ; 0x70
800632c: 681b ldr r3, [r3, #0]
800632e: 681b ldr r3, [r3, #0]
8006330: 2220 movs r2, #32
8006332: 4013 ands r3, r2
8006334: d12a bne.n 800638c <HAL_UART_IRQHandler+0x2e0>
{
/* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */
CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
8006336: 687b ldr r3, [r7, #4]
8006338: 681b ldr r3, [r3, #0]
800633a: 687a ldr r2, [r7, #4]
800633c: 6812 ldr r2, [r2, #0]
800633e: 6812 ldr r2, [r2, #0]
8006340: 491d ldr r1, [pc, #116] ; (80063b8 <HAL_UART_IRQHandler+0x30c>)
8006342: 400a ands r2, r1
8006344: 601a str r2, [r3, #0]
CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
8006346: 687b ldr r3, [r7, #4]
8006348: 681b ldr r3, [r3, #0]
800634a: 687a ldr r2, [r7, #4]
800634c: 6812 ldr r2, [r2, #0]
800634e: 6892 ldr r2, [r2, #8]
8006350: 2101 movs r1, #1
8006352: 438a bics r2, r1
8006354: 609a str r2, [r3, #8]
/* Disable the DMA transfer for the receiver request by resetting the DMAR bit
in the UART CR3 register */
CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
8006356: 687b ldr r3, [r7, #4]
8006358: 681b ldr r3, [r3, #0]
800635a: 687a ldr r2, [r7, #4]
800635c: 6812 ldr r2, [r2, #0]
800635e: 6892 ldr r2, [r2, #8]
8006360: 2140 movs r1, #64 ; 0x40
8006362: 438a bics r2, r1
8006364: 609a str r2, [r3, #8]
/* At end of Rx process, restore huart->RxState to Ready */
huart->RxState = HAL_UART_STATE_READY;
8006366: 687b ldr r3, [r7, #4]
8006368: 2220 movs r2, #32
800636a: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
800636c: 687b ldr r3, [r7, #4]
800636e: 2200 movs r2, #0
8006370: 661a str r2, [r3, #96] ; 0x60
CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
8006372: 687b ldr r3, [r7, #4]
8006374: 681b ldr r3, [r3, #0]
8006376: 687a ldr r2, [r7, #4]
8006378: 6812 ldr r2, [r2, #0]
800637a: 6812 ldr r2, [r2, #0]
800637c: 2110 movs r1, #16
800637e: 438a bics r2, r1
8006380: 601a str r2, [r3, #0]
/* Last bytes received, so no need as the abort is immediate */
(void)HAL_DMA_Abort(huart->hdmarx);
8006382: 687b ldr r3, [r7, #4]
8006384: 6f1b ldr r3, [r3, #112] ; 0x70
8006386: 0018 movs r0, r3
8006388: f7fd fee9 bl 800415e <HAL_DMA_Abort>
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered Rx Event callback*/
huart->RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount));
#else
/*Call legacy weak Rx Event callback*/
HAL_UARTEx_RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount));
800638c: 687b ldr r3, [r7, #4]
800638e: 2258 movs r2, #88 ; 0x58
8006390: 5a9a ldrh r2, [r3, r2]
8006392: 687b ldr r3, [r7, #4]
8006394: 215a movs r1, #90 ; 0x5a
8006396: 5a5b ldrh r3, [r3, r1]
8006398: b29b uxth r3, r3
800639a: 1ad3 subs r3, r2, r3
800639c: b29a uxth r2, r3
800639e: 687b ldr r3, [r7, #4]
80063a0: 0011 movs r1, r2
80063a2: 0018 movs r0, r3
80063a4: f000 f896 bl 80064d4 <HAL_UARTEx_RxEventCallback>
#endif
}
return;
80063a8: e081 b.n 80064ae <HAL_UART_IRQHandler+0x402>
80063aa: 46c0 nop ; (mov r8, r8)
80063ac: 0000080f .word 0x0000080f
80063b0: 04000120 .word 0x04000120
80063b4: 08006db9 .word 0x08006db9
80063b8: fffffeff .word 0xfffffeff
else
{
/* DMA mode not enabled */
/* Check received length : If all expected data are received, do nothing.
Otherwise, if at least one data has already been received, IDLE event is to be notified to user */
uint16_t nb_rx_data = huart->RxXferSize - huart->RxXferCount;
80063bc: 687b ldr r3, [r7, #4]
80063be: 2258 movs r2, #88 ; 0x58
80063c0: 5a99 ldrh r1, [r3, r2]
80063c2: 687b ldr r3, [r7, #4]
80063c4: 225a movs r2, #90 ; 0x5a
80063c6: 5a9b ldrh r3, [r3, r2]
80063c8: b29a uxth r2, r3
80063ca: 2308 movs r3, #8
80063cc: 18fb adds r3, r7, r3
80063ce: 1a8a subs r2, r1, r2
80063d0: 801a strh r2, [r3, #0]
if ( (huart->RxXferCount > 0U)
80063d2: 687b ldr r3, [r7, #4]
80063d4: 225a movs r2, #90 ; 0x5a
80063d6: 5a9b ldrh r3, [r3, r2]
80063d8: b29b uxth r3, r3
80063da: 2b00 cmp r3, #0
80063dc: d100 bne.n 80063e0 <HAL_UART_IRQHandler+0x334>
80063de: e068 b.n 80064b2 <HAL_UART_IRQHandler+0x406>
&&(nb_rx_data > 0U) )
80063e0: 2308 movs r3, #8
80063e2: 18fb adds r3, r7, r3
80063e4: 881b ldrh r3, [r3, #0]
80063e6: 2b00 cmp r3, #0
80063e8: d063 beq.n 80064b2 <HAL_UART_IRQHandler+0x406>
{
/* Disable the UART Parity Error Interrupt and RXNE interrupts */
CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
80063ea: 687b ldr r3, [r7, #4]
80063ec: 681b ldr r3, [r3, #0]
80063ee: 687a ldr r2, [r7, #4]
80063f0: 6812 ldr r2, [r2, #0]
80063f2: 6812 ldr r2, [r2, #0]
80063f4: 4932 ldr r1, [pc, #200] ; (80064c0 <HAL_UART_IRQHandler+0x414>)
80063f6: 400a ands r2, r1
80063f8: 601a str r2, [r3, #0]
/* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
80063fa: 687b ldr r3, [r7, #4]
80063fc: 681b ldr r3, [r3, #0]
80063fe: 687a ldr r2, [r7, #4]
8006400: 6812 ldr r2, [r2, #0]
8006402: 6892 ldr r2, [r2, #8]
8006404: 2101 movs r1, #1
8006406: 438a bics r2, r1
8006408: 609a str r2, [r3, #8]
/* Rx process is completed, restore huart->RxState to Ready */
huart->RxState = HAL_UART_STATE_READY;
800640a: 687b ldr r3, [r7, #4]
800640c: 2220 movs r2, #32
800640e: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
8006410: 687b ldr r3, [r7, #4]
8006412: 2200 movs r2, #0
8006414: 661a str r2, [r3, #96] ; 0x60
/* Clear RxISR function pointer */
huart->RxISR = NULL;
8006416: 687b ldr r3, [r7, #4]
8006418: 2200 movs r2, #0
800641a: 665a str r2, [r3, #100] ; 0x64
CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
800641c: 687b ldr r3, [r7, #4]
800641e: 681b ldr r3, [r3, #0]
8006420: 687a ldr r2, [r7, #4]
8006422: 6812 ldr r2, [r2, #0]
8006424: 6812 ldr r2, [r2, #0]
8006426: 2110 movs r1, #16
8006428: 438a bics r2, r1
800642a: 601a str r2, [r3, #0]
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered Rx complete callback*/
huart->RxEventCallback(huart, nb_rx_data);
#else
/*Call legacy weak Rx Event callback*/
HAL_UARTEx_RxEventCallback(huart, nb_rx_data);
800642c: 2308 movs r3, #8
800642e: 18fb adds r3, r7, r3
8006430: 881a ldrh r2, [r3, #0]
8006432: 687b ldr r3, [r7, #4]
8006434: 0011 movs r1, r2
8006436: 0018 movs r0, r3
8006438: f000 f84c bl 80064d4 <HAL_UARTEx_RxEventCallback>
#endif
}
return;
800643c: e039 b.n 80064b2 <HAL_UART_IRQHandler+0x406>
}
}
/* UART wakeup from Stop mode interrupt occurred ---------------------------*/
if (((isrflags & USART_ISR_WUF) != 0U) && ((cr3its & USART_CR3_WUFIE) != 0U))
800643e: 69fa ldr r2, [r7, #28]
8006440: 2380 movs r3, #128 ; 0x80
8006442: 035b lsls r3, r3, #13
8006444: 4013 ands r3, r2
8006446: d00e beq.n 8006466 <HAL_UART_IRQHandler+0x3ba>
8006448: 697a ldr r2, [r7, #20]
800644a: 2380 movs r3, #128 ; 0x80
800644c: 03db lsls r3, r3, #15
800644e: 4013 ands r3, r2
8006450: d009 beq.n 8006466 <HAL_UART_IRQHandler+0x3ba>
{
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_WUF);
8006452: 687b ldr r3, [r7, #4]
8006454: 681b ldr r3, [r3, #0]
8006456: 2280 movs r2, #128 ; 0x80
8006458: 0352 lsls r2, r2, #13
800645a: 621a str r2, [r3, #32]
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/* Call registered Wakeup Callback */
huart->WakeupCallback(huart);
#else
/* Call legacy weak Wakeup Callback */
HAL_UARTEx_WakeupCallback(huart);
800645c: 687b ldr r3, [r7, #4]
800645e: 0018 movs r0, r3
8006460: f000 fd4d bl 8006efe <HAL_UARTEx_WakeupCallback>
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
return;
8006464: e028 b.n 80064b8 <HAL_UART_IRQHandler+0x40c>
}
/* UART in mode Transmitter ------------------------------------------------*/
if (((isrflags & USART_ISR_TXE) != 0U)
8006466: 69fb ldr r3, [r7, #28]
8006468: 2280 movs r2, #128 ; 0x80
800646a: 4013 ands r3, r2
800646c: d00d beq.n 800648a <HAL_UART_IRQHandler+0x3de>
&& ((cr1its & USART_CR1_TXEIE) != 0U))
800646e: 69bb ldr r3, [r7, #24]
8006470: 2280 movs r2, #128 ; 0x80
8006472: 4013 ands r3, r2
8006474: d009 beq.n 800648a <HAL_UART_IRQHandler+0x3de>
{
if (huart->TxISR != NULL)
8006476: 687b ldr r3, [r7, #4]
8006478: 6e9b ldr r3, [r3, #104] ; 0x68
800647a: 2b00 cmp r3, #0
800647c: d01b beq.n 80064b6 <HAL_UART_IRQHandler+0x40a>
{
huart->TxISR(huart);
800647e: 687b ldr r3, [r7, #4]
8006480: 6e9b ldr r3, [r3, #104] ; 0x68
8006482: 687a ldr r2, [r7, #4]
8006484: 0010 movs r0, r2
8006486: 4798 blx r3
}
return;
8006488: e015 b.n 80064b6 <HAL_UART_IRQHandler+0x40a>
}
/* UART in mode Transmitter (transmission end) -----------------------------*/
if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U))
800648a: 69fb ldr r3, [r7, #28]
800648c: 2240 movs r2, #64 ; 0x40
800648e: 4013 ands r3, r2
8006490: d012 beq.n 80064b8 <HAL_UART_IRQHandler+0x40c>
8006492: 69bb ldr r3, [r7, #24]
8006494: 2240 movs r2, #64 ; 0x40
8006496: 4013 ands r3, r2
8006498: d00e beq.n 80064b8 <HAL_UART_IRQHandler+0x40c>
{
UART_EndTransmit_IT(huart);
800649a: 687b ldr r3, [r7, #4]
800649c: 0018 movs r0, r3
800649e: f000 fd14 bl 8006eca <UART_EndTransmit_IT>
return;
80064a2: 46c0 nop ; (mov r8, r8)
80064a4: e008 b.n 80064b8 <HAL_UART_IRQHandler+0x40c>
return;
80064a6: 46c0 nop ; (mov r8, r8)
80064a8: e006 b.n 80064b8 <HAL_UART_IRQHandler+0x40c>
return;
80064aa: 46c0 nop ; (mov r8, r8)
80064ac: e004 b.n 80064b8 <HAL_UART_IRQHandler+0x40c>
return;
80064ae: 46c0 nop ; (mov r8, r8)
80064b0: e002 b.n 80064b8 <HAL_UART_IRQHandler+0x40c>
return;
80064b2: 46c0 nop ; (mov r8, r8)
80064b4: e000 b.n 80064b8 <HAL_UART_IRQHandler+0x40c>
return;
80064b6: 46c0 nop ; (mov r8, r8)
}
}
80064b8: 46bd mov sp, r7
80064ba: b008 add sp, #32
80064bc: bd80 pop {r7, pc}
80064be: 46c0 nop ; (mov r8, r8)
80064c0: fffffedf .word 0xfffffedf
080064c4 <HAL_UART_ErrorCallback>:
* @brief UART error callback.
* @param huart UART handle.
* @retval None
*/
__weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
80064c4: b580 push {r7, lr}
80064c6: b082 sub sp, #8
80064c8: af00 add r7, sp, #0
80064ca: 6078 str r0, [r7, #4]
UNUSED(huart);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_UART_ErrorCallback can be implemented in the user file.
*/
}
80064cc: 46c0 nop ; (mov r8, r8)
80064ce: 46bd mov sp, r7
80064d0: b002 add sp, #8
80064d2: bd80 pop {r7, pc}
080064d4 <HAL_UARTEx_RxEventCallback>:
* @param Size Number of data available in application reception buffer (indicates a position in
* reception buffer until which, data are available)
* @retval None
*/
__weak void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
80064d4: b580 push {r7, lr}
80064d6: b082 sub sp, #8
80064d8: af00 add r7, sp, #0
80064da: 6078 str r0, [r7, #4]
80064dc: 000a movs r2, r1
80064de: 1cbb adds r3, r7, #2
80064e0: 801a strh r2, [r3, #0]
UNUSED(Size);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_UARTEx_RxEventCallback can be implemented in the user file.
*/
}
80064e2: 46c0 nop ; (mov r8, r8)
80064e4: 46bd mov sp, r7
80064e6: b002 add sp, #8
80064e8: bd80 pop {r7, pc}
...
080064ec <UART_SetConfig>:
* @brief Configure the UART peripheral.
* @param huart UART handle.
* @retval HAL status
*/
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
{
80064ec: b5b0 push {r4, r5, r7, lr}
80064ee: b08e sub sp, #56 ; 0x38
80064f0: af00 add r7, sp, #0
80064f2: 61f8 str r0, [r7, #28]
uint32_t tmpreg;
uint16_t brrtemp;
UART_ClockSourceTypeDef clocksource;
uint32_t usartdiv;
HAL_StatusTypeDef ret = HAL_OK;
80064f4: 231a movs r3, #26
80064f6: 2218 movs r2, #24
80064f8: 4694 mov ip, r2
80064fa: 44bc add ip, r7
80064fc: 4463 add r3, ip
80064fe: 2200 movs r2, #0
8006500: 701a strb r2, [r3, #0]
* the UART Word Length, Parity, Mode and oversampling:
* set the M bits according to huart->Init.WordLength value
* set PCE and PS bits according to huart->Init.Parity value
* set TE and RE bits according to huart->Init.Mode value
* set OVER8 bit according to huart->Init.OverSampling value */
tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;
8006502: 69fb ldr r3, [r7, #28]
8006504: 689a ldr r2, [r3, #8]
8006506: 69fb ldr r3, [r7, #28]
8006508: 691b ldr r3, [r3, #16]
800650a: 431a orrs r2, r3
800650c: 69fb ldr r3, [r7, #28]
800650e: 695b ldr r3, [r3, #20]
8006510: 431a orrs r2, r3
8006512: 69fb ldr r3, [r7, #28]
8006514: 69db ldr r3, [r3, #28]
8006516: 4313 orrs r3, r2
8006518: 637b str r3, [r7, #52] ; 0x34
MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);
800651a: 69fb ldr r3, [r7, #28]
800651c: 681b ldr r3, [r3, #0]
800651e: 69fa ldr r2, [r7, #28]
8006520: 6812 ldr r2, [r2, #0]
8006522: 6812 ldr r2, [r2, #0]
8006524: 49c8 ldr r1, [pc, #800] ; (8006848 <UART_SetConfig+0x35c>)
8006526: 4011 ands r1, r2
8006528: 6b7a ldr r2, [r7, #52] ; 0x34
800652a: 430a orrs r2, r1
800652c: 601a str r2, [r3, #0]
/*-------------------------- USART CR2 Configuration -----------------------*/
/* Configure the UART Stop Bits: Set STOP[13:12] bits according
* to huart->Init.StopBits value */
MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
800652e: 69fb ldr r3, [r7, #28]
8006530: 681b ldr r3, [r3, #0]
8006532: 69fa ldr r2, [r7, #28]
8006534: 6812 ldr r2, [r2, #0]
8006536: 6852 ldr r2, [r2, #4]
8006538: 49c4 ldr r1, [pc, #784] ; (800684c <UART_SetConfig+0x360>)
800653a: 4011 ands r1, r2
800653c: 69fa ldr r2, [r7, #28]
800653e: 68d2 ldr r2, [r2, #12]
8006540: 430a orrs r2, r1
8006542: 605a str r2, [r3, #4]
/* Configure
* - UART HardWare Flow Control: set CTSE and RTSE bits according
* to huart->Init.HwFlowCtl value
* - one-bit sampling method versus three samples' majority rule according
* to huart->Init.OneBitSampling (not applicable to LPUART) */
tmpreg = (uint32_t)huart->Init.HwFlowCtl;
8006544: 69fb ldr r3, [r7, #28]
8006546: 699b ldr r3, [r3, #24]
8006548: 637b str r3, [r7, #52] ; 0x34
if (!(UART_INSTANCE_LOWPOWER(huart)))
800654a: 69fb ldr r3, [r7, #28]
800654c: 681b ldr r3, [r3, #0]
800654e: 4ac0 ldr r2, [pc, #768] ; (8006850 <UART_SetConfig+0x364>)
8006550: 4293 cmp r3, r2
8006552: d004 beq.n 800655e <UART_SetConfig+0x72>
{
tmpreg |= huart->Init.OneBitSampling;
8006554: 69fb ldr r3, [r7, #28]
8006556: 6a1b ldr r3, [r3, #32]
8006558: 6b7a ldr r2, [r7, #52] ; 0x34
800655a: 4313 orrs r3, r2
800655c: 637b str r3, [r7, #52] ; 0x34
}
MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);
800655e: 69fb ldr r3, [r7, #28]
8006560: 681b ldr r3, [r3, #0]
8006562: 69fa ldr r2, [r7, #28]
8006564: 6812 ldr r2, [r2, #0]
8006566: 6892 ldr r2, [r2, #8]
8006568: 49ba ldr r1, [pc, #744] ; (8006854 <UART_SetConfig+0x368>)
800656a: 4011 ands r1, r2
800656c: 6b7a ldr r2, [r7, #52] ; 0x34
800656e: 430a orrs r2, r1
8006570: 609a str r2, [r3, #8]
/*-------------------------- USART BRR Configuration -----------------------*/
UART_GETCLOCKSOURCE(huart, clocksource);
8006572: 69fb ldr r3, [r7, #28]
8006574: 681b ldr r3, [r3, #0]
8006576: 4ab8 ldr r2, [pc, #736] ; (8006858 <UART_SetConfig+0x36c>)
8006578: 4293 cmp r3, r2
800657a: d134 bne.n 80065e6 <UART_SetConfig+0xfa>
800657c: 4bb7 ldr r3, [pc, #732] ; (800685c <UART_SetConfig+0x370>)
800657e: 6cdb ldr r3, [r3, #76] ; 0x4c
8006580: 2203 movs r2, #3
8006582: 4013 ands r3, r2
8006584: 2b01 cmp r3, #1
8006586: d015 beq.n 80065b4 <UART_SetConfig+0xc8>
8006588: d304 bcc.n 8006594 <UART_SetConfig+0xa8>
800658a: 2b02 cmp r3, #2
800658c: d00a beq.n 80065a4 <UART_SetConfig+0xb8>
800658e: 2b03 cmp r3, #3
8006590: d018 beq.n 80065c4 <UART_SetConfig+0xd8>
8006592: e01f b.n 80065d4 <UART_SetConfig+0xe8>
8006594: 231b movs r3, #27
8006596: 2218 movs r2, #24
8006598: 4694 mov ip, r2
800659a: 44bc add ip, r7
800659c: 4463 add r3, ip
800659e: 2201 movs r2, #1
80065a0: 701a strb r2, [r3, #0]
80065a2: e0c5 b.n 8006730 <UART_SetConfig+0x244>
80065a4: 231b movs r3, #27
80065a6: 2218 movs r2, #24
80065a8: 4694 mov ip, r2
80065aa: 44bc add ip, r7
80065ac: 4463 add r3, ip
80065ae: 2202 movs r2, #2
80065b0: 701a strb r2, [r3, #0]
80065b2: e0bd b.n 8006730 <UART_SetConfig+0x244>
80065b4: 231b movs r3, #27
80065b6: 2218 movs r2, #24
80065b8: 4694 mov ip, r2
80065ba: 44bc add ip, r7
80065bc: 4463 add r3, ip
80065be: 2204 movs r2, #4
80065c0: 701a strb r2, [r3, #0]
80065c2: e0b5 b.n 8006730 <UART_SetConfig+0x244>
80065c4: 231b movs r3, #27
80065c6: 2218 movs r2, #24
80065c8: 4694 mov ip, r2
80065ca: 44bc add ip, r7
80065cc: 4463 add r3, ip
80065ce: 2208 movs r2, #8
80065d0: 701a strb r2, [r3, #0]
80065d2: e0ad b.n 8006730 <UART_SetConfig+0x244>
80065d4: 231b movs r3, #27
80065d6: 2218 movs r2, #24
80065d8: 4694 mov ip, r2
80065da: 44bc add ip, r7
80065dc: 4463 add r3, ip
80065de: 2210 movs r2, #16
80065e0: 701a strb r2, [r3, #0]
80065e2: 46c0 nop ; (mov r8, r8)
80065e4: e0a4 b.n 8006730 <UART_SetConfig+0x244>
80065e6: 69fb ldr r3, [r7, #28]
80065e8: 681b ldr r3, [r3, #0]
80065ea: 4a9d ldr r2, [pc, #628] ; (8006860 <UART_SetConfig+0x374>)
80065ec: 4293 cmp r3, r2
80065ee: d137 bne.n 8006660 <UART_SetConfig+0x174>
80065f0: 4b9a ldr r3, [pc, #616] ; (800685c <UART_SetConfig+0x370>)
80065f2: 6cdb ldr r3, [r3, #76] ; 0x4c
80065f4: 220c movs r2, #12
80065f6: 4013 ands r3, r2
80065f8: 2b04 cmp r3, #4
80065fa: d018 beq.n 800662e <UART_SetConfig+0x142>
80065fc: d802 bhi.n 8006604 <UART_SetConfig+0x118>
80065fe: 2b00 cmp r3, #0
8006600: d005 beq.n 800660e <UART_SetConfig+0x122>
8006602: e024 b.n 800664e <UART_SetConfig+0x162>
8006604: 2b08 cmp r3, #8
8006606: d00a beq.n 800661e <UART_SetConfig+0x132>
8006608: 2b0c cmp r3, #12
800660a: d018 beq.n 800663e <UART_SetConfig+0x152>
800660c: e01f b.n 800664e <UART_SetConfig+0x162>
800660e: 231b movs r3, #27
8006610: 2218 movs r2, #24
8006612: 4694 mov ip, r2
8006614: 44bc add ip, r7
8006616: 4463 add r3, ip
8006618: 2200 movs r2, #0
800661a: 701a strb r2, [r3, #0]
800661c: e088 b.n 8006730 <UART_SetConfig+0x244>
800661e: 231b movs r3, #27
8006620: 2218 movs r2, #24
8006622: 4694 mov ip, r2
8006624: 44bc add ip, r7
8006626: 4463 add r3, ip
8006628: 2202 movs r2, #2
800662a: 701a strb r2, [r3, #0]
800662c: e080 b.n 8006730 <UART_SetConfig+0x244>
800662e: 231b movs r3, #27
8006630: 2218 movs r2, #24
8006632: 4694 mov ip, r2
8006634: 44bc add ip, r7
8006636: 4463 add r3, ip
8006638: 2204 movs r2, #4
800663a: 701a strb r2, [r3, #0]
800663c: e078 b.n 8006730 <UART_SetConfig+0x244>
800663e: 231b movs r3, #27
8006640: 2218 movs r2, #24
8006642: 4694 mov ip, r2
8006644: 44bc add ip, r7
8006646: 4463 add r3, ip
8006648: 2208 movs r2, #8
800664a: 701a strb r2, [r3, #0]
800664c: e070 b.n 8006730 <UART_SetConfig+0x244>
800664e: 231b movs r3, #27
8006650: 2218 movs r2, #24
8006652: 4694 mov ip, r2
8006654: 44bc add ip, r7
8006656: 4463 add r3, ip
8006658: 2210 movs r2, #16
800665a: 701a strb r2, [r3, #0]
800665c: 46c0 nop ; (mov r8, r8)
800665e: e067 b.n 8006730 <UART_SetConfig+0x244>
8006660: 69fb ldr r3, [r7, #28]
8006662: 681b ldr r3, [r3, #0]
8006664: 4a7f ldr r2, [pc, #508] ; (8006864 <UART_SetConfig+0x378>)
8006666: 4293 cmp r3, r2
8006668: d107 bne.n 800667a <UART_SetConfig+0x18e>
800666a: 231b movs r3, #27
800666c: 2218 movs r2, #24
800666e: 4694 mov ip, r2
8006670: 44bc add ip, r7
8006672: 4463 add r3, ip
8006674: 2200 movs r2, #0
8006676: 701a strb r2, [r3, #0]
8006678: e05a b.n 8006730 <UART_SetConfig+0x244>
800667a: 69fb ldr r3, [r7, #28]
800667c: 681b ldr r3, [r3, #0]
800667e: 4a7a ldr r2, [pc, #488] ; (8006868 <UART_SetConfig+0x37c>)
8006680: 4293 cmp r3, r2
8006682: d107 bne.n 8006694 <UART_SetConfig+0x1a8>
8006684: 231b movs r3, #27
8006686: 2218 movs r2, #24
8006688: 4694 mov ip, r2
800668a: 44bc add ip, r7
800668c: 4463 add r3, ip
800668e: 2200 movs r2, #0
8006690: 701a strb r2, [r3, #0]
8006692: e04d b.n 8006730 <UART_SetConfig+0x244>
8006694: 69fb ldr r3, [r7, #28]
8006696: 681b ldr r3, [r3, #0]
8006698: 4a6d ldr r2, [pc, #436] ; (8006850 <UART_SetConfig+0x364>)
800669a: 4293 cmp r3, r2
800669c: d141 bne.n 8006722 <UART_SetConfig+0x236>
800669e: 4b6f ldr r3, [pc, #444] ; (800685c <UART_SetConfig+0x370>)
80066a0: 6cda ldr r2, [r3, #76] ; 0x4c
80066a2: 23c0 movs r3, #192 ; 0xc0
80066a4: 011b lsls r3, r3, #4
80066a6: 4013 ands r3, r2
80066a8: 2280 movs r2, #128 ; 0x80
80066aa: 00d2 lsls r2, r2, #3
80066ac: 4293 cmp r3, r2
80066ae: d01f beq.n 80066f0 <UART_SetConfig+0x204>
80066b0: 2280 movs r2, #128 ; 0x80
80066b2: 00d2 lsls r2, r2, #3
80066b4: 4293 cmp r3, r2
80066b6: d802 bhi.n 80066be <UART_SetConfig+0x1d2>
80066b8: 2b00 cmp r3, #0
80066ba: d009 beq.n 80066d0 <UART_SetConfig+0x1e4>
80066bc: e028 b.n 8006710 <UART_SetConfig+0x224>
80066be: 2280 movs r2, #128 ; 0x80
80066c0: 0112 lsls r2, r2, #4
80066c2: 4293 cmp r3, r2
80066c4: d00c beq.n 80066e0 <UART_SetConfig+0x1f4>
80066c6: 22c0 movs r2, #192 ; 0xc0
80066c8: 0112 lsls r2, r2, #4
80066ca: 4293 cmp r3, r2
80066cc: d018 beq.n 8006700 <UART_SetConfig+0x214>
80066ce: e01f b.n 8006710 <UART_SetConfig+0x224>
80066d0: 231b movs r3, #27
80066d2: 2218 movs r2, #24
80066d4: 4694 mov ip, r2
80066d6: 44bc add ip, r7
80066d8: 4463 add r3, ip
80066da: 2200 movs r2, #0
80066dc: 701a strb r2, [r3, #0]
80066de: e027 b.n 8006730 <UART_SetConfig+0x244>
80066e0: 231b movs r3, #27
80066e2: 2218 movs r2, #24
80066e4: 4694 mov ip, r2
80066e6: 44bc add ip, r7
80066e8: 4463 add r3, ip
80066ea: 2202 movs r2, #2
80066ec: 701a strb r2, [r3, #0]
80066ee: e01f b.n 8006730 <UART_SetConfig+0x244>
80066f0: 231b movs r3, #27
80066f2: 2218 movs r2, #24
80066f4: 4694 mov ip, r2
80066f6: 44bc add ip, r7
80066f8: 4463 add r3, ip
80066fa: 2204 movs r2, #4
80066fc: 701a strb r2, [r3, #0]
80066fe: e017 b.n 8006730 <UART_SetConfig+0x244>
8006700: 231b movs r3, #27
8006702: 2218 movs r2, #24
8006704: 4694 mov ip, r2
8006706: 44bc add ip, r7
8006708: 4463 add r3, ip
800670a: 2208 movs r2, #8
800670c: 701a strb r2, [r3, #0]
800670e: e00f b.n 8006730 <UART_SetConfig+0x244>
8006710: 231b movs r3, #27
8006712: 2218 movs r2, #24
8006714: 4694 mov ip, r2
8006716: 44bc add ip, r7
8006718: 4463 add r3, ip
800671a: 2210 movs r2, #16
800671c: 701a strb r2, [r3, #0]
800671e: 46c0 nop ; (mov r8, r8)
8006720: e006 b.n 8006730 <UART_SetConfig+0x244>
8006722: 231b movs r3, #27
8006724: 2218 movs r2, #24
8006726: 4694 mov ip, r2
8006728: 44bc add ip, r7
800672a: 4463 add r3, ip
800672c: 2210 movs r2, #16
800672e: 701a strb r2, [r3, #0]
/* Check LPUART instance */
if (UART_INSTANCE_LOWPOWER(huart))
8006730: 69fb ldr r3, [r7, #28]
8006732: 681b ldr r3, [r3, #0]
8006734: 4a46 ldr r2, [pc, #280] ; (8006850 <UART_SetConfig+0x364>)
8006736: 4293 cmp r3, r2
8006738: d000 beq.n 800673c <UART_SetConfig+0x250>
800673a: e09f b.n 800687c <UART_SetConfig+0x390>
{
/* Retrieve frequency clock */
switch (clocksource)
800673c: 231b movs r3, #27
800673e: 2218 movs r2, #24
8006740: 4694 mov ip, r2
8006742: 44bc add ip, r7
8006744: 4463 add r3, ip
8006746: 781b ldrb r3, [r3, #0]
8006748: 2b02 cmp r3, #2
800674a: d00d beq.n 8006768 <UART_SetConfig+0x27c>
800674c: dc02 bgt.n 8006754 <UART_SetConfig+0x268>
800674e: 2b00 cmp r3, #0
8006750: d005 beq.n 800675e <UART_SetConfig+0x272>
8006752: e01d b.n 8006790 <UART_SetConfig+0x2a4>
8006754: 2b04 cmp r3, #4
8006756: d012 beq.n 800677e <UART_SetConfig+0x292>
8006758: 2b08 cmp r3, #8
800675a: d015 beq.n 8006788 <UART_SetConfig+0x29c>
800675c: e018 b.n 8006790 <UART_SetConfig+0x2a4>
{
case UART_CLOCKSOURCE_PCLK1:
pclk = HAL_RCC_GetPCLK1Freq();
800675e: f7fe ffd5 bl 800570c <HAL_RCC_GetPCLK1Freq>
8006762: 0003 movs r3, r0
8006764: 62fb str r3, [r7, #44] ; 0x2c
break;
8006766: e01d b.n 80067a4 <UART_SetConfig+0x2b8>
case UART_CLOCKSOURCE_HSI:
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)
8006768: 4b3c ldr r3, [pc, #240] ; (800685c <UART_SetConfig+0x370>)
800676a: 681b ldr r3, [r3, #0]
800676c: 2210 movs r2, #16
800676e: 4013 ands r3, r2
8006770: d002 beq.n 8006778 <UART_SetConfig+0x28c>
{
pclk = (uint32_t)(HSI_VALUE >> 2U);
8006772: 4b3e ldr r3, [pc, #248] ; (800686c <UART_SetConfig+0x380>)
8006774: 62fb str r3, [r7, #44] ; 0x2c
}
else
{
pclk = (uint32_t) HSI_VALUE;
}
break;
8006776: e015 b.n 80067a4 <UART_SetConfig+0x2b8>
pclk = (uint32_t) HSI_VALUE;
8006778: 4b3d ldr r3, [pc, #244] ; (8006870 <UART_SetConfig+0x384>)
800677a: 62fb str r3, [r7, #44] ; 0x2c
break;
800677c: e012 b.n 80067a4 <UART_SetConfig+0x2b8>
case UART_CLOCKSOURCE_SYSCLK:
pclk = HAL_RCC_GetSysClockFreq();
800677e: f7fe ff19 bl 80055b4 <HAL_RCC_GetSysClockFreq>
8006782: 0003 movs r3, r0
8006784: 62fb str r3, [r7, #44] ; 0x2c
break;
8006786: e00d b.n 80067a4 <UART_SetConfig+0x2b8>
case UART_CLOCKSOURCE_LSE:
pclk = (uint32_t) LSE_VALUE;
8006788: 2380 movs r3, #128 ; 0x80
800678a: 021b lsls r3, r3, #8
800678c: 62fb str r3, [r7, #44] ; 0x2c
break;
800678e: e009 b.n 80067a4 <UART_SetConfig+0x2b8>
default:
pclk = 0U;
8006790: 2300 movs r3, #0
8006792: 62fb str r3, [r7, #44] ; 0x2c
ret = HAL_ERROR;
8006794: 231a movs r3, #26
8006796: 2218 movs r2, #24
8006798: 4694 mov ip, r2
800679a: 44bc add ip, r7
800679c: 4463 add r3, ip
800679e: 2201 movs r2, #1
80067a0: 701a strb r2, [r3, #0]
break;
80067a2: 46c0 nop ; (mov r8, r8)
}
/* If proper clock source reported */
if (pclk != 0U)
80067a4: 6afb ldr r3, [r7, #44] ; 0x2c
80067a6: 2b00 cmp r3, #0
80067a8: d100 bne.n 80067ac <UART_SetConfig+0x2c0>
80067aa: e145 b.n 8006a38 <UART_SetConfig+0x54c>
{
/* No Prescaler applicable */
/* Ensure that Frequency clock is in the range [3 * baudrate, 4096 * baudrate] */
if ((pclk < (3U * huart->Init.BaudRate)) ||
80067ac: 69fb ldr r3, [r7, #28]
80067ae: 685a ldr r2, [r3, #4]
80067b0: 0013 movs r3, r2
80067b2: 005b lsls r3, r3, #1
80067b4: 189a adds r2, r3, r2
80067b6: 6afb ldr r3, [r7, #44] ; 0x2c
80067b8: 429a cmp r2, r3
80067ba: d805 bhi.n 80067c8 <UART_SetConfig+0x2dc>
(pclk > (4096U * huart->Init.BaudRate)))
80067bc: 69fb ldr r3, [r7, #28]
80067be: 685b ldr r3, [r3, #4]
80067c0: 031a lsls r2, r3, #12
if ((pclk < (3U * huart->Init.BaudRate)) ||
80067c2: 6afb ldr r3, [r7, #44] ; 0x2c
80067c4: 429a cmp r2, r3
80067c6: d207 bcs.n 80067d8 <UART_SetConfig+0x2ec>
{
ret = HAL_ERROR;
80067c8: 231a movs r3, #26
80067ca: 2218 movs r2, #24
80067cc: 4694 mov ip, r2
80067ce: 44bc add ip, r7
80067d0: 4463 add r3, ip
80067d2: 2201 movs r2, #1
80067d4: 701a strb r2, [r3, #0]
80067d6: e12f b.n 8006a38 <UART_SetConfig+0x54c>
}
else
{
usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate));
80067d8: 6afb ldr r3, [r7, #44] ; 0x2c
80067da: 613b str r3, [r7, #16]
80067dc: 2300 movs r3, #0
80067de: 617b str r3, [r7, #20]
80067e0: 6939 ldr r1, [r7, #16]
80067e2: 697a ldr r2, [r7, #20]
80067e4: 000b movs r3, r1
80067e6: 0e1b lsrs r3, r3, #24
80067e8: 0010 movs r0, r2
80067ea: 0205 lsls r5, r0, #8
80067ec: 431d orrs r5, r3
80067ee: 000b movs r3, r1
80067f0: 021c lsls r4, r3, #8
80067f2: 69fb ldr r3, [r7, #28]
80067f4: 685b ldr r3, [r3, #4]
80067f6: 085b lsrs r3, r3, #1
80067f8: 60bb str r3, [r7, #8]
80067fa: 2300 movs r3, #0
80067fc: 60fb str r3, [r7, #12]
80067fe: 68b8 ldr r0, [r7, #8]
8006800: 68f9 ldr r1, [r7, #12]
8006802: 1900 adds r0, r0, r4
8006804: 4169 adcs r1, r5
8006806: 69fb ldr r3, [r7, #28]
8006808: 685b ldr r3, [r3, #4]
800680a: 603b str r3, [r7, #0]
800680c: 2300 movs r3, #0
800680e: 607b str r3, [r7, #4]
8006810: 683a ldr r2, [r7, #0]
8006812: 687b ldr r3, [r7, #4]
8006814: f7f9 fd7c bl 8000310 <__aeabi_uldivmod>
8006818: 0003 movs r3, r0
800681a: 000c movs r4, r1
800681c: 62bb str r3, [r7, #40] ; 0x28
if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX))
800681e: 6abb ldr r3, [r7, #40] ; 0x28
8006820: 4a14 ldr r2, [pc, #80] ; (8006874 <UART_SetConfig+0x388>)
8006822: 4293 cmp r3, r2
8006824: d908 bls.n 8006838 <UART_SetConfig+0x34c>
8006826: 6abb ldr r3, [r7, #40] ; 0x28
8006828: 4a13 ldr r2, [pc, #76] ; (8006878 <UART_SetConfig+0x38c>)
800682a: 4293 cmp r3, r2
800682c: d804 bhi.n 8006838 <UART_SetConfig+0x34c>
{
huart->Instance->BRR = usartdiv;
800682e: 69fb ldr r3, [r7, #28]
8006830: 681b ldr r3, [r3, #0]
8006832: 6aba ldr r2, [r7, #40] ; 0x28
8006834: 60da str r2, [r3, #12]
8006836: e0ff b.n 8006a38 <UART_SetConfig+0x54c>
}
else
{
ret = HAL_ERROR;
8006838: 231a movs r3, #26
800683a: 2218 movs r2, #24
800683c: 4694 mov ip, r2
800683e: 44bc add ip, r7
8006840: 4463 add r3, ip
8006842: 2201 movs r2, #1
8006844: 701a strb r2, [r3, #0]
8006846: e0f7 b.n 8006a38 <UART_SetConfig+0x54c>
8006848: efff69f3 .word 0xefff69f3
800684c: ffffcfff .word 0xffffcfff
8006850: 40004800 .word 0x40004800
8006854: fffff4ff .word 0xfffff4ff
8006858: 40013800 .word 0x40013800
800685c: 40021000 .word 0x40021000
8006860: 40004400 .word 0x40004400
8006864: 40004c00 .word 0x40004c00
8006868: 40005000 .word 0x40005000
800686c: 003d0900 .word 0x003d0900
8006870: 00f42400 .word 0x00f42400
8006874: 000002ff .word 0x000002ff
8006878: 000fffff .word 0x000fffff
}
} /* if ( (pclk < (3 * huart->Init.BaudRate) ) || (pclk > (4096 * huart->Init.BaudRate) )) */
} /* if (pclk != 0) */
}
/* Check UART Over Sampling to set Baud Rate Register */
else if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
800687c: 69fb ldr r3, [r7, #28]
800687e: 69da ldr r2, [r3, #28]
8006880: 2380 movs r3, #128 ; 0x80
8006882: 021b lsls r3, r3, #8
8006884: 429a cmp r2, r3
8006886: d000 beq.n 800688a <UART_SetConfig+0x39e>
8006888: e07d b.n 8006986 <UART_SetConfig+0x49a>
{
switch (clocksource)
800688a: 231b movs r3, #27
800688c: 2218 movs r2, #24
800688e: 4694 mov ip, r2
8006890: 44bc add ip, r7
8006892: 4463 add r3, ip
8006894: 781b ldrb r3, [r3, #0]
8006896: 2b08 cmp r3, #8
8006898: d822 bhi.n 80068e0 <UART_SetConfig+0x3f4>
800689a: 009a lsls r2, r3, #2
800689c: 4b6e ldr r3, [pc, #440] ; (8006a58 <UART_SetConfig+0x56c>)
800689e: 18d3 adds r3, r2, r3
80068a0: 681b ldr r3, [r3, #0]
80068a2: 469f mov pc, r3
{
case UART_CLOCKSOURCE_PCLK1:
pclk = HAL_RCC_GetPCLK1Freq();
80068a4: f7fe ff32 bl 800570c <HAL_RCC_GetPCLK1Freq>
80068a8: 0003 movs r3, r0
80068aa: 62fb str r3, [r7, #44] ; 0x2c
break;
80068ac: e022 b.n 80068f4 <UART_SetConfig+0x408>
case UART_CLOCKSOURCE_PCLK2:
pclk = HAL_RCC_GetPCLK2Freq();
80068ae: f7fe ff43 bl 8005738 <HAL_RCC_GetPCLK2Freq>
80068b2: 0003 movs r3, r0
80068b4: 62fb str r3, [r7, #44] ; 0x2c
break;
80068b6: e01d b.n 80068f4 <UART_SetConfig+0x408>
case UART_CLOCKSOURCE_HSI:
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)
80068b8: 4b68 ldr r3, [pc, #416] ; (8006a5c <UART_SetConfig+0x570>)
80068ba: 681b ldr r3, [r3, #0]
80068bc: 2210 movs r2, #16
80068be: 4013 ands r3, r2
80068c0: d002 beq.n 80068c8 <UART_SetConfig+0x3dc>
{
pclk = (uint32_t)(HSI_VALUE >> 2U);
80068c2: 4b67 ldr r3, [pc, #412] ; (8006a60 <UART_SetConfig+0x574>)
80068c4: 62fb str r3, [r7, #44] ; 0x2c
}
else
{
pclk = (uint32_t) HSI_VALUE;
}
break;
80068c6: e015 b.n 80068f4 <UART_SetConfig+0x408>
pclk = (uint32_t) HSI_VALUE;
80068c8: 4b66 ldr r3, [pc, #408] ; (8006a64 <UART_SetConfig+0x578>)
80068ca: 62fb str r3, [r7, #44] ; 0x2c
break;
80068cc: e012 b.n 80068f4 <UART_SetConfig+0x408>
case UART_CLOCKSOURCE_SYSCLK:
pclk = HAL_RCC_GetSysClockFreq();
80068ce: f7fe fe71 bl 80055b4 <HAL_RCC_GetSysClockFreq>
80068d2: 0003 movs r3, r0
80068d4: 62fb str r3, [r7, #44] ; 0x2c
break;
80068d6: e00d b.n 80068f4 <UART_SetConfig+0x408>
case UART_CLOCKSOURCE_LSE:
pclk = (uint32_t) LSE_VALUE;
80068d8: 2380 movs r3, #128 ; 0x80
80068da: 021b lsls r3, r3, #8
80068dc: 62fb str r3, [r7, #44] ; 0x2c
break;
80068de: e009 b.n 80068f4 <UART_SetConfig+0x408>
default:
pclk = 0U;
80068e0: 2300 movs r3, #0
80068e2: 62fb str r3, [r7, #44] ; 0x2c
ret = HAL_ERROR;
80068e4: 231a movs r3, #26
80068e6: 2218 movs r2, #24
80068e8: 4694 mov ip, r2
80068ea: 44bc add ip, r7
80068ec: 4463 add r3, ip
80068ee: 2201 movs r2, #1
80068f0: 701a strb r2, [r3, #0]
break;
80068f2: 46c0 nop ; (mov r8, r8)
}
/* USARTDIV must be greater than or equal to 0d16 */
if (pclk != 0U)
80068f4: 6afb ldr r3, [r7, #44] ; 0x2c
80068f6: 2b00 cmp r3, #0
80068f8: d100 bne.n 80068fc <UART_SetConfig+0x410>
80068fa: e09d b.n 8006a38 <UART_SetConfig+0x54c>
{
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate));
80068fc: 6afb ldr r3, [r7, #44] ; 0x2c
80068fe: 005a lsls r2, r3, #1
8006900: 69fb ldr r3, [r7, #28]
8006902: 685b ldr r3, [r3, #4]
8006904: 085b lsrs r3, r3, #1
8006906: 18d2 adds r2, r2, r3
8006908: 69fb ldr r3, [r7, #28]
800690a: 685b ldr r3, [r3, #4]
800690c: 0019 movs r1, r3
800690e: 0010 movs r0, r2
8006910: f7f9 fbfa bl 8000108 <__udivsi3>
8006914: 0003 movs r3, r0
8006916: b29b uxth r3, r3
8006918: 62bb str r3, [r7, #40] ; 0x28
if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
800691a: 6abb ldr r3, [r7, #40] ; 0x28
800691c: 2b0f cmp r3, #15
800691e: d92a bls.n 8006976 <UART_SetConfig+0x48a>
8006920: 6abb ldr r3, [r7, #40] ; 0x28
8006922: 4a51 ldr r2, [pc, #324] ; (8006a68 <UART_SetConfig+0x57c>)
8006924: 4293 cmp r3, r2
8006926: d826 bhi.n 8006976 <UART_SetConfig+0x48a>
{
brrtemp = (uint16_t)(usartdiv & 0xFFF0U);
8006928: 6abb ldr r3, [r7, #40] ; 0x28
800692a: b29a uxth r2, r3
800692c: 230e movs r3, #14
800692e: 2118 movs r1, #24
8006930: 468c mov ip, r1
8006932: 44bc add ip, r7
8006934: 4463 add r3, ip
8006936: 210f movs r1, #15
8006938: 438a bics r2, r1
800693a: 801a strh r2, [r3, #0]
brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);
800693c: 6abb ldr r3, [r7, #40] ; 0x28
800693e: 085b lsrs r3, r3, #1
8006940: b29b uxth r3, r3
8006942: 2207 movs r2, #7
8006944: 4013 ands r3, r2
8006946: b299 uxth r1, r3
8006948: 230e movs r3, #14
800694a: 2218 movs r2, #24
800694c: 4694 mov ip, r2
800694e: 44bc add ip, r7
8006950: 4463 add r3, ip
8006952: 220e movs r2, #14
8006954: 2018 movs r0, #24
8006956: 4684 mov ip, r0
8006958: 44bc add ip, r7
800695a: 4462 add r2, ip
800695c: 8812 ldrh r2, [r2, #0]
800695e: 430a orrs r2, r1
8006960: 801a strh r2, [r3, #0]
huart->Instance->BRR = brrtemp;
8006962: 69fb ldr r3, [r7, #28]
8006964: 681b ldr r3, [r3, #0]
8006966: 220e movs r2, #14
8006968: 2118 movs r1, #24
800696a: 468c mov ip, r1
800696c: 44bc add ip, r7
800696e: 4462 add r2, ip
8006970: 8812 ldrh r2, [r2, #0]
8006972: 60da str r2, [r3, #12]
8006974: e060 b.n 8006a38 <UART_SetConfig+0x54c>
}
else
{
ret = HAL_ERROR;
8006976: 231a movs r3, #26
8006978: 2218 movs r2, #24
800697a: 4694 mov ip, r2
800697c: 44bc add ip, r7
800697e: 4463 add r3, ip
8006980: 2201 movs r2, #1
8006982: 701a strb r2, [r3, #0]
8006984: e058 b.n 8006a38 <UART_SetConfig+0x54c>
}
}
}
else
{
switch (clocksource)
8006986: 231b movs r3, #27
8006988: 2218 movs r2, #24
800698a: 4694 mov ip, r2
800698c: 44bc add ip, r7
800698e: 4463 add r3, ip
8006990: 781b ldrb r3, [r3, #0]
8006992: 2b08 cmp r3, #8
8006994: d822 bhi.n 80069dc <UART_SetConfig+0x4f0>
8006996: 009a lsls r2, r3, #2
8006998: 4b34 ldr r3, [pc, #208] ; (8006a6c <UART_SetConfig+0x580>)
800699a: 18d3 adds r3, r2, r3
800699c: 681b ldr r3, [r3, #0]
800699e: 469f mov pc, r3
{
case UART_CLOCKSOURCE_PCLK1:
pclk = HAL_RCC_GetPCLK1Freq();
80069a0: f7fe feb4 bl 800570c <HAL_RCC_GetPCLK1Freq>
80069a4: 0003 movs r3, r0
80069a6: 62fb str r3, [r7, #44] ; 0x2c
break;
80069a8: e022 b.n 80069f0 <UART_SetConfig+0x504>
case UART_CLOCKSOURCE_PCLK2:
pclk = HAL_RCC_GetPCLK2Freq();
80069aa: f7fe fec5 bl 8005738 <HAL_RCC_GetPCLK2Freq>
80069ae: 0003 movs r3, r0
80069b0: 62fb str r3, [r7, #44] ; 0x2c
break;
80069b2: e01d b.n 80069f0 <UART_SetConfig+0x504>
case UART_CLOCKSOURCE_HSI:
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U)
80069b4: 4b29 ldr r3, [pc, #164] ; (8006a5c <UART_SetConfig+0x570>)
80069b6: 681b ldr r3, [r3, #0]
80069b8: 2210 movs r2, #16
80069ba: 4013 ands r3, r2
80069bc: d002 beq.n 80069c4 <UART_SetConfig+0x4d8>
{
pclk = (uint32_t)(HSI_VALUE >> 2U);
80069be: 4b28 ldr r3, [pc, #160] ; (8006a60 <UART_SetConfig+0x574>)
80069c0: 62fb str r3, [r7, #44] ; 0x2c
}
else
{
pclk = (uint32_t) HSI_VALUE;
}
break;
80069c2: e015 b.n 80069f0 <UART_SetConfig+0x504>
pclk = (uint32_t) HSI_VALUE;
80069c4: 4b27 ldr r3, [pc, #156] ; (8006a64 <UART_SetConfig+0x578>)
80069c6: 62fb str r3, [r7, #44] ; 0x2c
break;
80069c8: e012 b.n 80069f0 <UART_SetConfig+0x504>
case UART_CLOCKSOURCE_SYSCLK:
pclk = HAL_RCC_GetSysClockFreq();
80069ca: f7fe fdf3 bl 80055b4 <HAL_RCC_GetSysClockFreq>
80069ce: 0003 movs r3, r0
80069d0: 62fb str r3, [r7, #44] ; 0x2c
break;
80069d2: e00d b.n 80069f0 <UART_SetConfig+0x504>
case UART_CLOCKSOURCE_LSE:
pclk = (uint32_t) LSE_VALUE;
80069d4: 2380 movs r3, #128 ; 0x80
80069d6: 021b lsls r3, r3, #8
80069d8: 62fb str r3, [r7, #44] ; 0x2c
break;
80069da: e009 b.n 80069f0 <UART_SetConfig+0x504>
default:
pclk = 0U;
80069dc: 2300 movs r3, #0
80069de: 62fb str r3, [r7, #44] ; 0x2c
ret = HAL_ERROR;
80069e0: 231a movs r3, #26
80069e2: 2218 movs r2, #24
80069e4: 4694 mov ip, r2
80069e6: 44bc add ip, r7
80069e8: 4463 add r3, ip
80069ea: 2201 movs r2, #1
80069ec: 701a strb r2, [r3, #0]
break;
80069ee: 46c0 nop ; (mov r8, r8)
}
if (pclk != 0U)
80069f0: 6afb ldr r3, [r7, #44] ; 0x2c
80069f2: 2b00 cmp r3, #0
80069f4: d020 beq.n 8006a38 <UART_SetConfig+0x54c>
{
/* USARTDIV must be greater than or equal to 0d16 */
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate));
80069f6: 69fb ldr r3, [r7, #28]
80069f8: 685b ldr r3, [r3, #4]
80069fa: 085a lsrs r2, r3, #1
80069fc: 6afb ldr r3, [r7, #44] ; 0x2c
80069fe: 18d2 adds r2, r2, r3
8006a00: 69fb ldr r3, [r7, #28]
8006a02: 685b ldr r3, [r3, #4]
8006a04: 0019 movs r1, r3
8006a06: 0010 movs r0, r2
8006a08: f7f9 fb7e bl 8000108 <__udivsi3>
8006a0c: 0003 movs r3, r0
8006a0e: b29b uxth r3, r3
8006a10: 62bb str r3, [r7, #40] ; 0x28
if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
8006a12: 6abb ldr r3, [r7, #40] ; 0x28
8006a14: 2b0f cmp r3, #15
8006a16: d908 bls.n 8006a2a <UART_SetConfig+0x53e>
8006a18: 6abb ldr r3, [r7, #40] ; 0x28
8006a1a: 4a13 ldr r2, [pc, #76] ; (8006a68 <UART_SetConfig+0x57c>)
8006a1c: 4293 cmp r3, r2
8006a1e: d804 bhi.n 8006a2a <UART_SetConfig+0x53e>
{
huart->Instance->BRR = usartdiv;
8006a20: 69fb ldr r3, [r7, #28]
8006a22: 681b ldr r3, [r3, #0]
8006a24: 6aba ldr r2, [r7, #40] ; 0x28
8006a26: 60da str r2, [r3, #12]
8006a28: e006 b.n 8006a38 <UART_SetConfig+0x54c>
}
else
{
ret = HAL_ERROR;
8006a2a: 231a movs r3, #26
8006a2c: 2218 movs r2, #24
8006a2e: 4694 mov ip, r2
8006a30: 44bc add ip, r7
8006a32: 4463 add r3, ip
8006a34: 2201 movs r2, #1
8006a36: 701a strb r2, [r3, #0]
}
}
/* Clear ISR function pointers */
huart->RxISR = NULL;
8006a38: 69fb ldr r3, [r7, #28]
8006a3a: 2200 movs r2, #0
8006a3c: 665a str r2, [r3, #100] ; 0x64
huart->TxISR = NULL;
8006a3e: 69fb ldr r3, [r7, #28]
8006a40: 2200 movs r2, #0
8006a42: 669a str r2, [r3, #104] ; 0x68
return ret;
8006a44: 231a movs r3, #26
8006a46: 2218 movs r2, #24
8006a48: 4694 mov ip, r2
8006a4a: 44bc add ip, r7
8006a4c: 4463 add r3, ip
8006a4e: 781b ldrb r3, [r3, #0]
}
8006a50: 0018 movs r0, r3
8006a52: 46bd mov sp, r7
8006a54: b00e add sp, #56 ; 0x38
8006a56: bdb0 pop {r4, r5, r7, pc}
8006a58: 08007444 .word 0x08007444
8006a5c: 40021000 .word 0x40021000
8006a60: 003d0900 .word 0x003d0900
8006a64: 00f42400 .word 0x00f42400
8006a68: 0000ffff .word 0x0000ffff
8006a6c: 08007468 .word 0x08007468
08006a70 <UART_AdvFeatureConfig>:
* @brief Configure the UART peripheral advanced features.
* @param huart UART handle.
* @retval None
*/
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
{
8006a70: b580 push {r7, lr}
8006a72: b082 sub sp, #8
8006a74: af00 add r7, sp, #0
8006a76: 6078 str r0, [r7, #4]
/* Check whether the set of advanced features to configure is properly set */
assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit));
/* if required, configure TX pin active level inversion */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT))
8006a78: 687b ldr r3, [r7, #4]
8006a7a: 6a5b ldr r3, [r3, #36] ; 0x24
8006a7c: 2201 movs r2, #1
8006a7e: 4013 ands r3, r2
8006a80: d00a beq.n 8006a98 <UART_AdvFeatureConfig+0x28>
{
assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert));
MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert);
8006a82: 687b ldr r3, [r7, #4]
8006a84: 681b ldr r3, [r3, #0]
8006a86: 687a ldr r2, [r7, #4]
8006a88: 6812 ldr r2, [r2, #0]
8006a8a: 6852 ldr r2, [r2, #4]
8006a8c: 4945 ldr r1, [pc, #276] ; (8006ba4 <UART_AdvFeatureConfig+0x134>)
8006a8e: 4011 ands r1, r2
8006a90: 687a ldr r2, [r7, #4]
8006a92: 6a92 ldr r2, [r2, #40] ; 0x28
8006a94: 430a orrs r2, r1
8006a96: 605a str r2, [r3, #4]
}
/* if required, configure RX pin active level inversion */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT))
8006a98: 687b ldr r3, [r7, #4]
8006a9a: 6a5b ldr r3, [r3, #36] ; 0x24
8006a9c: 2202 movs r2, #2
8006a9e: 4013 ands r3, r2
8006aa0: d00a beq.n 8006ab8 <UART_AdvFeatureConfig+0x48>
{
assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert));
MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert);
8006aa2: 687b ldr r3, [r7, #4]
8006aa4: 681b ldr r3, [r3, #0]
8006aa6: 687a ldr r2, [r7, #4]
8006aa8: 6812 ldr r2, [r2, #0]
8006aaa: 6852 ldr r2, [r2, #4]
8006aac: 493e ldr r1, [pc, #248] ; (8006ba8 <UART_AdvFeatureConfig+0x138>)
8006aae: 4011 ands r1, r2
8006ab0: 687a ldr r2, [r7, #4]
8006ab2: 6ad2 ldr r2, [r2, #44] ; 0x2c
8006ab4: 430a orrs r2, r1
8006ab6: 605a str r2, [r3, #4]
}
/* if required, configure data inversion */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT))
8006ab8: 687b ldr r3, [r7, #4]
8006aba: 6a5b ldr r3, [r3, #36] ; 0x24
8006abc: 2204 movs r2, #4
8006abe: 4013 ands r3, r2
8006ac0: d00a beq.n 8006ad8 <UART_AdvFeatureConfig+0x68>
{
assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert));
MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert);
8006ac2: 687b ldr r3, [r7, #4]
8006ac4: 681b ldr r3, [r3, #0]
8006ac6: 687a ldr r2, [r7, #4]
8006ac8: 6812 ldr r2, [r2, #0]
8006aca: 6852 ldr r2, [r2, #4]
8006acc: 4937 ldr r1, [pc, #220] ; (8006bac <UART_AdvFeatureConfig+0x13c>)
8006ace: 4011 ands r1, r2
8006ad0: 687a ldr r2, [r7, #4]
8006ad2: 6b12 ldr r2, [r2, #48] ; 0x30
8006ad4: 430a orrs r2, r1
8006ad6: 605a str r2, [r3, #4]
}
/* if required, configure RX/TX pins swap */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT))
8006ad8: 687b ldr r3, [r7, #4]
8006ada: 6a5b ldr r3, [r3, #36] ; 0x24
8006adc: 2208 movs r2, #8
8006ade: 4013 ands r3, r2
8006ae0: d00a beq.n 8006af8 <UART_AdvFeatureConfig+0x88>
{
assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap));
MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap);
8006ae2: 687b ldr r3, [r7, #4]
8006ae4: 681b ldr r3, [r3, #0]
8006ae6: 687a ldr r2, [r7, #4]
8006ae8: 6812 ldr r2, [r2, #0]
8006aea: 6852 ldr r2, [r2, #4]
8006aec: 4930 ldr r1, [pc, #192] ; (8006bb0 <UART_AdvFeatureConfig+0x140>)
8006aee: 4011 ands r1, r2
8006af0: 687a ldr r2, [r7, #4]
8006af2: 6b52 ldr r2, [r2, #52] ; 0x34
8006af4: 430a orrs r2, r1
8006af6: 605a str r2, [r3, #4]
}
/* if required, configure RX overrun detection disabling */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT))
8006af8: 687b ldr r3, [r7, #4]
8006afa: 6a5b ldr r3, [r3, #36] ; 0x24
8006afc: 2210 movs r2, #16
8006afe: 4013 ands r3, r2
8006b00: d00a beq.n 8006b18 <UART_AdvFeatureConfig+0xa8>
{
assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable));
MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable);
8006b02: 687b ldr r3, [r7, #4]
8006b04: 681b ldr r3, [r3, #0]
8006b06: 687a ldr r2, [r7, #4]
8006b08: 6812 ldr r2, [r2, #0]
8006b0a: 6892 ldr r2, [r2, #8]
8006b0c: 4929 ldr r1, [pc, #164] ; (8006bb4 <UART_AdvFeatureConfig+0x144>)
8006b0e: 4011 ands r1, r2
8006b10: 687a ldr r2, [r7, #4]
8006b12: 6b92 ldr r2, [r2, #56] ; 0x38
8006b14: 430a orrs r2, r1
8006b16: 609a str r2, [r3, #8]
}
/* if required, configure DMA disabling on reception error */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT))
8006b18: 687b ldr r3, [r7, #4]
8006b1a: 6a5b ldr r3, [r3, #36] ; 0x24
8006b1c: 2220 movs r2, #32
8006b1e: 4013 ands r3, r2
8006b20: d00a beq.n 8006b38 <UART_AdvFeatureConfig+0xc8>
{
assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError));
MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError);
8006b22: 687b ldr r3, [r7, #4]
8006b24: 681b ldr r3, [r3, #0]
8006b26: 687a ldr r2, [r7, #4]
8006b28: 6812 ldr r2, [r2, #0]
8006b2a: 6892 ldr r2, [r2, #8]
8006b2c: 4922 ldr r1, [pc, #136] ; (8006bb8 <UART_AdvFeatureConfig+0x148>)
8006b2e: 4011 ands r1, r2
8006b30: 687a ldr r2, [r7, #4]
8006b32: 6bd2 ldr r2, [r2, #60] ; 0x3c
8006b34: 430a orrs r2, r1
8006b36: 609a str r2, [r3, #8]
}
/* if required, configure auto Baud rate detection scheme */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT))
8006b38: 687b ldr r3, [r7, #4]
8006b3a: 6a5b ldr r3, [r3, #36] ; 0x24
8006b3c: 2240 movs r2, #64 ; 0x40
8006b3e: 4013 ands r3, r2
8006b40: d01b beq.n 8006b7a <UART_AdvFeatureConfig+0x10a>
{
assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance));
assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable));
MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable);
8006b42: 687b ldr r3, [r7, #4]
8006b44: 681b ldr r3, [r3, #0]
8006b46: 687a ldr r2, [r7, #4]
8006b48: 6812 ldr r2, [r2, #0]
8006b4a: 6852 ldr r2, [r2, #4]
8006b4c: 491b ldr r1, [pc, #108] ; (8006bbc <UART_AdvFeatureConfig+0x14c>)
8006b4e: 4011 ands r1, r2
8006b50: 687a ldr r2, [r7, #4]
8006b52: 6c12 ldr r2, [r2, #64] ; 0x40
8006b54: 430a orrs r2, r1
8006b56: 605a str r2, [r3, #4]
/* set auto Baudrate detection parameters if detection is enabled */
if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)
8006b58: 687b ldr r3, [r7, #4]
8006b5a: 6c1a ldr r2, [r3, #64] ; 0x40
8006b5c: 2380 movs r3, #128 ; 0x80
8006b5e: 035b lsls r3, r3, #13
8006b60: 429a cmp r2, r3
8006b62: d10a bne.n 8006b7a <UART_AdvFeatureConfig+0x10a>
{
assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode));
MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode);
8006b64: 687b ldr r3, [r7, #4]
8006b66: 681b ldr r3, [r3, #0]
8006b68: 687a ldr r2, [r7, #4]
8006b6a: 6812 ldr r2, [r2, #0]
8006b6c: 6852 ldr r2, [r2, #4]
8006b6e: 4914 ldr r1, [pc, #80] ; (8006bc0 <UART_AdvFeatureConfig+0x150>)
8006b70: 4011 ands r1, r2
8006b72: 687a ldr r2, [r7, #4]
8006b74: 6c52 ldr r2, [r2, #68] ; 0x44
8006b76: 430a orrs r2, r1
8006b78: 605a str r2, [r3, #4]
}
}
/* if required, configure MSB first on communication line */
if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT))
8006b7a: 687b ldr r3, [r7, #4]
8006b7c: 6a5b ldr r3, [r3, #36] ; 0x24
8006b7e: 2280 movs r2, #128 ; 0x80
8006b80: 4013 ands r3, r2
8006b82: d00a beq.n 8006b9a <UART_AdvFeatureConfig+0x12a>
{
assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst));
MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst);
8006b84: 687b ldr r3, [r7, #4]
8006b86: 681b ldr r3, [r3, #0]
8006b88: 687a ldr r2, [r7, #4]
8006b8a: 6812 ldr r2, [r2, #0]
8006b8c: 6852 ldr r2, [r2, #4]
8006b8e: 490d ldr r1, [pc, #52] ; (8006bc4 <UART_AdvFeatureConfig+0x154>)
8006b90: 4011 ands r1, r2
8006b92: 687a ldr r2, [r7, #4]
8006b94: 6c92 ldr r2, [r2, #72] ; 0x48
8006b96: 430a orrs r2, r1
8006b98: 605a str r2, [r3, #4]
}
}
8006b9a: 46c0 nop ; (mov r8, r8)
8006b9c: 46bd mov sp, r7
8006b9e: b002 add sp, #8
8006ba0: bd80 pop {r7, pc}
8006ba2: 46c0 nop ; (mov r8, r8)
8006ba4: fffdffff .word 0xfffdffff
8006ba8: fffeffff .word 0xfffeffff
8006bac: fffbffff .word 0xfffbffff
8006bb0: ffff7fff .word 0xffff7fff
8006bb4: ffffefff .word 0xffffefff
8006bb8: ffffdfff .word 0xffffdfff
8006bbc: ffefffff .word 0xffefffff
8006bc0: ff9fffff .word 0xff9fffff
8006bc4: fff7ffff .word 0xfff7ffff
08006bc8 <UART_CheckIdleState>:
* @brief Check the UART Idle State.
* @param huart UART handle.
* @retval HAL status
*/
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
{
8006bc8: b580 push {r7, lr}
8006bca: b086 sub sp, #24
8006bcc: af02 add r7, sp, #8
8006bce: 6078 str r0, [r7, #4]
uint32_t tickstart;
/* Initialize the UART ErrorCode */
huart->ErrorCode = HAL_UART_ERROR_NONE;
8006bd0: 687b ldr r3, [r7, #4]
8006bd2: 2280 movs r2, #128 ; 0x80
8006bd4: 2100 movs r1, #0
8006bd6: 5099 str r1, [r3, r2]
/* Init tickstart for timeout management */
tickstart = HAL_GetTick();
8006bd8: f7fd f9a8 bl 8003f2c <HAL_GetTick>
8006bdc: 0003 movs r3, r0
8006bde: 60fb str r3, [r7, #12]
/* Check if the Transmitter is enabled */
if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)
8006be0: 687b ldr r3, [r7, #4]
8006be2: 681b ldr r3, [r3, #0]
8006be4: 681b ldr r3, [r3, #0]
8006be6: 2208 movs r2, #8
8006be8: 4013 ands r3, r2
8006bea: 2b08 cmp r3, #8
8006bec: d10d bne.n 8006c0a <UART_CheckIdleState+0x42>
{
/* Wait until TEACK flag is set */
if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
8006bee: 68fa ldr r2, [r7, #12]
8006bf0: 2380 movs r3, #128 ; 0x80
8006bf2: 0399 lsls r1, r3, #14
8006bf4: 6878 ldr r0, [r7, #4]
8006bf6: 4b18 ldr r3, [pc, #96] ; (8006c58 <UART_CheckIdleState+0x90>)
8006bf8: 9300 str r3, [sp, #0]
8006bfa: 0013 movs r3, r2
8006bfc: 2200 movs r2, #0
8006bfe: f000 f82d bl 8006c5c <UART_WaitOnFlagUntilTimeout>
8006c02: 1e03 subs r3, r0, #0
8006c04: d001 beq.n 8006c0a <UART_CheckIdleState+0x42>
{
/* Timeout occurred */
return HAL_TIMEOUT;
8006c06: 2303 movs r3, #3
8006c08: e022 b.n 8006c50 <UART_CheckIdleState+0x88>
}
}
/* Check if the Receiver is enabled */
if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE)
8006c0a: 687b ldr r3, [r7, #4]
8006c0c: 681b ldr r3, [r3, #0]
8006c0e: 681b ldr r3, [r3, #0]
8006c10: 2204 movs r2, #4
8006c12: 4013 ands r3, r2
8006c14: 2b04 cmp r3, #4
8006c16: d10d bne.n 8006c34 <UART_CheckIdleState+0x6c>
{
/* Wait until REACK flag is set */
if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
8006c18: 68fa ldr r2, [r7, #12]
8006c1a: 2380 movs r3, #128 ; 0x80
8006c1c: 03d9 lsls r1, r3, #15
8006c1e: 6878 ldr r0, [r7, #4]
8006c20: 4b0d ldr r3, [pc, #52] ; (8006c58 <UART_CheckIdleState+0x90>)
8006c22: 9300 str r3, [sp, #0]
8006c24: 0013 movs r3, r2
8006c26: 2200 movs r2, #0
8006c28: f000 f818 bl 8006c5c <UART_WaitOnFlagUntilTimeout>
8006c2c: 1e03 subs r3, r0, #0
8006c2e: d001 beq.n 8006c34 <UART_CheckIdleState+0x6c>
{
/* Timeout occurred */
return HAL_TIMEOUT;
8006c30: 2303 movs r3, #3
8006c32: e00d b.n 8006c50 <UART_CheckIdleState+0x88>
}
}
/* Initialize the UART State */
huart->gState = HAL_UART_STATE_READY;
8006c34: 687b ldr r3, [r7, #4]
8006c36: 2220 movs r2, #32
8006c38: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_READY;
8006c3a: 687b ldr r3, [r7, #4]
8006c3c: 2220 movs r2, #32
8006c3e: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
8006c40: 687b ldr r3, [r7, #4]
8006c42: 2200 movs r2, #0
8006c44: 661a str r2, [r3, #96] ; 0x60
__HAL_UNLOCK(huart);
8006c46: 687b ldr r3, [r7, #4]
8006c48: 2274 movs r2, #116 ; 0x74
8006c4a: 2100 movs r1, #0
8006c4c: 5499 strb r1, [r3, r2]
return HAL_OK;
8006c4e: 2300 movs r3, #0
}
8006c50: 0018 movs r0, r3
8006c52: 46bd mov sp, r7
8006c54: b004 add sp, #16
8006c56: bd80 pop {r7, pc}
8006c58: 01ffffff .word 0x01ffffff
08006c5c <UART_WaitOnFlagUntilTimeout>:
* @param Timeout Timeout duration
* @retval HAL status
*/
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,
uint32_t Tickstart, uint32_t Timeout)
{
8006c5c: b580 push {r7, lr}
8006c5e: b084 sub sp, #16
8006c60: af00 add r7, sp, #0
8006c62: 60f8 str r0, [r7, #12]
8006c64: 60b9 str r1, [r7, #8]
8006c66: 603b str r3, [r7, #0]
8006c68: 1dfb adds r3, r7, #7
8006c6a: 701a strb r2, [r3, #0]
/* Wait until flag is set */
while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
8006c6c: e05e b.n 8006d2c <UART_WaitOnFlagUntilTimeout+0xd0>
{
/* Check for the Timeout */
if (Timeout != HAL_MAX_DELAY)
8006c6e: 69bb ldr r3, [r7, #24]
8006c70: 3301 adds r3, #1
8006c72: d05b beq.n 8006d2c <UART_WaitOnFlagUntilTimeout+0xd0>
{
if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
8006c74: f7fd f95a bl 8003f2c <HAL_GetTick>
8006c78: 0002 movs r2, r0
8006c7a: 683b ldr r3, [r7, #0]
8006c7c: 1ad2 subs r2, r2, r3
8006c7e: 69bb ldr r3, [r7, #24]
8006c80: 429a cmp r2, r3
8006c82: d802 bhi.n 8006c8a <UART_WaitOnFlagUntilTimeout+0x2e>
8006c84: 69bb ldr r3, [r7, #24]
8006c86: 2b00 cmp r3, #0
8006c88: d11b bne.n 8006cc2 <UART_WaitOnFlagUntilTimeout+0x66>
{
/* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)
interrupts for the interrupt process */
CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
8006c8a: 68fb ldr r3, [r7, #12]
8006c8c: 681b ldr r3, [r3, #0]
8006c8e: 68fa ldr r2, [r7, #12]
8006c90: 6812 ldr r2, [r2, #0]
8006c92: 6812 ldr r2, [r2, #0]
8006c94: 492f ldr r1, [pc, #188] ; (8006d54 <UART_WaitOnFlagUntilTimeout+0xf8>)
8006c96: 400a ands r2, r1
8006c98: 601a str r2, [r3, #0]
CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
8006c9a: 68fb ldr r3, [r7, #12]
8006c9c: 681b ldr r3, [r3, #0]
8006c9e: 68fa ldr r2, [r7, #12]
8006ca0: 6812 ldr r2, [r2, #0]
8006ca2: 6892 ldr r2, [r2, #8]
8006ca4: 2101 movs r1, #1
8006ca6: 438a bics r2, r1
8006ca8: 609a str r2, [r3, #8]
huart->gState = HAL_UART_STATE_READY;
8006caa: 68fb ldr r3, [r7, #12]
8006cac: 2220 movs r2, #32
8006cae: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_READY;
8006cb0: 68fb ldr r3, [r7, #12]
8006cb2: 2220 movs r2, #32
8006cb4: 67da str r2, [r3, #124] ; 0x7c
__HAL_UNLOCK(huart);
8006cb6: 68fb ldr r3, [r7, #12]
8006cb8: 2274 movs r2, #116 ; 0x74
8006cba: 2100 movs r1, #0
8006cbc: 5499 strb r1, [r3, r2]
return HAL_TIMEOUT;
8006cbe: 2303 movs r3, #3
8006cc0: e044 b.n 8006d4c <UART_WaitOnFlagUntilTimeout+0xf0>
}
if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U)
8006cc2: 68fb ldr r3, [r7, #12]
8006cc4: 681b ldr r3, [r3, #0]
8006cc6: 681b ldr r3, [r3, #0]
8006cc8: 2204 movs r2, #4
8006cca: 4013 ands r3, r2
8006ccc: d02e beq.n 8006d2c <UART_WaitOnFlagUntilTimeout+0xd0>
{
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET)
8006cce: 68fb ldr r3, [r7, #12]
8006cd0: 681b ldr r3, [r3, #0]
8006cd2: 69da ldr r2, [r3, #28]
8006cd4: 2380 movs r3, #128 ; 0x80
8006cd6: 011b lsls r3, r3, #4
8006cd8: 401a ands r2, r3
8006cda: 2380 movs r3, #128 ; 0x80
8006cdc: 011b lsls r3, r3, #4
8006cde: 429a cmp r2, r3
8006ce0: d124 bne.n 8006d2c <UART_WaitOnFlagUntilTimeout+0xd0>
{
/* Clear Receiver Timeout flag*/
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
8006ce2: 68fb ldr r3, [r7, #12]
8006ce4: 681b ldr r3, [r3, #0]
8006ce6: 2280 movs r2, #128 ; 0x80
8006ce8: 0112 lsls r2, r2, #4
8006cea: 621a str r2, [r3, #32]
/* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)
interrupts for the interrupt process */
CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
8006cec: 68fb ldr r3, [r7, #12]
8006cee: 681b ldr r3, [r3, #0]
8006cf0: 68fa ldr r2, [r7, #12]
8006cf2: 6812 ldr r2, [r2, #0]
8006cf4: 6812 ldr r2, [r2, #0]
8006cf6: 4917 ldr r1, [pc, #92] ; (8006d54 <UART_WaitOnFlagUntilTimeout+0xf8>)
8006cf8: 400a ands r2, r1
8006cfa: 601a str r2, [r3, #0]
CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
8006cfc: 68fb ldr r3, [r7, #12]
8006cfe: 681b ldr r3, [r3, #0]
8006d00: 68fa ldr r2, [r7, #12]
8006d02: 6812 ldr r2, [r2, #0]
8006d04: 6892 ldr r2, [r2, #8]
8006d06: 2101 movs r1, #1
8006d08: 438a bics r2, r1
8006d0a: 609a str r2, [r3, #8]
huart->gState = HAL_UART_STATE_READY;
8006d0c: 68fb ldr r3, [r7, #12]
8006d0e: 2220 movs r2, #32
8006d10: 679a str r2, [r3, #120] ; 0x78
huart->RxState = HAL_UART_STATE_READY;
8006d12: 68fb ldr r3, [r7, #12]
8006d14: 2220 movs r2, #32
8006d16: 67da str r2, [r3, #124] ; 0x7c
huart->ErrorCode = HAL_UART_ERROR_RTO;
8006d18: 68fb ldr r3, [r7, #12]
8006d1a: 2280 movs r2, #128 ; 0x80
8006d1c: 2120 movs r1, #32
8006d1e: 5099 str r1, [r3, r2]
/* Process Unlocked */
__HAL_UNLOCK(huart);
8006d20: 68fb ldr r3, [r7, #12]
8006d22: 2274 movs r2, #116 ; 0x74
8006d24: 2100 movs r1, #0
8006d26: 5499 strb r1, [r3, r2]
return HAL_TIMEOUT;
8006d28: 2303 movs r3, #3
8006d2a: e00f b.n 8006d4c <UART_WaitOnFlagUntilTimeout+0xf0>
while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
8006d2c: 68fb ldr r3, [r7, #12]
8006d2e: 681b ldr r3, [r3, #0]
8006d30: 69db ldr r3, [r3, #28]
8006d32: 68ba ldr r2, [r7, #8]
8006d34: 401a ands r2, r3
8006d36: 68bb ldr r3, [r7, #8]
8006d38: 1ad3 subs r3, r2, r3
8006d3a: 425a negs r2, r3
8006d3c: 4153 adcs r3, r2
8006d3e: b2db uxtb r3, r3
8006d40: 001a movs r2, r3
8006d42: 1dfb adds r3, r7, #7
8006d44: 781b ldrb r3, [r3, #0]
8006d46: 429a cmp r2, r3
8006d48: d091 beq.n 8006c6e <UART_WaitOnFlagUntilTimeout+0x12>
}
}
}
}
return HAL_OK;
8006d4a: 2300 movs r3, #0
}
8006d4c: 0018 movs r0, r3
8006d4e: 46bd mov sp, r7
8006d50: b004 add sp, #16
8006d52: bd80 pop {r7, pc}
8006d54: fffffe5f .word 0xfffffe5f
08006d58 <UART_EndRxTransfer>:
* @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion).
* @param huart UART handle.
* @retval None
*/
static void UART_EndRxTransfer(UART_HandleTypeDef *huart)
{
8006d58: b580 push {r7, lr}
8006d5a: b082 sub sp, #8
8006d5c: af00 add r7, sp, #0
8006d5e: 6078 str r0, [r7, #4]
/* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
8006d60: 687b ldr r3, [r7, #4]
8006d62: 681b ldr r3, [r3, #0]
8006d64: 687a ldr r2, [r7, #4]
8006d66: 6812 ldr r2, [r2, #0]
8006d68: 6812 ldr r2, [r2, #0]
8006d6a: 4912 ldr r1, [pc, #72] ; (8006db4 <UART_EndRxTransfer+0x5c>)
8006d6c: 400a ands r2, r1
8006d6e: 601a str r2, [r3, #0]
CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
8006d70: 687b ldr r3, [r7, #4]
8006d72: 681b ldr r3, [r3, #0]
8006d74: 687a ldr r2, [r7, #4]
8006d76: 6812 ldr r2, [r2, #0]
8006d78: 6892 ldr r2, [r2, #8]
8006d7a: 2101 movs r1, #1
8006d7c: 438a bics r2, r1
8006d7e: 609a str r2, [r3, #8]
/* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */
if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
8006d80: 687b ldr r3, [r7, #4]
8006d82: 6e1b ldr r3, [r3, #96] ; 0x60
8006d84: 2b01 cmp r3, #1
8006d86: d107 bne.n 8006d98 <UART_EndRxTransfer+0x40>
{
CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
8006d88: 687b ldr r3, [r7, #4]
8006d8a: 681b ldr r3, [r3, #0]
8006d8c: 687a ldr r2, [r7, #4]
8006d8e: 6812 ldr r2, [r2, #0]
8006d90: 6812 ldr r2, [r2, #0]
8006d92: 2110 movs r1, #16
8006d94: 438a bics r2, r1
8006d96: 601a str r2, [r3, #0]
}
/* At end of Rx process, restore huart->RxState to Ready */
huart->RxState = HAL_UART_STATE_READY;
8006d98: 687b ldr r3, [r7, #4]
8006d9a: 2220 movs r2, #32
8006d9c: 67da str r2, [r3, #124] ; 0x7c
huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
8006d9e: 687b ldr r3, [r7, #4]
8006da0: 2200 movs r2, #0
8006da2: 661a str r2, [r3, #96] ; 0x60
/* Reset RxIsr function pointer */
huart->RxISR = NULL;
8006da4: 687b ldr r3, [r7, #4]
8006da6: 2200 movs r2, #0
8006da8: 665a str r2, [r3, #100] ; 0x64
}
8006daa: 46c0 nop ; (mov r8, r8)
8006dac: 46bd mov sp, r7
8006dae: b002 add sp, #8
8006db0: bd80 pop {r7, pc}
8006db2: 46c0 nop ; (mov r8, r8)
8006db4: fffffedf .word 0xfffffedf
08006db8 <UART_DMAAbortOnError>:
* (To be called at end of DMA Abort procedure following error occurrence).
* @param hdma DMA handle.
* @retval None
*/
static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma)
{
8006db8: b580 push {r7, lr}
8006dba: b084 sub sp, #16
8006dbc: af00 add r7, sp, #0
8006dbe: 6078 str r0, [r7, #4]
UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
8006dc0: 687b ldr r3, [r7, #4]
8006dc2: 6a9b ldr r3, [r3, #40] ; 0x28
8006dc4: 60fb str r3, [r7, #12]
huart->RxXferCount = 0U;
8006dc6: 68fb ldr r3, [r7, #12]
8006dc8: 225a movs r2, #90 ; 0x5a
8006dca: 2100 movs r1, #0
8006dcc: 5299 strh r1, [r3, r2]
huart->TxXferCount = 0U;
8006dce: 68fb ldr r3, [r7, #12]
8006dd0: 2252 movs r2, #82 ; 0x52
8006dd2: 2100 movs r1, #0
8006dd4: 5299 strh r1, [r3, r2]
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered error callback*/
huart->ErrorCallback(huart);
#else
/*Call legacy weak error callback*/
HAL_UART_ErrorCallback(huart);
8006dd6: 68fb ldr r3, [r7, #12]
8006dd8: 0018 movs r0, r3
8006dda: f7ff fb73 bl 80064c4 <HAL_UART_ErrorCallback>
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
}
8006dde: 46c0 nop ; (mov r8, r8)
8006de0: 46bd mov sp, r7
8006de2: b004 add sp, #16
8006de4: bd80 pop {r7, pc}
08006de6 <UART_TxISR_8BIT>:
* interruptions have been enabled by HAL_UART_Transmit_IT().
* @param huart UART handle.
* @retval None
*/
static void UART_TxISR_8BIT(UART_HandleTypeDef *huart)
{
8006de6: b580 push {r7, lr}
8006de8: b082 sub sp, #8
8006dea: af00 add r7, sp, #0
8006dec: 6078 str r0, [r7, #4]
/* Check that a Tx process is ongoing */
if (huart->gState == HAL_UART_STATE_BUSY_TX)
8006dee: 687b ldr r3, [r7, #4]
8006df0: 6f9b ldr r3, [r3, #120] ; 0x78
8006df2: 2b21 cmp r3, #33 ; 0x21
8006df4: d12a bne.n 8006e4c <UART_TxISR_8BIT+0x66>
{
if (huart->TxXferCount == 0U)
8006df6: 687b ldr r3, [r7, #4]
8006df8: 2252 movs r2, #82 ; 0x52
8006dfa: 5a9b ldrh r3, [r3, r2]
8006dfc: b29b uxth r3, r3
8006dfe: 2b00 cmp r3, #0
8006e00: d110 bne.n 8006e24 <UART_TxISR_8BIT+0x3e>
{
/* Disable the UART Transmit Data Register Empty Interrupt */
CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
8006e02: 687b ldr r3, [r7, #4]
8006e04: 681b ldr r3, [r3, #0]
8006e06: 687a ldr r2, [r7, #4]
8006e08: 6812 ldr r2, [r2, #0]
8006e0a: 6812 ldr r2, [r2, #0]
8006e0c: 2180 movs r1, #128 ; 0x80
8006e0e: 438a bics r2, r1
8006e10: 601a str r2, [r3, #0]
/* Enable the UART Transmit Complete Interrupt */
SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
8006e12: 687b ldr r3, [r7, #4]
8006e14: 681b ldr r3, [r3, #0]
8006e16: 687a ldr r2, [r7, #4]
8006e18: 6812 ldr r2, [r2, #0]
8006e1a: 6812 ldr r2, [r2, #0]
8006e1c: 2140 movs r1, #64 ; 0x40
8006e1e: 430a orrs r2, r1
8006e20: 601a str r2, [r3, #0]
huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF);
huart->pTxBuffPtr++;
huart->TxXferCount--;
}
}
}
8006e22: e013 b.n 8006e4c <UART_TxISR_8BIT+0x66>
huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF);
8006e24: 687b ldr r3, [r7, #4]
8006e26: 681b ldr r3, [r3, #0]
8006e28: 687a ldr r2, [r7, #4]
8006e2a: 6cd2 ldr r2, [r2, #76] ; 0x4c
8006e2c: 7812 ldrb r2, [r2, #0]
8006e2e: 629a str r2, [r3, #40] ; 0x28
huart->pTxBuffPtr++;
8006e30: 687b ldr r3, [r7, #4]
8006e32: 6cdb ldr r3, [r3, #76] ; 0x4c
8006e34: 1c5a adds r2, r3, #1
8006e36: 687b ldr r3, [r7, #4]
8006e38: 64da str r2, [r3, #76] ; 0x4c
huart->TxXferCount--;
8006e3a: 687b ldr r3, [r7, #4]
8006e3c: 2252 movs r2, #82 ; 0x52
8006e3e: 5a9b ldrh r3, [r3, r2]
8006e40: b29b uxth r3, r3
8006e42: 3b01 subs r3, #1
8006e44: b299 uxth r1, r3
8006e46: 687b ldr r3, [r7, #4]
8006e48: 2252 movs r2, #82 ; 0x52
8006e4a: 5299 strh r1, [r3, r2]
}
8006e4c: 46c0 nop ; (mov r8, r8)
8006e4e: 46bd mov sp, r7
8006e50: b002 add sp, #8
8006e52: bd80 pop {r7, pc}
08006e54 <UART_TxISR_16BIT>:
* interruptions have been enabled by HAL_UART_Transmit_IT().
* @param huart UART handle.
* @retval None
*/
static void UART_TxISR_16BIT(UART_HandleTypeDef *huart)
{
8006e54: b580 push {r7, lr}
8006e56: b084 sub sp, #16
8006e58: af00 add r7, sp, #0
8006e5a: 6078 str r0, [r7, #4]
uint16_t *tmp;
/* Check that a Tx process is ongoing */
if (huart->gState == HAL_UART_STATE_BUSY_TX)
8006e5c: 687b ldr r3, [r7, #4]
8006e5e: 6f9b ldr r3, [r3, #120] ; 0x78
8006e60: 2b21 cmp r3, #33 ; 0x21
8006e62: d12e bne.n 8006ec2 <UART_TxISR_16BIT+0x6e>
{
if (huart->TxXferCount == 0U)
8006e64: 687b ldr r3, [r7, #4]
8006e66: 2252 movs r2, #82 ; 0x52
8006e68: 5a9b ldrh r3, [r3, r2]
8006e6a: b29b uxth r3, r3
8006e6c: 2b00 cmp r3, #0
8006e6e: d110 bne.n 8006e92 <UART_TxISR_16BIT+0x3e>
{
/* Disable the UART Transmit Data Register Empty Interrupt */
CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
8006e70: 687b ldr r3, [r7, #4]
8006e72: 681b ldr r3, [r3, #0]
8006e74: 687a ldr r2, [r7, #4]
8006e76: 6812 ldr r2, [r2, #0]
8006e78: 6812 ldr r2, [r2, #0]
8006e7a: 2180 movs r1, #128 ; 0x80
8006e7c: 438a bics r2, r1
8006e7e: 601a str r2, [r3, #0]
/* Enable the UART Transmit Complete Interrupt */
SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
8006e80: 687b ldr r3, [r7, #4]
8006e82: 681b ldr r3, [r3, #0]
8006e84: 687a ldr r2, [r7, #4]
8006e86: 6812 ldr r2, [r2, #0]
8006e88: 6812 ldr r2, [r2, #0]
8006e8a: 2140 movs r1, #64 ; 0x40
8006e8c: 430a orrs r2, r1
8006e8e: 601a str r2, [r3, #0]
huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL);
huart->pTxBuffPtr += 2U;
huart->TxXferCount--;
}
}
}
8006e90: e017 b.n 8006ec2 <UART_TxISR_16BIT+0x6e>
tmp = (uint16_t *) huart->pTxBuffPtr;
8006e92: 687b ldr r3, [r7, #4]
8006e94: 6cdb ldr r3, [r3, #76] ; 0x4c
8006e96: 60fb str r3, [r7, #12]
huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL);
8006e98: 687b ldr r3, [r7, #4]
8006e9a: 681b ldr r3, [r3, #0]
8006e9c: 68fa ldr r2, [r7, #12]
8006e9e: 8812 ldrh r2, [r2, #0]
8006ea0: 05d2 lsls r2, r2, #23
8006ea2: 0dd2 lsrs r2, r2, #23
8006ea4: 629a str r2, [r3, #40] ; 0x28
huart->pTxBuffPtr += 2U;
8006ea6: 687b ldr r3, [r7, #4]
8006ea8: 6cdb ldr r3, [r3, #76] ; 0x4c
8006eaa: 1c9a adds r2, r3, #2
8006eac: 687b ldr r3, [r7, #4]
8006eae: 64da str r2, [r3, #76] ; 0x4c
huart->TxXferCount--;
8006eb0: 687b ldr r3, [r7, #4]
8006eb2: 2252 movs r2, #82 ; 0x52
8006eb4: 5a9b ldrh r3, [r3, r2]
8006eb6: b29b uxth r3, r3
8006eb8: 3b01 subs r3, #1
8006eba: b299 uxth r1, r3
8006ebc: 687b ldr r3, [r7, #4]
8006ebe: 2252 movs r2, #82 ; 0x52
8006ec0: 5299 strh r1, [r3, r2]
}
8006ec2: 46c0 nop ; (mov r8, r8)
8006ec4: 46bd mov sp, r7
8006ec6: b004 add sp, #16
8006ec8: bd80 pop {r7, pc}
08006eca <UART_EndTransmit_IT>:
* @param huart pointer to a UART_HandleTypeDef structure that contains
* the configuration information for the specified UART module.
* @retval None
*/
static void UART_EndTransmit_IT(UART_HandleTypeDef *huart)
{
8006eca: b580 push {r7, lr}
8006ecc: b082 sub sp, #8
8006ece: af00 add r7, sp, #0
8006ed0: 6078 str r0, [r7, #4]
/* Disable the UART Transmit Complete Interrupt */
CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE);
8006ed2: 687b ldr r3, [r7, #4]
8006ed4: 681b ldr r3, [r3, #0]
8006ed6: 687a ldr r2, [r7, #4]
8006ed8: 6812 ldr r2, [r2, #0]
8006eda: 6812 ldr r2, [r2, #0]
8006edc: 2140 movs r1, #64 ; 0x40
8006ede: 438a bics r2, r1
8006ee0: 601a str r2, [r3, #0]
/* Tx process is ended, restore huart->gState to Ready */
huart->gState = HAL_UART_STATE_READY;
8006ee2: 687b ldr r3, [r7, #4]
8006ee4: 2220 movs r2, #32
8006ee6: 679a str r2, [r3, #120] ; 0x78
/* Cleat TxISR function pointer */
huart->TxISR = NULL;
8006ee8: 687b ldr r3, [r7, #4]
8006eea: 2200 movs r2, #0
8006eec: 669a str r2, [r3, #104] ; 0x68
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
/*Call registered Tx complete callback*/
huart->TxCpltCallback(huart);
#else
/*Call legacy weak Tx complete callback*/
HAL_UART_TxCpltCallback(huart);
8006eee: 687b ldr r3, [r7, #4]
8006ef0: 0018 movs r0, r3
8006ef2: f7fc febf bl 8003c74 <HAL_UART_TxCpltCallback>
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
}
8006ef6: 46c0 nop ; (mov r8, r8)
8006ef8: 46bd mov sp, r7
8006efa: b002 add sp, #8
8006efc: bd80 pop {r7, pc}
08006efe <HAL_UARTEx_WakeupCallback>:
* @brief UART wakeup from Stop mode callback.
* @param huart UART handle.
* @retval None
*/
__weak void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
{
8006efe: b580 push {r7, lr}
8006f00: b082 sub sp, #8
8006f02: af00 add r7, sp, #0
8006f04: 6078 str r0, [r7, #4]
UNUSED(huart);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_UARTEx_WakeupCallback can be implemented in the user file.
*/
}
8006f06: 46c0 nop ; (mov r8, r8)
8006f08: 46bd mov sp, r7
8006f0a: b002 add sp, #8
8006f0c: bd80 pop {r7, pc}
...
08006f10 <Reset_Handler>:
.section .text.Reset_Handler
.weak Reset_Handler
.type Reset_Handler, %function
Reset_Handler:
ldr r0, =_estack
8006f10: 480d ldr r0, [pc, #52] ; (8006f48 <LoopForever+0x2>)
mov sp, r0 /* set stack pointer */
8006f12: 4685 mov sp, r0
/* Copy the data segment initializers from flash to SRAM */
ldr r0, =_sdata
8006f14: 480d ldr r0, [pc, #52] ; (8006f4c <LoopForever+0x6>)
ldr r1, =_edata
8006f16: 490e ldr r1, [pc, #56] ; (8006f50 <LoopForever+0xa>)
ldr r2, =_sidata
8006f18: 4a0e ldr r2, [pc, #56] ; (8006f54 <LoopForever+0xe>)
movs r3, #0
8006f1a: 2300 movs r3, #0
b LoopCopyDataInit
8006f1c: e002 b.n 8006f24 <LoopCopyDataInit>
08006f1e <CopyDataInit>:
CopyDataInit:
ldr r4, [r2, r3]
8006f1e: 58d4 ldr r4, [r2, r3]
str r4, [r0, r3]
8006f20: 50c4 str r4, [r0, r3]
adds r3, r3, #4
8006f22: 3304 adds r3, #4
08006f24 <LoopCopyDataInit>:
LoopCopyDataInit:
adds r4, r0, r3
8006f24: 18c4 adds r4, r0, r3
cmp r4, r1
8006f26: 428c cmp r4, r1
bcc CopyDataInit
8006f28: d3f9 bcc.n 8006f1e <CopyDataInit>
/* Zero fill the bss segment. */
ldr r2, =_sbss
8006f2a: 4a0b ldr r2, [pc, #44] ; (8006f58 <LoopForever+0x12>)
ldr r4, =_ebss
8006f2c: 4c0b ldr r4, [pc, #44] ; (8006f5c <LoopForever+0x16>)
movs r3, #0
8006f2e: 2300 movs r3, #0
b LoopFillZerobss
8006f30: e001 b.n 8006f36 <LoopFillZerobss>
08006f32 <FillZerobss>:
FillZerobss:
str r3, [r2]
8006f32: 6013 str r3, [r2, #0]
adds r2, r2, #4
8006f34: 3204 adds r2, #4
08006f36 <LoopFillZerobss>:
LoopFillZerobss:
cmp r2, r4
8006f36: 42a2 cmp r2, r4
bcc FillZerobss
8006f38: d3fb bcc.n 8006f32 <FillZerobss>
/* Call the clock system intitialization function.*/
bl SystemInit
8006f3a: f7fb f9df bl 80022fc <SystemInit>
/* Call static constructors */
bl __libc_init_array
8006f3e: f000 f811 bl 8006f64 <__libc_init_array>
/* Call the application's entry point.*/
bl main
8006f42: f7fb f89b bl 800207c <main>
08006f46 <LoopForever>:
LoopForever:
b LoopForever
8006f46: e7fe b.n 8006f46 <LoopForever>
ldr r0, =_estack
8006f48: 20005000 .word 0x20005000
ldr r0, =_sdata
8006f4c: 20000000 .word 0x20000000
ldr r1, =_edata
8006f50: 20000010 .word 0x20000010
ldr r2, =_sidata
8006f54: 0800749c .word 0x0800749c
ldr r2, =_sbss
8006f58: 20000010 .word 0x20000010
ldr r4, =_ebss
8006f5c: 200003a8 .word 0x200003a8
08006f60 <ADC1_COMP_IRQHandler>:
* @retval : None
*/
.section .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b Infinite_Loop
8006f60: e7fe b.n 8006f60 <ADC1_COMP_IRQHandler>
...
08006f64 <__libc_init_array>:
8006f64: b570 push {r4, r5, r6, lr}
8006f66: 2600 movs r6, #0
8006f68: 4d0c ldr r5, [pc, #48] ; (8006f9c <__libc_init_array+0x38>)
8006f6a: 4c0d ldr r4, [pc, #52] ; (8006fa0 <__libc_init_array+0x3c>)
8006f6c: 1b64 subs r4, r4, r5
8006f6e: 10a4 asrs r4, r4, #2
8006f70: 42a6 cmp r6, r4
8006f72: d109 bne.n 8006f88 <__libc_init_array+0x24>
8006f74: 2600 movs r6, #0
8006f76: f000 f82b bl 8006fd0 <_init>
8006f7a: 4d0a ldr r5, [pc, #40] ; (8006fa4 <__libc_init_array+0x40>)
8006f7c: 4c0a ldr r4, [pc, #40] ; (8006fa8 <__libc_init_array+0x44>)
8006f7e: 1b64 subs r4, r4, r5
8006f80: 10a4 asrs r4, r4, #2
8006f82: 42a6 cmp r6, r4
8006f84: d105 bne.n 8006f92 <__libc_init_array+0x2e>
8006f86: bd70 pop {r4, r5, r6, pc}
8006f88: 00b3 lsls r3, r6, #2
8006f8a: 58eb ldr r3, [r5, r3]
8006f8c: 4798 blx r3
8006f8e: 3601 adds r6, #1
8006f90: e7ee b.n 8006f70 <__libc_init_array+0xc>
8006f92: 00b3 lsls r3, r6, #2
8006f94: 58eb ldr r3, [r5, r3]
8006f96: 4798 blx r3
8006f98: 3601 adds r6, #1
8006f9a: e7f2 b.n 8006f82 <__libc_init_array+0x1e>
8006f9c: 08007494 .word 0x08007494
8006fa0: 08007494 .word 0x08007494
8006fa4: 08007494 .word 0x08007494
8006fa8: 08007498 .word 0x08007498
08006fac <memcpy>:
8006fac: 2300 movs r3, #0
8006fae: b510 push {r4, lr}
8006fb0: 429a cmp r2, r3
8006fb2: d100 bne.n 8006fb6 <memcpy+0xa>
8006fb4: bd10 pop {r4, pc}
8006fb6: 5ccc ldrb r4, [r1, r3]
8006fb8: 54c4 strb r4, [r0, r3]
8006fba: 3301 adds r3, #1
8006fbc: e7f8 b.n 8006fb0 <memcpy+0x4>
08006fbe <memset>:
8006fbe: 0003 movs r3, r0
8006fc0: 1882 adds r2, r0, r2
8006fc2: 4293 cmp r3, r2
8006fc4: d100 bne.n 8006fc8 <memset+0xa>
8006fc6: 4770 bx lr
8006fc8: 7019 strb r1, [r3, #0]
8006fca: 3301 adds r3, #1
8006fcc: e7f9 b.n 8006fc2 <memset+0x4>
...
08006fd0 <_init>:
8006fd0: b5f8 push {r3, r4, r5, r6, r7, lr}
8006fd2: 46c0 nop ; (mov r8, r8)
8006fd4: bcf8 pop {r3, r4, r5, r6, r7}
8006fd6: bc08 pop {r3}
8006fd8: 469e mov lr, r3
8006fda: 4770 bx lr
08006fdc <_fini>:
8006fdc: b5f8 push {r3, r4, r5, r6, r7, lr}
8006fde: 46c0 nop ; (mov r8, r8)
8006fe0: bcf8 pop {r3, r4, r5, r6, r7}
8006fe2: bc08 pop {r3}
8006fe4: 469e mov lr, r3
8006fe6: 4770 bx lr