From 769ac3d0c78a6abef6330aa7244ccdb3da133dc1 Mon Sep 17 00:00:00 2001 From: vadyschka01 Date: Tue, 19 May 2026 14:01:03 +0300 Subject: [PATCH] filter_with_fmac Co-authored-by: Copilot --- Debug/.ninja_deps | Bin 27876 -> 28584 bytes Debug/.ninja_log | 14 + Debug/Exe/fft_az.out | Bin 246812 -> 0 bytes Debug/Exe/fft_az.out.rsp | 1 + Debug/List/fft_az.map | 815 ++++++++++++++++---------------- Debug/Obj/dsp_manager.o | Bin 15079 -> 14844 bytes Debug/Obj/imu.o | Bin 30481 -> 30481 bytes Debug/Obj/main.o | Bin 24421 -> 24421 bytes Debug/Obj/startup_stm32g431xx.o | Bin 62759 -> 62759 bytes Debug/Obj/system_stm32g4xx.o | Bin 14214 -> 14214 bytes drone_par_on_gx_up.py | 133 ++++++ dsp_manager.c | 23 +- dsp_manager.h | 4 + 13 files changed, 587 insertions(+), 403 deletions(-) delete mode 100644 Debug/Exe/fft_az.out create mode 100644 Debug/Exe/fft_az.out.rsp create mode 100644 drone_par_on_gx_up.py diff --git a/Debug/.ninja_deps b/Debug/.ninja_deps index 54a0a453cda1ae265416e170f5830e6d0aca4043..3ffa1ea47296995ca6ce60aff525783d5de3c017 100644 GIT binary patch delta 162 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

XULp!Sd8~u43^@UDNxAqE^ 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 yZ`9F$+f(wkZHos>?$^?i<$RKocN^!&ML$dn>-& (total uncommitted space + 0x1'fe28). + + ******************************************************************************* *** RUNTIME MODEL ATTRIBUTES *** @@ -73,199 +88,202 @@ No sections matched the following patterns: section .textrw in "P2" - Section Kind Address Alignment Size Object - ------- ---- ------- --------- ---- ------ -"A0": 0x1d8 - .intvec ro code 0x800'0000 4 0x1d8 startup_stm32g431xx.o [1] - - 0x800'01d8 0x1d8 + Section Kind Address Alignment Size Object + ------- ---- ------- --------- ---- ------ +"A0": 0x1d8 + .intvec ro code 0x800'0000 4 0x1d8 startup_stm32g431xx.o [1] + - 0x800'01d8 0x1d8 -"P1": 0x1'fe28 - .rodata const 0x800'01d8 4 0x8000 arm_common_tables.o [3] - .rodata const 0x800'81d8 4 0x4000 arm_common_tables.o [3] - .rodata const 0x800'c1d8 4 0x4000 arm_common_tables.o [3] - .rodata const 0x801'01d8 4 0x2000 arm_common_tables.o [3] - .rodata const 0x801'21d8 4 0x2000 arm_common_tables.o [3] - .rodata const 0x801'41d8 4 0x1f80 arm_common_tables.o [3] - .rodata const 0x801'6158 4 0x1dc0 arm_common_tables.o [3] - .rodata const 0x801'7f18 4 0x1000 arm_common_tables.o [3] - .rodata const 0x801'8f18 4 0x1000 arm_common_tables.o [3] - .rodata const 0x801'9f18 4 0xe10 arm_common_tables.o [3] - .rodata const 0x801'ad28 4 0x804 arm_common_tables.o [3] - .rodata const 0x801'b52c 4 0x800 arm_common_tables.o [3] - .rodata const 0x801'bd2c 4 0x800 arm_common_tables.o [3] - .text ro code 0x801'c52c 4 0x704 arm_cfft_f32.o [3] - .text ro code 0x801'cc30 4 0x592 arm_cfft_radix8_f32.o [3] - .text ro code 0x801'd1c2 2 0x2a copy_init3.o [5] - .text ro code 0x801'd1ec 4 0x46 arm_bitreversal2.o [3] - .rodata const 0x801'd234 4 0x400 arm_common_tables.o [3] - .rodata const 0x801'd634 4 0x400 arm_common_tables.o [3] - .rodata const 0x801'da34 4 0x380 arm_common_tables.o [3] - .rodata const 0x801'ddb4 4 0x370 arm_common_tables.o [3] - .text ro code 0x801'e124 4 0x360 imu.o [1] - .text ro code 0x801'e484 4 0x214 cos_sin_tan_32.o [4] - .text ro code 0x801'e698 4 0x1e U64Shr.o [5] - .text ro code 0x801'e6b8 4 0x248 main.o [1] - .text ro code 0x801'e900 4 0x128 motors.o [1] - .text ro code 0x801'ea28 4 0x1c0 dsp_manager.o [1] - .text ro code 0x801'ebe8 4 0xa0 system_stm32g4xx.o [1] - .text ro code 0x801'ec88 4 0x1bc arm_rfft_fast_init_f32.o [3] - .text ro code 0x801'ee44 4 0x90 arm_cos_f32.o [3] - .text ro code 0x801'eed4 4 0x10e arm_mult_f32.o [3] - .text ro code 0x801'efe4 4 0x182 arm_rfft_fast_f32.o [3] - .text ro code 0x801'f168 4 0x154 arm_cmplx_mag_f32.o [3] - .text ro code 0x801'f2bc 4 0x98 arm_cfft_init_f32.o [3] - .rodata const 0x801'f354 4 0x200 arm_common_tables.o [3] - .rodata const 0x801'f554 4 0x200 arm_common_tables.o [3] - .rodata const 0x801'f754 4 0x1a0 arm_common_tables.o [3] - .rodata const 0x801'f8f4 4 0x100 arm_common_tables.o [3] - .rodata const 0x801'f9f4 4 0x100 arm_common_tables.o [3] - .rodata const 0x801'faf4 4 0x80 arm_common_tables.o [3] - .rodata const 0x801'fb74 4 0x80 arm_common_tables.o [3] - .rodata const 0x801'fbf4 4 0x70 arm_common_tables.o [3] - .rodata const 0x801'fc64 4 0x60 arm_common_tables.o [3] - .text ro code 0x801'fcc4 2 0x38 zero_init3.o [5] - .rodata const 0x801'fcfc 4 0x28 arm_common_tables.o [3] - .text ro code 0x801'fd24 4 0x28 data_init.o [5] - .text ro code 0x801'fd4c 4 0x22 fpinit_M.o [4] - .text ro code 0x801'fd70 4 0x22 cmain.o [5] - .text ro code 0x801'fd92 2 0x4 low_level_init.o [2] - .text ro code 0x801'fd96 2 0x4 exit.o [2] - .text ro code 0x801'fd9c 4 0x4 cexit.o [5] - .text ro code 0x801'fda0 4 0xa cexit_2.o [5] - .text ro code 0x801'fdac 4 0x14 exit.o [6] - .iar.init_table const 0x801'fdc0 4 0x24 - Linker created - - .text ro code 0x801'fde4 4 0x1e cstartup_M.o [5] - .rodata const 0x801'fe04 4 0x10 system_stm32g4xx.o [1] - .rodata const 0x801'fe14 4 0x10 arm_const_structs.o [3] - .rodata const 0x801'fe24 4 0x10 arm_const_structs.o [3] - .rodata const 0x801'fe34 4 0x10 arm_const_structs.o [3] - .rodata const 0x801'fe44 4 0x10 arm_const_structs.o [3] - .rodata const 0x801'fe54 4 0x10 arm_const_structs.o [3] - .rodata const 0x801'fe64 4 0x10 arm_const_structs.o [3] - .rodata const 0x801'fe74 4 0x10 arm_const_structs.o [3] - .rodata const 0x801'fe84 4 0x10 arm_const_structs.o [3] - .rodata const 0x801'fe94 4 0x10 arm_const_structs.o [3] - .text ro code 0x801'fea4 4 0x10 startup_stm32g431xx.o [1] - .text ro code 0x801'feb4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'feb8 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'febc 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fec0 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fec4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fec8 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fecc 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fed0 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fed4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fed8 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fedc 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fee0 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fee4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fee8 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'feec 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fef0 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fef4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fef8 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'fefc 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff00 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff04 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff08 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff0c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff10 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff14 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff18 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff1c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff20 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff24 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff28 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff2c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff30 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff34 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff38 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff3c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff40 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff44 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff48 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff4c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff50 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff54 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff58 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff5c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff60 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff64 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff68 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff6c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff70 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff74 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff78 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff7c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff80 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff84 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff88 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff8c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff90 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff94 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff98 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ff9c 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffa0 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffa4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffa8 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffac 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffb0 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffb4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffb8 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffbc 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffc0 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffc4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffc8 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffcc 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffd0 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffd4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffd8 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffdc 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffe0 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffe4 2 0x4 startup_stm32g431xx.o [1] - .text ro code 0x801'ffe8 2 0x4 startup_stm32g431xx.o [1] - .rodata const 0x801'ffec 0x0 zero_init3.o [5] - .rodata const 0x801'ffec 0x0 copy_init3.o [5] - Initializer bytes const 0x801'ffec 4 0x14 - - 0x802'0000 0x1'fe28 +"P3", part 1 of 3: 0x14 + P3 s0 0x2000'0000 0x14 + .data inited 0x2000'0000 4 0x4 main.o [1] + .data inited 0x2000'0004 4 0x4 main.o [1] + .data inited 0x2000'0008 4 0x4 main.o [1] + .data inited 0x2000'000c 4 0x4 main.o [1] + .data inited 0x2000'0010 4 0x4 system_stm32g4xx.o [1] + - 0x2000'0014 0x14 -"P3", part 1 of 3: 0x14 - P3 s0 0x2000'0000 0x14 - .data inited 0x2000'0000 4 0x4 main.o [1] - .data inited 0x2000'0004 4 0x4 main.o [1] - .data inited 0x2000'0008 4 0x4 main.o [1] - .data inited 0x2000'000c 4 0x4 main.o [1] - .data inited 0x2000'0010 4 0x4 system_stm32g4xx.o [1] - - 0x2000'0014 0x14 +"P3", part 2 of 3: 0x1c7c + .bss zero 0x2000'0014 4 0x800 dsp_manager.o [1] + .bss zero 0x2000'0814 4 0x800 dsp_manager.o [1] + .bss zero 0x2000'1014 4 0x800 dsp_manager.o [1] + .bss zero 0x2000'1814 4 0x400 dsp_manager.o [1] + .bss zero 0x2000'1c14 4 0x1c imu.o [1] + .bss zero 0x2000'1c30 4 0x1c imu.o [1] + .bss zero 0x2000'1c4c 4 0x1c imu.o [1] + .bss zero 0x2000'1c68 4 0x18 dsp_manager.o [1] + .bss zero 0x2000'1c80 4 0x4 imu.o [1] + .bss zero 0x2000'1c84 4 0x4 imu.o [1] + .bss zero 0x2000'1c88 2 0x2 dsp_manager.o [1] + .bss zero 0x2000'1c8a 2 0x2 imu.o [1] + .bss zero 0x2000'1c8c 0x1 main.o [1] + - 0x2000'1c8d 0x1c79 -"P3", part 2 of 3: 0x1c7c - .bss zero 0x2000'0014 4 0x800 dsp_manager.o [1] - .bss zero 0x2000'0814 4 0x800 dsp_manager.o [1] - .bss zero 0x2000'1014 4 0x800 dsp_manager.o [1] - .bss zero 0x2000'1814 4 0x400 dsp_manager.o [1] - .bss zero 0x2000'1c14 4 0x1c imu.o [1] - .bss zero 0x2000'1c30 4 0x1c imu.o [1] - .bss zero 0x2000'1c4c 4 0x1c imu.o [1] - .bss zero 0x2000'1c68 4 0x18 dsp_manager.o [1] - .bss zero 0x2000'1c80 4 0x4 imu.o [1] - .bss zero 0x2000'1c84 4 0x4 imu.o [1] - .bss zero 0x2000'1c88 2 0x2 dsp_manager.o [1] - .bss zero 0x2000'1c8a 2 0x2 imu.o [1] - .bss zero 0x2000'1c8c 0x1 dsp_manager.o [1] - .bss zero 0x2000'1c8d 0x1 main.o [1] - - 0x2000'1c8e 0x1c7a +"P3", part 3 of 3: 0x800 + CSTACK 0x2000'1c90 8 0x800 + CSTACK uninit 0x2000'1c90 0x800 + - 0x2000'2490 0x800 -"P3", part 3 of 3: 0x800 - CSTACK 0x2000'1c90 8 0x800 - CSTACK uninit 0x2000'1c90 0x800 - - 0x2000'2490 0x800 +"P1", part 1 of 2 (*** FAILED ***): 0x1'fe34 + .rodata const 0x8000 arm_common_tables.o [3] + .rodata const 0x4000 arm_common_tables.o [3] + .rodata const 0x4000 arm_common_tables.o [3] + .rodata const 0x2000 arm_common_tables.o [3] + .rodata const 0x2000 arm_common_tables.o [3] + .rodata const 0x1f80 arm_common_tables.o [3] + .rodata const 0x1dc0 arm_common_tables.o [3] + .rodata const 0x1000 arm_common_tables.o [3] + .rodata const 0x1000 arm_common_tables.o [3] + .rodata const 0xe10 arm_common_tables.o [3] + .rodata const 0x804 arm_common_tables.o [3] + .rodata const 0x800 arm_common_tables.o [3] + .rodata const 0x800 arm_common_tables.o [3] + .text ro code 0x704 arm_cfft_f32.o [3] + .text ro code 0x592 arm_cfft_radix8_f32.o [3] + .text ro code 0x2a copy_init3.o [5] + .text ro code 0x46 arm_bitreversal2.o [3] + .rodata const 0x400 arm_common_tables.o [3] + .rodata const 0x400 arm_common_tables.o [3] + .rodata const 0x380 arm_common_tables.o [3] + .rodata const 0x370 arm_common_tables.o [3] + .text ro code 0x360 imu.o [1] + .text ro code 0x214 cos_sin_tan_32.o [4] + .text ro code 0x1e U64Shr.o [5] + .text ro code 0x248 main.o [1] + .text ro code 0x128 motors.o [1] + .text ro code 0x1e0 dsp_manager.o [1] + .text ro code 0xa0 system_stm32g4xx.o [1] + .text ro code 0x1bc arm_rfft_fast_init_f32.o [3] + .text ro code 0x90 arm_cos_f32.o [3] + .text ro code 0x10e arm_mult_f32.o [3] + .text ro code 0x182 arm_rfft_fast_f32.o [3] + .text ro code 0x154 arm_cmplx_mag_f32.o [3] + .text ro code 0x98 arm_cfft_init_f32.o [3] + .rodata const 0x200 arm_common_tables.o [3] + .rodata const 0x200 arm_common_tables.o [3] + .rodata const 0x1a0 arm_common_tables.o [3] + .rodata const 0x100 arm_common_tables.o [3] + .rodata const 0x100 arm_common_tables.o [3] + .rodata const 0x80 arm_common_tables.o [3] + .rodata const 0x80 arm_common_tables.o [3] + .rodata const 0x70 arm_common_tables.o [3] + .rodata const 0x60 arm_common_tables.o [3] + .text ro code 0x38 zero_init3.o [5] + .rodata const 0x28 arm_common_tables.o [3] + .text ro code 0x28 data_init.o [5] + .text ro code 0x22 fpinit_M.o [4] + .text ro code 0x22 cmain.o [5] + .text ro code 0x4 low_level_init.o [2] + .text ro code 0x4 exit.o [2] + .text ro code 0x4 cexit.o [5] + .text ro code 0xa cexit_2.o [5] + .text ro code 0x14 exit.o [6] + .iar.init_table const 0x18 - Linker created - + .text ro code 0x1e cstartup_M.o [5] + .rodata const 0x10 system_stm32g4xx.o [1] + .rodata const 0x10 arm_const_structs.o [3] + .rodata const 0x10 arm_const_structs.o [3] + .rodata const 0x10 arm_const_structs.o [3] + .rodata const 0x10 arm_const_structs.o [3] + .rodata const 0x10 arm_const_structs.o [3] + .rodata const 0x10 arm_const_structs.o [3] + .rodata const 0x10 arm_const_structs.o [3] + .rodata const 0x10 arm_const_structs.o [3] + .rodata const 0x10 arm_const_structs.o [3] + .text ro code 0x10 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .text ro code 0x4 startup_stm32g431xx.o [1] + .rodata const 0x0 zero_init3.o [5] + .rodata const 0x0 copy_init3.o [5] + 0x1'fe34 + +"P1", part 2 of 2 (*** FAILED ***): 0x14 + Initializer bytes const 0x14 (used: 0x0) + 0x14 Unused ranges: - From To Size - ---- -- ---- - 0x2000'2490 0x2000'3fff 0x1b70 - 0x2000'4000 0x2000'57ff 0x1800 + From To Size + ---- -- ---- + 0x800'01d8 0x801'ffff 0x1'fe28 + 0x2000'2490 0x2000'3fff 0x1b70 + 0x2000'4000 0x2000'57ff 0x1800 ******************************************************************************* @@ -275,12 +293,10 @@ Unused ranges: Address Size ------- ---- Zero (__iar_zero_init3) - 1 destination range, total size 0x1c7a: - 0x2000'0014 0x1c7a + 1 destination range, total size 0x1c79: + 0x2000'0014 0x1c79 Copy (__iar_copy_init3) - 1 source range, total size 0x14: - 0x801'ffec 0x14 1 destination range, total size 0x14: 0x2000'0000 0x14 @@ -297,14 +313,14 @@ command line/config: Total: C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj: [1] - dsp_manager.o 448 7'195 + dsp_manager.o 480 7'194 imu.o 864 94 - main.o 584 16 17 + main.o 584 17 motors.o 296 startup_stm32g431xx.o 800 - system_stm32g4xx.o 160 20 4 + system_stm32g4xx.o 160 16 4 --------------------------------------------------- - Total: 3'152 36 7'310 + Total: 3'184 16 7'309 dl7M_tln.a: [2] exit.o 4 @@ -351,9 +367,9 @@ shb_l.a: [6] Total: 20 Gaps 12 4 - Linker created 36 2'048 + Linker created 44 2'048 ------------------------------------------------------- - Grand Total: 9'032 122'040 9'358 + Grand Total: 9'064 122'028 9'357 ******************************************************************************* @@ -362,258 +378,257 @@ shb_l.a: [6] Entry Address Size Type Object ----- ------- ---- ---- ------ -.iar.init_table$$Base 0x801'fdc0 -- Gb - Linker created - -.iar.init_table$$Limit 0x801'fde4 -- Gb - Linker created - -?main 0x801'fd71 Code Gb cmain.o [5] -ADC1_2_IRQHandler 0x801'ff1d Code Wk startup_stm32g431xx.o [1] -AHBPrescTable 0x801'fe04 0x10 Data Gb system_stm32g4xx.o [1] -BusFault_Handler 0x801'fec1 Code Wk startup_stm32g431xx.o [1] -By2Pi 0x801'e67c 0x1c Data Lc cos_sin_tan_32.o [4] -COMP1_2_3_IRQHandler 0x801'ffb9 Code Wk startup_stm32g431xx.o [1] -COMP4_IRQHandler 0x801'ffbd Code Wk startup_stm32g431xx.o [1] -CORDIC_IRQHandler 0x801'ffe5 Code Wk startup_stm32g431xx.o [1] -CRS_IRQHandler 0x801'ffc1 Code Wk startup_stm32g431xx.o [1] +.iar.init_table$$Base 0x1'fc08 -- Gb - Linker created - +.iar.init_table$$Limit 0x1'fc2c -- Gb - Linker created - +?main 0x1'fbb9 Code Gb cmain.o [5] +ADC1_2_IRQHandler 0x1'fd65 Code Wk startup_stm32g431xx.o [1] +AHBPrescTable 0x1'fc4c 0x10 Data Gb system_stm32g4xx.o [1] +BusFault_Handler 0x1'fd09 Code Wk startup_stm32g431xx.o [1] +By2Pi 0x1'e4a4 0x1c Data Lc cos_sin_tan_32.o [4] +COMP1_2_3_IRQHandler 0x1'fe01 Code Wk startup_stm32g431xx.o [1] +COMP4_IRQHandler 0x1'fe05 Code Wk startup_stm32g431xx.o [1] +CORDIC_IRQHandler 0x1'fe2d Code Wk startup_stm32g431xx.o [1] +CRS_IRQHandler 0x1'fe09 Code Wk startup_stm32g431xx.o [1] CSTACK$$Base 0x2000'1c90 -- Gb - Linker created - CSTACK$$Limit 0x2000'2490 -- Gb - Linker created - DMA1_Channel1_IRQHandler - 0x801'ff05 Code Wk startup_stm32g431xx.o [1] + 0x1'fd4d Code Wk startup_stm32g431xx.o [1] DMA1_Channel2_IRQHandler - 0x801'ff09 Code Wk startup_stm32g431xx.o [1] + 0x1'fd51 Code Wk startup_stm32g431xx.o [1] DMA1_Channel3_IRQHandler - 0x801'ff0d Code Wk startup_stm32g431xx.o [1] + 0x1'fd55 Code Wk startup_stm32g431xx.o [1] DMA1_Channel4_IRQHandler - 0x801'ff11 Code Wk startup_stm32g431xx.o [1] + 0x1'fd59 Code Wk startup_stm32g431xx.o [1] DMA1_Channel5_IRQHandler - 0x801'ff15 Code Wk startup_stm32g431xx.o [1] + 0x1'fd5d Code Wk startup_stm32g431xx.o [1] DMA1_Channel6_IRQHandler - 0x801'ff19 Code Wk startup_stm32g431xx.o [1] + 0x1'fd61 Code Wk startup_stm32g431xx.o [1] DMA2_Channel1_IRQHandler - 0x801'ffa1 Code Wk startup_stm32g431xx.o [1] + 0x1'fde9 Code Wk startup_stm32g431xx.o [1] DMA2_Channel2_IRQHandler - 0x801'ffa5 Code Wk startup_stm32g431xx.o [1] + 0x1'fded Code Wk startup_stm32g431xx.o [1] DMA2_Channel3_IRQHandler - 0x801'ffa9 Code Wk startup_stm32g431xx.o [1] + 0x1'fdf1 Code Wk startup_stm32g431xx.o [1] DMA2_Channel4_IRQHandler - 0x801'ffad Code Wk startup_stm32g431xx.o [1] + 0x1'fdf5 Code Wk startup_stm32g431xx.o [1] DMA2_Channel5_IRQHandler - 0x801'ffb1 Code Wk startup_stm32g431xx.o [1] + 0x1'fdf9 Code Wk startup_stm32g431xx.o [1] DMA2_Channel6_IRQHandler - 0x801'ffe1 Code Wk startup_stm32g431xx.o [1] -DMAMUX_OVR_IRQHandler 0x801'ffdd Code Wk startup_stm32g431xx.o [1] -DSP_AddSample 0x801'ea79 0x2e Code Gb dsp_manager.o [1] -DSP_Init 0x801'ea29 0x50 Code Gb dsp_manager.o [1] -DSP_Process 0x801'eaa9 0x108 Code Gb dsp_manager.o [1] -DebugMon_Handler 0x801'fecd Code Wk startup_stm32g431xx.o [1] -EXTI0_IRQHandler 0x801'fef1 Code Wk startup_stm32g431xx.o [1] -EXTI15_10_IRQHandler 0x801'ff75 Code Wk startup_stm32g431xx.o [1] -EXTI1_IRQHandler 0x801'fef5 Code Wk startup_stm32g431xx.o [1] -EXTI2_IRQHandler 0x801'fef9 Code Wk startup_stm32g431xx.o [1] -EXTI3_IRQHandler 0x801'fefd Code Wk startup_stm32g431xx.o [1] -EXTI4_IRQHandler 0x801'ff01 Code Wk startup_stm32g431xx.o [1] -EXTI9_5_IRQHandler 0x801'ff31 Code Wk startup_stm32g431xx.o [1] -FDCAN1_IT0_IRQHandler 0x801'ff29 Code Wk startup_stm32g431xx.o [1] -FDCAN1_IT1_IRQHandler 0x801'ff2d Code Wk startup_stm32g431xx.o [1] -FLASH_IRQHandler 0x801'fee9 Code Wk startup_stm32g431xx.o [1] -FMAC_IRQHandler 0x801'ffe9 Code Wk startup_stm32g431xx.o [1] -FPU_IRQHandler 0x801'ffc9 Code Wk startup_stm32g431xx.o [1] -HardFault_Handler 0x801'feb9 Code Wk startup_stm32g431xx.o [1] -I2C1_ER_IRQHandler 0x801'ff55 Code Wk startup_stm32g431xx.o [1] -I2C1_EV_IRQHandler 0x801'ff51 Code Wk startup_stm32g431xx.o [1] -I2C1_Init 0x801'e1f7 0x56 Code Gb imu.o [1] -I2C2_ER_IRQHandler 0x801'ff5d Code Wk startup_stm32g431xx.o [1] -I2C2_EV_IRQHandler 0x801'ff59 Code Wk startup_stm32g431xx.o [1] -I2C3_ER_IRQHandler 0x801'ffd9 Code Wk startup_stm32g431xx.o [1] -I2C3_EV_IRQHandler 0x801'ffd5 Code Wk startup_stm32g431xx.o [1] -I2C_ReadMulti 0x801'e24d 0x5c Code Gb imu.o [1] -IMU_Calibrate 0x801'e375 0x5c Code Gb imu.o [1] -IMU_Init 0x801'e2ed 0x88 Code Gb imu.o [1] -IMU_ReadRawData 0x801'e3d1 0x50 Code Gb imu.o [1] -IMU_SetBank 0x801'e2d9 0x12 Code Gb imu.o [1] -IMU_WriteReg 0x801'e2a9 0x30 Code Lc imu.o [1] -LPTIM1_IRQHandler 0x801'ff91 Code Wk startup_stm32g431xx.o [1] -LPUART1_IRQHandler 0x801'ffd1 Code Wk startup_stm32g431xx.o [1] -MemManage_Handler 0x801'febd Code Wk startup_stm32g431xx.o [1] -Motors_Init 0x801'e901 0xb2 Code Gb motors.o [1] -NMI_Handler 0x801'feb5 Code Wk startup_stm32g431xx.o [1] -PVD_PVM_IRQHandler 0x801'fedd Code Wk startup_stm32g431xx.o [1] -PendSV_Handler 0x801'fed1 Code Wk startup_stm32g431xx.o [1] -RCC_IRQHandler 0x801'feed Code Wk startup_stm32g431xx.o [1] -RNG_IRQHandler 0x801'ffcd Code Wk startup_stm32g431xx.o [1] -RTC_Alarm_IRQHandler 0x801'ff79 Code Wk startup_stm32g431xx.o [1] + 0x1'fe29 Code Wk startup_stm32g431xx.o [1] +DMAMUX_OVR_IRQHandler 0x1'fe25 Code Wk startup_stm32g431xx.o [1] +DSP_AddSample 0x1'e8a1 0x2e Code Gb dsp_manager.o [1] +DSP_Init 0x1'e851 0x50 Code Gb dsp_manager.o [1] +DSP_Process 0x1'e8d1 0x128 Code Gb dsp_manager.o [1] +DebugMon_Handler 0x1'fd15 Code Wk startup_stm32g431xx.o [1] +EXTI0_IRQHandler 0x1'fd39 Code Wk startup_stm32g431xx.o [1] +EXTI15_10_IRQHandler 0x1'fdbd Code Wk startup_stm32g431xx.o [1] +EXTI1_IRQHandler 0x1'fd3d Code Wk startup_stm32g431xx.o [1] +EXTI2_IRQHandler 0x1'fd41 Code Wk startup_stm32g431xx.o [1] +EXTI3_IRQHandler 0x1'fd45 Code Wk startup_stm32g431xx.o [1] +EXTI4_IRQHandler 0x1'fd49 Code Wk startup_stm32g431xx.o [1] +EXTI9_5_IRQHandler 0x1'fd79 Code Wk startup_stm32g431xx.o [1] +FDCAN1_IT0_IRQHandler 0x1'fd71 Code Wk startup_stm32g431xx.o [1] +FDCAN1_IT1_IRQHandler 0x1'fd75 Code Wk startup_stm32g431xx.o [1] +FLASH_IRQHandler 0x1'fd31 Code Wk startup_stm32g431xx.o [1] +FMAC_IRQHandler 0x1'fe31 Code Wk startup_stm32g431xx.o [1] +FPU_IRQHandler 0x1'fe11 Code Wk startup_stm32g431xx.o [1] +HardFault_Handler 0x1'fd01 Code Wk startup_stm32g431xx.o [1] +I2C1_ER_IRQHandler 0x1'fd9d Code Wk startup_stm32g431xx.o [1] +I2C1_EV_IRQHandler 0x1'fd99 Code Wk startup_stm32g431xx.o [1] +I2C1_Init 0x1'e01f 0x56 Code Gb imu.o [1] +I2C2_ER_IRQHandler 0x1'fda5 Code Wk startup_stm32g431xx.o [1] +I2C2_EV_IRQHandler 0x1'fda1 Code Wk startup_stm32g431xx.o [1] +I2C3_ER_IRQHandler 0x1'fe21 Code Wk startup_stm32g431xx.o [1] +I2C3_EV_IRQHandler 0x1'fe1d Code Wk startup_stm32g431xx.o [1] +I2C_ReadMulti 0x1'e075 0x5c Code Gb imu.o [1] +IMU_Calibrate 0x1'e19d 0x5c Code Gb imu.o [1] +IMU_Init 0x1'e115 0x88 Code Gb imu.o [1] +IMU_ReadRawData 0x1'e1f9 0x50 Code Gb imu.o [1] +IMU_SetBank 0x1'e101 0x12 Code Gb imu.o [1] +IMU_WriteReg 0x1'e0d1 0x30 Code Lc imu.o [1] +LPTIM1_IRQHandler 0x1'fdd9 Code Wk startup_stm32g431xx.o [1] +LPUART1_IRQHandler 0x1'fe19 Code Wk startup_stm32g431xx.o [1] +MemManage_Handler 0x1'fd05 Code Wk startup_stm32g431xx.o [1] +Motors_Init 0x1'e729 0xb2 Code Gb motors.o [1] +NMI_Handler 0x1'fcfd Code Wk startup_stm32g431xx.o [1] +PVD_PVM_IRQHandler 0x1'fd25 Code Wk startup_stm32g431xx.o [1] +PendSV_Handler 0x1'fd19 Code Wk startup_stm32g431xx.o [1] +RCC_IRQHandler 0x1'fd35 Code Wk startup_stm32g431xx.o [1] +RNG_IRQHandler 0x1'fe15 Code Wk startup_stm32g431xx.o [1] +RTC_Alarm_IRQHandler 0x1'fdc1 Code Wk startup_stm32g431xx.o [1] RTC_TAMP_LSECSS_IRQHandler - 0x801'fee1 Code Wk startup_stm32g431xx.o [1] -RTC_WKUP_IRQHandler 0x801'fee5 Code Wk startup_stm32g431xx.o [1] -Region$$Table$$Base 0x801'fdc0 -- Gb - Linker created - -Region$$Table$$Limit 0x801'fde4 -- Gb - Linker created - -Reset_Handler 0x801'fea5 Code Wk startup_stm32g431xx.o [1] -SAI1_IRQHandler 0x801'ffc5 Code Wk startup_stm32g431xx.o [1] -SPI1_IRQHandler 0x801'ff61 Code Wk startup_stm32g431xx.o [1] -SPI2_IRQHandler 0x801'ff65 Code Wk startup_stm32g431xx.o [1] -SPI3_IRQHandler 0x801'ff95 Code Wk startup_stm32g431xx.o [1] -SVC_Handler 0x801'fec9 Code Wk startup_stm32g431xx.o [1] -Set_Motor_Individual 0x801'e9c5 0x16 Code Gb motors.o [1] -Set_Motors 0x801'e9b3 0x12 Code Gb motors.o [1] -SysTick_Handler 0x801'fed5 Code Wk startup_stm32g431xx.o [1] + 0x1'fd29 Code Wk startup_stm32g431xx.o [1] +RTC_WKUP_IRQHandler 0x1'fd2d Code Wk startup_stm32g431xx.o [1] +Region$$Table$$Base 0x1'fc08 -- Gb - Linker created - +Region$$Table$$Limit 0x1'fc2c -- Gb - Linker created - +Reset_Handler 0x1'fced Code Wk startup_stm32g431xx.o [1] +SAI1_IRQHandler 0x1'fe0d Code Wk startup_stm32g431xx.o [1] +SPI1_IRQHandler 0x1'fda9 Code Wk startup_stm32g431xx.o [1] +SPI2_IRQHandler 0x1'fdad Code Wk startup_stm32g431xx.o [1] +SPI3_IRQHandler 0x1'fddd Code Wk startup_stm32g431xx.o [1] +SVC_Handler 0x1'fd11 Code Wk startup_stm32g431xx.o [1] +Set_Motor_Individual 0x1'e7ed 0x16 Code Gb motors.o [1] +Set_Motors 0x1'e7db 0x12 Code Gb motors.o [1] +SysTick_Handler 0x1'fd1d Code Wk startup_stm32g431xx.o [1] SystemClock_Config_160MHz - 0x801'e77f 0x54 Code Gb main.o [1] + 0x1'e5a7 0x54 Code Gb main.o [1] SystemCoreClock 0x2000'0010 0x4 Data Gb system_stm32g4xx.o [1] -SystemCoreClockUpdate 0x801'ebf5 0x78 Code Gb system_stm32g4xx.o [1] -SystemInit 0x801'ebe9 0xc Code Gb system_stm32g4xx.o [1] +SystemCoreClockUpdate 0x1'ea3d 0x78 Code Gb system_stm32g4xx.o [1] +SystemInit 0x1'ea31 0xc Code Gb system_stm32g4xx.o [1] TIM1_BRK_TIM15_IRQHandler - 0x801'ff35 Code Wk startup_stm32g431xx.o [1] -TIM1_CC_IRQHandler 0x801'ff41 Code Wk startup_stm32g431xx.o [1] + 0x1'fd7d Code Wk startup_stm32g431xx.o [1] +TIM1_CC_IRQHandler 0x1'fd89 Code Wk startup_stm32g431xx.o [1] TIM1_TRG_COM_TIM17_IRQHandler - 0x801'ff3d Code Wk startup_stm32g431xx.o [1] + 0x1'fd85 Code Wk startup_stm32g431xx.o [1] TIM1_UP_TIM16_IRQHandler - 0x801'ff39 Code Wk startup_stm32g431xx.o [1] -TIM2_IRQHandler 0x801'ff45 Code Wk startup_stm32g431xx.o [1] -TIM3_IRQHandler 0x801'ff49 Code Wk startup_stm32g431xx.o [1] -TIM4_IRQHandler 0x801'ff4d Code Wk startup_stm32g431xx.o [1] -TIM6_DAC_IRQHandler 0x801'e87b 0x14 Code Gb main.o [1] -TIM6_Init_1000Hz 0x801'e845 0x36 Code Gb main.o [1] -TIM7_IRQHandler 0x801'ff9d Code Wk startup_stm32g431xx.o [1] -TIM8_BRK_IRQHandler 0x801'ff81 Code Wk startup_stm32g431xx.o [1] -TIM8_CC_IRQHandler 0x801'ff8d Code Wk startup_stm32g431xx.o [1] + 0x1'fd81 Code Wk startup_stm32g431xx.o [1] +TIM2_IRQHandler 0x1'fd8d Code Wk startup_stm32g431xx.o [1] +TIM3_IRQHandler 0x1'fd91 Code Wk startup_stm32g431xx.o [1] +TIM4_IRQHandler 0x1'fd95 Code Wk startup_stm32g431xx.o [1] +TIM6_DAC_IRQHandler 0x1'e6a3 0x14 Code Gb main.o [1] +TIM6_Init_1000Hz 0x1'e66d 0x36 Code Gb main.o [1] +TIM7_IRQHandler 0x1'fde5 Code Wk startup_stm32g431xx.o [1] +TIM8_BRK_IRQHandler 0x1'fdc9 Code Wk startup_stm32g431xx.o [1] +TIM8_CC_IRQHandler 0x1'fdd5 Code Wk startup_stm32g431xx.o [1] TIM8_TRG_COM_IRQHandler - 0x801'ff89 Code Wk startup_stm32g431xx.o [1] -TIM8_UP_IRQHandler 0x801'ff85 Code Wk startup_stm32g431xx.o [1] -UART2_Init_921600 0x801'e7d3 0x50 Code Gb main.o [1] -UART4_IRQHandler 0x801'ff99 Code Wk startup_stm32g431xx.o [1] -UART_SendPacket 0x801'e823 0x22 Code Gb main.o [1] -UCPD1_IRQHandler 0x801'ffb5 Code Wk startup_stm32g431xx.o [1] -USART1_IRQHandler 0x801'ff69 Code Wk startup_stm32g431xx.o [1] -USART2_IRQHandler 0x801'ff6d Code Wk startup_stm32g431xx.o [1] -USART3_IRQHandler 0x801'ff71 Code Wk startup_stm32g431xx.o [1] -USBWakeUp_IRQHandler 0x801'ff7d Code Wk startup_stm32g431xx.o [1] -USB_HP_IRQHandler 0x801'ff21 Code Wk startup_stm32g431xx.o [1] -USB_LP_IRQHandler 0x801'ff25 Code Wk startup_stm32g431xx.o [1] -UsageFault_Handler 0x801'fec5 Code Wk startup_stm32g431xx.o [1] -WWDG_IRQHandler 0x801'fed9 Code Wk startup_stm32g431xx.o [1] -__NVIC_EnableIRQ 0x801'e6b9 0x1c Code Lc main.o [1] -__aeabi_llsr 0x801'e699 Code Gb U64Shr.o [5] -__cmain 0x801'fd71 Code Gb cmain.o [5] -__exit 0x801'fdad 0x14 Code Gb exit.o [6] -__iar_Sin_accurate32 0x801'e485 0x1c8 Code Lc cos_sin_tan_32.o [4] -__iar_copy_init3 0x801'd1c3 0x2a Code Gb copy_init3.o [5] -__iar_cos_accurate32 0x801'e675 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_cos_accuratef 0x801'e675 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_cos_medium32 0x801'e675 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_cos_mediumf 0x801'e675 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_cos_small32 0x801'e675 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_cos_smallf 0x801'e675 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_cosf 0x801'e675 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_data_init3 0x801'fd25 0x28 Code Gb data_init.o [5] -__iar_init_vfp 0x801'fd4d Code Gb fpinit_M.o [4] -__iar_program_start 0x801'fde5 Code Gb cstartup_M.o [5] -__iar_sin_accurate32 0x801'e679 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_sin_accuratef 0x801'e679 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_sin_medium32 0x801'e679 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_sin_mediumf 0x801'e679 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_sin_small32 0x801'e679 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_sin_smallf 0x801'e679 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_sinf 0x801'e679 0x4 Code Gb cos_sin_tan_32.o [4] -__iar_zero_init3 0x801'fcc5 0x38 Code Gb zero_init3.o [5] -__low_level_init 0x801'fd93 0x4 Code Gb low_level_init.o [2] + 0x1'fdd1 Code Wk startup_stm32g431xx.o [1] +TIM8_UP_IRQHandler 0x1'fdcd Code Wk startup_stm32g431xx.o [1] +UART2_Init_921600 0x1'e5fb 0x50 Code Gb main.o [1] +UART4_IRQHandler 0x1'fde1 Code Wk startup_stm32g431xx.o [1] +UART_SendPacket 0x1'e64b 0x22 Code Gb main.o [1] +UCPD1_IRQHandler 0x1'fdfd Code Wk startup_stm32g431xx.o [1] +USART1_IRQHandler 0x1'fdb1 Code Wk startup_stm32g431xx.o [1] +USART2_IRQHandler 0x1'fdb5 Code Wk startup_stm32g431xx.o [1] +USART3_IRQHandler 0x1'fdb9 Code Wk startup_stm32g431xx.o [1] +USBWakeUp_IRQHandler 0x1'fdc5 Code Wk startup_stm32g431xx.o [1] +USB_HP_IRQHandler 0x1'fd69 Code Wk startup_stm32g431xx.o [1] +USB_LP_IRQHandler 0x1'fd6d Code Wk startup_stm32g431xx.o [1] +UsageFault_Handler 0x1'fd0d Code Wk startup_stm32g431xx.o [1] +WWDG_IRQHandler 0x1'fd21 Code Wk startup_stm32g431xx.o [1] +__NVIC_EnableIRQ 0x1'e4e1 0x1c Code Lc main.o [1] +__aeabi_llsr 0x1'e4c1 Code Gb U64Shr.o [5] +__cmain 0x1'fbb9 Code Gb cmain.o [5] +__exit 0x1'fbf5 0x14 Code Gb exit.o [6] +__iar_Sin_accurate32 0x1'e2ad 0x1c8 Code Lc cos_sin_tan_32.o [4] +__iar_copy_init3 0x1'cfeb 0x2a Code Gb copy_init3.o [5] +__iar_cos_accurate32 0x1'e49d 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_cos_accuratef 0x1'e49d 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_cos_medium32 0x1'e49d 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_cos_mediumf 0x1'e49d 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_cos_small32 0x1'e49d 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_cos_smallf 0x1'e49d 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_cosf 0x1'e49d 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_data_init3 0x1'fb6d 0x28 Code Gb data_init.o [5] +__iar_init_vfp 0x1'fb95 Code Gb fpinit_M.o [4] +__iar_program_start 0x1'fc2d Code Gb cstartup_M.o [5] +__iar_sin_accurate32 0x1'e4a1 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_sin_accuratef 0x1'e4a1 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_sin_medium32 0x1'e4a1 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_sin_mediumf 0x1'e4a1 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_sin_small32 0x1'e4a1 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_sin_smallf 0x1'e4a1 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_sinf 0x1'e4a1 0x4 Code Gb cos_sin_tan_32.o [4] +__iar_zero_init3 0x1'fb0d 0x38 Code Gb zero_init3.o [5] +__low_level_init 0x1'fbdb 0x4 Code Gb low_level_init.o [2] __vector_table 0x800'0000 Data Gb startup_stm32g431xx.o [1] -_call_main 0x801'fd7d Code Gb cmain.o [5] -_exit 0x801'fd9d Code Gb cexit.o [5] -_exit_2 0x801'fda1 Code Gb cexit_2.o [5] +_call_main 0x1'fbc5 Code Gb cmain.o [5] +_exit 0x1'fbe5 Code Gb cexit.o [5] +_exit_2 0x1'fbe9 Code Gb cexit_2.o [5] armBitRevIndexTable1024 - 0x801'9f18 0xe10 Data Gb arm_common_tables.o [3] -armBitRevIndexTable128 0x801'f754 0x1a0 Data Gb arm_common_tables.o [3] -armBitRevIndexTable16 0x801'fcfc 0x28 Data Gb arm_common_tables.o [3] + 0x1'9d40 0xe10 Data Gb arm_common_tables.o [3] +armBitRevIndexTable128 0x1'f59c 0x1a0 Data Gb arm_common_tables.o [3] +armBitRevIndexTable16 0x1'fb44 0x28 Data Gb arm_common_tables.o [3] armBitRevIndexTable2048 - 0x801'6158 0x1dc0 Data Gb arm_common_tables.o [3] -armBitRevIndexTable256 0x801'ddb4 0x370 Data Gb arm_common_tables.o [3] -armBitRevIndexTable32 0x801'fc64 0x60 Data Gb arm_common_tables.o [3] + 0x1'5f80 0x1dc0 Data Gb arm_common_tables.o [3] +armBitRevIndexTable256 0x1'dbdc 0x370 Data Gb arm_common_tables.o [3] +armBitRevIndexTable32 0x1'faac 0x60 Data Gb arm_common_tables.o [3] armBitRevIndexTable4096 - 0x801'41d8 0x1f80 Data Gb arm_common_tables.o [3] -armBitRevIndexTable512 0x801'da34 0x380 Data Gb arm_common_tables.o [3] -armBitRevIndexTable64 0x801'fbf4 0x70 Data Gb arm_common_tables.o [3] -arm_bitreversal_32 0x801'd1ed 0x46 Code Gb arm_bitreversal2.o [3] -arm_cfft_f32 0x801'caad 0x184 Code Gb arm_cfft_f32.o [3] -arm_cfft_init_f32 0x801'f2bd 0x98 Code Gb arm_cfft_init_f32.o [3] -arm_cfft_radix8by2_f32 0x801'c52d 0x16a Code Gb arm_cfft_f32.o [3] -arm_cfft_radix8by4_f32 0x801'c699 0x412 Code Gb arm_cfft_f32.o [3] + 0x1'4000 0x1f80 Data Gb arm_common_tables.o [3] +armBitRevIndexTable512 0x1'd85c 0x380 Data Gb arm_common_tables.o [3] +armBitRevIndexTable64 0x1'fa3c 0x70 Data Gb arm_common_tables.o [3] +arm_bitreversal_32 0x1'd015 0x46 Code Gb arm_bitreversal2.o [3] +arm_cfft_f32 0x1'c8d5 0x184 Code Gb arm_cfft_f32.o [3] +arm_cfft_init_f32 0x1'f105 0x98 Code Gb arm_cfft_init_f32.o [3] +arm_cfft_radix8by2_f32 0x1'c355 0x16a Code Gb arm_cfft_f32.o [3] +arm_cfft_radix8by4_f32 0x1'c4c1 0x412 Code Gb arm_cfft_f32.o [3] arm_cfft_sR_f32_len1024 - 0x801'fe74 0x10 Data Gb arm_const_structs.o [3] -arm_cfft_sR_f32_len128 0x801'fe44 0x10 Data Gb arm_const_structs.o [3] -arm_cfft_sR_f32_len16 0x801'fe14 0x10 Data Gb arm_const_structs.o [3] + 0x1'fcbc 0x10 Data Gb arm_const_structs.o [3] +arm_cfft_sR_f32_len128 0x1'fc8c 0x10 Data Gb arm_const_structs.o [3] +arm_cfft_sR_f32_len16 0x1'fc5c 0x10 Data Gb arm_const_structs.o [3] arm_cfft_sR_f32_len2048 - 0x801'fe84 0x10 Data Gb arm_const_structs.o [3] -arm_cfft_sR_f32_len256 0x801'fe54 0x10 Data Gb arm_const_structs.o [3] -arm_cfft_sR_f32_len32 0x801'fe24 0x10 Data Gb arm_const_structs.o [3] + 0x1'fccc 0x10 Data Gb arm_const_structs.o [3] +arm_cfft_sR_f32_len256 0x1'fc9c 0x10 Data Gb arm_const_structs.o [3] +arm_cfft_sR_f32_len32 0x1'fc6c 0x10 Data Gb arm_const_structs.o [3] arm_cfft_sR_f32_len4096 - 0x801'fe94 0x10 Data Gb arm_const_structs.o [3] -arm_cfft_sR_f32_len512 0x801'fe64 0x10 Data Gb arm_const_structs.o [3] -arm_cfft_sR_f32_len64 0x801'fe34 0x10 Data Gb arm_const_structs.o [3] -arm_cmplx_mag_f32 0x801'f169 0x154 Code Gb arm_cmplx_mag_f32.o [3] -arm_cos_f32 0x801'ee45 0x90 Code Gb arm_cos_f32.o [3] -arm_mult_f32 0x801'eed5 0x10e Code Gb arm_mult_f32.o [3] + 0x1'fcdc 0x10 Data Gb arm_const_structs.o [3] +arm_cfft_sR_f32_len512 0x1'fcac 0x10 Data Gb arm_const_structs.o [3] +arm_cfft_sR_f32_len64 0x1'fc7c 0x10 Data Gb arm_const_structs.o [3] +arm_cmplx_mag_f32 0x1'efb1 0x154 Code Gb arm_cmplx_mag_f32.o [3] +arm_cos_f32 0x1'ec8d 0x90 Code Gb arm_cos_f32.o [3] +arm_mult_f32 0x1'ed1d 0x10e Code Gb arm_mult_f32.o [3] arm_radix8_butterfly_f32 - 0x801'cc31 0x592 Code Gb arm_cfft_radix8_f32.o [3] + 0x1'ca59 0x592 Code Gb arm_cfft_radix8_f32.o [3] arm_rfft_1024_fast_init_f32 - 0x801'ed39 0x26 Code Lc arm_rfft_fast_init_f32.o [3] + 0x1'eb81 0x26 Code Lc arm_rfft_fast_init_f32.o [3] arm_rfft_128_fast_init_f32 - 0x801'eccd 0x22 Code Lc arm_rfft_fast_init_f32.o [3] + 0x1'eb15 0x22 Code Lc arm_rfft_fast_init_f32.o [3] arm_rfft_2048_fast_init_f32 - 0x801'ed5f 0x26 Code Lc arm_rfft_fast_init_f32.o [3] + 0x1'eba7 0x26 Code Lc arm_rfft_fast_init_f32.o [3] arm_rfft_256_fast_init_f32 - 0x801'ecef 0x24 Code Lc arm_rfft_fast_init_f32.o [3] + 0x1'eb37 0x24 Code Lc arm_rfft_fast_init_f32.o [3] arm_rfft_32_fast_init_f32 - 0x801'ec89 0x22 Code Lc arm_rfft_fast_init_f32.o [3] + 0x1'ead1 0x22 Code Lc arm_rfft_fast_init_f32.o [3] arm_rfft_4096_fast_init_f32 - 0x801'ed85 0x26 Code Lc arm_rfft_fast_init_f32.o [3] + 0x1'ebcd 0x26 Code Lc arm_rfft_fast_init_f32.o [3] arm_rfft_512_fast_init_f32 - 0x801'ed13 0x26 Code Lc arm_rfft_fast_init_f32.o [3] + 0x1'eb5b 0x26 Code Lc arm_rfft_fast_init_f32.o [3] arm_rfft_64_fast_init_f32 - 0x801'ecab 0x22 Code Lc arm_rfft_fast_init_f32.o [3] -arm_rfft_fast_f32 0x801'f12d 0x3a Code Gb arm_rfft_fast_f32.o [3] -arm_rfft_fast_init_f32 0x801'edab 0x5a Code Gb arm_rfft_fast_init_f32.o [3] -biquad_apply 0x801'e125 0x42 Code Gb imu.o [1] -biquad_init_notch 0x801'e169 0x8e Code Gb imu.o [1] -cosf 0x801'e675 0x4 Code Gb cos_sin_tan_32.o [4] -dsp_buffer_ready 0x2000'1c8c 0x1 Data Gb dsp_manager.o [1] -exit 0x801'fd97 0x4 Code Gb exit.o [2] + 0x1'eaf3 0x22 Code Lc arm_rfft_fast_init_f32.o [3] +arm_rfft_fast_f32 0x1'ef75 0x3a Code Gb arm_rfft_fast_f32.o [3] +arm_rfft_fast_init_f32 0x1'ebf3 0x5a Code Gb arm_rfft_fast_init_f32.o [3] +biquad_apply 0x1'df4d 0x42 Code Gb imu.o [1] +biquad_init_notch 0x1'df91 0x8e Code Gb imu.o [1] +cosf 0x1'e49d 0x4 Code Gb cos_sin_tan_32.o [4] +exit 0x1'fbdf 0x4 Code Gb exit.o [2] fft_handler 0x2000'1c68 0x18 Data Lc dsp_manager.o [1] fft_input 0x2000'0014 0x800 Data Lc dsp_manager.o [1] fft_output 0x2000'0814 0x800 Data Lc dsp_manager.o [1] filt_gx 0x2000'1c80 0x4 Data Gb imu.o [1] gyro_bias_x 0x2000'1c84 0x4 Data Gb imu.o [1] hann_window 0x2000'1014 0x800 Data Lc dsp_manager.o [1] -imu_flag 0x2000'1c8d 0x1 Data Gb main.o [1] +imu_flag 0x2000'1c8c 0x1 Data Gb main.o [1] m1_speed 0x2000'0000 0x4 Data Gb main.o [1] m2_speed 0x2000'0004 0x4 Data Gb main.o [1] m3_speed 0x2000'0008 0x4 Data Gb main.o [1] m4_speed 0x2000'000c 0x4 Data Gb main.o [1] magnitudes 0x2000'1814 0x400 Data Lc dsp_manager.o [1] -main 0x801'e6d5 0xaa Code Gb main.o [1] -merge_rfft_f32 0x801'f08d 0xa0 Code Gb arm_rfft_fast_f32.o [3] +main 0x1'e4fd 0xaa Code Gb main.o [1] +merge_rfft_f32 0x1'eed5 0xa0 Code Gb arm_rfft_fast_f32.o [3] notch1 0x2000'1c14 0x1c Data Gb imu.o [1] notch2 0x2000'1c30 0x1c Data Gb imu.o [1] notch3 0x2000'1c4c 0x1c Data Gb imu.o [1] raw_gx 0x2000'1c8a 0x2 Data Gb imu.o [1] sample_count 0x2000'1c88 0x2 Data Lc dsp_manager.o [1] -sinTable_f32 0x801'ad28 0x804 Data Gb arm_common_tables.o [3] -sinf 0x801'e679 0x4 Code Gb cos_sin_tan_32.o [4] -stage_rfft_f32 0x801'efe5 0xa8 Code Gb arm_rfft_fast_f32.o [3] -twiddleCoef_1024 0x801'01d8 0x2000 Data Gb arm_common_tables.o [3] -twiddleCoef_128 0x801'd234 0x400 Data Gb arm_common_tables.o [3] -twiddleCoef_16 0x801'faf4 0x80 Data Gb arm_common_tables.o [3] -twiddleCoef_2048 0x800'81d8 0x4000 Data Gb arm_common_tables.o [3] -twiddleCoef_256 0x801'b52c 0x800 Data Gb arm_common_tables.o [3] -twiddleCoef_32 0x801'f8f4 0x100 Data Gb arm_common_tables.o [3] -twiddleCoef_4096 0x800'01d8 0x8000 Data Gb arm_common_tables.o [3] -twiddleCoef_512 0x801'7f18 0x1000 Data Gb arm_common_tables.o [3] -twiddleCoef_64 0x801'f354 0x200 Data Gb arm_common_tables.o [3] -twiddleCoef_rfft_1024 0x801'8f18 0x1000 Data Gb arm_common_tables.o [3] -twiddleCoef_rfft_128 0x801'f554 0x200 Data Gb arm_common_tables.o [3] -twiddleCoef_rfft_2048 0x801'21d8 0x2000 Data Gb arm_common_tables.o [3] -twiddleCoef_rfft_256 0x801'd634 0x400 Data Gb arm_common_tables.o [3] -twiddleCoef_rfft_32 0x801'fb74 0x80 Data Gb arm_common_tables.o [3] -twiddleCoef_rfft_4096 0x800'c1d8 0x4000 Data Gb arm_common_tables.o [3] -twiddleCoef_rfft_512 0x801'bd2c 0x800 Data Gb arm_common_tables.o [3] -twiddleCoef_rfft_64 0x801'f9f4 0x100 Data Gb arm_common_tables.o [3] +sinTable_f32 0x1'ab50 0x804 Data Gb arm_common_tables.o [3] +sinf 0x1'e4a1 0x4 Code Gb cos_sin_tan_32.o [4] +stage_rfft_f32 0x1'ee2d 0xa8 Code Gb arm_rfft_fast_f32.o [3] +twiddleCoef_1024 0x1'0000 0x2000 Data Gb arm_common_tables.o [3] +twiddleCoef_128 0x1'd05c 0x400 Data Gb arm_common_tables.o [3] +twiddleCoef_16 0x1'f93c 0x80 Data Gb arm_common_tables.o [3] +twiddleCoef_2048 0x8000 0x4000 Data Gb arm_common_tables.o [3] +twiddleCoef_256 0x1'b354 0x800 Data Gb arm_common_tables.o [3] +twiddleCoef_32 0x1'f73c 0x100 Data Gb arm_common_tables.o [3] +twiddleCoef_4096 0x0 0x8000 Data Gb arm_common_tables.o [3] +twiddleCoef_512 0x1'7d40 0x1000 Data Gb arm_common_tables.o [3] +twiddleCoef_64 0x1'f19c 0x200 Data Gb arm_common_tables.o [3] +twiddleCoef_rfft_1024 0x1'8d40 0x1000 Data Gb arm_common_tables.o [3] +twiddleCoef_rfft_128 0x1'f39c 0x200 Data Gb arm_common_tables.o [3] +twiddleCoef_rfft_2048 0x1'2000 0x2000 Data Gb arm_common_tables.o [3] +twiddleCoef_rfft_256 0x1'd45c 0x400 Data Gb arm_common_tables.o [3] +twiddleCoef_rfft_32 0x1'f9bc 0x80 Data Gb arm_common_tables.o [3] +twiddleCoef_rfft_4096 0xc000 0x4000 Data Gb arm_common_tables.o [3] +twiddleCoef_rfft_512 0x1'bb54 0x800 Data Gb arm_common_tables.o [3] +twiddleCoef_rfft_64 0x1'f83c 0x100 Data Gb arm_common_tables.o [3] [1] = C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj @@ -623,9 +638,9 @@ twiddleCoef_rfft_64 0x801'f9f4 0x100 Data Gb arm_common_tables.o [3] [5] = rt7M_tl.a [6] = shb_l.a - 9'032 bytes of readonly code memory - 122'040 bytes of readonly data memory - 9'358 bytes of readwrite data memory + 9'064 bytes of readonly code memory + 122'028 bytes of readonly data memory + 9'357 bytes of readwrite data memory -Errors: none +Errors: 3 Warnings: none diff --git a/Debug/Obj/dsp_manager.o b/Debug/Obj/dsp_manager.o index bf114a06fe0a9090e347ea65f73c9fe6e7f37509..a4626bc69cb82d2189db36c25b8683c9503c869f 100644 GIT binary patch delta 5484 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 a+uU-stPy94Uh=u_(ng@IMw~87oc{tN1!(~Q delta 5174 zcmZWs3v65E6+ZuUu9Mht;>2x|#(6u9lh8PE?4${!Qq!SAfznrCfp!=tahjCo(ZuNk zTHJOWw8l>{E~gn z_npW8I{&@*|91S-iT#!Nzn@3a^e|OI)X~kyg9Tb5k2V3_gr78x^5`DOZ3ar>hoLV? z!B0caPr)al=cyzi@ozvqmty}NbXSV~6W|UDClK&8h}9MWtV6#e1DD+b%PDsKH0Q*xMwnIOdg7-mxFa;lmekcV$2mMG2mgGlM z@LSNIPQibK{%jH_NCxnkX)MM{D9WX;O-xyWvuG*}XOlyNqcp?rq(Td4h`)oXOe{iC z4h1Z`8FUFJgvp-a;Fy7(GjI+CQxe+9HN!p==Tdu`e;zHgu=H=E3R-3n#t8FhCGc`X zm%lv2o{Cq)zI}#075Bkz)r`aowra-0vgOA7EyCJ!3tM|`VQbGVe8k!ovjc0-ExWbn z7B=_Xn2-zzMQiqNCa|j33b3ly!dBG^UWWu$vyt1Fp@j)J4m--hY;L+e%|GAtxBAD4 zP7lbZU1K0rIC|AGN08YPt&8>K_Se=!P_hChAGUbu^lW{j@U;*VFzqTuzUs;kopD z8g8IT8or?bwVn9MFwiJtNCV2A?o*yeb!l>&XS zo{6=Q{;}v#EEJ@gc+wIHwpdDtYWe~pz_F3OXgnHh6WkV_#`7sK7#)jj?2knTV$r_X zSg_s78tv&Bi){>dSa@)_e}tDg%M;Tc!UU)7>qmOS(?eQ6I2>z%Ba)kgG#GT39I}MA zq=mLwCUFcQQF>?yV@`%9BsO%(9ol95{@~C=0N^jD0KDVzp-{`(a45KWvyjg| zeEf|4jee6&;eMozZyArrh9Waf>dcAqg565X)c9<1f-jrp$m|`6j*-fO?oDL8g!U!{RFogbnK#WhDG=NFcaH>C5zG{7tAT6nl~C6(&$ zk6#xXCe25AFDNzIwP~=gZ+#3nBkvX9MT7B`v5j4hXpcc=UEtehSF5*p@9dv6wV!PKLc8y-V^h~H`-;Y^X=+I&P5t}g)YMY)HBc2z zU2Py(w~tj(9bZ{ES7q=z{CDyG!UeYVix2WUg%#=`|Gls>r*djZ)~Nm1a8AZ9dlf0zt5!KJ1mQ~D)$y*Vv+5CK6OH?R$4bdEtw-A+zj1X1u<>gm8 z9zb8&(iijHPSw2RB5^ICH|zM-kA-1(naSvm8E=n zrO$I(X|zjen)Wz4sg_O-^JwK0x%!Cxrd%!CvBti&?ek~&8*kUlev56@{B+dse-p6~HIg^0~&5A~)LA(=WoTX)%htnF2cJh$t2YxYi0T-$b{ z+o!8e4Q7qDHH)+-^&J4Zo` zcKkH-ZOE&MjKpO`dnF|=_AjVfN_0k?a4(Xpjt0D4TFMbv4Lz}rQxG^1AWwRIt!Xr4@P_R#kyn*PKA`$+YiDkTfhh)DGFxbQg5 zPYTY*r`|CkP+WzWr*k$s6p3d*i%5J)g&`eLqH9dPOQeVBMw4G>@^O)~h&G!1R>2sk z+!r*|iQE%#GL1W-HjumvYSqojOQ43emy3Xgy2S;6w5sH7RqILKQnlXX?NsaIqIoU2 zpBrT;kFHD%pD=7$KY4Uzi^M!-I|%C~r(PaqIU=!ME|FL#**tl)A(ipyLn`^OOJ3qJ zJ^6+tOlM{bgWxykb*nX8)mWj1xUrU)JPT z1NblEHBD|6=bhED;DtSebhYvNo^)G?;@qtF4z7q?zLxMG18DE6sd2DDAtDsMP$xDNN*9z>Pte_m9 za^4a2x}soiHJK9L(BjokgBdW=)nk|MG{*82v|mdeeYg@Ccm=dO4Q)e*hqt!4^}RqY zKG5RRA4W|)Z$vG@;mGEXz^(KVHA<8#0nHjg19ybH`aUpgct^;m{>s}ze!aYgs7n(<6ybzTVr(aGME~pgY(d=4m$Y&@_cNBx-#l7EzS3( zXV)w+`^_}Slx|{dSWy8ITr+#)S+=8T zP*H@~dP}YB|Bq%G@c8w(f8KhBE diff --git a/Debug/Obj/main.o b/Debug/Obj/main.o index b3cb777791e7d7ea47184112a893eb5d8da9a72b..2d449365727d95daf6117f0760ac41ec11ca2e40 100644 GIT binary patch delta 305 zcmaF5kMZd~#tpF&^_#DMJkQqUmQq|0pPQJMn4Vgsm%+gJ{Lh99Y@(UDr6A6wZ$OT8 zZenJhUNV$dnVVmdUsMc|1sfn(T#{>Slx|{dSWy8I{Qd)|~gCxFB herS>pl`u7A{DY=8IXO1_1bYdkFvl delta 305 zcmaF5kMZd~#tpF&^*?s)`NG=emQq|0pPQJMn4Vgsm%+ez;ozb3Y=W7&r6A6;JwT3h zZenJhUNQsY%X2_pWo~{+eo-+ij9ia_5?mmO`;(Oo3n3CS3=J5$-UB7rKoYMfUoxtLNQ4+SGje?gO0a_@K2LsV fk`I+IHDu&&_{7M_3X=Hqaqqf!VX+PDD1I1ghun?Oaj!x-A8P?7nj1p*-LYzzzx ztV}?Hf%(>Cf0Go53GHT3WxrvJd~*!-?-1(4EuiX8!x;9K1%hbiH!)2PFiD13pl$`# zFdN3;x5m&g4N1dyYp8~78z|$x4TgqQNE(jYLe*K@K^g1qFf{B#(lFf~s*c+M%BXk1 z&~OP!L%JhW-EA1d-w8v*Gb9b>&QJ}jVGMZ}3=O}KG_bouHB`eG?_Du8^f4oX^|~8W zgSR`BvELm-!y+UN%RQj#q&=aGeoqVy+mJMrdqLH`hB4y3F*KY)(%|j`)vz1J(D%jA za1Tj?xF1wQH;nP$4@1KzBn{8~p&FtCpp5eY7#iAG5TUd^5UNf)2+EirgrQ*;l7{wR hsJh=UMt%r}hIL39!b71NPQw`XVGxnco5M=x0RR)_qRRjP delta 962 zcmZ4fih21f<_-6ZSk}zmcy{t5qf!VX+PDD1I1ghun?Oaj!x-A8P?7nj1p*-LYzzzx ztV}?Hf%(>Cf0Go53GHT3WxrvJd~*!-?-1(4EuiX8!x;9K1%hbiH!)2PFiD13pl$`# zFdN3;x5m&g4N1dyYp8~78z|$x4TgqQNE(jYLe*K@K^g1qFf{B#(lFf~s*c+M%BXk1 z&~OP!L%JhW-EA1d-w8v*Gb9b>&QJ}jVGMZ}3=O}KG_bouHB`eG?_Du8^f4oX^|~8W zgSR`BvELm-!y+UN%RQj#q&=aGeoqVy+mJMrdqLH`hB4y3F*KY)(%|j`)vz1J(D%jA za1Tj?xF1wQH;nP$4@1KzBn{8~p&FtCpp5eY7#iAG5TUd^5UNf)2+EirgrQ*;l7{wR hsJh=UMt%r}hIL39!b71NPQw`XVGxnco5M=x0RXB)emejF diff --git a/Debug/Obj/system_stm32g4xx.o b/Debug/Obj/system_stm32g4xx.o index b95e87d424689906b5dd453090cc9ac986b9ef94..9e8df9776b02189fad6b58ee41be7aabaf2b8d5a 100644 GIT binary patch delta 106 zcmZq6Z_D4XUO@W$j|~^tj;0ltzNZ h)ZBOsWt;yBsPM3W6m3?OZD4}1R?25US)xjXq5%58FVO%1 delta 106 zcmZq6Z_D4XUO;-y?2TvHj;0lt= PACKET_SIZE: + header_idx = data_packet.find(b'\xaa\xbb') + if header_idx == -1: + data_packet.clear() + break + + if header_idx + PACKET_SIZE <= len(data_packet): + # Читаем: 2(gx), 2(fgx), 2(f1), 2(f2), 2(f3) + chunk = data_packet[header_idx+2 : header_idx+PACKET_SIZE] + try: + # int16, int16, uint16, uint16, uint16 + r_val, f_val, f1, f2, f3 = struct.unpack(' 0: + peak_lines[i].set_xdata([peak_freqs[i], peak_freqs[i]]) + peak_lines[i].set_alpha(0.6) + else: + peak_lines[i].set_alpha(0.0) + + if fill_poly: + fill_poly.remove() + fill_poly = ax2.fill_between(freqs, 0, fft_r, color='red', alpha=0.15, zorder=1) + + # Автомасштаб спектра + #m = np.max(fft_r) if len(fft_r) > 0 else 5000 + #curr_limit = ax2.get_ylim()[1] + #if m > curr_limit: + # ax2.set_ylim(0, m * 1.2) + #elif m < curr_limit * 0.2 and curr_limit > 5000: + # ax2.set_ylim(0, 5000) + + return line_raw, line_filt, line_spec_filt, peak_text + +ani = FuncAnimation(fig, update, interval=30, cache_frame_data=False) +plt.tight_layout() +plt.show() +ser.close() \ No newline at end of file diff --git a/dsp_manager.c b/dsp_manager.c index e351550..57f7f70 100644 --- a/dsp_manager.c +++ b/dsp_manager.c @@ -1,5 +1,6 @@ #include "dsp_manager.h" #include "imu.h" +#include // Буферы для расчета static float32_t fft_input[FFT_SIZE]; @@ -9,12 +10,20 @@ static float32_t magnitudes[FFT_SIZE / 2]; // Буфер для окна Ханна (чтобы убрать шумы по краям выборки) static float32_t hann_window[FFT_SIZE]; -static uint16_t sample_count = 0; -uint8_t dsp_buffer_ready = 0; +// Коэффициенты биквадратного фильтра +static float32_t b[3] = {1.0f, -2.0f, 1.0f}; // Примерные значения +static float32_t a[3] = {1.0f, -1.8f, 0.81f}; + +// Буфер состояния фильтра +static float32_t x[3] = {0}; +static float32_t y[3] = {0}; // Структура БПФ из библиотеки static arm_rfft_fast_instance_f32 fft_handler; +// Уточнение области видимости переменной sample_count +static uint16_t sample_count = 0; + void DSP_Init(void) { // Инициализируем структуру БПФ arm_rfft_fast_init_f32(&fft_handler, FFT_SIZE); @@ -69,5 +78,13 @@ void DSP_Process(void) { if (top_mags[1] > 10.0f) biquad_init_notch(¬ch2, top_freqs[1], 1.0f, 1000.0f); if (top_mags[2] > 10.0f) biquad_init_notch(¬ch3, top_freqs[2], 1.0f, 1000.0f); + // 6. Применяем биквадратный фильтр к входным данным + for (int i = 0; i < FFT_SIZE; i++) { + fft_input[i] = Biquad_Filter(fft_input[i]); + } + dsp_buffer_ready = 0; // Разрешаем новый сбор данных -} \ No newline at end of file +} + +// Прототип функции Biquad_Filter +float32_t Biquad_Filter(float32_t input); \ No newline at end of file diff --git a/dsp_manager.h b/dsp_manager.h index eafa523..c45081e 100644 --- a/dsp_manager.h +++ b/dsp_manager.h @@ -14,4 +14,8 @@ void DSP_Process(void); // Запустить расчет (ког // Флаг готовности данных (чтобы main знал, когда пора вызывать Process) extern uint8_t dsp_buffer_ready; +// Добавление объявления переменной и прототипа функции +extern uint16_t sample_count; +float32_t Biquad_Filter(float32_t input); + #endif \ No newline at end of file