18028703418
.syntax unified
.cpu cortex-m4
.fpu fpv4-sp-d16
@; .eabi_attribute 20, 1
@; .eabi_attribute 21, 1
@; .eabi_attribute 23, 3
@; .eabi_attribute 24, 1
@; .eabi_attribute 25, 1
@; .eabi_attribute 26, 2
@; .eabi_attribute 30, 2
@; .eabi_attribute 18, 2
.thumb
@; ===========================================================================
@; Segment type: Externs
@; ===========================================================================
.global __aeabi_fcmpeq
.global __aeabi_fmul
.global __aeabi_f2d
.global __aeabi_i2d
.global __aeabi_ddiv
.global __aeabi_dadd
.global __aeabi_d2uiz
.global __aeabi_dmul
@; ===========================================================================
.section .text.PDM_Filter_Init
.code 16
.weak PDM_Filter_Init
.type PDM_Filter_Init, %function
@; ===========================================================================
PDM_Filter_Init:
PUSH.W {R3-R11,LR}
@; LDR R2, =0xF407A5C2 @test data
@; LDR R3, =0x40023000 @CRC BASE
MOV R5, R0
@; STR R2, [R3] @load 0xF407A5C2 into crc data register
@; LDR R3, [R3] @get contents of crc data register
@; LDR R2, =0xB5E8B5CD @load control word
MOVS R6, #0
@; CMP R3, R2 @compare crc32 and awaited result
@; BNE loc_42 @ Checking that it's really CPU, that manufatured by ST.
@; LDR R2, =stm32_crc @get contents of
LDR R7, [R0,#4] @LP_HZ
ADD.W R4, R0, #0x10
@; STR R3, [R2] @save 0xB5E8B5CD into =stm32_crc variable
STR R6, [R4,#0xC]
STR R6, [R0,#0x10]
STR R6, [R4,#8]
STR R6, [R4,#4]
STR R6, [R4,#0x18]
STR R6, [R4,#0x14]
STR R6, [R4,#0x10]
MOV R0, R7
MOVS R1, #0
BL __aeabi_fcmpeq @fcmpeq(LP_HZ, 0)
CBZ R0, loc_44
B loc_90
@; ---------------------------------------------------------------------------
@;
@;loc_42:
@; B loc_42
@; ---------------------------------------------------------------------------
loc_44:
MOV R0, R7
MOV.W R1, #0x43800000
BL __aeabi_fmul
BL __aeabi_f2d
MOV R8, R0
MOV R0, R7
MOV R9, R1
BL __aeabi_f2d
MOV R6, R0
LDRH R0, [R5]
MOV R7, R1
BL __aeabi_i2d
ADR R3, dword_F8
LDRD.W R2, R3, [R3]
BL __aeabi_ddiv
MOV R2, R0
MOV R3, R1
MOV R0, R6
MOV R1, R7
BL __aeabi_dadd
MOV R2, R0
MOV R3, R1
MOV R0, R8
MOV R1, R9
BL __aeabi_ddiv
BL __aeabi_d2uiz
STRH R0, [R4,#0x1C]
B loc_92
@; ---------------------------------------------------------------------------
loc_90:
STRH R6, [R4,#0x1C]
loc_92:
LDR R7, [R5,#8]
MOVS R1, #0
MOV R0, R7
BL __aeabi_fcmpeq
CBNZ R0, loc_E4
LDRH R6, [R5]
LSLS R0, R6, #8
BL __aeabi_i2d
MOV R10, R0
MOV R0, R7
MOV R11, R1
BL __aeabi_f2d
ADR R3, dword_F8
LDRD.W R2, R3, [R3]
BL __aeabi_dmul
MOV R8, R0
MOV R0, R6
MOV R9, R1
BL __aeabi_i2d
MOV R2, R0
MOV R3, R1
MOV R0, R8
MOV R1, R9
BL __aeabi_dadd
MOV R2, R0
MOV R3, R1
MOV R0, R10
MOV R1, R11
BL __aeabi_ddiv
BL __aeabi_d2uiz
STRH R0, [R4,#0x1E]
B loc_E8
@; ---------------------------------------------------------------------------
loc_E4:
MOVS R3, #0
STRH R3, [R4,#0x1E]
loc_E8:
LDRH R2, [R5]
MOV.W