commit 4d694ecf43fe64af16c5db148937eb53097b69b6 Author: vadyschka01 Date: Thu Apr 30 16:32:21 2026 +0300 initial diff --git a/Debug/.cache/clangd/index/DLib_Config_Normal.h.8507B8662C78F13A.idx b/Debug/.cache/clangd/index/DLib_Config_Normal.h.8507B8662C78F13A.idx new file mode 100644 index 0000000..53e8cc6 Binary files /dev/null and b/Debug/.cache/clangd/index/DLib_Config_Normal.h.8507B8662C78F13A.idx differ diff --git a/Debug/.cache/clangd/index/DLib_Defaults.h.B05D2CE2DD4EC58C.idx b/Debug/.cache/clangd/index/DLib_Defaults.h.B05D2CE2DD4EC58C.idx new file mode 100644 index 0000000..fc521af Binary files /dev/null and b/Debug/.cache/clangd/index/DLib_Defaults.h.B05D2CE2DD4EC58C.idx differ diff --git a/Debug/.cache/clangd/index/DLib_Product.h.0D35BC3B33D6A29D.idx b/Debug/.cache/clangd/index/DLib_Product.h.0D35BC3B33D6A29D.idx new file mode 100644 index 0000000..979d571 Binary files /dev/null and b/Debug/.cache/clangd/index/DLib_Product.h.0D35BC3B33D6A29D.idx differ diff --git a/Debug/.cache/clangd/index/DLib_float_setup.h.CC110B3A093B2833.idx b/Debug/.cache/clangd/index/DLib_float_setup.h.CC110B3A093B2833.idx new file mode 100644 index 0000000..51ba19e Binary files /dev/null and b/Debug/.cache/clangd/index/DLib_float_setup.h.CC110B3A093B2833.idx differ diff --git a/Debug/.cache/clangd/index/cmsis_compiler.h.C30A566D0BADCE9A.idx b/Debug/.cache/clangd/index/cmsis_compiler.h.C30A566D0BADCE9A.idx new file mode 100644 index 0000000..237eff9 Binary files /dev/null and b/Debug/.cache/clangd/index/cmsis_compiler.h.C30A566D0BADCE9A.idx differ diff --git a/Debug/.cache/clangd/index/cmsis_iccarm.h.BCCFDA0638C3B5E2.idx b/Debug/.cache/clangd/index/cmsis_iccarm.h.BCCFDA0638C3B5E2.idx new file mode 100644 index 0000000..9628e32 Binary files /dev/null and b/Debug/.cache/clangd/index/cmsis_iccarm.h.BCCFDA0638C3B5E2.idx differ diff --git a/Debug/.cache/clangd/index/cmsis_version.h.CA65412D6546FA3C.idx b/Debug/.cache/clangd/index/cmsis_version.h.CA65412D6546FA3C.idx new file mode 100644 index 0000000..8807546 Binary files /dev/null and b/Debug/.cache/clangd/index/cmsis_version.h.CA65412D6546FA3C.idx differ diff --git a/Debug/.cache/clangd/index/core_cm4.h.A4506E03A6C729A0.idx b/Debug/.cache/clangd/index/core_cm4.h.A4506E03A6C729A0.idx new file mode 100644 index 0000000..fd65c1e Binary files /dev/null and b/Debug/.cache/clangd/index/core_cm4.h.A4506E03A6C729A0.idx differ diff --git a/Debug/.cache/clangd/index/dsp_manager.c.6CC0D5AAAF07899B.idx b/Debug/.cache/clangd/index/dsp_manager.c.6CC0D5AAAF07899B.idx new file mode 100644 index 0000000..b7e4b6a Binary files /dev/null and b/Debug/.cache/clangd/index/dsp_manager.c.6CC0D5AAAF07899B.idx differ diff --git a/Debug/.cache/clangd/index/iccarm_builtin.h.26619BB1075EAB9B.idx b/Debug/.cache/clangd/index/iccarm_builtin.h.26619BB1075EAB9B.idx new file mode 100644 index 0000000..01f4c63 Binary files /dev/null and b/Debug/.cache/clangd/index/iccarm_builtin.h.26619BB1075EAB9B.idx differ diff --git a/Debug/.cache/clangd/index/imu.c.B3AACC478BCE1474.idx b/Debug/.cache/clangd/index/imu.c.B3AACC478BCE1474.idx new file mode 100644 index 0000000..dba894a Binary files /dev/null and b/Debug/.cache/clangd/index/imu.c.B3AACC478BCE1474.idx differ diff --git a/Debug/.cache/clangd/index/imu.h.C212CB2BB06D5AA4.idx b/Debug/.cache/clangd/index/imu.h.C212CB2BB06D5AA4.idx new file mode 100644 index 0000000..03b3893 Binary files /dev/null and b/Debug/.cache/clangd/index/imu.h.C212CB2BB06D5AA4.idx differ diff --git a/Debug/.cache/clangd/index/main.c.3730E6FA7C0A9185.idx b/Debug/.cache/clangd/index/main.c.3730E6FA7C0A9185.idx new file mode 100644 index 0000000..69c63df Binary files /dev/null and b/Debug/.cache/clangd/index/main.c.3730E6FA7C0A9185.idx differ diff --git a/Debug/.cache/clangd/index/math.h.57C7D0FA9173EE35.idx b/Debug/.cache/clangd/index/math.h.57C7D0FA9173EE35.idx new file mode 100644 index 0000000..b6f8674 Binary files /dev/null and b/Debug/.cache/clangd/index/math.h.57C7D0FA9173EE35.idx differ diff --git a/Debug/.cache/clangd/index/mixer.h.348364E1C887C558.idx b/Debug/.cache/clangd/index/mixer.h.348364E1C887C558.idx new file mode 100644 index 0000000..0058443 Binary files /dev/null and b/Debug/.cache/clangd/index/mixer.h.348364E1C887C558.idx differ diff --git a/Debug/.cache/clangd/index/motors.c.044F6C1ED38B739C.idx b/Debug/.cache/clangd/index/motors.c.044F6C1ED38B739C.idx new file mode 100644 index 0000000..bd9d831 Binary files /dev/null and b/Debug/.cache/clangd/index/motors.c.044F6C1ED38B739C.idx differ diff --git a/Debug/.cache/clangd/index/motors.h.174B001DB976F875.idx b/Debug/.cache/clangd/index/motors.h.174B001DB976F875.idx new file mode 100644 index 0000000..c68ace7 Binary files /dev/null and b/Debug/.cache/clangd/index/motors.h.174B001DB976F875.idx differ diff --git a/Debug/.cache/clangd/index/motors.h.8194AE5B0C3E6FAF.idx b/Debug/.cache/clangd/index/motors.h.8194AE5B0C3E6FAF.idx new file mode 100644 index 0000000..5b452bd Binary files /dev/null and b/Debug/.cache/clangd/index/motors.h.8194AE5B0C3E6FAF.idx differ diff --git a/Debug/.cache/clangd/index/mpu_armv7.h.ADCA992EF20BA8F4.idx b/Debug/.cache/clangd/index/mpu_armv7.h.ADCA992EF20BA8F4.idx new file mode 100644 index 0000000..a1f4800 Binary files /dev/null and b/Debug/.cache/clangd/index/mpu_armv7.h.ADCA992EF20BA8F4.idx differ diff --git a/Debug/.cache/clangd/index/pid.h.31BC4876A2DA3619.idx b/Debug/.cache/clangd/index/pid.h.31BC4876A2DA3619.idx new file mode 100644 index 0000000..b0fd3af Binary files /dev/null and b/Debug/.cache/clangd/index/pid.h.31BC4876A2DA3619.idx differ diff --git a/Debug/.cache/clangd/index/stdint.h.8FB761520A6B2E6C.idx b/Debug/.cache/clangd/index/stdint.h.8FB761520A6B2E6C.idx new file mode 100644 index 0000000..ee30945 Binary files /dev/null and b/Debug/.cache/clangd/index/stdint.h.8FB761520A6B2E6C.idx differ diff --git a/Debug/.cache/clangd/index/stm32g431xx.h.2F8FE2C1B4176CE8.idx b/Debug/.cache/clangd/index/stm32g431xx.h.2F8FE2C1B4176CE8.idx new file mode 100644 index 0000000..2ea2411 Binary files /dev/null and b/Debug/.cache/clangd/index/stm32g431xx.h.2F8FE2C1B4176CE8.idx differ diff --git a/Debug/.cache/clangd/index/stm32g431xx.h.F9C21997526C198F.idx b/Debug/.cache/clangd/index/stm32g431xx.h.F9C21997526C198F.idx new file mode 100644 index 0000000..0c9c290 Binary files /dev/null and b/Debug/.cache/clangd/index/stm32g431xx.h.F9C21997526C198F.idx differ diff --git a/Debug/.cache/clangd/index/stm32g4xx.h.7C29D6D7376407D3.idx b/Debug/.cache/clangd/index/stm32g4xx.h.7C29D6D7376407D3.idx new file mode 100644 index 0000000..aca7468 Binary files /dev/null and b/Debug/.cache/clangd/index/stm32g4xx.h.7C29D6D7376407D3.idx differ diff --git a/Debug/.cache/clangd/index/stm32g4xx.h.C1CDBA1743FBCCC3.idx b/Debug/.cache/clangd/index/stm32g4xx.h.C1CDBA1743FBCCC3.idx new file mode 100644 index 0000000..d76eb10 Binary files /dev/null and b/Debug/.cache/clangd/index/stm32g4xx.h.C1CDBA1743FBCCC3.idx differ diff --git a/Debug/.cache/clangd/index/system_stm32g4xx.c.022D8E11B8399202.idx b/Debug/.cache/clangd/index/system_stm32g4xx.c.022D8E11B8399202.idx new file mode 100644 index 0000000..e13449c Binary files /dev/null and b/Debug/.cache/clangd/index/system_stm32g4xx.c.022D8E11B8399202.idx differ diff --git a/Debug/.cache/clangd/index/system_stm32g4xx.h.3E509A6CA4C3B024.idx b/Debug/.cache/clangd/index/system_stm32g4xx.h.3E509A6CA4C3B024.idx new file mode 100644 index 0000000..4d9e796 Binary files /dev/null and b/Debug/.cache/clangd/index/system_stm32g4xx.h.3E509A6CA4C3B024.idx differ diff --git a/Debug/.cache/clangd/index/system_stm32g4xx.h.A33F2B093C760567.idx b/Debug/.cache/clangd/index/system_stm32g4xx.h.A33F2B093C760567.idx new file mode 100644 index 0000000..cc43b51 Binary files /dev/null and b/Debug/.cache/clangd/index/system_stm32g4xx.h.A33F2B093C760567.idx differ diff --git a/Debug/.cache/clangd/index/ycheck.h.3CAFBE032AFB86DC.idx b/Debug/.cache/clangd/index/ycheck.h.3CAFBE032AFB86DC.idx new file mode 100644 index 0000000..dbd5fbe Binary files /dev/null and b/Debug/.cache/clangd/index/ycheck.h.3CAFBE032AFB86DC.idx differ diff --git a/Debug/.cache/clangd/index/yvals.h.9F39280C70D969A3.idx b/Debug/.cache/clangd/index/yvals.h.9F39280C70D969A3.idx new file mode 100644 index 0000000..b1efcaf Binary files /dev/null and b/Debug/.cache/clangd/index/yvals.h.9F39280C70D969A3.idx differ diff --git a/Debug/.ninja_deps b/Debug/.ninja_deps new file mode 100644 index 0000000..54a0a45 Binary files /dev/null and b/Debug/.ninja_deps differ diff --git a/Debug/.ninja_log b/Debug/.ninja_log new file mode 100644 index 0000000..da8a3fe --- /dev/null +++ b/Debug/.ninja_log @@ -0,0 +1,19 @@ +# ninja log v6 +2 142 7990811054271711 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/dsp_manager.o 5e0322b232c2a5d3 +3 42 7966528629542996 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/startup_stm32g431xx.o cede824c243c8d17 +3 151 7990811054281708 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/main.o 26d4f707094ccf1a +5 225 7990798145102406 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/system_stm32g4xx.o a638ba64754599fe +1 142 7990802132054459 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/imu.o c37a5ec274783fe9 +152 194 7990811055771090 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Exe/fft_az.out 2a7eadea1e12d4bc +152 194 7990811055771090 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/List/fft_az.map 2a7eadea1e12d4bc +4 201 7990798145092397 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/motors.o a560d5a92deba7a4 +3 145 7990823775198550 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/imu.o c37a5ec274783fe9 +3 145 7990823775198550 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/imu.o c37a5ec274783fe9 +2 146 7990823775188550 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/dsp_manager.o 5e0322b232c2a5d3 +2 146 7990823775188550 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/dsp_manager.o 5e0322b232c2a5d3 +4 180 7990823775208550 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/main.o 26d4f707094ccf1a +4 180 7990823775208550 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Obj/main.o 26d4f707094ccf1a +181 222 7990823776968303 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Exe/fft_az.out 2a7eadea1e12d4bc +181 222 7990823776968303 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/List/fft_az.map 2a7eadea1e12d4bc +181 222 7990823776968303 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/Exe/fft_az.out 2a7eadea1e12d4bc +181 222 7990823776968303 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/List/fft_az.map 2a7eadea1e12d4bc diff --git a/Debug/BrowseInfo/.ninja_log b/Debug/BrowseInfo/.ninja_log new file mode 100644 index 0000000..e1914a7 --- /dev/null +++ b/Debug/BrowseInfo/.ninja_log @@ -0,0 +1,38 @@ +# ninja log v6 +0 47 7966502781999309 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/main.c.json c2e88d1a9fd20db6 +47 53 7966502782467669 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/compile_commands.json f2805c436342d4a3 +1 42 7966507870657602 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/main.c.json c925cce127c442d1 +42 47 7966507871076259 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/compile_commands.json f2805c436342d4a3 +1 51 7966515015512471 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/imu.c.json c73736e68dde8d5b +51 93 7966515016017145 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/system_stm32g4xx.c.json df9acf2922317761 +93 100 7966515016435607 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/compile_commands.json f9869b9765c84423 +1 43 7966515300826578 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/imu.c.json 6336a72b836fa331 +44 87 7966515301255203 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/main.c.json ccafa4acf6c8efb6 +87 144 7966515301693686 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/system_stm32g4xx.c.json 32b0cc47dcdded7b +145 155 7966515302271934 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/compile_commands.json f9869b9765c84423 +1 45 7966604066593415 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/imu.c.json 9c35964d6486b4a1 +45 87 7966604067045493 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/main.c.json f694af6a41bfdaa +87 137 7966604067459479 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/system_stm32g4xx.c.json a0b01bd5eafea8df +137 145 7966604067962840 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/compile_commands.json f9869b9765c84423 +1 48 7978610928370036 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/imu.c.json 4e8b5e267c39e01 +48 90 7978610928842575 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/main.c.json 68af54bb7858f4e7 +90 131 7978610929263504 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/www_9707195405963337211.dir/motors.c.json 62c735074b1ccd3 +131 174 7978610929668841 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/system_stm32g4xx.c.json 6f9460db7aebd6c8 +174 183 7978610930095352 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/compile_commands.json 1bd0ce907ba5d744 +0 47 7990786683033849 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/imu.c.json e794077e0c2ffc64 +47 88 7990786683501675 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/main.c.json 54791612b88d573c +88 130 7990786683908976 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/www_9707195405963337211.dir/motors.c.json bb7fc91e3ef758e8 +130 171 7990786684326793 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/system_stm32g4xx.c.json 646afb9920cd2258 +171 180 7990786684737920 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/compile_commands.json 1bd0ce907ba5d744 +1 43 7990796633891554 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/dsp_manager.c.json e6ceb15748160c3e +43 84 7990796634316591 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/imu.c.json a10f8094ab7bfd80 +85 125 7990796634722826 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/main.c.json f77d52644bbecad8 +125 171 7990796635127445 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/www_9707195405963337211.dir/motors.c.json 577cbf0bb345a57d +171 215 7990796635589952 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/system_stm32g4xx.c.json 3aecf4a3fe30bd33 +215 224 7990796636024305 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/compile_commands.json b1b2177ae73507e4 +1 48 7990796930105725 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/dsp_manager.c.json c879709adcdfdcbf +48 92 7990796930577061 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/imu.c.json 48a8db68295635ee +92 135 7990796931013386 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/main.c.json e659513826dc75a8 +135 178 7990796931445598 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/www_9707195405963337211.dir/motors.c.json 6add127ffaafb420 +178 220 7990796931878398 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/BrowseInfo/system_stm32g4xx.c.json 2f10fb49d0a51201 +221 233 7990796932306580 C:/Users/vadychka/Documents/GitHub/leybl/fft/Debug/compile_commands.json b1b2177ae73507e4 diff --git a/Debug/BrowseInfo/build.ninja b/Debug/BrowseInfo/build.ninja new file mode 100644 index 0000000..a11d29c --- /dev/null +++ b/Debug/BrowseInfo/build.ninja @@ -0,0 +1,51 @@ +##IAR Ninja build file + + +#Rules +rule COMPDB_GEN + command = C$:\iar\ewarm-9.70.1\common\bin\ClangdCompDbGenerator.exe $gencommand -f "$rspfile_name" + description = Building $out... + rspfile = $rspfile_name + rspfile_content = $flags + +rule COMPDB_LINK + command = C$:\iar\ewarm-9.70.1\common\bin\ClangdCompDbLinker.exe -f "$rspfile_name" + description = Building $out... + rspfile = $rspfile_name + rspfile_content = $flags + + + +#Build steps +build C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\dsp_manager.c.json : COMPDB_GEN + flags = C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe C$:\Users\vadychka\Documents\GitHub\leybl\fft\dsp_manager.c -D STM32G431xx -D ARM_MATH_CM4 -o C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\ --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --no_clustering --no_scheduling --debug --endian=little --cpu=Cortex-M4 --fpu=VFPv4_sp --dlib_config C$:\iar\ewarm-9.70.1\arm\inc\c\DLib_Config_Normal.h -I C$:\Users\vadychka\Documents\GitHub\leybl\fft\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -Ol -I C$:\iar\ewarm-9.70.1\arm\CMSIS\Core\Include\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -D ARM_MATH_CM4 -e + gencommand = -output_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\dsp_manager.c.json -icc_path C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe -source_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\dsp_manager.c -work_dir C$:\Users\vadychka\Documents\GitHub\leybl\fft -keyword_map_path C$:\iar\ewarm-9.70.1\common\config\ClangdConfig.json -object_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\dsp_manager.o + rspfile_name = C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\dsp_manager.c.json.rsp + +build C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\imu.c.json : COMPDB_GEN + flags = C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe C$:\Users\vadychka\Documents\GitHub\leybl\fft\imu.c -D STM32G431xx -D ARM_MATH_CM4 -o C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\ --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --no_clustering --no_scheduling --debug --endian=little --cpu=Cortex-M4 --fpu=VFPv4_sp --dlib_config C$:\iar\ewarm-9.70.1\arm\inc\c\DLib_Config_Normal.h -I C$:\Users\vadychka\Documents\GitHub\leybl\fft\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -Ol -I C$:\iar\ewarm-9.70.1\arm\CMSIS\Core\Include\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -D ARM_MATH_CM4 -e + gencommand = -output_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\imu.c.json -icc_path C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe -source_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\imu.c -work_dir C$:\Users\vadychka\Documents\GitHub\leybl\fft -keyword_map_path C$:\iar\ewarm-9.70.1\common\config\ClangdConfig.json -object_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\imu.o + rspfile_name = C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\imu.c.json.rsp + +build C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\main.c.json : COMPDB_GEN + flags = C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe C$:\Users\vadychka\Documents\GitHub\leybl\fft\main.c -D STM32G431xx -D ARM_MATH_CM4 -o C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\ --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --no_clustering --no_scheduling --debug --endian=little --cpu=Cortex-M4 --fpu=VFPv4_sp --dlib_config C$:\iar\ewarm-9.70.1\arm\inc\c\DLib_Config_Normal.h -I C$:\Users\vadychka\Documents\GitHub\leybl\fft\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -Ol -I C$:\iar\ewarm-9.70.1\arm\CMSIS\Core\Include\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -D ARM_MATH_CM4 -e + gencommand = -output_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\main.c.json -icc_path C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe -source_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\main.c -work_dir C$:\Users\vadychka\Documents\GitHub\leybl\fft -keyword_map_path C$:\iar\ewarm-9.70.1\common\config\ClangdConfig.json -object_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\main.o + rspfile_name = C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\main.c.json.rsp + +build C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\www_9707195405963337211.dir\motors.c.json : COMPDB_GEN + flags = C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe C$:\Users\vadychka\Documents\GitHub\leybl\www\motors.c -D STM32G431xx -D ARM_MATH_CM4 -o C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\ --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --no_clustering --no_scheduling --debug --endian=little --cpu=Cortex-M4 --fpu=VFPv4_sp --dlib_config C$:\iar\ewarm-9.70.1\arm\inc\c\DLib_Config_Normal.h -I C$:\Users\vadychka\Documents\GitHub\leybl\fft\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -Ol -I C$:\iar\ewarm-9.70.1\arm\CMSIS\Core\Include\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -D ARM_MATH_CM4 -e + gencommand = -output_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\www_9707195405963337211.dir\motors.c.json -icc_path C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe -source_file C$:\Users\vadychka\Documents\GitHub\leybl\www\motors.c -work_dir C$:\Users\vadychka\Documents\GitHub\leybl\www -keyword_map_path C$:\iar\ewarm-9.70.1\common\config\ClangdConfig.json -object_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\motors.o + rspfile_name = C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\www_9707195405963337211.dir\motors.c.json.rsp + +build C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\system_stm32g4xx.c.json : COMPDB_GEN + flags = C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe C$:\Users\vadychka\Documents\GitHub\leybl\fft\system_stm32g4xx.c -D STM32G431xx -D ARM_MATH_CM4 -o C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\ --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --no_clustering --no_scheduling --debug --endian=little --cpu=Cortex-M4 --fpu=VFPv4_sp --dlib_config C$:\iar\ewarm-9.70.1\arm\inc\c\DLib_Config_Normal.h -I C$:\Users\vadychka\Documents\GitHub\leybl\fft\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -Ol -I C$:\iar\ewarm-9.70.1\arm\CMSIS\Core\Include\ -I C$:\iar\ewarm-9.70.1\arm\CMSIS\DSP\Include\ -D ARM_MATH_CM4 -e + gencommand = -output_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\system_stm32g4xx.c.json -icc_path C$:\iar\ewarm-9.70.1\arm\bin\iccarm.exe -source_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\system_stm32g4xx.c -work_dir C$:\Users\vadychka\Documents\GitHub\leybl\fft -keyword_map_path C$:\iar\ewarm-9.70.1\common\config\ClangdConfig.json -object_file C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\system_stm32g4xx.o + rspfile_name = C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\system_stm32g4xx.c.json.rsp + +build C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\compile_commands.json : COMPDB_LINK C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\dsp_manager.c.json | C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\imu.c.json $ + C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\main.c.json $ + C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\www_9707195405963337211.dir\motors.c.json $ + C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\system_stm32g4xx.c.json + flags = -o C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\compile_commands.json C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\dsp_manager.c.json C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\imu.c.json C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\main.c.json C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\www_9707195405963337211.dir\motors.c.json C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\BrowseInfo\system_stm32g4xx.c.json + rspfile_name = C$:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\compile_commands.json.rsp + diff --git a/Debug/BrowseInfo/dsp_manager.c.json b/Debug/BrowseInfo/dsp_manager.c.json new file mode 100644 index 0000000..222d129 --- /dev/null +++ b/Debug/BrowseInfo/dsp_manager.c.json @@ -0,0 +1,953 @@ +{ + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\dsp_manager.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\dsp_manager.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\dsp_manager.o" +} \ No newline at end of file diff --git a/Debug/BrowseInfo/imu.c.json b/Debug/BrowseInfo/imu.c.json new file mode 100644 index 0000000..7740333 --- /dev/null +++ b/Debug/BrowseInfo/imu.c.json @@ -0,0 +1,953 @@ +{ + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\imu.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\imu.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\imu.o" +} \ No newline at end of file diff --git a/Debug/BrowseInfo/main.c.json b/Debug/BrowseInfo/main.c.json new file mode 100644 index 0000000..401c218 --- /dev/null +++ b/Debug/BrowseInfo/main.c.json @@ -0,0 +1,953 @@ +{ + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\main.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\main.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\main.o" +} \ No newline at end of file diff --git a/Debug/BrowseInfo/system_stm32g4xx.c.json b/Debug/BrowseInfo/system_stm32g4xx.c.json new file mode 100644 index 0000000..b457690 --- /dev/null +++ b/Debug/BrowseInfo/system_stm32g4xx.c.json @@ -0,0 +1,953 @@ +{ + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\system_stm32g4xx.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\system_stm32g4xx.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\system_stm32g4xx.o" +} \ No newline at end of file diff --git a/Debug/BrowseInfo/www_9707195405963337211.dir/motors.c.json b/Debug/BrowseInfo/www_9707195405963337211.dir/motors.c.json new file mode 100644 index 0000000..4628573 --- /dev/null +++ b/Debug/BrowseInfo/www_9707195405963337211.dir/motors.c.json @@ -0,0 +1,953 @@ +{ + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\www\\motors.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\www", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\www\\motors.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\motors.o" +} \ No newline at end of file diff --git a/Debug/Exe/fft_az.out b/Debug/Exe/fft_az.out new file mode 100644 index 0000000..4c976b3 Binary files /dev/null and b/Debug/Exe/fft_az.out differ diff --git a/Debug/Exe/fft_az.sim b/Debug/Exe/fft_az.sim new file mode 100644 index 0000000..fb0b547 Binary files /dev/null and b/Debug/Exe/fft_az.sim differ diff --git a/Debug/List/fft_az.map b/Debug/List/fft_az.map new file mode 100644 index 0000000..3115729 --- /dev/null +++ b/Debug/List/fft_az.map @@ -0,0 +1,631 @@ +############################################################################### +# +# IAR ELF Linker V9.70.1.475/W64 for ARM 28/Apr/2026 15:26:17 +# Copyright 2007-2025 IAR Systems AB. +# +# Output file = +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Exe\fft_az.out +# Map file = +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\List\fft_az.map +# Command line = +# -f +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Exe\fft_az.out.rsp +# (C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\dsp_manager.o +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\imu.o +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\main.o +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\motors.o +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\startup_stm32g431xx.o +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj\system_stm32g4xx.o +# --no_out_extension -o +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Exe\fft_az.out +# --redirect _Printf=_PrintfFullNoMb --redirect _Scanf=_ScanfFullNoMb +# --map +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\List\fft_az.map +# --config C:\iar\ewarm-9.70.1\arm/config/linker/ST/stm32g431xB.icf +# --semihosting --entry __iar_program_start +# C:\iar\ewarm-9.70.1\arm\CMSIS\Lib\IAR\iar_cortexM4lf_math.a --vfe +# --text_out locale --cpu=Cortex-M4 --fpu=VFPv4_sp) +# --diagnostics_format=sarif_stdout --dependencies=n +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Exe\fft_az.out.iar_deps +# --dynamic_output +# C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Exe\fft_az.out.iar_dynout +# +############################################################################### + +******************************************************************************* +*** RUNTIME MODEL ATTRIBUTES +*** + +CppFlavor = * +__CPP_Runtime = 1 +__SystemLibrary = DLib +__dlib_version = 6 + + +******************************************************************************* +*** HEAP SELECTION +*** + +The basic heap was selected because no calls to memory allocation +functions were found in the application outside of system library +functions, there are calls to deallocation functions in the +application, and the application appears to be primarily +optimized for speed. + + +******************************************************************************* +*** PLACEMENT SUMMARY +*** + +"A0": place at address 0x800'0000 { ro section .intvec }; +"P1": place in [from 0x800'0000 to 0x801'ffff] { ro }; +define block CSTACK with size = 2K, alignment = 8 { }; +define block PROC_STACK with size = 0, alignment = 8 { }; +define block HEAP with size = 4K, alignment = 8 { }; +"P3": place in [from 0x2000'0000 to 0x2000'3fff] | + [from 0x2000'4000 to 0x2000'57ff] { + rw, block CSTACK, block PROC_STACK, block HEAP }; +initialize by copy { rw }; + +No sections matched the following patterns: + + ro section otp_data in "P4" + 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 + +"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 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 + +Unused ranges: + + From To Size + ---- -- ---- + 0x2000'2490 0x2000'3fff 0x1b70 + 0x2000'4000 0x2000'57ff 0x1800 + + +******************************************************************************* +*** INIT TABLE +*** + + Address Size + ------- ---- +Zero (__iar_zero_init3) + 1 destination range, total size 0x1c7a: + 0x2000'0014 0x1c7a + +Copy (__iar_copy_init3) + 1 source range, total size 0x14: + 0x801'ffec 0x14 + 1 destination range, total size 0x14: + 0x2000'0000 0x14 + + + +******************************************************************************* +*** MODULE SUMMARY +*** + + Module ro code ro data rw data + ------ ------- ------- ------- +command line/config: + --------------------------------------------------- + Total: + +C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj: [1] + dsp_manager.o 448 7'195 + imu.o 864 94 + main.o 584 16 17 + motors.o 296 + startup_stm32g431xx.o 800 + system_stm32g4xx.o 160 20 4 + --------------------------------------------------- + Total: 3'152 36 7'310 + +dl7M_tln.a: [2] + exit.o 4 + low_level_init.o 4 + --------------------------------------------------- + Total: 8 + +iar_cortexM4lf_math.a: [3] + arm_bitreversal2.o 70 + arm_cfft_f32.o 1'796 + arm_cfft_init_f32.o 152 + arm_cfft_radix8_f32.o 1'426 + arm_cmplx_mag_f32.o 340 + arm_common_tables.o 121'820 + arm_const_structs.o 144 + arm_cos_f32.o 144 + arm_mult_f32.o 270 + arm_rfft_fast_f32.o 386 + arm_rfft_fast_init_f32.o 444 + --------------------------------------------------- + Total: 5'028 121'964 + +m7M_tls.a: [4] + cos_sin_tan_32.o 532 + fpinit_M.o 34 + --------------------------------------------------- + Total: 566 + +rt7M_tl.a: [5] + U64Shr.o 30 + cexit.o 4 + cexit_2.o 10 + cmain.o 34 + copy_init3.o 42 + cstartup_M.o 30 + data_init.o 40 + zero_init3.o 56 + --------------------------------------------------- + Total: 246 + +shb_l.a: [6] + exit.o 20 + --------------------------------------------------- + Total: 20 + + Gaps 12 4 + Linker created 36 2'048 +------------------------------------------------------- + Grand Total: 9'032 122'040 9'358 + + +******************************************************************************* +*** ENTRY LIST +*** + +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] +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] +DMA1_Channel2_IRQHandler + 0x801'ff09 Code Wk startup_stm32g431xx.o [1] +DMA1_Channel3_IRQHandler + 0x801'ff0d Code Wk startup_stm32g431xx.o [1] +DMA1_Channel4_IRQHandler + 0x801'ff11 Code Wk startup_stm32g431xx.o [1] +DMA1_Channel5_IRQHandler + 0x801'ff15 Code Wk startup_stm32g431xx.o [1] +DMA1_Channel6_IRQHandler + 0x801'ff19 Code Wk startup_stm32g431xx.o [1] +DMA2_Channel1_IRQHandler + 0x801'ffa1 Code Wk startup_stm32g431xx.o [1] +DMA2_Channel2_IRQHandler + 0x801'ffa5 Code Wk startup_stm32g431xx.o [1] +DMA2_Channel3_IRQHandler + 0x801'ffa9 Code Wk startup_stm32g431xx.o [1] +DMA2_Channel4_IRQHandler + 0x801'ffad Code Wk startup_stm32g431xx.o [1] +DMA2_Channel5_IRQHandler + 0x801'ffb1 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] +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] +SystemClock_Config_160MHz + 0x801'e77f 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] +TIM1_BRK_TIM15_IRQHandler + 0x801'ff35 Code Wk startup_stm32g431xx.o [1] +TIM1_CC_IRQHandler 0x801'ff41 Code Wk startup_stm32g431xx.o [1] +TIM1_TRG_COM_TIM17_IRQHandler + 0x801'ff3d 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] +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] +__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] +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] +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] +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] +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] +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] +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] +arm_radix8_butterfly_f32 + 0x801'cc31 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] +arm_rfft_128_fast_init_f32 + 0x801'eccd 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] +arm_rfft_256_fast_init_f32 + 0x801'ecef 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] +arm_rfft_4096_fast_init_f32 + 0x801'ed85 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] +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] +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] +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] +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] + + +[1] = C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Obj +[2] = dl7M_tln.a +[3] = iar_cortexM4lf_math.a +[4] = m7M_tls.a +[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 + +Errors: none +Warnings: none diff --git a/Debug/Obj/dsp_manager.o b/Debug/Obj/dsp_manager.o new file mode 100644 index 0000000..bf114a0 Binary files /dev/null and b/Debug/Obj/dsp_manager.o differ diff --git a/Debug/Obj/imu.o b/Debug/Obj/imu.o new file mode 100644 index 0000000..5c7e7a5 Binary files /dev/null and b/Debug/Obj/imu.o differ diff --git a/Debug/Obj/main.o b/Debug/Obj/main.o new file mode 100644 index 0000000..b3cb777 Binary files /dev/null and b/Debug/Obj/main.o differ diff --git a/Debug/Obj/motors.o b/Debug/Obj/motors.o new file mode 100644 index 0000000..8751ef5 Binary files /dev/null and b/Debug/Obj/motors.o differ diff --git a/Debug/Obj/startup_stm32g431xx.o b/Debug/Obj/startup_stm32g431xx.o new file mode 100644 index 0000000..dc8f34c Binary files /dev/null and b/Debug/Obj/startup_stm32g431xx.o differ diff --git a/Debug/Obj/system_stm32g4xx.o b/Debug/Obj/system_stm32g4xx.o new file mode 100644 index 0000000..b95e87d Binary files /dev/null and b/Debug/Obj/system_stm32g4xx.o differ diff --git a/Debug/compile_commands.json b/Debug/compile_commands.json new file mode 100644 index 0000000..a865953 --- /dev/null +++ b/Debug/compile_commands.json @@ -0,0 +1,4767 @@ +[ + { + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\dsp_manager.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\dsp_manager.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\dsp_manager.o" + }, + { + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\imu.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\imu.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\imu.o" + }, + { + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\main.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\main.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\main.o" + }, + { + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\www\\motors.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\www", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\www\\motors.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\motors.o" + }, + { + "arguments" : + [ + "C:\\iar\\ewarm-9.70.1\\arm\\bin\\iccarm.exe", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\system_stm32g4xx.c", + "-nostdinc", + "-undef", + "-Wno-unaligned-access", + "-fiar-compiler", + "-ferror-limit=0", + "-D__IAR_CLANGD__", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\aarch32", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc", + "-isystem", + "C:\\iar\\ewarm-9.70.1\\arm\\inc\\c", + "-I", + "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\Core\\Include\\", + "-I", + "C:\\iar\\ewarm-9.70.1\\arm\\CMSIS\\DSP\\Include\\", + "--target=armv7m-none-eabi", + "-D", + "__CHAR_BITS__=8", + "-D", + "__CHAR_MAX__=0xff", + "-D", + "__CHAR_MIN__=0", + "-D", + "__CHAR_SIZE__=1", + "-D", + "__UNSIGNED_CHAR_MAX__=0xff", + "-D", + "__SIGNED_CHAR_MAX__=127", + "-D", + "__SIGNED_CHAR_MIN__=(-__SIGNED_CHAR_MAX__-1)", + "-D", + "__CHAR_ALIGN__=1", + "-D", + "__SHORT_SIZE__=2", + "-D", + "__UNSIGNED_SHORT_MAX__=0xffff", + "-D", + "__SIGNED_SHORT_MAX__=32767", + "-D", + "__SIGNED_SHORT_MIN__=(-__SIGNED_SHORT_MAX__-1)", + "-D", + "__SHORT_ALIGN__=2", + "-D", + "__INT_SIZE__=4", + "-D", + "__UNSIGNED_INT_MAX__=0xffffffffU", + "-D", + "__SIGNED_INT_MAX__=2147483647", + "-D", + "__SIGNED_INT_MIN__=(-__SIGNED_INT_MAX__-1)", + "-D", + "__INT_ALIGN__=4", + "-D", + "__LONG_SIZE__=4", + "-D", + "__UNSIGNED_LONG_MAX__=0xffffffffUL", + "-D", + "__SIGNED_LONG_MAX__=2147483647L", + "-D", + "__SIGNED_LONG_MIN__=(-__SIGNED_LONG_MAX__-1)", + "-D", + "__LONG_ALIGN__=4", + "-D", + "__LONG_LONG_SIZE__=8", + "-D", + "__UNSIGNED_LONG_LONG_MAX__=0xffffffffffffffffULL", + "-D", + "__SIGNED_LONG_LONG_MAX__=9223372036854775807LL", + "-D", + "__SIGNED_LONG_LONG_MIN__=(-__SIGNED_LONG_LONG_MAX__-1)", + "-D", + "__LONG_LONG_ALIGN__=8", + "-D", + "__INT8_T_TYPE__=signed char", + "-D", + "__INT8_T_MAX__=127", + "-D", + "__INT8_T_MIN__=(-__INT8_T_MAX__-1)", + "-D", + "__UINT8_T_TYPE__=unsigned char", + "-D", + "__UINT8_T_MAX__=0xff", + "-D", + "__INT8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT8_T_SIZE__=1", + "-D", + "__INT16_T_TYPE__=signed short int", + "-D", + "__INT16_T_MAX__=32767", + "-D", + "__INT16_T_MIN__=(-__INT16_T_MAX__-1)", + "-D", + "__UINT16_T_TYPE__=unsigned short int", + "-D", + "__UINT16_T_MAX__=0xffff", + "-D", + "__INT16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT16_T_SIZE__=2", + "-D", + "__INT32_T_TYPE__=signed int", + "-D", + "__INT32_T_MAX__=2147483647", + "-D", + "__INT32_T_MIN__=(-__INT32_T_MAX__-1)", + "-D", + "__UINT32_T_TYPE__=unsigned int", + "-D", + "__UINT32_T_MAX__=0xffffffffU", + "-D", + "__INT32_SIZE_PREFIX__=\"\"", + "-D", + "__INT32_T_SIZE__=4", + "-D", + "__INT64_T_TYPE__=signed long long int", + "-D", + "__INT64_T_MAX__=9223372036854775807LL", + "-D", + "__INT64_T_MIN__=(-__INT64_T_MAX__-1)", + "-D", + "__UINT64_T_TYPE__=unsigned long long int", + "-D", + "__UINT64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT64_T_SIZE__=8", + "-D", + "__INT_LEAST8_T_TYPE__=signed char", + "-D", + "__INT_LEAST8_T_MAX__=127", + "-D", + "__INT_LEAST8_T_MIN__=(-__INT_LEAST8_T_MAX__-1)", + "-D", + "__UINT_LEAST8_T_TYPE__=unsigned char", + "-D", + "__UINT_LEAST8_T_MAX__=0xff", + "-D", + "__INT8_C_SUFFIX__=", + "-D", + "__UINT8_C_SUFFIX__=", + "-D", + "__INT_LEAST8_SIZE_PREFIX__=\"hh\"", + "-D", + "__INT_LEAST8_T_SIZE__=1", + "-D", + "__INT_LEAST16_T_TYPE__=signed short int", + "-D", + "__INT_LEAST16_T_MAX__=32767", + "-D", + "__INT_LEAST16_T_MIN__=(-__INT_LEAST16_T_MAX__-1)", + "-D", + "__UINT_LEAST16_T_TYPE__=unsigned short int", + "-D", + "__UINT_LEAST16_T_MAX__=0xffff", + "-D", + "__INT16_C_SUFFIX__=", + "-D", + "__UINT16_C_SUFFIX__=", + "-D", + "__INT_LEAST16_SIZE_PREFIX__=\"h\"", + "-D", + "__INT_LEAST16_T_SIZE__=2", + "-D", + "__INT_LEAST32_T_TYPE__=signed int", + "-D", + "__INT_LEAST32_T_MAX__=2147483647", + "-D", + "__INT_LEAST32_T_MIN__=(-__INT_LEAST32_T_MAX__-1)", + "-D", + "__UINT_LEAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_LEAST32_T_MAX__=0xffffffffU", + "-D", + "__INT32_C_SUFFIX__=", + "-D", + "__UINT32_C_SUFFIX__=U", + "-D", + "__INT_LEAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_LEAST32_T_SIZE__=4", + "-D", + "__INT_LEAST64_T_TYPE__=signed long long int", + "-D", + "__INT_LEAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_LEAST64_T_MIN__=(-__INT_LEAST64_T_MAX__-1)", + "-D", + "__UINT_LEAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_LEAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT64_C_SUFFIX__=LL", + "-D", + "__UINT64_C_SUFFIX__=ULL", + "-D", + "__INT_LEAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_LEAST64_T_SIZE__=8", + "-D", + "__INT_FAST8_T_TYPE__=signed int", + "-D", + "__INT_FAST8_T_MAX__=2147483647", + "-D", + "__INT_FAST8_T_MIN__=(-__INT_FAST8_T_MAX__-1)", + "-D", + "__UINT_FAST8_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST8_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST8_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST8_T_SIZE__=4", + "-D", + "__INT_FAST16_T_TYPE__=signed int", + "-D", + "__INT_FAST16_T_MAX__=2147483647", + "-D", + "__INT_FAST16_T_MIN__=(-__INT_FAST16_T_MAX__-1)", + "-D", + "__UINT_FAST16_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST16_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST16_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST16_T_SIZE__=4", + "-D", + "__INT_FAST32_T_TYPE__=signed int", + "-D", + "__INT_FAST32_T_MAX__=2147483647", + "-D", + "__INT_FAST32_T_MIN__=(-__INT_FAST32_T_MAX__-1)", + "-D", + "__UINT_FAST32_T_TYPE__=unsigned int", + "-D", + "__UINT_FAST32_T_MAX__=0xffffffffU", + "-D", + "__INT_FAST32_SIZE_PREFIX__=\"\"", + "-D", + "__INT_FAST32_T_SIZE__=4", + "-D", + "__INT_FAST64_T_TYPE__=signed long long int", + "-D", + "__INT_FAST64_T_MAX__=9223372036854775807LL", + "-D", + "__INT_FAST64_T_MIN__=(-__INT_FAST64_T_MAX__-1)", + "-D", + "__UINT_FAST64_T_TYPE__=unsigned long long int", + "-D", + "__UINT_FAST64_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INT_FAST64_SIZE_PREFIX__=\"ll\"", + "-D", + "__INT_FAST64_T_SIZE__=8", + "-D", + "__INTMAX_T_TYPE__=signed long long int", + "-D", + "__INTMAX_T_MAX__=9223372036854775807LL", + "-D", + "__INTMAX_T_MIN__=(-__INTMAX_T_MAX__-1)", + "-D", + "__UINTMAX_T_TYPE__=unsigned long long int", + "-D", + "__UINTMAX_T_MAX__=0xffffffffffffffffULL", + "-D", + "__INTMAX_C_SUFFIX__=LL", + "-D", + "__UINTMAX_C_SUFFIX__=ULL", + "-D", + "__INTMAX_SIZE_PREFIX__=\"ll\"", + "-D", + "__INTMAX_T_SIZE__=8", + "-D", + "__ATOMIC_BOOL_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR16_T_LOCK_FREE=2", + "-D", + "__ATOMIC_CHAR32_T_LOCK_FREE=2", + "-D", + "__ATOMIC_WCHAR_T_LOCK_FREE=2", + "-D", + "__ATOMIC_SHORT_LOCK_FREE=2", + "-D", + "__ATOMIC_INT_LOCK_FREE=2", + "-D", + "__ATOMIC_LONG_LOCK_FREE=2", + "-D", + "__ATOMIC_LLONG_LOCK_FREE=0", + "-D", + "__ATOMIC_POINTER_LOCK_FREE=2", + "-D", + "__FLOAT_SIZE__=4", + "-D", + "__FLOAT_ALIGN__=4", + "-D", + "__FLT_MANT_DIG__=24", + "-D", + "__FLT_DIG__=6", + "-D", + "__FLT_DECIMAL_DIG__=9", + "-D", + "__FLT_MAX_EXP__=128", + "-D", + "__FLT_MIN_EXP__=-125", + "-D", + "__FLT_MAX_10_EXP__=38", + "-D", + "__FLT_MIN_10_EXP__=-37", + "-D", + "__FLT_MAX__=3.40282347E+38", + "-D", + "__FLT_MIN__=1.17549435E-38", + "-D", + "__FLT_HAS_SUBNORM__=1", + "-D", + "__FLT_TRUE_MIN__=1.40129846E-45", + "-D", + "__FLT_DENORM_MIN__=1.40129846E-45", + "-D", + "__FLT_EPSILON__=1.1920929E-7", + "-D", + "__DOUBLE_SIZE__=8", + "-D", + "__DOUBLE_ALIGN__=8", + "-D", + "__DBL_MANT_DIG__=53", + "-D", + "__DBL_DIG__=15", + "-D", + "__DBL_DECIMAL_DIG__=17", + "-D", + "__DBL_MAX_EXP__=1024", + "-D", + "__DBL_MIN_EXP__=-1021", + "-D", + "__DBL_MAX_10_EXP__=308", + "-D", + "__DBL_MIN_10_EXP__=-307", + "-D", + "__DBL_MAX__=1.7976931348623157E+308", + "-D", + "__DBL_MIN__=2.2250738585072014E-308", + "-D", + "__DBL_HAS_SUBNORM__=1", + "-D", + "__DBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__DBL_EPSILON__=2.2204460492503131E-16", + "-D", + "__LONG_DOUBLE_SIZE__=8", + "-D", + "__LONG_DOUBLE_ALIGN__=8", + "-D", + "__LDBL_MANT_DIG__=53", + "-D", + "__LDBL_DIG__=15", + "-D", + "__LDBL_DECIMAL_DIG__=17", + "-D", + "__LDBL_MAX_EXP__=1024", + "-D", + "__LDBL_MIN_EXP__=-1021", + "-D", + "__LDBL_MAX_10_EXP__=308", + "-D", + "__LDBL_MIN_10_EXP__=-307", + "-D", + "__LDBL_MAX__=1.7976931348623157E+308", + "-D", + "__LDBL_MIN__=2.2250738585072014E-308", + "-D", + "__LDBL_HAS_SUBNORM__=1", + "-D", + "__LDBL_TRUE_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_DENORM_MIN__=4.9406564584124654E-324", + "-D", + "__LDBL_EPSILON__=2.2204460492503131E-16", + "-D", + "____FP16_SIZE__=2", + "-D", + "____FP16_ALIGN__=2", + "-D", + "__FLT16_MANT_DIG__=11", + "-D", + "__FLT16_DIG__=3", + "-D", + "__FLT16_DECIMAL_DIG__=5", + "-D", + "__FLT16_MAX_EXP__=16", + "-D", + "__FLT16_MIN_EXP__=-13", + "-D", + "__FLT16_MAX_10_EXP__=4", + "-D", + "__FLT16_MIN_10_EXP__=-4", + "-D", + "__FLT16_MAX__=6.5504E+4", + "-D", + "__FLT16_MIN__=6.1035E-5", + "-D", + "__FLT16_HAS_SUBNORM__=1", + "-D", + "__FLT16_TRUE_MIN__=5.9605E-8", + "-D", + "__FLT16_DENORM_MIN__=5.9605E-8", + "-D", + "__FLT16_EPSILON__=9.7656E-4", + "-D", + "___FLOAT16_SIZE__=2", + "-D", + "___FLOAT16_ALIGN__=2", + "-D", + "__NAN_HAS_HIGH_MANTISSA_BIT_SET__=0", + "-D", + "__SUBNORMAL_FLOATING_POINTS__=1", + "-D", + "__SIZE_T_TYPE__=unsigned int", + "-D", + "__SIZE_T_MAX__=0xffffffffU", + "-D", + "__SIZEOF_SIZE_T__=4", + "-D", + "__PTRDIFF_T_TYPE__=signed int", + "-D", + "__PTRDIFF_T_MAX__=2147483647", + "-D", + "__PTRDIFF_T_MIN__=(-__PTRDIFF_T_MAX__-1)", + "-D", + "__PTRDIFF_T_SIZE__=4", + "-D", + "__INTPTR_T_TYPE__=signed int", + "-D", + "__INTPTR_T_MAX__=2147483647", + "-D", + "__INTPTR_T_MIN__=(-__INTPTR_T_MAX__-1)", + "-D", + "__INTPTR_T_SIZE__=4", + "-D", + "__UINTPTR_T_TYPE__=unsigned int", + "-D", + "__UINTPTR_T_MAX__=0xffffffffU", + "-D", + "__INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__JMP_BUF_ELEMENT_TYPE__=unsigned long long int", + "-D", + "__JMP_BUF_NUM_ELEMENTS__=16", + "-D", + "__TID__=0xcf60", + "-D", + "__VER__=9070001", + "-D", + "__BUILD_NUMBER__=475", + "-D", + "__IAR_SYSTEMS_ICC__=9", + "-D", + "_MAX_ALIGNMENT=8", + "-D", + "__LITTLE_ENDIAN__=1", + "-D", + "__BOOL_TYPE__=unsigned char", + "-D", + "__BOOL_SIZE__=1", + "-D", + "__WCHAR_T_TYPE__=unsigned int", + "-D", + "__WCHAR_T_SIZE__=4", + "-D", + "__WCHAR_T_MAX__=0xffffffffU", + "-D", + "__DEF_PTR_MEM__=__data", + "-D", + "__DEF_PTR_SIZE__=4", + "-D", + "__CODE_MEMORY_LIST1__()=__CODE_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_MEMORY_LIST2__(_P1)=__CODE_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_MEMORY_LIST3__(_P1,_P2)=__CODE_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_MEMORY_LIST1__()=__DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_MEMORY_LIST2__(_P1)=__DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_MEMORY_LIST3__(_P1,_P2)=__DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DATA_MEM0__=__data", + "-D", + "__DATA_MEM0_POINTER_OK__=1", + "-D", + "__DATA_MEM0_UNIQUE_POINTER__=1", + "-D", + "__DATA_MEM0_VAR_OK__=1", + "-D", + "__DATA_MEM0_INDEX_TYPE__=int", + "-D", + "__DATA_MEM0_SIZE_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_TYPE__=int", + "-D", + "__DATA_MEM0_UINTPTR_TYPE__=unsigned int", + "-D", + "__DATA_MEM0_INTPTR_SIZE_PREFIX__=\"\"", + "-D", + "__DATA_MEM0_MAX_SIZE__=0x7fffffffU", + "-D", + "_RSIZE_MAX=0x7fffffffU", + "-D", + "__DATA_MEM0_HEAP_SEGMENT__=\"HEAP\"", + "-D", + "__DATA_MEM0_PAGE_SIZE__=0", + "-D", + "__DATA_MEM0_HEAP__=0", + "-D", + "__CODE_MEM0__=__code", + "-D", + "__CODE_MEM0_POINTER_OK__=1", + "-D", + "__CODE_MEM0_UNIQUE_POINTER__=1", + "-D", + "__CODE_PTR_MEMORY_LIST1__()=__CODE_PTR_MEM_HELPER1__(__code, 0)", + "-D", + "__CODE_PTR_MEMORY_LIST2__(_P1)=__CODE_PTR_MEM_HELPER2__(__code, 0, _P1)", + "-D", + "__CODE_PTR_MEMORY_LIST3__(_P1,_P2)=__CODE_PTR_MEM_HELPER3__(__code, 0, _P1, _P2)", + "-D", + "__DATA_PTR_MEMORY_LIST1__()=__DATA_PTR_MEM_HELPER1__(__data, 0)", + "-D", + "__DATA_PTR_MEMORY_LIST2__(_P1)=__DATA_PTR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__DATA_PTR_MEMORY_LIST3__(_P1,_P2)=__DATA_PTR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VAR_MEMORY_LIST1__()=__VAR_MEM_HELPER1__(__data, 0)", + "-D", + "__VAR_MEMORY_LIST2__(_P1)=__VAR_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__VAR_MEMORY_LIST3__(_P1,_P2)=__VAR_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__VARD_MEMORY_LIST1__()=__VARD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAP_MEM0__=0", + "-D", + "__HEAP_DEFAULT_MEM__=0", + "-D", + "__HEAP_MEMORY_LIST1__()=__HEAP_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAP_MEMORY_LIST2__(_P1)=__HEAP_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__HEAP_MEMORY_LIST3__(_P1,_P2)=__HEAP_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__HVAR_MEMORY_LIST1__()=__HVAR_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPD_MEMORY_LIST1__()=__HEAPD_MEM_HELPER1__(__data, 0, _)", + "-D", + "__HEAPU_MEMORY_LIST1__()=__HEAPU_MEM_HELPER1__(__data, 0)", + "-D", + "__HEAPND_MEMORY_LIST1__()=", + "-D", + "__MULTIPLE_HEAPS__=0", + "-D", + "__TOPM_DATA_MEMORY_LIST1__()=", + "-D", + "__TOPM_DATA_MEMORY_LIST2__(_P1)=", + "-D", + "__TOPM_DATA_MEMORY_LIST3__(_P1,_P2)=", + "-D", + "__TOPP_DATA_MEMORY_LIST1__()=__TOPP_DATA_MEM_HELPER1__(__data, 0)", + "-D", + "__TOPP_DATA_MEMORY_LIST2__(_P1)=__TOPP_DATA_MEM_HELPER2__(__data, 0, _P1)", + "-D", + "__TOPP_DATA_MEMORY_LIST3__(_P1,_P2)=__TOPP_DATA_MEM_HELPER3__(__data, 0, _P1, _P2)", + "-D", + "__DEF_HEAP_MEM__=__data", + "-D", + "__DEF_STACK_MEM_INDEX__=0", + "-D", + "__PRAGMA_PACK_ON__=1", + "-D", + "__MULTIPLE_INHERITANCE__=1", + "-D", + "__FOR_DEBUG__=", + "-D", + "__AAPCS_VFP__=1", + "-D", + "__ARM4TM__=4", + "-D", + "__ARM5TM__=5", + "-D", + "__ARM5T__=5", + "-D", + "__ARM5__=5", + "-D", + "__ARM6MEDIA__=6", + "-D", + "__ARM6M__=11", + "-D", + "__ARM6SM__=12", + "-D", + "__ARM6T2__=6", + "-D", + "__ARM6__=6", + "-D", + "__ARM7EM__=13", + "-D", + "__ARM7M__=7", + "-D", + "__ARM7__=7", + "-D", + "__ARMVFPV1__=1", + "-D", + "__ARMVFPV2__=2", + "-D", + "__ARMVFPV3_D16__=1", + "-D", + "__ARMVFPV3_FP16__=1", + "-D", + "__ARMVFPV3__=3", + "-D", + "__ARMVFPV4__=4", + "-D", + "__ARMVFP_D16__=1", + "-D", + "__ARMVFP_FP16__=1", + "-D", + "__ARMVFP_SP__=1", + "-D", + "__ARMVFP__=__ARMVFPV4__", + "-D", + "__ARM_32BIT_STATE=1", + "-D", + "__ARM_ACLE=201", + "-D", + "__ARM_ALIGN_MAX_PWR=8", + "-D", + "__ARM_ALIGN_MAX_STACK_PWR=3", + "-D", + "__ARM_ARCH=7", + "-D", + "__ARM_ARCH_ISA_THUMB=2", + "-D", + "__ARM_ARCH_PROFILE='M'", + "-D", + "__ARM_FEATURE_CLZ=1", + "-D", + "__ARM_FEATURE_COPROC=15", + "-D", + "__ARM_FEATURE_DSP=1", + "-D", + "__ARM_FEATURE_FMA=1", + "-D", + "__ARM_FEATURE_IDIV=1", + "-D", + "__ARM_FEATURE_LDREX=7", + "-D", + "__ARM_FEATURE_MVE=0", + "-D", + "__ARM_FEATURE_QBIT=1", + "-D", + "__ARM_FEATURE_SAT=1", + "-D", + "__ARM_FEATURE_SIMD32=1", + "-D", + "__ARM_FEATURE_UNALIGNED=1", + "-D", + "__ARM_FP=6", + "-D", + "__ARM_FP16_ARGS=1", + "-D", + "__ARM_FP16_FORMAT_IEEE=1", + "-D", + "__ARM_MEDIA__=1", + "-D", + "__ARM_PCS_VFP=1", + "-D", + "__ARM_PROFILE_M__=1", + "-D", + "__ARM_SIZEOF_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZEOF_WCHAR_T=4", + "-D", + "__ARM_SIZE_MINIMAL_ENUM=1", + "-D", + "__ARM_SIZE_WCHAR_T=4", + "-D", + "__CODE_SIZE_LIMIT=0", + "-D", + "__CORE__=__ARM7EM__", + "-D", + "__CPU_MODE__=1", + "-D", + "__GOT_INDIRECT=0", + "-D", + "__IAR_PCS_TRUST=1", + "-D", + "__ICCARM_INTRINSICS_VERSION__=2", + "-D", + "__ICCARM__=1", + "-D", + "__INTERWORKING__=1", + "-D", + "__thumb__=1", + "-D", + "__PLAIN_INT_BITFIELD_IS_SIGNED__=0", + "-D", + "__HAS_WEAK__=1", + "-D", + "__HAS_PACKED__=1", + "-D", + "__HAS_JOINED_TYPES__=1", + "-D", + "__HAS_LOCATED_DECLARATION__=1", + "-D", + "__HAS_LOCATED_WITH_INIT__=1", + "-D", + "__IAR_COMPILERBASE__=0xa1300", + "-D", + "__IAR_COMPILERBASE_STR__=10.19.0.9999", + "-D", + "__UNICODE_SOURCE_SUPPORTED__=1", + "-D", + "__VTABLE_MEM__=", + "-D", + "__PRAGMA_REDEFINE_EXTNAME=1", + "-D", + "__STDC__=1", + "-D", + "__STDC_VERSION__=201710L", + "-D", + "__STDC_IEC_559__=1", + "-D", + "__STDC_IEC_559_COMPLEX__=1", + "-D", + "__STDC_NO_VLA__=1", + "-D", + "__MEMORY_ORDER_RELAXED__=0", + "-D", + "__MEMORY_ORDER_CONSUME__=1", + "-D", + "__MEMORY_ORDER_ACQUIRE__=2", + "-D", + "__MEMORY_ORDER_RELEASE__=3", + "-D", + "__MEMORY_ORDER_ACQ_REL__=4", + "-D", + "__MEMORY_ORDER_SEQ_CST__=5", + "-D", + "__ATOMIC_RELAXED=0", + "-D", + "__ATOMIC_CONSUME=2", + "-D", + "__ATOMIC_ACQUIRE=2", + "-D", + "__ATOMIC_RELEASE=3", + "-D", + "__ATOMIC_ACQ_REL=4", + "-D", + "__ATOMIC_SEQ_CST=5", + "-D", + "__STDC_UTF_16__=1", + "-D", + "__STDC_UTF_32__=1", + "-D", + "__STDC_LIB_EXT1__=201112L", + "-D", + "__STDC_NO_THREADS__=1", + "-D", + "__STDC_ISO_10646__=201103L", + "-D", + "__STDC_HOSTED__=1", + "-D", + "__EDG_IA64_ABI=1", + "-D", + "__EDG_IA64_ABI_VARIANT_CTORS_AND_DTORS_RETURN_THIS=1", + "-D", + "__EDG_IA64_ABI_USE_INT_STATIC_INIT_GUARD=1", + "-D", + "__cpp_designated_initializers=201707L", + "-D", + "__cpp_hex_float=201603L", + "-D", + "__cpp_attributes=200809L", + "-D", + "__cpp_binary_literals=201304L", + "-D", + "__cpp_unicode_literals=200710L", + "-D", + "__cpp_enumerator_attributes=201411L", + "-D", + "__cpp_static_assert=200410L", + "-D", + "__EDG__=1", + "-D", + "__EDG_VERSION__=606", + "-D", + "__EDG_SIZE_TYPE__=unsigned int", + "-D", + "__EDG_PTRDIFF_TYPE__=int", + "-D", + "__EDG_DELTA_TYPE=int", + "-D", + "__EDG_IA64_VTABLE_ENTRY_TYPE=int", + "-D", + "__EDG_VIRTUAL_FUNCTION_INDEX_TYPE=unsigned short", + "-D", + "__EDG_LOWER_VARIABLE_LENGTH_ARRAYS=1", + "-D", + "__EDG_IA64_ABI_USE_VARIANT_ARRAY_COOKIES=1", + "-D", + "__EDG_ABI_COMPATIBILITY_VERSION=9999", + "-D", + "__EDG_ABI_CHANGES_FOR_RTTI=1", + "-D", + "__EDG_ABI_CHANGES_FOR_ARRAY_NEW_AND_DELETE=1", + "-D", + "__EDG_ABI_CHANGES_FOR_PLACEMENT_DELETE=1", + "-D", + "__EDG_BSD=0", + "-D", + "__EDG_SYSV=0", + "-D", + "__EDG_ANSIC=1", + "-D", + "__EDG_CPP11_IL_EXTENSIONS_SUPPORTED=1", + "-D", + "__EDG_HOST_HAS_FLOAT16_TYPE=0", + "-D", + "__EDG_FLOAT80_ENABLING_POSSIBLE=0", + "-D", + "__EDG_FLOAT128_ENABLING_POSSIBLE=0", + "-D", + "__EDG_INT128_EXTENSIONS_ALLOWED=0", + "-D", + "_DLIB_CONFIG_FILE_HEADER_NAME=\"C:\\iar\\ewarm-9.70.1\\arm\\inc\\c\\DLib_Config_Normal.h\"", + "-D", + "_DLIB_CONFIG_FILE_STRING=\"C:\\\\iar\\\\ewarm-9.70.1\\\\arm\\\\inc\\\\c\\\\DLib_Config_Normal.h\"", + "-D", + "__VERSION__=\"IAR ANSI C/C++ Compiler V9.70.1.475/W64 for ARM\"", + "-D", + "_VA_DEFINED=", + "-D_VA_LIST=__builtin_va_list", + "-D", + "STM32G431xx=1", + "-D", + "ARM_MATH_CM4=1", + "-D", + "ARM_MATH_CM4=1", + "-D__ALIGNOF__=__alignof__", + "-D__absolute=", + "-D__arm=", + "-D__assignment_by_bitwise_copy_allowed(Ty0)=1", + "-D__c99_generic(...)=", + "-D__code=", + "-D__constrange(a,...)=", + "-D__construction_by_bitwise_copy_allowed(Ty0)=1", + "-D__data=", + "-D__has_constructor=__is_trivially_constructible", + "-D__has_destructor=__is_trivially_constructible", + "-D__iar_generic(...)=", + "-D__inline=", + "-D__inline__=", + "-D__interwork=", + "-D__intrinsic=", + "-D__monitor=", + "-D__naked=", + "-D__nested=", + "-D__no_alloc=", + "-D__no_alloc16=", + "-D__no_init=", + "-D__no_scratch=", + "-D__noreturn=", + "-D__nounwind=", + "-D__out_of_image=", + "-D__packed=", + "-D__ramfunc=", + "-D__ro_placement=", + "-D__root=", + "-D__section_begin(...)=((void *) 0)", + "-D__section_end(...)=((void *) 0)", + "-D__section_size(...)=0", + "-D__segment_begin(...)=((void *) 0)", + "-D__segment_end(...)=((void *) 0)", + "-D__segment_size(...)=0", + "-D__sfb(...)=((void *) 0)", + "-D__sfe(...)=((void *) 0)", + "-D__sfs(...)=0", + "-D__spec_string=", + "-D__stackless=", + "-D__swi=", + "-D__task=", + "-D__thumb=", + "-D__weak=", + "-D__aeabi_memclr(Ty0, Ty1)=", + "-D__aeabi_memcpy(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr4(Ty0, Ty1)=", + "-D__aeabi_memcpy4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset4(Ty0, Ty1, Ty2)=", + "-D__aeabi_memclr8(Ty0, Ty1)=", + "-D__aeabi_memcpy8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memmove8(Ty0, Ty1, Ty2)=", + "-D__aeabi_memset8(Ty0, Ty1, Ty2)=", + "-D__get_SP()=0", + "-D__get_PC()=0", + "-D__iar_fp2bits32(Ty0)=0", + "-D__iar_fp2bits64(Ty0)=0", + "-D__iar_fpgethi64(Ty0)=0", + "-D__iar_fpsethi64(Ty0, Ty1)=0.0", + "-D__iar_bits2fp32(Ty0)=0.0f", + "-D__iar_bits2fp64(Ty0)=0.0", + "-D__iar_atomic_init(Ty0, Ty1)=", + "-D__iar_atomic_init(Ty0, Ty1, Ty2)=", + "-D__iar_atomic_load(Ty0, Ty1)=0", + "-D__iar_atomic_exchange(Ty0, Ty1, Ty2)=0", + "-D__iar_atomic_compare_exchange_strong(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_compare_exchange_weak(Ty0, Ty1, Ty2, Ty3, Ty4)=0", + "-D__iar_atomic_fetch_add(...)=0", + "-D__iar_atomic_fetch_sub(...)=0", + "-D__iar_atomic_fetch_or(...)=0", + "-D__iar_atomic_fetch_xor(...)=0", + "-D__iar_atomic_fetch_and(...)=0", + "-Dtypeof(Ty0)=__typeof__(Ty0)", + "-D__no_alloc_str(...)=((unsigned long)0)", + "-D__no_alloc_str16(...)=((unsigned short)0)", + "-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS", + "-funsigned-char", + "-fiar-extensions", + "-std=gnu11", + "-x", + "c" + ], + "directory" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft", + "file" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\system_stm32g4xx.c", + "output" : "C:\\Users\\vadychka\\Documents\\GitHub\\leybl\\fft\\Debug\\Obj\\system_stm32g4xx.o" + } +] \ No newline at end of file diff --git a/arm_math.h b/arm_math.h new file mode 100644 index 0000000..48bee62 --- /dev/null +++ b/arm_math.h @@ -0,0 +1,8970 @@ +/****************************************************************************** + * @file arm_math.h + * @brief Public header file for CMSIS DSP Library + * @version V1.7.0 + * @date 18. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2010-2019 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + \mainpage CMSIS DSP Software Library + * + * Introduction + * ------------ + * + * This user manual describes the CMSIS DSP software library, + * a suite of common signal processing functions for use on Cortex-M and Cortex-A processor + * based devices. + * + * The library is divided into a number of functions each covering a specific category: + * - Basic math functions + * - Fast math functions + * - Complex math functions + * - Filtering functions + * - Matrix functions + * - Transform functions + * - Motor control functions + * - Statistical functions + * - Support functions + * - Interpolation functions + * - Support Vector Machine functions (SVM) + * - Bayes classifier functions + * - Distance functions + * + * The library has generally separate functions for operating on 8-bit integers, 16-bit integers, + * 32-bit integer and 32-bit floating-point values. + * + * Using the Library + * ------------ + * + * The library installer contains prebuilt versions of the libraries in the Lib folder. + * + * Here is the list of pre-built libraries : + * - arm_cortexM7lfdp_math.lib (Cortex-M7, Little endian, Double Precision Floating Point Unit) + * - arm_cortexM7bfdp_math.lib (Cortex-M7, Big endian, Double Precision Floating Point Unit) + * - arm_cortexM7lfsp_math.lib (Cortex-M7, Little endian, Single Precision Floating Point Unit) + * - arm_cortexM7bfsp_math.lib (Cortex-M7, Big endian and Single Precision Floating Point Unit on) + * - arm_cortexM7l_math.lib (Cortex-M7, Little endian) + * - arm_cortexM7b_math.lib (Cortex-M7, Big endian) + * - arm_cortexM4lf_math.lib (Cortex-M4, Little endian, Floating Point Unit) + * - arm_cortexM4bf_math.lib (Cortex-M4, Big endian, Floating Point Unit) + * - arm_cortexM4l_math.lib (Cortex-M4, Little endian) + * - arm_cortexM4b_math.lib (Cortex-M4, Big endian) + * - arm_cortexM3l_math.lib (Cortex-M3, Little endian) + * - arm_cortexM3b_math.lib (Cortex-M3, Big endian) + * - arm_cortexM0l_math.lib (Cortex-M0 / Cortex-M0+, Little endian) + * - arm_cortexM0b_math.lib (Cortex-M0 / Cortex-M0+, Big endian) + * - arm_ARMv8MBLl_math.lib (Armv8-M Baseline, Little endian) + * - arm_ARMv8MMLl_math.lib (Armv8-M Mainline, Little endian) + * - arm_ARMv8MMLlfsp_math.lib (Armv8-M Mainline, Little endian, Single Precision Floating Point Unit) + * - arm_ARMv8MMLld_math.lib (Armv8-M Mainline, Little endian, DSP instructions) + * - arm_ARMv8MMLldfsp_math.lib (Armv8-M Mainline, Little endian, DSP instructions, Single Precision Floating Point Unit) + * + * The library functions are declared in the public file arm_math.h which is placed in the Include folder. + * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single + * public header file arm_math.h for Cortex-M cores with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. + * + * + * Examples + * -------- + * + * The library ships with a number of examples which demonstrate how to use the library functions. + * + * Toolchain Support + * ------------ + * + * The library is now tested on Fast Models building with cmake. + * Core M0, M7, A5 are tested. + * + * + * + * Building the Library + * ------------ + * + * The library installer contains a project file to rebuild libraries on MDK toolchain in the CMSIS\\DSP\\Projects\\ARM folder. + * - arm_cortexM_math.uvprojx + * + * + * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional preprocessor macros detailed above. + * + * There is also a work in progress cmake build. The README file is giving more details. + * + * Preprocessor Macros + * ------------ + * + * Each library project have different preprocessor macros. + * + * - ARM_MATH_BIG_ENDIAN: + * + * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets. + * + * - ARM_MATH_MATRIX_CHECK: + * + * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices + * + * - ARM_MATH_ROUNDING: + * + * Define macro ARM_MATH_ROUNDING for rounding on support functions + * + * - ARM_MATH_LOOPUNROLL: + * + * Define macro ARM_MATH_LOOPUNROLL to enable manual loop unrolling in DSP functions + * + * - ARM_MATH_NEON: + * + * Define macro ARM_MATH_NEON to enable Neon versions of the DSP functions. + * It is not enabled by default when Neon is available because performances are + * dependent on the compiler and target architecture. + * + * - ARM_MATH_NEON_EXPERIMENTAL: + * + * Define macro ARM_MATH_NEON_EXPERIMENTAL to enable experimental Neon versions of + * of some DSP functions. Experimental Neon versions currently do not have better + * performances than the scalar versions. + * + * - ARM_MATH_HELIUM: + * + * It implies the flags ARM_MATH_MVEF and ARM_MATH_MVEI and ARM_MATH_FLOAT16. + * + * - ARM_MATH_MVEF: + * + * Select Helium versions of the f32 algorithms. + * It implies ARM_MATH_FLOAT16 and ARM_MATH_MVEI. + * + * - ARM_MATH_MVEI: + * + * Select Helium versions of the int and fixed point algorithms. + * + * - ARM_MATH_FLOAT16: + * + * Float16 implementations of some algorithms (Requires MVE extension). + * + *
+ * CMSIS-DSP in ARM::CMSIS Pack + * ----------------------------- + * + * The following files relevant to CMSIS-DSP are present in the ARM::CMSIS Pack directories: + * |File/Folder |Content | + * |---------------------------------|------------------------------------------------------------------------| + * |\b CMSIS\\Documentation\\DSP | This documentation | + * |\b CMSIS\\DSP\\DSP_Lib_TestSuite | DSP_Lib test suite | + * |\b CMSIS\\DSP\\Examples | Example projects demonstrating the usage of the library functions | + * |\b CMSIS\\DSP\\Include | DSP_Lib include files | + * |\b CMSIS\\DSP\\Lib | DSP_Lib binaries | + * |\b CMSIS\\DSP\\Projects | Projects to rebuild DSP_Lib binaries | + * |\b CMSIS\\DSP\\Source | DSP_Lib source files | + * + *
+ * Revision History of CMSIS-DSP + * ------------ + * Please refer to \ref ChangeLog_pg. + */ + + +/** + * @defgroup groupMath Basic Math Functions + */ + +/** + * @defgroup groupFastMath Fast Math Functions + * This set of functions provides a fast approximation to sine, cosine, and square root. + * As compared to most of the other functions in the CMSIS math library, the fast math functions + * operate on individual values and not arrays. + * There are separate functions for Q15, Q31, and floating-point data. + * + */ + +/** + * @defgroup groupCmplxMath Complex Math Functions + * This set of functions operates on complex data vectors. + * The data in the complex arrays is stored in an interleaved fashion + * (real, imag, real, imag, ...). + * In the API functions, the number of samples in a complex array refers + * to the number of complex values; the array contains twice this number of + * real values. + */ + +/** + * @defgroup groupFilters Filtering Functions + */ + +/** + * @defgroup groupMatrix Matrix Functions + * + * This set of functions provides basic matrix math operations. + * The functions operate on matrix data structures. For example, + * the type + * definition for the floating-point matrix structure is shown + * below: + *
+ *     typedef struct
+ *     {
+ *       uint16_t numRows;     // number of rows of the matrix.
+ *       uint16_t numCols;     // number of columns of the matrix.
+ *       float32_t *pData;     // points to the data of the matrix.
+ *     } arm_matrix_instance_f32;
+ * 
+ * There are similar definitions for Q15 and Q31 data types. + * + * The structure specifies the size of the matrix and then points to + * an array of data. The array is of size numRows X numCols + * and the values are arranged in row order. That is, the + * matrix element (i, j) is stored at: + *
+ *     pData[i*numCols + j]
+ * 
+ * + * \par Init Functions + * There is an associated initialization function for each type of matrix + * data structure. + * The initialization function sets the values of the internal structure fields. + * Refer to \ref arm_mat_init_f32(), \ref arm_mat_init_q31() and \ref arm_mat_init_q15() + * for floating-point, Q31 and Q15 types, respectively. + * + * \par + * Use of the initialization function is optional. However, if initialization function is used + * then the instance structure cannot be placed into a const data section. + * To place the instance structure in a const data + * section, manually initialize the data structure. For example: + *
+ * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
+ * 
+ * where nRows specifies the number of rows, nColumns + * specifies the number of columns, and pData points to the + * data array. + * + * \par Size Checking + * By default all of the matrix functions perform size checking on the input and + * output matrices. For example, the matrix addition function verifies that the + * two input matrices and the output matrix all have the same number of rows and + * columns. If the size check fails the functions return: + *
+ *     ARM_MATH_SIZE_MISMATCH
+ * 
+ * Otherwise the functions return + *
+ *     ARM_MATH_SUCCESS
+ * 
+ * There is some overhead associated with this matrix size checking. + * The matrix size checking is enabled via the \#define + *
+ *     ARM_MATH_MATRIX_CHECK
+ * 
+ * within the library project settings. By default this macro is defined + * and size checking is enabled. By changing the project settings and + * undefining this macro size checking is eliminated and the functions + * run a bit faster. With size checking disabled the functions always + * return ARM_MATH_SUCCESS. + */ + +/** + * @defgroup groupTransforms Transform Functions + */ + +/** + * @defgroup groupController Controller Functions + */ + +/** + * @defgroup groupStats Statistics Functions + */ + +/** + * @defgroup groupSupport Support Functions + */ + +/** + * @defgroup groupInterpolation Interpolation Functions + * These functions perform 1- and 2-dimensional interpolation of data. + * Linear interpolation is used for 1-dimensional data and + * bilinear interpolation is used for 2-dimensional data. + */ + +/** + * @defgroup groupExamples Examples + */ + +/** + * @defgroup groupSVM SVM Functions + * This set of functions is implementing SVM classification on 2 classes. + * The training must be done from scikit-learn. The parameters can be easily + * generated from the scikit-learn object. Some examples are given in + * DSP/Testing/PatternGeneration/SVM.py + * + * If more than 2 classes are needed, the functions in this folder + * will have to be used, as building blocks, to do multi-class classification. + * + * No multi-class classification is provided in this SVM folder. + * + */ + + +/** + * @defgroup groupBayes Bayesian estimators + * + * Implement the naive gaussian Bayes estimator. + * The training must be done from scikit-learn. + * + * The parameters can be easily + * generated from the scikit-learn object. Some examples are given in + * DSP/Testing/PatternGeneration/Bayes.py + */ + +/** + * @defgroup groupDistance Distance functions + * + * Distance functions for use with clustering algorithms. + * There are distance functions for float vectors and boolean vectors. + * + */ + + +#ifndef _ARM_MATH_H +#define _ARM_MATH_H + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Compiler specific diagnostic adjustment */ +#if defined ( __CC_ARM ) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wsign-conversion" + #pragma GCC diagnostic ignored "-Wconversion" + #pragma GCC diagnostic ignored "-Wunused-parameter" + +#elif defined ( __ICCARM__ ) + +#elif defined ( __TI_ARM__ ) + +#elif defined ( __CSMC__ ) + +#elif defined ( __TASKING__ ) + +#elif defined ( _MSC_VER ) + +#else + #error Unknown compiler +#endif + + +/* Included for instrinsics definitions */ +#if defined (_MSC_VER ) +#include +#define __STATIC_FORCEINLINE static __forceinline +#define __STATIC_INLINE static __inline +#define __ALIGNED(x) __declspec(align(x)) + +#elif defined (__GNUC_PYTHON__) +#include +#define __ALIGNED(x) __attribute__((aligned(x))) +#define __STATIC_FORCEINLINE static __attribute__((inline)) +#define __STATIC_INLINE static __attribute__((inline)) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Wattributes" + +#else +#include "cmsis_compiler.h" +#endif + + + +#include +#include +#include +#include + + +#define F64_MAX ((float64_t)DBL_MAX) +#define F32_MAX ((float32_t)FLT_MAX) + +#if defined(ARM_MATH_FLOAT16) +#define F16_MAX ((float16_t)FLT_MAX) +#endif + +#define F64_MIN (-DBL_MAX) +#define F32_MIN (-FLT_MAX) + +#if defined(ARM_MATH_FLOAT16) +#define F16_MIN (-(float16_t)FLT_MAX) +#endif + +#define F64_ABSMAX ((float64_t)DBL_MAX) +#define F32_ABSMAX ((float32_t)FLT_MAX) + +#if defined(ARM_MATH_FLOAT16) +#define F16_ABSMAX ((float16_t)FLT_MAX) +#endif + +#define F64_ABSMIN ((float64_t)0.0) +#define F32_ABSMIN ((float32_t)0.0) + +#if defined(ARM_MATH_FLOAT16) +#define F16_ABSMIN ((float16_t)0.0) +#endif + +#define Q31_MAX ((q31_t)(0x7FFFFFFFL)) +#define Q15_MAX ((q15_t)(0x7FFF)) +#define Q7_MAX ((q7_t)(0x7F)) +#define Q31_MIN ((q31_t)(0x80000000L)) +#define Q15_MIN ((q15_t)(0x8000)) +#define Q7_MIN ((q7_t)(0x80)) + +#define Q31_ABSMAX ((q31_t)(0x7FFFFFFFL)) +#define Q15_ABSMAX ((q15_t)(0x7FFF)) +#define Q7_ABSMAX ((q7_t)(0x7F)) +#define Q31_ABSMIN ((q31_t)0) +#define Q15_ABSMIN ((q15_t)0) +#define Q7_ABSMIN ((q7_t)0) + +/* evaluate ARM DSP feature */ +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + #define ARM_MATH_DSP 1 +#endif + +#if defined(ARM_MATH_NEON) +#include +#endif + +#if defined (ARM_MATH_HELIUM) + #define ARM_MATH_MVEF + #define ARM_MATH_FLOAT16 +#endif + +#if defined (ARM_MATH_MVEF) + #define ARM_MATH_MVEI + #define ARM_MATH_FLOAT16 +#endif + +#if defined (ARM_MATH_HELIUM) || defined(ARM_MATH_MVEF) || defined(ARM_MATH_MVEI) +#include +#endif + + + /** + * @brief Macros required for reciprocal calculation in Normalized LMS + */ + +#define DELTA_Q31 ((q31_t)(0x100)) +#define DELTA_Q15 ((q15_t)0x5) +#define INDEX_MASK 0x0000003F +#ifndef PI + #define PI 3.14159265358979f +#endif + + /** + * @brief Macros required for SINE and COSINE Fast math approximations + */ + +#define FAST_MATH_TABLE_SIZE 512 +#define FAST_MATH_Q31_SHIFT (32 - 10) +#define FAST_MATH_Q15_SHIFT (16 - 10) +#define CONTROLLER_Q31_SHIFT (32 - 9) +#define TABLE_SPACING_Q31 0x400000 +#define TABLE_SPACING_Q15 0x80 + + /** + * @brief Macros required for SINE and COSINE Controller functions + */ + /* 1.31(q31) Fixed value of 2/360 */ + /* -1 to +1 is divided into 360 values so total spacing is (2/360) */ +#define INPUT_SPACING 0xB60B61 + + /** + * @brief Macros for complex numbers + */ + + /* Dimension C vector space */ + #define CMPLX_DIM 2 + + /** + * @brief Error status returned by some functions in the library. + */ + + typedef enum + { + ARM_MATH_SUCCESS = 0, /**< No error */ + ARM_MATH_ARGUMENT_ERROR = -1, /**< One or more arguments are incorrect */ + ARM_MATH_LENGTH_ERROR = -2, /**< Length of data buffer is incorrect */ + ARM_MATH_SIZE_MISMATCH = -3, /**< Size of matrices is not compatible with the operation */ + ARM_MATH_NANINF = -4, /**< Not-a-number (NaN) or infinity is generated */ + ARM_MATH_SINGULAR = -5, /**< Input matrix is singular and cannot be inverted */ + ARM_MATH_TEST_FAILURE = -6 /**< Test Failed */ + } arm_status; + + /** + * @brief 8-bit fractional data type in 1.7 format. + */ + typedef int8_t q7_t; + + /** + * @brief 16-bit fractional data type in 1.15 format. + */ + typedef int16_t q15_t; + + /** + * @brief 32-bit fractional data type in 1.31 format. + */ + typedef int32_t q31_t; + + /** + * @brief 64-bit fractional data type in 1.63 format. + */ + typedef int64_t q63_t; + + /** + * @brief 32-bit floating-point type definition. + */ + typedef float float32_t; + + /** + * @brief 64-bit floating-point type definition. + */ + typedef double float64_t; + + /** + * @brief vector types + */ +#if defined(ARM_MATH_NEON) || defined (ARM_MATH_MVEI) + /** + * @brief 64-bit fractional 128-bit vector data type in 1.63 format + */ + typedef int64x2_t q63x2_t; + + /** + * @brief 32-bit fractional 128-bit vector data type in 1.31 format. + */ + typedef int32x4_t q31x4_t; + + /** + * @brief 16-bit fractional 128-bit vector data type with 16-bit alignement in 1.15 format. + */ + typedef __ALIGNED(2) int16x8_t q15x8_t; + + /** + * @brief 8-bit fractional 128-bit vector data type with 8-bit alignement in 1.7 format. + */ + typedef __ALIGNED(1) int8x16_t q7x16_t; + + /** + * @brief 32-bit fractional 128-bit vector pair data type in 1.31 format. + */ + typedef int32x4x2_t q31x4x2_t; + + /** + * @brief 32-bit fractional 128-bit vector quadruplet data type in 1.31 format. + */ + typedef int32x4x4_t q31x4x4_t; + + /** + * @brief 16-bit fractional 128-bit vector pair data type in 1.15 format. + */ + typedef int16x8x2_t q15x8x2_t; + + /** + * @brief 16-bit fractional 128-bit vector quadruplet data type in 1.15 format. + */ + typedef int16x8x4_t q15x8x4_t; + + /** + * @brief 8-bit fractional 128-bit vector pair data type in 1.7 format. + */ + typedef int8x16x2_t q7x16x2_t; + + /** + * @brief 8-bit fractional 128-bit vector quadruplet data type in 1.7 format. + */ + typedef int8x16x4_t q7x16x4_t; + + /** + * @brief 32-bit fractional data type in 9.23 format. + */ + typedef int32_t q23_t; + + /** + * @brief 32-bit fractional 128-bit vector data type in 9.23 format. + */ + typedef int32x4_t q23x4_t; + + /** + * @brief 64-bit status 128-bit vector data type. + */ + typedef int64x2_t status64x2_t; + + /** + * @brief 32-bit status 128-bit vector data type. + */ + typedef int32x4_t status32x4_t; + + /** + * @brief 16-bit status 128-bit vector data type. + */ + typedef int16x8_t status16x8_t; + + /** + * @brief 8-bit status 128-bit vector data type. + */ + typedef int8x16_t status8x16_t; + + +#endif + +#if defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF) /* floating point vector*/ + /** + * @brief 32-bit floating-point 128-bit vector type + */ + typedef float32x4_t f32x4_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit floating-point 128-bit vector data type + */ + typedef __ALIGNED(2) float16x8_t f16x8_t; +#endif + + /** + * @brief 32-bit floating-point 128-bit vector pair data type + */ + typedef float32x4x2_t f32x4x2_t; + + /** + * @brief 32-bit floating-point 128-bit vector quadruplet data type + */ + typedef float32x4x4_t f32x4x4_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit floating-point 128-bit vector pair data type + */ + typedef float16x8x2_t f16x8x2_t; + + /** + * @brief 16-bit floating-point 128-bit vector quadruplet data type + */ + typedef float16x8x4_t f16x8x4_t; +#endif + + /** + * @brief 32-bit ubiquitous 128-bit vector data type + */ + typedef union _any32x4_t + { + float32x4_t f; + int32x4_t i; + } any32x4_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit ubiquitous 128-bit vector data type + */ + typedef union _any16x8_t + { + float16x8_t f; + int16x8_t i; + } any16x8_t; +#endif + +#endif + +#if defined(ARM_MATH_NEON) + /** + * @brief 32-bit fractional 64-bit vector data type in 1.31 format. + */ + typedef int32x2_t q31x2_t; + + /** + * @brief 16-bit fractional 64-bit vector data type in 1.15 format. + */ + typedef __ALIGNED(2) int16x4_t q15x4_t; + + /** + * @brief 8-bit fractional 64-bit vector data type in 1.7 format. + */ + typedef __ALIGNED(1) int8x8_t q7x8_t; + + /** + * @brief 32-bit float 64-bit vector data type. + */ + typedef float32x2_t f32x2_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit float 64-bit vector data type. + */ + typedef __ALIGNED(2) float16x4_t f16x4_t; +#endif + + /** + * @brief 32-bit floating-point 128-bit vector triplet data type + */ + typedef float32x4x3_t f32x4x3_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit floating-point 128-bit vector triplet data type + */ + typedef float16x8x3_t f16x8x3_t; +#endif + + /** + * @brief 32-bit fractional 128-bit vector triplet data type in 1.31 format + */ + typedef int32x4x3_t q31x4x3_t; + + /** + * @brief 16-bit fractional 128-bit vector triplet data type in 1.15 format + */ + typedef int16x8x3_t q15x8x3_t; + + /** + * @brief 8-bit fractional 128-bit vector triplet data type in 1.7 format + */ + typedef int8x16x3_t q7x16x3_t; + + /** + * @brief 32-bit floating-point 64-bit vector pair data type + */ + typedef float32x2x2_t f32x2x2_t; + + /** + * @brief 32-bit floating-point 64-bit vector triplet data type + */ + typedef float32x2x3_t f32x2x3_t; + + /** + * @brief 32-bit floating-point 64-bit vector quadruplet data type + */ + typedef float32x2x4_t f32x2x4_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit floating-point 64-bit vector pair data type + */ + typedef float16x4x2_t f16x4x2_t; + + /** + * @brief 16-bit floating-point 64-bit vector triplet data type + */ + typedef float16x4x3_t f16x4x3_t; + + /** + * @brief 16-bit floating-point 64-bit vector quadruplet data type + */ + typedef float16x4x4_t f16x4x4_t; +#endif + + /** + * @brief 32-bit fractional 64-bit vector pair data type in 1.31 format + */ + typedef int32x2x2_t q31x2x2_t; + + /** + * @brief 32-bit fractional 64-bit vector triplet data type in 1.31 format + */ + typedef int32x2x3_t q31x2x3_t; + + /** + * @brief 32-bit fractional 64-bit vector quadruplet data type in 1.31 format + */ + typedef int32x4x3_t q31x2x4_t; + + /** + * @brief 16-bit fractional 64-bit vector pair data type in 1.15 format + */ + typedef int16x4x2_t q15x4x2_t; + + /** + * @brief 16-bit fractional 64-bit vector triplet data type in 1.15 format + */ + typedef int16x4x2_t q15x4x3_t; + + /** + * @brief 16-bit fractional 64-bit vector quadruplet data type in 1.15 format + */ + typedef int16x4x3_t q15x4x4_t; + + /** + * @brief 8-bit fractional 64-bit vector pair data type in 1.7 format + */ + typedef int8x8x2_t q7x8x2_t; + + /** + * @brief 8-bit fractional 64-bit vector triplet data type in 1.7 format + */ + typedef int8x8x3_t q7x8x3_t; + + /** + * @brief 8-bit fractional 64-bit vector quadruplet data type in 1.7 format + */ + typedef int8x8x4_t q7x8x4_t; + + /** + * @brief 32-bit ubiquitous 64-bit vector data type + */ + typedef union _any32x2_t + { + float32x2_t f; + int32x2_t i; + } any32x2_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit ubiquitous 64-bit vector data type + */ + typedef union _any16x4_t + { + float16x4_t f; + int16x4_t i; + } any16x4_t; +#endif + + /** + * @brief 32-bit status 64-bit vector data type. + */ + typedef int32x4_t status32x2_t; + + /** + * @brief 16-bit status 64-bit vector data type. + */ + typedef int16x8_t status16x4_t; + + /** + * @brief 8-bit status 64-bit vector data type. + */ + typedef int8x16_t status8x8_t; + +#endif + + + +/** + @brief definition to read/write two 16 bit values. + @deprecated + */ +#if defined ( __CC_ARM ) + #define __SIMD32_TYPE int32_t __packed +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + #define __SIMD32_TYPE int32_t +#elif defined ( __GNUC__ ) + #define __SIMD32_TYPE int32_t +#elif defined ( __ICCARM__ ) + #define __SIMD32_TYPE int32_t __packed +#elif defined ( __TI_ARM__ ) + #define __SIMD32_TYPE int32_t +#elif defined ( __CSMC__ ) + #define __SIMD32_TYPE int32_t +#elif defined ( __TASKING__ ) + #define __SIMD32_TYPE __un(aligned) int32_t +#elif defined(_MSC_VER ) + #define __SIMD32_TYPE int32_t +#else + #error Unknown compiler +#endif + +#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) +#define __SIMD32_CONST(addr) ( (__SIMD32_TYPE * ) (addr)) +#define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE * ) (addr)) +#define __SIMD64(addr) (*( int64_t **) & (addr)) + +#define STEP(x) (x) <= 0 ? 0 : 1 +#define SQ(x) ((x) * (x)) + +/* SIMD replacement */ + + +/** + @brief Read 2 Q15 from Q15 pointer. + @param[in] pQ15 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q15x2 ( + q15_t * pQ15) +{ + q31_t val; + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, pQ15, 4); +#else + val = (pQ15[1] << 16) | (pQ15[0] & 0x0FFFF) ; +#endif + + return (val); +} + +/** + @brief Read 2 Q15 from Q15 pointer and increment pointer afterwards. + @param[in] pQ15 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q15x2_ia ( + q15_t ** pQ15) +{ + q31_t val; + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, *pQ15, 4); +#else + val = ((*pQ15)[1] << 16) | ((*pQ15)[0] & 0x0FFFF); +#endif + + *pQ15 += 2; + return (val); +} + +/** + @brief Read 2 Q15 from Q15 pointer and decrement pointer afterwards. + @param[in] pQ15 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q15x2_da ( + q15_t ** pQ15) +{ + q31_t val; + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, *pQ15, 4); +#else + val = ((*pQ15)[1] << 16) | ((*pQ15)[0] & 0x0FFFF); +#endif + + *pQ15 -= 2; + return (val); +} + +/** + @brief Write 2 Q15 to Q15 pointer and increment pointer afterwards. + @param[in] pQ15 points to input value + @param[in] value Q31 value + @return none + */ +__STATIC_FORCEINLINE void write_q15x2_ia ( + q15_t ** pQ15, + q31_t value) +{ + q31_t val = value; +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (*pQ15, &val, 4); +#else + (*pQ15)[0] = (val & 0x0FFFF); + (*pQ15)[1] = (val >> 16) & 0x0FFFF; +#endif + + *pQ15 += 2; +} + +/** + @brief Write 2 Q15 to Q15 pointer. + @param[in] pQ15 points to input value + @param[in] value Q31 value + @return none + */ +__STATIC_FORCEINLINE void write_q15x2 ( + q15_t * pQ15, + q31_t value) +{ + q31_t val = value; + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (pQ15, &val, 4); +#else + pQ15[0] = val & 0x0FFFF; + pQ15[1] = val >> 16; +#endif +} + + +/** + @brief Read 4 Q7 from Q7 pointer and increment pointer afterwards. + @param[in] pQ7 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q7x4_ia ( + q7_t ** pQ7) +{ + q31_t val; + + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, *pQ7, 4); +#else + val =(((*pQ7)[3] & 0x0FF) << 24) | (((*pQ7)[2] & 0x0FF) << 16) | (((*pQ7)[1] & 0x0FF) << 8) | ((*pQ7)[0] & 0x0FF); +#endif + + *pQ7 += 4; + + return (val); +} + +/** + @brief Read 4 Q7 from Q7 pointer and decrement pointer afterwards. + @param[in] pQ7 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q7x4_da ( + q7_t ** pQ7) +{ + q31_t val; +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, *pQ7, 4); +#else + val = ((((*pQ7)[3]) & 0x0FF) << 24) | ((((*pQ7)[2]) & 0x0FF) << 16) | ((((*pQ7)[1]) & 0x0FF) << 8) | ((*pQ7)[0] & 0x0FF); +#endif + *pQ7 -= 4; + + return (val); +} + +/** + @brief Write 4 Q7 to Q7 pointer and increment pointer afterwards. + @param[in] pQ7 points to input value + @param[in] value Q31 value + @return none + */ +__STATIC_FORCEINLINE void write_q7x4_ia ( + q7_t ** pQ7, + q31_t value) +{ + q31_t val = value; +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (*pQ7, &val, 4); +#else + (*pQ7)[0] = val & 0x0FF; + (*pQ7)[1] = (val >> 8) & 0x0FF; + (*pQ7)[2] = (val >> 16) & 0x0FF; + (*pQ7)[3] = (val >> 24) & 0x0FF; + +#endif + *pQ7 += 4; +} + +/* + +Normally those kind of definitions are in a compiler file +in Core or Core_A. + +But for MSVC compiler it is a bit special. The goal is very specific +to CMSIS-DSP and only to allow the use of this library from other +systems like Python or Matlab. + +MSVC is not going to be used to cross-compile to ARM. So, having a MSVC +compiler file in Core or Core_A would not make sense. + +*/ +#if defined ( _MSC_VER ) || defined(__GNUC_PYTHON__) + __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t data) + { + if (data == 0U) { return 32U; } + + uint32_t count = 0U; + uint32_t mask = 0x80000000U; + + while ((data & mask) == 0U) + { + count += 1U; + mask = mask >> 1U; + } + return count; + } + + __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) + { + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; + } + + __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) + { + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; + } +#endif + +#ifndef ARM_MATH_DSP + /** + * @brief definition to pack two 16 bit values. + */ + #define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ + (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) + #define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \ + (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) ) +#endif + + /** + * @brief definition to pack four 8 bit values. + */ +#ifndef ARM_MATH_BIG_ENDIAN + #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) +#else + #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) +#endif + + + /** + * @brief Clips Q63 to Q31 values. + */ + __STATIC_FORCEINLINE q31_t clip_q63_to_q31( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x; + } + + /** + * @brief Clips Q63 to Q15 values. + */ + __STATIC_FORCEINLINE q15_t clip_q63_to_q15( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15); + } + + /** + * @brief Clips Q31 to Q7 values. + */ + __STATIC_FORCEINLINE q7_t clip_q31_to_q7( + q31_t x) + { + return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ? + ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x; + } + + /** + * @brief Clips Q31 to Q15 values. + */ + __STATIC_FORCEINLINE q15_t clip_q31_to_q15( + q31_t x) + { + return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ? + ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x; + } + + /** + * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format. + */ + __STATIC_FORCEINLINE q63_t mult32x64( + q63_t x, + q31_t y) + { + return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) + + (((q63_t) (x >> 32) * y) ) ); + } + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type. + */ + __STATIC_FORCEINLINE uint32_t arm_recip_q31( + q31_t in, + q31_t * dst, + const q31_t * pRecipTable) + { + q31_t out; + uint32_t tempVal; + uint32_t index, i; + uint32_t signBits; + + if (in > 0) + { + signBits = ((uint32_t) (__CLZ( in) - 1)); + } + else + { + signBits = ((uint32_t) (__CLZ(-in) - 1)); + } + + /* Convert input sample to 1.31 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 24); + index = (index & INDEX_MASK); + + /* 1.31 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0U; i < 2U; i++) + { + tempVal = (uint32_t) (((q63_t) in * out) >> 31); + tempVal = 0x7FFFFFFFu - tempVal; + /* 1.31 with exp 1 */ + /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */ + out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30); + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1U); + } + + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type. + */ + __STATIC_FORCEINLINE uint32_t arm_recip_q15( + q15_t in, + q15_t * dst, + const q15_t * pRecipTable) + { + q15_t out = 0; + uint32_t tempVal = 0; + uint32_t index = 0, i = 0; + uint32_t signBits = 0; + + if (in > 0) + { + signBits = ((uint32_t)(__CLZ( in) - 17)); + } + else + { + signBits = ((uint32_t)(__CLZ(-in) - 17)); + } + + /* Convert input sample to 1.15 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 8); + index = (index & INDEX_MASK); + + /* 1.15 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0U; i < 2U; i++) + { + tempVal = (uint32_t) (((q31_t) in * out) >> 15); + tempVal = 0x7FFFu - tempVal; + /* 1.15 with exp 1 */ + out = (q15_t) (((q31_t) out * tempVal) >> 14); + /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */ + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1); + } + +/** + * @brief Integer exponentiation + * @param[in] x value + * @param[in] nb integer exponent >= 1 + * @return x^nb + * + */ +__STATIC_INLINE float32_t arm_exponent_f32(float32_t x, int32_t nb) +{ + float32_t r = x; + nb --; + while(nb > 0) + { + r = r * x; + nb--; + } + return(r); +} + +/** + * @brief 64-bit to 32-bit unsigned normalization + * @param[in] in is input unsigned long long value + * @param[out] normalized is the 32-bit normalized value + * @param[out] norm is norm scale + */ +__STATIC_INLINE void arm_norm_64_to_32u(uint64_t in, int32_t * normalized, int32_t *norm) +{ + int32_t n1; + int32_t hi = (int32_t) (in >> 32); + int32_t lo = (int32_t) ((in << 32) >> 32); + + n1 = __CLZ(hi) - 32; + if (!n1) + { + /* + * input fits in 32-bit + */ + n1 = __CLZ(lo); + if (!n1) + { + /* + * MSB set, need to scale down by 1 + */ + *norm = -1; + *normalized = (((uint32_t) lo) >> 1); + } else + { + if (n1 == 32) + { + /* + * input is zero + */ + *norm = 0; + *normalized = 0; + } else + { + /* + * 32-bit normalization + */ + *norm = n1 - 1; + *normalized = lo << *norm; + } + } + } else + { + /* + * input fits in 64-bit + */ + n1 = 1 - n1; + *norm = -n1; + /* + * 64 bit normalization + */ + *normalized = (((uint32_t) lo) >> n1) | (hi << (32 - n1)); + } +} + +__STATIC_INLINE q31_t arm_div_q63_to_q31(q63_t num, q31_t den) +{ + q31_t result; + uint64_t absNum; + int32_t normalized; + int32_t norm; + + /* + * if sum fits in 32bits + * avoid costly 64-bit division + */ + absNum = num > 0 ? num : -num; + arm_norm_64_to_32u(absNum, &normalized, &norm); + if (norm > 0) + /* + * 32-bit division + */ + result = (q31_t) num / den; + else + /* + * 64-bit division + */ + result = (q31_t) (num / den); + + return result; +} + + +/* + * @brief C custom defined intrinsic functions + */ +#if !defined (ARM_MATH_DSP) + + /* + * @brief C custom defined QADD8 + */ + __STATIC_FORCEINLINE uint32_t __QADD8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) + (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) + (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QSUB8 + */ + __STATIC_FORCEINLINE uint32_t __QSUB8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) - (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) - (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QADD16 + */ + __STATIC_FORCEINLINE uint32_t __QADD16( + uint32_t x, + uint32_t y) + { +/* q31_t r, s; without initialisation 'arm_offset_q15 test' fails but 'intrinsic' tests pass! for armCC */ + q31_t r = 0, s = 0; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHADD16 + */ + __STATIC_FORCEINLINE uint32_t __SHADD16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSUB16 + */ + __STATIC_FORCEINLINE uint32_t __QSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSUB16 + */ + __STATIC_FORCEINLINE uint32_t __SHSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QASX + */ + __STATIC_FORCEINLINE uint32_t __QASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHASX + */ + __STATIC_FORCEINLINE uint32_t __SHASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSAX + */ + __STATIC_FORCEINLINE uint32_t __QSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSAX + */ + __STATIC_FORCEINLINE uint32_t __SHSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SMUSDX + */ + __STATIC_FORCEINLINE uint32_t __SMUSDX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + /* + * @brief C custom defined SMUADX + */ + __STATIC_FORCEINLINE uint32_t __SMUADX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + + /* + * @brief C custom defined QADD + */ + __STATIC_FORCEINLINE int32_t __QADD( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y))); + } + + + /* + * @brief C custom defined QSUB + */ + __STATIC_FORCEINLINE int32_t __QSUB( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y))); + } + + + /* + * @brief C custom defined SMLAD + */ + __STATIC_FORCEINLINE uint32_t __SMLAD( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLADX + */ + __STATIC_FORCEINLINE uint32_t __SMLADX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLSDX + */ + __STATIC_FORCEINLINE uint32_t __SMLSDX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALD + */ + __STATIC_FORCEINLINE uint64_t __SMLALD( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALDX + */ + __STATIC_FORCEINLINE uint64_t __SMLALDX( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMUAD + */ + __STATIC_FORCEINLINE uint32_t __SMUAD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SMUSD + */ + __STATIC_FORCEINLINE uint32_t __SMUSD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SXTB16 + */ + __STATIC_FORCEINLINE uint32_t __SXTB16( + uint32_t x) + { + return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) | + ((((q31_t)x << 8) >> 8) & (q31_t)0xFFFF0000) )); + } + + /* + * @brief C custom defined SMMLA + */ + __STATIC_FORCEINLINE int32_t __SMMLA( + int32_t x, + int32_t y, + int32_t sum) + { + return (sum + (int32_t) (((int64_t) x * y) >> 32)); + } + +#endif /* !defined (ARM_MATH_DSP) */ + + + /** + * @brief Instance structure for the Q7 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + const q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q7; + + /** + * @brief Instance structure for the Q15 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_f32; + + /** + * @brief Processing function for the Q7 FIR filter. + * @param[in] S points to an instance of the Q7 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q7( + const arm_fir_instance_q7 * S, + const q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q7 FIR filter. + * @param[in,out] S points to an instance of the Q7 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed. + */ + void arm_fir_init_q7( + arm_fir_instance_q7 * S, + uint16_t numTaps, + const q7_t * pCoeffs, + q7_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q15 FIR filter. + * @param[in] S points to an instance of the Q15 FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q15( + const arm_fir_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the fast Q15 FIR filter (fast version). + * @param[in] S points to an instance of the Q15 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q15( + const arm_fir_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q15 FIR filter. + * @param[in,out] S points to an instance of the Q15 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return The function returns either + * ARM_MATH_SUCCESS if initialization was successful or + * ARM_MATH_ARGUMENT_ERROR if numTaps is not a supported value. + */ + arm_status arm_fir_init_q15( + arm_fir_instance_q15 * S, + uint16_t numTaps, + const q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR filter. + * @param[in] S points to an instance of the Q31 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q31( + const arm_fir_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the fast Q31 FIR filter (fast version). + * @param[in] S points to an instance of the Q31 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q31( + const arm_fir_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 FIR filter. + * @param[in,out] S points to an instance of the Q31 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_q31( + arm_fir_instance_q31 * S, + uint16_t numTaps, + const q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the floating-point FIR filter. + * @param[in] S points to an instance of the floating-point FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_f32( + const arm_fir_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point FIR filter. + * @param[in,out] S points to an instance of the floating-point FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_f32( + arm_fir_instance_f32 * S, + uint16_t numTaps, + const float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + /** + * @brief Instance structure for the Q15 Biquad cascade filter. + */ + typedef struct + { + int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + const q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q15; + + /** + * @brief Instance structure for the Q31 Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + const q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q31; + + /** + * @brief Instance structure for the floating-point Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + const float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_casd_df1_inst_f32; + +#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) + /** + * @brief Instance structure for the modified Biquad coefs required by vectorized code. + */ + typedef struct + { + float32_t coeffs[8][4]; /**< Points to the array of modified coefficients. The array is of length 32. There is one per stage */ + } arm_biquad_mod_coef_f32; +#endif + + /** + * @brief Processing function for the Q15 Biquad cascade filter. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q15 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q15( + arm_biquad_casd_df1_inst_q15 * S, + uint8_t numStages, + const q15_t * pCoeffs, + q15_t * pState, + int8_t postShift); + + /** + * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 Biquad cascade filter + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q31( + arm_biquad_casd_df1_inst_q31 * S, + uint8_t numStages, + const q31_t * pCoeffs, + q31_t * pState, + int8_t postShift); + + /** + * @brief Processing function for the floating-point Biquad cascade filter. + * @param[in] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point Biquad cascade filter. + * @param[in,out] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pCoeffsMod points to the modified filter coefficients (only MVE version). + * @param[in] pState points to the state buffer. + */ +#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) + void arm_biquad_cascade_df1_mve_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + const float32_t * pCoeffs, + arm_biquad_mod_coef_f32 * pCoeffsMod, + float32_t * pState); +#endif + + void arm_biquad_cascade_df1_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + const float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Compute the logical bitwise AND of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_and_u16( + const uint16_t * pSrcA, + const uint16_t * pSrcB, + uint16_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise AND of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_and_u32( + const uint32_t * pSrcA, + const uint32_t * pSrcB, + uint32_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise AND of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_and_u8( + const uint8_t * pSrcA, + const uint8_t * pSrcB, + uint8_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise OR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_or_u16( + const uint16_t * pSrcA, + const uint16_t * pSrcB, + uint16_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise OR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_or_u32( + const uint32_t * pSrcA, + const uint32_t * pSrcB, + uint32_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise OR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_or_u8( + const uint8_t * pSrcA, + const uint8_t * pSrcB, + uint8_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise NOT of a fixed-point vector. + * @param[in] pSrc points to input vector + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_not_u16( + const uint16_t * pSrc, + uint16_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise NOT of a fixed-point vector. + * @param[in] pSrc points to input vector + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_not_u32( + const uint32_t * pSrc, + uint32_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise NOT of a fixed-point vector. + * @param[in] pSrc points to input vector + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_not_u8( + const uint8_t * pSrc, + uint8_t * pDst, + uint32_t blockSize); + +/** + * @brief Compute the logical bitwise XOR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_xor_u16( + const uint16_t * pSrcA, + const uint16_t * pSrcB, + uint16_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise XOR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_xor_u32( + const uint32_t * pSrcA, + const uint32_t * pSrcB, + uint32_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise XOR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_xor_u8( + const uint8_t * pSrcA, + const uint8_t * pSrcB, + uint8_t * pDst, + uint32_t blockSize); + + /** + * @brief Struct for specifying sorting algorithm + */ + typedef enum + { + ARM_SORT_BITONIC = 0, + /**< Bitonic sort */ + ARM_SORT_BUBBLE = 1, + /**< Bubble sort */ + ARM_SORT_HEAP = 2, + /**< Heap sort */ + ARM_SORT_INSERTION = 3, + /**< Insertion sort */ + ARM_SORT_QUICK = 4, + /**< Quick sort */ + ARM_SORT_SELECTION = 5 + /**< Selection sort */ + } arm_sort_alg; + + /** + * @brief Struct for specifying sorting algorithm + */ + typedef enum + { + ARM_SORT_DESCENDING = 0, + /**< Descending order (9 to 0) */ + ARM_SORT_ASCENDING = 1 + /**< Ascending order (0 to 9) */ + } arm_sort_dir; + + /** + * @brief Instance structure for the sorting algorithms. + */ + typedef struct + { + arm_sort_alg alg; /**< Sorting algorithm selected */ + arm_sort_dir dir; /**< Sorting order (direction) */ + } arm_sort_instance_f32; + + /** + * @param[in] S points to an instance of the sorting structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_sort_f32( + const arm_sort_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @param[in,out] S points to an instance of the sorting structure. + * @param[in] alg Selected algorithm. + * @param[in] dir Sorting order. + */ + void arm_sort_init_f32( + arm_sort_instance_f32 * S, + arm_sort_alg alg, + arm_sort_dir dir); + + /** + * @brief Instance structure for the sorting algorithms. + */ + typedef struct + { + arm_sort_dir dir; /**< Sorting order (direction) */ + float32_t * buffer; /**< Working buffer */ + } arm_merge_sort_instance_f32; + + /** + * @param[in] S points to an instance of the sorting structure. + * @param[in,out] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_merge_sort_f32( + const arm_merge_sort_instance_f32 * S, + float32_t *pSrc, + float32_t *pDst, + uint32_t blockSize); + + /** + * @param[in,out] S points to an instance of the sorting structure. + * @param[in] dir Sorting order. + * @param[in] buffer Working buffer. + */ + void arm_merge_sort_init_f32( + arm_merge_sort_instance_f32 * S, + arm_sort_dir dir, + float32_t * buffer); + + /** + * @brief Struct for specifying cubic spline type + */ + typedef enum + { + ARM_SPLINE_NATURAL = 0, /**< Natural spline */ + ARM_SPLINE_PARABOLIC_RUNOUT = 1 /**< Parabolic runout spline */ + } arm_spline_type; + + /** + * @brief Instance structure for the floating-point cubic spline interpolation. + */ + typedef struct + { + arm_spline_type type; /**< Type (boundary conditions) */ + const float32_t * x; /**< x values */ + const float32_t * y; /**< y values */ + uint32_t n_x; /**< Number of known data points */ + float32_t * coeffs; /**< Coefficients buffer (b,c, and d) */ + } arm_spline_instance_f32; + + /** + * @brief Processing function for the floating-point cubic spline interpolation. + * @param[in] S points to an instance of the floating-point spline structure. + * @param[in] xq points to the x values ot the interpolated data points. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples of output data. + */ + void arm_spline_f32( + arm_spline_instance_f32 * S, + const float32_t * xq, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point cubic spline interpolation. + * @param[in,out] S points to an instance of the floating-point spline structure. + * @param[in] type type of cubic spline interpolation (boundary conditions) + * @param[in] x points to the x values of the known data points. + * @param[in] y points to the y values of the known data points. + * @param[in] n number of known data points. + * @param[in] coeffs coefficients array for b, c, and d + * @param[in] tempBuffer buffer array for internal computations + */ + void arm_spline_init_f32( + arm_spline_instance_f32 * S, + arm_spline_type type, + const float32_t * x, + const float32_t * y, + uint32_t n, + float32_t * coeffs, + float32_t * tempBuffer); + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float32_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f32; + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float64_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f64; + + /** + * @brief Instance structure for the Q15 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q15_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q15; + + /** + * @brief Instance structure for the Q31 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q31_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q31; + + /** + * @brief Floating-point matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_cmplx_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_cmplx_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pScratch); + + /** + * @brief Q31, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_cmplx_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + /** + * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_fast_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + /** + * @brief Q31 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_fast_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix scaling. + * @param[in] pSrc points to the input matrix + * @param[in] scale scale factor + * @param[out] pDst points to the output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scaleFract, + int32_t shift, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scaleFract, + int32_t shift, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Q31 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ +void arm_mat_init_q31( + arm_matrix_instance_q31 * S, + uint16_t nRows, + uint16_t nColumns, + q31_t * pData); + + /** + * @brief Q15 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ +void arm_mat_init_q15( + arm_matrix_instance_q15 * S, + uint16_t nRows, + uint16_t nColumns, + q15_t * pData); + + /** + * @brief Floating-point matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ +void arm_mat_init_f32( + arm_matrix_instance_f32 * S, + uint16_t nRows, + uint16_t nColumns, + float32_t * pData); + + + /** + * @brief Instance structure for the Q15 PID Control. + */ + typedef struct + { + q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ +#if !defined (ARM_MATH_DSP) + q15_t A1; + q15_t A2; +#else + q31_t A1; /**< The derived gain A1 = -Kp - 2Kd | Kd.*/ +#endif + q15_t state[3]; /**< The state array of length 3. */ + q15_t Kp; /**< The proportional gain. */ + q15_t Ki; /**< The integral gain. */ + q15_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q15; + + /** + * @brief Instance structure for the Q31 PID Control. + */ + typedef struct + { + q31_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + q31_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + q31_t A2; /**< The derived gain, A2 = Kd . */ + q31_t state[3]; /**< The state array of length 3. */ + q31_t Kp; /**< The proportional gain. */ + q31_t Ki; /**< The integral gain. */ + q31_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q31; + + /** + * @brief Instance structure for the floating-point PID Control. + */ + typedef struct + { + float32_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + float32_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + float32_t A2; /**< The derived gain, A2 = Kd . */ + float32_t state[3]; /**< The state array of length 3. */ + float32_t Kp; /**< The proportional gain. */ + float32_t Ki; /**< The integral gain. */ + float32_t Kd; /**< The derivative gain. */ + } arm_pid_instance_f32; + + + + /** + * @brief Initialization function for the floating-point PID Control. + * @param[in,out] S points to an instance of the PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_f32( + arm_pid_instance_f32 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + */ + void arm_pid_reset_f32( + arm_pid_instance_f32 * S); + + + /** + * @brief Initialization function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q31( + arm_pid_instance_q31 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q31 PID Control structure + */ + + void arm_pid_reset_q31( + arm_pid_instance_q31 * S); + + + /** + * @brief Initialization function for the Q15 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q15( + arm_pid_instance_q15 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q15 PID Control. + * @param[in,out] S points to an instance of the q15 PID Control structure + */ + void arm_pid_reset_q15( + arm_pid_instance_q15 * S); + + + /** + * @brief Instance structure for the floating-point Linear Interpolate function. + */ + typedef struct + { + uint32_t nValues; /**< nValues */ + float32_t x1; /**< x1 */ + float32_t xSpacing; /**< xSpacing */ + float32_t *pYData; /**< pointer to the table of Y values */ + } arm_linear_interp_instance_f32; + + /** + * @brief Instance structure for the floating-point bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + float32_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_f32; + + /** + * @brief Instance structure for the Q31 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q31_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q31; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q15_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q15; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q7_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q7; + + + /** + * @brief Q7 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q7( + const q7_t * pSrcA, + const q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const q15_t *pTwiddle; /**< points to the Sin twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q15( + arm_cfft_radix2_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q15( + const arm_cfft_radix2_instance_q15 * S, + q15_t * pSrc); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const q15_t *pTwiddle; /**< points to the twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q15( + arm_cfft_radix4_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc); + + /** + * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q31; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q31( + arm_cfft_radix2_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q31( + const arm_cfft_radix2_instance_q31 * S, + q31_t * pSrc); + + /** + * @brief Instance structure for the Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const q31_t *pTwiddle; /**< points to the twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q31; + +/* Deprecated */ + void arm_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc); + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q31( + arm_cfft_radix4_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix2_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_f32( + arm_cfft_radix2_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_f32( + const arm_cfft_radix2_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix4_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_f32( + arm_cfft_radix4_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q15_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ +#if defined(ARM_MATH_MVEI) + const uint32_t *rearranged_twiddle_tab_stride1_arr; /**< Per stage reordered twiddle pointer (offset 1) */ \ + const uint32_t *rearranged_twiddle_tab_stride2_arr; /**< Per stage reordered twiddle pointer (offset 2) */ \ + const uint32_t *rearranged_twiddle_tab_stride3_arr; /**< Per stage reordered twiddle pointer (offset 3) */ \ + const q15_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */ \ + const q15_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */ \ + const q15_t *rearranged_twiddle_stride3; +#endif + } arm_cfft_instance_q15; + +arm_status arm_cfft_init_q15( + arm_cfft_instance_q15 * S, + uint16_t fftLen); + +void arm_cfft_q15( + const arm_cfft_instance_q15 * S, + q15_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ +#if defined(ARM_MATH_MVEI) + const uint32_t *rearranged_twiddle_tab_stride1_arr; /**< Per stage reordered twiddle pointer (offset 1) */ \ + const uint32_t *rearranged_twiddle_tab_stride2_arr; /**< Per stage reordered twiddle pointer (offset 2) */ \ + const uint32_t *rearranged_twiddle_tab_stride3_arr; /**< Per stage reordered twiddle pointer (offset 3) */ \ + const q31_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */ \ + const q31_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */ \ + const q31_t *rearranged_twiddle_stride3; +#endif + } arm_cfft_instance_q31; + +arm_status arm_cfft_init_q31( + arm_cfft_instance_q31 * S, + uint16_t fftLen); + +void arm_cfft_q31( + const arm_cfft_instance_q31 * S, + q31_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ +#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) + const uint32_t *rearranged_twiddle_tab_stride1_arr; /**< Per stage reordered twiddle pointer (offset 1) */ \ + const uint32_t *rearranged_twiddle_tab_stride2_arr; /**< Per stage reordered twiddle pointer (offset 2) */ \ + const uint32_t *rearranged_twiddle_tab_stride3_arr; /**< Per stage reordered twiddle pointer (offset 3) */ \ + const float32_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */ \ + const float32_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */ \ + const float32_t *rearranged_twiddle_stride3; +#endif + } arm_cfft_instance_f32; + + + arm_status arm_cfft_init_f32( + arm_cfft_instance_f32 * S, + uint16_t fftLen); + + void arm_cfft_f32( + const arm_cfft_instance_f32 * S, + float32_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + + /** + * @brief Instance structure for the Double Precision Floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const float64_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_f64; + + void arm_cfft_f64( + const arm_cfft_instance_f64 * S, + float64_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the Q15 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + const q15_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + const q15_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ +#if defined(ARM_MATH_MVEI) + arm_cfft_instance_q15 cfftInst; +#else + const arm_cfft_instance_q15 *pCfft; /**< points to the complex FFT instance. */ +#endif + } arm_rfft_instance_q15; + + arm_status arm_rfft_init_q15( + arm_rfft_instance_q15 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst); + + /** + * @brief Instance structure for the Q31 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + const q31_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + const q31_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ +#if defined(ARM_MATH_MVEI) + arm_cfft_instance_q31 cfftInst; +#else + const arm_cfft_instance_q31 *pCfft; /**< points to the complex FFT instance. */ +#endif + } arm_rfft_instance_q31; + + arm_status arm_rfft_init_q31( + arm_rfft_instance_q31 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst); + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint16_t fftLenBy2; /**< length of the complex FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + const float32_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + const float32_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_f32; + + arm_status arm_rfft_init_f32( + arm_rfft_instance_f32 * S, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_f32( + const arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst); + + /** + * @brief Instance structure for the Double Precision Floating-point RFFT/RIFFT function. + */ +typedef struct + { + arm_cfft_instance_f64 Sint; /**< Internal CFFT structure. */ + uint16_t fftLenRFFT; /**< length of the real sequence */ + const float64_t * pTwiddleRFFT; /**< Twiddle factors real stage */ + } arm_rfft_fast_instance_f64 ; + +arm_status arm_rfft_fast_init_f64 ( + arm_rfft_fast_instance_f64 * S, + uint16_t fftLen); + + +void arm_rfft_fast_f64( + arm_rfft_fast_instance_f64 * S, + float64_t * p, float64_t * pOut, + uint8_t ifftFlag); + + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ +typedef struct + { + arm_cfft_instance_f32 Sint; /**< Internal CFFT structure. */ + uint16_t fftLenRFFT; /**< length of the real sequence */ + const float32_t * pTwiddleRFFT; /**< Twiddle factors real stage */ + } arm_rfft_fast_instance_f32 ; + +arm_status arm_rfft_fast_init_f32 ( + arm_rfft_fast_instance_f32 * S, + uint16_t fftLen); + + + void arm_rfft_fast_f32( + const arm_rfft_fast_instance_f32 * S, + float32_t * p, float32_t * pOut, + uint8_t ifftFlag); + + /** + * @brief Instance structure for the floating-point DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + float32_t normalize; /**< normalizing factor. */ + const float32_t *pTwiddle; /**< points to the twiddle factor table. */ + const float32_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_f32; + + + /** + * @brief Initialization function for the floating-point DCT4/IDCT4. + * @param[in,out] S points to an instance of floating-point DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of floating-point RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of floating-point CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. + */ + arm_status arm_dct4_init_f32( + arm_dct4_instance_f32 * S, + arm_rfft_instance_f32 * S_RFFT, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint16_t N, + uint16_t Nby2, + float32_t normalize); + + + /** + * @brief Processing function for the floating-point DCT4/IDCT4. + * @param[in] S points to an instance of the floating-point DCT4/IDCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q31 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q31_t normalize; /**< normalizing factor. */ + const q31_t *pTwiddle; /**< points to the twiddle factor table. */ + const q31_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q31; + + + /** + * @brief Initialization function for the Q31 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q31 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q31 RFFT/RIFFT structure + * @param[in] S_CFFT points to an instance of Q31 CFFT/CIFFT structure + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q31( + arm_dct4_instance_q31 * S, + arm_rfft_instance_q31 * S_RFFT, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q31_t normalize); + + + /** + * @brief Processing function for the Q31 DCT4/IDCT4. + * @param[in] S points to an instance of the Q31 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q15 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q15_t normalize; /**< normalizing factor. */ + const q15_t *pTwiddle; /**< points to the twiddle factor table. */ + const q15_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q15; + + + /** + * @brief Initialization function for the Q15 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q15 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q15 RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of Q15 CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q15( + arm_dct4_instance_q15 * S, + arm_rfft_instance_q15 * S_RFFT, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q15_t normalize); + + + /** + * @brief Processing function for the Q15 DCT4/IDCT4. + * @param[in] S points to an instance of the Q15 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer); + + + /** + * @brief Floating-point vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q7( + const q7_t * pSrcA, + const q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q7( + const q7_t * pSrcA, + const q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a floating-point vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scale scale factor to be applied + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_f32( + const float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q7 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q7( + const q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q15 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q15( + const q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q31 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q31( + const q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q7( + const q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Dot product of floating-point vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + uint32_t blockSize, + float32_t * result); + + + /** + * @brief Dot product of Q7 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q7( + const q7_t * pSrcA, + const q7_t * pSrcB, + uint32_t blockSize, + q31_t * result); + + + /** + * @brief Dot product of Q15 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Dot product of Q31 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Shifts the elements of a Q7 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q7( + const q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q15 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q15( + const q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q31 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q31( + const q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_f32( + const float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q7( + const q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q15( + const q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q31( + const q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q7( + const q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a floating-point vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q7 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q7( + const q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a floating-point vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q7 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q15 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q31 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_f32( + const float32_t * pSrcA, + uint32_t srcALen, + const float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + + /** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_fast_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Partial convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_f32( + const float32_t * pSrcA, + uint32_t srcALen, + const float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q7 sequences + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Partial convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Instance structure for the Q15 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q31; + +/** + @brief Instance structure for floating-point FIR decimator. + */ +typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_f32; + + +/** + @brief Processing function for floating-point FIR decimator. + @param[in] S points to an instance of the floating-point FIR decimator structure + @param[in] pSrc points to the block of input data + @param[out] pDst points to the block of output data + @param[in] blockSize number of samples to process + */ +void arm_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + +/** + @brief Initialization function for the floating-point FIR decimator. + @param[in,out] S points to an instance of the floating-point FIR decimator structure + @param[in] numTaps number of coefficients in the filter + @param[in] M decimation factor + @param[in] pCoeffs points to the filter coefficients + @param[in] pState points to the state buffer + @param[in] blockSize number of input samples to process per call + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_LENGTH_ERROR : blockSize is not a multiple of M + */ +arm_status arm_fir_decimate_init_f32( + arm_fir_decimate_instance_f32 * S, + uint16_t numTaps, + uint8_t M, + const float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR decimator. + * @param[in,out] S points to an instance of the Q15 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q15( + arm_fir_decimate_instance_q15 * S, + uint16_t numTaps, + uint8_t M, + const q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR decimator. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q31( + const arm_fir_decimate_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR decimator. + * @param[in,out] S points to an instance of the Q31 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q31( + arm_fir_decimate_instance_q31 * S, + uint16_t numTaps, + uint8_t M, + const q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ + } arm_fir_interpolate_instance_f32; + + + /** + * @brief Processing function for the Q15 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR interpolator. + * @param[in,out] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q15( + arm_fir_interpolate_instance_q15 * S, + uint8_t L, + uint16_t numTaps, + const q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR interpolator. + * @param[in,out] S points to an instance of the Q31 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q31( + arm_fir_interpolate_instance_q31 * S, + uint8_t L, + uint16_t numTaps, + const q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR interpolator. + * @param[in] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR interpolator. + * @param[in,out] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_f32( + arm_fir_interpolate_instance_f32 * S, + uint8_t L, + uint16_t numTaps, + const float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the high precision Q31 Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + const q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ + } arm_biquad_cas_df1_32x64_ins_q31; + + + /** + * @param[in] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @param[in,out] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cas_df1_32x64_init_q31( + arm_biquad_cas_df1_32x64_ins_q31 * S, + uint8_t numStages, + const q31_t * pCoeffs, + q63_t * pState, + uint8_t postShift); + + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + const float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + const float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_stereo_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float64_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + const float64_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f64; + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_stereo_df2T_f32( + const arm_biquad_cascade_stereo_df2T_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f64( + const arm_biquad_cascade_df2T_instance_f64 * S, + const float64_t * pSrc, + float64_t * pDst, + uint32_t blockSize); + + +#if defined(ARM_MATH_NEON) +void arm_biquad_cascade_df2T_compute_coefs_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs); +#endif + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + const float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_stereo_df2T_init_f32( + arm_biquad_cascade_stereo_df2T_instance_f32 * S, + uint8_t numStages, + const float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f64( + arm_biquad_cascade_df2T_instance_f64 * S, + uint8_t numStages, + const float64_t * pCoeffs, + float64_t * pState); + + + /** + * @brief Instance structure for the Q15 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_f32; + + + /** + * @brief Initialization function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q15( + arm_fir_lattice_instance_q15 * S, + uint16_t numStages, + const q15_t * pCoeffs, + q15_t * pState); + + + /** + * @brief Processing function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q31( + arm_fir_lattice_instance_q31 * S, + uint16_t numStages, + const q31_t * pCoeffs, + q31_t * pState); + + + /** + * @brief Processing function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_f32( + arm_fir_lattice_instance_f32 * S, + uint16_t numStages, + const float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Processing function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_f32; + + + /** + * @brief Processing function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize-1. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_f32( + arm_iir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pkCoeffs, + float32_t * pvCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_q31( + arm_iir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pkCoeffs, + q31_t * pvCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the Q15 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the fixed-point Q15 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process per call. + */ + void arm_iir_lattice_init_q15( + arm_iir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pkCoeffs, + q15_t * pvCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the floating-point LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that controls filter coefficient updates. */ + } arm_lms_instance_f32; + + + /** + * @brief Processing function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_f32( + const arm_lms_instance_f32 * S, + const float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_init_f32( + arm_lms_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q15; + + + /** + * @brief Initialization function for the Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q15( + arm_lms_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Processing function for Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q15( + const arm_lms_instance_q15 * S, + const q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q31; + + + /** + * @brief Processing function for Q31 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q31( + const arm_lms_instance_q31 * S, + const q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 LMS filter. + * @param[in] S points to an instance of the Q31 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q31( + arm_lms_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Instance structure for the floating-point normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that control filter coefficient updates. */ + float32_t energy; /**< saves previous frame energy. */ + float32_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_f32; + + + /** + * @brief Processing function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + const float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_init_f32( + arm_lms_norm_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + const q31_t *recipTable; /**< points to the reciprocal initial value table. */ + q31_t energy; /**< saves previous frame energy. */ + q31_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q31; + + + /** + * @brief Processing function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + const q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q31( + arm_lms_norm_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Instance structure for the Q15 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< Number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + const q15_t *recipTable; /**< Points to the reciprocal initial value table. */ + q15_t energy; /**< saves previous frame energy. */ + q15_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q15; + + + /** + * @brief Processing function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + const q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q15( + arm_lms_norm_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Correlation of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_f32( + const float32_t * pSrcA, + uint32_t srcALen, + const float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + +/** + @brief Correlation of Q15 sequences + @param[in] pSrcA points to the first input sequence + @param[in] srcALen length of the first input sequence + @param[in] pSrcB points to the second input sequence + @param[in] srcBLen length of the second input sequence + @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. +*/ +void arm_correlate_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + +/** + @brief Correlation of Q15 sequences. + @param[in] pSrcA points to the first input sequence + @param[in] srcALen length of the first input sequence + @param[in] pSrcB points to the second input sequence + @param[in] srcBLen length of the second input sequence + @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + +/** + @brief Correlation of Q15 sequences (fast version). + @param[in] pSrcA points to the first input sequence + @param[in] srcALen length of the first input sequence + @param[in] pSrcB points to the second input sequence + @param[in] srcBLen length of the second input sequence + @param[out] pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + @return none + */ +void arm_correlate_fast_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + +/** + @brief Correlation of Q15 sequences (fast version). + @param[in] pSrcA points to the first input sequence. + @param[in] srcALen length of the first input sequence. + @param[in] pSrcB points to the second input sequence. + @param[in] srcBLen length of the second input sequence. + @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + */ +void arm_correlate_fast_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + + /** + * @brief Correlation of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + +/** + @brief Correlation of Q31 sequences (fast version). + @param[in] pSrcA points to the first input sequence + @param[in] srcALen length of the first input sequence + @param[in] pSrcB points to the second input sequence + @param[in] srcBLen length of the second input sequence + @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ +void arm_correlate_fast_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_correlate_opt_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Instance structure for the floating-point sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_f32; + + /** + * @brief Instance structure for the Q31 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q31; + + /** + * @brief Instance structure for the Q15 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q15; + + /** + * @brief Instance structure for the Q7 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + const q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q7; + + + /** + * @brief Processing function for the floating-point sparse FIR filter. + * @param[in] S points to an instance of the floating-point sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point sparse FIR filter. + * @param[in,out] S points to an instance of the floating-point sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_f32( + arm_fir_sparse_instance_f32 * S, + uint16_t numTaps, + const float32_t * pCoeffs, + float32_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 sparse FIR filter. + * @param[in] S points to an instance of the Q31 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 sparse FIR filter. + * @param[in,out] S points to an instance of the Q31 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q31( + arm_fir_sparse_instance_q31 * S, + uint16_t numTaps, + const q31_t * pCoeffs, + q31_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 sparse FIR filter. + * @param[in] S points to an instance of the Q15 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 sparse FIR filter. + * @param[in,out] S points to an instance of the Q15 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q15( + arm_fir_sparse_instance_q15 * S, + uint16_t numTaps, + const q15_t * pCoeffs, + q15_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q7 sparse FIR filter. + * @param[in] S points to an instance of the Q7 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + const q7_t * pSrc, + q7_t * pDst, + q7_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 sparse FIR filter. + * @param[in,out] S points to an instance of the Q7 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q7( + arm_fir_sparse_instance_q7 * S, + uint16_t numTaps, + const q7_t * pCoeffs, + q7_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Floating-point sin_cos function. + * @param[in] theta input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cos output. + */ + void arm_sin_cos_f32( + float32_t theta, + float32_t * pSinVal, + float32_t * pCosVal); + + + /** + * @brief Q31 sin_cos function. + * @param[in] theta scaled input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cosine output. + */ + void arm_sin_cos_q31( + q31_t theta, + q31_t * pSinVal, + q31_t * pCosVal); + + + /** + * @brief Floating-point complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup PID PID Motor Control + * + * A Proportional Integral Derivative (PID) controller is a generic feedback control + * loop mechanism widely used in industrial control systems. + * A PID controller is the most commonly used type of feedback controller. + * + * This set of functions implements (PID) controllers + * for Q15, Q31, and floating-point data types. The functions operate on a single sample + * of data and each call to the function returns a single processed value. + * S points to an instance of the PID control data structure. in + * is the input sample value. The functions return the output value. + * + * \par Algorithm: + *
+   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
+   *    A0 = Kp + Ki + Kd
+   *    A1 = (-Kp ) - (2 * Kd )
+   *    A2 = Kd
+   * 
+ * + * \par + * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant + * + * \par + * \image html PID.gif "Proportional Integral Derivative Controller" + * + * \par + * The PID controller calculates an "error" value as the difference between + * the measured output and the reference input. + * The controller attempts to minimize the error by adjusting the process control inputs. + * The proportional value determines the reaction to the current error, + * the integral value determines the reaction based on the sum of recent errors, + * and the derivative value determines the reaction based on the rate at which the error has been changing. + * + * \par Instance Structure + * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. + * A separate instance structure must be defined for each PID Controller. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Reset Functions + * There is also an associated reset function for each data type which clears the state array. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. + * - Zeros out the values in the state buffer. + * + * \par + * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the PID Controller functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup PID + * @{ + */ + + /** + * @brief Process function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + * @param[in] in input sample to process + * @return processed output sample. + */ + __STATIC_FORCEINLINE float32_t arm_pid_f32( + arm_pid_instance_f32 * S, + float32_t in) + { + float32_t out; + + /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ + out = (S->A0 * in) + + (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + +/** + @brief Process function for the Q31 PID Control. + @param[in,out] S points to an instance of the Q31 PID Control structure + @param[in] in input sample to process + @return processed output sample. + + \par Scaling and Overflow Behavior + The function is implemented using an internal 64-bit accumulator. + The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + Thus, if the accumulator result overflows it wraps around rather than clip. + In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. + After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + */ +__STATIC_FORCEINLINE q31_t arm_pid_q31( + arm_pid_instance_q31 * S, + q31_t in) + { + q63_t acc; + q31_t out; + + /* acc = A0 * x[n] */ + acc = (q63_t) S->A0 * in; + + /* acc += A1 * x[n-1] */ + acc += (q63_t) S->A1 * S->state[0]; + + /* acc += A2 * x[n-2] */ + acc += (q63_t) S->A2 * S->state[1]; + + /* convert output to 1.31 format to add y[n-1] */ + out = (q31_t) (acc >> 31U); + + /* out += y[n-1] */ + out += S->state[2]; + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + +/** + @brief Process function for the Q15 PID Control. + @param[in,out] S points to an instance of the Q15 PID Control structure + @param[in] in input sample to process + @return processed output sample. + + \par Scaling and Overflow Behavior + The function is implemented using a 64-bit internal accumulator. + Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ +__STATIC_FORCEINLINE q15_t arm_pid_q15( + arm_pid_instance_q15 * S, + q15_t in) + { + q63_t acc; + q15_t out; + +#if defined (ARM_MATH_DSP) + /* Implementation of PID controller */ + + /* acc = A0 * x[n] */ + acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in); + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)read_q15x2 (S->state), (uint64_t)acc); +#else + /* acc = A0 * x[n] */ + acc = ((q31_t) S->A0) * in; + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc += (q31_t) S->A1 * S->state[0]; + acc += (q31_t) S->A2 * S->state[1]; +#endif + + /* acc += y[n-1] */ + acc += (q31_t) S->state[2] << 15; + + /* saturate the output */ + out = (q15_t) (__SSAT((q31_t)(acc >> 15), 16)); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + /** + * @} end of PID group + */ + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f32( + const arm_matrix_instance_f32 * src, + arm_matrix_instance_f32 * dst); + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f64( + const arm_matrix_instance_f64 * src, + arm_matrix_instance_f64 * dst); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup clarke Vector Clarke Transform + * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. + * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents + * in the two-phase orthogonal stator axis Ialpha and Ibeta. + * When Ialpha is superposed with Ia as shown in the figure below + * \image html clarke.gif Stator current space vector and its components in (a,b). + * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta + * can be calculated using only Ia and Ib. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeFormula.gif + * where Ia and Ib are the instantaneous stator phases and + * pIalpha and pIbeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup clarke + * @{ + */ + + /** + * + * @brief Floating-point Clarke transform + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @return none + */ + __STATIC_FORCEINLINE void arm_clarke_f32( + float32_t Ia, + float32_t Ib, + float32_t * pIalpha, + float32_t * pIbeta) + { + /* Calculate pIalpha using the equation, pIalpha = Ia */ + *pIalpha = Ia; + + /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ + *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); + } + + +/** + @brief Clarke transform for Q31 version + @param[in] Ia input three-phase coordinate a + @param[in] Ib input three-phase coordinate b + @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + @param[out] pIbeta points to output two-phase orthogonal vector axis beta + @return none + + \par Scaling and Overflow Behavior + The function is implemented using an internal 32-bit accumulator. + The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + There is saturation on the addition, hence there is no risk of overflow. + */ +__STATIC_FORCEINLINE void arm_clarke_q31( + q31_t Ia, + q31_t Ib, + q31_t * pIalpha, + q31_t * pIbeta) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIalpha from Ia by equation pIalpha = Ia */ + *pIalpha = Ia; + + /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); + + /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ + product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); + + /* pIbeta is calculated by adding the intermediate products */ + *pIbeta = __QADD(product1, product2); + } + + /** + * @} end of clarke group + */ + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_clarke Vector Inverse Clarke Transform + * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeInvFormula.gif + * where pIa and pIb are the instantaneous stator phases and + * Ialpha and Ibeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_clarke + * @{ + */ + + /** + * @brief Floating-point Inverse Clarke transform + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] pIa points to output three-phase coordinate a + * @param[out] pIb points to output three-phase coordinate b + * @return none + */ + __STATIC_FORCEINLINE void arm_inv_clarke_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pIa, + float32_t * pIb) + { + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ + *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta; + } + + +/** + @brief Inverse Clarke transform for Q31 version + @param[in] Ialpha input two-phase orthogonal vector axis alpha + @param[in] Ibeta input two-phase orthogonal vector axis beta + @param[out] pIa points to output three-phase coordinate a + @param[out] pIb points to output three-phase coordinate b + @return none + + \par Scaling and Overflow Behavior + The function is implemented using an internal 32-bit accumulator. + The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + There is saturation on the subtraction, hence there is no risk of overflow. + */ +__STATIC_FORCEINLINE void arm_inv_clarke_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pIa, + q31_t * pIb) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); + + /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); + + /* pIb is calculated by subtracting the products */ + *pIb = __QSUB(product2, product1); + } + + /** + * @} end of inv_clarke group + */ + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup park Vector Park Transform + * + * Forward Park transform converts the input two-coordinate vector to flux and torque components. + * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents + * from the stationary to the moving reference frame and control the spatial relationship between + * the stator vector current and rotor flux vector. + * If we consider the d axis aligned with the rotor flux, the diagram below shows the + * current vector and the relationship from the two reference frames: + * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkFormula.gif + * where Ialpha and Ibeta are the stator vector components, + * pId and pIq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup park + * @{ + */ + + /** + * @brief Floating-point Park transform + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] pId points to output rotor reference frame d + * @param[out] pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none + * + * The function implements the forward Park transform. + * + */ + __STATIC_FORCEINLINE void arm_park_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pId, + float32_t * pIq, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ + *pId = Ialpha * cosVal + Ibeta * sinVal; + + /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ + *pIq = -Ialpha * sinVal + Ibeta * cosVal; + } + + +/** + @brief Park transform for Q31 version + @param[in] Ialpha input two-phase vector coordinate alpha + @param[in] Ibeta input two-phase vector coordinate beta + @param[out] pId points to output rotor reference frame d + @param[out] pIq points to output rotor reference frame q + @param[in] sinVal sine value of rotation angle theta + @param[in] cosVal cosine value of rotation angle theta + @return none + + \par Scaling and Overflow Behavior + The function is implemented using an internal 32-bit accumulator. + The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + There is saturation on the addition and subtraction, hence there is no risk of overflow. + */ +__STATIC_FORCEINLINE void arm_park_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pId, + q31_t * pIq, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Ialpha * cosVal) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * sinVal) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Ialpha * sinVal) */ + product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * cosVal) */ + product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); + + /* Calculate pId by adding the two intermediate products 1 and 2 */ + *pId = __QADD(product1, product2); + + /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ + *pIq = __QSUB(product4, product3); + } + + /** + * @} end of park group + */ + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_park Vector Inverse Park transform + * Inverse Park transform converts the input flux and torque components to two-coordinate vector. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkInvFormula.gif + * where pIalpha and pIbeta are the stator vector components, + * Id and Iq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_park + * @{ + */ + + /** + * @brief Floating-point Inverse Park transform + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none + */ + __STATIC_FORCEINLINE void arm_inv_park_f32( + float32_t Id, + float32_t Iq, + float32_t * pIalpha, + float32_t * pIbeta, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ + *pIalpha = Id * cosVal - Iq * sinVal; + + /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ + *pIbeta = Id * sinVal + Iq * cosVal; + } + + +/** + @brief Inverse Park transform for Q31 version + @param[in] Id input coordinate of rotor reference frame d + @param[in] Iq input coordinate of rotor reference frame q + @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + @param[out] pIbeta points to output two-phase orthogonal vector axis beta + @param[in] sinVal sine value of rotation angle theta + @param[in] cosVal cosine value of rotation angle theta + @return none + + @par Scaling and Overflow Behavior + The function is implemented using an internal 32-bit accumulator. + The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + There is saturation on the addition, hence there is no risk of overflow. + */ +__STATIC_FORCEINLINE void arm_inv_park_q31( + q31_t Id, + q31_t Iq, + q31_t * pIalpha, + q31_t * pIbeta, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Id * cosVal) */ + product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Iq * sinVal) */ + product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Id * sinVal) */ + product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Iq * cosVal) */ + product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); + + /* Calculate pIalpha by using the two intermediate products 1 and 2 */ + *pIalpha = __QSUB(product1, product2); + + /* Calculate pIbeta by using the two intermediate products 3 and 4 */ + *pIbeta = __QADD(product4, product3); + } + + /** + * @} end of Inverse park group + */ + + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup LinearInterpolate Linear Interpolation + * + * Linear interpolation is a method of curve fitting using linear polynomials. + * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line + * + * \par + * \image html LinearInterp.gif "Linear interpolation" + * + * \par + * A Linear Interpolate function calculates an output value(y), for the input(x) + * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) + * + * \par Algorithm: + *
+   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
+   *       where x0, x1 are nearest values of input x
+   *             y0, y1 are nearest values to output y
+   * 
+ * + * \par + * This set of functions implements Linear interpolation process + * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single + * sample of data and each call to the function returns a single processed value. + * S points to an instance of the Linear Interpolate function data structure. + * x is the input sample value. The functions returns the output value. + * + * \par + * if x is outside of the table boundary, Linear interpolation returns first value of the table + * if x is below input range and returns last value of table if x is above range. + */ + + /** + * @addtogroup LinearInterpolate + * @{ + */ + + /** + * @brief Process function for the floating-point Linear Interpolation Function. + * @param[in,out] S is an instance of the floating-point Linear Interpolation structure + * @param[in] x input sample to process + * @return y processed output sample. + * + */ + __STATIC_FORCEINLINE float32_t arm_linear_interp_f32( + arm_linear_interp_instance_f32 * S, + float32_t x) + { + float32_t y; + float32_t x0, x1; /* Nearest input values */ + float32_t y0, y1; /* Nearest output values */ + float32_t xSpacing = S->xSpacing; /* spacing between input values */ + int32_t i; /* Index variable */ + float32_t *pYData = S->pYData; /* pointer to output table */ + + /* Calculation of index */ + i = (int32_t) ((x - S->x1) / xSpacing); + + if (i < 0) + { + /* Iniatilize output for below specified range as least output value of table */ + y = pYData[0]; + } + else if ((uint32_t)i >= (S->nValues - 1)) + { + /* Iniatilize output for above specified range as last output value of table */ + y = pYData[S->nValues - 1]; + } + else + { + /* Calculation of nearest input values */ + x0 = S->x1 + i * xSpacing; + x1 = S->x1 + (i + 1) * xSpacing; + + /* Read of nearest output values */ + y0 = pYData[i]; + y1 = pYData[i + 1]; + + /* Calculation of output */ + y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0)); + + } + + /* returns output value */ + return (y); + } + + + /** + * + * @brief Process function for the Q31 Linear Interpolation Function. + * @param[in] pYData pointer to Q31 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + __STATIC_FORCEINLINE q31_t arm_linear_interp_q31( + q31_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q31_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (q31_t)0xFFF00000) >> 20); + + if (index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if (index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* shift left by 11 to keep fract in 1.31 format */ + fract = (x & 0x000FFFFF) << 11; + + /* Read two nearest output values from the index in 1.31(q31) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 2.30 format */ + y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); + + /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ + y += ((q31_t) (((q63_t) y1 * fract) >> 32)); + + /* Convert y to 1.31 format */ + return (y << 1U); + } + } + + + /** + * + * @brief Process function for the Q15 Linear Interpolation Function. + * @param[in] pYData pointer to Q15 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + __STATIC_FORCEINLINE q15_t arm_linear_interp_q15( + q15_t * pYData, + q31_t x, + uint32_t nValues) + { + q63_t y; /* output */ + q15_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (int32_t)0xFFF00000) >> 20); + + if (index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if (index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 13.35 format */ + y = ((q63_t) y0 * (0xFFFFF - fract)); + + /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ + y += ((q63_t) y1 * (fract)); + + /* convert y to 1.15 format */ + return (q15_t) (y >> 20); + } + } + + + /** + * + * @brief Process function for the Q7 Linear Interpolation Function. + * @param[in] pYData pointer to Q7 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + */ + __STATIC_FORCEINLINE q7_t arm_linear_interp_q7( + q7_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q7_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + uint32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + if (x < 0) + { + return (pYData[0]); + } + index = (x >> 20) & 0xfff; + + if (index >= (nValues - 1)) + { + return (pYData[nValues - 1]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index and are in 1.7(q7) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ + y = ((y0 * (0xFFFFF - fract))); + + /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ + y += (y1 * fract); + + /* convert y to 1.7(q7) format */ + return (q7_t) (y >> 20); + } + } + + /** + * @} end of LinearInterpolate group + */ + + /** + * @brief Fast approximation to the trigonometric sine function for floating-point data. + * @param[in] x input value in radians. + * @return sin(x). + */ + float32_t arm_sin_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q31_t arm_sin_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q15_t arm_sin_q15( + q15_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for floating-point data. + * @param[in] x input value in radians. + * @return cos(x). + */ + float32_t arm_cos_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q31_t arm_cos_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q15_t arm_cos_q15( + q15_t x); + + +/** + @brief Floating-point vector of log values. + @param[in] pSrc points to the input vector + @param[out] pDst points to the output vector + @param[in] blockSize number of samples in each vector + @return none + */ + void arm_vlog_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +/** + @brief Floating-point vector of exp values. + @param[in] pSrc points to the input vector + @param[out] pDst points to the output vector + @param[in] blockSize number of samples in each vector + @return none + */ + void arm_vexp_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @ingroup groupFastMath + */ + + + /** + * @defgroup SQRT Square Root + * + * Computes the square root of a number. + * There are separate functions for Q15, Q31, and floating-point data types. + * The square root function is computed using the Newton-Raphson algorithm. + * This is an iterative algorithm of the form: + *
+   *      x1 = x0 - f(x0)/f'(x0)
+   * 
+ * where x1 is the current estimate, + * x0 is the previous estimate, and + * f'(x0) is the derivative of f() evaluated at x0. + * For the square root function, the algorithm reduces to: + *
+   *     x0 = in/2                         [initial guess]
+   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
+   * 
+ */ + + + /** + * @addtogroup SQRT + * @{ + */ + +/** + @brief Floating-point square root function. + @param[in] in input value + @param[out] pOut square root of input value + @return execution status + - \ref ARM_MATH_SUCCESS : input value is positive + - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0 + */ +__STATIC_FORCEINLINE arm_status arm_sqrt_f32( + float32_t in, + float32_t * pOut) + { + if (in >= 0.0f) + { +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + *pOut = __sqrtf(in); + #else + *pOut = sqrtf(in); + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in)); + #else + *pOut = sqrtf(in); + #endif + +#else + *pOut = sqrtf(in); +#endif + + return (ARM_MATH_SUCCESS); + } + else + { + *pOut = 0.0f; + return (ARM_MATH_ARGUMENT_ERROR); + } + } + + +/** + @brief Q31 square root function. + @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF + @param[out] pOut points to square root of input value + @return execution status + - \ref ARM_MATH_SUCCESS : input value is positive + - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0 + */ +arm_status arm_sqrt_q31( + q31_t in, + q31_t * pOut); + + +/** + @brief Q15 square root function. + @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF + @param[out] pOut points to square root of input value + @return execution status + - \ref ARM_MATH_SUCCESS : input value is positive + - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0 + */ +arm_status arm_sqrt_q15( + q15_t in, + q15_t * pOut); + + /** + * @brief Vector Floating-point square root function. + * @param[in] pIn input vector. + * @param[out] pOut vector of square roots of input elements. + * @param[in] len length of input vector. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + void arm_vsqrt_f32( + float32_t * pIn, + float32_t * pOut, + uint16_t len); + + void arm_vsqrt_q31( + q31_t * pIn, + q31_t * pOut, + uint16_t len); + + void arm_vsqrt_q15( + q15_t * pIn, + q15_t * pOut, + uint16_t len); + + /** + * @} end of SQRT group + */ + + + /** + * @brief floating-point Circular write function. + */ + __STATIC_FORCEINLINE void arm_circularWrite_f32( + int32_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const int32_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + + /** + * @brief floating-point Circular Read function. + */ + __STATIC_FORCEINLINE void arm_circularRead_f32( + int32_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + int32_t * dst, + int32_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t rOffset; + int32_t* dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + dst_end = dst_base + dst_length; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q15 Circular write function. + */ + __STATIC_FORCEINLINE void arm_circularWrite_q15( + q15_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q15_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q15 Circular Read function. + */ + __STATIC_FORCEINLINE void arm_circularRead_q15( + q15_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q15_t * dst, + q15_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset; + q15_t* dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = dst_base + dst_length; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == dst_end) + { + dst = dst_base; + } + + /* Circularly update wOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q7 Circular write function. + */ + __STATIC_FORCEINLINE void arm_circularWrite_q7( + q7_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q7_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q7 Circular Read function. + */ + __STATIC_FORCEINLINE void arm_circularRead_q7( + q7_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q7_t * dst, + q7_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset; + q7_t* dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = dst_base + dst_length; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Sum of the squares of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q31( + const q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q15( + const q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q7( + const q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q7( + const q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult); + + + /** + * @brief Mean value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Mean value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Variance of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Standard deviation of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Floating-point complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + uint32_t numSamples, + q31_t * realResult, + q31_t * imagResult); + + + /** + * @brief Q31 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + uint32_t numSamples, + q63_t * realResult, + q63_t * imagResult); + + + /** + * @brief Floating-point complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + uint32_t numSamples, + float32_t * realResult, + float32_t * imagResult); + + + /** + * @brief Q15 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q15( + const q15_t * pSrcCmplx, + const q15_t * pSrcReal, + q15_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q31( + const q31_t * pSrcCmplx, + const q31_t * pSrcReal, + q31_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_f32( + const float32_t * pSrcCmplx, + const float32_t * pSrcReal, + float32_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Minimum value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] result is output pointer + * @param[in] index is the array index of the minimum value in the input buffer. + */ + void arm_min_q7( + const q7_t * pSrc, + uint32_t blockSize, + q7_t * result, + uint32_t * index); + + + /** + * @brief Minimum value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[in] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q7 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q7( + const q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q15 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q31 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a floating-point vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + /** + @brief Maximum value of a floating-point vector. + @param[in] pSrc points to the input vector + @param[in] blockSize number of samples in input vector + @param[out] pResult maximum value returned here + @return none + */ + void arm_max_no_idx_f32( + const float32_t *pSrc, + uint32_t blockSize, + float32_t *pResult); + + /** + * @brief Q15 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Converts the elements of the floating-point vector to Q31 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q31( + const float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q15 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q15( + const float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q7 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q7( + const float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_float( + const q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q15 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q15( + const q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q7( + const q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_float( + const q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q31 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q31( + const q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q7( + const q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q7 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q7_to_float( + const q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q7 vector to Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q31( + const q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q7 vector to Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q15( + const q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +/** + * @brief Struct for specifying SVM Kernel + */ +typedef enum +{ + ARM_ML_KERNEL_LINEAR = 0, + /**< Linear kernel */ + ARM_ML_KERNEL_POLYNOMIAL = 1, + /**< Polynomial kernel */ + ARM_ML_KERNEL_RBF = 2, + /**< Radial Basis Function kernel */ + ARM_ML_KERNEL_SIGMOID = 3 + /**< Sigmoid kernel */ +} arm_ml_kernel_type; + + +/** + * @brief Instance structure for linear SVM prediction function. + */ +typedef struct +{ + uint32_t nbOfSupportVectors; /**< Number of support vectors */ + uint32_t vectorDimension; /**< Dimension of vector space */ + float32_t intercept; /**< Intercept */ + const float32_t *dualCoefficients; /**< Dual coefficients */ + const float32_t *supportVectors; /**< Support vectors */ + const int32_t *classes; /**< The two SVM classes */ +} arm_svm_linear_instance_f32; + + +/** + * @brief Instance structure for polynomial SVM prediction function. + */ +typedef struct +{ + uint32_t nbOfSupportVectors; /**< Number of support vectors */ + uint32_t vectorDimension; /**< Dimension of vector space */ + float32_t intercept; /**< Intercept */ + const float32_t *dualCoefficients; /**< Dual coefficients */ + const float32_t *supportVectors; /**< Support vectors */ + const int32_t *classes; /**< The two SVM classes */ + int32_t degree; /**< Polynomial degree */ + float32_t coef0; /**< Polynomial constant */ + float32_t gamma; /**< Gamma factor */ +} arm_svm_polynomial_instance_f32; + +/** + * @brief Instance structure for rbf SVM prediction function. + */ +typedef struct +{ + uint32_t nbOfSupportVectors; /**< Number of support vectors */ + uint32_t vectorDimension; /**< Dimension of vector space */ + float32_t intercept; /**< Intercept */ + const float32_t *dualCoefficients; /**< Dual coefficients */ + const float32_t *supportVectors; /**< Support vectors */ + const int32_t *classes; /**< The two SVM classes */ + float32_t gamma; /**< Gamma factor */ +} arm_svm_rbf_instance_f32; + +/** + * @brief Instance structure for sigmoid SVM prediction function. + */ +typedef struct +{ + uint32_t nbOfSupportVectors; /**< Number of support vectors */ + uint32_t vectorDimension; /**< Dimension of vector space */ + float32_t intercept; /**< Intercept */ + const float32_t *dualCoefficients; /**< Dual coefficients */ + const float32_t *supportVectors; /**< Support vectors */ + const int32_t *classes; /**< The two SVM classes */ + float32_t coef0; /**< Independant constant */ + float32_t gamma; /**< Gamma factor */ +} arm_svm_sigmoid_instance_f32; + +/** + * @brief SVM linear instance init function + * @param[in] S Parameters for SVM functions + * @param[in] nbOfSupportVectors Number of support vectors + * @param[in] vectorDimension Dimension of vector space + * @param[in] intercept Intercept + * @param[in] dualCoefficients Array of dual coefficients + * @param[in] supportVectors Array of support vectors + * @param[in] classes Array of 2 classes ID + * @return none. + * + */ + + +void arm_svm_linear_init_f32(arm_svm_linear_instance_f32 *S, + uint32_t nbOfSupportVectors, + uint32_t vectorDimension, + float32_t intercept, + const float32_t *dualCoefficients, + const float32_t *supportVectors, + const int32_t *classes); + +/** + * @brief SVM linear prediction + * @param[in] S Pointer to an instance of the linear SVM structure. + * @param[in] in Pointer to input vector + * @param[out] pResult Decision value + * @return none. + * + */ + +void arm_svm_linear_predict_f32(const arm_svm_linear_instance_f32 *S, + const float32_t * in, + int32_t * pResult); + + +/** + * @brief SVM polynomial instance init function + * @param[in] S points to an instance of the polynomial SVM structure. + * @param[in] nbOfSupportVectors Number of support vectors + * @param[in] vectorDimension Dimension of vector space + * @param[in] intercept Intercept + * @param[in] dualCoefficients Array of dual coefficients + * @param[in] supportVectors Array of support vectors + * @param[in] classes Array of 2 classes ID + * @param[in] degree Polynomial degree + * @param[in] coef0 coeff0 (scikit-learn terminology) + * @param[in] gamma gamma (scikit-learn terminology) + * @return none. + * + */ + + +void arm_svm_polynomial_init_f32(arm_svm_polynomial_instance_f32 *S, + uint32_t nbOfSupportVectors, + uint32_t vectorDimension, + float32_t intercept, + const float32_t *dualCoefficients, + const float32_t *supportVectors, + const int32_t *classes, + int32_t degree, + float32_t coef0, + float32_t gamma + ); + +/** + * @brief SVM polynomial prediction + * @param[in] S Pointer to an instance of the polynomial SVM structure. + * @param[in] in Pointer to input vector + * @param[out] pResult Decision value + * @return none. + * + */ +void arm_svm_polynomial_predict_f32(const arm_svm_polynomial_instance_f32 *S, + const float32_t * in, + int32_t * pResult); + + +/** + * @brief SVM radial basis function instance init function + * @param[in] S points to an instance of the polynomial SVM structure. + * @param[in] nbOfSupportVectors Number of support vectors + * @param[in] vectorDimension Dimension of vector space + * @param[in] intercept Intercept + * @param[in] dualCoefficients Array of dual coefficients + * @param[in] supportVectors Array of support vectors + * @param[in] classes Array of 2 classes ID + * @param[in] gamma gamma (scikit-learn terminology) + * @return none. + * + */ + +void arm_svm_rbf_init_f32(arm_svm_rbf_instance_f32 *S, + uint32_t nbOfSupportVectors, + uint32_t vectorDimension, + float32_t intercept, + const float32_t *dualCoefficients, + const float32_t *supportVectors, + const int32_t *classes, + float32_t gamma + ); + +/** + * @brief SVM rbf prediction + * @param[in] S Pointer to an instance of the rbf SVM structure. + * @param[in] in Pointer to input vector + * @param[out] pResult decision value + * @return none. + * + */ +void arm_svm_rbf_predict_f32(const arm_svm_rbf_instance_f32 *S, + const float32_t * in, + int32_t * pResult); + +/** + * @brief SVM sigmoid instance init function + * @param[in] S points to an instance of the rbf SVM structure. + * @param[in] nbOfSupportVectors Number of support vectors + * @param[in] vectorDimension Dimension of vector space + * @param[in] intercept Intercept + * @param[in] dualCoefficients Array of dual coefficients + * @param[in] supportVectors Array of support vectors + * @param[in] classes Array of 2 classes ID + * @param[in] coef0 coeff0 (scikit-learn terminology) + * @param[in] gamma gamma (scikit-learn terminology) + * @return none. + * + */ + +void arm_svm_sigmoid_init_f32(arm_svm_sigmoid_instance_f32 *S, + uint32_t nbOfSupportVectors, + uint32_t vectorDimension, + float32_t intercept, + const float32_t *dualCoefficients, + const float32_t *supportVectors, + const int32_t *classes, + float32_t coef0, + float32_t gamma + ); + +/** + * @brief SVM sigmoid prediction + * @param[in] S Pointer to an instance of the rbf SVM structure. + * @param[in] in Pointer to input vector + * @param[out] pResult Decision value + * @return none. + * + */ +void arm_svm_sigmoid_predict_f32(const arm_svm_sigmoid_instance_f32 *S, + const float32_t * in, + int32_t * pResult); + + + +/** + * @brief Instance structure for Naive Gaussian Bayesian estimator. + */ +typedef struct +{ + uint32_t vectorDimension; /**< Dimension of vector space */ + uint32_t numberOfClasses; /**< Number of different classes */ + const float32_t *theta; /**< Mean values for the Gaussians */ + const float32_t *sigma; /**< Variances for the Gaussians */ + const float32_t *classPriors; /**< Class prior probabilities */ + float32_t epsilon; /**< Additive value to variances */ +} arm_gaussian_naive_bayes_instance_f32; + +/** + * @brief Naive Gaussian Bayesian Estimator + * + * @param[in] S points to a naive bayes instance structure + * @param[in] in points to the elements of the input vector. + * @param[in] pBuffer points to a buffer of length numberOfClasses + * @return The predicted class + * + */ + + +uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S, + const float32_t * in, + float32_t *pBuffer); + +/** + * @brief Computation of the LogSumExp + * + * In probabilistic computations, the dynamic of the probability values can be very + * wide because they come from gaussian functions. + * To avoid underflow and overflow issues, the values are represented by their log. + * In this representation, multiplying the original exp values is easy : their logs are added. + * But adding the original exp values is requiring some special handling and it is the + * goal of the LogSumExp function. + * + * If the values are x1...xn, the function is computing: + * + * ln(exp(x1) + ... + exp(xn)) and the computation is done in such a way that + * rounding issues are minimised. + * + * The max xm of the values is extracted and the function is computing: + * xm + ln(exp(x1 - xm) + ... + exp(xn - xm)) + * + * @param[in] *in Pointer to an array of input values. + * @param[in] blockSize Number of samples in the input array. + * @return LogSumExp + * + */ + + +float32_t arm_logsumexp_f32(const float32_t *in, uint32_t blockSize); + +/** + * @brief Dot product with log arithmetic + * + * Vectors are containing the log of the samples + * + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[in] pTmpBuffer temporary buffer of length blockSize + * @return The log of the dot product . + * + */ + + +float32_t arm_logsumexp_dot_prod_f32(const float32_t * pSrcA, + const float32_t * pSrcB, + uint32_t blockSize, + float32_t *pTmpBuffer); + +/** + * @brief Entropy + * + * @param[in] pSrcA Array of input values. + * @param[in] blockSize Number of samples in the input array. + * @return Entropy -Sum(p ln p) + * + */ + + +float32_t arm_entropy_f32(const float32_t * pSrcA,uint32_t blockSize); + + +/** + * @brief Entropy + * + * @param[in] pSrcA Array of input values. + * @param[in] blockSize Number of samples in the input array. + * @return Entropy -Sum(p ln p) + * + */ + + +float64_t arm_entropy_f64(const float64_t * pSrcA, uint32_t blockSize); + + +/** + * @brief Kullback-Leibler + * + * @param[in] pSrcA Pointer to an array of input values for probability distribution A. + * @param[in] pSrcB Pointer to an array of input values for probability distribution B. + * @param[in] blockSize Number of samples in the input array. + * @return Kullback-Leibler Divergence D(A || B) + * + */ +float32_t arm_kullback_leibler_f32(const float32_t * pSrcA + ,const float32_t * pSrcB + ,uint32_t blockSize); + + +/** + * @brief Kullback-Leibler + * + * @param[in] pSrcA Pointer to an array of input values for probability distribution A. + * @param[in] pSrcB Pointer to an array of input values for probability distribution B. + * @param[in] blockSize Number of samples in the input array. + * @return Kullback-Leibler Divergence D(A || B) + * + */ +float64_t arm_kullback_leibler_f64(const float64_t * pSrcA, + const float64_t * pSrcB, + uint32_t blockSize); + + +/** + * @brief Weighted sum + * + * + * @param[in] *in Array of input values. + * @param[in] *weigths Weights + * @param[in] blockSize Number of samples in the input array. + * @return Weighted sum + * + */ +float32_t arm_weighted_sum_f32(const float32_t *in + , const float32_t *weigths + , uint32_t blockSize); + + +/** + * @brief Barycenter + * + * + * @param[in] in List of vectors + * @param[in] weights Weights of the vectors + * @param[out] out Barycenter + * @param[in] nbVectors Number of vectors + * @param[in] vecDim Dimension of space (vector dimension) + * @return None + * + */ +void arm_barycenter_f32(const float32_t *in + , const float32_t *weights + , float32_t *out + , uint32_t nbVectors + , uint32_t vecDim); + +/** + * @brief Euclidean distance between two vectors + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ + +float32_t arm_euclidean_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + +/** + * @brief Bray-Curtis distance between two vectors + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_braycurtis_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + +/** + * @brief Canberra distance between two vectors + * + * This function may divide by zero when samples pA[i] and pB[i] are both zero. + * The result of the computation will be correct. So the division per zero may be + * ignored. + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_canberra_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + + +/** + * @brief Chebyshev distance between two vectors + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_chebyshev_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + + +/** + * @brief Cityblock (Manhattan) distance between two vectors + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_cityblock_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + +/** + * @brief Correlation distance between two vectors + * + * The input vectors are modified in place ! + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_correlation_distance_f32(float32_t *pA,float32_t *pB, uint32_t blockSize); + +/** + * @brief Cosine distance between two vectors + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ + +float32_t arm_cosine_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + +/** + * @brief Jensen-Shannon distance between two vectors + * + * This function is assuming that elements of second vector are > 0 + * and 0 only when the corresponding element of first vector is 0. + * Otherwise the result of the computation does not make sense + * and for speed reasons, the cases returning NaN or Infinity are not + * managed. + * + * When the function is computing x log (x / y) with x 0 and y 0, + * it will compute the right value (0) but a division per zero will occur + * and shoudl be ignored in client code. + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ + +float32_t arm_jensenshannon_distance_f32(const float32_t *pA,const float32_t *pB,uint32_t blockSize); + +/** + * @brief Minkowski distance between two vectors + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] n Norm order (>= 2) + * @param[in] blockSize vector length + * @return distance + * + */ + + + +float32_t arm_minkowski_distance_f32(const float32_t *pA,const float32_t *pB, int32_t order, uint32_t blockSize); + +/** + * @brief Dice distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] order Distance order + * @param[in] blockSize Number of samples + * @return distance + * + */ + + +float32_t arm_dice_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Hamming distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_hamming_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Jaccard distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_jaccard_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Kulsinski distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_kulsinski_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Roger Stanimoto distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_rogerstanimoto_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Russell-Rao distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_russellrao_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Sokal-Michener distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_sokalmichener_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Sokal-Sneath distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_sokalsneath_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Yule distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_yule_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup BilinearInterpolate Bilinear Interpolation + * + * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. + * The underlying function f(x, y) is sampled on a regular grid and the interpolation process + * determines values between the grid points. + * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. + * Bilinear interpolation is often used in image processing to rescale images. + * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. + * + * Algorithm + * \par + * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. + * For floating-point, the instance structure is defined as: + *
+   *   typedef struct
+   *   {
+   *     uint16_t numRows;
+   *     uint16_t numCols;
+   *     float32_t *pData;
+   * } arm_bilinear_interp_instance_f32;
+   * 
+ * + * \par + * where numRows specifies the number of rows in the table; + * numCols specifies the number of columns in the table; + * and pData points to an array of size numRows*numCols values. + * The data table pTable is organized in row order and the supplied data values fall on integer indexes. + * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. + * + * \par + * Let (x, y) specify the desired interpolation point. Then define: + *
+   *     XF = floor(x)
+   *     YF = floor(y)
+   * 
+ * \par + * The interpolated output point is computed as: + *
+   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
+   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
+   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
+   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
+   * 
+ * Note that the coordinates (x, y) contain integer and fractional components. + * The integer components specify which portion of the table to use while the + * fractional components control the interpolation processor. + * + * \par + * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. + */ + + + /** + * @addtogroup BilinearInterpolate + * @{ + */ + + /** + * @brief Floating-point bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate. + * @param[in] Y interpolation coordinate. + * @return out interpolated value. + */ + __STATIC_FORCEINLINE float32_t arm_bilinear_interp_f32( + const arm_bilinear_interp_instance_f32 * S, + float32_t X, + float32_t Y) + { + float32_t out; + float32_t f00, f01, f10, f11; + float32_t *pData = S->pData; + int32_t xIndex, yIndex, index; + float32_t xdiff, ydiff; + float32_t b1, b2, b3, b4; + + xIndex = (int32_t) X; + yIndex = (int32_t) Y; + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (xIndex < 0 || xIndex > (S->numCols - 2) || yIndex < 0 || yIndex > (S->numRows - 2)) + { + return (0); + } + + /* Calculation of index for two nearest points in X-direction */ + index = (xIndex ) + (yIndex ) * S->numCols; + + + /* Read two nearest points in X-direction */ + f00 = pData[index]; + f01 = pData[index + 1]; + + /* Calculation of index for two nearest points in Y-direction */ + index = (xIndex ) + (yIndex+1) * S->numCols; + + + /* Read two nearest points in Y-direction */ + f10 = pData[index]; + f11 = pData[index + 1]; + + /* Calculation of intermediate values */ + b1 = f00; + b2 = f01 - f00; + b3 = f10 - f00; + b4 = f00 - f01 - f10 + f11; + + /* Calculation of fractional part in X */ + xdiff = X - xIndex; + + /* Calculation of fractional part in Y */ + ydiff = Y - yIndex; + + /* Calculation of bi-linear interpolated output */ + out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; + + /* return to application */ + return (out); + } + + + /** + * @brief Q31 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + __STATIC_FORCEINLINE q31_t arm_bilinear_interp_q31( + arm_bilinear_interp_instance_q31 * S, + q31_t X, + q31_t Y) + { + q31_t out; /* Temporary output */ + q31_t acc = 0; /* output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q31_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q31_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* shift left xfract by 11 to keep 1.31 format */ + xfract = (X & 0x000FFFFF) << 11U; + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + (int32_t)nCols * (cI) ]; + x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1]; + + /* 20 bits for the fractional part */ + /* shift left yfract by 11 to keep 1.31 format */ + yfract = (Y & 0x000FFFFF) << 11U; + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + (int32_t)nCols * (cI + 1) ]; + y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ + out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); + acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); + + /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); + + /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* Convert acc to 1.31(q31) format */ + return ((q31_t)(acc << 2)); + } + + + /** + * @brief Q15 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + __STATIC_FORCEINLINE q15_t arm_bilinear_interp_q15( + arm_bilinear_interp_instance_q15 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q15_t x1, x2, y1, y2; /* Nearest output values */ + q31_t xfract, yfract; /* X, Y fractional parts */ + int32_t rI, cI; /* Row and column indices */ + q15_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & 0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ + + /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ + /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ + out = (q31_t) (((q63_t) x1 * (0x0FFFFF - xfract)) >> 4U); + acc = ((q63_t) out * (0x0FFFFF - yfract)); + + /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) x2 * (0x0FFFFF - yfract)) >> 4U); + acc += ((q63_t) out * (xfract)); + + /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y1 * (0x0FFFFF - xfract)) >> 4U); + acc += ((q63_t) out * (yfract)); + + /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y2 * (xfract)) >> 4U); + acc += ((q63_t) out * (yfract)); + + /* acc is in 13.51 format and down shift acc by 36 times */ + /* Convert out to 1.15 format */ + return ((q15_t)(acc >> 36)); + } + + + /** + * @brief Q7 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + __STATIC_FORCEINLINE q7_t arm_bilinear_interp_q7( + arm_bilinear_interp_instance_q7 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q7_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q7_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ + out = ((x1 * (0xFFFFF - xfract))); + acc = (((q63_t) out * (0xFFFFF - yfract))); + + /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ + out = ((x2 * (0xFFFFF - yfract))); + acc += (((q63_t) out * (xfract))); + + /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y1 * (0xFFFFF - xfract))); + acc += (((q63_t) out * (yfract))); + + /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y2 * (yfract))); + acc += (((q63_t) out * (xfract))); + + /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ + return ((q7_t)(acc >> 40)); + } + + /** + * @} end of BilinearInterpolate group + */ + + +/* SMMLAR */ +#define multAcc_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMLSR */ +#define multSub_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMULR */ +#define mult_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32) + +/* SMMLA */ +#define multAcc_32x32_keep32(a, x, y) \ + a += (q31_t) (((q63_t) x * y) >> 32) + +/* SMMLS */ +#define multSub_32x32_keep32(a, x, y) \ + a -= (q31_t) (((q63_t) x * y) >> 32) + +/* SMMUL */ +#define mult_32x32_keep32(a, x, y) \ + a = (q31_t) (((q63_t) x * y ) >> 32) + + +#if defined ( __CC_ARM ) + /* Enter low optimization region - place directly above function definition */ + #if defined( __ARM_ARCH_7EM__ ) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("push") \ + _Pragma ("O1") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #if defined ( __ARM_ARCH_7EM__ ) + #define LOW_OPTIMIZATION_EXIT \ + _Pragma ("pop") + #else + #define LOW_OPTIMIZATION_EXIT + #endif + + /* Enter low optimization region - place directly above function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined (__ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __GNUC__ ) + #define LOW_OPTIMIZATION_ENTER \ + __attribute__(( optimize("-O1") )) + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __ICCARM__ ) + /* Enter low optimization region - place directly above function definition */ + #if defined ( __ARM_ARCH_7EM__ ) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define LOW_OPTIMIZATION_EXIT + + /* Enter low optimization region - place directly above function definition */ + #if defined ( __ARM_ARCH_7EM__ ) + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __TI_ARM__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __CSMC__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __TASKING__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( _MSC_VER ) || defined(__GNUC_PYTHON__) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT +#endif + + + +/* Compiler specific diagnostic adjustment */ +#if defined ( __CC_ARM ) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + +#elif defined ( __GNUC__ ) +#pragma GCC diagnostic pop + +#elif defined ( __ICCARM__ ) + +#elif defined ( __TI_ARM__ ) + +#elif defined ( __CSMC__ ) + +#elif defined ( __TASKING__ ) + +#elif defined ( _MSC_VER ) + +#else + #error Unknown compiler +#endif + +#ifdef __cplusplus +} +#endif + + +#endif /* _ARM_MATH_H */ + +/** + * + * End of file. + */ diff --git a/dsp_manager.c b/dsp_manager.c new file mode 100644 index 0000000..e351550 --- /dev/null +++ b/dsp_manager.c @@ -0,0 +1,73 @@ +#include "dsp_manager.h" +#include "imu.h" + +// Буферы для расчета +static float32_t fft_input[FFT_SIZE]; +static float32_t fft_output[FFT_SIZE]; +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 arm_rfft_fast_instance_f32 fft_handler; + +void DSP_Init(void) { + // Инициализируем структуру БПФ + arm_rfft_fast_init_f32(&fft_handler, FFT_SIZE); + + // Генерируем окно Ханна (делается один раз) + for (int i = 0; i < FFT_SIZE; i++) { + hann_window[i] = 0.5f * (1.0f - arm_cos_f32(2.0f * PI * i / (FFT_SIZE - 1))); + } +} + +void DSP_AddSample(float32_t sample) { + if (dsp_buffer_ready) return; // Ждем, пока обработают прошлую пачку + + fft_input[sample_count++] = sample; + + if (sample_count >= FFT_SIZE) { + sample_count = 0; + dsp_buffer_ready = 1; // Сигнализируем в main + } +} + +void DSP_Process(void) { + // 1. Применяем окно Ханна (умножаем входные данные на "колокол") + arm_mult_f32(fft_input, hann_window, fft_input, FFT_SIZE); + + // 2. САМО БПФ (Быстрое преобразование Фурье) + arm_rfft_fast_f32(&fft_handler, fft_input, fft_output, 0); + + // 3. Считаем амплитуды (Magnitudes) + arm_cmplx_mag_f32(fft_output, magnitudes, FFT_SIZE / 2); + + // 4. Поиск 3-х самых мощных пиков + float32_t top_freqs[3] = {0}; + float32_t top_mags[3] = {0}; + + // Ищем в диапазоне от 50 Гц до 450 Гц (чтобы не задеть полезный сигнал наклона) + // Т.к. частота опроса 1000 Гц, а точек 1024, индекс массива почти равен частоте в Гц + for (uint32_t i = 50; i < 450; i++) { + if (magnitudes[i] > top_mags[0]) { + // Сдвигаем старые значения + top_mags[2] = top_mags[1]; top_freqs[2] = top_freqs[1]; + top_mags[1] = top_mags[0]; top_freqs[1] = top_freqs[0]; + // Записываем новый топ-1 + top_mags[0] = magnitudes[i]; + top_freqs[0] = (float32_t)i; + } + } + + // 5. ПЕРЕНАСТРОЙКА ФИЛЬТРОВ в imu.c "на лету" + // динамически меняем частоты notch1, notch2, notch3 + if (top_mags[0] > 10.0f) biquad_init_notch(¬ch1, top_freqs[0], 1.0f, 1000.0f); + 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); + + dsp_buffer_ready = 0; // Разрешаем новый сбор данных +} \ No newline at end of file diff --git a/dsp_manager.h b/dsp_manager.h new file mode 100644 index 0000000..eafa523 --- /dev/null +++ b/dsp_manager.h @@ -0,0 +1,17 @@ +#ifndef DSP_MANAGER_H +#define DSP_MANAGER_H + +#include "arm_math.h" + +// Размер окна Фурье (степень двойки) +#define FFT_SIZE 512 + +// Прототипы +void DSP_Init(void); +void DSP_AddSample(float32_t sample); // Добавить одну точку в "копилку" +void DSP_Process(void); // Запустить расчет (когда накопили 1024) + +// Флаг готовности данных (чтобы main знал, когда пора вызывать Process) +extern uint8_t dsp_buffer_ready; + +#endif \ No newline at end of file diff --git a/fft_az.ewd b/fft_az.ewd new file mode 100644 index 0000000..38cd723 --- /dev/null +++ b/fft_az.ewd @@ -0,0 +1,3324 @@ + + + 4 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E2_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + GPLINK_ID + 2 + + 0 + 1 + 1 + + + + + + + IJET_ID + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CesiumOS2\CesiumOS2Plugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CesiumOS3\CesiumOS3Plugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\EclipseThreadX\EclipseThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ELThreadX\ELThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PX5RTOS\PX5RTOSArmPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9a.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Zephyr\ZephyrArmPlugin.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E2_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + GPLINK_ID + 2 + + 0 + 1 + 0 + + + + + + + IJET_ID + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CesiumOS2\CesiumOS2Plugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CesiumOS3\CesiumOS3Plugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\EclipseThreadX\EclipseThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ELThreadX\ELThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PX5RTOS\PX5RTOSArmPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9a.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Zephyr\ZephyrArmPlugin.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/fft_az.ewp b/fft_az.ewp new file mode 100644 index 0000000..4c76e34 --- /dev/null +++ b/fft_az.ewp @@ -0,0 +1,2280 @@ + + + 4 + + Debug + + ARM + + 1 + + General + 3 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 40 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 12 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 4 + + + + inputOutputBased + + + + ILINK + 0 + + 28 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 1 + 1 + 1 + + + + + + + + + BUILDACTION + 2 + + + + + Release + + ARM + + 0 + + General + 3 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 40 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 12 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 4 + + + + inputOutputBased + + + + ILINK + 0 + + 28 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 1 + 1 + 0 + + + + + + + + + BUILDACTION + 2 + + + + + $EW_DIR$\arm\CMSIS\DSP\Include\arm_math.h + + + $PROJ_DIR$\dsp_manager.c + + + $PROJ_DIR$\dsp_manager.h + + + $PROJ_DIR$\imu.c + + + $PROJ_DIR$\imu.h + + + $PROJ_DIR$\main.c + + + $PROJ_DIR$\..\www\motors.c + + + $PROJ_DIR$\..\www\motors.h + + + $PROJ_DIR$\startup_stm32g431xx.s + + + $PROJ_DIR$\stm32g431xx.h + + + $PROJ_DIR$\stm32g4xx.h + + + $PROJ_DIR$\system_stm32g4xx.c + + + $PROJ_DIR$\system_stm32g4xx.h + + + + true + + + diff --git a/fft_az.ewt b/fft_az.ewt new file mode 100644 index 0000000..b68fb8c --- /dev/null +++ b/fft_az.ewt @@ -0,0 +1,3463 @@ + + + 4 + + Debug + + ARM + + 1 + + C-STAT + 521 + + 521 + + 0 + + 1 + 600 + 1 + 8 + 0 + 1 + 100 + Debug/C-STAT + + + 2.9.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + Release + + ARM + + 0 + + C-STAT + 521 + + 521 + + 0 + + 1 + 600 + 1 + 8 + 0 + 1 + 100 + Release/C-STAT + + + 2.9.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + $EW_DIR$\arm\CMSIS\DSP\Include\arm_math.h + + + $PROJ_DIR$\dsp_manager.c + + + $PROJ_DIR$\dsp_manager.h + + + $PROJ_DIR$\imu.c + + + $PROJ_DIR$\imu.h + + + $PROJ_DIR$\main.c + + + $PROJ_DIR$\..\www\motors.c + + + $PROJ_DIR$\..\www\motors.h + + + $PROJ_DIR$\startup_stm32g431xx.s + + + $PROJ_DIR$\stm32g431xx.h + + + $PROJ_DIR$\stm32g4xx.h + + + $PROJ_DIR$\system_stm32g4xx.c + + + $PROJ_DIR$\system_stm32g4xx.h + + diff --git a/fft_az.eww b/fft_az.eww new file mode 100644 index 0000000..0879433 --- /dev/null +++ b/fft_az.eww @@ -0,0 +1,7 @@ + + + + $WS_DIR$\fft_az.ewp + + + diff --git a/iar_cortexM4lf_math.a b/iar_cortexM4lf_math.a new file mode 100644 index 0000000..2fc8985 Binary files /dev/null and b/iar_cortexM4lf_math.a differ diff --git a/imu.c b/imu.c new file mode 100644 index 0000000..5116670 --- /dev/null +++ b/imu.c @@ -0,0 +1,109 @@ +#include "imu.h" +#include + +volatile int16_t raw_ax, raw_ay, raw_az; +volatile int16_t raw_gx, raw_gy, raw_gz; +float filt_gx; +float gyro_bias_x = 0; + +// Сами фильтры +biquad_t notch1, notch2, notch3; + +float biquad_apply(biquad_t *f, float x) { + float out = f->b0 * x + f->d1; + f->d1 = f->b1 * x - f->a1 * out + f->d2; + f->d2 = f->b2 * x - f->a2 * out; + return out; +} + +void biquad_init_notch(biquad_t *f, float center_freq, float Q, float fs) { + float w0 = 2.0f * 3.14159265f * center_freq / fs; + float alpha = sinf(w0) / (2.0f * Q); + float cosw0 = cosf(w0); + float a0 = 1.0f + alpha; + f->b0 = 1.0f / a0; + f->b1 = -2.0f * cosw0 / a0; + f->b2 = 1.0f / a0; + f->a1 = -2.0f * cosw0 / a0; + f->a2 = (1.0f - alpha) / a0; + f->d1 = 0; f->d2 = 0; +} + +void I2C1_Init(void) { + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOBEN; + RCC->APB1ENR1 |= RCC_APB1ENR1_I2C1EN; + GPIOB->MODER &= ~(GPIO_MODER_MODE8 | GPIO_MODER_MODE9); + GPIOB->MODER |= (GPIO_MODER_MODE8_1 | GPIO_MODER_MODE9_1); + GPIOB->OTYPER |= (GPIO_OTYPER_OT8 | GPIO_OTYPER_OT9); + GPIOB->PUPDR |= (GPIO_PUPDR_PUPD8_0 | GPIO_PUPDR_PUPD9_0); + GPIOB->AFR[1] |= (4 << 0) | (4 << 4); + I2C1->TIMINGR = 0x00303D5B; + I2C1->CR1 |= I2C_CR1_PE; +} + +void I2C_ReadMulti(uint8_t devAddr, uint8_t regAddr, uint8_t *buf, uint8_t len) { + I2C1->CR2 = (devAddr & I2C_CR2_SADD) | (1 << 16) | I2C_CR2_START; + while (!(I2C1->ISR & I2C_ISR_TXIS)); + I2C1->TXDR = regAddr; + while (!(I2C1->ISR & I2C_ISR_TC)); + I2C1->CR2 = (devAddr & I2C_CR2_SADD) | ((uint32_t)len << 16) | I2C_CR2_RD_WRN | I2C_CR2_START | I2C_CR2_AUTOEND; + for (uint8_t i = 0; i < len; i++) { + while (!(I2C1->ISR & I2C_ISR_RXNE)); + buf[i] = (uint8_t)I2C1->RXDR; + } +} + +static void IMU_WriteReg(uint8_t reg, uint8_t val) { + I2C1->CR2 = (IMU_ADDR & I2C_CR2_SADD) | (2 << 16) | I2C_CR2_START; + while (!(I2C1->ISR & I2C_ISR_TXIS)); + I2C1->TXDR = reg; + while (!(I2C1->ISR & I2C_ISR_TXIS)); + I2C1->TXDR = val; + while (!(I2C1->ISR & I2C_ISR_TC)); + I2C1->CR2 |= I2C_CR2_STOP; +} + +void IMU_SetBank(uint8_t bank) { IMU_WriteReg(0x7F, (bank & 0x03) << 4); } + +void IMU_Init(void) { + // Пробуждение... + IMU_SetBank(0); + IMU_WriteReg(0x06, 0x01); + for(volatile int i=0; i<100000; i++); + IMU_WriteReg(0x07, 0x00); + + IMU_SetBank(2); + IMU_WriteReg(0x01, 0x01); // Bypass (отключаем встроенный фильтр для анализа) + IMU_SetBank(0); + + // Начальная инициализация ( на 0 Гц dsp_manager сам их включит) + biquad_init_notch(¬ch1, 0, 1.0f, 1000.0f); + biquad_init_notch(¬ch2, 0, 1.0f, 1000.0f); + biquad_init_notch(¬ch3, 0, 1.0f, 1000.0f); +} + +void IMU_Calibrate(void) { + int32_t gx_s = 0; uint8_t buf[14]; + for (int i = 0; i < 512; i++) { + I2C_ReadMulti(IMU_ADDR, 0x2D, buf, 14); + gx_s += (int16_t)(buf[6] << 8 | buf[7]); + for (volatile int d = 0; d < 2000; d++); + } + gyro_bias_x = (float)gx_s / 512.0f; +} + +void IMU_ReadRawData(void) { + uint8_t buf[14]; + I2C_ReadMulti(IMU_ADDR, 0x2D, buf, 14); + + raw_gx = (int16_t)(buf[6] << 8 | buf[7]); + float x = (float)raw_gx - gyro_bias_x; + + // Последовательно применяем 3 режекторных фильтра + // dsp_manager будет менять их коэффициенты в фоновом режиме + x = biquad_apply(¬ch1, x); + x = biquad_apply(¬ch2, x); + x = biquad_apply(¬ch3, x); + + filt_gx = x; +} \ No newline at end of file diff --git a/imu.h b/imu.h new file mode 100644 index 0000000..10f61d6 --- /dev/null +++ b/imu.h @@ -0,0 +1,27 @@ +#ifndef IMU_H +#define IMU_H + +#include "stm32g4xx.h" + +#define IMU_ADDR (0x68 << 1) + +typedef struct { + float b0, b1, b2, a1, a2; + float d1, d2; +} biquad_t; + +// Делаем фильтры видимыми для dsp_manager +extern biquad_t notch1, notch2, notch3; + +// Прототипы +void I2C1_Init(void); +void IMU_Init(void); +void IMU_Calibrate(void); +void IMU_ReadRawData(void); +void biquad_init_notch(biquad_t *f, float center_freq, float Q, float fs); + +// Данные +extern volatile int16_t raw_gx; // Нам для анализа нужен только GX +extern float filt_gx; + +#endif \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..361980c --- /dev/null +++ b/main.c @@ -0,0 +1,121 @@ +#include "stm32g4xx.h" +#include "imu.h" +#include "motors.h" +#include "dsp_manager.h" + +// 1. ПЕРЕМЕННЫЕ +volatile uint8_t imu_flag = 0; + +volatile uint32_t m1_speed = 900; +volatile uint32_t m2_speed = 900; +volatile uint32_t m3_speed = 900; +volatile uint32_t m4_speed = 900; + +#pragma pack(push, 1) +typedef struct { + uint8_t header[2]; + int16_t gx; + int16_t filt_gx; +} Telemetry_t; +#pragma pack(pop) + +// 2. ПРОТОТИПЫ (Чтобы компилятор не ругался) +void SystemClock_Config_160MHz(void); +void UART2_Init_921600(void); +void TIM6_Init_1000Hz(void); +void UART_SendPacket(Telemetry_t *p); + +// 3. ОСНОВНОЙ ЦИКЛ +int main(void) { + SystemClock_Config_160MHz(); + Motors_Init(); + Set_Motors(900); + for (int i = 0; i < 20000000; i++) __NOP(); // Пауза для ESC + + I2C1_Init(); + UART2_Init_921600(); + IMU_Init(); + IMU_Calibrate(); + + DSP_Init(); // Инициализация нашего анализатора Фурье + + TIM6_Init_1000Hz(); + __enable_irq(); + + Telemetry_t pkt; + pkt.header[0] = 0xAA; pkt.header[1] = 0xBB; + + while (1) { + if (imu_flag) { + imu_flag = 0; + + IMU_ReadRawData(); + + //сохраняем во временную переменную + int16_t gx_val = raw_gx; + DSP_AddSample((float32_t)gx_val); + + if (dsp_buffer_ready) { + DSP_Process(); + } + + pkt.gx = gx_val; + pkt.filt_gx = (int16_t)filt_gx; + UART_SendPacket(&pkt); + + Set_Motor_Individual(m1_speed, m2_speed, m3_speed, m4_speed); + } + } + } + +// 4. РЕАЛИЗАЦИЯ ФУНКЦИЙ (Тут был провал - их не хватало!) + +void SystemClock_Config_160MHz(void) { + RCC->CR |= RCC_CR_HSION; + while(!(RCC->CR & RCC_CR_HSIRDY)); + RCC->PLLCFGR = (RCC_PLLCFGR_PLLSRC_HSI | (3 << RCC_PLLCFGR_PLLM_Pos) | + (80 << RCC_PLLCFGR_PLLN_Pos) | (0 << RCC_PLLCFGR_PLLR_Pos)); + RCC->CR |= RCC_CR_PLLON; + RCC->PLLCFGR |= RCC_PLLCFGR_PLLREN; + while(!(RCC->CR & RCC_CR_PLLRDY)); + FLASH->ACR |= (4 << FLASH_ACR_LATENCY_Pos); + RCC->CFGR |= RCC_CFGR_SW_PLL; + while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); + SystemCoreClockUpdate(); +} + +void UART2_Init_921600(void) { + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOBEN; + RCC->APB1ENR1 |= RCC_APB1ENR1_USART2EN; + RCC->CCIPR |= (1 << RCC_CCIPR_USART2SEL_Pos); + GPIOB->MODER &= ~(GPIO_MODER_MODE3 | GPIO_MODER_MODE4); + GPIOB->MODER |= (GPIO_MODER_MODE3_1 | GPIO_MODER_MODE4_1); + GPIOB->AFR[0] &= ~((0xF << 12) | (0xF << 16)); + GPIOB->AFR[0] |= ((7 << 12) | (7 << 16)); + USART2->BRR = 174; + USART2->CR1 = USART_CR1_TE | USART_CR1_UE; +} + +void UART_SendPacket(Telemetry_t *p) { + uint8_t *ptr = (uint8_t*)p; + for (uint16_t i = 0; i < sizeof(Telemetry_t); i++) { + while (!(USART2->ISR & USART_ISR_TXE)); + USART2->TDR = ptr[i]; + } +} + +void TIM6_Init_1000Hz(void) { + RCC->APB1ENR1 |= RCC_APB1ENR1_TIM6EN; + TIM6->PSC = 16000 - 1; + TIM6->ARR = 10 - 1; + TIM6->DIER |= TIM_DIER_UIE; + NVIC_EnableIRQ(TIM6_DAC_IRQn); + TIM6->CR1 |= TIM_CR1_CEN; +} + +void TIM6_DAC_IRQHandler(void) { + if (TIM6->SR & TIM_SR_UIF) { + TIM6->SR = 0; + imu_flag = 1; + } +} \ No newline at end of file diff --git a/motors.c b/motors.c new file mode 100644 index 0000000..a8c5ba8 --- /dev/null +++ b/motors.c @@ -0,0 +1,73 @@ +#include "stm32g4xx.h" +#include "motors.h" +#include "pid.h" +#include "mixer.h" + +void Motors_Init(void) { + + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; + RCC->APB1ENR1 |= RCC_APB1ENR1_TIM2EN; + RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; + + // PA0, PA1 -> TIM2 CH1/CH2 + GPIOA->MODER &= ~(GPIO_MODER_MODE0 | GPIO_MODER_MODE1); + GPIOA->MODER |= (GPIO_MODER_MODE0_1 | GPIO_MODER_MODE1_1); + GPIOA->AFR[0] &= ~((0xF << 0) | (0xF << 4)); + GPIOA->AFR[0] |= ((1 << 0) | (1 << 4)); + + // PA10, PA11 -> TIM1 CH3/CH4 + GPIOA->MODER &= ~(GPIO_MODER_MODE10 | GPIO_MODER_MODE11); + GPIOA->MODER |= (GPIO_MODER_MODE10_1 | GPIO_MODER_MODE11_1); + GPIOA->AFR[1] &= ~((0xF << 8) | (0xF << 12)); + GPIOA->AFR[1] |= ((6 << 8) | (11 << 12)); + + // TIM2 — 100 Гц + TIM2->PSC = 16 - 1; + TIM2->ARR = 10000 - 1; + TIM2->CCMR1 = 0x6060; + TIM2->CCER = 0x11; + TIM2->CR1 = TIM_CR1_CEN; + + // TIM1 — 100 Гц + TIM1->PSC = 16 - 1; + TIM1->ARR = 10000 - 1; + TIM1->CCMR2 = 0x6060; + TIM1->CCER = 0x1100; + TIM1->BDTR |= TIM_BDTR_MOE; + TIM1->CR1 = TIM_CR1_CEN; +} + +void Set_Motors(int val) { + TIM2->CCR1 = val; // M1 + TIM2->CCR2 = val; // M2 + TIM1->CCR3 = val; // M3 + TIM1->CCR4 = val; // M4 +} + +void Set_Motor_Individual(int m1, int m2, int m3, int m4) { + TIM2->CCR1 = m1; + TIM2->CCR2 = m2; + TIM1->CCR3 = m3; + TIM1->CCR4 = m4; +} + +void Motors_StartupDelay(void) { + Set_Motors(900); + for (volatile int i = 0; i < 6000000; i++) __NOP(); +} + +void Motors_Stop(void) { + Set_Motors(900); +} + +void Motors_Idle(void) { + Set_Motors(1050); +} + +void Motors_Arm(void) { + Set_Motors(1050); +} + +void Motors_Disarm(void) { + Set_Motors(900); +} diff --git a/motors.h b/motors.h new file mode 100644 index 0000000..799e299 --- /dev/null +++ b/motors.h @@ -0,0 +1,17 @@ +#ifndef MOTORS_H +#define MOTORS_H + +#include + +void Motors_Init(void); +void Set_Motors(int val); +void Set_Motor_Individual(int m1, int m2, int m3, int m4); +void Motors_StartupDelay(void); +void Motors_Stop(void); +void Motors_Idle(void); +void Motors_Arm(void); +void Motors_Disarm(void); + + + +#endif diff --git a/settings/fft_az.Debug.cspy.bat b/settings/fft_az.Debug.cspy.bat new file mode 100644 index 0000000..182e243 --- /dev/null +++ b/settings/fft_az.Debug.cspy.bat @@ -0,0 +1,40 @@ +@REM This batch file has been generated by the IAR Embedded Workbench +@REM C-SPY Debugger, as an aid to preparing a command line for running +@REM the cspybat command line utility using the appropriate settings. +@REM +@REM Note that this file is generated every time a new debug session +@REM is initialized, so you may want to move or rename the file before +@REM making changes. +@REM +@REM You can launch cspybat by typing the name of this batch file followed +@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). +@REM +@REM Read about available command line parameters in the C-SPY Debugging +@REM Guide. Hints about additional command line parameters that may be +@REM useful in specific cases: +@REM --download_only Downloads a code image without starting a debug +@REM session afterwards. +@REM --silent Omits the sign-on message. +@REM --timeout Limits the maximum allowed execution time. +@REM + + +@echo off + +if not "%~1" == "" goto debugFile + +@echo on + +"C:\iar\ewarm-9.70.1\common\bin\cspybat" -f "C:\Users\vadychka\Documents\GitHub\leybl\fft\settings\fft_az.Debug.general.xcl" --backend -f "C:\Users\vadychka\Documents\GitHub\leybl\fft\settings\fft_az.Debug.driver.xcl" + +@echo off +goto end + +:debugFile + +@echo on + +"C:\iar\ewarm-9.70.1\common\bin\cspybat" -f "C:\Users\vadychka\Documents\GitHub\leybl\fft\settings\fft_az.Debug.general.xcl" "--debug_file=%~1" --backend -f "C:\Users\vadychka\Documents\GitHub\leybl\fft\settings\fft_az.Debug.driver.xcl" + +@echo off +:end \ No newline at end of file diff --git a/settings/fft_az.Debug.cspy.ps1 b/settings/fft_az.Debug.cspy.ps1 new file mode 100644 index 0000000..aa9c5f6 --- /dev/null +++ b/settings/fft_az.Debug.cspy.ps1 @@ -0,0 +1,31 @@ +param([String]$debugfile = ""); + +# This powershell file has been generated by the IAR Embedded Workbench +# C - SPY Debugger, as an aid to preparing a command line for running +# the cspybat command line utility using the appropriate settings. +# +# Note that this file is generated every time a new debug session +# is initialized, so you may want to move or rename the file before +# making changes. +# +# You can launch cspybat by typing Powershell.exe -File followed by the name of this batch file, followed +# by the name of the debug file (usually an ELF / DWARF or UBROF file). +# +# Read about available command line parameters in the C - SPY Debugging +# Guide. Hints about additional command line parameters that may be +# useful in specific cases : +# --download_only Downloads a code image without starting a debug +# session afterwards. +# --silent Omits the sign - on message. +# --timeout Limits the maximum allowed execution time. +# + + +if ($debugfile -eq "") +{ +& "C:\iar\ewarm-9.70.1\common\bin\cspybat" -f "C:\Users\vadychka\Documents\GitHub\leybl\fft\settings\fft_az.Debug.general.xcl" --backend -f "C:\Users\vadychka\Documents\GitHub\leybl\fft\settings\fft_az.Debug.driver.xcl" +} +else +{ +& "C:\iar\ewarm-9.70.1\common\bin\cspybat" -f "C:\Users\vadychka\Documents\GitHub\leybl\fft\settings\fft_az.Debug.general.xcl" --debug_file=$debugfile --backend -f "C:\Users\vadychka\Documents\GitHub\leybl\fft\settings\fft_az.Debug.driver.xcl" +} diff --git a/settings/fft_az.Debug.driver.xcl b/settings/fft_az.Debug.driver.xcl new file mode 100644 index 0000000..5529b2d --- /dev/null +++ b/settings/fft_az.Debug.driver.xcl @@ -0,0 +1,31 @@ +--endian=little + +--cpu=Cortex-M4 + +--fpu=VFPv4_SP + +-p + +C:\iar\ewarm-9.70.1\arm\config\debugger\ST\STM32G431CB.ddf + +--drv_verify_download + +--semihosting + +--device=STM32G431CB + +--drv_interface=SWD + +--stlink_reset_strategy=0,0 + +--drv_swo_clock_setup=170000000,1,2000000 + +--drv_catch_exceptions=0x000 + +--drv_debug_ap=0 + +--stlink_probe_supplied_power=3.3 + + + + diff --git a/settings/fft_az.Debug.general.xcl b/settings/fft_az.Debug.general.xcl new file mode 100644 index 0000000..f6c60dc --- /dev/null +++ b/settings/fft_az.Debug.general.xcl @@ -0,0 +1,15 @@ +C:\iar\ewarm-9.70.1\arm\bin\armproc.dll + + C:\iar\ewarm-9.70.1\arm\bin\armstlink.dll + + C:\Users\vadychka\Documents\GitHub\leybl\fft\Debug\Exe\fft_az.out + + --plugin=C:\iar\ewarm-9.70.1\arm\bin\armLibSupportUniversal.dll + + --device_macro=C:\iar\ewarm-9.70.1\arm/config/debugger/ST/STM32G4xx.dmac + + --flash_loader=C:\iar\ewarm-9.70.1\arm/config/flashloader/ST/FlashSTM32G43xxB.board + + + + diff --git a/settings/fft_az.crun b/settings/fft_az.crun new file mode 100644 index 0000000..d71ea55 --- /dev/null +++ b/settings/fft_az.crun @@ -0,0 +1,13 @@ + + + 1 + + + * + * + * + 0 + 1 + + + diff --git a/settings/fft_az.dbgdt b/settings/fft_az.dbgdt new file mode 100644 index 0000000..6309b79 --- /dev/null +++ b/settings/fft_az.dbgdt @@ -0,0 +1,1167 @@ + + + + + 34048 + 34049 + 34050 + 34051 + 34052 + 34053 + 34054 + 34055 + 34056 + 34057 + 34058 + 34059 + 34060 + 34061 + 34062 + 34063 + 34064 + 34065 + 34066 + 34067 + 34068 + 34069 + 34070 + 34071 + 34072 + 34073 + 34074 + 34075 + 34076 + 34077 + 34078 + 34079 + 34080 + 34081 + 34082 + 34083 + 34084 + 34085 + 34086 + 34087 + 34088 + 34089 + 34090 + 34091 + 34092 + 34093 + 34094 + 34095 + 34096 + 34097 + 34098 + 34099 + 34100 + 34101 + 34102 + 34103 + 34104 + 34105 + 34106 + 34107 + 34108 + 34109 + 34110 + 34111 + 34112 + 34113 + 34114 + 34115 + + + + + 34001 + 0 + + + + + 34322 + 34390 + 34323 + 34398 + 34400 + 34397 + 34320 + 34321 + 34324 + 0 + + + + + 57600 + 57601 + 57603 + 33024 + 0 + 57607 + 0 + 57635 + 57634 + 57637 + 0 + 57643 + 57644 + 0 + 33090 + 33057 + 57636 + 57640 + 57641 + 33026 + 33065 + 33063 + 33064 + 33053 + 33054 + 0 + 33035 + 33036 + 34399 + 0 + 33055 + 33056 + 0 + + + + 1 + 1 + + + Disassembly + _I0 + + + 500 + 20 + + + + 14 + 42 + + + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 60010000210013970000170000002497000001000000108600009500000015810000040000005F860000010000000C8100001F00000001E10000010000003A97000002000000159700001C000000038400000100000012860000890000001297000026000000178100000600000056860000020000003197000003000000148100000200000000810000050000000E8100000E0000001F810000090000000B8100000A000000289700000200000000E1000001000000148600000600000005840000020000001497000019000000118600004B0000000284000003000000058100000200000032840000010000001084000003000000549200000200000002E10000010000001697000001000000 + + + 4C00FFFFFFFF2AE10000008200001C820000338200000182000077840000078400007F84000088840000878400008A840000868400000D8400000F84000008840000FE830000FF830000FD83000054840000328100001C810000098400005D9700006797000042970000439700003C8400003D840000408400004C8400003E8400004B8400004D8400003F8400003A8400003B8400005A8400005B8400005384000008800000098000000A8000000B8000000C800000158000000A81000001E800000C84000033840000788400003B850000779700003A97000005DC00002197000000DC000001DC000002DC000003DC000004DC000068970000699700006A9700006B9700006C9700006D9700006E9700006F97000070970000719700007297000073970000749700007597000076970000 + 6A00048400006B030000359700000D170000139700002D020000469700003A0A000024970000001700002CE1000086020000158100006502000032970000051700008984000004000000318400009602000007E1000081020000409700005002000045810000050000000D9700001118000051970000D4170000208100006B0200000F8100006302000004E100007F0200002C9700003C0200001B9700003A0200003D970000450A00000C81000060020000079700007902000023E100008302000001E100007C0200000D8000005A020000299700003802000018970000350200005C9700001F020000068400006D0300001982000054020000159700002E020000098100005B0600005997000016020000269700000217000037970000400A0000038400008E0200001682000052020000178100006702000034970000071700002397000032020000129700002C02000045970000390A00002BE10000850200001481000064020000539700001E0200003197000004170000008400008B0200000E840000070C000030840000090C0000008100005B0200003F9700004F02000044810000020000001F8100006A0200000E810000620200002F8200005502000025E100008402000003E100007E0200002B970000460200001A970000340200003C970000440A00000B810000D30B0000069700007802000022E100008202000000E100007B020000399700004A020000289700003B020000179700002F0200005B9700001D0200005D84000001000000D1840000140200000584000090020000188200005302000041E100008802000036970000470200001497000030020000589700001B0200002597000001170000028400008D0200001681000066020000339700000617000066970000440100000581000097060000559700005602000010840000940200003284000097020000419700005102000005E100008002000051840000990200003E9700004E0200001C9700003902000043810000030000000A840000920200000D810000D50B000002E100007D0200002A97000045020000199700003702000035E10000840600003B970000430A0000089700003218000005970000B106000016970000330200005A970000170200005C84000000000000279700000317000038970000410A0000 + + + 0 + 0A0000000A0000006E0000006E000000 + 00000000100300000006000021030000 + 4096 + 0 + 0 + 32767 + 0 + + + 1 + + + 4294967295 + 00000000C10100000006000072020000 + 00000000AA010000000600005B020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + 34051 + 00000000170000000601000078010000 + 600400004A000000FC050000F6020000 + 16384 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34073 + 00000000170000000601000078010000 + 600400004A000000FC050000F6020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34097 + 00000000170000000601000078010000 + 5C040000460000000006000010030000 + 4096 + 0 + 0 + 32767 + 0 + + + 1 + + + + m1_speed + m2_speed + m3_speed + m4_speed + + + + Expression + Location + Type + Value + + + 100 + 121 + 100 + 100 + + 0 + + + 34106 + 00000000170000000601000078010000 + 600400004A000000FC050000F6020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34107 + 00000000170000000601000078010000 + 600400004A000000FC050000F6020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34108 + 00000000170000000601000078010000 + 600400004A000000FC050000F6020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34109 + 00000000170000000601000078010000 + 600400004A000000FC050000F6020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34052 + 000000001700000022010000C8000000 + 0400000077020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34081 + 000000001700000022010000C8000000 + 0400000077020000FC050000F6020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34053 + 000000001700000022010000C8000000 + 040000007702000054040000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 1 + + + 34056 + 000000001700000022010000C8000000 + 040000007702000054040000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34063 + 000000001700000022010000C8000000 + 040000007702000054040000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 1 + + + 34066 + 000000001700000022010000C8000000 + 040000007702000054040000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34067 + 000000001700000022010000C8000000 + 040000007702000054040000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34068 + 000000001700000022010000C8000000 + 040000007702000054040000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34089 + 000000001700000022010000C8000000 + 040000007702000054040000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34093 + 000000001700000022010000C8000000 + 040000007702000054040000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34102 + 000000001700000022010000C8000000 + 040000007702000054040000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34054 + 000000001700000080020000A8000000 + 00000000000000008002000091000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34055 + 00000000170000000601000078010000 + 04000000300000000201000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34094 + 00000000170000000601000078010000 + 04000000300000000201000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34095 + 00000000170000000601000078010000 + 04000000300000000201000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34057 + 00000000170000000601000078010000 + 00000000000000000601000061010000 + 16384 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34058 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34059 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34060 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34061 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34071 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34072 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34090 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34062 + 00000000170000000601000078010000 + FE04000030000000FC05000041020000 + 16384 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34074 + 00000000170000000601000078010000 + FE04000030000000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34064 + 00000000170000000601000078010000 + 2404000032000000000600005B020000 + 16384 + 0 + 0 + 32767 + 0 + + + 0 + + + 34065 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34069 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34070 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34075 + 00000000170000000601000078010000 + FE04000030000000FC05000041020000 + 16384 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34084 + 00000000170000000601000078010000 + FE04000030000000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34085 + 00000000170000000601000078010000 + FE04000030000000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34086 + 00000000170000000601000078010000 + FE04000030000000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34087 + 00000000170000000601000078010000 + FE04000030000000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34076 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34077 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34078 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34079 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34080 + 000000001700000080020000A8000000 + 00000000000000008002000091000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34082 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34083 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34088 + 00000000170000000601000078010000 + 00000000000000000601000061010000 + 16384 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34091 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34092 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34096 + 00000000170000000601000078010000 + 00000000000000000601000061010000 + 16384 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34098 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34099 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34100 + 00000000170000000601000078010000 + 00000000000000000601000061010000 + 16384 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34101 + 0000000017000000AE010000D8000000 + 0000000000000000AE010000C1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34103 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 34104 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + 34105 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34110 + 00000000170000000601000078010000 + 0000000032000000060100005B020000 + 4096 + 0 + 0 + 32767 + 0 + + + 1 + + + 000000003C000000000000000010000001000000FFFFFFFFFFFFFFFF06010000320000000A0100005B0200000100000002000010040000000100000000000000000000003E85000000000000000000000000000000000000010000003E850000010000003E850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000358500000000000000000000000000000000000001000000358500000100000035850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000348500000000000000000000000000000000000001000000348500000100000034850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000338500000000000000000000000000000000000001000000338500000100000033850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000328500000000000000000000000000000000000001000000328500000100000032850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000308500000000000000000000000000000000000001000000308500000100000030850000000000000080000000000000FFFFFFFFFFFFFFFF00000000A601000000060000AA010000000000000100000004000000010000000000000000000000FFFFFFFF020000002B8500002C850000FFFF02000B004354616262656450616E65008000000000000000000000C1010000000600007202000000000000AA010000000600005B020000000000004080004602000000FFFEFF0E460075006E006300740069006F006E00200054007200610063006500000000002B85000001000000FFFFFFFFFFFFFFFFFFFEFF0554007200610063006500000000002C85000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF2B85000001000000FFFFFFFF2B850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000288500000000000000000000000000000000000001000000288500000100000028850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000238500000000000000000000000000000000000001000000238500000100000023850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000228500000000000000000000000000000000000001000000228500000100000022850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000208500000000000000000000000000000000000001000000208500000100000020850000000000000080000000000000FFFFFFFFFFFFFFFF00000000A601000000060000AA010000000000000100000004000000010000000000000000000000FFFFFFFF040000001C8500001D8500001E8500001F8500000180008000000000000000000000C1010000000600007202000000000000AA010000000600005B020000000000004080004604000000FFFEFF084D0065006D006F007200790020003100000000001C85000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003200000000001D85000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003300000000001E85000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003400000000001F85000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF1C85000001000000FFFFFFFF1C850000000000000040000000000000FFFFFFFFFFFFFFFFF604000018000000FA0400005B020000000000000200000004000000010000000000000000000000FFFFFFFF050000001B8500002485000025850000268500002785000001800040000000000000FA0400002F0000000006000072020000FA04000018000000000600005B020000000000004040004605000000FFFEFF124D006100630072006F00200052006500670069007300740072006100740069006F006E00000000001B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B52006500670069007300740065007200730020003100000000002485000001000000FFFFFFFFFFFFFFFFFFFEFF0B52006500670069007300740065007200730020003200000000002585000001000000FFFFFFFFFFFFFFFFFFFEFF0B52006500670069007300740065007200730020003300000000002685000001000000FFFFFFFFFFFFFFFFFFFEFF0B52006500670069007300740065007200730020003400000000002785000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF1B85000001000000FFFFFFFF1B850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000168500000000000000000000000000000000000001000000168500000100000016850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000158500000000000000000000000000000000000001000000158500000100000015850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000118500000000000000000000000000000000000001000000118500000100000011850000000000000040000000000000FFFFFFFFFFFFFFFF2004000032000000240400005B0200000000000002000000040000000100000096FCFFFF32010000108500000000000000000000000000000000000001000000108500000100000010850000000000000040000000000000FFFFFFFFFFFFFFFFF604000018000000FA0400005B020000000000000200000004000000010000000000000000000000FFFFFFFF020000000E8500001A85000001800040000000000000FA0400002F0000000006000072020000FA04000018000000000600005B020000000000004040004602000000FFFEFF0F4400650062007500670067006500720020004D006100630072006F007300000000000E85000001000000FFFFFFFFFFFFFFFFFFFEFF114D006100630072006F00200051007500690063006B006C00610075006E0063006800000000001A85000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF0E85000001000000FFFFFFFF0E850000000000000080000000000000FFFFFFFFFFFFFFFF00000000A601000000060000AA010000000000000100000004000000010000000000000000000000FFFFFFFF040000000D85000017850000188500002A8500000180008000000000000000000000C1010000000600007202000000000000AA010000000600005B020000000000004080004604000000FFFEFF10440061007400610020004C006F0067002000530075006D006D00610072007900000000000D85000001000000FFFFFFFFFFFFFFFFFFFEFF0D49006E00740065007200720075007000740020004C006F006700000000001785000001000000FFFFFFFFFFFFFFFFFFFEFF1549006E00740065007200720075007000740020004C006F0067002000530075006D006D00610072007900000000001885000001000000FFFFFFFFFFFFFFFFFFFEFF08440061007400610020004C006F006700000000002A85000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF0D85000001000000FFFFFFFF0D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000B85000000000000000000000000000000000000010000000B850000010000000B850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000A85000000000000000000000000000000000000010000000A850000010000000A850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000098500000000000000000000000000000000000001000000098500000100000009850000000000000010000000000000FFFFFFFFFFFFFFFF06010000180000000A0100005B020000000000000200000004000000010000000000000000000000FFFFFFFF03000000078500002E8500002F85000001800010000000000000000000002F00000006010000720200000000000018000000060100005B020000000000004010004603000000FFFEFF0A430061006C006C00200053007400610063006B00000000000785000001000000FFFFFFFFFFFFFFFFFFFEFF0753007400610063006B0020003100000000002E85000001000000FFFFFFFFFFFFFFFFFFFEFF0753007400610063006B0020003200000000002F85000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF0785000001000000FFFFFFFF07850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000001000000FFFFFFFFFFFFFFFF000000005B020000580400005F020000010000000100001004000000010000000000000000000000FFFFFFFF0900000005850000088500000F850000128500001385000014850000298500002D850000368500000180008000000100000000000000760200005804000027030000000000005F0200005804000010030000000000004080005609000000FFFEFF054200750069006C006400010000000585000001000000FFFFFFFFFFFFFFFFFFFEFF1343004D0061006B0065002F0043004D005300490053002D0054006F006F006C0062006F007800000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000F85000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000001285000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000001385000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000001485000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000002985000001000000FFFFFFFFFFFFFFFFFFFEFF12260053006F0075007200630065002000420072006F0077007300650020004C006F006700000000002D85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000003685000001000000FFFFFFFFFFFFFFFF02000000000000000000000000000000000000000000000001000000FFFFFFFF0585000001000000FFFFFFFF05850000000000000080000000000000FFFFFFFFFFFFFFFF000000005B020000000600005F020000000000000100000004000000010000000000000000000000FFFFFFFF0200000004850000218500000180008000000000000000000000760200000006000027030000000000005F0200000006000010030000000000004080004602000000FFFEFF0B42007200650061006B0070006F0069006E0074007300000000000485000001000000FFFFFFFFFFFFFFFFFFFEFF1042007200650061006B0070006F0069006E007400200055007300610067006500000000002185000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF0485000001000000FFFFFFFF04850000000000000040000001000000FFFFFFFFFFFFFFFF58040000320000005C0400001003000001000000020000100400000001000000E3FCFFFF7F010000FFFFFFFF070000000385000019850000318500003A8500003B8500003C8500003D850000018000400000010000005C0400004900000000060000270300005C040000320000000006000010030000000000004040005607000000FFFEFF044100750074006F00000000000385000001000000FFFFFFFFFFFFFFFFFFFEFF064C006F00630061006C007300000000001985000001000000FFFFFFFFFFFFFFFFFFFEFF0A4C00690076006500200057006100740063006800010000003185000001000000FFFFFFFFFFFFFFFFFFFEFF075700610074006300680020003100000000003A85000001000000FFFFFFFFFFFFFFFFFFFEFF075700610074006300680020003200000000003B85000001000000FFFFFFFFFFFFFFFFFFFEFF075700610074006300680020003300000000003C85000001000000FFFFFFFFFFFFFFFFFFFEFF075700610074006300680020003400000000003D85000001000000FFFFFFFFFFFFFFFF02000000000000000000000000000000000000000000000001000000FFFFFFFF0385000001000000FFFFFFFF03850000000000000080000000000000FFFFFFFFFFFFFFFF00000000A601000000060000AA010000000000000100000004000000010000000000000000000000FFFFFFFF0200000042850000438500000180008000000000000000000000C1010000000600007202000000000000AA010000000600005B020000000000004080004602000000FFFEFF09530057004F00200054007200610063006500000000004285000001000000FFFFFFFFFFFFFFFFFFFEFF11460069006E006400200049006E002000530057004F00200054007200610063006500000000004385000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF4285000001000000FFFFFFFF42850000000000000080000000000000FFFFFFFFFFFFFFFF00000000A601000000060000AA010000000000000100000004000000010000000000000000000000FFFFFFFF0200000040850000418500000180008000000000000000000000C1010000000600007202000000000000AA010000000600005B020000000000004080004602000000FFFEFF094500760065006E00740020004C006F006700000000004085000001000000FFFFFFFFFFFFFFFFFFFEFF114500760065006E00740020004C006F0067002000530075006D006D00610072007900000000004185000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF4085000001000000FFFFFFFF40850000000000000000000000000000 + + + CMSIS-Pack + 00200000010000000100FFFF01001100434D4643546F6F6C426172427574746F6ED184000002000000AC0F0000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF0A43004D005300490053002D005000610063006B0018000000 + + + 34048 + 0A0000000A0000006E0000006E000000 + 6704000000000000950400001A000000 + 8192 + 0 + 0 + 24 + 0 + + + 1 + + + Debug + 00200000010000000900FFFF01001100434D4643546F6F6C426172427574746F6E1286000002000200C60F0000FFFEFF00000000000000000000000000010000000100000001805686000002000400CB0F0000FFFEFF00000000000000000000000000010000000100000001801386000002000400C70F0000FFFEFF00000000000000000000000000010000000100000001805E86000002000400CD0F0000FFFEFF00000000000000000000000000010000000100000001806086000002000400CF0F0000FFFEFF00000000000000000000000000010000000100000001805D86000002000400CC0F0000FFFEFF00000000000000000000000000010000000100000001801086000002000400C40F0000FFFEFF00000000000000000000000000010000000100000001801186000002000000C50F0000FFFEFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E1486000002000400C80F0000FFFEFF205200650073006500740020007400680065002000640065006200750067006700650064002000700072006F006700720061006D000A0052006500730065007400000000000000000000000000010000000100000000000000000000000100000006000A802087000000000000FFFFFFFFFFFEFF06530079007300740065006D00010000000000000000000000010000000100000000000000000000000100000000000A802387000000000000FFFFFFFFFFFEFF0443006F0072006500010000000000000000000000010000000100000000000000000000000100000000000A802487000000000000FFFFFFFFFFFEFF0853006F00660074007700610072006500010000000000000000000000010000000100000000000000000000000100000000000A802187000000000000FFFFFFFFFFFEFF12480061007200640077006100720065002000720065007300650074002000700069006E00010000000000000000000000010000000100000000000000000000000100000000000A800000000000000400FFFFFFFFFFFEFF00000000000000000000000000010000000100000000000000000000000100000000000A801986000000000000FFFFFFFFFFFEFF000100000000000000000000000100000001000000000000000000000001000000000000000000FFFEFF0544006500620075006700DD000000 + + + 34049 + 0A0000000A0000006E0000006E000000 + 3A030000000000002D0400001A000000 + 8192 + 0 + 0 + 221 + 0 + + + 1 + + + Main + 00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000013100000FFFEFF000000000000000000000000000100000001000000018001E100000000000014100000FFFEFF000000000000000000000000000100000001000000018003E100000000040016100000FFFEFF00000000000000000000000000010000000100000001800081000000000000F30F0000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000040019100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004001B100000FFFEFF000000000000000000000000000100000001000000018022E10000000004001A100000FFFEFF000000000000000000000000000100000001000000018025E10000000004001C100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE10000000004001D100000FFFEFF00000000000000000000000000010000000100000001802CE10000000004001E100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01000D005061737465436F6D626F426F784281000000000400FFFFFFFFFFFEFF000100000000000000010000000000000001000000B400000002002050FFFFFFFFFFFEFF00960000000000000000000180218100000000040004100000FFFEFF000000000000000000000000000100000001000000018024E10000000004000C100000FFFEFF000000000000000000000000000100000001000000018028E10000000004000B100000FFFEFF000000000000000000000000000100000001000000018029E10000000004000D100000FFFEFF00000000000000000000000000010000000100000001800281000000000400F40F0000FFFEFF0000000000000000000000000001000000010000000180298100000000040008100000FFFEFF0000000000000000000000000001000000010000000180278100000000040006100000FFFEFF0000000000000000000000000001000000010000000180288100000000040007100000FFFEFF00000000000000000000000000010000000100000001801D8100000000040000100000FFFEFF00000000000000000000000000010000000100000001801E8100000000040001100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B81000002000000F70F0000FFFEFF00000000000000000000000000010000000100000001800C81000002000000F80F0000FFFEFF00000000000000000000000000010000000100000001805F860000020004000A100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F8100000200000002100000FFFEFF0000000000000000000000000001000000010000000180208100000200000003100000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E0024030000 + + + 34050 + 0A0000000A0000006E0000006E000000 + 00000000000000003A0300001A000000 + 8192 + 0 + 0 + 804 + 0 + + + 1 + + + + 37459 + 37460 + + + + 34112 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34113 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34114 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34115 + 000000001700000022010000C8000000 + 04000000C2010000FC05000041020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + Trace + 00200000010000000200FFFF01001100434D4643546F6F6C426172427574746F6E539200000000040032100000FFFEFF03450054004D0000000000000000000000000001000000010000000180549200000000000033100000FFFEFF03530057004F00000000000000000000000000010000000100000000000000FFFEFF05540072006100630065002F000000 + + + 34111 + 0A0000000A0000006E0000006E000000 + 2D04000000000000670400001A000000 + 8192 + 0 + 0 + 47 + 0 + + + 1 + + + + diff --git a/settings/fft_az.dnx b/settings/fft_az.dnx new file mode 100644 index 0000000..1b8efc8 --- /dev/null +++ b/settings/fft_az.dnx @@ -0,0 +1,157 @@ + + + + 1 + 10 + $PROJ_DIR$\TermIOInput.txt + 1 + 0 + 0 + 0 + + + 0 + 1 + 90 + 1 + 1 + 1 + main + 0 + 50 + + + 0 + 1 + + + 636460332 + + + 1 + 0 + + + 0 + + + _ 0 + _ 0 + + + 1 + + + 1 + 0 + 1 + 0 + 1 + + + 10000000 + 0 + 1 + + + 37FF71064E57343663691343 + + _ 0 + _ 0 + 0 + 0 + + + 0 + C:\iar\ewarm-9.70.1\arm\config\debugger\ST\STM32G431CB.ddf + + + 0 + 170000000 + 1 + 2000000 + 2000000 + 85 + 0 + 0 + 1 + 15 + 0 + 0 + 0 + 0 + 0 + $PROJ_DIR$\ITM.log + + + 1 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 1 + 0 + 1 + + + 0 + 0 + 1 + 0 + 1 + 0 + + + 0 + 0 + 1 + Ch3 + 0 0 1 + Ch2 + 0 0 1 + Ch1 + 0 0 1 + Ch0 + 0 0 1 + 0 + 1 + 0 + + + 0 + 3 + 0 + 0 + + + + 0 + 0 + 1 + + + _ 0 + _ "" + + + 0 + + + 0 + + diff --git a/settings/fft_az.wsdt b/settings/fft_az.wsdt new file mode 100644 index 0000000..1036429 --- /dev/null +++ b/settings/fft_az.wsdt @@ -0,0 +1,496 @@ + + + + + fft_az/Debug + + + + + 34048 + 34049 + 34050 + 34051 + 34052 + 34053 + 34054 + 34055 + 34056 + 34057 + 34058 + 34059 + 34060 + 34061 + 34062 + 34063 + 34064 + 34065 + 34066 + + + + + 34001 + 0 + + + + + 57600 + 57601 + 57603 + 33024 + 0 + 57607 + 0 + 57635 + 57634 + 57637 + 0 + 57643 + 57644 + 0 + 33090 + 33057 + 57636 + 57640 + 57641 + 33026 + 33065 + 33063 + 33064 + 33053 + 33054 + 0 + 33035 + 33036 + 34399 + 0 + 33038 + 33039 + 0 + + + + + fft_az + + + + + Log + _I0 + + + 1062 + 20 + + 2 + $PROJ_DIR$\DebugLog.log + 0 + 0 + + + 14 + 42 + + + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 54010000210013970000170000002497000001000000108600002100000015810000040000005F860000010000000C810000B400000001E10000010000003A97000002000000159700001C000000038400000100000012860000180000001297000026000000178100000700000056860000010000003197000003000000148100000200000000810000050000000E810000820000001F810000080000000B81000012000000289700000100000000E100000200000014860000060000000584000002000000149700001900000011860000130000000284000003000000058100000200000032840000010000001084000003000000549200000200000002E10000020000001697000001000000 + + + 3B00FFFFFFFF2AE10000008200001C820000338200000182000077840000078400007F84000088840000878400008A840000868400000D8400000F84000008840000FE830000FF830000FD83000054840000328100001C810000098400005D9700006797000042970000439700003C8400003D840000408400004C8400003E8400004B8400004D8400003F8400003A8400003B8400005A8400005B8400005384000008800000098000000A8000000B8000000C800000158000000A81000001E800000C84000033840000788400003B85000077970000008800000188000002880000038800000488000005880000 + 6A0004840000590C0000359700000D1700001397000074000000469700003A0A000024970000001700002CE10000C70D0000158100007C0C000032970000051700008984000004000000318400009F00000007E10000980C0000409700009C1A000045810000050000000D9700001118000051970000D417000020810000740000000F8100006C00000004E10000960C00002C970000881A00001B970000810000003D970000450A00000C8100006900000007970000BA0D000023E10000C40D000001E10000930C00000D800000710C000029970000841A0000189700007C0000005C970000D7030000068400005B0C000019820000960D00001597000075000000098100005B06000059970000CE030000269700000217000037970000400A0000038400009700000016820000940D0000178100007E0C00003497000007170000239700007E1A0000129700007300000045970000390A00002BE10000C60D0000148100007B0C00005397000011000000319700000417000000840000940000000E8400005D0C0000308400005F0C000000810000720C00003F9700009B1A000044810000020000001F810000730000000E8100006B0000002F820000970D000025E10000C50D000003E10000950C00002B970000921A00001A9700007B0000003C970000440A00000B810000EE0C000006970000B90D000022E10000C30D000000E10000920C000039970000961A000028970000871A000017970000760000005B970000D50300005D84000001000000D18400005B000000058400009900000018820000950D000041E100009F0C000036970000931A0000149700007700000058970000D303000025970000011700000284000096000000168100007D0C0000339700000617000066970000440100000581000097060000559700000E040000108400009D00000032840000A0000000419700009D1A000005E10000970C000051840000630C00003E9700009A1A00001C9700008000000043810000030000000A8400009B0000000D810000F00C000002E10000940C00002A970000911A0000199700007E00000035E10000840600003B970000430A0000089700003218000005970000B1060000169700007A0000005A970000CF0300005C84000000000000279700000317000038970000410A0000 + + + 0 + 0A0000000A0000006E0000006E000000 + 00000000100300000006000021030000 + 4096 + 0 + 0 + 32767 + 0 + + + 1 + + + 4294967295 + 000000007D0200000006000027030000 + 00000000660200000006000010030000 + 4096 + 0 + 0 + 32767 + 0 + + + 1 + + + 34050 + 000000001700000022010000C8000000 + 040000007E020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 1 + + + + File + Line + Messages + _I0 + + + 455 + 40 + 1007 + 20 + + 2 + C:\Users\vadychka\Documents\GitHub\leybl\www\BuildLog.log + 0 + 0 + + + 34052 + 000000001700000022010000C8000000 + 040000007E020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34054 + 000000001700000022010000C8000000 + 040000007E020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 533 + 76 + 914 + 2 + + 0 + -1 + + + 34055 + 000000001700000022010000C8000000 + 040000007E020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 533 + 76 + 914 + 2 + + 0 + -1 + + + 34056 + 000000001700000022010000C8000000 + 040000007E020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34058 + 000000001700000022010000C8000000 + 040000007E020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + 533 + 76 + 914 + 2 + + 0 + -1 + + + 34059 + 000000001700000022010000C8000000 + 040000007E020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34060 + 000000001700000022010000C8000000 + 040000007E020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34064 + 000000001700000022010000C8000000 + 040000007E020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 1 + + + 34051 + 000000001700000080020000A8000000 + 000000009A010000000600002B020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + File + Function + Line + + + 200 + 700 + 100 + + + + 34053 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + + Check + File + Line + Message + Severity + + + 200 + 200 + 100 + 500 + 100 + + + + 34057 + 000000001700000080020000A8000000 + 00000000000000008002000091000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + Detail + Name + Symbol type + + + 150 + 150 + 150 + + + + 34061 + 00000000170000000601000078010000 + 00000000320000000601000062020000 + 4096 + 0 + 0 + 32767 + 0 + + + 1 + + + 34062 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34063 + 000000001700000022010000C8000000 + 000000000000000022010000B1000000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34065 + 000000001700000022010000C8000000 + 0E01000077020000FC050000F6020000 + 32768 + 0 + 0 + 32767 + 0 + + + 0 + + + + 34066 + 000000001700000022010000C8000000 + 0E01000077020000FC050000F6020000 + 4096 + 0 + 0 + 32767 + 0 + + + 0 + + + + 000000000E000000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000F85000000000000000000000000000000000000010000000F850000010000000F850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000E85000000000000000000000000000000000000010000000E850000010000000E850000000000000010000001000000FFFFFFFFFFFFFFFF06010000320000000A010000620200000100000002000010040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000098500000000000000000000000000000000000001000000098500000100000009850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000000000000FFFFFFFFFFFFFFFF0000000096010000000600009A010000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000080000001000000FFFFFFFFFFFFFFFF00000000620200000006000066020000010000000100001004000000010000000CFEFFFF9F000000FFFFFFFF0900000002850000048500000685000007850000088500000A8500000B8500000C85000010850000FFFF02000B004354616262656450616E650080000001000000000000007D020000000600002703000000000000660200000006000010030000000000004080005609000000FFFEFF054200750069006C006400010000000285000001000000FFFFFFFFFFFFFFFFFFFEFF1343004D0061006B0065002F0043004D005300490053002D0054006F006F006C0062006F007800000000000485000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000000685000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000785000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF12260053006F0075007200630065002000420072006F0077007300650020004C006F006700000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000C85000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000001085000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFF0285000001000000FFFFFFFF02850000000000000000000000000000 + + + CMSIS-Pack + 00200000010000000100FFFF01001100434D4643546F6F6C426172427574746F6ED18400000200000034100000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF0A43004D005300490053002D005000610063006B0018000000 + + + 34048 + 0A0000000A0000006E0000006E000000 + 3A03000000000000680300001A000000 + 8192 + 0 + 0 + 24 + 0 + + + 1 + + + Main + 00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000069100000FFFEFF000000000000000000000000000100000001000000018001E10000000000006A100000FFFEFF000000000000000000000000000100000001000000018003E10000000000006C100000FFFEFF0000000000000000000000000001000000010000000180008100000000000049100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000006F100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040071100000FFFEFF000000000000000000000000000100000001000000018022E100000000040070100000FFFEFF000000000000000000000000000100000001000000018025E100000000000072100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000000073100000FFFEFF00000000000000000000000000010000000100000001802CE100000000040074100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01000D005061737465436F6D626F426F784281000000000000FFFFFFFFFFFEFF000000000000000000010000000000000001000000B400000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004005A100000FFFEFF000000000000000000000000000100000001000000018024E100000000000062100000FFFEFF000000000000000000000000000100000001000000018028E100000000040061100000FFFEFF000000000000000000000000000100000001000000018029E100000000040063100000FFFEFF000000000000000000000000000100000001000000018002810000000000004A100000FFFEFF000000000000000000000000000100000001000000018029810000000000005E100000FFFEFF000000000000000000000000000100000001000000018027810000000000005C100000FFFEFF000000000000000000000000000100000001000000018028810000000000005D100000FFFEFF00000000000000000000000000010000000100000001801D8100000000040056100000FFFEFF00000000000000000000000000010000000100000001801E8100000000040057100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000020004004D100000FFFEFF00000000000000000000000000010000000100000001800C810000020000004E100000FFFEFF00000000000000000000000000010000000100000001805F8600000200000060100000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000200000050100000FFFEFF00000000000000000000000000010000000100000001800F8100000200000051100000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E0024030000 + + + 34049 + 0A0000000A0000006E0000006E000000 + 00000000000000003A0300001A000000 + 8192 + 0 + 0 + 804 + 0 + + + 1 + + + + + 0100000003000000010000000000000000000000010000000100000002000000000000000100000001000000000000002800000028000000010000000C0000000A00000001000000FFFEFF162400570053005F0044004900520024005C00730074006D00330032006700340033003100780078002E00680001000000FFFF010017004966436F6E74656E7453746F726167654D6663496D706CFFFEFF00FFFEFFFF22013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E003100340037003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0D730074006D00330032006700340033003100780078002E00680000000000FFFFFFFFFFFFFFFFFFFEFF1B2400570053005F0044004900520024005C00730079007300740065006D005F00730074006D003300320067003400780078002E006300010000000180FFFEFF00FFFEFFFF20013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0030003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF12730079007300740065006D005F00730074006D003300320067003400780078002E00630000000000FFFFFFFFFFFFFFFFFFFEFF1E2400570053005F0044004900520024005C0073007400610072007400750070005F00730074006D00330032006700340033003100780078002E007300010000000180FFFEFF00FFFEFFFF20013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0030003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF1573007400610072007400750070005F00730074006D00330032006700340033003100780078002E00730000000000FFFFFFFFFFFFFFFFFFFEFF1B2400570053005F0044004900520024005C00730079007300740065006D005F00730074006D003300320067003400780078002E006800010000000180FFFEFF00FFFEFFFF20013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0030003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF12730079007300740065006D005F00730074006D003300320067003400780078002E00680000000000FFFFFFFFFFFFFFFFFFFEFF142400570053005F0044004900520024005C00730074006D003300320067003400780078002E006800010000000180FFFEFF00FFFEFFFF20013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0030003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0B730074006D003300320067003400780078002E00680000000000FFFFFFFFFFFFFFFFFFFEFF0E2400570053005F0044004900520024005C0069006D0075002E006300010000000180FFFEFF00FFFEFFFF27013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E00310031003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0032003600340033003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0032003600340033003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0569006D0075002E00630000000000FFFFFFFFFFFFFFFFFFFEFF0E2400570053005F0044004900520024005C0069006D0075002E006800010000000180FFFEFF00FFFEFFFF24013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0030003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E003600320036003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E003600320036003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0569006D0075002E00680000000000FFFFFFFFFFFFFFFFFFFEFF0F2400570053005F0044004900520024005C006D00610069006E002E006300010000000180FFFEFF00FFFEFFFF25013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E00360038003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E003600390033003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E003600390033003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF066D00610069006E002E00630000000000FFFFFFFFFFFFFFFFFFFEFF182400570053005F0044004900520024005C002E002E005C007700770077005C006D006F0074006F00720073002E006300010000000180FFFEFF00FFFEFFFF27013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E00320038003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0031003100320037003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0031003100320037003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF086D006F0074006F00720073002E00630000000000FFFFFFFFFFFFFFFFFFFEFF182400570053005F0044004900520024005C002E002E005C007700770077005C006D006F0074006F00720073002E006800010000000180FFFEFF00FFFEFFFF20013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0030003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF086D006F0074006F00720073002E00680000000000FFFFFFFFFFFFFFFFFFFEFF162400570053005F0044004900520024005C006400730070005F006D0061006E0061006700650072002E006300010000000180FFFEFF00FFFEFFFF26013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0030003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0031003200360033003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0031003200360033003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0F6400730070005F006D0061006E0061006700650072002E00630020002A0000000000FFFFFFFFFFFFFFFFFFFEFF162400570053005F0044004900520024005C006400730070005F006D0061006E0061006700650072002E006800010000000180FFFEFF00FFFEFFFF24013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0030003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E003100360030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E003100360030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0D6400730070005F006D0061006E0061006700650072002E00680000000000FFFFFFFFFFFFFFFF0000000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000001000000020000000A010000490000000006000079020000 + + + + diff --git a/settings/fft_az_EditorBookmarks.xml b/settings/fft_az_EditorBookmarks.xml new file mode 100644 index 0000000..38c3485 --- /dev/null +++ b/settings/fft_az_EditorBookmarks.xml @@ -0,0 +1,2 @@ + + diff --git a/startup_stm32g431xx.s b/startup_stm32g431xx.s new file mode 100644 index 0000000..b8d1f30 --- /dev/null +++ b/startup_stm32g431xx.s @@ -0,0 +1,585 @@ +;******************************************************************************* +;* @File Name : startup_stm32g431xx.s +;* @Author : MCD Application Team +;* @Brief : STM32G431xx Devices vector +;******************************************************************************* +;* Description : This module performs: +;* - Set the initial SP +;* - Set the initial PC == _iar_program_start, +;* - Set the vector table entries with the exceptions ISR +;* address. +;* - Branches to main in the C library (which eventually +;* calls main()). +;* After Reset the Cortex-M4 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;******************************************************************************** +;* @attention +;* +;* Copyright (c) 2019 STMicroelectronics. +;* All rights reserved. +;* +;* This software is licensed under terms that can be found in the LICENSE file +;* in the root directory of this software component. +;* If no LICENSE file comes with this software, it is provided AS-IS. +; +;******************************************************************************* +; +; The modules in this file are included in the libraries, and may be replaced +; by any user-defined modules that define the PUBLIC symbol _program_start or +; a user defined start symbol. +; To override the cstartup defined in the library, simply add your modified +; version to the workbench project. +; +; The vector table is normally located at address 0. +; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. +; The name "__vector_table" has special meaning for C-SPY: +; it is where the SP start value is found, and the NVIC vector +; table register (VTOR) is initialized to this address if != 0. +; +; Cortex-M version +; + + MODULE ?cstartup + + ;; Forward declaration of sections. + SECTION CSTACK:DATA:NOROOT(3) + + SECTION .intvec:CODE:NOROOT(2) + + EXTERN __iar_program_start + EXTERN SystemInit + PUBLIC __vector_table + + DATA +__vector_table + DCD sfe(CSTACK) + DCD Reset_Handler ; Reset Handler + + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window WatchDog + DCD PVD_PVM_IRQHandler ; PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection + DCD RTC_TAMP_LSECSS_IRQHandler ; RTC, TAMP and RCC LSE_CSS through the EXTI line + DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line0 + DCD EXTI1_IRQHandler ; EXTI Line1 + DCD EXTI2_IRQHandler ; EXTI Line2 + DCD EXTI3_IRQHandler ; EXTI Line3 + DCD EXTI4_IRQHandler ; EXTI Line4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD 0 ; Reserved + DCD ADC1_2_IRQHandler ; ADC1 and ADC2 + DCD USB_HP_IRQHandler ; USB Device High Priority + DCD USB_LP_IRQHandler ; USB Device Low Priority + DCD FDCAN1_IT0_IRQHandler ; FDCAN1 interrupt line 0 + DCD FDCAN1_IT1_IRQHandler ; FDCAN1 interrupt line 1 + DCD EXTI9_5_IRQHandler ; External Line[9:5]s + DCD TIM1_BRK_TIM15_IRQHandler ; TIM1 Break, Transition error, Index error and TIM15 + DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 + DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger, Commutation, Direction change, Index and TIM17 + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; External Line[15:10] + DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line + DCD USBWakeUp_IRQHandler ; USB Wakeup through EXTI line + DCD TIM8_BRK_IRQHandler ; TIM8 Break, Transition error and Index error Interrupt + DCD TIM8_UP_IRQHandler ; TIM8 Update Interrupt + DCD TIM8_TRG_COM_IRQHandler ; TIM8 Trigger, Commutation, Direction change and Index Interrupt + DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare Interrupt + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD LPTIM1_IRQHandler ; LP TIM1 interrupt + DCD 0 ; Reserved + DCD SPI3_IRQHandler ; SPI3 + DCD UART4_IRQHandler ; UART4 + DCD 0 ; Reserved + DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&3 underrun errors + DCD TIM7_IRQHandler ; TIM7 + DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 + DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 + DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 + DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 + DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD UCPD1_IRQHandler ; UCPD1 + DCD COMP1_2_3_IRQHandler ; COMP1, COMP2 and COMP3 + DCD COMP4_IRQHandler ; COMP4 + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD CRS_IRQHandler ; CRS Interrupt + DCD SAI1_IRQHandler ; Serial Audio Interface 1 global interrupt + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD FPU_IRQHandler ; FPU + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD RNG_IRQHandler ; RNG global interrupt + DCD LPUART1_IRQHandler ; LP UART 1 interrupt + DCD I2C3_EV_IRQHandler ; I2C3 Event + DCD I2C3_ER_IRQHandler ; I2C3 Error + DCD DMAMUX_OVR_IRQHandler ; DMAMUX overrun global interrupt + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD CORDIC_IRQHandler ; CORDIC + DCD FMAC_IRQHandler ; FMAC + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Default interrupt handlers. +;; + THUMB + PUBWEAK Reset_Handler + SECTION .text:CODE:NOROOT:REORDER(2) +Reset_Handler + LDR R0, =SystemInit + BLX R0 + LDR R0, =__iar_program_start + BX R0 + + PUBWEAK NMI_Handler + SECTION .text:CODE:NOROOT:REORDER(1) +NMI_Handler + B NMI_Handler + + PUBWEAK HardFault_Handler + SECTION .text:CODE:NOROOT:REORDER(1) +HardFault_Handler + B HardFault_Handler + + PUBWEAK MemManage_Handler + SECTION .text:CODE:NOROOT:REORDER(1) +MemManage_Handler + B MemManage_Handler + + PUBWEAK BusFault_Handler + SECTION .text:CODE:NOROOT:REORDER(1) +BusFault_Handler + B BusFault_Handler + + PUBWEAK UsageFault_Handler + SECTION .text:CODE:NOROOT:REORDER(1) +UsageFault_Handler + B UsageFault_Handler + + PUBWEAK SVC_Handler + SECTION .text:CODE:NOROOT:REORDER(1) +SVC_Handler + B SVC_Handler + + PUBWEAK DebugMon_Handler + SECTION .text:CODE:NOROOT:REORDER(1) +DebugMon_Handler + B DebugMon_Handler + + PUBWEAK PendSV_Handler + SECTION .text:CODE:NOROOT:REORDER(1) +PendSV_Handler + B PendSV_Handler + + PUBWEAK SysTick_Handler + SECTION .text:CODE:NOROOT:REORDER(1) +SysTick_Handler + B SysTick_Handler + + PUBWEAK WWDG_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +WWDG_IRQHandler + B WWDG_IRQHandler + + PUBWEAK PVD_PVM_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +PVD_PVM_IRQHandler + B PVD_PVM_IRQHandler + + PUBWEAK RTC_TAMP_LSECSS_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +RTC_TAMP_LSECSS_IRQHandler + B RTC_TAMP_LSECSS_IRQHandler + + PUBWEAK RTC_WKUP_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +RTC_WKUP_IRQHandler + B RTC_WKUP_IRQHandler + + PUBWEAK FLASH_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +FLASH_IRQHandler + B FLASH_IRQHandler + + PUBWEAK RCC_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +RCC_IRQHandler + B RCC_IRQHandler + + PUBWEAK EXTI0_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +EXTI0_IRQHandler + B EXTI0_IRQHandler + + PUBWEAK EXTI1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +EXTI1_IRQHandler + B EXTI1_IRQHandler + + PUBWEAK EXTI2_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +EXTI2_IRQHandler + B EXTI2_IRQHandler + + PUBWEAK EXTI3_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +EXTI3_IRQHandler + B EXTI3_IRQHandler + + PUBWEAK EXTI4_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +EXTI4_IRQHandler + B EXTI4_IRQHandler + + PUBWEAK DMA1_Channel1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA1_Channel1_IRQHandler + B DMA1_Channel1_IRQHandler + + PUBWEAK DMA1_Channel2_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA1_Channel2_IRQHandler + B DMA1_Channel2_IRQHandler + + PUBWEAK DMA1_Channel3_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA1_Channel3_IRQHandler + B DMA1_Channel3_IRQHandler + + PUBWEAK DMA1_Channel4_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA1_Channel4_IRQHandler + B DMA1_Channel4_IRQHandler + + PUBWEAK DMA1_Channel5_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA1_Channel5_IRQHandler + B DMA1_Channel5_IRQHandler + + PUBWEAK DMA1_Channel6_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA1_Channel6_IRQHandler + B DMA1_Channel6_IRQHandler + + PUBWEAK ADC1_2_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +ADC1_2_IRQHandler + B ADC1_2_IRQHandler + + PUBWEAK USB_HP_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +USB_HP_IRQHandler + B USB_HP_IRQHandler + + PUBWEAK USB_LP_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +USB_LP_IRQHandler + B USB_LP_IRQHandler + + PUBWEAK FDCAN1_IT0_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +FDCAN1_IT0_IRQHandler + B FDCAN1_IT0_IRQHandler + + PUBWEAK FDCAN1_IT1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +FDCAN1_IT1_IRQHandler + B FDCAN1_IT1_IRQHandler + + PUBWEAK EXTI9_5_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +EXTI9_5_IRQHandler + B EXTI9_5_IRQHandler + + PUBWEAK TIM1_BRK_TIM15_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM1_BRK_TIM15_IRQHandler + B TIM1_BRK_TIM15_IRQHandler + + PUBWEAK TIM1_UP_TIM16_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM1_UP_TIM16_IRQHandler + B TIM1_UP_TIM16_IRQHandler + + PUBWEAK TIM1_TRG_COM_TIM17_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM1_TRG_COM_TIM17_IRQHandler + B TIM1_TRG_COM_TIM17_IRQHandler + + PUBWEAK TIM1_CC_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM1_CC_IRQHandler + B TIM1_CC_IRQHandler + + PUBWEAK TIM2_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM2_IRQHandler + B TIM2_IRQHandler + + PUBWEAK TIM3_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM3_IRQHandler + B TIM3_IRQHandler + + PUBWEAK TIM4_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM4_IRQHandler + B TIM4_IRQHandler + + PUBWEAK I2C1_EV_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +I2C1_EV_IRQHandler + B I2C1_EV_IRQHandler + + PUBWEAK I2C1_ER_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +I2C1_ER_IRQHandler + B I2C1_ER_IRQHandler + + PUBWEAK I2C2_EV_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +I2C2_EV_IRQHandler + B I2C2_EV_IRQHandler + + PUBWEAK I2C2_ER_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +I2C2_ER_IRQHandler + B I2C2_ER_IRQHandler + + PUBWEAK SPI1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +SPI1_IRQHandler + B SPI1_IRQHandler + + PUBWEAK SPI2_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +SPI2_IRQHandler + B SPI2_IRQHandler + + PUBWEAK USART1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +USART1_IRQHandler + B USART1_IRQHandler + + PUBWEAK USART2_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +USART2_IRQHandler + B USART2_IRQHandler + + PUBWEAK USART3_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +USART3_IRQHandler + B USART3_IRQHandler + + PUBWEAK EXTI15_10_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +EXTI15_10_IRQHandler + B EXTI15_10_IRQHandler + + PUBWEAK RTC_Alarm_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +RTC_Alarm_IRQHandler + B RTC_Alarm_IRQHandler + + PUBWEAK USBWakeUp_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +USBWakeUp_IRQHandler + B USBWakeUp_IRQHandler + + PUBWEAK TIM8_BRK_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM8_BRK_IRQHandler + B TIM8_BRK_IRQHandler + + PUBWEAK TIM8_UP_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM8_UP_IRQHandler + B TIM8_UP_IRQHandler + + PUBWEAK TIM8_TRG_COM_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM8_TRG_COM_IRQHandler + B TIM8_TRG_COM_IRQHandler + + PUBWEAK TIM8_CC_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM8_CC_IRQHandler + B TIM8_CC_IRQHandler + + PUBWEAK LPTIM1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +LPTIM1_IRQHandler + B LPTIM1_IRQHandler + + PUBWEAK SPI3_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +SPI3_IRQHandler + B SPI3_IRQHandler + + PUBWEAK UART4_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +UART4_IRQHandler + B UART4_IRQHandler + + PUBWEAK TIM6_DAC_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM6_DAC_IRQHandler + B TIM6_DAC_IRQHandler + + PUBWEAK TIM7_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +TIM7_IRQHandler + B TIM7_IRQHandler + + PUBWEAK DMA2_Channel1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA2_Channel1_IRQHandler + B DMA2_Channel1_IRQHandler + + PUBWEAK DMA2_Channel2_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA2_Channel2_IRQHandler + B DMA2_Channel2_IRQHandler + + PUBWEAK DMA2_Channel3_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA2_Channel3_IRQHandler + B DMA2_Channel3_IRQHandler + + PUBWEAK DMA2_Channel4_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA2_Channel4_IRQHandler + B DMA2_Channel4_IRQHandler + + PUBWEAK DMA2_Channel5_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA2_Channel5_IRQHandler + B DMA2_Channel5_IRQHandler + + PUBWEAK UCPD1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +UCPD1_IRQHandler + B UCPD1_IRQHandler + + PUBWEAK COMP1_2_3_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +COMP1_2_3_IRQHandler + B COMP1_2_3_IRQHandler + + PUBWEAK COMP4_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +COMP4_IRQHandler + B COMP4_IRQHandler + + PUBWEAK CRS_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +CRS_IRQHandler + B CRS_IRQHandler + + PUBWEAK SAI1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +SAI1_IRQHandler + B SAI1_IRQHandler + + PUBWEAK FPU_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +FPU_IRQHandler + B FPU_IRQHandler + + PUBWEAK RNG_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +RNG_IRQHandler + B RNG_IRQHandler + + PUBWEAK LPUART1_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +LPUART1_IRQHandler + B LPUART1_IRQHandler + + PUBWEAK I2C3_EV_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +I2C3_EV_IRQHandler + B I2C3_EV_IRQHandler + + PUBWEAK I2C3_ER_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +I2C3_ER_IRQHandler + B I2C3_ER_IRQHandler + + PUBWEAK DMAMUX_OVR_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMAMUX_OVR_IRQHandler + B DMAMUX_OVR_IRQHandler + + PUBWEAK DMA2_Channel6_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +DMA2_Channel6_IRQHandler + B DMA2_Channel6_IRQHandler + + PUBWEAK CORDIC_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +CORDIC_IRQHandler + B CORDIC_IRQHandler + + PUBWEAK FMAC_IRQHandler + SECTION .text:CODE:NOROOT:REORDER(1) +FMAC_IRQHandler + B FMAC_IRQHandler + + END diff --git a/stm32g431xx.h b/stm32g431xx.h new file mode 100644 index 0000000..4d47482 --- /dev/null +++ b/stm32g431xx.h @@ -0,0 +1,13125 @@ +/** + ****************************************************************************** + * @file stm32g431xx.h + * @author MCD Application Team + * @brief CMSIS STM32G431xx Device Peripheral Access Layer Header File. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2019 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup stm32g431xx + * @{ + */ + +#ifndef __STM32G431xx_H +#define __STM32G431xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ +#define __CM4_REV 0x0001U /*!< Cortex-M4 revision r0p1 */ +#define __MPU_PRESENT 1U /*!< STM32G4XX provides an MPU */ +#define __NVIC_PRIO_BITS 4U /*!< STM32G4XX uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ +#define __FPU_PRESENT 1U /*!< FPU present */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief STM32G4XX Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +typedef enum +{ +/****** Cortex-M4 Processor Exceptions Numbers *********************************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Cortex-M4 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M4 Hard Fault Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M4 System Tick Interrupt */ +/****** STM32 specific Interrupt Numbers ***************************************************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_PVM_IRQn = 1, /*!< PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection Interrupts */ + RTC_TAMP_LSECSS_IRQn = 2, /*!< RTC Tamper and TimeStamp and RCC LSE CSS interrupts through the EXTI */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI line */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_IRQn = 19, /*!< USB HP Interrupt */ + USB_LP_IRQn = 20, /*!< USB LP Interrupt */ + FDCAN1_IT0_IRQn = 21, /*!< FDCAN1 IT0 Interrupt */ + FDCAN1_IT1_IRQn = 22, /*!< FDCAN1 IT1 Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break, Transition error, Index error and TIM15 global interrupt */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update Interrupt and TIM16 global interrupt */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 TIM1 Trigger, Commutation, Direction change, Index and TIM17 global interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Wakeup through EXTI line Interrupt */ + TIM8_BRK_IRQn = 43, /*!< TIM8 Break, Transition error and Index error Interrupt */ + TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger, Commutation, Direction change and Index Interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + LPTIM1_IRQn = 49, /*!< LP TIM1 Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&3 underrun error interrupts */ + TIM7_IRQn = 55, /*!< TIM7 global interrupts */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ + UCPD1_IRQn = 63, /*!< UCPD global Interrupt */ + COMP1_2_3_IRQn = 64, /*!< COMP1, COMP2 and COMP3 Interrupts */ + COMP4_IRQn = 65, /*!< COMP4 */ + CRS_IRQn = 75, /*!< CRS global interrupt */ + SAI1_IRQn = 76, /*!< Serial Audio Interface global interrupt */ + FPU_IRQn = 81, /*!< FPU global interrupt */ + RNG_IRQn = 90, /*!< RNG global interrupt */ + LPUART1_IRQn = 91, /*!< LP UART 1 Interrupt */ + I2C3_EV_IRQn = 92, /*!< I2C3 Event Interrupt */ + I2C3_ER_IRQn = 93, /*!< I2C3 Error interrupt */ + DMAMUX_OVR_IRQn = 94, /*!< DMAMUX overrun global interrupt */ + DMA2_Channel6_IRQn = 97, /*!< DMA2 Channel 6 interrupt */ + CORDIC_IRQn = 100, /*!< CORDIC global Interrupt */ + FMAC_IRQn = 101 /*!< FMAC global Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm4.h" /* Cortex-M4 processor and core peripherals */ +#include "system_stm32g4xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< ADC interrupt and status register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< ADC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< ADC control register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< ADC configuration register 1, Address offset: 0x0C */ + __IO uint32_t CFGR2; /*!< ADC configuration register 2, Address offset: 0x10 */ + __IO uint32_t SMPR1; /*!< ADC sampling time register 1, Address offset: 0x14 */ + __IO uint32_t SMPR2; /*!< ADC sampling time register 2, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved, 0x1C */ + __IO uint32_t TR1; /*!< ADC analog watchdog 1 threshold register, Address offset: 0x20 */ + __IO uint32_t TR2; /*!< ADC analog watchdog 2 threshold register, Address offset: 0x24 */ + __IO uint32_t TR3; /*!< ADC analog watchdog 3 threshold register, Address offset: 0x28 */ + uint32_t RESERVED2; /*!< Reserved, 0x2C */ + __IO uint32_t SQR1; /*!< ADC group regular sequencer register 1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC group regular sequencer register 2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC group regular sequencer register 3, Address offset: 0x38 */ + __IO uint32_t SQR4; /*!< ADC group regular sequencer register 4, Address offset: 0x3C */ + __IO uint32_t DR; /*!< ADC group regular data register, Address offset: 0x40 */ + uint32_t RESERVED3; /*!< Reserved, 0x44 */ + uint32_t RESERVED4; /*!< Reserved, 0x48 */ + __IO uint32_t JSQR; /*!< ADC group injected sequencer register, Address offset: 0x4C */ + uint32_t RESERVED5[4]; /*!< Reserved, 0x50 - 0x5C */ + __IO uint32_t OFR1; /*!< ADC offset register 1, Address offset: 0x60 */ + __IO uint32_t OFR2; /*!< ADC offset register 2, Address offset: 0x64 */ + __IO uint32_t OFR3; /*!< ADC offset register 3, Address offset: 0x68 */ + __IO uint32_t OFR4; /*!< ADC offset register 4, Address offset: 0x6C */ + uint32_t RESERVED6[4]; /*!< Reserved, 0x70 - 0x7C */ + __IO uint32_t JDR1; /*!< ADC group injected rank 1 data register, Address offset: 0x80 */ + __IO uint32_t JDR2; /*!< ADC group injected rank 2 data register, Address offset: 0x84 */ + __IO uint32_t JDR3; /*!< ADC group injected rank 3 data register, Address offset: 0x88 */ + __IO uint32_t JDR4; /*!< ADC group injected rank 4 data register, Address offset: 0x8C */ + uint32_t RESERVED7[4]; /*!< Reserved, 0x090 - 0x09C */ + __IO uint32_t AWD2CR; /*!< ADC analog watchdog 2 configuration register, Address offset: 0xA0 */ + __IO uint32_t AWD3CR; /*!< ADC analog watchdog 3 Configuration Register, Address offset: 0xA4 */ + uint32_t RESERVED8; /*!< Reserved, 0x0A8 */ + uint32_t RESERVED9; /*!< Reserved, 0x0AC */ + __IO uint32_t DIFSEL; /*!< ADC differential mode selection register, Address offset: 0xB0 */ + __IO uint32_t CALFACT; /*!< ADC calibration factors, Address offset: 0xB4 */ + uint32_t RESERVED10[2];/*!< Reserved, 0x0B8 - 0x0BC */ + __IO uint32_t GCOMP; /*!< ADC calibration factors, Address offset: 0xC0 */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC common status register, Address offset: 0x300 + 0x00 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x300 + 0x04 */ + __IO uint32_t CCR; /*!< ADC common configuration register, Address offset: 0x300 + 0x08 */ + __IO uint32_t CDR; /*!< ADC common group regular data register Address offset: 0x300 + 0x0C */ +} ADC_Common_TypeDef; + +/** + * @brief FD Controller Area Network + */ + +typedef struct +{ + __IO uint32_t CREL; /*!< FDCAN Core Release register, Address offset: 0x000 */ + __IO uint32_t ENDN; /*!< FDCAN Endian register, Address offset: 0x004 */ + uint32_t RESERVED1; /*!< Reserved, 0x008 */ + __IO uint32_t DBTP; /*!< FDCAN Data Bit Timing & Prescaler register, Address offset: 0x00C */ + __IO uint32_t TEST; /*!< FDCAN Test register, Address offset: 0x010 */ + __IO uint32_t RWD; /*!< FDCAN RAM Watchdog register, Address offset: 0x014 */ + __IO uint32_t CCCR; /*!< FDCAN CC Control register, Address offset: 0x018 */ + __IO uint32_t NBTP; /*!< FDCAN Nominal Bit Timing & Prescaler register, Address offset: 0x01C */ + __IO uint32_t TSCC; /*!< FDCAN Timestamp Counter Configuration register, Address offset: 0x020 */ + __IO uint32_t TSCV; /*!< FDCAN Timestamp Counter Value register, Address offset: 0x024 */ + __IO uint32_t TOCC; /*!< FDCAN Timeout Counter Configuration register, Address offset: 0x028 */ + __IO uint32_t TOCV; /*!< FDCAN Timeout Counter Value register, Address offset: 0x02C */ + uint32_t RESERVED2[4]; /*!< Reserved, 0x030 - 0x03C */ + __IO uint32_t ECR; /*!< FDCAN Error Counter register, Address offset: 0x040 */ + __IO uint32_t PSR; /*!< FDCAN Protocol Status register, Address offset: 0x044 */ + __IO uint32_t TDCR; /*!< FDCAN Transmitter Delay Compensation register, Address offset: 0x048 */ + uint32_t RESERVED3; /*!< Reserved, 0x04C */ + __IO uint32_t IR; /*!< FDCAN Interrupt register, Address offset: 0x050 */ + __IO uint32_t IE; /*!< FDCAN Interrupt Enable register, Address offset: 0x054 */ + __IO uint32_t ILS; /*!< FDCAN Interrupt Line Select register, Address offset: 0x058 */ + __IO uint32_t ILE; /*!< FDCAN Interrupt Line Enable register, Address offset: 0x05C */ + uint32_t RESERVED4[8]; /*!< Reserved, 0x060 - 0x07C */ + __IO uint32_t RXGFC; /*!< FDCAN Global Filter Configuration register, Address offset: 0x080 */ + __IO uint32_t XIDAM; /*!< FDCAN Extended ID AND Mask register, Address offset: 0x084 */ + __IO uint32_t HPMS; /*!< FDCAN High Priority Message Status register, Address offset: 0x088 */ + uint32_t RESERVED5; /*!< Reserved, 0x08C */ + __IO uint32_t RXF0S; /*!< FDCAN Rx FIFO 0 Status register, Address offset: 0x090 */ + __IO uint32_t RXF0A; /*!< FDCAN Rx FIFO 0 Acknowledge register, Address offset: 0x094 */ + __IO uint32_t RXF1S; /*!< FDCAN Rx FIFO 1 Status register, Address offset: 0x098 */ + __IO uint32_t RXF1A; /*!< FDCAN Rx FIFO 1 Acknowledge register, Address offset: 0x09C */ + uint32_t RESERVED6[8]; /*!< Reserved, 0x0A0 - 0x0BC */ + __IO uint32_t TXBC; /*!< FDCAN Tx Buffer Configuration register, Address offset: 0x0C0 */ + __IO uint32_t TXFQS; /*!< FDCAN Tx FIFO/Queue Status register, Address offset: 0x0C4 */ + __IO uint32_t TXBRP; /*!< FDCAN Tx Buffer Request Pending register, Address offset: 0x0C8 */ + __IO uint32_t TXBAR; /*!< FDCAN Tx Buffer Add Request register, Address offset: 0x0CC */ + __IO uint32_t TXBCR; /*!< FDCAN Tx Buffer Cancellation Request register, Address offset: 0x0D0 */ + __IO uint32_t TXBTO; /*!< FDCAN Tx Buffer Transmission Occurred register, Address offset: 0x0D4 */ + __IO uint32_t TXBCF; /*!< FDCAN Tx Buffer Cancellation Finished register, Address offset: 0x0D8 */ + __IO uint32_t TXBTIE; /*!< FDCAN Tx Buffer Transmission Interrupt Enable register, Address offset: 0x0DC */ + __IO uint32_t TXBCIE; /*!< FDCAN Tx Buffer Cancellation Finished Interrupt Enable register, Address offset: 0x0E0 */ + __IO uint32_t TXEFS; /*!< FDCAN Tx Event FIFO Status register, Address offset: 0x0E4 */ + __IO uint32_t TXEFA; /*!< FDCAN Tx Event FIFO Acknowledge register, Address offset: 0x0E8 */ +} FDCAN_GlobalTypeDef; + +/** + * @brief FD Controller Area Network Configuration + */ + +typedef struct +{ + __IO uint32_t CKDIV; /*!< FDCAN clock divider register, Address offset: 0x100 + 0x000 */ +} FDCAN_Config_TypeDef; + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, Address offset: 0x00 */ +} COMP_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED0; /*!< Reserved, 0x0C */ + __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ + __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_TypeDef; + +/** + * @brief Clock Recovery System + */ +typedef struct +{ + __IO uint32_t CR; /*!< CRS ccontrol register, Address offset: 0x00 */ + __IO uint32_t CFGR; /*!< CRS configuration register, Address offset: 0x04 */ + __IO uint32_t ISR; /*!< CRS interrupt and status register, Address offset: 0x08 */ + __IO uint32_t ICR; /*!< CRS interrupt flag clear register, Address offset: 0x0C */ +} CRS_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ + __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */ + __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */ + __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */ + __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */ + __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */ + __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */ + __IO uint32_t RESERVED[2]; + __IO uint32_t STR1; /*!< DAC Sawtooth register, Address offset: 0x58 */ + __IO uint32_t STR2; /*!< DAC Sawtooth register, Address offset: 0x5C */ + __IO uint32_t STMODR; /*!< DAC Sawtooth Mode register, Address offset: 0x60 */ +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */ + __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */ +} DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief DMA Multiplexer + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA Multiplexer Channel x Control Register Address offset: 0x0004 * (channel x) */ +}DMAMUX_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< DMA Channel Status Register Address offset: 0x0080 */ + __IO uint32_t CFR; /*!< DMA Channel Clear Flag Register Address offset: 0x0084 */ +}DMAMUX_ChannelStatus_TypeDef; + +typedef struct +{ + __IO uint32_t RGCR; /*!< DMA Request Generator x Control Register Address offset: 0x0100 + 0x0004 * (Req Gen x) */ +}DMAMUX_RequestGen_TypeDef; + +typedef struct +{ + __IO uint32_t RGSR; /*!< DMA Request Generator Status Register Address offset: 0x0140 */ + __IO uint32_t RGCFR; /*!< DMA Request Generator Clear Flag Register Address offset: 0x0144 */ +}DMAMUX_RequestGenStatus_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR1; /*!< EXTI Interrupt mask register 1, Address offset: 0x00 */ + __IO uint32_t EMR1; /*!< EXTI Event mask register 1, Address offset: 0x04 */ + __IO uint32_t RTSR1; /*!< EXTI Rising trigger selection register 1, Address offset: 0x08 */ + __IO uint32_t FTSR1; /*!< EXTI Falling trigger selection register 1, Address offset: 0x0C */ + __IO uint32_t SWIER1; /*!< EXTI Software interrupt event register 1, Address offset: 0x10 */ + __IO uint32_t PR1; /*!< EXTI Pending register 1, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved, 0x18 */ + uint32_t RESERVED2; /*!< Reserved, 0x1C */ + __IO uint32_t IMR2; /*!< EXTI Interrupt mask register 2, Address offset: 0x20 */ + __IO uint32_t EMR2; /*!< EXTI Event mask register 2, Address offset: 0x24 */ + __IO uint32_t RTSR2; /*!< EXTI Rising trigger selection register 2, Address offset: 0x28 */ + __IO uint32_t FTSR2; /*!< EXTI Falling trigger selection register 2, Address offset: 0x2C */ + __IO uint32_t SWIER2; /*!< EXTI Software interrupt event register 2, Address offset: 0x30 */ + __IO uint32_t PR2; /*!< EXTI Pending register 2, Address offset: 0x34 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */ + __IO uint32_t PDKEYR; /*!< FLASH power down key register, Address offset: 0x04 */ + __IO uint32_t KEYR; /*!< FLASH key register, Address offset: 0x08 */ + __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< FLASH status register, Address offset: 0x10 */ + __IO uint32_t CR; /*!< FLASH control register, Address offset: 0x14 */ + __IO uint32_t ECCR; /*!< FLASH ECC register, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x1C */ + __IO uint32_t OPTR; /*!< FLASH option register, Address offset: 0x20 */ + __IO uint32_t PCROP1SR; /*!< FLASH bank1 PCROP start address register, Address offset: 0x24 */ + __IO uint32_t PCROP1ER; /*!< FLASH bank1 PCROP end address register, Address offset: 0x28 */ + __IO uint32_t WRP1AR; /*!< FLASH bank1 WRP area A address register, Address offset: 0x2C */ + __IO uint32_t WRP1BR; /*!< FLASH bank1 WRP area B address register, Address offset: 0x30 */ + uint32_t RESERVED2[15]; /*!< Reserved2, Address offset: 0x34 */ + __IO uint32_t SEC1R; /*!< FLASH Securable memory register bank1, Address offset: 0x70 */ +} FLASH_TypeDef; + +/** + * @brief FMAC + */ +typedef struct +{ + __IO uint32_t X1BUFCFG; /*!< FMAC X1 Buffer Configuration register, Address offset: 0x00 */ + __IO uint32_t X2BUFCFG; /*!< FMAC X2 Buffer Configuration register, Address offset: 0x04 */ + __IO uint32_t YBUFCFG; /*!< FMAC Y Buffer Configuration register, Address offset: 0x08 */ + __IO uint32_t PARAM; /*!< FMAC Parameter register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< FMAC Control register, Address offset: 0x10 */ + __IO uint32_t SR; /*!< FMAC Status register, Address offset: 0x14 */ + __IO uint32_t WDATA; /*!< FMAC Write Data register, Address offset: 0x18 */ + __IO uint32_t RDATA; /*!< FMAC Read Data register, Address offset: 0x1C */ +} FMAC_TypeDef; + + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */ +} GPIO_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */ + __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */ + __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */ + __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */ + __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */ + __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */ + __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */ + __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + +/** + * @brief LPTIMER + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */ + __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */ + __IO uint32_t IER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */ + __IO uint32_t CMP; /*!< LPTIM Compare register, Address offset: 0x14 */ + __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */ + __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */ + __IO uint32_t OR; /*!< LPTIM Option register, Address offset: 0x20 */ +} LPTIM_TypeDef; + +/** + * @brief Operational Amplifier (OPAMP) + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control/status register, Address offset: 0x00 */ + __IO uint32_t RESERVED[5]; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */ + __IO uint32_t TCMR; /*!< OPAMP timer controlled mux mode register, Address offset: 0x18 */ +} OPAMP_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< PWR power control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< PWR power control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< PWR power control register 3, Address offset: 0x08 */ + __IO uint32_t CR4; /*!< PWR power control register 4, Address offset: 0x0C */ + __IO uint32_t SR1; /*!< PWR power status register 1, Address offset: 0x10 */ + __IO uint32_t SR2; /*!< PWR power status register 2, Address offset: 0x14 */ + __IO uint32_t SCR; /*!< PWR power status reset register, Address offset: 0x18 */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t PUCRA; /*!< Pull_up control register of portA, Address offset: 0x20 */ + __IO uint32_t PDCRA; /*!< Pull_Down control register of portA, Address offset: 0x24 */ + __IO uint32_t PUCRB; /*!< Pull_up control register of portB, Address offset: 0x28 */ + __IO uint32_t PDCRB; /*!< Pull_Down control register of portB, Address offset: 0x2C */ + __IO uint32_t PUCRC; /*!< Pull_up control register of portC, Address offset: 0x30 */ + __IO uint32_t PDCRC; /*!< Pull_Down control register of portC, Address offset: 0x34 */ + __IO uint32_t PUCRD; /*!< Pull_up control register of portD, Address offset: 0x38 */ + __IO uint32_t PDCRD; /*!< Pull_Down control register of portD, Address offset: 0x3C */ + __IO uint32_t PUCRE; /*!< Pull_up control register of portE, Address offset: 0x40 */ + __IO uint32_t PDCRE; /*!< Pull_Down control register of portE, Address offset: 0x44 */ + __IO uint32_t PUCRF; /*!< Pull_up control register of portF, Address offset: 0x48 */ + __IO uint32_t PDCRF; /*!< Pull_Down control register of portF, Address offset: 0x4C */ + __IO uint32_t PUCRG; /*!< Pull_up control register of portG, Address offset: 0x50 */ + __IO uint32_t PDCRG; /*!< Pull_Down control register of portG, Address offset: 0x54 */ + uint32_t RESERVED1[10]; /*!< Reserved Address offset: 0x58 - 0x7C */ + __IO uint32_t CR5; /*!< PWR power control register 5, Address offset: 0x80 */ +} PWR_TypeDef; + + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC internal clock sources calibration register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */ + __IO uint32_t PLLCFGR; /*!< RCC system PLL configuration register, Address offset: 0x0C */ + uint32_t RESERVED0; /*!< Reserved, Address offset: 0x10 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t CIER; /*!< RCC clock interrupt enable register, Address offset: 0x18 */ + __IO uint32_t CIFR; /*!< RCC clock interrupt flag register, Address offset: 0x1C */ + __IO uint32_t CICR; /*!< RCC clock interrupt clear register, Address offset: 0x20 */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x24 */ + __IO uint32_t AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x28 */ + __IO uint32_t AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x2C */ + __IO uint32_t AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x30 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x34 */ + __IO uint32_t APB1RSTR1; /*!< RCC APB1 peripheral reset register 1, Address offset: 0x38 */ + __IO uint32_t APB1RSTR2; /*!< RCC APB1 peripheral reset register 2, Address offset: 0x3C */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x40 */ + uint32_t RESERVED4; /*!< Reserved, Address offset: 0x44 */ + __IO uint32_t AHB1ENR; /*!< RCC AHB1 peripheral clocks enable register, Address offset: 0x48 */ + __IO uint32_t AHB2ENR; /*!< RCC AHB2 peripheral clocks enable register, Address offset: 0x4C */ + __IO uint32_t AHB3ENR; /*!< RCC AHB3 peripheral clocks enable register, Address offset: 0x50 */ + uint32_t RESERVED5; /*!< Reserved, Address offset: 0x54 */ + __IO uint32_t APB1ENR1; /*!< RCC APB1 peripheral clocks enable register 1, Address offset: 0x58 */ + __IO uint32_t APB1ENR2; /*!< RCC APB1 peripheral clocks enable register 2, Address offset: 0x5C */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clocks enable register, Address offset: 0x60 */ + uint32_t RESERVED6; /*!< Reserved, Address offset: 0x64 */ + __IO uint32_t AHB1SMENR; /*!< RCC AHB1 peripheral clocks enable in sleep and stop modes register, Address offset: 0x68 */ + __IO uint32_t AHB2SMENR; /*!< RCC AHB2 peripheral clocks enable in sleep and stop modes register, Address offset: 0x6C */ + __IO uint32_t AHB3SMENR; /*!< RCC AHB3 peripheral clocks enable in sleep and stop modes register, Address offset: 0x70 */ + uint32_t RESERVED7; /*!< Reserved, Address offset: 0x74 */ + __IO uint32_t APB1SMENR1; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 1, Address offset: 0x78 */ + __IO uint32_t APB1SMENR2; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 2, Address offset: 0x7C */ + __IO uint32_t APB2SMENR; /*!< RCC APB2 peripheral clocks enable in sleep mode and stop modes register, Address offset: 0x80 */ + uint32_t RESERVED8; /*!< Reserved, Address offset: 0x84 */ + __IO uint32_t CCIPR; /*!< RCC peripherals independent clock configuration register, Address offset: 0x88 */ + uint32_t RESERVED9; /*!< Reserved, Address offset: 0x8C */ + __IO uint32_t BDCR; /*!< RCC backup domain control register, Address offset: 0x90 */ + __IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x94 */ + __IO uint32_t CRRCR; /*!< RCC clock recovery RC register, Address offset: 0x98 */ + __IO uint32_t CCIPR2; /*!< RCC peripherals independent clock configuration register 2, Address offset: 0x9C */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ +/* +* @brief Specific device feature definitions +*/ +#define RTC_TAMP_INT_6_SUPPORT +#define RTC_TAMP_INT_NB 4u + +#define RTC_TAMP_NB 3u +#define RTC_BACKUP_NB 16u + + +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */ + __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */ + uint32_t RESERVED0; /*!< Reserved Address offset: 0x1C */ + uint32_t RESERVED1; /*!< Reserved Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x3C */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */ + __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */ + __IO uint32_t MISR; /*!< RTC Masked Interrupt Status register, Address offset: 0x54 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x58 */ + __IO uint32_t SCR; /*!< RTC Status Clear register, Address offset: 0x5C */ +} RTC_TypeDef; + +/** + * @brief Tamper and backup registers + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TAMP configuration register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TAMP configuration register 2, Address offset: 0x04 */ + uint32_t RESERVED0; /*!< no configuration register 3, Address offset: 0x08 */ + __IO uint32_t FLTCR; /*!< TAMP filter control register, Address offset: 0x0C */ + uint32_t RESERVED1[6]; /*!< Reserved Address offset: 0x10 - 0x24 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x28 */ + __IO uint32_t IER; /*!< TAMP Interrupt enable register, Address offset: 0x2C */ + __IO uint32_t SR; /*!< TAMP Status register, Address offset: 0x30 */ + __IO uint32_t MISR; /*!< TAMP Masked Interrupt Status register Address offset: 0x34 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x38 */ + __IO uint32_t SCR; /*!< TAMP Status clear register, Address offset: 0x3C */ + uint32_t RESERVED4[48]; /*!< Reserved Address offset: 0x040 - 0xFC */ + __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */ + __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */ + __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */ + __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */ + __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */ + __IO uint32_t BKP5R; /*!< TAMP backup register 5, Address offset: 0x114 */ + __IO uint32_t BKP6R; /*!< TAMP backup register 6, Address offset: 0x118 */ + __IO uint32_t BKP7R; /*!< TAMP backup register 7, Address offset: 0x11C */ + __IO uint32_t BKP8R; /*!< TAMP backup register 8, Address offset: 0x120 */ + __IO uint32_t BKP9R; /*!< TAMP backup register 9, Address offset: 0x124 */ + __IO uint32_t BKP10R; /*!< TAMP backup register 10, Address offset: 0x128 */ + __IO uint32_t BKP11R; /*!< TAMP backup register 11, Address offset: 0x12C */ + __IO uint32_t BKP12R; /*!< TAMP backup register 12, Address offset: 0x130 */ + __IO uint32_t BKP13R; /*!< TAMP backup register 13, Address offset: 0x134 */ + __IO uint32_t BKP14R; /*!< TAMP backup register 14, Address offset: 0x138 */ + __IO uint32_t BKP15R; /*!< TAMP backup register 15, Address offset: 0x13C */ +} TAMP_TypeDef; + +/** + * @brief Serial Audio Interface + */ + +typedef struct +{ + uint32_t RESERVED[17]; /*!< Reserved, Address offset: 0x00 to 0x40 */ + __IO uint32_t PDMCR; /*!< SAI PDM control register, Address offset: 0x44 */ + __IO uint32_t PDMDLY; /*!< SAI PDM delay register, Address offset: 0x48 */ +} SAI_TypeDef; + +typedef struct +{ + __IO uint32_t CR1; /*!< SAI block x configuration register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< SAI block x configuration register 2, Address offset: 0x08 */ + __IO uint32_t FRCR; /*!< SAI block x frame configuration register, Address offset: 0x0C */ + __IO uint32_t SLOTR; /*!< SAI block x slot register, Address offset: 0x10 */ + __IO uint32_t IMR; /*!< SAI block x interrupt mask register, Address offset: 0x14 */ + __IO uint32_t SR; /*!< SAI block x status register, Address offset: 0x18 */ + __IO uint32_t CLRFR; /*!< SAI block x clear flag register, Address offset: 0x1C */ + __IO uint32_t DR; /*!< SAI block x data register, Address offset: 0x20 */ +} SAI_Block_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< SPI Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI Control register 2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI Status register, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI CRC polynomial register, Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI Rx CRC register, Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI Tx CRC register, Address offset: 0x18 */ + __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief System configuration controller + */ + +typedef struct +{ + __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ + __IO uint32_t CFGR1; /*!< SYSCFG configuration register 1, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ + __IO uint32_t SCSR; /*!< SYSCFG CCMSRAM control and status register, Address offset: 0x18 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x1C */ + __IO uint32_t SWPR; /*!< SYSCFG CCMSRAM write protection register, Address offset: 0x20 */ + __IO uint32_t SKR; /*!< SYSCFG CCMSRAM Key Register, Address offset: 0x24 */ +} SYSCFG_TypeDef; + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint32_t CCR5; /*!< TIM capture/compare register 5, Address offset: 0x48 */ + __IO uint32_t CCR6; /*!< TIM capture/compare register 6, Address offset: 0x4C */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x50 */ + __IO uint32_t DTR2; /*!< TIM deadtime register 2, Address offset: 0x54 */ + __IO uint32_t ECR; /*!< TIM encoder control register, Address offset: 0x58 */ + __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x5C */ + __IO uint32_t AF1; /*!< TIM alternate function option register 1, Address offset: 0x60 */ + __IO uint32_t AF2; /*!< TIM alternate function option register 2, Address offset: 0x64 */ + __IO uint32_t OR ; /*!< TIM option register, Address offset: 0x68 */ + uint32_t RESERVED0[220];/*!< Reserved, Address offset: 0x6C */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x3DC */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x3E0 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ +typedef struct +{ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */ + __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + __IO uint32_t RTOR; /*!< USART Receiver Timeout register, Address offset: 0x14 */ + __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */ + __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */ + __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */ + __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ + __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */ +} USART_TypeDef; + +/** + * @brief Universal Serial Bus Full Speed Device + */ + +typedef struct +{ + __IO uint16_t EP0R; /*!< USB Endpoint 0 register, Address offset: 0x00 */ + __IO uint16_t RESERVED0; /*!< Reserved */ + __IO uint16_t EP1R; /*!< USB Endpoint 1 register, Address offset: 0x04 */ + __IO uint16_t RESERVED1; /*!< Reserved */ + __IO uint16_t EP2R; /*!< USB Endpoint 2 register, Address offset: 0x08 */ + __IO uint16_t RESERVED2; /*!< Reserved */ + __IO uint16_t EP3R; /*!< USB Endpoint 3 register, Address offset: 0x0C */ + __IO uint16_t RESERVED3; /*!< Reserved */ + __IO uint16_t EP4R; /*!< USB Endpoint 4 register, Address offset: 0x10 */ + __IO uint16_t RESERVED4; /*!< Reserved */ + __IO uint16_t EP5R; /*!< USB Endpoint 5 register, Address offset: 0x14 */ + __IO uint16_t RESERVED5; /*!< Reserved */ + __IO uint16_t EP6R; /*!< USB Endpoint 6 register, Address offset: 0x18 */ + __IO uint16_t RESERVED6; /*!< Reserved */ + __IO uint16_t EP7R; /*!< USB Endpoint 7 register, Address offset: 0x1C */ + __IO uint16_t RESERVED7[17]; /*!< Reserved */ + __IO uint16_t CNTR; /*!< Control register, Address offset: 0x40 */ + __IO uint16_t RESERVED8; /*!< Reserved */ + __IO uint16_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */ + __IO uint16_t RESERVED9; /*!< Reserved */ + __IO uint16_t FNR; /*!< Frame number register, Address offset: 0x48 */ + __IO uint16_t RESERVEDA; /*!< Reserved */ + __IO uint16_t DADDR; /*!< Device address register, Address offset: 0x4C */ + __IO uint16_t RESERVEDB; /*!< Reserved */ + __IO uint16_t BTABLE; /*!< Buffer Table address register, Address offset: 0x50 */ + __IO uint16_t RESERVEDC; /*!< Reserved */ + __IO uint16_t LPMCSR; /*!< LPM Control and Status register, Address offset: 0x54 */ + __IO uint16_t RESERVEDD; /*!< Reserved */ + __IO uint16_t BCDR; /*!< Battery Charging detector register, Address offset: 0x58 */ + __IO uint16_t RESERVEDE; /*!< Reserved */ +} USB_TypeDef; + +/** + * @brief VREFBUF + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< VREFBUF control and status register, Address offset: 0x00 */ + __IO uint32_t CCR; /*!< VREFBUF calibration and control register, Address offset: 0x04 */ +} VREFBUF_TypeDef; + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + + +/** + * @brief RNG + */ +typedef struct +{ + __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */ + __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */ + __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */ +} RNG_TypeDef; + +/** + * @brief CORDIC + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< CORDIC control and status register, Address offset: 0x00 */ + __IO uint32_t WDATA; /*!< CORDIC argument register, Address offset: 0x04 */ + __IO uint32_t RDATA; /*!< CORDIC result register, Address offset: 0x08 */ +} CORDIC_TypeDef; + +/** + * @brief UCPD + */ + +typedef struct +{ + __IO uint32_t CFG1; /*!< UCPD configuration register 1, Address offset: 0x00 */ + __IO uint32_t CFG2; /*!< UCPD configuration register 2, Address offset: 0x04 */ + __IO uint32_t RESERVED0; /*!< UCPD reserved register, Address offset: 0x08 */ + __IO uint32_t CR; /*!< UCPD control register, Address offset: 0x0C */ + __IO uint32_t IMR; /*!< UCPD interrupt mask register, Address offset: 0x10 */ + __IO uint32_t SR; /*!< UCPD status register, Address offset: 0x14 */ + __IO uint32_t ICR; /*!< UCPD interrupt flag clear register Address offset: 0x18 */ + __IO uint32_t TX_ORDSET; /*!< UCPD Tx ordered set type register, Address offset: 0x1C */ + __IO uint32_t TX_PAYSZ; /*!< UCPD Tx payload size register, Address offset: 0x20 */ + __IO uint32_t TXDR; /*!< UCPD Tx data register, Address offset: 0x24 */ + __IO uint32_t RX_ORDSET; /*!< UCPD Rx ordered set type register, Address offset: 0x28 */ + __IO uint32_t RX_PAYSZ; /*!< UCPD Rx payload size register, Address offset: 0x2C */ + __IO uint32_t RXDR; /*!< UCPD Rx data register, Address offset: 0x30 */ + __IO uint32_t RX_ORDEXT1; /*!< UCPD Rx ordered set extension 1 register, Address offset: 0x34 */ + __IO uint32_t RX_ORDEXT2; /*!< UCPD Rx ordered set extension 2 register, Address offset: 0x38 */ +} UCPD_TypeDef; + + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + +#define FLASH_BASE (0x08000000UL) /*!< FLASH (up to 128 kB) base address */ +#define SRAM1_BASE (0x20000000UL) /*!< SRAM1(up to 16 KB) base address */ +#define SRAM2_BASE (0x20004000UL) /*!< SRAM2(6 KB) base address */ +#define CCMSRAM_BASE (0x10000000UL) /*!< CCMSRAM(10 KB) base address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ + +#define SRAM1_BB_BASE (0x22000000UL) /*!< SRAM1(16 KB) base address in the bit-band region */ +#define SRAM2_BB_BASE (0x22080000UL) /*!< SRAM2(6 KB) base address in the bit-band region */ +#define CCMSRAM_BB_BASE (0x220B0000UL) /*!< CCMSRAM(10 KB) base address in the bit-band region */ +#define PERIPH_BB_BASE (0x42000000UL) /*!< Peripheral base address in the bit-band region */ +/* Legacy defines */ +#define SRAM_BASE SRAM1_BASE +#define SRAM_BB_BASE SRAM1_BB_BASE + +#define SRAM1_SIZE_MAX (0x00004000UL) /*!< maximum SRAM1 size (up to 16 KBytes) */ +#define SRAM2_SIZE (0x00001800UL) /*!< SRAM2 size (6 KBytes) */ +#define CCMSRAM_SIZE (0x00002800UL) /*!< CCMSRAM size (10 KBytes) */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) +#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000UL) +#define AHB2PERIPH_BASE (PERIPH_BASE + 0x08000000UL) + + +/*!< APB1 peripherals */ +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000UL) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400UL) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800UL) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000UL) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400UL) +#define CRS_BASE (APB1PERIPH_BASE + 0x2000UL) +#define TAMP_BASE (APB1PERIPH_BASE + 0x2400UL) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800UL) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00UL) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000UL) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800UL) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00UL) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400UL) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800UL) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00UL) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400UL) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800UL) +#define USB_BASE (APB1PERIPH_BASE + 0x5C00UL) /*!< USB_IP Peripheral Registers base address */ +#define USB_PMAADDR (APB1PERIPH_BASE + 0x6000UL) /*!< USB_IP Packet Memory Area base address */ +#define FDCAN1_BASE (APB1PERIPH_BASE + 0x6400UL) +#define FDCAN_CONFIG_BASE (APB1PERIPH_BASE + 0x6500UL) /*!< FDCAN configuration registers base address */ +#define PWR_BASE (APB1PERIPH_BASE + 0x7000UL) +#define I2C3_BASE (APB1PERIPH_BASE + 0x7800UL) +#define LPTIM1_BASE (APB1PERIPH_BASE + 0x7C00UL) +#define LPUART1_BASE (APB1PERIPH_BASE + 0x8000UL) +#define UCPD1_BASE (APB1PERIPH_BASE + 0xA000UL) +#define SRAMCAN_BASE (APB1PERIPH_BASE + 0xA400UL) + +/*!< APB2 peripherals */ +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x0000UL) +#define VREFBUF_BASE (APB2PERIPH_BASE + 0x0030UL) +#define COMP1_BASE (APB2PERIPH_BASE + 0x0200UL) +#define COMP2_BASE (APB2PERIPH_BASE + 0x0204UL) +#define COMP3_BASE (APB2PERIPH_BASE + 0x0208UL) +#define COMP4_BASE (APB2PERIPH_BASE + 0x020CUL) +#define OPAMP_BASE (APB2PERIPH_BASE + 0x0300UL) +#define OPAMP1_BASE (APB2PERIPH_BASE + 0x0300UL) +#define OPAMP2_BASE (APB2PERIPH_BASE + 0x0304UL) +#define OPAMP3_BASE (APB2PERIPH_BASE + 0x0308UL) + +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400UL) +#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00UL) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000UL) +#define TIM8_BASE (APB2PERIPH_BASE + 0x3400UL) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800UL) +#define TIM15_BASE (APB2PERIPH_BASE + 0x4000UL) +#define TIM16_BASE (APB2PERIPH_BASE + 0x4400UL) +#define TIM17_BASE (APB2PERIPH_BASE + 0x4800UL) +#define SAI1_BASE (APB2PERIPH_BASE + 0x5400UL) +#define SAI1_Block_A_BASE (SAI1_BASE + 0x0004UL) +#define SAI1_Block_B_BASE (SAI1_BASE + 0x0024UL) + +/*!< AHB1 peripherals */ +#define DMA1_BASE (AHB1PERIPH_BASE) +#define DMA2_BASE (AHB1PERIPH_BASE + 0x0400UL) +#define DMAMUX1_BASE (AHB1PERIPH_BASE + 0x0800UL) +#define CORDIC_BASE (AHB1PERIPH_BASE + 0x0C00UL) +#define RCC_BASE (AHB1PERIPH_BASE + 0x1000UL) +#define FMAC_BASE (AHB1PERIPH_BASE + 0x1400UL) +#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x2000UL) +#define CRC_BASE (AHB1PERIPH_BASE + 0x3000UL) + +#define DMA1_Channel1_BASE (DMA1_BASE + 0x0008UL) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x001CUL) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x0030UL) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x0044UL) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x0058UL) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x006CUL) + +#define DMA2_Channel1_BASE (DMA2_BASE + 0x0008UL) +#define DMA2_Channel2_BASE (DMA2_BASE + 0x001CUL) +#define DMA2_Channel3_BASE (DMA2_BASE + 0x0030UL) +#define DMA2_Channel4_BASE (DMA2_BASE + 0x0044UL) +#define DMA2_Channel5_BASE (DMA2_BASE + 0x0058UL) +#define DMA2_Channel6_BASE (DMA2_BASE + 0x006CUL) + +#define DMAMUX1_Channel0_BASE (DMAMUX1_BASE) +#define DMAMUX1_Channel1_BASE (DMAMUX1_BASE + 0x0004UL) +#define DMAMUX1_Channel2_BASE (DMAMUX1_BASE + 0x0008UL) +#define DMAMUX1_Channel3_BASE (DMAMUX1_BASE + 0x000CUL) +#define DMAMUX1_Channel4_BASE (DMAMUX1_BASE + 0x0010UL) +#define DMAMUX1_Channel5_BASE (DMAMUX1_BASE + 0x0014UL) +#define DMAMUX1_Channel6_BASE (DMAMUX1_BASE + 0x0020UL) +#define DMAMUX1_Channel7_BASE (DMAMUX1_BASE + 0x0024UL) +#define DMAMUX1_Channel8_BASE (DMAMUX1_BASE + 0x0028UL) +#define DMAMUX1_Channel9_BASE (DMAMUX1_BASE + 0x002CUL) +#define DMAMUX1_Channel10_BASE (DMAMUX1_BASE + 0x0030UL) +#define DMAMUX1_Channel11_BASE (DMAMUX1_BASE + 0x0034UL) +#define DMAMUX1_RequestGenerator0_BASE (DMAMUX1_BASE + 0x0100UL) +#define DMAMUX1_RequestGenerator1_BASE (DMAMUX1_BASE + 0x0104UL) +#define DMAMUX1_RequestGenerator2_BASE (DMAMUX1_BASE + 0x0108UL) +#define DMAMUX1_RequestGenerator3_BASE (DMAMUX1_BASE + 0x010CUL) + +#define DMAMUX1_ChannelStatus_BASE (DMAMUX1_BASE + 0x0080UL) +#define DMAMUX1_RequestGenStatus_BASE (DMAMUX1_BASE + 0x0140UL) + +/*!< AHB2 peripherals */ +#define GPIOA_BASE (AHB2PERIPH_BASE + 0x0000UL) +#define GPIOB_BASE (AHB2PERIPH_BASE + 0x0400UL) +#define GPIOC_BASE (AHB2PERIPH_BASE + 0x0800UL) +#define GPIOD_BASE (AHB2PERIPH_BASE + 0x0C00UL) +#define GPIOE_BASE (AHB2PERIPH_BASE + 0x1000UL) +#define GPIOF_BASE (AHB2PERIPH_BASE + 0x1400UL) +#define GPIOG_BASE (AHB2PERIPH_BASE + 0x1800UL) + +#define ADC1_BASE (AHB2PERIPH_BASE + 0x08000000UL) +#define ADC2_BASE (AHB2PERIPH_BASE + 0x08000100UL) +#define ADC12_COMMON_BASE (AHB2PERIPH_BASE + 0x08000300UL) + +#define DAC_BASE (AHB2PERIPH_BASE + 0x08000800UL) +#define DAC1_BASE (AHB2PERIPH_BASE + 0x08000800UL) +#define DAC3_BASE (AHB2PERIPH_BASE + 0x08001000UL) + +#define RNG_BASE (AHB2PERIPH_BASE + 0x08060800UL) +/* Debug MCU registers base address */ +#define DBGMCU_BASE (0xE0042000UL) + +#define PACKAGE_BASE (0x1FFF7500UL) /*!< Package data register base address */ +#define UID_BASE (0x1FFF7590UL) /*!< Unique device ID register base address */ +#define FLASHSIZE_BASE (0x1FFF75E0UL) /*!< Flash size data register base address */ +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define CRS ((CRS_TypeDef *) CRS_BASE) +#define TAMP ((TAMP_TypeDef *) TAMP_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define USB ((USB_TypeDef *) USB_BASE) +#define FDCAN1 ((FDCAN_GlobalTypeDef *) FDCAN1_BASE) +#define FDCAN_CONFIG ((FDCAN_Config_TypeDef *) FDCAN_CONFIG_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define I2C3 ((I2C_TypeDef *) I2C3_BASE) +#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE) +#define LPUART1 ((USART_TypeDef *) LPUART1_BASE) +#define UCPD1 ((UCPD_TypeDef *) UCPD1_BASE) + +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define VREFBUF ((VREFBUF_TypeDef *) VREFBUF_BASE) +#define COMP1 ((COMP_TypeDef *) COMP1_BASE) +#define COMP2 ((COMP_TypeDef *) COMP2_BASE) +#define COMP3 ((COMP_TypeDef *) COMP3_BASE) +#define COMP4 ((COMP_TypeDef *) COMP4_BASE) + +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define OPAMP1 ((OPAMP_TypeDef *) OPAMP1_BASE) +#define OPAMP2 ((OPAMP_TypeDef *) OPAMP2_BASE) +#define OPAMP3 ((OPAMP_TypeDef *) OPAMP3_BASE) + +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define SAI1 ((SAI_TypeDef *) SAI1_BASE) +#define SAI1_Block_A ((SAI_Block_TypeDef *)SAI1_Block_A_BASE) +#define SAI1_Block_B ((SAI_Block_TypeDef *)SAI1_Block_B_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMAMUX1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_BASE) +#define CORDIC ((CORDIC_TypeDef *) CORDIC_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FMAC ((FMAC_TypeDef *) FMAC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) + +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define ADC12_COMMON ((ADC_Common_TypeDef *) ADC12_COMMON_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) +#define DAC1 ((DAC_TypeDef *) DAC1_BASE) +#define DAC3 ((DAC_TypeDef *) DAC3_BASE) +#define RNG ((RNG_TypeDef *) RNG_BASE) + +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) + +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define DMA2_Channel6 ((DMA_Channel_TypeDef *) DMA2_Channel6_BASE) + +#define DMAMUX1_Channel0 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel0_BASE) +#define DMAMUX1_Channel1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel1_BASE) +#define DMAMUX1_Channel2 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel2_BASE) +#define DMAMUX1_Channel3 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel3_BASE) +#define DMAMUX1_Channel4 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel4_BASE) +#define DMAMUX1_Channel5 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel5_BASE) +#define DMAMUX1_Channel6 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel6_BASE) +#define DMAMUX1_Channel7 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel7_BASE) +#define DMAMUX1_Channel8 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel8_BASE) +#define DMAMUX1_Channel9 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel9_BASE) +#define DMAMUX1_Channel10 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel10_BASE) +#define DMAMUX1_Channel11 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel11_BASE) + +#define DMAMUX1_RequestGenerator0 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator0_BASE) +#define DMAMUX1_RequestGenerator1 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator1_BASE) +#define DMAMUX1_RequestGenerator2 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator2_BASE) +#define DMAMUX1_RequestGenerator3 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator3_BASE) + +#define DMAMUX1_ChannelStatus ((DMAMUX_ChannelStatus_TypeDef *) DMAMUX1_ChannelStatus_BASE) +#define DMAMUX1_RequestGenStatus ((DMAMUX_RequestGenStatus_TypeDef *) DMAMUX1_RequestGenStatus_BASE) + + + +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Hardware_Constant_Definition + * @{ + */ +#define LSI_STARTUP_TIME 130U /*!< LSI Maximum startup time in us */ + + /** + * @} + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter */ +/* */ +/******************************************************************************/ + +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G4 series) + */ +#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */ + +/******************** Bit definition for ADC_ISR register *******************/ +#define ADC_ISR_ADRDY_Pos (0U) +#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */ +#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */ +#define ADC_ISR_EOSMP_Pos (1U) +#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */ +#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */ +#define ADC_ISR_EOC_Pos (2U) +#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */ +#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */ +#define ADC_ISR_EOS_Pos (3U) +#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */ +#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */ +#define ADC_ISR_OVR_Pos (4U) +#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */ +#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */ +#define ADC_ISR_JEOC_Pos (5U) +#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */ +#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */ +#define ADC_ISR_JEOS_Pos (6U) +#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */ +#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */ +#define ADC_ISR_AWD1_Pos (7U) +#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */ +#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */ +#define ADC_ISR_AWD2_Pos (8U) +#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */ +#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */ +#define ADC_ISR_AWD3_Pos (9U) +#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */ +#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */ +#define ADC_ISR_JQOVF_Pos (10U) +#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */ +#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_IER register *******************/ +#define ADC_IER_ADRDYIE_Pos (0U) +#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */ +#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */ +#define ADC_IER_EOSMPIE_Pos (1U) +#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */ +#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */ +#define ADC_IER_EOCIE_Pos (2U) +#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */ +#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */ +#define ADC_IER_EOSIE_Pos (3U) +#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */ +#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */ +#define ADC_IER_OVRIE_Pos (4U) +#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */ +#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */ +#define ADC_IER_JEOCIE_Pos (5U) +#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */ +#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */ +#define ADC_IER_JEOSIE_Pos (6U) +#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */ +#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */ +#define ADC_IER_AWD1IE_Pos (7U) +#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */ +#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */ +#define ADC_IER_AWD2IE_Pos (8U) +#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */ +#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */ +#define ADC_IER_AWD3IE_Pos (9U) +#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */ +#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */ +#define ADC_IER_JQOVFIE_Pos (10U) +#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */ +#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */ + +/******************** Bit definition for ADC_CR register ********************/ +#define ADC_CR_ADEN_Pos (0U) +#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */ +#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */ +#define ADC_CR_ADDIS_Pos (1U) +#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */ +#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */ +#define ADC_CR_ADSTART_Pos (2U) +#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */ +#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */ +#define ADC_CR_JADSTART_Pos (3U) +#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */ +#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */ +#define ADC_CR_ADSTP_Pos (4U) +#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */ +#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_JADSTP_Pos (5U) +#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */ +#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */ +#define ADC_CR_ADVREGEN_Pos (28U) +#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */ +#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */ +#define ADC_CR_DEEPPWD_Pos (29U) +#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */ +#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */ +#define ADC_CR_ADCALDIF_Pos (30U) +#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */ +#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */ +#define ADC_CR_ADCAL_Pos (31U) +#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */ +#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */ + +/******************** Bit definition for ADC_CFGR register ******************/ +#define ADC_CFGR_DMAEN_Pos (0U) +#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */ +#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */ +#define ADC_CFGR_DMACFG_Pos (1U) +#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */ +#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */ + +#define ADC_CFGR_RES_Pos (3U) +#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */ +#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */ +#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */ +#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR_EXTSEL_Pos (5U) +#define ADC_CFGR_EXTSEL_Msk (0x1FUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003E0 */ +#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000020 */ +#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */ +#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */ +#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */ +#define ADC_CFGR_EXTSEL_4 (0x10UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */ + +#define ADC_CFGR_EXTEN_Pos (10U) +#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */ +#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */ +#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */ +#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */ + +#define ADC_CFGR_OVRMOD_Pos (12U) +#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */ +#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */ +#define ADC_CFGR_CONT_Pos (13U) +#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */ +#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */ +#define ADC_CFGR_AUTDLY_Pos (14U) +#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */ +#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */ +#define ADC_CFGR_ALIGN_Pos (15U) +#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00008000 */ +#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignment */ +#define ADC_CFGR_DISCEN_Pos (16U) +#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */ +#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */ + +#define ADC_CFGR_DISCNUM_Pos (17U) +#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */ +#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */ +#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */ +#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */ +#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */ + +#define ADC_CFGR_JDISCEN_Pos (20U) +#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */ +#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */ +#define ADC_CFGR_JQM_Pos (21U) +#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */ +#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */ +#define ADC_CFGR_AWD1SGL_Pos (22U) +#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */ +#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */ +#define ADC_CFGR_AWD1EN_Pos (23U) +#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */ +#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */ +#define ADC_CFGR_JAWD1EN_Pos (24U) +#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */ +#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */ +#define ADC_CFGR_JAUTO_Pos (25U) +#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */ +#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */ + +#define ADC_CFGR_AWD1CH_Pos (26U) +#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */ +#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */ +#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */ +#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */ +#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */ +#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */ +#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */ + +#define ADC_CFGR_JQDIS_Pos (31U) +#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */ +#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */ + +/******************** Bit definition for ADC_CFGR2 register *****************/ +#define ADC_CFGR2_ROVSE_Pos (0U) +#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */ +#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */ +#define ADC_CFGR2_JOVSE_Pos (1U) +#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */ +#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */ + +#define ADC_CFGR2_OVSR_Pos (2U) +#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */ +#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */ +#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */ +#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR2_OVSS_Pos (5U) +#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */ +#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */ +#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */ +#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */ +#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */ +#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */ + +#define ADC_CFGR2_TROVS_Pos (9U) +#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */ +#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */ +#define ADC_CFGR2_ROVSM_Pos (10U) +#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */ +#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */ + +#define ADC_CFGR2_GCOMP_Pos (16U) +#define ADC_CFGR2_GCOMP_Msk (0x1UL << ADC_CFGR2_GCOMP_Pos) /*!< 0x00010000 */ +#define ADC_CFGR2_GCOMP ADC_CFGR2_GCOMP_Msk /*!< ADC Gain Compensation mode */ + +#define ADC_CFGR2_SWTRIG_Pos (25U) +#define ADC_CFGR2_SWTRIG_Msk (0x1UL << ADC_CFGR2_SWTRIG_Pos) /*!< 0x02000000 */ +#define ADC_CFGR2_SWTRIG ADC_CFGR2_SWTRIG_Msk /*!< ADC Software Trigger Bit for Sample time control trigger mode */ +#define ADC_CFGR2_BULB_Pos (26U) +#define ADC_CFGR2_BULB_Msk (0x1UL << ADC_CFGR2_BULB_Pos) /*!< 0x04000000 */ +#define ADC_CFGR2_BULB ADC_CFGR2_BULB_Msk /*!< ADC Bulb sampling mode */ +#define ADC_CFGR2_SMPTRIG_Pos (27U) +#define ADC_CFGR2_SMPTRIG_Msk (0x1UL << ADC_CFGR2_SMPTRIG_Pos) /*!< 0x08000000 */ +#define ADC_CFGR2_SMPTRIG ADC_CFGR2_SMPTRIG_Msk /*!< ADC Sample Time Control Trigger mode */ + +/******************** Bit definition for ADC_SMPR1 register *****************/ +#define ADC_SMPR1_SMP0_Pos (0U) +#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */ +#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */ +#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */ +#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */ +#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR1_SMP1_Pos (3U) +#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */ +#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */ +#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */ +#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */ +#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR1_SMP2_Pos (6U) +#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */ +#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */ +#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */ +#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR1_SMP3_Pos (9U) +#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */ +#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */ +#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */ +#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR1_SMP4_Pos (12U) +#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */ +#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */ +#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */ +#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */ +#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR1_SMP5_Pos (15U) +#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */ +#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */ +#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */ +#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */ +#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR1_SMP6_Pos (18U) +#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */ +#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */ +#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */ +#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR1_SMP7_Pos (21U) +#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */ +#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */ +#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */ +#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR1_SMP8_Pos (24U) +#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */ +#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */ +#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */ +#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */ +#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */ + +#define ADC_SMPR1_SMP9_Pos (27U) +#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */ +#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */ +#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */ +#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */ +#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */ + +#define ADC_SMPR1_SMPPLUS_Pos (31U) +#define ADC_SMPR1_SMPPLUS_Msk (0x1UL << ADC_SMPR1_SMPPLUS_Pos) /*!< 0x80000000 */ +#define ADC_SMPR1_SMPPLUS ADC_SMPR1_SMPPLUS_Msk /*!< ADC channels sampling time additional setting */ + +/******************** Bit definition for ADC_SMPR2 register *****************/ +#define ADC_SMPR2_SMP10_Pos (0U) +#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */ +#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR2_SMP11_Pos (3U) +#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */ +#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */ +#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */ +#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */ +#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR2_SMP12_Pos (6U) +#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */ +#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */ +#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */ +#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR2_SMP13_Pos (9U) +#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */ +#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */ +#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */ +#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR2_SMP14_Pos (12U) +#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */ +#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */ +#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */ +#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */ +#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR2_SMP15_Pos (15U) +#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */ +#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR2_SMP16_Pos (18U) +#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */ +#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */ +#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */ +#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR2_SMP17_Pos (21U) +#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */ +#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */ +#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */ +#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR2_SMP18_Pos (24U) +#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */ +#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */ +#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */ +#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */ +#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */ + +/******************** Bit definition for ADC_TR1 register *******************/ +#define ADC_TR1_LT1_Pos (0U) +#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */ +#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */ + +#define ADC_TR1_AWDFILT_Pos (12U) +#define ADC_TR1_AWDFILT_Msk (0x7UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00007000 */ +#define ADC_TR1_AWDFILT ADC_TR1_AWDFILT_Msk /*!< ADC analog watchdog filtering parameter */ +#define ADC_TR1_AWDFILT_0 (0x1UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00001000 */ +#define ADC_TR1_AWDFILT_1 (0x2UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00002000 */ +#define ADC_TR1_AWDFILT_2 (0x4UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00004000 */ + +#define ADC_TR1_HT1_Pos (16U) +#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */ +#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC analog watchdog 1 threshold high */ + +/******************** Bit definition for ADC_TR2 register *******************/ +#define ADC_TR2_LT2_Pos (0U) +#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */ +#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */ + +#define ADC_TR2_HT2_Pos (16U) +#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */ +#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */ + +/******************** Bit definition for ADC_TR3 register *******************/ +#define ADC_TR3_LT3_Pos (0U) +#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */ +#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */ + +#define ADC_TR3_HT3_Pos (16U) +#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */ +#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */ + +/******************** Bit definition for ADC_SQR1 register ******************/ +#define ADC_SQR1_L_Pos (0U) +#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */ +#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */ +#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */ +#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */ +#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */ +#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */ + +#define ADC_SQR1_SQ1_Pos (6U) +#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */ +#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */ +#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */ +#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */ +#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */ +#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */ +#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */ + +#define ADC_SQR1_SQ2_Pos (12U) +#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */ +#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */ +#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */ +#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */ +#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */ +#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */ +#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */ + +#define ADC_SQR1_SQ3_Pos (18U) +#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */ +#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */ +#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */ +#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */ +#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */ +#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */ +#define ADC_SQR1_SQ3_4 (0x10UL<< ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */ + +#define ADC_SQR1_SQ4_Pos (24U) +#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */ +#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */ +#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */ +#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */ +#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */ +#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */ +#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR2 register ******************/ +#define ADC_SQR2_SQ5_Pos (0U) +#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */ +#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */ +#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */ +#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */ +#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */ +#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */ +#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */ + +#define ADC_SQR2_SQ6_Pos (6U) +#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */ +#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */ +#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */ +#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */ +#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */ +#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */ +#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */ + +#define ADC_SQR2_SQ7_Pos (12U) +#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */ +#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */ +#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */ +#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */ +#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */ +#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */ +#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */ + +#define ADC_SQR2_SQ8_Pos (18U) +#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */ +#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */ +#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */ +#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */ +#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */ +#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */ +#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */ + +#define ADC_SQR2_SQ9_Pos (24U) +#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */ +#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */ +#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */ +#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */ +#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */ +#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */ +#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR3 register ******************/ +#define ADC_SQR3_SQ10_Pos (0U) +#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */ +#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */ +#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */ +#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */ +#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */ +#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */ +#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */ + +#define ADC_SQR3_SQ11_Pos (6U) +#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */ +#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */ +#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */ +#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */ +#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */ +#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */ +#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */ + +#define ADC_SQR3_SQ12_Pos (12U) +#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */ +#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */ +#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */ +#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */ +#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */ +#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */ +#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */ + +#define ADC_SQR3_SQ13_Pos (18U) +#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */ +#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */ +#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */ +#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */ +#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */ +#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */ +#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */ + +#define ADC_SQR3_SQ14_Pos (24U) +#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */ +#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */ +#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */ +#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */ +#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */ +#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */ +#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR4 register ******************/ +#define ADC_SQR4_SQ15_Pos (0U) +#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */ +#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */ +#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */ +#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */ +#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */ +#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */ +#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */ + +#define ADC_SQR4_SQ16_Pos (6U) +#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */ +#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */ +#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */ +#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */ +#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */ +#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */ +#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_RDATA_Pos (0U) +#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */ + +/******************** Bit definition for ADC_JSQR register ******************/ +#define ADC_JSQR_JL_Pos (0U) +#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */ +#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */ +#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */ +#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */ + +#define ADC_JSQR_JEXTSEL_Pos (2U) +#define ADC_JSQR_JEXTSEL_Msk (0x1FUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000007C */ +#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */ +#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */ +#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */ +#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */ +#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */ +#define ADC_JSQR_JEXTSEL_4 (0x10UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000040 */ + +#define ADC_JSQR_JEXTEN_Pos (7U) +#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000180 */ +#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */ +#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */ +#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000100 */ + +#define ADC_JSQR_JSQ1_Pos (9U) +#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00003E00 */ +#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */ +#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */ +#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */ +#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */ +#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */ +#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00002000 */ + +#define ADC_JSQR_JSQ2_Pos (15U) +#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */ +#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */ +#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */ +#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */ +#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */ +#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */ +#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */ + +#define ADC_JSQR_JSQ3_Pos (21U) +#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x03E00000 */ +#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */ +#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */ +#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */ +#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */ +#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */ +#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x02000000 */ + +#define ADC_JSQR_JSQ4_Pos (27U) +#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0xF8000000 */ +#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */ +#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */ +#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */ +#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */ +#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */ +#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x80000000 */ + +/******************** Bit definition for ADC_OFR1 register ******************/ +#define ADC_OFR1_OFFSET1_Pos (0U) +#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */ +#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */ + +#define ADC_OFR1_OFFSETPOS_Pos (24U) +#define ADC_OFR1_OFFSETPOS_Msk (0x1UL << ADC_OFR1_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR1_OFFSETPOS ADC_OFR1_OFFSETPOS_Msk /*!< ADC offset number 1 positive */ +#define ADC_OFR1_SATEN_Pos (25U) +#define ADC_OFR1_SATEN_Msk (0x1UL << ADC_OFR1_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR1_SATEN ADC_OFR1_SATEN_Msk /*!< ADC offset number 1 saturation enable */ + +#define ADC_OFR1_OFFSET1_CH_Pos (26U) +#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */ +#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR1_OFFSET1_EN_Pos (31U) +#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */ + +/******************** Bit definition for ADC_OFR2 register ******************/ +#define ADC_OFR2_OFFSET2_Pos (0U) +#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */ +#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */ + +#define ADC_OFR2_OFFSETPOS_Pos (24U) +#define ADC_OFR2_OFFSETPOS_Msk (0x1UL << ADC_OFR2_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR2_OFFSETPOS ADC_OFR2_OFFSETPOS_Msk /*!< ADC offset number 2 positive */ +#define ADC_OFR2_SATEN_Pos (25U) +#define ADC_OFR2_SATEN_Msk (0x1UL << ADC_OFR2_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR2_SATEN ADC_OFR2_SATEN_Msk /*!< ADC offset number 2 saturation enable */ + +#define ADC_OFR2_OFFSET2_CH_Pos (26U) +#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */ +#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR2_OFFSET2_EN_Pos (31U) +#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */ + +/******************** Bit definition for ADC_OFR3 register ******************/ +#define ADC_OFR3_OFFSET3_Pos (0U) +#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */ +#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */ + +#define ADC_OFR3_OFFSETPOS_Pos (24U) +#define ADC_OFR3_OFFSETPOS_Msk (0x1UL << ADC_OFR3_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR3_OFFSETPOS ADC_OFR3_OFFSETPOS_Msk /*!< ADC offset number 3 positive */ +#define ADC_OFR3_SATEN_Pos (25U) +#define ADC_OFR3_SATEN_Msk (0x1UL << ADC_OFR3_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR3_SATEN ADC_OFR3_SATEN_Msk /*!< ADC offset number 3 saturation enable */ + +#define ADC_OFR3_OFFSET3_CH_Pos (26U) +#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */ +#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR3_OFFSET3_EN_Pos (31U) +#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */ + +/******************** Bit definition for ADC_OFR4 register ******************/ +#define ADC_OFR4_OFFSET4_Pos (0U) +#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */ +#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */ + +#define ADC_OFR4_OFFSETPOS_Pos (24U) +#define ADC_OFR4_OFFSETPOS_Msk (0x1UL << ADC_OFR4_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR4_OFFSETPOS ADC_OFR4_OFFSETPOS_Msk /*!< ADC offset number 4 positive */ +#define ADC_OFR4_SATEN_Pos (25U) +#define ADC_OFR4_SATEN_Msk (0x1UL << ADC_OFR4_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR4_SATEN ADC_OFR4_SATEN_Msk /*!< ADC offset number 4 saturation enable */ + +#define ADC_OFR4_OFFSET4_CH_Pos (26U) +#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */ +#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR4_OFFSET4_EN_Pos (31U) +#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */ + +/******************** Bit definition for ADC_JDR1 register ******************/ +#define ADC_JDR1_JDATA_Pos (0U) +#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */ + +/******************** Bit definition for ADC_JDR2 register ******************/ +#define ADC_JDR2_JDATA_Pos (0U) +#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */ + +/******************** Bit definition for ADC_JDR3 register ******************/ +#define ADC_JDR3_JDATA_Pos (0U) +#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */ + +/******************** Bit definition for ADC_JDR4 register ******************/ +#define ADC_JDR4_JDATA_Pos (0U) +#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */ + +/******************** Bit definition for ADC_AWD2CR register ****************/ +#define ADC_AWD2CR_AWD2CH_Pos (0U) +#define ADC_AWD2CR_AWD2CH_Msk (0x7FFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */ +#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_AWD3CR register ****************/ +#define ADC_AWD3CR_AWD3CH_Pos (0U) +#define ADC_AWD3CR_AWD3CH_Msk (0x7FFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */ +#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_DIFSEL register ****************/ +#define ADC_DIFSEL_DIFSEL_Pos (0U) +#define ADC_DIFSEL_DIFSEL_Msk (0x7FFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */ +#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */ +#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */ +#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */ +#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */ +#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */ +#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */ +#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */ +#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */ +#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */ +#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */ +#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */ +#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */ +#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */ +#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */ +#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */ +#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */ +#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */ +#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */ +#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */ +#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_CALFACT register ***************/ +#define ADC_CALFACT_CALFACT_S_Pos (0U) +#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */ +#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */ +#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */ +#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */ +#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */ +#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */ +#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */ +#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */ +#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000030 */ + +#define ADC_CALFACT_CALFACT_D_Pos (16U) +#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */ +#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */ +#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */ +#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */ +#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */ +#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */ +#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */ +#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */ +#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00300000 */ + +/******************** Bit definition for ADC_GCOMP register *****************/ +#define ADC_GCOMP_GCOMPCOEFF_Pos (0U) +#define ADC_GCOMP_GCOMPCOEFF_Msk (0x3FFFUL << ADC_GCOMP_GCOMPCOEFF_Pos) /*!< 0x00003FFF */ +#define ADC_GCOMP_GCOMPCOEFF ADC_GCOMP_GCOMPCOEFF_Msk /*!< ADC Gain Compensation Coefficient */ + +/************************* ADC Common registers *****************************/ +/******************** Bit definition for ADC_CSR register *******************/ +#define ADC_CSR_ADRDY_MST_Pos (0U) +#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */ +#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */ +#define ADC_CSR_EOSMP_MST_Pos (1U) +#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */ +#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */ +#define ADC_CSR_EOC_MST_Pos (2U) +#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */ +#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_MST_Pos (3U) +#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */ +#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_MST_Pos (4U) +#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */ +#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */ +#define ADC_CSR_JEOC_MST_Pos (5U) +#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */ +#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_MST_Pos (6U) +#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */ +#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_MST_Pos (7U) +#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */ +#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */ +#define ADC_CSR_AWD2_MST_Pos (8U) +#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */ +#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */ +#define ADC_CSR_AWD3_MST_Pos (9U) +#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */ +#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_MST_Pos (10U) +#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */ +#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */ + +#define ADC_CSR_ADRDY_SLV_Pos (16U) +#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */ +#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */ +#define ADC_CSR_EOSMP_SLV_Pos (17U) +#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */ +#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */ +#define ADC_CSR_EOC_SLV_Pos (18U) +#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */ +#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_SLV_Pos (19U) +#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */ +#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_SLV_Pos (20U) +#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */ +#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */ +#define ADC_CSR_JEOC_SLV_Pos (21U) +#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */ +#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_SLV_Pos (22U) +#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */ +#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_SLV_Pos (23U) +#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */ +#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */ +#define ADC_CSR_AWD2_SLV_Pos (24U) +#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */ +#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */ +#define ADC_CSR_AWD3_SLV_Pos (25U) +#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */ +#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_SLV_Pos (26U) +#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */ +#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_CCR register *******************/ +#define ADC_CCR_DUAL_Pos (0U) +#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */ +#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */ +#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */ +#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */ +#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */ +#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */ +#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */ + +#define ADC_CCR_DELAY_Pos (8U) +#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */ +#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */ +#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */ +#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */ +#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */ +#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */ + +#define ADC_CCR_DMACFG_Pos (13U) +#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */ +#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */ + +#define ADC_CCR_MDMA_Pos (14U) +#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */ +#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */ +#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */ +#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */ + +#define ADC_CCR_CKMODE_Pos (16U) +#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */ +#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */ +#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */ +#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */ + +#define ADC_CCR_PRESC_Pos (18U) +#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */ +#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */ +#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */ +#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */ +#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */ +#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */ + +#define ADC_CCR_VREFEN_Pos (22U) +#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */ +#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */ +#define ADC_CCR_VSENSESEL_Pos (23U) +#define ADC_CCR_VSENSESEL_Msk (0x1UL << ADC_CCR_VSENSESEL_Pos) /*!< 0x00800000 */ +#define ADC_CCR_VSENSESEL ADC_CCR_VSENSESEL_Msk /*!< ADC internal path to temperature sensor enable */ +#define ADC_CCR_VBATSEL_Pos (24U) +#define ADC_CCR_VBATSEL_Msk (0x1UL << ADC_CCR_VBATSEL_Pos) /*!< 0x01000000 */ +#define ADC_CCR_VBATSEL ADC_CCR_VBATSEL_Msk /*!< ADC internal path to battery voltage enable */ + +/******************** Bit definition for ADC_CDR register *******************/ +#define ADC_CDR_RDATA_MST_Pos (0U) +#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */ +#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */ + +#define ADC_CDR_RDATA_SLV_Pos (16U) +#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */ +#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */ + + +/******************************************************************************/ +/* */ +/* Analog Comparators (COMP) */ +/* */ +/******************************************************************************/ +/********************** Bit definition for COMP_CSR register ****************/ +#define COMP_CSR_EN_Pos (0U) +#define COMP_CSR_EN_Msk (0x1UL << COMP_CSR_EN_Pos) /*!< 0x00000001 */ +#define COMP_CSR_EN COMP_CSR_EN_Msk /*!< Comparator enable */ + +#define COMP_CSR_INMSEL_Pos (4U) +#define COMP_CSR_INMSEL_Msk (0xFUL << COMP_CSR_INMSEL_Pos) /*!< 0x00000070 */ +#define COMP_CSR_INMSEL COMP_CSR_INMSEL_Msk /*!< Comparator input minus selection */ +#define COMP_CSR_INMSEL_0 (0x1UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000010 */ +#define COMP_CSR_INMSEL_1 (0x2UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000020 */ +#define COMP_CSR_INMSEL_2 (0x4UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000040 */ +#define COMP_CSR_INMSEL_3 (0x8UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000080 */ + +#define COMP_CSR_INPSEL_Pos (8U) +#define COMP_CSR_INPSEL_Msk (0x1UL << COMP_CSR_INPSEL_Pos) /*!< 0x00000100 */ +#define COMP_CSR_INPSEL COMP_CSR_INPSEL_Msk /*!< Comparator input plus selection */ + +#define COMP_CSR_POLARITY_Pos (15U) +#define COMP_CSR_POLARITY_Msk (0x1UL << COMP_CSR_POLARITY_Pos) /*!< 0x00008000 */ +#define COMP_CSR_POLARITY COMP_CSR_POLARITY_Msk /*!< Comparator output polarity */ + +#define COMP_CSR_HYST_Pos (16U) +#define COMP_CSR_HYST_Msk (0x7UL << COMP_CSR_HYST_Pos) /*!< 0x00070000 */ +#define COMP_CSR_HYST COMP_CSR_HYST_Msk /*!< Comparator hysteresis */ +#define COMP_CSR_HYST_0 (0x1UL << COMP_CSR_HYST_Pos) /*!< 0x00010000 */ +#define COMP_CSR_HYST_1 (0x2UL << COMP_CSR_HYST_Pos) /*!< 0x00020000 */ +#define COMP_CSR_HYST_2 (0x4UL << COMP_CSR_HYST_Pos) /*!< 0x00040000 */ + +#define COMP_CSR_BLANKING_Pos (19U) +#define COMP_CSR_BLANKING_Msk (0x7UL << COMP_CSR_BLANKING_Pos) /*!< 0x00380000 */ +#define COMP_CSR_BLANKING COMP_CSR_BLANKING_Msk /*!< Comparator blanking source */ +#define COMP_CSR_BLANKING_0 (0x1UL << COMP_CSR_BLANKING_Pos) /*!< 0x00080000 */ +#define COMP_CSR_BLANKING_1 (0x2UL << COMP_CSR_BLANKING_Pos) /*!< 0x00100000 */ +#define COMP_CSR_BLANKING_2 (0x4UL << COMP_CSR_BLANKING_Pos) /*!< 0x00200000 */ + +#define COMP_CSR_BRGEN_Pos (22U) +#define COMP_CSR_BRGEN_Msk (0x1UL << COMP_CSR_BRGEN_Pos) /*!< 0x00400000 */ +#define COMP_CSR_BRGEN COMP_CSR_BRGEN_Msk /*!< Comparator scaler bridge enable */ + +#define COMP_CSR_SCALEN_Pos (23U) +#define COMP_CSR_SCALEN_Msk (0x1UL << COMP_CSR_SCALEN_Pos) /*!< 0x00800000 */ +#define COMP_CSR_SCALEN COMP_CSR_SCALEN_Msk /*!< Comparator voltage scaler enable */ + +#define COMP_CSR_VALUE_Pos (30U) +#define COMP_CSR_VALUE_Msk (0x1UL << COMP_CSR_VALUE_Pos) /*!< 0x40000000 */ +#define COMP_CSR_VALUE COMP_CSR_VALUE_Msk /*!< Comparator output level */ + +#define COMP_CSR_LOCK_Pos (31U) +#define COMP_CSR_LOCK_Msk (0x1UL << COMP_CSR_LOCK_Pos) /*!< 0x80000000 */ +#define COMP_CSR_LOCK COMP_CSR_LOCK_Msk /*!< Comparator lock */ + +/******************************************************************************/ +/* */ +/* CORDIC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CORDIC_CSR register *****************/ +#define CORDIC_CSR_FUNC_Pos (0U) +#define CORDIC_CSR_FUNC_Msk (0xFUL << CORDIC_CSR_FUNC_Pos) /*!< 0x0000000F */ +#define CORDIC_CSR_FUNC CORDIC_CSR_FUNC_Msk /*!< Function */ +#define CORDIC_CSR_FUNC_0 (0x1UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000001 */ +#define CORDIC_CSR_FUNC_1 (0x2UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000002 */ +#define CORDIC_CSR_FUNC_2 (0x4UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000004 */ +#define CORDIC_CSR_FUNC_3 (0x8UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000008 */ +#define CORDIC_CSR_PRECISION_Pos (4U) +#define CORDIC_CSR_PRECISION_Msk (0xFUL << CORDIC_CSR_PRECISION_Pos) /*!< 0x000000F0 */ +#define CORDIC_CSR_PRECISION CORDIC_CSR_PRECISION_Msk /*!< Precision */ +#define CORDIC_CSR_PRECISION_0 (0x1UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000010 */ +#define CORDIC_CSR_PRECISION_1 (0x2UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000020 */ +#define CORDIC_CSR_PRECISION_2 (0x4UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000040 */ +#define CORDIC_CSR_PRECISION_3 (0x8UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000080 */ +#define CORDIC_CSR_SCALE_Pos (8U) +#define CORDIC_CSR_SCALE_Msk (0x7UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000700 */ +#define CORDIC_CSR_SCALE CORDIC_CSR_SCALE_Msk /*!< Scaling factor */ +#define CORDIC_CSR_SCALE_0 (0x1UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000100 */ +#define CORDIC_CSR_SCALE_1 (0x2UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000200 */ +#define CORDIC_CSR_SCALE_2 (0x4UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000400 */ +#define CORDIC_CSR_IEN_Pos (16U) +#define CORDIC_CSR_IEN_Msk (0x1UL << CORDIC_CSR_IEN_Pos) /*!< 0x00010000 */ +#define CORDIC_CSR_IEN CORDIC_CSR_IEN_Msk /*!< Interrupt Enable */ +#define CORDIC_CSR_DMAREN_Pos (17U) +#define CORDIC_CSR_DMAREN_Msk (0x1UL << CORDIC_CSR_DMAREN_Pos) /*!< 0x00020000 */ +#define CORDIC_CSR_DMAREN CORDIC_CSR_DMAREN_Msk /*!< DMA Read channel Enable */ +#define CORDIC_CSR_DMAWEN_Pos (18U) +#define CORDIC_CSR_DMAWEN_Msk (0x1UL << CORDIC_CSR_DMAWEN_Pos) /*!< 0x00040000 */ +#define CORDIC_CSR_DMAWEN CORDIC_CSR_DMAWEN_Msk /*!< DMA Write channel Enable */ +#define CORDIC_CSR_NRES_Pos (19U) +#define CORDIC_CSR_NRES_Msk (0x1UL << CORDIC_CSR_NRES_Pos) /*!< 0x00080000 */ +#define CORDIC_CSR_NRES CORDIC_CSR_NRES_Msk /*!< Number of results in WDATA register */ +#define CORDIC_CSR_NARGS_Pos (20U) +#define CORDIC_CSR_NARGS_Msk (0x1UL << CORDIC_CSR_NARGS_Pos) /*!< 0x00100000 */ +#define CORDIC_CSR_NARGS CORDIC_CSR_NARGS_Msk /*!< Number of arguments in RDATA register */ +#define CORDIC_CSR_RESSIZE_Pos (21U) +#define CORDIC_CSR_RESSIZE_Msk (0x1UL << CORDIC_CSR_RESSIZE_Pos) /*!< 0x00200000 */ +#define CORDIC_CSR_RESSIZE CORDIC_CSR_RESSIZE_Msk /*!< Width of output data */ +#define CORDIC_CSR_ARGSIZE_Pos (22U) +#define CORDIC_CSR_ARGSIZE_Msk (0x1UL << CORDIC_CSR_ARGSIZE_Pos) /*!< 0x00400000 */ +#define CORDIC_CSR_ARGSIZE CORDIC_CSR_ARGSIZE_Msk /*!< Width of input data */ +#define CORDIC_CSR_RRDY_Pos (31U) +#define CORDIC_CSR_RRDY_Msk (0x1UL << CORDIC_CSR_RRDY_Pos) /*!< 0x80000000 */ +#define CORDIC_CSR_RRDY CORDIC_CSR_RRDY_Msk /*!< Result Ready Flag */ + +/******************* Bit definition for CORDIC_WDATA register ***************/ +#define CORDIC_WDATA_ARG_Pos (0U) +#define CORDIC_WDATA_ARG_Msk (0xFFFFFFFFUL << CORDIC_WDATA_ARG_Pos) /*!< 0xFFFFFFFF */ +#define CORDIC_WDATA_ARG CORDIC_WDATA_ARG_Msk /*!< Input Argument */ + +/******************* Bit definition for CORDIC_RDATA register ***************/ +#define CORDIC_RDATA_RES_Pos (0U) +#define CORDIC_RDATA_RES_Msk (0xFFFFFFFFUL << CORDIC_RDATA_RES_Pos) /*!< 0xFFFFFFFF */ +#define CORDIC_RDATA_RES CORDIC_RDATA_RES_Msk /*!< Output Result */ + +/******************************************************************************/ +/* */ +/* CRC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR_Pos (0U) +#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR_Pos (0U) +#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bit data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET_Pos (0U) +#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */ +#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */ +#define CRC_CR_POLYSIZE_Pos (3U) +#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */ +#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */ +#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */ +#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */ +#define CRC_CR_REV_IN_Pos (5U) +#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */ +#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */ +#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */ +#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */ +#define CRC_CR_REV_OUT_Pos (7U) +#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */ +#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */ + +/******************* Bit definition for CRC_INIT register *******************/ +#define CRC_INIT_INIT_Pos (0U) +#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */ +#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */ + +/******************* Bit definition for CRC_POL register ********************/ +#define CRC_POL_POL_Pos (0U) +#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */ +#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */ + +/******************************************************************************/ +/* */ +/* CRS Clock Recovery System */ +/******************************************************************************/ + +/******************* Bit definition for CRS_CR register *********************/ +#define CRS_CR_SYNCOKIE_Pos (0U) +#define CRS_CR_SYNCOKIE_Msk (0x1UL << CRS_CR_SYNCOKIE_Pos) /*!< 0x00000001 */ +#define CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE_Msk /*!< SYNC event OK interrupt enable */ +#define CRS_CR_SYNCWARNIE_Pos (1U) +#define CRS_CR_SYNCWARNIE_Msk (0x1UL << CRS_CR_SYNCWARNIE_Pos) /*!< 0x00000002 */ +#define CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE_Msk /*!< SYNC warning interrupt enable */ +#define CRS_CR_ERRIE_Pos (2U) +#define CRS_CR_ERRIE_Msk (0x1UL << CRS_CR_ERRIE_Pos) /*!< 0x00000004 */ +#define CRS_CR_ERRIE CRS_CR_ERRIE_Msk /*!< SYNC error or trimming error interrupt enable */ +#define CRS_CR_ESYNCIE_Pos (3U) +#define CRS_CR_ESYNCIE_Msk (0x1UL << CRS_CR_ESYNCIE_Pos) /*!< 0x00000008 */ +#define CRS_CR_ESYNCIE CRS_CR_ESYNCIE_Msk /*!< Expected SYNC interrupt enable */ +#define CRS_CR_CEN_Pos (5U) +#define CRS_CR_CEN_Msk (0x1UL << CRS_CR_CEN_Pos) /*!< 0x00000020 */ +#define CRS_CR_CEN CRS_CR_CEN_Msk /*!< Frequency error counter enable */ +#define CRS_CR_AUTOTRIMEN_Pos (6U) +#define CRS_CR_AUTOTRIMEN_Msk (0x1UL << CRS_CR_AUTOTRIMEN_Pos) /*!< 0x00000040 */ +#define CRS_CR_AUTOTRIMEN CRS_CR_AUTOTRIMEN_Msk /*!< Automatic trimming enable */ +#define CRS_CR_SWSYNC_Pos (7U) +#define CRS_CR_SWSYNC_Msk (0x1UL << CRS_CR_SWSYNC_Pos) /*!< 0x00000080 */ +#define CRS_CR_SWSYNC CRS_CR_SWSYNC_Msk /*!< Generate software SYNC event */ +#define CRS_CR_TRIM_Pos (8U) +#define CRS_CR_TRIM_Msk (0x7FUL << CRS_CR_TRIM_Pos) /*!< 0x00007F00 */ +#define CRS_CR_TRIM CRS_CR_TRIM_Msk /*!< HSI48 oscillator smooth trimming */ + +/******************* Bit definition for CRS_CFGR register *********************/ +#define CRS_CFGR_RELOAD_Pos (0U) +#define CRS_CFGR_RELOAD_Msk (0xFFFFUL << CRS_CFGR_RELOAD_Pos) /*!< 0x0000FFFF */ +#define CRS_CFGR_RELOAD CRS_CFGR_RELOAD_Msk /*!< Counter reload value */ +#define CRS_CFGR_FELIM_Pos (16U) +#define CRS_CFGR_FELIM_Msk (0xFFUL << CRS_CFGR_FELIM_Pos) /*!< 0x00FF0000 */ +#define CRS_CFGR_FELIM CRS_CFGR_FELIM_Msk /*!< Frequency error limit */ + +#define CRS_CFGR_SYNCDIV_Pos (24U) +#define CRS_CFGR_SYNCDIV_Msk (0x7UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x07000000 */ +#define CRS_CFGR_SYNCDIV CRS_CFGR_SYNCDIV_Msk /*!< SYNC divider */ +#define CRS_CFGR_SYNCDIV_0 (0x1UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x01000000 */ +#define CRS_CFGR_SYNCDIV_1 (0x2UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x02000000 */ +#define CRS_CFGR_SYNCDIV_2 (0x4UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x04000000 */ + +#define CRS_CFGR_SYNCSRC_Pos (28U) +#define CRS_CFGR_SYNCSRC_Msk (0x3UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x30000000 */ +#define CRS_CFGR_SYNCSRC CRS_CFGR_SYNCSRC_Msk /*!< SYNC signal source selection */ +#define CRS_CFGR_SYNCSRC_0 (0x1UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x10000000 */ +#define CRS_CFGR_SYNCSRC_1 (0x2UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x20000000 */ + +#define CRS_CFGR_SYNCPOL_Pos (31U) +#define CRS_CFGR_SYNCPOL_Msk (0x1UL << CRS_CFGR_SYNCPOL_Pos) /*!< 0x80000000 */ +#define CRS_CFGR_SYNCPOL CRS_CFGR_SYNCPOL_Msk /*!< SYNC polarity selection */ + +/******************* Bit definition for CRS_ISR register *********************/ +#define CRS_ISR_SYNCOKF_Pos (0U) +#define CRS_ISR_SYNCOKF_Msk (0x1UL << CRS_ISR_SYNCOKF_Pos) /*!< 0x00000001 */ +#define CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF_Msk /*!< SYNC event OK flag */ +#define CRS_ISR_SYNCWARNF_Pos (1U) +#define CRS_ISR_SYNCWARNF_Msk (0x1UL << CRS_ISR_SYNCWARNF_Pos) /*!< 0x00000002 */ +#define CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF_Msk /*!< SYNC warning flag */ +#define CRS_ISR_ERRF_Pos (2U) +#define CRS_ISR_ERRF_Msk (0x1UL << CRS_ISR_ERRF_Pos) /*!< 0x00000004 */ +#define CRS_ISR_ERRF CRS_ISR_ERRF_Msk /*!< Error flag */ +#define CRS_ISR_ESYNCF_Pos (3U) +#define CRS_ISR_ESYNCF_Msk (0x1UL << CRS_ISR_ESYNCF_Pos) /*!< 0x00000008 */ +#define CRS_ISR_ESYNCF CRS_ISR_ESYNCF_Msk /*!< Expected SYNC flag */ +#define CRS_ISR_SYNCERR_Pos (8U) +#define CRS_ISR_SYNCERR_Msk (0x1UL << CRS_ISR_SYNCERR_Pos) /*!< 0x00000100 */ +#define CRS_ISR_SYNCERR CRS_ISR_SYNCERR_Msk /*!< SYNC error */ +#define CRS_ISR_SYNCMISS_Pos (9U) +#define CRS_ISR_SYNCMISS_Msk (0x1UL << CRS_ISR_SYNCMISS_Pos) /*!< 0x00000200 */ +#define CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS_Msk /*!< SYNC missed */ +#define CRS_ISR_TRIMOVF_Pos (10U) +#define CRS_ISR_TRIMOVF_Msk (0x1UL << CRS_ISR_TRIMOVF_Pos) /*!< 0x00000400 */ +#define CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF_Msk /*!< Trimming overflow or underflow */ +#define CRS_ISR_FEDIR_Pos (15U) +#define CRS_ISR_FEDIR_Msk (0x1UL << CRS_ISR_FEDIR_Pos) /*!< 0x00008000 */ +#define CRS_ISR_FEDIR CRS_ISR_FEDIR_Msk /*!< Frequency error direction */ +#define CRS_ISR_FECAP_Pos (16U) +#define CRS_ISR_FECAP_Msk (0xFFFFUL << CRS_ISR_FECAP_Pos) /*!< 0xFFFF0000 */ +#define CRS_ISR_FECAP CRS_ISR_FECAP_Msk /*!< Frequency error capture */ + +/******************* Bit definition for CRS_ICR register *********************/ +#define CRS_ICR_SYNCOKC_Pos (0U) +#define CRS_ICR_SYNCOKC_Msk (0x1UL << CRS_ICR_SYNCOKC_Pos) /*!< 0x00000001 */ +#define CRS_ICR_SYNCOKC CRS_ICR_SYNCOKC_Msk /*!< SYNC event OK clear flag */ +#define CRS_ICR_SYNCWARNC_Pos (1U) +#define CRS_ICR_SYNCWARNC_Msk (0x1UL << CRS_ICR_SYNCWARNC_Pos) /*!< 0x00000002 */ +#define CRS_ICR_SYNCWARNC CRS_ICR_SYNCWARNC_Msk /*!< SYNC warning clear flag */ +#define CRS_ICR_ERRC_Pos (2U) +#define CRS_ICR_ERRC_Msk (0x1UL << CRS_ICR_ERRC_Pos) /*!< 0x00000004 */ +#define CRS_ICR_ERRC CRS_ICR_ERRC_Msk /*!< Error clear flag */ +#define CRS_ICR_ESYNCC_Pos (3U) +#define CRS_ICR_ESYNCC_Msk (0x1UL << CRS_ICR_ESYNCC_Pos) /*!< 0x00000008 */ +#define CRS_ICR_ESYNCC CRS_ICR_ESYNCC_Msk /*!< Expected SYNC clear flag */ + +/******************************************************************************/ +/* */ +/* Digital to Analog Converter */ +/* */ +/******************************************************************************/ +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G4 series) + */ +#define DAC_CHANNEL2_SUPPORT /*!< DAC feature available only on specific devices: DAC channel 2 available */ + +/******************** Bit definition for DAC_CR register ********************/ +#define DAC_CR_EN1_Pos (0U) +#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */ +#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!*/ +#define DAC_CR_CEN1_Pos (14U) +#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */ +#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/ + +#define DAC_CR_HFSEL_Pos (15U) +#define DAC_CR_HFSEL_Msk (0x1UL << DAC_CR_HFSEL_Pos) /*!< 0x00008000 */ +#define DAC_CR_HFSEL DAC_CR_HFSEL_Msk /*!*/ + +#define DAC_CR_EN2_Pos (16U) +#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */ +#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/ +#define DAC_CR_CEN2_Pos (30U) +#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */ +#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/ + +/***************** Bit definition for DAC_SWTRIGR register ******************/ +#define DAC_SWTRIGR_SWTRIG1_Pos (0U) +#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */ +#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!CPACR |= ((3UL << (10*2))|(3UL << (11*2))); /* set CP10 and CP11 Full Access */ + #endif + + /* 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 */ +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(***) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (**) HSI_VALUE is a constant defined in stm32g4xx_hal.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (***) HSE_VALUE is a constant defined in stm32g4xx_hal.h file (default value + * 24 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + uint32_t tmp, pllvco, pllr, pllsource, pllm; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (RCC->CFGR & RCC_CFGR_SWS) + { + case 0x04: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + break; + + case 0x08: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + + case 0x0C: /* PLL used as system clock source */ + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> 4) + 1U ; + if (pllsource == 0x02UL) /* HSI used as PLL clock source */ + { + pllvco = (HSI_VALUE / pllm); + } + else /* HSE used as PLL clock source */ + { + pllvco = (HSE_VALUE / pllm); + } + pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 8); + pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 25) + 1U) * 2U; + SystemCoreClock = pllvco/pllr; + break; + + default: + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +void SystemClock_Config() // STM32G431CBT6 +{ + // 1. Включить тактирование для интерфейса управления питанием (PWR) + // Это действие необходимо совершать одним из первых. + RCC->APB1ENR1 |= RCC_APB1ENR1_PWREN; + + // 2. Установить задержку Flash ПЕРЕД любым увеличением частоты. + // При переключении на PLL 170 МГц и Vcore Range 1 требуется 4 цикла ожидания. + // Безопаснее установить это значение заранее, пока система работает на низкой частоте HSI. + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, FLASH_ACR_LATENCY_4WS); + + // 3. Включить prefetch buffer, instruction cache и data cache для максимальной производительности. + FLASH->ACR |= FLASH_ACR_PRFTEN | FLASH_ACR_ICEN | FLASH_ACR_DCEN; + + // 4. Включить и дождаться готовности HSI (16 МГц). + // Это важно, даже если он уже включен по умолчанию, для явного контроля. + RCC->CR |= RCC_CR_HSION; + while(!(RCC->CR & RCC_CR_HSIRDY)); + + // 5. Настроить масштабирование напряжения на Range 1 (High-performance). + // Это необходимо для работы на высоких частотах. + // ВАЖНО: Делать это ДО включения PLL и переключения на него. + MODIFY_REG(PWR->CR1, PWR_CR1_VOS, PWR_CR1_VOS_0); + // Ожидаем готовности регулятора напряжения (ухода флага VOSF). + while ((PWR->SR2 & PWR_SR2_VOSF) != 0); + + // 6. Включить режим Range 1 Boost для частот > 150 МГц. + // Согласно документации (Reference Manual), это нужно делать, когда система + // тактируется от HSI/HSE, ДО включения PLL. + PWR->CR5 |= PWR_CR5_R1MODE; + + // 7. Убедиться, что PLL выключен, перед его настройкой. + RCC->CR &= ~RCC_CR_PLLON; + while(RCC->CR & RCC_CR_PLLRDY); + + // 8. Настроить PLL для получения 170 МГц от HSI. + // SYSCLK = (HSI / M) * N / R = (16МГц / 4) * 85 / 2 = 170 МГц + // VCO = (HSI / M) * N = 4МГц * 85 = 340 МГц (в допустимом диапазоне 64..344 МГц) + RCC->PLLCFGR = (RCC_PLLCFGR_PLLSRC_HSI | // Источник: HSI (16 МГц) + (3 << RCC_PLLCFGR_PLLM_Pos) | // Предделитель M = 4 (записывается 3) + (85 << RCC_PLLCFGR_PLLN_Pos) | // Множитель N = 85 + RCC_PLLCFGR_PLLREN); // Включить главный выход PLL 'R' + // PLLR divider = 2 (по умолчанию, запись 0) + + // 9. Включить PLL и дождаться его готовности. + RCC->CR |= RCC_CR_PLLON; + while(!(RCC->CR & RCC_CR_PLLRDY)); + + // 10. Переключить системные часы (SYSCLK) на PLL. + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_CFGR_SW_PLL); + // Ожидаем подтверждения, что система действительно переключилась на PLL. + while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); + + // 11. Обновить глобальную переменную с частотой ядра. + // Это необходимо для корректной работы функций HAL/CMSIS (например, для настройки SysTick). + SystemCoreClock = 170000000UL; +} diff --git a/system_stm32g4xx.h b/system_stm32g4xx.h new file mode 100644 index 0000000..ed341a8 --- /dev/null +++ b/system_stm32g4xx.h @@ -0,0 +1,104 @@ +/** + ****************************************************************************** + * @file system_stm32g4xx.h + * @author MCD Application Team + * @brief CMSIS Cortex-M4 Device System Source File for STM32G4xx devices. + ****************************************************************************** + * @attention + * + * Copyright (c) 2019 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32g4xx_system + * @{ + */ + +/** + * @brief Define to prevent recursive inclusion + */ +#ifndef __SYSTEM_STM32G4XX_H +#define __SYSTEM_STM32G4XX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup STM32G4xx_System_Includes + * @{ + */ + +/** + * @} + */ + + +/** @addtogroup STM32G4xx_System_Exported_Variables + * @{ + */ + /* The SystemCoreClock variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetSysClockFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */ +extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */ + +/** + * @} + */ + +/** @addtogroup STM32G4xx_System_Exported_Constants + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32G4xx_System_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32G4xx_System_Exported_Functions + * @{ + */ + +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /*__SYSTEM_STM32G4XX_H */ + +/** + * @} + */ + +/** + * @} + */