From 95455a716158610ff554ed75e4b1d107b89ab2eb Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:30:57 +0100 Subject: [PATCH] Add `usart.{h, c}` --- build/final.elf | Bin 55328 -> 55508 bytes build/final.elf.map | 101 +- build/gpio.S | 200 +- build/gpio.i | 8 +- build/gpio.o | Bin 42920 -> 43004 bytes build/main.S | 483 ++-- build/main.i | 11 +- build/main.o | Bin 48580 -> 48780 bytes build/timer.S | 265 +- build/timer.i | 3 + build/timer.o | Bin 44604 -> 44720 bytes build/usart.S | 6189 +++++++++++++++++++++++++++++++++++++++++++ build/usart.i | 2254 ++++++++++++++++ build/usart.o | Bin 0 -> 47772 bytes src/gpio.h | 4 + src/rcc.h | 3 + src/usart.c | 66 + src/usart.h | 50 + 18 files changed, 9159 insertions(+), 478 deletions(-) create mode 100644 build/usart.S create mode 100644 build/usart.i create mode 100644 build/usart.o create mode 100644 src/usart.c create mode 100644 src/usart.h diff --git a/build/final.elf b/build/final.elf index 4974603064a1839a673dbabdba1e2aa6d0587b2f..f408989771ce71cd14427a28a4d2607cbb093304 100755 GIT binary patch delta 17043 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 JnIr=P0|2S5YGD8X delta 16897 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 CI4r6F diff --git a/build/final.elf.map b/build/final.elf.map index 2a42ce1..4610e2f 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -54,7 +54,7 @@ Discarded input sections .debug_macro 0x00000000 0x89 build/main.o .debug_macro 0x00000000 0x4cc build/main.o .debug_macro 0x00000000 0x22 build/main.o - .debug_macro 0x00000000 0x34 build/main.o + .debug_macro 0x00000000 0x40 build/main.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o @@ -98,6 +98,64 @@ Discarded input sections .debug_macro 0x00000000 0x89 build/timer.o .debug_macro 0x00000000 0x4cc build/timer.o .debug_macro 0x00000000 0x22 build/timer.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .text 0x00000000 0x0 build/usart.o + .data 0x00000000 0x0 build/usart.o + .bss 0x00000000 0x0 build/usart.o + .text.usart2_init + 0x00000000 0xb8 build/usart.o + .text.usart2_start + 0x00000000 0x20 build/usart.o + .text.usart2_write_byte + 0x00000000 0x30 build/usart.o + .text.usart2_write + 0x00000000 0x2a build/usart.o + .debug_info 0x00000000 0x381 build/usart.o + .debug_abbrev 0x00000000 0x16a build/usart.o + .debug_aranges + 0x00000000 0x38 build/usart.o + .debug_rnglists + 0x00000000 0x26 build/usart.o + .debug_macro 0x00000000 0xb74 build/usart.o + .debug_macro 0x00000000 0x22 build/usart.o + .debug_macro 0x00000000 0x75 build/usart.o + .debug_macro 0x00000000 0x2a build/usart.o + .debug_macro 0x00000000 0x5c build/usart.o + .debug_macro 0x00000000 0x3c build/usart.o + .debug_macro 0x00000000 0x103 build/usart.o + .debug_macro 0x00000000 0x3a build/usart.o + .debug_macro 0x00000000 0x57 build/usart.o + .debug_macro 0x00000000 0x6a build/usart.o + .debug_macro 0x00000000 0x1df build/usart.o + .debug_macro 0x00000000 0x89 build/usart.o + .debug_macro 0x00000000 0x4cc build/usart.o + .debug_macro 0x00000000 0x130 build/usart.o + .debug_macro 0x00000000 0x22 build/usart.o + .debug_macro 0x00000000 0x3a build/usart.o + .debug_macro 0x00000000 0x5e build/usart.o + .debug_line 0x00000000 0x179 build/usart.o + .debug_str 0x00000000 0x5ec2 build/usart.o + .comment 0x00000000 0x46 build/usart.o + .debug_line_str + 0x00000000 0x26c build/usart.o + .debug_frame 0x00000000 0xa0 build/usart.o + .ARM.attributes + 0x00000000 0x34 build/usart.o Memory Configuration @@ -114,6 +172,7 @@ LOAD build/gpio.o LOAD build/main.o LOAD build/startup.o LOAD build/timer.o +LOAD build/usart.o 0x20020000 stack_start = (ORIGIN (sram) + LENGTH (sram)) .isr_vector 0x08000000 0x198 @@ -296,7 +355,7 @@ LOAD linker stubs .debug_rnglists 0x0000005a 0x19 build/timer.o -.debug_macro 0x00000000 0x3ba0 +.debug_macro 0x00000000 0x3bc4 .debug_macro 0x00000000 0xb56 build/gpio.o .debug_macro 0x00000b56 0x22 build/gpio.o .debug_macro 0x00000b78 0x75 build/gpio.o @@ -311,17 +370,17 @@ LOAD linker stubs .debug_macro 0x0000108c 0x89 build/gpio.o .debug_macro 0x00001115 0x4cc build/gpio.o .debug_macro 0x000015e1 0x22 build/gpio.o - .debug_macro 0x00001603 0x34 build/gpio.o - .debug_macro 0x00001637 0xb80 build/main.o - .debug_macro 0x000021b7 0x12a build/main.o - .debug_macro 0x000022e1 0x46 build/main.o - .debug_macro 0x00002327 0x2e build/main.o - .debug_macro 0x00002355 0x22 build/main.o - .debug_macro 0x00002377 0xb02 build/startup.o - .debug_macro 0x00002e79 0x56 build/startup.o - .debug_macro 0x00002ecf 0x51 build/startup.o - .debug_macro 0x00002f20 0xb5c build/timer.o - .debug_macro 0x00003a7c 0x124 build/timer.o + .debug_macro 0x00001603 0x40 build/gpio.o + .debug_macro 0x00001643 0xb80 build/main.o + .debug_macro 0x000021c3 0x136 build/main.o + .debug_macro 0x000022f9 0x46 build/main.o + .debug_macro 0x0000233f 0x2e build/main.o + .debug_macro 0x0000236d 0x22 build/main.o + .debug_macro 0x0000238f 0xb02 build/startup.o + .debug_macro 0x00002e91 0x56 build/startup.o + .debug_macro 0x00002ee7 0x51 build/startup.o + .debug_macro 0x00002f38 0xb5c build/timer.o + .debug_macro 0x00003a94 0x130 build/timer.o .debug_line 0x00000000 0x516 .debug_line 0x00000000 0x179 build/gpio.o @@ -329,15 +388,15 @@ LOAD linker stubs .debug_line 0x0000034d 0xea build/startup.o .debug_line 0x00000437 0xdf build/timer.o -.debug_str 0x00000000 0x5ed0 - .debug_str 0x00000000 0x538b build/gpio.o - 0x553b (size before relaxing) - .debug_str 0x0000538b 0xab1 build/main.o - 0x5f7e (size before relaxing) - .debug_str 0x00005e3c 0x88 build/startup.o +.debug_str 0x00000000 0x5f5e + .debug_str 0x00000000 0x53c1 build/gpio.o + 0x5571 (size before relaxing) + .debug_str 0x000053c1 0xb09 build/main.o + 0x600c (size before relaxing) + .debug_str 0x00005eca 0x88 build/startup.o 0x3cdc (size before relaxing) - .debug_str 0x00005ec4 0xc build/timer.o - 0x5b16 (size before relaxing) + .debug_str 0x00005f52 0xc build/timer.o + 0x5b6e (size before relaxing) .comment 0x00000000 0x45 .comment 0x00000000 0x45 build/gpio.o diff --git a/build/gpio.S b/build/gpio.S index 9e89fa0..b1a9fc5 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -311,10 +311,10 @@ gpio_write: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0xa - .4byte .LASF898 - .byte 0x1d - .4byte .LASF899 .4byte .LASF900 + .byte 0x1d + .4byte .LASF901 + .4byte .LASF902 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -322,9 +322,9 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x6 - .4byte .LASF863 + .4byte .LASF865 .uleb128 0x2 - .4byte .LASF866 + .4byte .LASF868 .byte 0x2 .byte 0x2b .byte 0x17 @@ -332,13 +332,13 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x8 - .4byte .LASF864 + .4byte .LASF866 .uleb128 0x1 .byte 0x2 .byte 0x5 - .4byte .LASF865 - .uleb128 0x2 .4byte .LASF867 + .uleb128 0x2 + .4byte .LASF869 .byte 0x2 .byte 0x39 .byte 0x1c @@ -346,13 +346,13 @@ gpio_write: .uleb128 0x1 .byte 0x2 .byte 0x7 - .4byte .LASF868 + .4byte .LASF870 .uleb128 0x1 .byte 0x4 .byte 0x5 - .4byte .LASF869 + .4byte .LASF871 .uleb128 0x2 - .4byte .LASF870 + .4byte .LASF872 .byte 0x2 .byte 0x4f .byte 0x1b @@ -360,21 +360,21 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF871 + .4byte .LASF873 .uleb128 0x1 .byte 0x8 .byte 0x5 - .4byte .LASF872 + .4byte .LASF874 .uleb128 0x1 .byte 0x8 .byte 0x7 - .4byte .LASF873 + .4byte .LASF875 .uleb128 0xb .byte 0x4 .byte 0x5 .ascii "int\000" .uleb128 0x2 - .4byte .LASF874 + .4byte .LASF876 .byte 0x2 .byte 0xe8 .byte 0x16 @@ -382,21 +382,21 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF875 + .4byte .LASF877 .uleb128 0x2 - .4byte .LASF876 + .4byte .LASF878 .byte 0x3 .byte 0x18 .byte 0x13 .4byte 0x31 .uleb128 0x2 - .4byte .LASF877 + .4byte .LASF879 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x4b .uleb128 0x2 - .4byte .LASF878 + .4byte .LASF880 .byte 0x3 .byte 0x30 .byte 0x14 @@ -404,35 +404,35 @@ gpio_write: .uleb128 0xc .4byte 0xb8 .uleb128 0x2 - .4byte .LASF879 + .4byte .LASF881 .byte 0x3 .byte 0x52 .byte 0x15 .4byte 0x8d .uleb128 0xd - .4byte .LASF896 + .4byte .LASF898 .byte 0x28 .byte 0x4 .byte 0x7 .byte 0x8 .4byte 0x151 .uleb128 0x3 - .4byte .LASF880 + .4byte .LASF882 .byte 0x8 .4byte 0xc4 .byte 0 .uleb128 0x3 - .4byte .LASF881 + .4byte .LASF883 .byte 0x9 .4byte 0xc4 .byte 0x4 .uleb128 0x3 - .4byte .LASF882 + .4byte .LASF884 .byte 0xa .4byte 0xc4 .byte 0x8 .uleb128 0x3 - .4byte .LASF883 + .4byte .LASF885 .byte 0xb .4byte 0xc4 .byte 0xc @@ -447,22 +447,22 @@ gpio_write: .4byte 0xc4 .byte 0x14 .uleb128 0x3 - .4byte .LASF884 + .4byte .LASF886 .byte 0xe .4byte 0xc4 .byte 0x18 .uleb128 0x3 - .4byte .LASF885 + .4byte .LASF887 .byte 0xf .4byte 0xc4 .byte 0x1c .uleb128 0x3 - .4byte .LASF886 + .4byte .LASF888 .byte 0x10 .4byte 0xc4 .byte 0x20 .uleb128 0x3 - .4byte .LASF887 + .4byte .LASF889 .byte 0x11 .4byte 0xc4 .byte 0x24 @@ -472,30 +472,30 @@ gpio_write: .byte 0x1 .4byte 0x3d .byte 0x4 - .byte 0x21 + .byte 0x25 .byte 0xe .4byte 0x178 .uleb128 0x5 - .4byte .LASF888 + .4byte .LASF890 .byte 0 .uleb128 0x5 - .4byte .LASF889 + .4byte .LASF891 .byte 0x1 .uleb128 0x5 - .4byte .LASF890 + .4byte .LASF892 .byte 0x2 .uleb128 0x5 - .4byte .LASF891 + .4byte .LASF893 .byte 0x3 .byte 0 .uleb128 0x2 - .4byte .LASF892 + .4byte .LASF894 .byte 0x4 - .byte 0x26 + .byte 0x2a .byte 0x3 .4byte 0x151 .uleb128 0x8 - .4byte .LASF894 + .4byte .LASF896 .byte 0x19 .4byte .LFB2 .4byte .LFE2-.LFB2 @@ -519,7 +519,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x6 - .4byte .LASF896 + .4byte .LASF898 .byte 0x1a .4byte 0x1c9 .uleb128 0x2 @@ -529,12 +529,12 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x2 - .4byte .LASF893 + .4byte .LASF895 .uleb128 0xf .byte 0x4 .4byte 0xd5 .uleb128 0x8 - .4byte .LASF895 + .4byte .LASF897 .byte 0xd .4byte .LFB1 .4byte .LFE1-.LFB1 @@ -558,7 +558,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x6 - .4byte .LASF896 + .4byte .LASF898 .byte 0xe .4byte 0x1c9 .uleb128 0x2 @@ -573,7 +573,7 @@ gpio_write: .sleb128 -16 .byte 0 .uleb128 0x10 - .4byte .LASF901 + .4byte .LASF903 .byte 0x1 .byte 0x6 .byte 0x6 @@ -590,7 +590,7 @@ gpio_write: .byte 0x91 .sleb128 -18 .uleb128 0x11 - .4byte .LASF897 + .4byte .LASF899 .byte 0x1 .byte 0x6 .byte 0x2c @@ -599,7 +599,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x6 - .4byte .LASF896 + .4byte .LASF898 .byte 0x7 .4byte 0x1c9 .uleb128 0x2 @@ -3704,7 +3704,7 @@ gpio_write: .uleb128 0x32 .4byte .LASF854 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.3af2911851c1c29c51024d0f06788d31,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.e8870d5e334b8cc926c6b43b65993420,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -3712,19 +3712,19 @@ gpio_write: .uleb128 0x2 .4byte .LASF855 .byte 0x5 - .uleb128 0x14 + .uleb128 0x15 .4byte .LASF856 .byte 0x5 - .uleb128 0x15 + .uleb128 0x16 .4byte .LASF857 .byte 0x5 - .uleb128 0x16 + .uleb128 0x18 .4byte .LASF858 .byte 0x5 .uleb128 0x19 .4byte .LASF859 .byte 0x5 - .uleb128 0x1b + .uleb128 0x1a .4byte .LASF860 .byte 0x5 .uleb128 0x1d @@ -3732,6 +3732,12 @@ gpio_write: .byte 0x5 .uleb128 0x1f .4byte .LASF862 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF863 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF864 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3776,7 +3782,7 @@ gpio_write: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF541: .ascii "_LONG_DOUBLE long double\000" -.LASF896: +.LASF898: .ascii "gpio\000" .LASF591: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -3784,7 +3790,7 @@ gpio_write: .ascii "_UINT32_T_DECLARED \000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF890: +.LASF892: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -3898,7 +3904,7 @@ gpio_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF898: +.LASF900: .ascii "GNU C2X 12.3.1 20230626 -mcpu=cortex-m4 -mthumb -mf" .ascii "loat-abi=hard -mfpu=fpv4-sp-d16 -march=armv7e-m+fp " .ascii "-g3 -ggdb -O0 -std=c2x -ffunction-sections -fdata-s" @@ -3967,7 +3973,7 @@ gpio_write: .ascii "__LACCUM_IBIT__ 32\000" .LASF592: .ascii "INT_LEAST8_MAX (__INT_LEAST8_MAX__)\000" -.LASF866: +.LASF868: .ascii "__uint8_t\000" .LASF81: .ascii "__SCHAR_WIDTH__ 8\000" @@ -3983,7 +3989,7 @@ gpio_write: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF858: +.LASF860: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF499: @@ -4009,6 +4015,8 @@ gpio_write: .ascii "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)\000" .LASF672: .ascii "__SCN8LEAST(x) __LEAST8 __STRINGIFY(x)\000" +.LASF857: + .ascii "GPIO_AF_USART2_TX (0b0111)\000" .LASF55: .ascii "__UINT_LEAST8_TYPE__ unsigned char\000" .LASF727: @@ -4017,7 +4025,7 @@ gpio_write: .ascii "__ACCUM_FBIT__ 15\000" .LASF791: .ascii "PRId64 __PRI64(d)\000" -.LASF869: +.LASF871: .ascii "long int\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" @@ -4113,7 +4121,7 @@ gpio_write: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF888: +.LASF890: .ascii "GPIO_MODE_INPUT\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -4123,11 +4131,11 @@ gpio_write: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF562: .ascii "_UINT8_T_DECLARED \000" -.LASF863: +.LASF865: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" -.LASF876: +.LASF878: .ascii "uint8_t\000" .LASF704: .ascii "SCNoFAST8 __SCN8FAST(o)\000" @@ -4137,7 +4145,7 @@ gpio_write: .ascii "__ARM_FEATURE_FMA 1\000" .LASF466: .ascii "_HAVE_LONG_DOUBLE 1\000" -.LASF892: +.LASF894: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -4161,7 +4169,7 @@ gpio_write: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF65: .ascii "__UINT_FAST32_TYPE__ unsigned int\000" -.LASF864: +.LASF866: .ascii "unsigned char\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" @@ -4207,13 +4215,13 @@ gpio_write: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF877: +.LASF879: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF893: +.LASF895: .ascii "_Bool\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" @@ -4231,9 +4239,9 @@ gpio_write: .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF859: +.LASF861: .ascii "PORT(port) (((port) - 'A') << 8)\000" -.LASF889: +.LASF891: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4271,7 +4279,7 @@ gpio_write: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF867: +.LASF869: .ascii "__uint16_t\000" .LASF224: .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" @@ -4481,7 +4489,7 @@ gpio_write: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF871: +.LASF873: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4497,7 +4505,9 @@ gpio_write: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF894: +.LASF856: + .ascii "GPIO_AF_USART2_RX (0b0111)\000" +.LASF896: .ascii "gpio_write\000" .LASF569: .ascii "__int32_t_defined 1\000" @@ -4541,7 +4551,7 @@ gpio_write: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF901: +.LASF903: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -4561,7 +4571,7 @@ gpio_write: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF879: +.LASF881: .ascii "uintptr_t\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4609,7 +4619,7 @@ gpio_write: .ascii "PRIX32 __PRI32(X)\000" .LASF773: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF882: +.LASF884: .ascii "OSPEEDR\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" @@ -4639,7 +4649,7 @@ gpio_write: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF870: +.LASF872: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4649,7 +4659,7 @@ gpio_write: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF872: +.LASF874: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4756,7 +4766,7 @@ gpio_write: .ascii "\000" .LASF582: .ascii "__int_fast16_t_defined 1\000" -.LASF880: +.LASF882: .ascii "MODER\000" .LASF482: .ascii "__FLOAT_TYPE float\000" @@ -4767,9 +4777,9 @@ gpio_write: .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF875: +.LASF877: .ascii "unsigned int\000" -.LASF874: +.LASF876: .ascii "__uintptr_t\000" .LASF459: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4799,7 +4809,7 @@ gpio_write: .ascii "__CHAR_BIT__ 8\000" .LASF143: .ascii "__FLT_EVAL_METHOD__ 0\000" -.LASF865: +.LASF867: .ascii "short int\000" .LASF685: .ascii "PRIdLEAST8 __PRI8LEAST(d)\000" @@ -4843,7 +4853,7 @@ gpio_write: .ascii "__ARM_FEATURE_COPROC 15\000" .LASF483: .ascii "__OBSOLETE_MATH_DEFAULT 1\000" -.LASF895: +.LASF897: .ascii "gpio_set_af\000" .LASF82: .ascii "__SHRT_WIDTH__ 16\000" @@ -4943,7 +4953,7 @@ gpio_write: .ascii "SCNuFAST16 __SCN16FAST(u)\000" .LASF801: .ascii "SCNx64 __SCN64(x)\000" -.LASF862: +.LASF864: .ascii "PINPORT(pin) (pin >> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" @@ -4991,7 +5001,7 @@ gpio_write: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF873: +.LASF875: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -5067,11 +5077,11 @@ gpio_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF576: .ascii "_UINTPTR_T_DECLARED \000" -.LASF887: +.LASF889: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF886: +.LASF888: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -5085,7 +5095,7 @@ gpio_write: .ascii "__INT32_TYPE__ long int\000" .LASF118: .ascii "__UINT_LEAST8_MAX__ 0xff\000" -.LASF885: +.LASF887: .ascii "LCKR\000" .LASF520: .ascii "__int20__ +2\000" @@ -5099,7 +5109,7 @@ gpio_write: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" -.LASF860: +.LASF862: .ascii "PIN(port,num) (PORT(port) | num)\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" @@ -5135,7 +5145,7 @@ gpio_write: .ascii "__QQ_IBIT__ 0\000" .LASF763: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF881: +.LASF883: .ascii "OTYPER\000" .LASF811: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -5155,11 +5165,11 @@ gpio_write: .ascii "__GNUC_MINOR__ 3\000" .LASF57: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" -.LASF899: +.LASF901: .ascii "src/gpio.c\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF856: +.LASF858: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" @@ -5211,7 +5221,7 @@ gpio_write: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" -.LASF857: +.LASF859: .ascii "GPIO_PORT_OFFSET (0x400U)\000" .LASF50: .ascii "__UINT64_TYPE__ long long unsigned int\000" @@ -5231,7 +5241,7 @@ gpio_write: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF883: +.LASF885: .ascii "PUPDR\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5239,7 +5249,7 @@ gpio_write: .ascii "__UINT16_C(c) c\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" -.LASF897: +.LASF899: .ascii "mode\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5253,7 +5263,7 @@ gpio_write: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF891: +.LASF893: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5291,7 +5301,7 @@ gpio_write: .ascii "__FAST8 \000" .LASF496: .ascii "__XSI_VISIBLE 0\000" -.LASF884: +.LASF886: .ascii "BSRR\000" .LASF794: .ascii "PRIu64 __PRI64(u)\000" @@ -5379,7 +5389,7 @@ gpio_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF878: +.LASF880: .ascii "uint32_t\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5429,13 +5439,13 @@ gpio_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF326: .ascii "__QQ_FBIT__ 7\000" -.LASF861: +.LASF863: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF868: +.LASF870: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5483,7 +5493,7 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF900: +.LASF902: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF249: .ascii "__SFRACT_MAX__ 0X7FP-7HR\000" diff --git a/build/gpio.i b/build/gpio.i index cb23541..9250b62 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -1999,6 +1999,10 @@ struct gpio { volatile uint32_t AFRH; }; + +#define GPIO_AF_USART2_RX (0b0111) +#define GPIO_AF_USART2_TX (0b0111) + #define GPIO_BASE_ADDR (0x40020000U) #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) @@ -2022,9 +2026,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_set_af(uint16_t pin, uint8_t af); void gpio_write(uint16_t pin, -# 42 "src/gpio.h" 3 4 +# 46 "src/gpio.h" 3 4 _Bool -# 42 "src/gpio.h" +# 46 "src/gpio.h" val); # 5 "src/gpio.c" 2 diff --git a/build/gpio.o b/build/gpio.o index 849a43dbd25ed4d2247f3764beb7a9a1e6c71e7f..8eb3dee2de4010056a7436f33a0112aaaca0cd89 100644 GIT binary patch delta 6319 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 delta 6233 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 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" +.LASF902: + .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" .LASF889: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF645: @@ -5697,13 +5718,13 @@ main: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF733: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF954: +.LASF958: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF960: +.LASF964: .ascii "APB1ENR\000" .LASF741: .ascii "SCNdFAST16 __SCN16FAST(d)\000" @@ -5733,7 +5754,7 @@ main: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF945: +.LASF949: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -5780,11 +5801,11 @@ main: .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" -.LASF926: +.LASF930: .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" -.LASF988: +.LASF992: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" @@ -5842,19 +5863,19 @@ main: .ascii "__int20__ +2\000" .LASF654: .ascii "_WCHAR_T_ \000" -.LASF984: +.LASF988: .ascii "SMCR\000" .LASF828: .ascii "PRIoMAX __PRIMAX(o)\000" .LASF747: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" -.LASF921: +.LASF925: .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" -.LASF974: +.LASF978: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" -.LASF909: +.LASF913: .ascii "PIN(port,num) (PORT(port) | num)\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" @@ -5906,7 +5927,7 @@ main: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF905: +.LASF909: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" @@ -5918,7 +5939,7 @@ main: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF957: +.LASF961: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5958,7 +5979,7 @@ main: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF952: +.LASF956: .ascii "AHB2RSTR\000" .LASF671: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" @@ -5982,13 +6003,13 @@ main: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: .ascii "__ARM_FEATURE_CDE\000" -.LASF980: +.LASF984: .ascii "KEYR\000" .LASF509: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF938: +.LASF942: .ascii "short int\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -6012,11 +6033,11 @@ main: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF977: +.LASF981: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF932: +.LASF936: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" @@ -6024,7 +6045,7 @@ main: .ascii "UINT64_MAX (__UINT64_MAX__)\000" .LASF471: .ascii "_RETARGETABLE_LOCKING 1\000" -.LASF915: +.LASF919: .ascii "FLASH_ACR_DCEN_BIT 10\000" .LASF453: .ascii "__USES_INITFINI__ 1\000" @@ -6096,11 +6117,11 @@ main: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF701: .ascii "PRIXFAST8 __PRI8FAST(X)\000" -.LASF1001: +.LASF1005: .ascii "led_on\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" -.LASF1003: +.LASF1007: .ascii "src/main.c\000" .LASF126: .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" @@ -6138,13 +6159,13 @@ main: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF651: .ascii "_T_WCHAR_ \000" -.LASF993: +.LASF997: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF664: .ascii "_BSD_WCHAR_T_\000" -.LASF972: +.LASF976: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -6152,9 +6173,9 @@ main: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF756: .ascii "PRIx32 __PRI32(x)\000" -.LASF999: +.LASF1003: .ascii "tim4_init\000" -.LASF948: +.LASF952: .ascii "uint32_t\000" .LASF878: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -6162,13 +6183,13 @@ main: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" .LASF506: .ascii "_SYS__INTSUP_H \000" -.LASF982: +.LASF986: .ascii "OPTCR\000" .LASF290: .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" .LASF415: .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" -.LASF913: +.LASF917: .ascii "FLASH_BASE_ADDR (0x40023C00U)\000" .LASF745: .ascii "SCNxFAST16 __SCN16FAST(x)\000" @@ -6214,13 +6235,13 @@ main: .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF910: +.LASF914: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF939: +.LASF943: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6236,7 +6257,7 @@ main: .ascii "__HQ_FBIT__ 15\000" .LASF854: .ascii "__bool_true_false_are_defined 1\000" -.LASF907: +.LASF911: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF798: @@ -6247,7 +6268,7 @@ main: .ascii "__SIZE_MAX__ 0xffffffffU\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" -.LASF912: +.LASF916: .ascii "FLASH_H_ \000" .LASF412: .ascii "__ARM_ARCH\000" @@ -6265,7 +6286,7 @@ main: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF522: .ascii "long +4\000" -.LASF951: +.LASF955: .ascii "AHB1RSTR\000" .LASF723: .ascii "SCNx16 __SCN16(x)\000" @@ -6275,7 +6296,7 @@ main: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF1004: +.LASF1008: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF796: .ascii "PRIX64 __PRI64(X)\000" @@ -6339,7 +6360,7 @@ main: .ascii "__INT_LEAST64_TYPE__ long long int\000" .LASF103: .ascii "__UINT16_MAX__ 0xffff\000" -.LASF924: +.LASF928: .ascii "PWR_BASE_ADDR (0x40007000U)\000" .LASF446: .ascii "__ARM_FEATURE_CDE_COPROC\000" diff --git a/build/main.i b/build/main.i index e5271b3..69baaab 100644 --- a/build/main.i +++ b/build/main.i @@ -2100,6 +2100,9 @@ struct rcc { #define RCC_APB1ENR_PWREN_BIT 28 #define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART2EN_BIT) + #define RCC_APB1ENR_TIM4_BIT 2 #define RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT) # 5 "src/main.c" 2 @@ -2123,6 +2126,10 @@ struct gpio { volatile uint32_t AFRH; }; + +#define GPIO_AF_USART2_RX (0b0111) +#define GPIO_AF_USART2_TX (0b0111) + #define GPIO_BASE_ADDR (0x40020000U) #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) @@ -2146,9 +2153,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_set_af(uint16_t pin, uint8_t af); void gpio_write(uint16_t pin, -# 42 "src/gpio.h" 3 4 +# 46 "src/gpio.h" 3 4 _Bool -# 42 "src/gpio.h" +# 46 "src/gpio.h" val); # 6 "src/main.c" 2 # 1 "src/flash.h" 1 diff --git a/build/main.o b/build/main.o index 87fe3e81740fdcfafca6e7c3b5170e973036c9af..2ea000bb1b2bb8060257a94fb14140a4b13a1b88 100644 GIT binary patch delta 7036 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 diff --git a/build/timer.S b/build/timer.S index d8141ff..fead8af 100644 --- a/build/timer.S +++ b/build/timer.S @@ -136,10 +136,10 @@ tim4_start: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x7 - .4byte .LASF956 - .byte 0x1d - .4byte .LASF957 .4byte .LASF958 + .byte 0x1d + .4byte .LASF959 + .4byte .LASF960 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -147,17 +147,17 @@ tim4_start: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF904 + .4byte .LASF906 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF905 + .4byte .LASF907 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF906 + .4byte .LASF908 .uleb128 0x4 - .4byte .LASF909 + .4byte .LASF911 .byte 0x2 .byte 0x39 .byte 0x1c @@ -165,13 +165,13 @@ tim4_start: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF907 + .4byte .LASF909 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF908 - .uleb128 0x4 .4byte .LASF910 + .uleb128 0x4 + .4byte .LASF912 .byte 0x2 .byte 0x4f .byte 0x1b @@ -179,15 +179,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF911 + .4byte .LASF913 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF912 + .4byte .LASF914 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF913 + .4byte .LASF915 .uleb128 0x8 .byte 0x4 .byte 0x5 @@ -195,15 +195,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF914 + .4byte .LASF916 .uleb128 0x4 - .4byte .LASF915 + .4byte .LASF917 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF916 + .4byte .LASF918 .byte 0x3 .byte 0x30 .byte 0x14 @@ -224,13 +224,13 @@ tim4_start: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF917 + .4byte .LASF919 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF918 + .4byte .LASF920 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -242,115 +242,115 @@ tim4_start: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF919 + .4byte .LASF921 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF920 + .4byte .LASF922 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF921 + .4byte .LASF923 .byte 0x4 .byte 0xd .4byte 0x212 .byte 0x18 .uleb128 0x1 - .4byte .LASF922 + .4byte .LASF924 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF923 + .4byte .LASF925 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF924 + .4byte .LASF926 .byte 0x4 .byte 0x10 .4byte 0x212 .byte 0x28 .uleb128 0x1 - .4byte .LASF925 + .4byte .LASF927 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF926 + .4byte .LASF928 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF927 + .4byte .LASF929 .byte 0x4 .byte 0x13 .4byte 0x212 .byte 0x38 .uleb128 0x1 - .4byte .LASF928 + .4byte .LASF930 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF929 + .4byte .LASF931 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF930 + .4byte .LASF932 .byte 0x4 .byte 0x16 .4byte 0x212 .byte 0x48 .uleb128 0x1 - .4byte .LASF931 + .4byte .LASF933 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF932 + .4byte .LASF934 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF933 + .4byte .LASF935 .byte 0x4 .byte 0x19 .4byte 0x212 .byte 0x58 .uleb128 0x1 - .4byte .LASF934 + .4byte .LASF936 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF935 + .4byte .LASF937 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF936 + .4byte .LASF938 .byte 0x4 .byte 0x1c .4byte 0x212 .byte 0x68 .uleb128 0x1 - .4byte .LASF937 + .4byte .LASF939 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -362,25 +362,25 @@ tim4_start: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF938 + .4byte .LASF940 .byte 0x4 .byte 0x1f .4byte 0x212 .byte 0x78 .uleb128 0x1 - .4byte .LASF939 + .4byte .LASF941 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF940 + .4byte .LASF942 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF941 + .4byte .LASF943 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -396,7 +396,7 @@ tim4_start: .uleb128 0x5 .4byte 0x202 .uleb128 0xc - .4byte .LASF942 + .4byte .LASF944 .byte 0x50 .byte 0x5 .byte 0x6 @@ -415,13 +415,13 @@ tim4_start: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF943 + .4byte .LASF945 .byte 0x5 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF944 + .4byte .LASF946 .byte 0x5 .byte 0xa .4byte 0xa0 @@ -439,19 +439,19 @@ tim4_start: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF945 + .4byte .LASF947 .byte 0x5 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF946 + .4byte .LASF948 .byte 0x5 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF947 + .4byte .LASF949 .byte 0x5 .byte 0xf .4byte 0xa0 @@ -481,31 +481,31 @@ tim4_start: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF948 + .4byte .LASF950 .byte 0x5 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF949 + .4byte .LASF951 .byte 0x5 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF950 + .4byte .LASF952 .byte 0x5 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF951 + .4byte .LASF953 .byte 0x5 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF952 + .4byte .LASF954 .byte 0x5 .byte 0x18 .4byte 0xa0 @@ -517,21 +517,21 @@ tim4_start: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF955 .byte 0x5 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 .uleb128 0x6 - .4byte .LASF954 + .4byte .LASF956 .byte 0x14 .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c .uleb128 0x6 - .4byte .LASF955 + .4byte .LASF957 .byte 0x4 .4byte .LFB0 .4byte .LFE0-.LFB0 @@ -3501,7 +3501,7 @@ tim4_start: .uleb128 0x135 .4byte .LASF850 .byte 0 - .section .debug_macro,"G",%progbits,wm4.rcc.h.37.7ab56e8f55874aebd4da18716582113c,comdat + .section .debug_macro,"G",%progbits,wm4.rcc.h.37.fc51eb78a9b2f3f5a4ab23580aa1aac2,comdat .Ldebug_macro14: .2byte 0x5 .byte 0 @@ -3649,6 +3649,12 @@ tim4_start: .byte 0x5 .uleb128 0x7a .4byte .LASF898 + .byte 0x5 + .uleb128 0x7c + .4byte .LASF899 + .byte 0x5 + .uleb128 0x7d + .4byte .LASF900 .byte 0 .section .debug_macro,"G",%progbits,wm4.timer.h.2.2e929ede818fb0960868f1b0a08a1cbf,comdat .Ldebug_macro15: @@ -3656,19 +3662,19 @@ tim4_start: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF899 - .byte 0x5 - .uleb128 0x1d - .4byte .LASF900 - .byte 0x5 - .uleb128 0x1e .4byte .LASF901 .byte 0x5 - .uleb128 0x20 + .uleb128 0x1d .4byte .LASF902 .byte 0x5 - .uleb128 0x21 + .uleb128 0x1e .4byte .LASF903 + .byte 0x5 + .uleb128 0x20 + .4byte .LASF904 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF905 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3683,7 +3689,7 @@ tim4_start: .ascii "__UHA_FBIT__ 8\000" .LASF815: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF905: +.LASF907: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -3729,7 +3735,7 @@ tim4_start: .ascii "__WCHAR_MAX__ 0xffffffffU\000" .LASF514: .ascii "__int20__\000" -.LASF897: +.LASF899: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" @@ -3755,7 +3761,7 @@ tim4_start: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF898: +.LASF900: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF621: @@ -3842,7 +3848,7 @@ tim4_start: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF956: +.LASF958: .ascii "GNU C2X 12.3.1 20230626 -mcpu=cortex-m4 -mthumb -mf" .ascii "loat-abi=hard -mfpu=fpv4-sp-d16 -march=armv7e-m+fp " .ascii "-g3 -ggdb -O0 -std=c2x -ffunction-sections -fdata-s" @@ -3861,7 +3867,7 @@ tim4_start: .ascii "__int_fast32_t_defined 1\000" .LASF133: .ascii "__INT_FAST64_WIDTH__ 64\000" -.LASF953: +.LASF955: .ascii "DMAR\000" .LASF660: .ascii "___int_wchar_t_h \000" @@ -3912,13 +3918,13 @@ tim4_start: .ascii "SCNo32 __SCN32(o)\000" .LASF541: .ascii "_NOTHROW \000" -.LASF948: - .ascii "CCR1\000" -.LASF949: - .ascii "CCR2\000" .LASF950: - .ascii "CCR3\000" + .ascii "CCR1\000" .LASF951: + .ascii "CCR2\000" +.LASF952: + .ascii "CCR3\000" +.LASF953: .ascii "CCR4\000" .LASF307: .ascii "__LACCUM_IBIT__ 32\000" @@ -3942,7 +3948,7 @@ tim4_start: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF932: +.LASF934: .ascii "AHB2LPENR\000" .LASF500: .ascii "__RAND_MAX\000" @@ -3985,7 +3991,7 @@ tim4_start: .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF908: +.LASF910: .ascii "long int\000" .LASF720: .ascii "SCNd16 __SCN16(d)\000" @@ -4062,7 +4068,7 @@ tim4_start: .ascii "__SIZEOF_LONG__ 4\000" .LASF754: .ascii "PRIi32 __PRI32(i)\000" -.LASF929: +.LASF931: .ascii "APB2ENR\000" .LASF822: .ascii "SCNoFAST64 __SCN64FAST(o)\000" @@ -4076,7 +4082,7 @@ tim4_start: .ascii "__FLT32X_MIN_EXP__ (-1021)\000" .LASF816: .ascii "PRIoFAST64 __PRI64FAST(o)\000" -.LASF931: +.LASF933: .ascii "AHB1LPENR\000" .LASF406: .ascii "__ARM_FEATURE_SIMD32 1\000" @@ -4088,7 +4094,7 @@ tim4_start: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF459: .ascii "__NEWLIB__ 4\000" -.LASF941: +.LASF943: .ascii "DCKCFGR\000" .LASF721: .ascii "SCNi16 __SCN16(i)\000" @@ -4098,7 +4104,7 @@ tim4_start: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF563: .ascii "_UINT8_T_DECLARED \000" -.LASF904: +.LASF906: .ascii "signed char\000" .LASF806: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -4132,19 +4138,19 @@ tim4_start: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF874: .ascii "RCC_PLLCFGR_PLLN_MASK (0b111111111)\000" -.LASF957: +.LASF959: .ascii "src/timer.c\000" -.LASF924: +.LASF926: .ascii "RESERVED1\000" -.LASF927: +.LASF929: .ascii "RESERVED2\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" -.LASF933: +.LASF935: .ascii "RESERVED4\000" .LASF241: .ascii "__FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x\000" -.LASF938: +.LASF940: .ascii "RESERVED6\000" .LASF152: .ascii "__FLT_MAX_10_EXP__ 38\000" @@ -4164,7 +4170,7 @@ tim4_start: .ascii "SCNoLEAST32 __SCN32LEAST(o)\000" .LASF891: .ascii "RCC_CFGR_SW_PLL (0b10)\000" -.LASF902: +.LASF904: .ascii "TIM_CR1_CEN_BIT 0\000" .LASF798: .ascii "SCNd64 __SCN64(d)\000" @@ -4184,7 +4190,7 @@ tim4_start: .ascii "__int_fast64_t_defined 1\000" .LASF838: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF915: +.LASF917: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" @@ -4192,25 +4198,28 @@ tim4_start: .ascii "__ULLACCUM_FBIT__ 32\000" .LASF895: .ascii "RCC_APB1ENR_PWREN_BIT 28\000" +.LASF898: + .ascii "RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART" + .ascii "2EN_BIT)\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" .LASF486: .ascii "_SYS_FEATURES_H \000" .LASF813: .ascii "SCNxLEAST64 __SCN64LEAST(x)\000" -.LASF930: +.LASF932: .ascii "RESERVED3\000" .LASF22: .ascii "__SIZEOF_LONG_DOUBLE__ 8\000" -.LASF936: +.LASF938: .ascii "RESERVED5\000" -.LASF945: +.LASF947: .ascii "CCMR1\000" -.LASF946: +.LASF948: .ascii "CCMR2\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF899: +.LASF901: .ascii "TIMER_H_ \000" .LASF470: .ascii "_MB_LEN_MAX 8\000" @@ -4254,9 +4263,9 @@ tim4_start: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF647: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF909: +.LASF911: .ascii "__uint16_t\000" -.LASF926: +.LASF928: .ascii "AHB2ENR\000" .LASF805: .ascii "PRIoLEAST64 __PRI64LEAST(o)\000" @@ -4270,7 +4279,7 @@ tim4_start: .ascii "__UINT8_MAX__ 0xff\000" .LASF575: .ascii "_UINTMAX_T_DECLARED \000" -.LASF942: +.LASF944: .ascii "timer\000" .LASF184: .ascii "__LDBL_MAX_EXP__ 1024\000" @@ -4314,7 +4323,7 @@ tim4_start: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF770: .ascii "SCNdLEAST32 __SCN32LEAST(d)\000" -.LASF921: +.LASF923: .ascii "RESERVED0\000" .LASF807: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" @@ -4352,7 +4361,7 @@ tim4_start: .ascii "__LACCUM_FBIT__ 31\000" .LASF689: .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" -.LASF937: +.LASF939: .ascii "BDCR\000" .LASF211: .ascii "__FLT32_HAS_QUIET_NAN__ 1\000" @@ -4414,7 +4423,7 @@ tim4_start: .ascii "RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)\000" .LASF763: .ascii "SCNx32 __SCN32(x)\000" -.LASF918: +.LASF920: .ascii "CFGR\000" .LASF558: .ascii "___int_least32_t_defined 1\000" @@ -4484,7 +4493,7 @@ tim4_start: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF911: +.LASF913: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4502,7 +4511,7 @@ tim4_start: .ascii "__UINT16_TYPE__ short unsigned int\000" .LASF868: .ascii "RCC_PLLCFGR_PLLSRC_BIT 22\000" -.LASF944: +.LASF946: .ascii "DIER\000" .LASF657: .ascii "_WCHAR_T_DEFINED_ \000" @@ -4606,11 +4615,11 @@ tim4_start: .ascii "PRIX32 __PRI32(X)\000" .LASF774: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF954: +.LASF956: .ascii "tim4_start\000" .LASF704: .ascii "SCNiFAST8 __SCN8FAST(i)\000" -.LASF917: +.LASF919: .ascii "PLLCFGR\000" .LASF5: .ascii "__GNUC__ 12\000" @@ -4638,7 +4647,7 @@ tim4_start: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF462: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF910: +.LASF912: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4648,7 +4657,7 @@ tim4_start: .ascii "__FLT_RADIX__ 2\000" .LASF455: .ascii "_INTTYPES_H \000" -.LASF912: +.LASF914: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4668,7 +4677,7 @@ tim4_start: .ascii "WINT_MAX (__WINT_MAX__)\000" .LASF823: .ascii "SCNuFAST64 __SCN64FAST(u)\000" -.LASF939: +.LASF941: .ascii "SSCGR\000" .LASF137: .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" @@ -4696,7 +4705,7 @@ tim4_start: .ascii "___int32_t_defined 1\000" .LASF83: .ascii "__INT_WIDTH__ 32\000" -.LASF923: +.LASF925: .ascii "APB2RSTR\000" .LASF409: .ascii "__ARM_ARCH_PROFILE\000" @@ -4748,9 +4757,9 @@ tim4_start: .ascii "__ARM_NEON_FP\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF935: +.LASF937: .ascii "APB2LPENR\000" -.LASF903: +.LASF905: .ascii "TIM_ENABLE (1 << TIM_CR1_CEN_BIT)\000" .LASF821: .ascii "SCNiFAST64 __SCN64FAST(i)\000" @@ -4758,7 +4767,7 @@ tim4_start: .ascii "_ANSIDECL_H_ \000" .LASF684: .ascii "SCNu8 __SCN8(u)\000" -.LASF900: +.LASF902: .ascii "TIM4_BASE_ADDR (0x40000800U)\000" .LASF261: .ascii "__UFRACT_FBIT__ 16\000" @@ -4778,7 +4787,7 @@ tim4_start: .ascii "L)\000" .LASF608: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF914: +.LASF916: .ascii "unsigned int\000" .LASF857: .ascii "RCC_CR_HSERDY_BIT 17\000" @@ -4864,7 +4873,7 @@ tim4_start: .ascii "__STRINGIFY(a) #a\000" .LASF356: .ascii "__USA_FBIT__ 16\000" -.LASF934: +.LASF936: .ascii "APB1LPENR\000" .LASF480: .ascii "__IEEE_LITTLE_ENDIAN \000" @@ -4972,6 +4981,8 @@ tim4_start: .ascii "SCNx64 __SCN64(x)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" +.LASF897: + .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" .LASF884: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF646: @@ -4990,13 +5001,13 @@ tim4_start: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF734: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF922: +.LASF924: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF928: +.LASF930: .ascii "APB1ENR\000" .LASF742: .ascii "SCNdFAST16 __SCN16FAST(d)\000" @@ -5026,7 +5037,7 @@ tim4_start: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF913: +.LASF915: .ascii "long long unsigned int\000" .LASF612: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -5073,7 +5084,7 @@ tim4_start: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" .LASF574: .ascii "_INTMAX_T_DECLARED \000" -.LASF947: +.LASF949: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" @@ -5129,7 +5140,7 @@ tim4_start: .ascii "__int20__ +2\000" .LASF655: .ascii "_WCHAR_T_ \000" -.LASF943: +.LASF945: .ascii "SMCR\000" .LASF829: .ascii "PRIoMAX __PRIMAX(o)\000" @@ -5199,7 +5210,7 @@ tim4_start: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF925: +.LASF927: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5239,7 +5250,7 @@ tim4_start: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF920: +.LASF922: .ascii "AHB2RSTR\000" .LASF672: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" @@ -5269,7 +5280,7 @@ tim4_start: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF906: +.LASF908: .ascii "short int\000" .LASF836: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5295,7 +5306,7 @@ tim4_start: .ascii "__ARM_FEATURE_COPROC\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF901: +.LASF903: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" @@ -5413,13 +5424,13 @@ tim4_start: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF652: .ascii "_T_WCHAR_ \000" -.LASF952: +.LASF954: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF665: .ascii "_BSD_WCHAR_T_\000" -.LASF940: +.LASF942: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -5427,9 +5438,9 @@ tim4_start: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF757: .ascii "PRIx32 __PRI32(x)\000" -.LASF955: +.LASF957: .ascii "tim4_init\000" -.LASF916: +.LASF918: .ascii "uint32_t\000" .LASF873: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -5489,7 +5500,7 @@ tim4_start: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF907: +.LASF909: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5529,7 +5540,7 @@ tim4_start: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF523: .ascii "long +4\000" -.LASF919: +.LASF921: .ascii "AHB1RSTR\000" .LASF724: .ascii "SCNx16 __SCN16(x)\000" @@ -5539,7 +5550,7 @@ tim4_start: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF958: +.LASF960: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF797: .ascii "PRIX64 __PRI64(X)\000" diff --git a/build/timer.i b/build/timer.i index 0f9db82..a36d58e 100644 --- a/build/timer.i +++ b/build/timer.i @@ -2085,6 +2085,9 @@ struct rcc { #define RCC_APB1ENR_PWREN_BIT 28 #define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART2EN_BIT) + #define RCC_APB1ENR_TIM4_BIT 2 #define RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT) # 2 "src/timer.c" 2 diff --git a/build/timer.o b/build/timer.o index 7cca30663621c6357433acb253d2715ead344e3b..2c88b0890366e9ec9bc623b2f63506c3cd07a4fe 100644 GIT binary patch delta 6520 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 A!T= ((maj) << 16) + (min))\000" +.LASF653: + .ascii "_T_WCHAR \000" +.LASF576: + .ascii "_INTPTR_T_DECLARED \000" +.LASF475: + .ascii "_WANT_IO_LONG_LONG 1\000" +.LASF243: + .ascii "__FLT32X_HAS_INFINITY__ 1\000" +.LASF619: + .ascii "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)\000" +.LASF673: + .ascii "__SCN8LEAST(x) __LEAST8 __STRINGIFY(x)\000" +.LASF856: + .ascii "RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT)\000" +.LASF55: + .ascii "__UINT_LEAST8_TYPE__ unsigned char\000" +.LASF728: + .ascii "PRIuLEAST16 __PRI16LEAST(u)\000" +.LASF296: + .ascii "__ACCUM_FBIT__ 15\000" +.LASF792: + .ascii "PRId64 __PRI64(d)\000" +.LASF872: + .ascii "RCC_PLLCFGR_PLLP(p) ((p & RCC_PLLCFGR_PLLP_MASK) <<" + .ascii " RCC_PLLCFGR_PLLP_BIT)\000" +.LASF302: + .ascii "__UACCUM_IBIT__ 16\000" +.LASF937: + .ascii "long int\000" +.LASF720: + .ascii "SCNd16 __SCN16(d)\000" +.LASF132: + .ascii "__INT_FAST64_MAX__ 0x7fffffffffffffffLL\000" +.LASF236: + .ascii "__FLT32X_DECIMAL_DIG__ 17\000" +.LASF173: + .ascii "__DBL_MIN__ ((double)2.2250738585072014e-308L)\000" +.LASF244: + .ascii "__FLT32X_HAS_QUIET_NAN__ 1\000" +.LASF773: + .ascii "SCNuLEAST32 __SCN32LEAST(u)\000" +.LASF240: + .ascii "__FLT32X_EPSILON__ 2.2204460492503131e-16F32x\000" +.LASF982: + .ascii "txPin\000" +.LASF878: + .ascii "RCC_PLLCFGR_PLLM(m) ((m & RCC_PLLCFGR_PLLM_MASK) <<" + .ascii " RCC_PLLCFGR_PLLM_BIT)\000" +.LASF59: + .ascii "__INT_FAST8_TYPE__ int\000" +.LASF545: + .ascii "_NOINLINE __attribute__ ((__noinline__))\000" +.LASF358: + .ascii "__UDA_FBIT__ 32\000" +.LASF775: + .ascii "PRIdFAST32 __PRI32FAST(d)\000" +.LASF93: + .ascii "__UINTMAX_C(c) c ## ULL\000" +.LASF865: + .ascii "RCC_PLLCFGR_PLLQ_BIT 24\000" +.LASF31: + .ascii "__SIZEOF_POINTER__ 4\000" +.LASF622: + .ascii "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)\000" +.LASF371: + .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" +.LASF893: + .ascii "RCC_CFGR_SW_MASK (0b11)\000" +.LASF432: + .ascii "__ARM_NEON__\000" +.LASF588: + .ascii "UINTPTR_MAX (__UINTPTR_MAX__)\000" +.LASF201: + .ascii "__FLT32_MAX_EXP__ 128\000" +.LASF825: + .ascii "__PRIMAX(x) __STRINGIFY(ll ##x)\000" +.LASF435: + .ascii "__THUMB_INTERWORK__ 1\000" +.LASF284: + .ascii "__ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR\000" +.LASF33: + .ascii "__GNUC_WIDE_EXECUTION_CHARSET_NAME \"UTF-32LE\"\000" +.LASF572: + .ascii "_UINT64_T_DECLARED \000" +.LASF452: + .ascii "__ELF__ 1\000" +.LASF41: + .ascii "__CHAR32_TYPE__ long unsigned int\000" +.LASF429: + .ascii "__ARM_FEATURE_FP16_VECTOR_ARITHMETIC\000" +.LASF901: + .ascii "GPIO_H_ \000" +.LASF179: + .ascii "__DBL_IS_IEC_60559__ 2\000" +.LASF136: + .ascii "__UINT_FAST32_MAX__ 0xffffffffU\000" +.LASF151: + .ascii "__FLT_MAX_EXP__ 128\000" +.LASF17: + .ascii "__SIZEOF_LONG__ 4\000" +.LASF754: + .ascii "PRIi32 __PRI32(i)\000" +.LASF958: + .ascii "APB2ENR\000" +.LASF822: + .ascii "SCNoFAST64 __SCN64FAST(o)\000" +.LASF505: + .ascii "_READ_WRITE_BUFSIZE_TYPE int\000" +.LASF21: + .ascii "__SIZEOF_DOUBLE__ 8\000" +.LASF114: + .ascii "__INT_LEAST32_WIDTH__ 32\000" +.LASF232: + .ascii "__FLT32X_MIN_EXP__ (-1021)\000" +.LASF816: + .ascii "PRIoFAST64 __PRI64FAST(o)\000" +.LASF960: + .ascii "AHB1LPENR\000" +.LASF406: + .ascii "__ARM_FEATURE_SIMD32 1\000" +.LASF531: + .ascii "__FAST16 \000" +.LASF493: + .ascii "__LARGEFILE_VISIBLE 0\000" +.LASF727: + .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" +.LASF459: + .ascii "__NEWLIB__ 4\000" +.LASF970: + .ascii "DCKCFGR\000" +.LASF721: + .ascii "SCNi16 __SCN16(i)\000" +.LASF360: + .ascii "__UTA_FBIT__ 64\000" +.LASF976: + .ascii "usart\000" +.LASF153: + .ascii "__FLT_DECIMAL_DIG__ 9\000" +.LASF563: + .ascii "_UINT8_T_DECLARED \000" +.LASF931: + .ascii "signed char\000" +.LASF806: + .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" +.LASF943: + .ascii "uint8_t\000" +.LASF705: + .ascii "SCNoFAST8 __SCN8FAST(o)\000" +.LASF626: + .ascii "INTMAX_MIN (-INTMAX_MAX - 1)\000" +.LASF467: + .ascii "_HAVE_LONG_DOUBLE 1\000" +.LASF975: + .ascii "GPIO_MODE\000" +.LASF256: + .ascii "__FRACT_FBIT__ 15\000" +.LASF701: + .ascii "PRIxFAST8 __PRI8FAST(x)\000" +.LASF320: + .ascii "__LLACCUM_EPSILON__ 0x1P-31LLK\000" +.LASF7: + .ascii "__GNUC_PATCHLEVEL__ 1\000" +.LASF374: + .ascii "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2\000" +.LASF866: + .ascii "RCC_PLLCFGR_PLLQ_MASK (0b1111)\000" +.LASF120: + .ascii "__UINT_LEAST16_MAX__ 0xffff\000" +.LASF410: + .ascii "__ARM_ARCH_PROFILE 77\000" +.LASF547: + .ascii "_STDINT_H \000" +.LASF337: + .ascii "__UQQ_IBIT__ 0\000" +.LASF289: + .ascii "__SACCUM_MAX__ 0X7FFFP-7HK\000" +.LASF219: + .ascii "__FLT64_MAX_10_EXP__ 308\000" +.LASF874: + .ascii "RCC_PLLCFGR_PLLN_MASK (0b111111111)\000" +.LASF950: + .ascii "RESERVED0\000" +.LASF953: + .ascii "RESERVED1\000" +.LASF956: + .ascii "RESERVED2\000" +.LASF3: + .ascii "__STDC_UTF_32__ 1\000" +.LASF962: + .ascii "RESERVED4\000" +.LASF241: + .ascii "__FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x\000" +.LASF967: + .ascii "RESERVED6\000" +.LASF152: + .ascii "__FLT_MAX_10_EXP__ 38\000" +.LASF42: + .ascii "__SIG_ATOMIC_TYPE__ int\000" +.LASF883: + .ascii "RCC_CFGR_PPRE1_BIT 10\000" +.LASF259: + .ascii "__FRACT_MAX__ 0X7FFFP-15R\000" +.LASF729: + .ascii "PRIxLEAST16 __PRI16LEAST(x)\000" +.LASF981: + .ascii "usart2_write_byte\000" +.LASF985: + .ascii "src/usart.c\000" +.LASF130: + .ascii "__INT_FAST32_MAX__ 0x7fffffff\000" +.LASF10: + .ascii "__ATOMIC_SEQ_CST 5\000" +.LASF504: + .ascii "_READ_WRITE_RETURN_TYPE int\000" +.LASF772: + .ascii "SCNoLEAST32 __SCN32LEAST(o)\000" +.LASF891: + .ascii "RCC_CFGR_SW_PLL (0b10)\000" +.LASF845: + .ascii "PRIXPTR __PRIPTR(X)\000" +.LASF798: + .ascii "SCNd64 __SCN64(d)\000" +.LASF972: + .ascii "GPIO_MODE_OUTPUT\000" +.LASF614: + .ascii "INT_FAST8_MAX (__INT_FAST8_MAX__)\000" +.LASF627: + .ascii "UINTMAX_MAX (__UINTMAX_MAX__)\000" +.LASF334: + .ascii "__TQ_FBIT__ 127\000" +.LASF709: + .ascii "__PRI16LEAST(x) __LEAST16 __STRINGIFY(x)\000" +.LASF495: + .ascii "__POSIX_VISIBLE 0\000" +.LASF585: + .ascii "__int_fast64_t_defined 1\000" +.LASF838: + .ascii "__PRIPTR(x) __STRINGIFY(x)\000" +.LASF453: + .ascii "__USES_INITFINI__ 1\000" +.LASF417: + .ascii "__thumb2__ 1\000" +.LASF321: + .ascii "__ULLACCUM_FBIT__ 32\000" +.LASF895: + .ascii "RCC_APB1ENR_PWREN_BIT 28\000" +.LASF898: + .ascii "RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART" + .ascii "2EN_BIT)\000" +.LASF366: + .ascii "__STRICT_ANSI__ 1\000" +.LASF486: + .ascii "_SYS_FEATURES_H \000" +.LASF813: + .ascii "SCNxLEAST64 __SCN64LEAST(x)\000" +.LASF959: + .ascii "RESERVED3\000" +.LASF22: + .ascii "__SIZEOF_LONG_DOUBLE__ 8\000" +.LASF965: + .ascii "RESERVED5\000" +.LASF386: + .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" +.LASF36: + .ascii "__WCHAR_TYPE__ unsigned int\000" +.LASF470: + .ascii "_MB_LEN_MAX 8\000" +.LASF511: + .ascii "char\000" +.LASF357: + .ascii "__USA_IBIT__ 16\000" +.LASF482: + .ascii "__DOUBLE_TYPE double\000" +.LASF369: + .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1\000" +.LASF645: + .ascii "INTMAX_C(x) __INTMAX_C(x)\000" +.LASF648: + .ascii "__need_wchar_t \000" +.LASF66: + .ascii "__UINT_FAST64_TYPE__ long long unsigned int\000" +.LASF917: + .ascii "USART2_BASE_ADDR (0x40004400U)\000" +.LASF889: + .ascii "RCC_CFGR_SWS_BIT 2\000" +.LASF156: + .ascii "__FLT_MIN__ 1.1754943508222875e-38F\000" +.LASF346: + .ascii "__HA_FBIT__ 7\000" +.LASF751: + .ascii "__PRI32FAST(x) __FAST32 __STRINGIFY(x)\000" +.LASF439: + .ascii "__FDPIC__\000" +.LASF263: + .ascii "__UFRACT_MIN__ 0.0UR\000" +.LASF516: + .ascii "signed +0\000" +.LASF213: + .ascii "__FLT32_IS_IEC_60559__ 2\000" +.LASF630: + .ascii "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))\000" +.LASF926: + .ascii "USART_CR1_RE_ENABLE (1 << USART_CR1_RE_BIT)\000" +.LASF725: + .ascii "PRIdLEAST16 __PRI16LEAST(d)\000" +.LASF756: + .ascii "PRIu32 __PRI32(u)\000" +.LASF787: + .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" +.LASF647: + .ascii "_GCC_WRAP_STDINT_H \000" +.LASF935: + .ascii "__uint16_t\000" +.LASF955: + .ascii "AHB2ENR\000" +.LASF805: + .ascii "PRIoLEAST64 __PRI64LEAST(o)\000" +.LASF253: + .ascii "__USFRACT_MIN__ 0.0UHR\000" +.LASF433: + .ascii "__ARM_NEON\000" +.LASF695: + .ascii "SCNuLEAST8 __SCN8LEAST(u)\000" +.LASF102: + .ascii "__UINT8_MAX__ 0xff\000" +.LASF553: + .ascii "___int16_t_defined 1\000" +.LASF184: + .ascii "__LDBL_MAX_EXP__ 1024\000" +.LASF697: + .ascii "PRIdFAST8 __PRI8FAST(d)\000" +.LASF496: + .ascii "__SVID_VISIBLE 0\000" +.LASF564: + .ascii "__int8_t_defined 1\000" +.LASF176: + .ascii "__DBL_HAS_DENORM__ 1\000" +.LASF908: + .ascii "GPIO_AF_USART2_TX (0b0111)\000" +.LASF625: + .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" +.LASF602: + .ascii "INT32_MAX (__INT32_MAX__)\000" +.LASF350: + .ascii "__DA_FBIT__ 31\000" +.LASF69: + .ascii "__GXX_ABI_VERSION 1017\000" +.LASF109: + .ascii "__INT_LEAST16_MAX__ 0x7fff\000" +.LASF557: + .ascii "___int_least16_t_defined 1\000" +.LASF158: + .ascii "__FLT_DENORM_MIN__ 1.4012984643248171e-45F\000" +.LASF534: + .ascii "__LEAST8 \"hh\"\000" +.LASF885: + .ascii "RCC_CFGR_HPRE_DIV_NONE 0\000" +.LASF540: + .ascii "_END_STD_C \000" +.LASF904: + .ascii "true ((_Bool)+1u)\000" +.LASF600: + .ascii "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)\000" +.LASF123: + .ascii "__UINT32_C(c) c ## UL\000" +.LASF726: + .ascii "PRIiLEAST16 __PRI16LEAST(i)\000" +.LASF303: + .ascii "__UACCUM_MIN__ 0.0UK\000" +.LASF870: + .ascii "RCC_PLLCFGR_PLLP_BIT 16\000" +.LASF157: + .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" +.LASF770: + .ascii "SCNdLEAST32 __SCN32LEAST(d)\000" +.LASF807: + .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" +.LASF35: + .ascii "__PTRDIFF_TYPE__ int\000" +.LASF419: + .ascii "__ARM_ARCH_ISA_THUMB\000" +.LASF579: + .ascii "__int_least16_t_defined 1\000" +.LASF447: + .ascii "__ARM_FEATURE_MATMUL_INT8\000" +.LASF605: + .ascii "INT_LEAST32_MAX (__INT_LEAST32_MAX__)\000" +.LASF820: + .ascii "SCNdFAST64 __SCN64FAST(d)\000" +.LASF604: + .ascii "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)\000" +.LASF376: + .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" +.LASF863: + .ascii "RCC_CR_HSION_BIT 0\000" +.LASF779: + .ascii "PRIxFAST32 __PRI32FAST(x)\000" +.LASF778: + .ascii "PRIuFAST32 __PRI32FAST(u)\000" +.LASF291: + .ascii "__USACCUM_FBIT__ 8\000" +.LASF380: + .ascii "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1\000" +.LASF651: + .ascii "_WCHAR_T \000" +.LASF494: + .ascii "__MISC_VISIBLE 0\000" +.LASF306: + .ascii "__LACCUM_FBIT__ 31\000" +.LASF689: + .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" +.LASF966: + .ascii "BDCR\000" +.LASF211: + .ascii "__FLT32_HAS_QUIET_NAN__ 1\000" +.LASF485: + .ascii "__OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT\000" +.LASF194: + .ascii "__LDBL_HAS_INFINITY__ 1\000" +.LASF352: + .ascii "__TA_FBIT__ 63\000" +.LASF586: + .ascii "INTPTR_MIN (-__INTPTR_MAX__ - 1)\000" +.LASF794: + .ascii "PRIo64 __PRI64(o)\000" +.LASF736: + .ascii "PRIdFAST16 __PRI16FAST(d)\000" +.LASF944: + .ascii "uint16_t\000" +.LASF96: + .ascii "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)\000" +.LASF118: + .ascii "__UINT_LEAST8_MAX__ 0xff\000" +.LASF722: + .ascii "SCNo16 __SCN16(o)\000" +.LASF656: + .ascii "_BSD_WCHAR_T_ \000" +.LASF669: + .ascii "__PRI8(x) __INT8 __STRINGIFY(x)\000" +.LASF162: + .ascii "__FP_FAST_FMAF 1\000" +.LASF629: + .ascii "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)\000" +.LASF860: + .ascii "RCC_CR_HSEON_ON (1 << RCC_CR_HSEON_BIT)\000" +.LASF565: + .ascii "_INT16_T_DECLARED \000" +.LASF245: + .ascii "__FLT32X_IS_IEC_60559__ 2\000" +.LASF835: + .ascii "SCNoMAX __SCNMAX(o)\000" +.LASF755: + .ascii "PRIo32 __PRI32(o)\000" +.LASF111: + .ascii "__INT_LEAST16_WIDTH__ 16\000" +.LASF804: + .ascii "PRIiLEAST64 __PRI64LEAST(i)\000" +.LASF581: + .ascii "__int_least64_t_defined 1\000" +.LASF145: + .ascii "__DEC_EVAL_METHOD__ 2\000" +.LASF430: + .ascii "__ARM_FEATURE_FP16_FML\000" +.LASF803: + .ascii "PRIdLEAST64 __PRI64LEAST(d)\000" +.LASF255: + .ascii "__USFRACT_EPSILON__ 0x1P-8UHR\000" +.LASF858: + .ascii "RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)\000" +.LASF763: + .ascii "SCNx32 __SCN32(x)\000" +.LASF947: + .ascii "CFGR\000" +.LASF558: + .ascii "___int_least32_t_defined 1\000" +.LASF319: + .ascii "__LLACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LLK\000" +.LASF667: + .ascii "__need_NULL\000" +.LASF363: + .ascii "__USER_LABEL_PREFIX__ \000" +.LASF105: + .ascii "__UINT64_MAX__ 0xffffffffffffffffULL\000" +.LASF699: + .ascii "PRIoFAST8 __PRI8FAST(o)\000" +.LASF104: + .ascii "__UINT32_MAX__ 0xffffffffUL\000" +.LASF643: + .ascii "INT64_C(x) __INT64_C(x)\000" +.LASF616: + .ascii "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)\000" +.LASF106: + .ascii "__INT_LEAST8_MAX__ 0x7f\000" +.LASF383: + .ascii "__GCC_ATOMIC_POINTER_LOCK_FREE 2\000" +.LASF391: + .ascii "__ARM_FEATURE_QBIT 1\000" +.LASF404: + .ascii "__ARM_FEATURE_CLZ 1\000" +.LASF431: + .ascii "__ARM_FEATURE_FMA 1\000" +.LASF398: + .ascii "__ARM_FEATURE_COMPLEX\000" +.LASF832: + .ascii "PRIXMAX __PRIMAX(X)\000" +.LASF680: + .ascii "PRIX8 __PRI8(X)\000" +.LASF524: + .ascii "_INTPTR_EQ_INT \000" +.LASF408: + .ascii "__ARM_SIZEOF_WCHAR_T 4\000" +.LASF234: + .ascii "__FLT32X_MAX_EXP__ 1024\000" +.LASF122: + .ascii "__UINT_LEAST32_MAX__ 0xffffffffUL\000" +.LASF670: + .ascii "__PRI8LEAST(x) __LEAST8 __STRINGIFY(x)\000" +.LASF174: + .ascii "__DBL_EPSILON__ ((double)2.2204460492503131e-16L)\000" +.LASF268: + .ascii "__LFRACT_MIN__ (-0.5LR-0.5LR)\000" +.LASF117: + .ascii "__INT_LEAST64_WIDTH__ 64\000" +.LASF160: + .ascii "__FLT_HAS_INFINITY__ 1\000" +.LASF299: + .ascii "__ACCUM_MAX__ 0X7FFFFFFFP-15K\000" +.LASF98: + .ascii "__INT8_MAX__ 0x7f\000" +.LASF849: + .ascii "SCNuPTR __SCNPTR(u)\000" +.LASF759: + .ascii "SCNd32 __SCN32(d)\000" +.LASF843: + .ascii "PRIuPTR __PRIPTR(u)\000" +.LASF385: + .ascii "__GCC_HAVE_DWARF2_CFI_ASM 1\000" +.LASF552: + .ascii "___int8_t_defined 1\000" +.LASF248: + .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" +.LASF939: + .ascii "long unsigned int\000" +.LASF349: + .ascii "__SA_IBIT__ 16\000" +.LASF509: + .ascii "signed\000" +.LASF142: + .ascii "__GCC_IEC_559_COMPLEX 0\000" +.LASF400: + .ascii "__ARM_FEATURE_MVE\000" +.LASF235: + .ascii "__FLT32X_MAX_10_EXP__ 308\000" +.LASF425: + .ascii "__ARM_FP16_FORMAT_IEEE\000" +.LASF48: + .ascii "__UINT16_TYPE__ short unsigned int\000" +.LASF868: + .ascii "RCC_PLLCFGR_PLLSRC_BIT 22\000" +.LASF907: + .ascii "GPIO_AF_USART2_RX (0b0111)\000" +.LASF905: + .ascii "false ((_Bool)+0u)\000" +.LASF657: + .ascii "_WCHAR_T_DEFINED_ \000" +.LASF144: + .ascii "__FLT_EVAL_METHOD_TS_18661_3__ 0\000" +.LASF522: + .ascii "int +2\000" +.LASF637: + .ascii "INT8_C(x) __INT8_C(x)\000" +.LASF63: + .ascii "__UINT_FAST8_TYPE__ unsigned int\000" +.LASF707: + .ascii "SCNxFAST8 __SCN8FAST(x)\000" +.LASF317: + .ascii "__LLACCUM_IBIT__ 32\000" +.LASF688: + .ascii "PRIoLEAST8 __PRI8LEAST(o)\000" +.LASF260: + .ascii "__FRACT_EPSILON__ 0x1P-15R\000" +.LASF100: + .ascii "__INT32_MAX__ 0x7fffffffL\000" +.LASF506: + .ascii "_USE_GDTOA \000" +.LASF692: + .ascii "SCNdLEAST8 __SCN8LEAST(d)\000" +.LASF115: + .ascii "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL\000" +.LASF414: + .ascii "__APCS_32__ 1\000" +.LASF449: + .ascii "__ARM_FEATURE_BF16_VECTOR_ARITHMETIC\000" +.LASF197: + .ascii "__FLT32_MANT_DIG__ 24\000" +.LASF685: + .ascii "SCNx8 __SCN8(x)\000" +.LASF208: + .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" +.LASF979: + .ascii "gpio_set_mode\000" +.LASF125: + .ascii "__UINT64_C(c) c ## ULL\000" +.LASF58: + .ascii "__UINT_LEAST64_TYPE__ long long unsigned int\000" +.LASF800: + .ascii "SCNo64 __SCN64(o)\000" +.LASF251: + .ascii "__USFRACT_FBIT__ 8\000" +.LASF191: + .ascii "__LDBL_EPSILON__ 2.2204460492503131e-16L\000" +.LASF730: + .ascii "PRIXLEAST16 __PRI16LEAST(X)\000" +.LASF623: + .ascii "INT_FAST64_MAX (__INT_FAST64_MAX__)\000" +.LASF925: + .ascii "USART_CR1_RE_BIT 2\000" +.LASF373: + .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" +.LASF790: + .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" +.LASF892: + .ascii "RCC_CFGR_SW_BIT 0\000" +.LASF168: + .ascii "__DBL_MAX_EXP__ 1024\000" +.LASF533: + .ascii "__FAST64 \"ll\"\000" +.LASF12: + .ascii "__ATOMIC_RELEASE 3\000" +.LASF517: + .ascii "unsigned +0\000" +.LASF242: + .ascii "__FLT32X_HAS_DENORM__ 1\000" +.LASF147: + .ascii "__FLT_MANT_DIG__ 24\000" +.LASF343: + .ascii "__UDQ_IBIT__ 0\000" +.LASF53: + .ascii "__INT_LEAST32_TYPE__ long int\000" +.LASF760: + .ascii "SCNi32 __SCN32(i)\000" +.LASF761: + .ascii "SCNo32 __SCN32(o)\000" +.LASF304: + .ascii "__UACCUM_MAX__ 0XFFFFFFFFP-16UK\000" +.LASF568: + .ascii "_INT32_T_DECLARED \000" +.LASF1: + .ascii "__STDC_VERSION__ 202000L\000" +.LASF983: + .ascii "rxPin\000" +.LASF520: + .ascii "__int20 +2\000" +.LASF192: + .ascii "__LDBL_DENORM_MIN__ 4.9406564584124654e-324L\000" +.LASF101: + .ascii "__INT64_MAX__ 0x7fffffffffffffffLL\000" +.LASF392: + .ascii "__ARM_FEATURE_SAT 1\000" +.LASF567: + .ascii "__int16_t_defined 1\000" +.LASF282: + .ascii "__ULLFRACT_IBIT__ 0\000" +.LASF758: + .ascii "PRIX32 __PRI32(X)\000" +.LASF774: + .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" +.LASF712: + .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" +.LASF946: + .ascii "PLLCFGR\000" +.LASF5: + .ascii "__GNUC__ 12\000" +.LASF693: + .ascii "SCNiLEAST8 __SCN8LEAST(i)\000" +.LASF753: + .ascii "PRId32 __PRI32(d)\000" +.LASF84: + .ascii "__LONG_WIDTH__ 32\000" +.LASF154: + .ascii "__FLT_MAX__ 3.4028234663852886e+38F\000" +.LASF301: + .ascii "__UACCUM_FBIT__ 16\000" +.LASF265: + .ascii "__UFRACT_EPSILON__ 0x1P-16UR\000" +.LASF634: + .ascii "WCHAR_MAX (__WCHAR_MAX__)\000" +.LASF527: + .ascii "__INT16 \"h\"\000" +.LASF457: + .ascii "_NEWLIB_VERSION_H__ 1\000" +.LASF378: + .ascii "__GCC_ATOMIC_LONG_LOCK_FREE 2\000" +.LASF313: + .ascii "__ULACCUM_MIN__ 0.0ULK\000" +.LASF462: + .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" +.LASF938: + .ascii "__uint32_t\000" +.LASF188: + .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" +.LASF413: + .ascii "__ARM_ARCH 7\000" +.LASF146: + .ascii "__FLT_RADIX__ 2\000" +.LASF455: + .ascii "_INTTYPES_H \000" +.LASF940: + .ascii "long long int\000" +.LASF401: + .ascii "__ARM_FEATURE_CMSE\000" +.LASF603: + .ascii "UINT32_MAX (__UINT32_MAX__)\000" +.LASF649: + .ascii "__wchar_t__ \000" +.LASF195: + .ascii "__LDBL_HAS_QUIET_NAN__ 1\000" +.LASF85: + .ascii "__LONG_LONG_WIDTH__ 64\000" +.LASF664: + .ascii "__DEFINED_wchar_t \000" +.LASF635: + .ascii "WINT_MAX (__WINT_MAX__)\000" +.LASF823: + .ascii "SCNuFAST64 __SCN64FAST(u)\000" +.LASF968: + .ascii "SSCGR\000" +.LASF137: + .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" +.LASF723: + .ascii "SCNu16 __SCN16(u)\000" +.LASF423: + .ascii "__ARM_FP\000" +.LASF347: + .ascii "__HA_IBIT__ 8\000" +.LASF139: + .ascii "__INTPTR_WIDTH__ 32\000" +.LASF0: + .ascii "__STDC__ 1\000" +.LASF239: + .ascii "__FLT32X_MIN__ 2.2250738585072014e-308F32x\000" +.LASF218: + .ascii "__FLT64_MAX_EXP__ 1024\000" +.LASF654: + .ascii "__WCHAR_T \000" +.LASF223: + .ascii "__FLT64_MIN__ 2.2250738585072014e-308F64\000" +.LASF977: + .ascii "GTPR\000" +.LASF554: + .ascii "___int32_t_defined 1\000" +.LASF83: + .ascii "__INT_WIDTH__ 32\000" +.LASF952: + .ascii "APB2RSTR\000" +.LASF409: + .ascii "__ARM_ARCH_PROFILE\000" +.LASF46: + .ascii "__INT64_TYPE__ long long int\000" +.LASF266: + .ascii "__LFRACT_FBIT__ 31\000" +.LASF597: + .ascii "UINT16_MAX (__UINT16_MAX__)\000" +.LASF387: + .ascii "__SIZEOF_WCHAR_T__ 4\000" +.LASF490: + .ascii "__BSD_VISIBLE 0\000" +.LASF598: + .ascii "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)\000" +.LASF740: + .ascii "PRIxFAST16 __PRI16FAST(x)\000" +.LASF739: + .ascii "PRIuFAST16 __PRI16FAST(u)\000" +.LASF846: + .ascii "SCNdPTR __SCNPTR(d)\000" +.LASF847: + .ascii "SCNiPTR __SCNPTR(i)\000" +.LASF674: + .ascii "__SCN8FAST(x) __FAST8 __STRINGIFY(x)\000" +.LASF264: + .ascii "__UFRACT_MAX__ 0XFFFFP-16UR\000" +.LASF559: + .ascii "___int_least64_t_defined 1\000" +.LASF57: + .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" +.LASF112: + .ascii "__INT_LEAST32_MAX__ 0x7fffffffL\000" +.LASF247: + .ascii "__SFRACT_IBIT__ 0\000" +.LASF677: + .ascii "PRIo8 __PRI8(o)\000" +.LASF508: + .ascii "__STDINT_EXP(x) __ ##x ##__\000" +.LASF549: + .ascii "__EXP(x) __ ##x ##__\000" +.LASF808: + .ascii "PRIXLEAST64 __PRI64LEAST(X)\000" +.LASF29: + .ascii "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__\000" +.LASF207: + .ascii "__FLT32_EPSILON__ 1.1920928955078125e-7F32\000" +.LASF434: + .ascii "__ARM_NEON_FP\000" +.LASF280: + .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" +.LASF964: + .ascii "APB2LPENR\000" +.LASF821: + .ascii "SCNiFAST64 __SCN64FAST(i)\000" +.LASF538: + .ascii "_ANSIDECL_H_ \000" +.LASF684: + .ascii "SCNu8 __SCN8(u)\000" +.LASF902: + .ascii "_STDBOOL_H \000" +.LASF261: + .ascii "__UFRACT_FBIT__ 16\000" +.LASF342: + .ascii "__UDQ_FBIT__ 64\000" +.LASF172: + .ascii "__DBL_NORM_MAX__ ((double)1.7976931348623157e+308L)" + .ascii "\000" +.LASF583: + .ascii "__int_fast16_t_defined 1\000" +.LASF483: + .ascii "__FLOAT_TYPE float\000" +.LASF185: + .ascii "__LDBL_MAX_10_EXP__ 308\000" +.LASF175: + .ascii "__DBL_DENORM_MIN__ ((double)4.9406564584124654e-324" + .ascii "L)\000" +.LASF608: + .ascii "INT64_MAX (__INT64_MAX__)\000" +.LASF942: + .ascii "unsigned int\000" +.LASF857: + .ascii "RCC_CR_HSERDY_BIT 17\000" +.LASF910: + .ascii "GPIO_PORT_OFFSET (0x400U)\000" +.LASF460: + .ascii "__NEWLIB_MINOR__ 3\000" +.LASF149: + .ascii "__FLT_MIN_EXP__ (-125)\000" +.LASF228: + .ascii "__FLT64_HAS_QUIET_NAN__ 1\000" +.LASF642: + .ascii "UINT32_C(x) __UINT32_C(x)\000" +.LASF737: + .ascii "PRIiFAST16 __PRI16FAST(i)\000" +.LASF292: + .ascii "__USACCUM_IBIT__ 8\000" +.LASF613: + .ascii "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)\000" +.LASF226: + .ascii "__FLT64_HAS_DENORM__ 1\000" +.LASF148: + .ascii "__FLT_DIG__ 6\000" +.LASF305: + .ascii "__UACCUM_EPSILON__ 0x1P-16UK\000" +.LASF663: + .ascii "_WCHAR_T_DECLARED \000" +.LASF24: + .ascii "__CHAR_BIT__ 8\000" +.LASF143: + .ascii "__FLT_EVAL_METHOD__ 0\000" +.LASF458: + .ascii "_NEWLIB_VERSION \"4.3.0\"\000" +.LASF686: + .ascii "PRIdLEAST8 __PRI8LEAST(d)\000" +.LASF70: + .ascii "__SCHAR_MAX__ 0x7f\000" +.LASF560: + .ascii "__EXP\000" +.LASF127: + .ascii "__INT_FAST8_WIDTH__ 32\000" +.LASF2: + .ascii "__STDC_UTF_16__ 1\000" +.LASF402: + .ascii "__ARM_FEATURE_LDREX\000" +.LASF987: + .ascii "usart2_start\000" +.LASF336: + .ascii "__UQQ_FBIT__ 8\000" +.LASF427: + .ascii "__ARM_FP16_ARGS\000" +.LASF141: + .ascii "__GCC_IEC_559 0\000" +.LASF269: + .ascii "__LFRACT_MAX__ 0X7FFFFFFFP-31LR\000" +.LASF389: + .ascii "__SIZEOF_PTRDIFF_T__ 4\000" +.LASF650: + .ascii "__WCHAR_T__ \000" +.LASF556: + .ascii "___int_least8_t_defined 1\000" +.LASF441: + .ascii "__ARM_FEATURE_IDIV 1\000" +.LASF30: + .ascii "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__\000" +.LASF662: + .ascii "_GCC_WCHAR_T \000" +.LASF582: + .ascii "__int_fast8_t_defined 1\000" +.LASF502: + .ascii "__EXPORT \000" +.LASF444: + .ascii "__ARM_FEATURE_COPROC 15\000" +.LASF484: + .ascii "__OBSOLETE_MATH_DEFAULT 1\000" +.LASF978: + .ascii "gpio_set_af\000" +.LASF864: + .ascii "RCC_CR_HSION_ON (1 << RCC_CR_HSION_BIT)\000" +.LASF671: + .ascii "__PRI8FAST(x) __FAST8 __STRINGIFY(x)\000" +.LASF82: + .ascii "__SHRT_WIDTH__ 16\000" +.LASF880: + .ascii "RCC_CFGR_PPRE_DIV_2 (0b100)\000" +.LASF473: + .ascii "_UNBUF_STREAM_OPT 1\000" +.LASF668: + .ascii "__STRINGIFY(a) #a\000" +.LASF356: + .ascii "__USA_FBIT__ 16\000" +.LASF963: + .ascii "APB1LPENR\000" +.LASF480: + .ascii "__IEEE_LITTLE_ENDIAN \000" +.LASF183: + .ascii "__LDBL_MIN_10_EXP__ (-307)\000" +.LASF476: + .ascii "_WANT_REGISTER_FINI 1\000" +.LASF161: + .ascii "__FLT_HAS_QUIET_NAN__ 1\000" +.LASF489: + .ascii "__ATFILE_VISIBLE 0\000" +.LASF372: + .ascii "__GCC_ATOMIC_CHAR_LOCK_FREE 2\000" +.LASF270: + .ascii "__LFRACT_EPSILON__ 0x1P-31LR\000" +.LASF809: + .ascii "SCNdLEAST64 __SCN64LEAST(d)\000" +.LASF539: + .ascii "_BEGIN_STD_C \000" +.LASF681: + .ascii "SCNd8 __SCN8(d)\000" +.LASF824: + .ascii "SCNxFAST64 __SCN64FAST(x)\000" +.LASF682: + .ascii "SCNi8 __SCN8(i)\000" +.LASF767: + .ascii "PRIuLEAST32 __PRI32LEAST(u)\000" +.LASF407: + .ascii "__ARM_SIZEOF_MINIMAL_ENUM 1\000" +.LASF499: + .ascii "_POINTER_INT long\000" +.LASF238: + .ascii "__FLT32X_NORM_MAX__ 1.7976931348623157e+308F32x\000" +.LASF20: + .ascii "__SIZEOF_FLOAT__ 4\000" +.LASF411: + .ascii "__arm__ 1\000" +.LASF200: + .ascii "__FLT32_MIN_10_EXP__ (-37)\000" +.LASF501: + .ascii "__RAND_MAX 0x7fffffff\000" +.LASF633: + .ascii "WCHAR_MIN (__WCHAR_MIN__)\000" +.LASF595: + .ascii "INT16_MIN (-__INT16_MAX__ - 1)\000" +.LASF426: + .ascii "__ARM_FP16_FORMAT_ALTERNATIVE\000" +.LASF189: + .ascii "__LDBL_NORM_MAX__ 1.7976931348623157e+308L\000" +.LASF548: + .ascii "_MACHINE__DEFAULT_TYPES_H \000" +.LASF25: + .ascii "__BIGGEST_ALIGNMENT__ 8\000" +.LASF353: + .ascii "__TA_IBIT__ 64\000" +.LASF713: + .ascii "__SCN16FAST(x) __FAST16 __STRINGIFY(x)\000" +.LASF537: + .ascii "__LEAST64 \"ll\"\000" +.LASF862: + .ascii "RCC_CR_HSIRDY_READY (1 << RCC_CR_HSIRDY_BIT)\000" +.LASF659: + .ascii "_WCHAR_T_H \000" +.LASF395: + .ascii "__ARM_FEATURE_QRDMX\000" +.LASF771: + .ascii "SCNiLEAST32 __SCN32LEAST(i)\000" +.LASF718: + .ascii "PRIx16 __PRI16(x)\000" +.LASF465: + .ascii "_HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1\000" +.LASF420: + .ascii "__ARM_ARCH_ISA_THUMB 2\000" +.LASF710: + .ascii "__PRI16FAST(x) __FAST16 __STRINGIFY(x)\000" +.LASF74: + .ascii "__LONG_LONG_MAX__ 0x7fffffffffffffffLL\000" +.LASF463: + .ascii "_FSEEK_OPTIMIZATION 1\000" +.LASF87: + .ascii "__WINT_WIDTH__ 32\000" +.LASF515: + .ascii "long\000" +.LASF65: + .ascii "__UINT_FAST32_TYPE__ unsigned int\000" +.LASF512: + .ascii "short\000" +.LASF262: + .ascii "__UFRACT_IBIT__ 0\000" +.LASF399: + .ascii "__ARM_32BIT_STATE 1\000" +.LASF107: + .ascii "__INT8_C(c) c\000" +.LASF267: + .ascii "__LFRACT_IBIT__ 0\000" +.LASF16: + .ascii "__SIZEOF_INT__ 4\000" +.LASF924: + .ascii "USART_CR1_TE_ENABLE (1 << USART_CR1_TE_BIT)\000" +.LASF166: + .ascii "__DBL_MIN_EXP__ (-1021)\000" +.LASF706: + .ascii "SCNuFAST8 __SCN8FAST(u)\000" +.LASF745: + .ascii "SCNuFAST16 __SCN16FAST(u)\000" +.LASF802: + .ascii "SCNx64 __SCN64(x)\000" +.LASF915: + .ascii "PINPORT(pin) (pin >> 8)\000" +.LASF198: + .ascii "__FLT32_DIG__ 6\000" +.LASF897: + .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" +.LASF884: + .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" +.LASF646: + .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" +.LASF624: + .ascii "UINT_FAST64_MAX (__UINT_FAST64_MAX__)\000" +.LASF555: + .ascii "___int64_t_defined 1\000" +.LASF193: + .ascii "__LDBL_HAS_DENORM__ 1\000" +.LASF384: + .ascii "__HAVE_SPECULATION_SAFE_VALUE 1\000" +.LASF286: + .ascii "__SACCUM_FBIT__ 7\000" +.LASF734: + .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" +.LASF951: + .ascii "APB1RSTR\000" +.LASF298: + .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" +.LASF393: + .ascii "__ARM_FEATURE_CRYPTO\000" +.LASF957: + .ascii "APB1ENR\000" +.LASF698: + .ascii "PRIiFAST8 __PRI8FAST(i)\000" +.LASF742: + .ascii "SCNdFAST16 __SCN16FAST(d)\000" +.LASF867: + .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" + .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" +.LASF788: + .ascii "__PRI64LEAST(x) __LEAST64 __STRINGIFY(x)\000" +.LASF678: + .ascii "PRIu8 __PRI8(u)\000" +.LASF124: + .ascii "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL\000" +.LASF257: + .ascii "__FRACT_IBIT__ 0\000" +.LASF11: + .ascii "__ATOMIC_ACQUIRE 2\000" +.LASF477: + .ascii "_WANT_USE_GDTOA 1\000" +.LASF229: + .ascii "__FLT64_IS_IEC_60559__ 2\000" +.LASF461: + .ascii "__NEWLIB_PATCHLEVEL__ 0\000" +.LASF26: + .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" +.LASF869: + .ascii "RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT" + .ascii ")\000" +.LASF155: + .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" +.LASF941: + .ascii "long long unsigned int\000" +.LASF612: + .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" +.LASF150: + .ascii "__FLT_MIN_10_EXP__ (-37)\000" +.LASF890: + .ascii "RCC_CFGR_SWS_MASK (0b11)\000" +.LASF312: + .ascii "__ULACCUM_IBIT__ 32\000" +.LASF777: + .ascii "PRIoFAST32 __PRI32FAST(o)\000" +.LASF71: + .ascii "__SHRT_MAX__ 0x7fff\000" +.LASF196: + .ascii "__LDBL_IS_IEC_60559__ 2\000" +.LASF696: + .ascii "SCNxLEAST8 __SCN8LEAST(x)\000" +.LASF325: + .ascii "__ULLACCUM_EPSILON__ 0x1P-32ULLK\000" +.LASF570: + .ascii "__int32_t_defined 1\000" +.LASF332: + .ascii "__DQ_FBIT__ 63\000" +.LASF491: + .ascii "__GNU_VISIBLE 0\000" +.LASF287: + .ascii "__SACCUM_IBIT__ 8\000" +.LASF781: + .ascii "SCNdFAST32 __SCN32FAST(d)\000" +.LASF339: + .ascii "__UHQ_IBIT__ 0\000" +.LASF370: + .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" +.LASF60: + .ascii "__INT_FAST16_TYPE__ int\000" +.LASF575: + .ascii "_UINTMAX_T_DECLARED \000" +.LASF61: + .ascii "__INT_FAST32_TYPE__ int\000" +.LASF288: + .ascii "__SACCUM_MIN__ (-0X1P7HK-0X1P7HK)\000" +.LASF274: + .ascii "__ULFRACT_MAX__ 0XFFFFFFFFP-32ULR\000" +.LASF875: + .ascii "RCC_PLLCFGR_PLLN(n) ((n & RCC_PLLCFGR_PLLN_MASK) <<" + .ascii " RCC_PLLCFGR_PLLN_BIT)\000" +.LASF56: + .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" +.LASF574: + .ascii "_INTMAX_T_DECLARED \000" +.LASF309: + .ascii "__LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK\000" +.LASF40: + .ascii "__CHAR16_TYPE__ short unsigned int\000" +.LASF920: + .ascii "USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT)\000" +.LASF231: + .ascii "__FLT32X_DIG__ 15\000" +.LASF741: + .ascii "PRIXFAST16 __PRI16FAST(X)\000" +.LASF834: + .ascii "SCNiMAX __SCNMAX(i)\000" +.LASF853: + .ascii "RCC_CR_PLLRDY_BIT 25\000" +.LASF768: + .ascii "PRIxLEAST32 __PRI32LEAST(x)\000" +.LASF344: + .ascii "__UTQ_FBIT__ 128\000" +.LASF848: + .ascii "SCNoPTR __SCNPTR(o)\000" +.LASF842: + .ascii "PRIoPTR __PRIPTR(o)\000" +.LASF732: + .ascii "SCNiLEAST16 __SCN16LEAST(i)\000" +.LASF15: + .ascii "__FINITE_MATH_ONLY__ 0\000" +.LASF128: + .ascii "__INT_FAST16_MAX__ 0x7fffffff\000" +.LASF550: + .ascii "__have_longlong64 1\000" +.LASF469: + .ascii "_MB_CAPABLE 1\000" +.LASF19: + .ascii "__SIZEOF_SHORT__ 2\000" +.LASF703: + .ascii "SCNdFAST8 __SCN8FAST(d)\000" +.LASF577: + .ascii "_UINTPTR_T_DECLARED \000" +.LASF503: + .ascii "__IMPORT \000" +.LASF314: + .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" +.LASF273: + .ascii "__ULFRACT_MIN__ 0.0ULR\000" +.LASF628: + .ascii "SIZE_MAX (__SIZE_MAX__)\000" +.LASF333: + .ascii "__DQ_IBIT__ 0\000" +.LASF450: + .ascii "__ARM_BF16_FORMAT_ALTERNATIVE\000" +.LASF45: + .ascii "__INT32_TYPE__ long int\000" +.LASF569: + .ascii "_UINT32_T_DECLARED \000" +.LASF521: + .ascii "__int20__ +2\000" +.LASF655: + .ascii "_WCHAR_T_ \000" +.LASF571: + .ascii "_INT64_T_DECLARED \000" +.LASF829: + .ascii "PRIoMAX __PRIMAX(o)\000" +.LASF748: + .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" +.LASF971: + .ascii "GPIO_MODE_INPUT\000" +.LASF744: + .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF913: + .ascii "PIN(port,num) (PORT(port) | num)\000" +.LASF988: + .ascii "usart2_init\000" +.LASF345: + .ascii "__UTQ_IBIT__ 0\000" +.LASF348: + .ascii "__SA_FBIT__ 15\000" +.LASF661: + .ascii "__INT_WCHAR_T_H \000" +.LASF237: + .ascii "__FLT32X_MAX__ 1.7976931348623157e+308F32x\000" +.LASF438: + .ascii "__ARM_EABI__ 1\000" +.LASF466: + .ascii "_HAVE_INITFINI_ARRAY 1\000" +.LASF733: + .ascii "SCNoLEAST16 __SCN16LEAST(o)\000" +.LASF474: + .ascii "_WANT_IO_C99_FORMATS 1\000" +.LASF163: + .ascii "__FLT_IS_IEC_60559__ 2\000" +.LASF418: + .ascii "__THUMBEL__ 1\000" +.LASF715: + .ascii "PRIi16 __PRI16(i)\000" +.LASF390: + .ascii "__ARM_FEATURE_DSP 1\000" +.LASF922: + .ascii "USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT)\000" +.LASF826: + .ascii "__SCNMAX(x) __STRINGIFY(ll ##x)\000" +.LASF327: + .ascii "__QQ_IBIT__ 0\000" +.LASF764: + .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" +.LASF812: + .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" +.LASF644: + .ascii "UINT64_C(x) __UINT64_C(x)\000" +.LASF316: + .ascii "__LLACCUM_FBIT__ 31\000" +.LASF39: + .ascii "__UINTMAX_TYPE__ long long unsigned int\000" +.LASF233: + .ascii "__FLT32X_MIN_10_EXP__ (-307)\000" +.LASF594: + .ascii "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)\000" +.LASF341: + .ascii "__USQ_IBIT__ 0\000" +.LASF6: + .ascii "__GNUC_MINOR__ 3\000" +.LASF828: + .ascii "PRIiMAX __PRIMAX(i)\000" +.LASF454: + .ascii "RCC_H_ \000" +.LASF405: + .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" +.LASF909: + .ascii "GPIO_BASE_ADDR (0x40020000U)\000" +.LASF38: + .ascii "__INTMAX_TYPE__ long long int\000" +.LASF377: + .ascii "__GCC_ATOMIC_INT_LOCK_FREE 2\000" +.LASF928: + .ascii "USART_BRR_MANTISSA_MASK (0b111111111111)\000" +.LASF436: + .ascii "__ARM_ARCH_7EM__ 1\000" +.LASF428: + .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" +.LASF954: + .ascii "AHB1ENR\000" +.LASF295: + .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" +.LASF178: + .ascii "__DBL_HAS_QUIET_NAN__ 1\000" +.LASF641: + .ascii "INT32_C(x) __INT32_C(x)\000" +.LASF618: + .ascii "UINT_FAST16_MAX (__UINT_FAST16_MAX__)\000" +.LASF546: + .ascii "_NOINLINE_STATIC _NOINLINE static\000" +.LASF279: + .ascii "__LLFRACT_MAX__ 0X7FFFFFFFFFFFFFFFP-63LLR\000" +.LASF840: + .ascii "PRIdPTR __PRIPTR(d)\000" +.LASF606: + .ascii "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)\000" +.LASF731: + .ascii "SCNdLEAST16 __SCN16LEAST(d)\000" +.LASF814: + .ascii "PRIdFAST64 __PRI64FAST(d)\000" +.LASF833: + .ascii "SCNdMAX __SCNMAX(d)\000" +.LASF518: + .ascii "char +0\000" +.LASF67: + .ascii "__INTPTR_TYPE__ int\000" +.LASF68: + .ascii "__UINTPTR_TYPE__ unsigned int\000" +.LASF837: + .ascii "SCNxMAX __SCNMAX(x)\000" +.LASF362: + .ascii "__REGISTER_PREFIX__ \000" +.LASF204: + .ascii "__FLT32_MAX__ 3.4028234663852886e+38F32\000" +.LASF165: + .ascii "__DBL_DIG__ 15\000" +.LASF275: + .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" +.LASF949: + .ascii "AHB2RSTR\000" +.LASF672: + .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" +.LASF882: + .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" +.LASF23: + .ascii "__SIZEOF_SIZE_T__ 4\000" +.LASF854: + .ascii "RCC_CR_PLLRDY_LOCKED (1 << RCC_CR_PLLRDY_BIT)\000" +.LASF50: + .ascii "__UINT64_TYPE__ long long unsigned int\000" +.LASF580: + .ascii "__int_least32_t_defined 1\000" +.LASF116: + .ascii "__INT64_C(c) c ## LL\000" +.LASF464: + .ascii "_FVWRITE_IN_STREAMIO 1\000" +.LASF190: + .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" +.LASF445: + .ascii "__ARM_FEATURE_CDE\000" +.LASF297: + .ascii "__ACCUM_IBIT__ 16\000" +.LASF717: + .ascii "PRIu16 __PRI16(u)\000" +.LASF510: + .ascii "unsigned\000" +.LASF381: + .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" +.LASF933: + .ascii "short int\000" +.LASF836: + .ascii "SCNuMAX __SCNMAX(u)\000" +.LASF918: + .ascii "USART2 ((struct usart *) USART2_BASE_ADDR)\000" +.LASF121: + .ascii "__UINT16_C(c) c\000" +.LASF359: + .ascii "__UDA_IBIT__ 32\000" +.LASF535: + .ascii "__LEAST16 \"h\"\000" +.LASF877: + .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" +.LASF587: + .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" +.LASF919: + .ascii "USART_SR_TC_BIT 6\000" +.LASF711: + .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" +.LASF607: + .ascii "INT64_MIN (-__INT64_MAX__ - 1)\000" +.LASF9: + .ascii "__ATOMIC_RELAXED 0\000" +.LASF543: + .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" +.LASF443: + .ascii "__ARM_FEATURE_COPROC\000" +.LASF974: + .ascii "GPIO_MODE_ANALOG\000" +.LASF177: + .ascii "__DBL_HAS_INFINITY__ 1\000" +.LASF95: + .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" +.LASF609: + .ascii "UINT64_MAX (__UINT64_MAX__)\000" +.LASF472: + .ascii "_RETARGETABLE_LOCKING 1\000" +.LASF440: + .ascii "__ARM_ARCH_EXT_IDIV__ 1\000" +.LASF638: + .ascii "UINT8_C(x) __UINT8_C(x)\000" +.LASF170: + .ascii "__DBL_DECIMAL_DIG__ 17\000" +.LASF551: + .ascii "__have_long32 1\000" +.LASF855: + .ascii "RCC_CR_PLLON_BIT 24\000" +.LASF658: + .ascii "_WCHAR_T_DEFINED \000" +.LASF793: + .ascii "PRIi64 __PRI64(i)\000" +.LASF811: + .ascii "SCNoLEAST64 __SCN64LEAST(o)\000" +.LASF573: + .ascii "__int64_t_defined 1\000" +.LASF99: + .ascii "__INT16_MAX__ 0x7fff\000" +.LASF479: + .ascii "__SYS_CONFIG_H__ \000" +.LASF876: + .ascii "RCC_PLLCFGR_PLLM_BIT 0\000" +.LASF8: + .ascii "__VERSION__ \"12.3.1 20230626\"\000" +.LASF498: + .ascii "__SSP_FORTIFY_LEVEL 0\000" +.LASF530: + .ascii "__FAST8 \000" +.LASF497: + .ascii "__XSI_VISIBLE 0\000" +.LASF326: + .ascii "__QQ_FBIT__ 7\000" +.LASF795: + .ascii "PRIu64 __PRI64(u)\000" +.LASF532: + .ascii "__FAST32 \000" +.LASF97: + .ascii "__SIG_ATOMIC_WIDTH__ 32\000" +.LASF224: + .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" +.LASF831: + .ascii "PRIxMAX __PRIMAX(x)\000" +.LASF488: + .ascii "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)\000" +.LASF361: + .ascii "__UTA_IBIT__ 64\000" +.LASF322: + .ascii "__ULLACCUM_IBIT__ 32\000" +.LASF396: + .ascii "__ARM_FEATURE_CRC32\000" +.LASF285: + .ascii "__ULLFRACT_EPSILON__ 0x1P-64ULLR\000" +.LASF4: + .ascii "__STDC_HOSTED__ 1\000" +.LASF827: + .ascii "PRIdMAX __PRIMAX(d)\000" +.LASF388: + .ascii "__SIZEOF_WINT_T__ 4\000" +.LASF881: + .ascii "RCC_CFGR_PPRE2_BIT 13\000" +.LASF783: + .ascii "SCNoFAST32 __SCN32FAST(o)\000" +.LASF394: + .ascii "__ARM_FEATURE_UNALIGNED 1\000" +.LASF451: + .ascii "__GXX_TYPEINFO_EQUALITY_INLINE 0\000" +.LASF187: + .ascii "__LDBL_DECIMAL_DIG__ 17\000" +.LASF702: + .ascii "PRIXFAST8 __PRI8FAST(X)\000" +.LASF308: + .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" +.LASF785: + .ascii "SCNxFAST32 __SCN32FAST(x)\000" +.LASF126: + .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" +.LASF209: + .ascii "__FLT32_HAS_DENORM__ 1\000" +.LASF478: + .ascii "_WIDE_ORIENT 1\000" +.LASF323: + .ascii "__ULLACCUM_MIN__ 0.0ULLK\000" +.LASF131: + .ascii "__INT_FAST32_WIDTH__ 32\000" +.LASF222: + .ascii "__FLT64_NORM_MAX__ 1.7976931348623157e+308F64\000" +.LASF544: + .ascii "_ELIDABLE_INLINE static __inline__\000" +.LASF528: + .ascii "__INT32 \"l\"\000" +.LASF442: + .ascii "__ARM_ASM_SYNTAX_UNIFIED__ 1\000" +.LASF738: + .ascii "PRIoFAST16 __PRI16FAST(o)\000" +.LASF750: + .ascii "__SCN32LEAST(x) __LEAST32 __STRINGIFY(x)\000" +.LASF49: + .ascii "__UINT32_TYPE__ long unsigned int\000" +.LASF397: + .ascii "__ARM_FEATURE_DOTPROD\000" +.LASF747: + .ascii "__PRI32(x) __INT32 __STRINGIFY(x)\000" +.LASF437: + .ascii "__ARM_PCS_VFP 1\000" +.LASF700: + .ascii "PRIuFAST8 __PRI8FAST(u)\000" +.LASF283: + .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" +.LASF652: + .ascii "_T_WCHAR_ \000" +.LASF562: + .ascii "_INT8_T_DECLARED \000" +.LASF382: + .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" +.LASF665: + .ascii "_BSD_WCHAR_T_\000" +.LASF969: + .ascii "PLLI2SCFGR\000" +.LASF277: + .ascii "__LLFRACT_IBIT__ 0\000" +.LASF640: + .ascii "UINT16_C(x) __UINT16_C(x)\000" +.LASF757: + .ascii "PRIx32 __PRI32(x)\000" +.LASF278: + .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" +.LASF945: + .ascii "uint32_t\000" +.LASF873: + .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" +.LASF690: + .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" +.LASF507: + .ascii "_SYS__INTSUP_H \000" +.LASF290: + .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" +.LASF415: + .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" +.LASF746: + .ascii "SCNxFAST16 __SCN16FAST(x)\000" +.LASF471: + .ascii "_REENT_CHECK_VERIFY 1\000" +.LASF776: + .ascii "PRIiFAST32 __PRI32FAST(i)\000" +.LASF424: + .ascii "__ARM_FP 4\000" +.LASF719: + .ascii "PRIX16 __PRI16(X)\000" +.LASF64: + .ascii "__UINT_FAST16_TYPE__ unsigned int\000" +.LASF782: + .ascii "SCNiFAST32 __SCN32FAST(i)\000" +.LASF355: + .ascii "__UHA_IBIT__ 8\000" +.LASF364: + .ascii "__GNUC_STDC_INLINE__ 1\000" +.LASF300: + .ascii "__ACCUM_EPSILON__ 0x1P-15K\000" +.LASF315: + .ascii "__ULACCUM_EPSILON__ 0x1P-32ULK\000" +.LASF181: + .ascii "__LDBL_DIG__ 15\000" +.LASF89: + .ascii "__SIZE_WIDTH__ 32\000" +.LASF871: + .ascii "RCC_PLLCFGR_PLLP_MASK (0b11)\000" +.LASF481: + .ascii "_SUPPORTS_ERREXCEPT \000" +.LASF215: + .ascii "__FLT64_DIG__ 15\000" +.LASF525: + .ascii "_INT32_EQ_LONG \000" +.LASF77: + .ascii "__WINT_MAX__ 0xffffffffU\000" +.LASF108: + .ascii "__INT_LEAST8_WIDTH__ 8\000" +.LASF52: + .ascii "__INT_LEAST16_TYPE__ short int\000" +.LASF159: + .ascii "__FLT_HAS_DENORM__ 1\000" +.LASF914: + .ascii "PINNUM(pin) (pin & 0b1111)\000" +.LASF769: + .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" +.LASF171: + .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" +.LASF936: + .ascii "short unsigned int\000" +.LASF276: + .ascii "__LLFRACT_FBIT__ 63\000" +.LASF210: + .ascii "__FLT32_HAS_INFINITY__ 1\000" +.LASF416: + .ascii "__thumb__ 1\000" +.LASF927: + .ascii "USART_BRR_MANTISSA_BIT 4\000" +.LASF421: + .ascii "__ARMEL__ 1\000" +.LASF691: + .ascii "PRIXLEAST8 __PRI8LEAST(X)\000" +.LASF328: + .ascii "__HQ_FBIT__ 15\000" +.LASF906: + .ascii "__bool_true_false_are_defined 1\000" +.LASF921: + .ascii "USART_CR1_UE_BIT 13\000" +.LASF911: + .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" + .ascii "R + (GPIO_PORT_OFFSET * port)))\000" +.LASF799: + .ascii "SCNi64 __SCN64(i)\000" +.LASF861: + .ascii "RCC_CR_HSIRDY_BIT 1\000" +.LASF80: + .ascii "__SIZE_MAX__ 0xffffffffU\000" +.LASF980: + .ascii "usart2_write\000" +.LASF819: + .ascii "PRIXFAST64 __PRI64FAST(X)\000" +.LASF412: + .ascii "__ARM_ARCH\000" +.LASF591: + .ascii "UINT8_MAX (__UINT8_MAX__)\000" +.LASF73: + .ascii "__LONG_MAX__ 0x7fffffffL\000" +.LASF615: + .ascii "UINT_FAST8_MAX (__UINT_FAST8_MAX__)\000" +.LASF578: + .ascii "__int_least8_t_defined 1\000" +.LASF801: + .ascii "SCNu64 __SCN64(u)\000" +.LASF784: + .ascii "SCNuFAST32 __SCN32FAST(u)\000" +.LASF523: + .ascii "long +4\000" +.LASF948: + .ascii "AHB1RSTR\000" +.LASF724: + .ascii "SCNx16 __SCN16(x)\000" +.LASF403: + .ascii "__ARM_FEATURE_LDREX 7\000" +.LASF789: + .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" +.LASF340: + .ascii "__USQ_FBIT__ 32\000" +.LASF986: + .ascii "/home/alex/code/own/stm32-falling-sand\000" +.LASF797: + .ascii "PRIX64 __PRI64(X)\000" +.LASF249: + .ascii "__SFRACT_MAX__ 0X7FP-7HR\000" +.LASF230: + .ascii "__FLT32X_MANT_DIG__ 53\000" +.LASF86: + .ascii "__WCHAR_WIDTH__ 32\000" +.LASF762: + .ascii "SCNu32 __SCN32(u)\000" +.LASF818: + .ascii "PRIxFAST64 __PRI64FAST(x)\000" +.LASF817: + .ascii "PRIuFAST64 __PRI64FAST(u)\000" +.LASF110: + .ascii "__INT16_C(c) c\000" +.LASF351: + .ascii "__DA_IBIT__ 32\000" +.LASF708: + .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" +.LASF252: + .ascii "__USFRACT_IBIT__ 0\000" +.LASF519: + .ascii "short +1\000" +.LASF694: + .ascii "SCNoLEAST8 __SCN8LEAST(o)\000" +.LASF13: + .ascii "__ATOMIC_ACQ_REL 4\000" +.LASF51: + .ascii "__INT_LEAST8_TYPE__ signed char\000" +.LASF329: + .ascii "__HQ_IBIT__ 0\000" +.LASF167: + .ascii "__DBL_MIN_10_EXP__ (-307)\000" +.LASF796: + .ascii "PRIx64 __PRI64(x)\000" +.LASF923: + .ascii "USART_CR1_TE_BIT 3\000" +.LASF513: + .ascii "__int20\000" +.LASF620: + .ascii "INT_FAST32_MAX (__INT_FAST32_MAX__)\000" +.LASF205: + .ascii "__FLT32_NORM_MAX__ 3.4028234663852886e+38F32\000" +.LASF903: + .ascii "bool _Bool\000" +.LASF632: + .ascii "PTRDIFF_MIN (-PTRDIFF_MAX - 1)\000" +.LASF92: + .ascii "__UINTMAX_MAX__ 0xffffffffffffffffULL\000" +.LASF164: + .ascii "__DBL_MANT_DIG__ 53\000" +.LASF272: + .ascii "__ULFRACT_IBIT__ 0\000" +.LASF852: + .ascii "RCC ((struct rcc *) RCC_BASE_ADDR)\000" +.LASF887: + .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" +.LASF72: + .ascii "__INT_MAX__ 0x7fffffff\000" +.LASF54: + .ascii "__INT_LEAST64_TYPE__ long long int\000" +.LASF103: + .ascii "__UINT16_MAX__ 0xffff\000" +.LASF446: + .ascii "__ARM_FEATURE_CDE_COPROC\000" +.LASF766: + .ascii "PRIoLEAST32 __PRI32LEAST(o)\000" +.LASF91: + .ascii "__INTMAX_C(c) c ## LL\000" + .ident "GCC: (Arm GNU Toolchain 12.3.Rel1 (Build arm-12.35)) 12.3.1 20230626" diff --git a/build/usart.i b/build/usart.i new file mode 100644 index 0000000..8b07638 --- /dev/null +++ b/build/usart.i @@ -0,0 +1,2254 @@ +# 0 "src/usart.c" +# 1 "/home/alex/code/own/stm32-falling-sand//" +# 0 "" +#define __STDC__ 1 +# 0 "" +#define __STDC_VERSION__ 202000L +# 0 "" +#define __STDC_UTF_16__ 1 +# 0 "" +#define __STDC_UTF_32__ 1 +# 0 "" +#define __STDC_HOSTED__ 1 +# 0 "" +#define __GNUC__ 12 +# 0 "" +#define __GNUC_MINOR__ 3 +# 0 "" +#define __GNUC_PATCHLEVEL__ 1 +# 0 "" +#define __VERSION__ "12.3.1 20230626" +# 0 "" +#define __ATOMIC_RELAXED 0 +# 0 "" +#define __ATOMIC_SEQ_CST 5 +# 0 "" +#define __ATOMIC_ACQUIRE 2 +# 0 "" +#define __ATOMIC_RELEASE 3 +# 0 "" +#define __ATOMIC_ACQ_REL 4 +# 0 "" +#define __ATOMIC_CONSUME 1 +# 0 "" +#define __FINITE_MATH_ONLY__ 0 +# 0 "" +#define __SIZEOF_INT__ 4 +# 0 "" +#define __SIZEOF_LONG__ 4 +# 0 "" +#define __SIZEOF_LONG_LONG__ 8 +# 0 "" +#define __SIZEOF_SHORT__ 2 +# 0 "" +#define __SIZEOF_FLOAT__ 4 +# 0 "" +#define __SIZEOF_DOUBLE__ 8 +# 0 "" +#define __SIZEOF_LONG_DOUBLE__ 8 +# 0 "" +#define __SIZEOF_SIZE_T__ 4 +# 0 "" +#define __CHAR_BIT__ 8 +# 0 "" +#define __BIGGEST_ALIGNMENT__ 8 +# 0 "" +#define __ORDER_LITTLE_ENDIAN__ 1234 +# 0 "" +#define __ORDER_BIG_ENDIAN__ 4321 +# 0 "" +#define __ORDER_PDP_ENDIAN__ 3412 +# 0 "" +#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +# 0 "" +#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__ +# 0 "" +#define __SIZEOF_POINTER__ 4 +# 0 "" +#define __GNUC_EXECUTION_CHARSET_NAME "UTF-8" +# 0 "" +#define __GNUC_WIDE_EXECUTION_CHARSET_NAME "UTF-32LE" +# 0 "" +#define __SIZE_TYPE__ unsigned int +# 0 "" +#define __PTRDIFF_TYPE__ int +# 0 "" +#define __WCHAR_TYPE__ unsigned int +# 0 "" +#define __WINT_TYPE__ unsigned int +# 0 "" +#define __INTMAX_TYPE__ long long int +# 0 "" +#define __UINTMAX_TYPE__ long long unsigned int +# 0 "" +#define __CHAR16_TYPE__ short unsigned int +# 0 "" +#define __CHAR32_TYPE__ long unsigned int +# 0 "" +#define __SIG_ATOMIC_TYPE__ int +# 0 "" +#define __INT8_TYPE__ signed char +# 0 "" +#define __INT16_TYPE__ short int +# 0 "" +#define __INT32_TYPE__ long int +# 0 "" +#define __INT64_TYPE__ long long int +# 0 "" +#define __UINT8_TYPE__ unsigned char +# 0 "" +#define __UINT16_TYPE__ short unsigned int +# 0 "" +#define __UINT32_TYPE__ long unsigned int +# 0 "" +#define __UINT64_TYPE__ long long unsigned int +# 0 "" +#define __INT_LEAST8_TYPE__ signed char +# 0 "" +#define __INT_LEAST16_TYPE__ short int +# 0 "" +#define __INT_LEAST32_TYPE__ long int +# 0 "" +#define __INT_LEAST64_TYPE__ long long int +# 0 "" +#define __UINT_LEAST8_TYPE__ unsigned char +# 0 "" +#define __UINT_LEAST16_TYPE__ short unsigned int +# 0 "" +#define __UINT_LEAST32_TYPE__ long unsigned int +# 0 "" +#define __UINT_LEAST64_TYPE__ long long unsigned int +# 0 "" +#define __INT_FAST8_TYPE__ int +# 0 "" +#define __INT_FAST16_TYPE__ int +# 0 "" +#define __INT_FAST32_TYPE__ int +# 0 "" +#define __INT_FAST64_TYPE__ long long int +# 0 "" +#define __UINT_FAST8_TYPE__ unsigned int +# 0 "" +#define __UINT_FAST16_TYPE__ unsigned int +# 0 "" +#define __UINT_FAST32_TYPE__ unsigned int +# 0 "" +#define __UINT_FAST64_TYPE__ long long unsigned int +# 0 "" +#define __INTPTR_TYPE__ int +# 0 "" +#define __UINTPTR_TYPE__ unsigned int +# 0 "" +#define __GXX_ABI_VERSION 1017 +# 0 "" +#define __SCHAR_MAX__ 0x7f +# 0 "" +#define __SHRT_MAX__ 0x7fff +# 0 "" +#define __INT_MAX__ 0x7fffffff +# 0 "" +#define __LONG_MAX__ 0x7fffffffL +# 0 "" +#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __WCHAR_MAX__ 0xffffffffU +# 0 "" +#define __WCHAR_MIN__ 0U +# 0 "" +#define __WINT_MAX__ 0xffffffffU +# 0 "" +#define __WINT_MIN__ 0U +# 0 "" +#define __PTRDIFF_MAX__ 0x7fffffff +# 0 "" +#define __SIZE_MAX__ 0xffffffffU +# 0 "" +#define __SCHAR_WIDTH__ 8 +# 0 "" +#define __SHRT_WIDTH__ 16 +# 0 "" +#define __INT_WIDTH__ 32 +# 0 "" +#define __LONG_WIDTH__ 32 +# 0 "" +#define __LONG_LONG_WIDTH__ 64 +# 0 "" +#define __WCHAR_WIDTH__ 32 +# 0 "" +#define __WINT_WIDTH__ 32 +# 0 "" +#define __PTRDIFF_WIDTH__ 32 +# 0 "" +#define __SIZE_WIDTH__ 32 +# 0 "" +#define __INTMAX_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __INTMAX_C(c) c ## LL +# 0 "" +#define __UINTMAX_MAX__ 0xffffffffffffffffULL +# 0 "" +#define __UINTMAX_C(c) c ## ULL +# 0 "" +#define __INTMAX_WIDTH__ 64 +# 0 "" +#define __SIG_ATOMIC_MAX__ 0x7fffffff +# 0 "" +#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) +# 0 "" +#define __SIG_ATOMIC_WIDTH__ 32 +# 0 "" +#define __INT8_MAX__ 0x7f +# 0 "" +#define __INT16_MAX__ 0x7fff +# 0 "" +#define __INT32_MAX__ 0x7fffffffL +# 0 "" +#define __INT64_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __UINT8_MAX__ 0xff +# 0 "" +#define __UINT16_MAX__ 0xffff +# 0 "" +#define __UINT32_MAX__ 0xffffffffUL +# 0 "" +#define __UINT64_MAX__ 0xffffffffffffffffULL +# 0 "" +#define __INT_LEAST8_MAX__ 0x7f +# 0 "" +#define __INT8_C(c) c +# 0 "" +#define __INT_LEAST8_WIDTH__ 8 +# 0 "" +#define __INT_LEAST16_MAX__ 0x7fff +# 0 "" +#define __INT16_C(c) c +# 0 "" +#define __INT_LEAST16_WIDTH__ 16 +# 0 "" +#define __INT_LEAST32_MAX__ 0x7fffffffL +# 0 "" +#define __INT32_C(c) c ## L +# 0 "" +#define __INT_LEAST32_WIDTH__ 32 +# 0 "" +#define __INT_LEAST64_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __INT64_C(c) c ## LL +# 0 "" +#define __INT_LEAST64_WIDTH__ 64 +# 0 "" +#define __UINT_LEAST8_MAX__ 0xff +# 0 "" +#define __UINT8_C(c) c +# 0 "" +#define __UINT_LEAST16_MAX__ 0xffff +# 0 "" +#define __UINT16_C(c) c +# 0 "" +#define __UINT_LEAST32_MAX__ 0xffffffffUL +# 0 "" +#define __UINT32_C(c) c ## UL +# 0 "" +#define __UINT_LEAST64_MAX__ 0xffffffffffffffffULL +# 0 "" +#define __UINT64_C(c) c ## ULL +# 0 "" +#define __INT_FAST8_MAX__ 0x7fffffff +# 0 "" +#define __INT_FAST8_WIDTH__ 32 +# 0 "" +#define __INT_FAST16_MAX__ 0x7fffffff +# 0 "" +#define __INT_FAST16_WIDTH__ 32 +# 0 "" +#define __INT_FAST32_MAX__ 0x7fffffff +# 0 "" +#define __INT_FAST32_WIDTH__ 32 +# 0 "" +#define __INT_FAST64_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __INT_FAST64_WIDTH__ 64 +# 0 "" +#define __UINT_FAST8_MAX__ 0xffffffffU +# 0 "" +#define __UINT_FAST16_MAX__ 0xffffffffU +# 0 "" +#define __UINT_FAST32_MAX__ 0xffffffffU +# 0 "" +#define __UINT_FAST64_MAX__ 0xffffffffffffffffULL +# 0 "" +#define __INTPTR_MAX__ 0x7fffffff +# 0 "" +#define __INTPTR_WIDTH__ 32 +# 0 "" +#define __UINTPTR_MAX__ 0xffffffffU +# 0 "" +#define __GCC_IEC_559 0 +# 0 "" +#define __GCC_IEC_559_COMPLEX 0 +# 0 "" +#define __FLT_EVAL_METHOD__ 0 +# 0 "" +#define __FLT_EVAL_METHOD_TS_18661_3__ 0 +# 0 "" +#define __DEC_EVAL_METHOD__ 2 +# 0 "" +#define __FLT_RADIX__ 2 +# 0 "" +#define __FLT_MANT_DIG__ 24 +# 0 "" +#define __FLT_DIG__ 6 +# 0 "" +#define __FLT_MIN_EXP__ (-125) +# 0 "" +#define __FLT_MIN_10_EXP__ (-37) +# 0 "" +#define __FLT_MAX_EXP__ 128 +# 0 "" +#define __FLT_MAX_10_EXP__ 38 +# 0 "" +#define __FLT_DECIMAL_DIG__ 9 +# 0 "" +#define __FLT_MAX__ 3.4028234663852886e+38F +# 0 "" +#define __FLT_NORM_MAX__ 3.4028234663852886e+38F +# 0 "" +#define __FLT_MIN__ 1.1754943508222875e-38F +# 0 "" +#define __FLT_EPSILON__ 1.1920928955078125e-7F +# 0 "" +#define __FLT_DENORM_MIN__ 1.4012984643248171e-45F +# 0 "" +#define __FLT_HAS_DENORM__ 1 +# 0 "" +#define __FLT_HAS_INFINITY__ 1 +# 0 "" +#define __FLT_HAS_QUIET_NAN__ 1 +# 0 "" +#define __FP_FAST_FMAF 1 +# 0 "" +#define __FLT_IS_IEC_60559__ 2 +# 0 "" +#define __DBL_MANT_DIG__ 53 +# 0 "" +#define __DBL_DIG__ 15 +# 0 "" +#define __DBL_MIN_EXP__ (-1021) +# 0 "" +#define __DBL_MIN_10_EXP__ (-307) +# 0 "" +#define __DBL_MAX_EXP__ 1024 +# 0 "" +#define __DBL_MAX_10_EXP__ 308 +# 0 "" +#define __DBL_DECIMAL_DIG__ 17 +# 0 "" +#define __DBL_MAX__ ((double)1.7976931348623157e+308L) +# 0 "" +#define __DBL_NORM_MAX__ ((double)1.7976931348623157e+308L) +# 0 "" +#define __DBL_MIN__ ((double)2.2250738585072014e-308L) +# 0 "" +#define __DBL_EPSILON__ ((double)2.2204460492503131e-16L) +# 0 "" +#define __DBL_DENORM_MIN__ ((double)4.9406564584124654e-324L) +# 0 "" +#define __DBL_HAS_DENORM__ 1 +# 0 "" +#define __DBL_HAS_INFINITY__ 1 +# 0 "" +#define __DBL_HAS_QUIET_NAN__ 1 +# 0 "" +#define __DBL_IS_IEC_60559__ 2 +# 0 "" +#define __LDBL_MANT_DIG__ 53 +# 0 "" +#define __LDBL_DIG__ 15 +# 0 "" +#define __LDBL_MIN_EXP__ (-1021) +# 0 "" +#define __LDBL_MIN_10_EXP__ (-307) +# 0 "" +#define __LDBL_MAX_EXP__ 1024 +# 0 "" +#define __LDBL_MAX_10_EXP__ 308 +# 0 "" +#define __DECIMAL_DIG__ 17 +# 0 "" +#define __LDBL_DECIMAL_DIG__ 17 +# 0 "" +#define __LDBL_MAX__ 1.7976931348623157e+308L +# 0 "" +#define __LDBL_NORM_MAX__ 1.7976931348623157e+308L +# 0 "" +#define __LDBL_MIN__ 2.2250738585072014e-308L +# 0 "" +#define __LDBL_EPSILON__ 2.2204460492503131e-16L +# 0 "" +#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L +# 0 "" +#define __LDBL_HAS_DENORM__ 1 +# 0 "" +#define __LDBL_HAS_INFINITY__ 1 +# 0 "" +#define __LDBL_HAS_QUIET_NAN__ 1 +# 0 "" +#define __LDBL_IS_IEC_60559__ 2 +# 0 "" +#define __FLT32_MANT_DIG__ 24 +# 0 "" +#define __FLT32_DIG__ 6 +# 0 "" +#define __FLT32_MIN_EXP__ (-125) +# 0 "" +#define __FLT32_MIN_10_EXP__ (-37) +# 0 "" +#define __FLT32_MAX_EXP__ 128 +# 0 "" +#define __FLT32_MAX_10_EXP__ 38 +# 0 "" +#define __FLT32_DECIMAL_DIG__ 9 +# 0 "" +#define __FLT32_MAX__ 3.4028234663852886e+38F32 +# 0 "" +#define __FLT32_NORM_MAX__ 3.4028234663852886e+38F32 +# 0 "" +#define __FLT32_MIN__ 1.1754943508222875e-38F32 +# 0 "" +#define __FLT32_EPSILON__ 1.1920928955078125e-7F32 +# 0 "" +#define __FLT32_DENORM_MIN__ 1.4012984643248171e-45F32 +# 0 "" +#define __FLT32_HAS_DENORM__ 1 +# 0 "" +#define __FLT32_HAS_INFINITY__ 1 +# 0 "" +#define __FLT32_HAS_QUIET_NAN__ 1 +# 0 "" +#define __FP_FAST_FMAF32 1 +# 0 "" +#define __FLT32_IS_IEC_60559__ 2 +# 0 "" +#define __FLT64_MANT_DIG__ 53 +# 0 "" +#define __FLT64_DIG__ 15 +# 0 "" +#define __FLT64_MIN_EXP__ (-1021) +# 0 "" +#define __FLT64_MIN_10_EXP__ (-307) +# 0 "" +#define __FLT64_MAX_EXP__ 1024 +# 0 "" +#define __FLT64_MAX_10_EXP__ 308 +# 0 "" +#define __FLT64_DECIMAL_DIG__ 17 +# 0 "" +#define __FLT64_MAX__ 1.7976931348623157e+308F64 +# 0 "" +#define __FLT64_NORM_MAX__ 1.7976931348623157e+308F64 +# 0 "" +#define __FLT64_MIN__ 2.2250738585072014e-308F64 +# 0 "" +#define __FLT64_EPSILON__ 2.2204460492503131e-16F64 +# 0 "" +#define __FLT64_DENORM_MIN__ 4.9406564584124654e-324F64 +# 0 "" +#define __FLT64_HAS_DENORM__ 1 +# 0 "" +#define __FLT64_HAS_INFINITY__ 1 +# 0 "" +#define __FLT64_HAS_QUIET_NAN__ 1 +# 0 "" +#define __FLT64_IS_IEC_60559__ 2 +# 0 "" +#define __FLT32X_MANT_DIG__ 53 +# 0 "" +#define __FLT32X_DIG__ 15 +# 0 "" +#define __FLT32X_MIN_EXP__ (-1021) +# 0 "" +#define __FLT32X_MIN_10_EXP__ (-307) +# 0 "" +#define __FLT32X_MAX_EXP__ 1024 +# 0 "" +#define __FLT32X_MAX_10_EXP__ 308 +# 0 "" +#define __FLT32X_DECIMAL_DIG__ 17 +# 0 "" +#define __FLT32X_MAX__ 1.7976931348623157e+308F32x +# 0 "" +#define __FLT32X_NORM_MAX__ 1.7976931348623157e+308F32x +# 0 "" +#define __FLT32X_MIN__ 2.2250738585072014e-308F32x +# 0 "" +#define __FLT32X_EPSILON__ 2.2204460492503131e-16F32x +# 0 "" +#define __FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x +# 0 "" +#define __FLT32X_HAS_DENORM__ 1 +# 0 "" +#define __FLT32X_HAS_INFINITY__ 1 +# 0 "" +#define __FLT32X_HAS_QUIET_NAN__ 1 +# 0 "" +#define __FLT32X_IS_IEC_60559__ 2 +# 0 "" +#define __SFRACT_FBIT__ 7 +# 0 "" +#define __SFRACT_IBIT__ 0 +# 0 "" +#define __SFRACT_MIN__ (-0.5HR-0.5HR) +# 0 "" +#define __SFRACT_MAX__ 0X7FP-7HR +# 0 "" +#define __SFRACT_EPSILON__ 0x1P-7HR +# 0 "" +#define __USFRACT_FBIT__ 8 +# 0 "" +#define __USFRACT_IBIT__ 0 +# 0 "" +#define __USFRACT_MIN__ 0.0UHR +# 0 "" +#define __USFRACT_MAX__ 0XFFP-8UHR +# 0 "" +#define __USFRACT_EPSILON__ 0x1P-8UHR +# 0 "" +#define __FRACT_FBIT__ 15 +# 0 "" +#define __FRACT_IBIT__ 0 +# 0 "" +#define __FRACT_MIN__ (-0.5R-0.5R) +# 0 "" +#define __FRACT_MAX__ 0X7FFFP-15R +# 0 "" +#define __FRACT_EPSILON__ 0x1P-15R +# 0 "" +#define __UFRACT_FBIT__ 16 +# 0 "" +#define __UFRACT_IBIT__ 0 +# 0 "" +#define __UFRACT_MIN__ 0.0UR +# 0 "" +#define __UFRACT_MAX__ 0XFFFFP-16UR +# 0 "" +#define __UFRACT_EPSILON__ 0x1P-16UR +# 0 "" +#define __LFRACT_FBIT__ 31 +# 0 "" +#define __LFRACT_IBIT__ 0 +# 0 "" +#define __LFRACT_MIN__ (-0.5LR-0.5LR) +# 0 "" +#define __LFRACT_MAX__ 0X7FFFFFFFP-31LR +# 0 "" +#define __LFRACT_EPSILON__ 0x1P-31LR +# 0 "" +#define __ULFRACT_FBIT__ 32 +# 0 "" +#define __ULFRACT_IBIT__ 0 +# 0 "" +#define __ULFRACT_MIN__ 0.0ULR +# 0 "" +#define __ULFRACT_MAX__ 0XFFFFFFFFP-32ULR +# 0 "" +#define __ULFRACT_EPSILON__ 0x1P-32ULR +# 0 "" +#define __LLFRACT_FBIT__ 63 +# 0 "" +#define __LLFRACT_IBIT__ 0 +# 0 "" +#define __LLFRACT_MIN__ (-0.5LLR-0.5LLR) +# 0 "" +#define __LLFRACT_MAX__ 0X7FFFFFFFFFFFFFFFP-63LLR +# 0 "" +#define __LLFRACT_EPSILON__ 0x1P-63LLR +# 0 "" +#define __ULLFRACT_FBIT__ 64 +# 0 "" +#define __ULLFRACT_IBIT__ 0 +# 0 "" +#define __ULLFRACT_MIN__ 0.0ULLR +# 0 "" +#define __ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR +# 0 "" +#define __ULLFRACT_EPSILON__ 0x1P-64ULLR +# 0 "" +#define __SACCUM_FBIT__ 7 +# 0 "" +#define __SACCUM_IBIT__ 8 +# 0 "" +#define __SACCUM_MIN__ (-0X1P7HK-0X1P7HK) +# 0 "" +#define __SACCUM_MAX__ 0X7FFFP-7HK +# 0 "" +#define __SACCUM_EPSILON__ 0x1P-7HK +# 0 "" +#define __USACCUM_FBIT__ 8 +# 0 "" +#define __USACCUM_IBIT__ 8 +# 0 "" +#define __USACCUM_MIN__ 0.0UHK +# 0 "" +#define __USACCUM_MAX__ 0XFFFFP-8UHK +# 0 "" +#define __USACCUM_EPSILON__ 0x1P-8UHK +# 0 "" +#define __ACCUM_FBIT__ 15 +# 0 "" +#define __ACCUM_IBIT__ 16 +# 0 "" +#define __ACCUM_MIN__ (-0X1P15K-0X1P15K) +# 0 "" +#define __ACCUM_MAX__ 0X7FFFFFFFP-15K +# 0 "" +#define __ACCUM_EPSILON__ 0x1P-15K +# 0 "" +#define __UACCUM_FBIT__ 16 +# 0 "" +#define __UACCUM_IBIT__ 16 +# 0 "" +#define __UACCUM_MIN__ 0.0UK +# 0 "" +#define __UACCUM_MAX__ 0XFFFFFFFFP-16UK +# 0 "" +#define __UACCUM_EPSILON__ 0x1P-16UK +# 0 "" +#define __LACCUM_FBIT__ 31 +# 0 "" +#define __LACCUM_IBIT__ 32 +# 0 "" +#define __LACCUM_MIN__ (-0X1P31LK-0X1P31LK) +# 0 "" +#define __LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK +# 0 "" +#define __LACCUM_EPSILON__ 0x1P-31LK +# 0 "" +#define __ULACCUM_FBIT__ 32 +# 0 "" +#define __ULACCUM_IBIT__ 32 +# 0 "" +#define __ULACCUM_MIN__ 0.0ULK +# 0 "" +#define __ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK +# 0 "" +#define __ULACCUM_EPSILON__ 0x1P-32ULK +# 0 "" +#define __LLACCUM_FBIT__ 31 +# 0 "" +#define __LLACCUM_IBIT__ 32 +# 0 "" +#define __LLACCUM_MIN__ (-0X1P31LLK-0X1P31LLK) +# 0 "" +#define __LLACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LLK +# 0 "" +#define __LLACCUM_EPSILON__ 0x1P-31LLK +# 0 "" +#define __ULLACCUM_FBIT__ 32 +# 0 "" +#define __ULLACCUM_IBIT__ 32 +# 0 "" +#define __ULLACCUM_MIN__ 0.0ULLK +# 0 "" +#define __ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK +# 0 "" +#define __ULLACCUM_EPSILON__ 0x1P-32ULLK +# 0 "" +#define __QQ_FBIT__ 7 +# 0 "" +#define __QQ_IBIT__ 0 +# 0 "" +#define __HQ_FBIT__ 15 +# 0 "" +#define __HQ_IBIT__ 0 +# 0 "" +#define __SQ_FBIT__ 31 +# 0 "" +#define __SQ_IBIT__ 0 +# 0 "" +#define __DQ_FBIT__ 63 +# 0 "" +#define __DQ_IBIT__ 0 +# 0 "" +#define __TQ_FBIT__ 127 +# 0 "" +#define __TQ_IBIT__ 0 +# 0 "" +#define __UQQ_FBIT__ 8 +# 0 "" +#define __UQQ_IBIT__ 0 +# 0 "" +#define __UHQ_FBIT__ 16 +# 0 "" +#define __UHQ_IBIT__ 0 +# 0 "" +#define __USQ_FBIT__ 32 +# 0 "" +#define __USQ_IBIT__ 0 +# 0 "" +#define __UDQ_FBIT__ 64 +# 0 "" +#define __UDQ_IBIT__ 0 +# 0 "" +#define __UTQ_FBIT__ 128 +# 0 "" +#define __UTQ_IBIT__ 0 +# 0 "" +#define __HA_FBIT__ 7 +# 0 "" +#define __HA_IBIT__ 8 +# 0 "" +#define __SA_FBIT__ 15 +# 0 "" +#define __SA_IBIT__ 16 +# 0 "" +#define __DA_FBIT__ 31 +# 0 "" +#define __DA_IBIT__ 32 +# 0 "" +#define __TA_FBIT__ 63 +# 0 "" +#define __TA_IBIT__ 64 +# 0 "" +#define __UHA_FBIT__ 8 +# 0 "" +#define __UHA_IBIT__ 8 +# 0 "" +#define __USA_FBIT__ 16 +# 0 "" +#define __USA_IBIT__ 16 +# 0 "" +#define __UDA_FBIT__ 32 +# 0 "" +#define __UDA_IBIT__ 32 +# 0 "" +#define __UTA_FBIT__ 64 +# 0 "" +#define __UTA_IBIT__ 64 +# 0 "" +#define __REGISTER_PREFIX__ +# 0 "" +#define __USER_LABEL_PREFIX__ +# 0 "" +#define __GNUC_STDC_INLINE__ 1 +# 0 "" +#define __NO_INLINE__ 1 +# 0 "" +#define __STRICT_ANSI__ 1 +# 0 "" +#define __CHAR_UNSIGNED__ 1 +# 0 "" +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 +# 0 "" +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 +# 0 "" +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 +# 0 "" +#define __GCC_ATOMIC_BOOL_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_CHAR_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_SHORT_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_INT_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_LONG_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_LLONG_LOCK_FREE 1 +# 0 "" +#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 +# 0 "" +#define __GCC_DESTRUCTIVE_SIZE 64 +# 0 "" +#define __GCC_CONSTRUCTIVE_SIZE 64 +# 0 "" +#define __GCC_ATOMIC_POINTER_LOCK_FREE 2 +# 0 "" +#define __HAVE_SPECULATION_SAFE_VALUE 1 +# 0 "" +#define __GCC_HAVE_DWARF2_CFI_ASM 1 +# 0 "" +#define __PRAGMA_REDEFINE_EXTNAME 1 +# 0 "" +#define __SIZEOF_WCHAR_T__ 4 +# 0 "" +#define __SIZEOF_WINT_T__ 4 +# 0 "" +#define __SIZEOF_PTRDIFF_T__ 4 +# 0 "" +#define __ARM_FEATURE_DSP 1 +# 0 "" +#define __ARM_FEATURE_QBIT 1 +# 0 "" +#define __ARM_FEATURE_SAT 1 +# 0 "" +#undef __ARM_FEATURE_CRYPTO +# 0 "" +#define __ARM_FEATURE_UNALIGNED 1 +# 0 "" +#undef __ARM_FEATURE_QRDMX +# 0 "" +#undef __ARM_FEATURE_CRC32 +# 0 "" +#undef __ARM_FEATURE_DOTPROD +# 0 "" +#undef __ARM_FEATURE_COMPLEX +# 0 "" +#define __ARM_32BIT_STATE 1 +# 0 "" +#undef __ARM_FEATURE_MVE +# 0 "" +#undef __ARM_FEATURE_CMSE +# 0 "" +#undef __ARM_FEATURE_LDREX +# 0 "" +#define __ARM_FEATURE_LDREX 7 +# 0 "" +#define __ARM_FEATURE_CLZ 1 +# 0 "" +#undef __ARM_FEATURE_NUMERIC_MAXMIN +# 0 "" +#define __ARM_FEATURE_SIMD32 1 +# 0 "" +#define __ARM_SIZEOF_MINIMAL_ENUM 1 +# 0 "" +#define __ARM_SIZEOF_WCHAR_T 4 +# 0 "" +#undef __ARM_ARCH_PROFILE +# 0 "" +#define __ARM_ARCH_PROFILE 77 +# 0 "" +#define __arm__ 1 +# 0 "" +#undef __ARM_ARCH +# 0 "" +#define __ARM_ARCH 7 +# 0 "" +#define __APCS_32__ 1 +# 0 "" +#define __GCC_ASM_FLAG_OUTPUTS__ 1 +# 0 "" +#define __thumb__ 1 +# 0 "" +#define __thumb2__ 1 +# 0 "" +#define __THUMBEL__ 1 +# 0 "" +#undef __ARM_ARCH_ISA_THUMB +# 0 "" +#define __ARM_ARCH_ISA_THUMB 2 +# 0 "" +#define __ARMEL__ 1 +# 0 "" +#define __VFP_FP__ 1 +# 0 "" +#undef __ARM_FP +# 0 "" +#define __ARM_FP 4 +# 0 "" +#undef __ARM_FP16_FORMAT_IEEE +# 0 "" +#undef __ARM_FP16_FORMAT_ALTERNATIVE +# 0 "" +#undef __ARM_FP16_ARGS +# 0 "" +#undef __ARM_FEATURE_FP16_SCALAR_ARITHMETIC +# 0 "" +#undef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC +# 0 "" +#undef __ARM_FEATURE_FP16_FML +# 0 "" +#define __ARM_FEATURE_FMA 1 +# 0 "" +#undef __ARM_NEON__ +# 0 "" +#undef __ARM_NEON +# 0 "" +#undef __ARM_NEON_FP +# 0 "" +#define __THUMB_INTERWORK__ 1 +# 0 "" +#define __ARM_ARCH_7EM__ 1 +# 0 "" +#define __ARM_PCS_VFP 1 +# 0 "" +#define __ARM_EABI__ 1 +# 0 "" +#undef __FDPIC__ +# 0 "" +#define __ARM_ARCH_EXT_IDIV__ 1 +# 0 "" +#define __ARM_FEATURE_IDIV 1 +# 0 "" +#define __ARM_ASM_SYNTAX_UNIFIED__ 1 +# 0 "" +#undef __ARM_FEATURE_COPROC +# 0 "" +#define __ARM_FEATURE_COPROC 15 +# 0 "" +#undef __ARM_FEATURE_CDE +# 0 "" +#undef __ARM_FEATURE_CDE_COPROC +# 0 "" +#undef __ARM_FEATURE_MATMUL_INT8 +# 0 "" +#undef __ARM_FEATURE_BF16_SCALAR_ARITHMETIC +# 0 "" +#undef __ARM_FEATURE_BF16_VECTOR_ARITHMETIC +# 0 "" +#undef __ARM_BF16_FORMAT_ALTERNATIVE +# 0 "" +#define __GXX_TYPEINFO_EQUALITY_INLINE 0 +# 0 "" +#define __ELF__ 1 +# 0 "" +#define __USES_INITFINI__ 1 +# 1 "src/usart.c" +# 1 "src/rcc.h" 1 + +#define RCC_H_ + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 1 3 +# 14 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 3 +#define _INTTYPES_H + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 1 3 + + + + + + +#define __NEWLIB_H__ 1 + + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_newlib_version.h" 1 3 + + + +#define _NEWLIB_VERSION_H__ 1 + +#define _NEWLIB_VERSION "4.3.0" +#define __NEWLIB__ 4 +#define __NEWLIB_MINOR__ 3 +#define __NEWLIB_PATCHLEVEL__ 0 +# 11 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 2 3 +# 27 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 3 +#define _ATEXIT_DYNAMIC_ALLOC 1 + + + + + +#define _FSEEK_OPTIMIZATION 1 + + +#define _FVWRITE_IN_STREAMIO 1 + + +#define _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1 + + + +#define _HAVE_INITFINI_ARRAY 1 + + +#define _HAVE_LONG_DOUBLE 1 +# 355 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 3 +#define _LDBL_EQ_DBL 1 + + + + + +#define _MB_CAPABLE 1 + + +#define _MB_LEN_MAX 8 +# 373 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 3 +#define _REENT_CHECK_VERIFY 1 + + +#define _RETARGETABLE_LOCKING 1 + + +#define _UNBUF_STREAM_OPT 1 + + + +#define _WANT_IO_C99_FORMATS 1 + + + + + + + +#define _WANT_IO_LONG_LONG 1 +# 408 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 3 +#define _WANT_REGISTER_FINI 1 + + +#define _WANT_USE_GDTOA 1 + + + + + +#define _WIDE_ORIENT 1 +# 17 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 1 3 + +#define __SYS_CONFIG_H__ + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" 1 3 +# 77 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" 3 +#define __IEEE_LITTLE_ENDIAN +# 91 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" 3 +#define _SUPPORTS_ERREXCEPT + + + + + + +#define __DOUBLE_TYPE double +#define __FLOAT_TYPE float +# 515 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" 3 +#define __OBSOLETE_MATH_DEFAULT 1 + + +#define __OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT +# 5 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 1 3 +# 22 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define _SYS_FEATURES_H +# 33 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) + + + + + + +#define __GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi) +# 249 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __ATFILE_VISIBLE 0 + + + + + +#define __BSD_VISIBLE 0 + + + + + +#define __GNU_VISIBLE 0 + + + + +#define __ISO_C_VISIBLE 2011 +# 277 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __LARGEFILE_VISIBLE 0 + + + + + +#define __MISC_VISIBLE 0 +# 299 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __POSIX_VISIBLE 0 + + + + + +#define __SVID_VISIBLE 0 +# 319 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __XSI_VISIBLE 0 +# 331 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __SSP_FORTIFY_LEVEL 0 +# 6 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 2 3 +# 224 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 3 +#define _POINTER_INT long + + + + + +#undef __RAND_MAX + + + +#define __RAND_MAX 0x7fffffff +# 248 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 3 +#define __EXPORT + + + +#define __IMPORT + + + + + + +#define _READ_WRITE_RETURN_TYPE int + + + + + +#define _READ_WRITE_BUFSIZE_TYPE int +# 290 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 3 +#define _USE_GDTOA +# 18 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 1 3 +# 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define _SYS__INTSUP_H + + + + + +#define __STDINT_EXP(x) __ ##x ##__ +# 35 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 + + + + + + + + +#undef signed +#undef unsigned +#undef char +#undef short +#undef int +#undef __int20 +#undef __int20__ +#undef long +#define signed +0 +#define unsigned +0 +#define char +0 +#define short +1 +#define __int20 +2 +#define __int20__ +2 +#define int +2 +#define long +4 +# 67 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define _INTPTR_EQ_INT + + + + + + +#define _INT32_EQ_LONG + + + + + + + +#define __INT8 "hh" +# 93 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __INT16 "h" +# 104 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __INT32 "l" +# 113 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __INT64 "ll" + + + + + + +#define __FAST8 +# 129 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __FAST16 + + + + + + +#define __FAST32 +# 147 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __FAST64 "ll" + + + +#define __LEAST8 "hh" +# 162 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __LEAST16 "h" +# 173 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __LEAST32 "l" +# 182 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __LEAST64 "ll" + +#undef signed +#undef unsigned +#undef char +#undef short +#undef int +#undef long + + + + + +# 194 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#undef __int20 + +# 195 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#undef __int20__ + + +# 19 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" 1 3 + + + + + + + +#define _ANSIDECL_H_ +# 31 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" 3 +#define _BEGIN_STD_C +#define _END_STD_C +#define _NOTHROW + + + +#define _LONG_DOUBLE long double + + + + + +#define _ATTRIBUTE(attrs) __attribute__ (attrs) +# 69 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" 3 +#define _ELIDABLE_INLINE static __inline__ + + + +#define _NOINLINE __attribute__ ((__noinline__)) +#define _NOINLINE_STATIC _NOINLINE static +# 20 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" 1 3 4 +# 9 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" 3 4 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 1 3 4 +# 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define _STDINT_H + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 1 3 4 + + + + + +#define _MACHINE__DEFAULT_TYPES_H +# 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +#define __EXP(x) __ ##x ##__ +# 26 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +#define __have_longlong64 1 + + + + + + +#define __have_long32 1 + + + + + + + + +# 41 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef signed char __int8_t; + +typedef unsigned char __uint8_t; + + + +#define ___int8_t_defined 1 + + + + + + + +typedef short int __int16_t; + +typedef short unsigned int __uint16_t; + + + +#define ___int16_t_defined 1 +# 77 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef long int __int32_t; + +typedef long unsigned int __uint32_t; + + + +#define ___int32_t_defined 1 +# 103 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef long long int __int64_t; + +typedef long long unsigned int __uint64_t; + + + +#define ___int64_t_defined 1 +# 134 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef signed char __int_least8_t; + +typedef unsigned char __uint_least8_t; + + + +#define ___int_least8_t_defined 1 +# 160 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef short int __int_least16_t; + +typedef short unsigned int __uint_least16_t; + + + +#define ___int_least16_t_defined 1 +# 182 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef long int __int_least32_t; + +typedef long unsigned int __uint_least32_t; + + + +#define ___int_least32_t_defined 1 +# 200 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef long long int __int_least64_t; + +typedef long long unsigned int __uint_least64_t; + + + +#define ___int_least64_t_defined 1 + + + + + + + +typedef long long int __intmax_t; + + + + + + + +typedef long long unsigned int __uintmax_t; + + + + + + + +typedef int __intptr_t; + +typedef unsigned int __uintptr_t; +# 244 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +#undef __EXP +# 13 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 2 3 4 + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_stdint.h" 1 3 4 +# 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_stdint.h" 3 4 +#define _SYS__STDINT_H +# 20 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_stdint.h" 3 4 +typedef __int8_t int8_t ; +#define _INT8_T_DECLARED + + +typedef __uint8_t uint8_t ; +#define _UINT8_T_DECLARED + +#define __int8_t_defined 1 + + + + +typedef __int16_t int16_t ; +#define _INT16_T_DECLARED + + +typedef __uint16_t uint16_t ; +#define _UINT16_T_DECLARED + +#define __int16_t_defined 1 + + + + +typedef __int32_t int32_t ; +#define _INT32_T_DECLARED + + +typedef __uint32_t uint32_t ; +#define _UINT32_T_DECLARED + +#define __int32_t_defined 1 + + + + +typedef __int64_t int64_t ; +#define _INT64_T_DECLARED + + +typedef __uint64_t uint64_t ; +#define _UINT64_T_DECLARED + +#define __int64_t_defined 1 + + + +typedef __intmax_t intmax_t; +#define _INTMAX_T_DECLARED + + + +typedef __uintmax_t uintmax_t; +#define _UINTMAX_T_DECLARED + + + +typedef __intptr_t intptr_t; +#define _INTPTR_T_DECLARED + + + +typedef __uintptr_t uintptr_t; +#define _UINTPTR_T_DECLARED +# 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 2 3 4 + + + + + + +typedef __int_least8_t int_least8_t; +typedef __uint_least8_t uint_least8_t; +#define __int_least8_t_defined 1 + + + +typedef __int_least16_t int_least16_t; +typedef __uint_least16_t uint_least16_t; +#define __int_least16_t_defined 1 + + + +typedef __int_least32_t int_least32_t; +typedef __uint_least32_t uint_least32_t; +#define __int_least32_t_defined 1 + + + +typedef __int_least64_t int_least64_t; +typedef __uint_least64_t uint_least64_t; +#define __int_least64_t_defined 1 +# 51 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 + typedef int int_fast8_t; + typedef unsigned int uint_fast8_t; +#define __int_fast8_t_defined 1 + + + + + + + + typedef int int_fast16_t; + typedef unsigned int uint_fast16_t; +#define __int_fast16_t_defined 1 + + + + + + + + typedef int int_fast32_t; + typedef unsigned int uint_fast32_t; +#define __int_fast32_t_defined 1 + + + + + + + + typedef long long int int_fast64_t; + typedef long long unsigned int uint_fast64_t; +#define __int_fast64_t_defined 1 +# 128 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INTPTR_MIN (-__INTPTR_MAX__ - 1) +#define INTPTR_MAX (__INTPTR_MAX__) +#define UINTPTR_MAX (__UINTPTR_MAX__) +# 152 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT8_MIN (-__INT8_MAX__ - 1) +#define INT8_MAX (__INT8_MAX__) +#define UINT8_MAX (__UINT8_MAX__) + + + + + + + +#define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1) +#define INT_LEAST8_MAX (__INT_LEAST8_MAX__) +#define UINT_LEAST8_MAX (__UINT_LEAST8_MAX__) +# 174 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT16_MIN (-__INT16_MAX__ - 1) +#define INT16_MAX (__INT16_MAX__) +#define UINT16_MAX (__UINT16_MAX__) + + + + + + + +#define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1) +#define INT_LEAST16_MAX (__INT_LEAST16_MAX__) +#define UINT_LEAST16_MAX (__UINT_LEAST16_MAX__) +# 196 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT32_MIN (-__INT32_MAX__ - 1) +#define INT32_MAX (__INT32_MAX__) +#define UINT32_MAX (__UINT32_MAX__) +# 212 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1) +#define INT_LEAST32_MAX (__INT_LEAST32_MAX__) +#define UINT_LEAST32_MAX (__UINT_LEAST32_MAX__) +# 230 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT64_MIN (-__INT64_MAX__ - 1) +#define INT64_MAX (__INT64_MAX__) +#define UINT64_MAX (__UINT64_MAX__) +# 246 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1) +#define INT_LEAST64_MAX (__INT_LEAST64_MAX__) +#define UINT_LEAST64_MAX (__UINT_LEAST64_MAX__) +# 262 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1) +#define INT_FAST8_MAX (__INT_FAST8_MAX__) +#define UINT_FAST8_MAX (__UINT_FAST8_MAX__) +# 278 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1) +#define INT_FAST16_MAX (__INT_FAST16_MAX__) +#define UINT_FAST16_MAX (__UINT_FAST16_MAX__) +# 294 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1) +#define INT_FAST32_MAX (__INT_FAST32_MAX__) +#define UINT_FAST32_MAX (__UINT_FAST32_MAX__) +# 310 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1) +#define INT_FAST64_MAX (__INT_FAST64_MAX__) +#define UINT_FAST64_MAX (__UINT_FAST64_MAX__) +# 326 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INTMAX_MAX (__INTMAX_MAX__) +#define INTMAX_MIN (-INTMAX_MAX - 1) + + + + + + + +#define UINTMAX_MAX (__UINTMAX_MAX__) + + + + + + + +#define SIZE_MAX (__SIZE_MAX__) + + + + + +#define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1) +#define SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX)) + + + +#define PTRDIFF_MAX (__PTRDIFF_MAX__) + + + +#define PTRDIFF_MIN (-PTRDIFF_MAX - 1) + + + + +#define WCHAR_MIN (__WCHAR_MIN__) +# 374 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define WCHAR_MAX (__WCHAR_MAX__) +# 384 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define WINT_MAX (__WINT_MAX__) + + + + +#define WINT_MIN (__WINT_MIN__) + + + + + + +#define INT8_C(x) __INT8_C(x) +#define UINT8_C(x) __UINT8_C(x) +# 408 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT16_C(x) __INT16_C(x) +#define UINT16_C(x) __UINT16_C(x) +# 420 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT32_C(x) __INT32_C(x) +#define UINT32_C(x) __UINT32_C(x) +# 433 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT64_C(x) __INT64_C(x) +#define UINT64_C(x) __UINT64_C(x) +# 449 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INTMAX_C(x) __INTMAX_C(x) +#define UINTMAX_C(x) __UINTMAX_C(x) +# 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" 2 3 4 + + + +#define _GCC_WRAP_STDINT_H +# 21 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +#define __need_wchar_t +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 1 3 4 +# 267 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +#define __wchar_t__ +#define __WCHAR_T__ +#define _WCHAR_T +#define _T_WCHAR_ +#define _T_WCHAR +#define __WCHAR_T +#define _WCHAR_T_ +#define _BSD_WCHAR_T_ +#define _WCHAR_T_DEFINED_ +#define _WCHAR_T_DEFINED +#define _WCHAR_T_H +#define ___int_wchar_t_h +#define __INT_WCHAR_T_H +#define _GCC_WCHAR_T +#define _WCHAR_T_DECLARED +#define __DEFINED_wchar_t +# 295 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +#undef _BSD_WCHAR_T_ +# 329 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +typedef unsigned int wchar_t; +# 349 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +#undef __need_wchar_t +# 410 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +#undef __need_NULL +# 23 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 + + + + + +#define __STRINGIFY(a) #a + + +#define __PRI8(x) __INT8 __STRINGIFY(x) +#define __PRI8LEAST(x) __LEAST8 __STRINGIFY(x) +#define __PRI8FAST(x) __FAST8 __STRINGIFY(x) +# 46 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 3 +#define __SCN8(x) __INT8 __STRINGIFY(x) +#define __SCN8LEAST(x) __LEAST8 __STRINGIFY(x) +#define __SCN8FAST(x) __FAST8 __STRINGIFY(x) + + + +#define PRId8 __PRI8(d) +#define PRIi8 __PRI8(i) +#define PRIo8 __PRI8(o) +#define PRIu8 __PRI8(u) +#define PRIx8 __PRI8(x) +#define PRIX8 __PRI8(X) + + + + +#define SCNd8 __SCN8(d) +#define SCNi8 __SCN8(i) +#define SCNo8 __SCN8(o) +#define SCNu8 __SCN8(u) +#define SCNx8 __SCN8(x) + + + + +#define PRIdLEAST8 __PRI8LEAST(d) +#define PRIiLEAST8 __PRI8LEAST(i) +#define PRIoLEAST8 __PRI8LEAST(o) +#define PRIuLEAST8 __PRI8LEAST(u) +#define PRIxLEAST8 __PRI8LEAST(x) +#define PRIXLEAST8 __PRI8LEAST(X) + + + + +#define SCNdLEAST8 __SCN8LEAST(d) +#define SCNiLEAST8 __SCN8LEAST(i) +#define SCNoLEAST8 __SCN8LEAST(o) +#define SCNuLEAST8 __SCN8LEAST(u) +#define SCNxLEAST8 __SCN8LEAST(x) + + + +#define PRIdFAST8 __PRI8FAST(d) +#define PRIiFAST8 __PRI8FAST(i) +#define PRIoFAST8 __PRI8FAST(o) +#define PRIuFAST8 __PRI8FAST(u) +#define PRIxFAST8 __PRI8FAST(x) +#define PRIXFAST8 __PRI8FAST(X) + + + + +#define SCNdFAST8 __SCN8FAST(d) +#define SCNiFAST8 __SCN8FAST(i) +#define SCNoFAST8 __SCN8FAST(o) +#define SCNuFAST8 __SCN8FAST(u) +#define SCNxFAST8 __SCN8FAST(x) + + + + +#define __PRI16(x) __INT16 __STRINGIFY(x) +#define __PRI16LEAST(x) __LEAST16 __STRINGIFY(x) +#define __PRI16FAST(x) __FAST16 __STRINGIFY(x) +#define __SCN16(x) __INT16 __STRINGIFY(x) +#define __SCN16LEAST(x) __LEAST16 __STRINGIFY(x) +#define __SCN16FAST(x) __FAST16 __STRINGIFY(x) + + +#define PRId16 __PRI16(d) +#define PRIi16 __PRI16(i) +#define PRIo16 __PRI16(o) +#define PRIu16 __PRI16(u) +#define PRIx16 __PRI16(x) +#define PRIX16 __PRI16(X) + +#define SCNd16 __SCN16(d) +#define SCNi16 __SCN16(i) +#define SCNo16 __SCN16(o) +#define SCNu16 __SCN16(u) +#define SCNx16 __SCN16(x) + + +#define PRIdLEAST16 __PRI16LEAST(d) +#define PRIiLEAST16 __PRI16LEAST(i) +#define PRIoLEAST16 __PRI16LEAST(o) +#define PRIuLEAST16 __PRI16LEAST(u) +#define PRIxLEAST16 __PRI16LEAST(x) +#define PRIXLEAST16 __PRI16LEAST(X) + +#define SCNdLEAST16 __SCN16LEAST(d) +#define SCNiLEAST16 __SCN16LEAST(i) +#define SCNoLEAST16 __SCN16LEAST(o) +#define SCNuLEAST16 __SCN16LEAST(u) +#define SCNxLEAST16 __SCN16LEAST(x) + + +#define PRIdFAST16 __PRI16FAST(d) +#define PRIiFAST16 __PRI16FAST(i) +#define PRIoFAST16 __PRI16FAST(o) +#define PRIuFAST16 __PRI16FAST(u) +#define PRIxFAST16 __PRI16FAST(x) +#define PRIXFAST16 __PRI16FAST(X) + +#define SCNdFAST16 __SCN16FAST(d) +#define SCNiFAST16 __SCN16FAST(i) +#define SCNoFAST16 __SCN16FAST(o) +#define SCNuFAST16 __SCN16FAST(u) +#define SCNxFAST16 __SCN16FAST(x) + + +#define __PRI32(x) __INT32 __STRINGIFY(x) +#define __SCN32(x) __INT32 __STRINGIFY(x) +#define __PRI32LEAST(x) __LEAST32 __STRINGIFY(x) +#define __SCN32LEAST(x) __LEAST32 __STRINGIFY(x) +#define __PRI32FAST(x) __FAST32 __STRINGIFY(x) +#define __SCN32FAST(x) __FAST32 __STRINGIFY(x) + +#define PRId32 __PRI32(d) +#define PRIi32 __PRI32(i) +#define PRIo32 __PRI32(o) +#define PRIu32 __PRI32(u) +#define PRIx32 __PRI32(x) +#define PRIX32 __PRI32(X) + +#define SCNd32 __SCN32(d) +#define SCNi32 __SCN32(i) +#define SCNo32 __SCN32(o) +#define SCNu32 __SCN32(u) +#define SCNx32 __SCN32(x) + + +#define PRIdLEAST32 __PRI32LEAST(d) +#define PRIiLEAST32 __PRI32LEAST(i) +#define PRIoLEAST32 __PRI32LEAST(o) +#define PRIuLEAST32 __PRI32LEAST(u) +#define PRIxLEAST32 __PRI32LEAST(x) +#define PRIXLEAST32 __PRI32LEAST(X) + +#define SCNdLEAST32 __SCN32LEAST(d) +#define SCNiLEAST32 __SCN32LEAST(i) +#define SCNoLEAST32 __SCN32LEAST(o) +#define SCNuLEAST32 __SCN32LEAST(u) +#define SCNxLEAST32 __SCN32LEAST(x) + + +#define PRIdFAST32 __PRI32FAST(d) +#define PRIiFAST32 __PRI32FAST(i) +#define PRIoFAST32 __PRI32FAST(o) +#define PRIuFAST32 __PRI32FAST(u) +#define PRIxFAST32 __PRI32FAST(x) +#define PRIXFAST32 __PRI32FAST(X) + +#define SCNdFAST32 __SCN32FAST(d) +#define SCNiFAST32 __SCN32FAST(i) +#define SCNoFAST32 __SCN32FAST(o) +#define SCNuFAST32 __SCN32FAST(u) +#define SCNxFAST32 __SCN32FAST(x) + + + +#define __PRI64(x) __INT64 __STRINGIFY(x) +#define __SCN64(x) __INT64 __STRINGIFY(x) + +#define __PRI64LEAST(x) __LEAST64 __STRINGIFY(x) +#define __SCN64LEAST(x) __LEAST64 __STRINGIFY(x) +#define __PRI64FAST(x) __FAST64 __STRINGIFY(x) +#define __SCN64FAST(x) __FAST64 __STRINGIFY(x) + + +#define PRId64 __PRI64(d) +#define PRIi64 __PRI64(i) +#define PRIo64 __PRI64(o) +#define PRIu64 __PRI64(u) +#define PRIx64 __PRI64(x) +#define PRIX64 __PRI64(X) + +#define SCNd64 __SCN64(d) +#define SCNi64 __SCN64(i) +#define SCNo64 __SCN64(o) +#define SCNu64 __SCN64(u) +#define SCNx64 __SCN64(x) + + + +#define PRIdLEAST64 __PRI64LEAST(d) +#define PRIiLEAST64 __PRI64LEAST(i) +#define PRIoLEAST64 __PRI64LEAST(o) +#define PRIuLEAST64 __PRI64LEAST(u) +#define PRIxLEAST64 __PRI64LEAST(x) +#define PRIXLEAST64 __PRI64LEAST(X) + +#define SCNdLEAST64 __SCN64LEAST(d) +#define SCNiLEAST64 __SCN64LEAST(i) +#define SCNoLEAST64 __SCN64LEAST(o) +#define SCNuLEAST64 __SCN64LEAST(u) +#define SCNxLEAST64 __SCN64LEAST(x) + + + +#define PRIdFAST64 __PRI64FAST(d) +#define PRIiFAST64 __PRI64FAST(i) +#define PRIoFAST64 __PRI64FAST(o) +#define PRIuFAST64 __PRI64FAST(u) +#define PRIxFAST64 __PRI64FAST(x) +#define PRIXFAST64 __PRI64FAST(X) + +#define SCNdFAST64 __SCN64FAST(d) +#define SCNiFAST64 __SCN64FAST(i) +#define SCNoFAST64 __SCN64FAST(o) +#define SCNuFAST64 __SCN64FAST(u) +#define SCNxFAST64 __SCN64FAST(x) + + + + + + + +#define __PRIMAX(x) __STRINGIFY(ll ##x) +#define __SCNMAX(x) __STRINGIFY(ll ##x) + + + + + +#define PRIdMAX __PRIMAX(d) +#define PRIiMAX __PRIMAX(i) +#define PRIoMAX __PRIMAX(o) +#define PRIuMAX __PRIMAX(u) +#define PRIxMAX __PRIMAX(x) +#define PRIXMAX __PRIMAX(X) + +#define SCNdMAX __SCNMAX(d) +#define SCNiMAX __SCNMAX(i) +#define SCNoMAX __SCNMAX(o) +#define SCNuMAX __SCNMAX(u) +#define SCNxMAX __SCNMAX(x) +# 294 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 3 +#define __PRIPTR(x) __STRINGIFY(x) +#define __SCNPTR(x) __STRINGIFY(x) + + +#define PRIdPTR __PRIPTR(d) +#define PRIiPTR __PRIPTR(i) +#define PRIoPTR __PRIPTR(o) +#define PRIuPTR __PRIPTR(u) +#define PRIxPTR __PRIPTR(x) +#define PRIXPTR __PRIPTR(X) + +#define SCNdPTR __SCNPTR(d) +#define SCNiPTR __SCNPTR(i) +#define SCNoPTR __SCNPTR(o) +#define SCNuPTR __SCNPTR(u) +#define SCNxPTR __SCNPTR(x) + + +typedef struct { + intmax_t quot; + intmax_t rem; +} imaxdiv_t; + +struct _reent; + + + + + +extern intmax_t imaxabs(intmax_t); +extern imaxdiv_t imaxdiv(intmax_t __numer, intmax_t __denomer); +extern intmax_t strtoimax(const char *__restrict, char **__restrict, int); +extern intmax_t _strtoimax_r(struct _reent *, const char *__restrict, char **__restrict, int); +extern uintmax_t strtoumax(const char *__restrict, char **__restrict, int); +extern uintmax_t _strtoumax_r(struct _reent *, const char *__restrict, char **__restrict, int); +extern intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int); +extern intmax_t _wcstoimax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int); +extern uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int); +extern uintmax_t _wcstoumax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int); +# 5 "src/rcc.h" 2 + + +# 6 "src/rcc.h" +struct rcc { + volatile uint32_t CR; + volatile uint32_t PLLCFGR; + volatile uint32_t CFGR; + volatile uint32_t CIR; + volatile uint32_t AHB1RSTR; + volatile uint32_t AHB2RSTR; + volatile uint32_t RESERVED0[2]; + volatile uint32_t APB1RSTR; + volatile uint32_t APB2RSTR; + volatile uint32_t RESERVED1[2]; + volatile uint32_t AHB1ENR; + volatile uint32_t AHB2ENR; + volatile uint32_t RESERVED2[2]; + volatile uint32_t APB1ENR; + volatile uint32_t APB2ENR; + volatile uint32_t RESERVED3[2]; + volatile uint32_t AHB1LPENR; + volatile uint32_t AHB2LPENR; + volatile uint32_t RESERVED4[2]; + volatile uint32_t APB1LPENR; + volatile uint32_t APB2LPENR; + volatile uint32_t RESERVED5[2]; + volatile uint32_t BDCR; + volatile uint32_t CSR; + volatile uint32_t RESERVED6[2]; + volatile uint32_t SSCGR; + volatile uint32_t PLLI2SCFGR; + volatile uint32_t DCKCFGR; +}; + +#define RCC_BASE_ADDR (0x40023800U) +#define RCC ((struct rcc *) RCC_BASE_ADDR) + + + +#define RCC_CR_PLLRDY_BIT 25 +#define RCC_CR_PLLRDY_LOCKED (1 << RCC_CR_PLLRDY_BIT) + + +#define RCC_CR_PLLON_BIT 24 +#define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) + + +#define RCC_CR_HSERDY_BIT 17 +#define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) + + +#define RCC_CR_HSEON_BIT 16 +#define RCC_CR_HSEON_ON (1 << RCC_CR_HSEON_BIT) + + +#define RCC_CR_HSIRDY_BIT 1 +#define RCC_CR_HSIRDY_READY (1 << RCC_CR_HSIRDY_BIT) + + +#define RCC_CR_HSION_BIT 0 +#define RCC_CR_HSION_ON (1 << RCC_CR_HSION_BIT) + + +#define RCC_PLLCFGR_PLLQ_BIT 24 +#define RCC_PLLCFGR_PLLQ_MASK (0b1111) +#define RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) << RCC_PLLCFGR_PLLQ_BIT) + +#define RCC_PLLCFGR_PLLSRC_BIT 22 +#define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT) + +#define RCC_PLLCFGR_PLLP_BIT 16 +#define RCC_PLLCFGR_PLLP_MASK (0b11) +#define RCC_PLLCFGR_PLLP(p) ((p & RCC_PLLCFGR_PLLP_MASK) << RCC_PLLCFGR_PLLP_BIT) + +#define RCC_PLLCFGR_PLLN_BIT 6 +#define RCC_PLLCFGR_PLLN_MASK (0b111111111) +#define RCC_PLLCFGR_PLLN(n) ((n & RCC_PLLCFGR_PLLN_MASK) << RCC_PLLCFGR_PLLN_BIT) + +#define RCC_PLLCFGR_PLLM_BIT 0 +#define RCC_PLLCFGR_PLLM_MASK (0b111111) +#define RCC_PLLCFGR_PLLM(m) ((m & RCC_PLLCFGR_PLLM_MASK) << RCC_PLLCFGR_PLLM_BIT) + + + +#define RCC_CFGR_PPRE_DIV_NONE 0 +#define RCC_CFGR_PPRE_DIV_2 (0b100) + + +#define RCC_CFGR_PPRE2_BIT 13 +#define RCC_CFGR_PPRE2_MASK (0b111) + + +#define RCC_CFGR_PPRE1_BIT 10 +#define RCC_CFGR_PPRE1_MASK (0b111) + + +#define RCC_CFGR_HPRE_DIV_NONE 0 + +#define RCC_CFGR_HPRE_BIT 4 +#define RCC_CFGR_HPRE_MASK (0b1111) + + +#define RCC_CFGR_SWS_PLL (0b10) + +#define RCC_CFGR_SWS_BIT 2 +#define RCC_CFGR_SWS_MASK (0b11) + + +#define RCC_CFGR_SW_PLL (0b10) + +#define RCC_CFGR_SW_BIT 0 +#define RCC_CFGR_SW_MASK (0b11) +#define RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << RCC_CFGR_SW_BIT) + + +#define RCC_APB1ENR_PWREN_BIT 28 +#define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) + +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART2EN_BIT) + +#define RCC_APB1ENR_TIM4_BIT 2 +#define RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT) +# 2 "src/usart.c" 2 +# 1 "src/gpio.h" 1 + +#define GPIO_H_ + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" 1 3 4 +# 29 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" 3 4 +#define _STDBOOL_H + + + +#define bool _Bool + +#define true ((_Bool)+1u) +#define false ((_Bool)+0u) +# 50 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" 3 4 +#define __bool_true_false_are_defined 1 +# 5 "src/gpio.h" 2 + + +struct gpio { + volatile uint32_t MODER; + volatile uint32_t OTYPER; + volatile uint32_t OSPEEDR; + volatile uint32_t PUPDR; + volatile uint32_t IDR; + volatile uint32_t ODR; + volatile uint32_t BSRR; + volatile uint32_t LCKR; + volatile uint32_t AFRL; + volatile uint32_t AFRH; +}; + + +#define GPIO_AF_USART2_RX (0b0111) +#define GPIO_AF_USART2_TX (0b0111) + +#define GPIO_BASE_ADDR (0x40020000U) +#define GPIO_PORT_OFFSET (0x400U) +#define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) + + +#define PORT(port) (((port) - 'A') << 8) + +#define PIN(port,num) (PORT(port) | num) + +#define PINNUM(pin) (pin & 0b1111) + +#define PINPORT(pin) (pin >> 8) + +typedef enum { + GPIO_MODE_INPUT, + GPIO_MODE_OUTPUT, + GPIO_MODE_AF, + GPIO_MODE_ANALOG +} GPIO_MODE; + +void gpio_set_mode(uint16_t pin, GPIO_MODE mode); +void gpio_set_af(uint16_t pin, uint8_t af); +void gpio_write(uint16_t pin, +# 46 "src/gpio.h" 3 4 + _Bool +# 46 "src/gpio.h" + val); +# 3 "src/usart.c" 2 +# 1 "src/usart.h" 1 + +#define USART_H_ + + + +struct usart { + volatile uint32_t SR; + volatile uint32_t DR; + volatile uint32_t BRR; + volatile uint32_t CR1; + volatile uint32_t CR2; + volatile uint32_t CR3; + volatile uint32_t GTPR; +}; + +#define USART2_BASE_ADDR (0x40004400U) +#define USART2 ((struct usart *) USART2_BASE_ADDR) + + + +#define USART_SR_TC_BIT 6 +#define USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT) + + + +#define USART_CR1_UE_BIT 13 +#define USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT) + + +#define USART_CR1_TE_BIT 3 +#define USART_CR1_TE_ENABLE (1 << USART_CR1_TE_BIT) + + +#define USART_CR1_RE_BIT 2 +#define USART_CR1_RE_ENABLE (1 << USART_CR1_RE_BIT) + + +#define USART_BRR_MANTISSA_BIT 4 +#define USART_BRR_MANTISSA_MASK (0b111111111111) + +#define USART_BRR_FRACTION_BIT 0 +#define USART_BRR_FRACTION_MASK (0b111) + +void usart2_init(void); +void usart2_start(void); + +void usart2_write_byte(uint8_t byte); +void usart2_write(char *buf); +# 4 "src/usart.c" 2 + +void usart2_init(void) { + + ((struct rcc *) (0x40023800U))->AHB1ENR |= (1 << ((('A') - 'A') << 8)); + + + uint16_t txPin = (((('A') - 'A') << 8) | 2); + gpio_set_mode(txPin, GPIO_MODE_AF); + gpio_set_af(txPin, (0b0111)); + + uint16_t rxPin = (((('A') - 'A') << 8) | 3); + gpio_set_mode(rxPin, GPIO_MODE_AF); + gpio_set_af(rxPin, (0b0111)); + + + + ((struct rcc *) (0x40023800U))->APB1ENR |= (1 << 17); + + + ((struct usart *) (0x40004400U))->CR1 = 0; + ((struct usart *) (0x40004400U))->CR2 = 0; + ((struct usart *) (0x40004400U))->CR3 = 0; +# 43 "src/usart.c" + ((struct usart *) (0x40004400U))->BRR &= ~((0b111111111111) << 4); + ((struct usart *) (0x40004400U))->BRR |= (0x1A << 4); + ((struct usart *) (0x40004400U))->BRR &= ~((0b111) << 0); + ((struct usart *) (0x40004400U))->BRR |= (0x0 << 4); + + + ((struct usart *) (0x40004400U))->CR1 |= (1 << 3); + ((struct usart *) (0x40004400U))->CR1 |= (1 << 2); +} + +void usart2_start(void) { + ((struct usart *) (0x40004400U))->CR1 |= (1 << 13); +} + +void usart2_write_byte(uint8_t c) { + ((struct usart *) (0x40004400U))->DR = c; + + + while (!(((struct usart *) (0x40004400U))->SR & (1 << 6))); +} + +void usart2_write(char *buf) { + while (*buf) usart2_write_byte(*buf++); +} diff --git a/build/usart.o b/build/usart.o new file mode 100644 index 0000000000000000000000000000000000000000..b3faefa46d130e8522e055b3f02414f672aca560 GIT binary patch literal 47772 zcmb<-^>JflWMqH=Mg|QA1do9sXB}9E)dWmwF!(X}g5{MN7#LI-7{F{*1_lN-C|jL@ zfk6Yx)?{E{(1NnH85kIJpln?R1_nJSTc3e}!2rrOWME)0g0hVn7#Kiyg4|-tz`$Sz z6*p&KV6cF)Eg2XXte|Xb1_lNjDBG5Sfx!;Swr5~qaDcKM85kIx7#J8Dwl-~GSg++R zovrER{DF~KIGIWLcf;=vCPfLi|KI=p|J}h3Wic!7ZrBYM-whX+_Lk0(@^b#dU@V*> z>CK>YD?!|wK}jl6%$q?eDpACHc80K*@|SvNaICsi02SU5p!4rXW1AO;pL z5SxebTNDEW3pa=@z(+5ocgv;niYdV31&(WzWFC!UqypU|eX(z`()} zVyiH^fz$|q)MzlC_hMjR5d?`FFdE7-Ft7-L*d~ktAT`1uH5QCFLFR~n#2pv~MHm=Z zL_us9#x5xa1{N`p8V|-zAaQY!cmU&kUIqph2@pGkF$ZLhBuGsJW40wI0zl#kjP523 z3@p+hb_(NKkU26SH5rT-6&V;<$L7w?WGJd%?Mk9Tdm{?2Mp@XI143V`5-nwRLA;U|{_q z!N9=C>dC~wz{I-1pMimyf#sbj0|ToTvpy38gP@xz1A`138^<9~Bn1aCut6e;*(Hd9 z4H8GpPC-EoY_K>AGGt(b#1XS|kP!nLB#xM!gNzy2pm9`Y$iTqH3v#Cf1IIcG1_s^h zObiTc3m6y}*rtF|0LLdS1_qrsa6yo38H5y~7#J8G*gy)vrPmxmW(Ee%q|!772T2f< zX<`Y3FpD@d0|OHy$6qN11`!>Q*DS$0z-8GSN05$W21^ByHB1xB8AJ=r85kH%!AcZB z0X0Xg!yObJU=ffL8Ru}Z3NkQofn3Klv5d=Gmw|x~!YN^3VB}?B=Ck6q=C)K6^%SK}I1q2Z_#V*vXQMSGPb z1A`bgJvEZhN{0y)_YC0D4$K0@4~PMZIS>tsWDpHX9v~Wol|X46s)rpUu!9jyDS$}> zFsa4B$^bT-nSqg&;j00tP&Lv8kzVE?GD;jo<_3XCcRdh!#uG$3ih)S+KoA+=4=7epR5 z1Cg)6vKo#c_E9bn$;AR9PZ)zpc?%HvUJyiH<^+*!VDnYLYLpc~BA3BthOmR!#$F&Y z2<(dz7cd*F{sh>kGr_tlSV7_&+(6`BLlCLV1|kn@fXIy@ATk#0!qs3uszrcA_JVzF z7YAa8@PkNxu=#>ucZzF+L_)#tv~dQpGr^=0*j4qKAd#nGAhH4+N@da@wyF<^v;>n4 zav-)8I9{BbKx}oeT{%%8whCC+5^$)3T1c!6-@-xSqF|97j372UL?thnZ3!YLfPGgF zj#(XW?4OJVi6??h6XF4}CxXpU1)H-5Y~$=$kobPEUv`2k;uGLBFjWa8-Um(<%hW;a zn*kt_Q42(Ng45MRSr9uBY)-K%h;0TYFM!EoV0-z&;W-`bUnOt|Ur`3Bv;>FbMsONP z0jCy6u*vhlaS;Kw@etSzncx_l0Zyfp{6Kp5tAWT=c@Q}boJtwMG13qW5-|pc>Oyd8 zbOncx7dSoN0n6$OfYb2a&VDX{Hq{d)^cz@(7&HZ-PzU1WuDapgM_RA~=q!z_M4sY2ygkFK5A_ znlefn#bS*qj|EAT@J0 zOTqd26gciO!Eq4-P9bLYAloIt@hA)q&oFRmp9_xb>0tLS0*A0H*n~bIkou3{e8d8_ zy#ee~7qG84gLCwIaLPFhHeoK<4bQLteNFG_{<5Y0!4FiXB5;*ol!Lj2B_InOEP5uC*tV7K6>{0K42B9Q#|r{$d1&?R0Qn`wtHD$zao#fK5IPE)AT( zX}|{@r}f|%p8!rFB4Ah9gHyXU*w;y5lkLDUz5^Vp9$@t^!Qrn2cKJg|kl&TTzB>#y zIS%aR4zOt{;52p*oUgqjK`Kv!WAi6Ce*b_~?gguC0o&*ZHVxE{WM!xY$H-N%E%{)3 zIlv(n08Sx$!LC{X4)b+jpPGWp!zti&_yb(#Tn6XI#bA*jaOx@qmkEYoHyD8PEVB*B zRp1sjgCf|!(csd632eetaILWj9Oh==^d=1UX*M_|$b)ME1F$Yo^N^Ln8(epP0p}@D z6PT4j9c+#`*yXz5l<*vE{!?(;4hQ>gKUn=6aP1!mj%!75EXaWKY$`bJ^ucb(1gEGM zV0(SQY2Xt$4QvP7%Lz{5lff=L0}j19aL99lbL$#i1_m~UBVb+EgFx&?8xUy$W?v2g zvE9HbH`#*N4H_Wwx;}`E0h=ZW4tY5>kjPJP`0oLi35&qFW&&7z6*y;Y0sBkX8l=)4 zT#wHO`zQ-srX_<@I|Dd9Tmi>;oCipy1vmtrfn!7!EE~%U57_8PFO+QBCG zn1e)Cd4b3hVGwBvPMJnvmm~{;L~>+7q!c)v907;_bZ`iBgG2J2J4jX+Ts}yF>l7|< z3oQ^F8r|T!qs9WH=7TSYERO?`=?Wn7Ix~o@&;pT@z^V5mIOILRwafuY1_owE7FMQ@ zo(v4kEbOd&d-NF?m<2dk+0A$v7?`;@!A)8g2+1tS#me+90Hl%|D#FSGVL(V`Azmm$ zm=DSj;b-O)VC6a`#=yYL!vq!NV}>vwBrC5FsISZ_nkLP_z$_*R5k)4MnOIqwW(tEW z7D5qcW`l597(j`Tg&P!oY%f5C2|GV1BXH~iRTG>7pg|#!3h6MA3Po>Fk*cy8R86WM z21TUyUr_eby9Ltom`NB^@4aNY49co+nBId@?N_E5pycp_i3t?`znM%y+2cQx0Vw6R zGp_|z88eudfdpqWKLr)`3z@eBgEI^Rt8XbtJo*4A2PO%Da#}Jg$XU%SQ$W$!#_~ZC zs!}W#WS62f$T*E>pi=24;}wwR|BP~=T+_;Q22>1nF`WTfps+# zsLR8;k?A?84%*KY0@8k($utmZ_5;R!RtyYm&lp#NT2-$YEkG6h55^*p6aFwNf|5ov zQ#GiC*2!cHGItS^G^pzXvWd$a3Ou$8 zppfRD4r)F~?FXeP#Y9jd(&qye_O?qv(G^?`Dv)v&LB(DV;|EYVwv2HT$Rm3g&w)yd zbBy1N7#P^TFzSNFMnT4M%>=ciM8iQPgk%yZ;Y$Ai8Ku|=YO|Bo_`~qUznt;jx`=cPoxLAN{TF($r4d6Eul>UNw+@L8(d?hGeWPL&9o^lH) z(`a&n++-RBN;~#%Kmp_V6Vw_B?g5pP4UG1nN~@9aAt(x(7z;oJ+6+b=kc(zA)`K$F zEXE*^nTr_TfI@FE<2_JNE@7MwDz4WtW`F{0J!2=x$PJ8dK|!;FQ4f>>b~2`dQp7Gs zTTl!fVO#^!ca$+46jH|+Ux70B6~==ghhAlD1X0%*SA&{8&ln9s5%iof4V3X-Fg^qE zzA;__C64cmD?u*%!MF?55olv_2NfUfOpG9}bTGAo+&PVDIjAz5&U6Z7`wS*kkeSPv z?tsE+Ig4{h?RKVhpqg_B({E7I`WTZn$brY1_JX46Jd-lW=<7^5 zph&pOqzj6#drbMDZ1RX{2Pk-+G1Y*~e9hzs3W;w_PeB==fjJCR!?ZHXfa0ZxITMs; zdYO$t(Kmy+7SvXm$-DuS9F{Qif*iP%88o2Ix{2MwNs z5>hu48_3)qrpKUU*UQuiDoy&Bd_X4kGxdY~IDyFt6bTcVUV@xFiRmpUekU{Ofm|?! zsTJgcsZ6Dyf^-^_Gsq#+nKpq6)EP`Zpd>PrX#*%sXE8Y&Ffgz!XKD#$U|_q;G?{~e zfo&GEFlc50?y1&}Rj;EDg4Tl7R`R{$Mp#0)>@X zHYj76w}A>>i+qrXWdTU9oewCh+LwVy2U$>y+_4grQk^z~YIk=AkY_#WK{4-n2ILQ~ z?I3@9%YsTeA45>R9;gmd859f({NOrJnH5qF%3+~-pga_L9>k7%2+Fe2(V!5Hkp=}> zEElL%5vK)eWhQ?CW%rbBP^w8?3X1$RYfyqnUjVW(#{pz!ZXhT%zM54|_pVGz_d07>hvWPh^w=Md&2PJWzo*nXwoYDN`6DLDW>nYoMZJI^$1}z8Q@7 zLFr*8qc12u%wh}%d4D!z9mw7D7+-?4&u5ed$t_@f35tw`j2$4sMT~49S1)E%1QifV z8FN8FvW)RRsKi>%cnFkbRxsWJDOt&Q3KZD7g1A{sP%|kZ~!fv_HhS4&(FGLKj~NevtbM|m3yO{xi~*obs#<$;oJ6H^SxqAsQ-pwhIPX&)%YCNkB7 z!fX=LU66f~nb<+eW(pGrD9olZT>|-i8dD4?@6TZ31Qi)GnLdD$;w+|hAdk&v3I^qz zIZWXoxn)dCB^el4mor@h6&b6Trh{C)n&|<^)oYldK&fCY(>+jHTE~wDB(s4`PUQq;mo#orZpmZ^9&1K&}p7djhRRz*7JqeV; za*FaaP*zmq0jW{X1KFzC3G$cLeb5kpDJUB-urN$!08JAy{^sLlV1&%GGctf!^5BUd z&}=zqW_$tz1H(rK1_nPykZO4*e&JmpWnkhENDS1JWWEa$dki98frw9x3=AxPK?EBU zXd)0aai$2GUIR_XF`I(8_8=AX^TWEBiM|#OdJf1jI5GSJD5!v!KT=- z!eo?TG8T-HtQrceoQAAA3`{JH3ao}8N{^KbLNV$yae_>egQ>S?Waac`RbyacVNzff z08us&wO*`@-b}0vjEup~eic5hj=>>@W(x7~!Onh$W?-&Hg(gF|r(a0Cucx1aMtnSs z9UrgB5FhX2>g?(3=o9ba=^h`iU}(+|A0O)B81Lrf84@3_V8IX&l{Hg~a>#JA22w z1-ZH^7=c|95E2A&MnFgq$PMxFU_(Ovf<4{+TwOpufV;%QF*x4S&&|`%Gb9o!5$x<| zYy@_Hg{DG$Jcwm%1PZK>AWuJcPq#==SjETt_&7Q{hr&Fep=%If7+`GZI4gysu*fSeJPk1Te(=`1`rXyZDDX`M4_NP`h|e(0b!5}VRk`mOiT0eVQ>%d^pE%TcX5q(bYqB*4+)I- zgro)oc-Ue|HPD!I_V)`8^>tM+1SKSBh(HsQu@NHH!7enYfY}O){>;1*BZK&Oh9FQf z2yilV^$Us*@$@x`ck&ETFk%P|b_@!McM1xMcMEcK4)OH&i}!U5_Eyj^NHR18`!v`y z%GKWu5@z6l1Et^ico!!haL5`O#JffW#K$Wb8(6?S;_K)a0!{m-#voCU*`P3uk5|yp zHPAB+0u!Ks4235Ph~p#N&_IB$u~Ddxk2lEY!O#?hq%=U+BGdyU84UISEa`x995hbC zJzYXP;^P&}OrXB?h*w~Uk9Q36jdyc(3<(W#jdyZ0G>Z>*cJy%!igyh14Ds-F4e@kl zh>s6Oi6#Fa7uTTp0GEJxS3eg|M^IukHZcT+KPZsmLm~rQ{}K@)-$GM;`R7BEXO3Jqf;Xm}gy8Je4#Seh7{ z8dw+^8CjT{rs^77xPg;RC@erdL4GmNGXMo;K#*rXxUdTd@-#Hl$Opxen@@kS8tToi&m*6_OdiSl1?oIA6Hr)zN+dmVOLH?zV?$#T3o|2QLsRoqZDRuqNa^Sq>>uwO zALbeC35of?iwk<3g$A(R5LGa$&*LIV`u;Mj8w1eE~_-~h~oOJ_oZ23!l6nZUvX zT*`t8P!vLIOKkZiAjq=BVU-2a%-Qe8mi=5AlOf?zY{X!L-jUp5b zjr5H53>AzFjEoJ;jLZ~tbCU~7ZIknhN>VFyb4?Ute~5oo|2@X>u;c- zTU?T2n`~5}pqrLfnwMOXnV+XyoC>Ck6?D^55=#=1`FZ)eNu`-NC7F2&x@md&y2<&u zx%qjJunvm%2zK@N16NdrW}uXSl5!y&NMwehrde>=25C5f0tFt68oI^?=AZ=X?icDD z?;7Fi915=SK&_o%*N}KWM_*S3rO*&JT?IG~CNl1b58Mdlu$#N_D*Dy$*psDiSxf)7J{Jf!M!@^nX3 zT_(mxh9H-K8=~M672LW76$p^@8VqlU8H00qsjp)Mq>S`+jL;|r1*D&Uyr-X!ryr=^ z0~cc`EhlJhRe-jc!0lYPUoZ=(cu)lZD)K=UjgMoHtBV3CR3J?}P&NY%urARSM%VM5gZO~U4hFecyb922PJV(XoCC?E(c%%huoCI z(ozF8;S3n!{rp2bg8ak5K>#YaKphfD(-p)6x0RqV0Bt!!8=l5Sh(H6|h!SRC5m1mJ zIW#yvz{dyNHZ%aaw=^@a!~$Fb1%t8>JTrhAf_|>yKAukTpoSN6mN7Jgs{-fJFt>ns zH&F8tqzD$^N;#nH=jjLP9x3I(ILL(|tbNVk=;37K6X5CxO7}saI@Q-P0$L%1LlRa> zC?E$VO1eOV7IN~5kB6jMkmntt&E|mcAXmS5XK)h-XEP3>2;7c~j|Z1C0YR=ou7Mi4 ziCH?inR%de0hNdcRaJ&&nhM$qP!V5GKmVZkcm+FK1r3k}a6*Bo&;aSxWQY%e^x_m4 zKwT41kc1%RmiTZ`lgiT{(OL&rCE(UuL_9{<4HOQb><&sMNWlOTLQXlL8V(#iko*f~ zg0dt^&Hx3La}X$v`1{5C`zatAxo}Zvz<^Ua#1L2$0kzo_5ad}3mIoJ1;Fc(u3n_LW z-2i9@$j}s2N~D0x6G#!00%^Mi`1pWxU4V~IfJOl*;0vIc5m^Q`N218U91F1ynrjTr z7~l<=U}ry2tq5*S7@C3GMxbZ`r#wh81g^SasTEd*`+!PhXry52^T8U;@d_Fmke;cg zk)Dx}se!q%g{g(9fw_@^A*jo5VBrJGg;0Y)u^Slb39iOKt$A?S4hcg@83yX5BZVPU z8=?jQ*b|-&-AC#dMaQ1-I5#Rs<7o_0s5U4Ne2WsoYgFAnq zYz?YwHR8dphjKw>F>>P+Qhga3flAweAWu-846e2iSu!U_L0P#16kH)5p}tO_r0E(I z?jPh0>L!6oNmyGS6h83^23Y#uW+tINKA^%CT$F`-y13$PH-Xx_N(^9EgBt(HMN_=1 zj~mopP-S6k1k3o~+yu}4;BZ>&bq?`I>70YdQy^V=P=@ggj`wtRjyE$f zHMNY7R{(X&!G#Pc-azFWIFgVn0dP=)Ti3_|35|VlUp8I=-1o@@XCH9m0MssW3~(|6 z)i=S;e)%B7!Q~F30|x3Y2e~@B#D@oYhPcK%g}Q-^1p5`-eT|O?@%`PP<4@qxKyY6d zQu`Piq1KPkTm2LA`Xi_26O;!~=Cg96g*2VO1h1VZjDDf<1j*pnVIFQbRM) zD2R_^kh`m!r;jVVQ)~b#P4mG81$x;F@>@K#Vh06|i?cVVfCV=q!D_(`NKhcf$A^Z% zGpLyfLuqkh5wxcQN)t$9qn41=ViAvAk0Fm{z-t0b{wcCfHgp1aRIK8U_Ik} zaPJY6w82BPy3pYuP{x8Zhrpe3a7;tT0u2#^bf8`pc+d)^lBoa%9LN$-OBBRL9oa;b zrLZwd@URs)>jXH4ID7cGhPnDcGXYXb0m}~Q3KzgDhj3-G-T}N z69UfI@Q$A`sEiEubcYRuLq{G!WevPg2KCwu!PS5vsLKZFUx88&s9=Nyh@oi^D03jq z2Ou>}Dl{Rf+$g@hD6=FrKB=-Km7%yOSs$GC^`IkK;HCjmc?4@3fZ_}?NFVGP81Eb$ zqF~Apk5rBXxrT%W`5}rCP>Kh~J-BcJkHCYupaKByrQmQ-TMS&y7-)iA9s%ieLOYld znxLEuX*hukFi-;qT&#kJsr^Gk0zyOJl^?i20P7)u(mq%KR4IWHA}F9hISX24LAfAV z@K84_7a4)ZWl;i6As$ljLCO!*ftUdQV9yAof+-%{j|O$g%}mg`-99sPo#4gvLHq2+UMyoUlPJ|L+JT-bpl1rn_lh};AkP>0qbNQD=;B7tQB zQ-=8XfFMVAU&r_$R~J_|PzT*LA_P3X0qST$CW)ZA0JZA%b&B_K1?A=l1q%ky2otEC z5bOw>tN>5RK#EI9VuUnMp+mvo5*7O}CumR$S^^`+GeF4%#AAq$M;_7wRZO5n1 zb_8T#9o$d=6DUrG1adt3NUed133#LyDK`Xzvp1;Z0hbV-;AS%R;c3~xmq?-rnf`dj`kZ1BhHCK3$V*pBpQkt1pVrUj$0`8H6+DD)U3fNk3Qbww`!L11R zSSUPrz(ZG{_6n#W49W7%LnBKI6EhQIBNGclbHh|!6I0L( zCD?Ea$P@=W6M+Z6k;gV&LGu_PF7eI^3?)USsR|kz@lN^qIhxvrrO=ryusIM%f~pTt z?7@nBa4ijlor2>I3SpS%B+bsH;H11qwoV)FV<2 zXe0tuCV?{>I0u7xpb8yDF;edp$xPT_7s_IRU=RNw)TIL8L;xC<2h9?L>O*i>0o*1A zhZwjF0b5%EDOo^lG#N++hBh~$^)0Az1}ama{pJwYU{Dq55)T@Z4+#o&4RiDX4P!wo zEl}m)>luug#RHY5(1A^;fzaVPD^>KSOt0~LHABSAul{Du_wh|FM~25rDXiy+wGA9$!Ax=;#Ipu5$Dl%LHLDd1M@B`ThZU4iH zM5GQgT6+gFf(Xg{*h3W5Q}DEaBy(`n7R&@W0WGhCiaSKQL>ZdK95x1zOhad7VFi?d zo~aLb;g3%csF?$bAFy4h)2QIg4KA3`%2jB64~|L$@DK$kaR%rbntDT4i=f13u(Mw& zq_+#5Vl9RAc9Aj#q*{lnf_5Om^%JNv0(WIx!X1O$jN+Z$JmVdMeZlbv>Vl#-3t{v6 zo}dl|czu%x*qSP5JW6*8(kXzZKTlWZc+dbQG=+dCk3sPbOLo3tuAq@A zP~RZ}oVO4|9N^_wV6~v}QaAq~U&oMmPghrv22g$im7$P+R55rh4T_sURXfsXPH>Pj zxb0+Q1Q`)Sv~Pou+P7(mImJi~J_AtLK~p5Cn)C!M9Rwv$>em(xHyh9I|tvo?IH0LA5?f)13+!3h>N^apN~!HP5J zybWZU05Y%%QVc3_z{w9%R_-~t0F>wwzWpyJ4f0aWzGySs$=J1QXB zjv%8E{S|Pbj-1dz*%QYC!T5N`0Ow%XSQu(?174tpIR+jNS{@2^8+^T;5qMP!cnuB6 z8K9CMriz$$zp)WRdO>D>d~s??d~SY9DxxGuoj*Y?R|xjdK@AOXbq8*kLc$wX(?OeT zpf(`5zlMkb?DJ9J8Z-hNap1NKQhzoAJm3pXE0Ad!SX&vCJ|H5Xt{1qchSWm_&lP~O zJhbo!jmCm93(9CLxRivh(gi0`h?$_3SjYnapnL?XXyYN1`r!NvDmOvVj?@cE(izc8k&WAgIi}Hqd}wk&?Ot7;Q|+DSa%gP z7h_;#U|`_GPz0Vu1owfA3_w{vJ{}z9P(MMc2^@=?K{KYPEecpZ1m#5#22ZMj%RlI% z&S1w7aET2am_X?U!&kXM3kPsdCITE7;9d-<<^`23p!f&@3xh)h%!OnraGM#%$32J% zEmT3pJ7~>Oyn>+-sH}kWYf;OJOmO9&0=5m}2yp2E9^*q=X#$IOP&><5&&0sU!pPXf z%*@!r)X2iZELGds0@Qhj#u_wtf&0Lr*o!!`&>#j#sSRq1fL5}DG61-80r$+o%Z?P3 zK99#q`U)mENZJM6xug~L@%hL4r)R=hPXy}hQzx>`Z*g3$YpQ2+b6!)Nipi}E2u zur4q|6rei?9Kkk0mXd?A7dQi!B1#s}f_4xO)NKt8c6JB#TS4wZD&jyjD15y)C>ww< zsBsNy|9}ffa6$!{0QGVJWM~tb@ImD+bfFqfMRQE&8gKo(H7dFUs zReU_OM1W*5$m~D3SOH zGc+ZFi{N~aD?u$YNFxDh@Bm!tf|fHVC@X`<*Fgi~Xo3Mjo{*LSxUm5qPyss=RGP=f zJ4J@LLf1jYgNAj$i}`&#LqdE&L+Ft8{E#BV*eD*+48cBF2wuDfN^hXi>UcL$rh+Y| zKxhTGA%rsw-Q0p*L!c}5!He{vH5P1L9cbzd)EfbnWsnj|L)XyA6x17qOmkzF>7c|8 z9+(EFH6$LW_nrxgI<#yG&VI0s70|Q|8N~%DMp+*VF2`ZLR`6&btOy0U0~&_#LKwQC z1~kD9t=-X58l*u6Eo@O5WZ)VdvfBt$;Ddqyb+`(&iWIV76I!_|D4FOP>lrA4dJwUgRDcIjTq8hP0aQdoe2Y|2L)(R*`F=w)=sYYa2f_NbJ}yD7 z5wJP*;u6S$5zsmXXd(x>9IPJHzjX|94+b@=oSnhTeoRd*!EJ45i4JuV(jbAcA$S!N zvcy4sBg}x_E|x8!V8V5$+%4Lbz}NwUnTCfif{Hx1rnP z8UaeqAQi|qI{OC%ff`Am$z7B&YEWm}G1Ldt+J*Ps64Malg`nYj%mG%AD0rw4+_iyh zCIP2$aKxc^Y~tgCJ%U2utr|l!i1DD+Yyq(4?na=gFGB;+(%?`(r%<=};E*6!N8fn= z0Fcu_(GQzNOw?3RP6Tx=gW-#W49yro^XiZ?G9El|5sy+hgMtIx?gC|Ac##8J(hpwv z8szHk84Oyq=jQ3>35}c(@K6$ZJIyf!v?>N=x(^gL(0&*=yP&pWp$Q8u$AME7XzB%= zDG(((m`6n=@>w!LlM0L zh#jCY7w~u^G-dmG`hgc$x%!2I$E#o?nVxtHDCkiF-edt=j;&x&0ju?49Su;+2xY4(xCTINGl6*EiVIpWg0liB>qCdO z9DPDugZvyrJi$X^;FN(>+u`t%4@11Kqq7HSJp?S*fGag{4F($2 z>Id1Z8y_D6U;hBES;0+eXjDO4SKvwjZNL;9L$FRhyz24Qi3gccH@ zB_YseJG9sd407>}K=dHN$pNWr3P~yzVAp`#l%T{E4<5?|m6U!S;0npd-#;Ke#6RB0 z)5+P<2Ryk3PD7w>R6KmP54Bzlke#43ju<2g0ksa1_H3faKw=BD5e~fD65gf&FVO_G;6OnK z%g7)$s3ivz2ged3EkWA%6^OzB6n6ohexSNQqX4{fpdd3(!Ojk}y$#$@0By+xZ!m|H z#-Q>Ow7nPXLeRP-@EnCXYDsN~wDi~zGD8oFGSFbF0%TAR#s&9=z)ciH(+t%9K@x)W zi$E17MkfKBAu*aU;FK5~;OZRe1CIarU`IFC_%KJGP)IDHP7Ira5;~;ZLxdGLSAl{N z}Zi!J9Zh*&jL<1X_~^UT+R^7*Zz%T={~12T20ReKpV` zSeOGreuu;qq<0009h?IJ@sOR}umxP8*>Y$#=ja?5>KOz&1OT#cBsAC+I-Cuf*n%{O zF=klfVGDp!7PNv)g={fHsk1?qgpsicI0Yj49yGn+5$uXIdx<6q%~qgxDpHw_YqSeg zUVtk%1(fmuoK~UX2^!9Vb?H$<4HO9=d$3etpg4mL<_3df65PIlti6Q}YC#JS=-dJ* zfq+Y7@bDdo2kpj!nogi>1snN?^`0<77e3|)ifm9b0qlNIL4dSO5xo%t+a3=cIYSxf zMCucQIzR4yp(u?WXnuow!vd7wz=0Z1{Tyay|ehdL4zL*U~BA`An}Js{cJ+yk7w zVf#NpW`dUMf(EET7;<(1Wa=C#iTP=Ow_)XB=2+0e$6#-4ITpMR6_i*I$qL~qa8-nw z`arX_Am^ZZ5t?j35+HYConZ&fW`bIvc#Q{_@$tby@ga~c<)8&CF3=2xEQiQRpfNn? zaU|dkQ{YYS;KB`2$3s>GXMzTT;VURIA)BcnJGek?7f`KY1U3S)A_|;Vz$qR%v4+40 zBS1S;Kr=ungH+IU84xk(+-p8$Fbix7*kRzh5zGY-kHmwT_0V-W@&0~3k)SdUGR6n4 zli)2zqy}evd`4nfYCNcj0AVw5vh;O|cXkW_*Xf{=4qEj?7CeErj)2-s%TLE1U}XcZn#25)IjMFh9T(@6v6Nm3myptkBSE|fE)rVsbFkK z6^lBl1FFryGlE!~!jPqfpmFc`cu27b&PE`&gK`$izyS1g5b$IStj!78S_m37MN$e{ zs{u(C(4`9Cxgl@~0bd^kP6#M%VDQikcrm%BA80K(C>ekP6A`;09;lEE@bm-k;@8P5 z1??&W1t^%WsZgT;5`v8jWaedp_K}359-o5LjRf_ML8T7NH{j7Sa4!WiVUBYy0ovOE zg{>=Sxg~hq1zf;^&bk35y?DoSEG{SC$0G!1nH&EJEHt6*n8 z&^jn^;{p*kh@D}``#?Y|&%ho5$0SmghV)e-Eip*r1T-}PRtjp3fRYw;Ar7<+3FU$6 zIcSjw9mFvPWjK&}P!WinMnSm~tptTkZbyJy*61C6kP(oI96Wx8TDOCRAQ>kV^#m92 zRvg4=ASl35QZ=-&1C76;_PhK-eO-e*ok6+N*V7NODgu4QIcSy>el`eJ|A8|i@`+5K zl!`pi04cgb$MJyXbv=WF9g!Ly;9WIf0u-^JgaPibnY;Re+F76-BuGcvfES!$9%%#G z90qFjg4S(87Sy1%CZMP3fCh0vt#{Oc6G+hl?JFQSh@JwZ2!_W7D0f4Iz_9__-Wd<- zmU%iW#KQy>ic1npGC^BpV1wwO;KN=+LdMfUNfo8?NP+ZaAZY?JaR+w>IH5wsK<)q) z?_eQtUPG#6APa)P4IpqT2RF_^egGBzAYG8O0?kq>n&ABr3g9Vv=o}g}MML5llt#g| z1*GMJ(l`Y*^iWI#FIj;PU?H!h0~cPPga2rg_u9edEaaqu`pSU7m|C3xfw zGz97C4=#eieNsp>635&lXj%%Cv0x>xvkPeX6eOcS+rE%xqNU)p11YCV5wjG~A!!%a z;E@B{-621LCAIk5-SBLxldK@On+@xbjN*gzg+pIeZtk7IRRgr^yBKtc9Ebtm{te<3gFKEBHQ?cJNJ$KCVmSIa`uMvuK#nE@ zm0f7-2ay*igWZGFOoS#wXdobXpg@QZat#6Pk_`bh7{QBzJpJ6k=?UZklYzPk2VOaM2!&|7}-MOF$gXAFS**BnNJ+RgcbRhxcTognZ1!^jQ+E(C* z2MdEI7QtLl>k6EKFotNrD?6YC3nVN+2g^hT$2@_r(0w^c-Jdf52!4)05y~&f<00Cp@Hz;f;ni$sTAx7aPbRjUqF^i z85@CgBE=%okRf)B!I?f}Fu(@O4LMr80b*J$T)PhktMg z^w>pEJ%{30a912!?t%wSk;+}zY>W}8@uy&D4C>B<_o##0bKu50CiUDrQH+EPntcZu52{1p18JZY%&;RI zAtf*T;73Rg9(0f+xZek!2|;rxxKaeQk-+AnBvsIuGHfyfJjH`NT^bHLr@%kR)71|$ z^8}9{h!eowEzl|?P$wPSb;Ppm-pquUDH70pfUA$E3%G261`(t&qX5cukP|B)eN7vdNZAL{4n=81@IaD;)2RdDSB@;M~J!0`vk(%{xSmS=5QFWIq~4AKW$qZ;N0>WF{_B|*+ZiE!|Q z6g-(Dhj$SC@EXuGD|kE}wI2-{Q34%wiBWZe7umpyK!yMxA5WuT(7+tHdjVnXr>d=5xAp8m9fvN{+cP0RGrbPtUKyU(s zERF#M6gVd!Mx9X73}`|UWE9w7a7qO6AO?d@wuOd2XpSCSWP-~vNPYl&Bt9O}h(hx| zWbHm|*aS@y)KmqHl|YIc@I;3psCy48{opgv(9PONkrRN_O4VeD4-O3gjV1)gy9Nch zMmW0$Agx0~G?yWr8P`DY$w{Dk23)p6dm-=zcAx`QLB$a`nl0dN0Qnj&j0iwPiw|5q zp_ftto_>CzzDP4WY6{>(R}I1IKp_j6z`+epuV5=7aRqAVLtF-5S%Yi3Qud@0ABfBBVKp(mMsU3PHP19D{rjgBTFEqvi>4MSyg)FDN3D z^7C`zLAyrd!CML96N^%j2CpHufp#)OMl(Pa8fZWXIxYlnDudQMXlZJI@@hdzQGAJ} z21pg6#jK#M01*Kt1K1iNEd}u5k(%JDCllP<05_RHDH@d7!5gh$6SCl15uEBE!H#^4 z47i~VJ@Wxn#DIrY!RCRRFW_7P_B*KT1T_}HB@}ps0@gnTbHFW4aO%UT=6t|fz_}Bw z6s8X$0?`awP6FPahPs{v)ZG9(2;xD=G$VMGDL8c@GIJ?(w~Dq2sDEe(?jM2*AaGd$ zE_}cR4|u8=R(pUK?SPlwf=!2{QgG1=WBFxIf_u!M;Xe4T z2=FPykQxN3)d&h1L>PctnxM8JD9R94fp{Qq!zw#88E|z6X-GphNPwF8sJ$^rDGLr0 zutLnGHL$%9&_dJznrXGcM|eR-8bO%})KdqCDx^Jtn8k|^a`jOFN;~;Lap$(H5vV4DCvSYAsOogD_}r4b&(^#-N4J zkp3WOI1Rdh4xAQXBp@N1}X=YA}LSj*_E~qbOs;LQ) zL>wARY(6b6N@mc{%dF5ZF3B%S)vqkFu*@_x%q^}eGfJ#7v@9|*%P}@Ls!C7H%q+_? zOx8_LPSyoko0^-Hnv#;50=8eTC^g4WA0(WYpO>nenwXTSpP84OQ<{>hpPQJRk(rlD zTT6;7i)m^BwG7Y6OwvzJPDTqVP!#GJ!a@u(a{@YlC?z#5u{5V7zNE4swOB8MA-=dI zB{Q!?FN2{dIax0Qyzxsf1FAj)v@Z{)GB33}Co>781;UCiOD!tS%+J%yU`Wo-OUq2x z%V5Y%O-)TJ(92**OHC{(ErQsPnO9O=3KEP@%qz~+%V2<8iOfhzO@l~*^1faM0|NsC z4+8_k|NsC0GcqvM@bU06z^=*$$$_rVcI4w|XX;~gIH!k_Tas zdPhE%c1A~Db`M@&r{jDK3@RWAC^leVV1USjP4MSqafGU3K(PySFCB_q0br{b9E}+m z7!pA#lYvnabZ>~ctFA8t8!x*rCleQ&5Q_+-D5E&D1fwLQ6r(hw45J*I68K&tsP$k9 zS%8J%0VSCkgrO`5#mpeWzzJbONfB@uZh-O_7)0PK5QCXP z3{AZlSUn;P#X!p7n3+KwO}#i+y$)Q3IGhDyFf&M?sh0o=!!a|16r2rWFf$-*hVW%U z6dW@%$ivwn1~UWbCPNSlf|(hdAq*(V%-{-TK`3ShWe5XGGBbeg0)uiG7#NrtKzFAg z^FgtS%m>}8g3Q-NaKQTY(fEdFd{BZx2r)C5A~<0EpxgEkLd*=72o6}@8jWv@#(2r)B&u5?A_dob`LxC{&oj0_$qd?toU6h1SRmcS1Q}_wyn+U_KujA2l^FGYBx~F@sVC z0|ThM6=D!!utM@8DD*tg_#sgBpt4tpL5v|0$_JITLJZ;z#ZW$|Oci2~V1U*%$qXtb z3@RxM<+&z$@#yu7o{64WilL!lVvkN@B8+QJO)LsfnSX1y}>Dy3#W@*RxDXHZwP} zNHaP9^yBNIJCgVa>R#1umd(-aGH^JKGBV`Gz4GgAx0w8X?D z6BCFI&{9fpg{fy~pl4!{l$e&3WM*M(X<(Xcl9HHcVrpiZXknU|nwn%}W&(B=v|`n> z&`V5BOi3}ZG&Zp`vM@5WNHjMyGcr#xGPE=_Ff%t#h4=#0zea8Z=$YwRnpzr}nk1*0 zrWsh88=IsinwuJ$C0kggS|lYI874s;2CJ_@4ofyNNlP?NOfybOHZ(UdGcz+vN-{OI zG)}ZMFi*8GF$6mduEEGyFU8c@z{EV!%p%Ps(ZbZw+&s;~Aj!nYD8!VnuOD z3b-MlXJlrsXO@zZXkw9Okz|mXl4fXPXli6^Y+`O{X_=B@nVM{F3AQ3LuLRmc(KE8p zGqW&BOf)w)HcK^6O-{ByG-F6+F^UH-fC1Tp*rE^T zC8ohtLAK9;O^1$6K+dB?76I3|Ts{m8Y77hvT)qqpCLr2}fdO=z8Hf*RF>v`aFn~%T zCP4-UPzk~$#sF@KfM`$)0YrmpawcI01|`tlWTFuBm_!&DKs6*t-UuWv#=zhJr9m|j zNZbd?kAl*PP&y4tmq6)iDBT35LARTM^iPHI7eeW^Q2H8_egvg|L1{M7&1WF@LuolE ztp%mcptKW|2H&10#=sB-<)=aEA}C!4rMsZ?G$_3YO0R>`pljDa?mY(OUxL!0Th~D1 z-=KUZ&}D043=Diw+73#)Kxr>14Z3>`q%R!GPlnRlp!8uVeFI9rh0+l6f*+@ zNWVOkRs+%83=B>nT8x3g6GU?`Fo4Q)kh*9PpOt|j4MdAEfXi`^IH(3=5`fgCOsou` z5}kpG1JZtG;$~pb0EIgrG~KX5TA(0#aC+f}s^bH-y%-pnL?LZ{kh!3iE{F!T7(uig z$Q&_9`yIpw)gK@lRIh+&GpM``ly-vBp!N(%-Ve$Tfzq(_mH_3$(pwIcUj(HqpmZIS zZh_KWP#TsFr$PC1p!6ary#h+FgVI}|^e!lU07@T&(r2LbB`AFZO5cOhPoVTGDE$FS ze}mG0pfnRSJ#j#3J}4~$rKO;>0+d#R(mGJu2ufQ(X*($G0;Rp6bO4kNgVHfjItfZ= zK_=6pmYP2ZiCW2PdKHx30HwD<={-;ye8Zs_1H%a@{~VOQ z0;NIiOi;Rb0Odb}(r=(N=psar{0}JqACzVR^ad!s4NC8U(ubh* z2`GIIN?(D}x1jU`DE$mdzk$-A%dbJ{<_DDj4@$GJLc)~`N((?~F(@qqrInzx29(x= z(k4*a3Q9XbX*VeC1EqtYbOe-+gVHHbItxk{K0114{3M(np~5DJXpbN?(K0ccAnmDE$ITzk||Wp!6>&4eA1e!kLW?60ST@ zS_n!@KxsKBtpcUBptJ#$HiObOP}&Jfdq8PFC>;W&qo8yGlum=vIZ(O?N>@PXIw;)& zrMsZ?1SmZXO3#7Pi=gxhD7_9!Z-LUgp!5MKeGE#Ufzp?t^bII|4@y6Q(yyTO2Ppjw zO8G{N_#=+04N;>rDLFU5|qw> z(s@w21WH#y=>{m>2BmwT^du-f14_?>(o3N9Dk!}HN^gVGd!Y0oD18D-pM%m@p!6*$ z{QycogVJxH^d~6&14{pc(kvX1aOHy10#I5EO3OfLB`B={rS+h+36!>i(hgAC4NCh! z=^!W_0j1-hbPANtg3<+0x(rI!KKihP1%>pA!A>AX=G$Aq+%|F)+k|XcY#A6cDY-z>o`~)fm7d!l3jI8o340pcx+! z4Vp;-(V!U+5X}nh*AY?&n&AMchxLy^GY}xY1ynz1h5*C|jdX)(U#K{&UmOkPCqd~< zC|v-h3AqE-PY2DcfXv6G9@ei1&FFyCfySReG;F*GG!6yggJwKHG^{`G33W#Rln#f| z;Bg2s=s1HIbesVce^7bwxRe+J187DEWFBnX05szQ;^T5BdOX0w7c|oY(g&Ks0nspb zf@WMmeAxIFEPR8Z?udla@lZMyN@qjqLMUAhrE8&dGnDRx()~~xHvR=0cUTM+2hG!f z+_4eL2aVr@`1_%J*m%QPDE|tSz73^e<7Tk&h3`=De^8p#@PdUqdbm+)4s6^9G!q8$ zp9|D|-cULSN>geNwc?plcM$7eSUQ7^Z>2-SArDHILg^YP4NG6Jajl6^@flEhK9pVt zrD5Z&u<@+jQ1L@h`XrRT0Hv=(Y1lZ{Qz-upl>Q8*VdJ!n(D4@7_!Veg5fr~-P;pr( ztpcUBp)_pV$`Z@#f(wwk zd}utBL1|d|0~`0GH2qR5A5mIf&W8FAHgB*T%7>-v%~1YMC=Dw&k3#vUq4Y&44NKpk z`EXD;K8A|FgwpS!^j9eT8%o2{IXg7|d7-p0l$M0j@=#h8O2g8-A(U?prEQ_KGnDp( z(*96-u&4WnPP*ze?n>4xGFnzJdh7ci$ZA`D6I^oVdJTWP`(9}wujPg zP}&zt!^Tm;^Fm?_3`tP&OekFdrOTl-Z2Ytp%I|^FlcDr1D7_F$!^Tb5L;2gF^j;`^ z1WKQV(y;N;n^67(DE%Btzk||Wp)_oqlo>j%#|5PYp|k{)mWR@?@ljnU-vmlqLun@{ z?Fpq}A6rEHV(QP%HIT~cS7j{Q2IEO z9xb;a{o%n3Cb!-O_q)`g>jBgm7{L8fbp{4KQ2nRQzyMwspw7Sm zZr7?q*9WLGfLHD@sWX6AV1a0VsCsZeRh@wW+`d(3V2Fc?Cqrp)J4T&>As5OA&*Q2y zFo640>I@9v_O3buLnBna4N7-IY4CimIs*f^U!~5#FbgWa1VpnkFo4^m91IMgm7JjY z?I2Kn#0TwfYCz||Ss56>{cQ~f2Jn0|2LnR{NWTUHLkx)KW?*Ol(Haa4;C2;g8J1pg zWo}7g5`$iGNfCt3fU!zaD@qvjQW8rN8T68hiy1&mqxC?7deEgD;PoIVB9OHoC_+d# zl42MDmV=m^lA2VS9-o<)md~IEVJ9Xf6{VIT%O(~j=B1}X9Rg8Ql$V~9SzLl5mYbMd zl#i?rv=b6$YH>*sgI;oeZfUpH6Vnud7!cjqy~i1)q(n_F!MlV5J(LOqpQ1vWFBbD z2&4vt(bc^`QU@vnKx#l(8oaue0W{qOPNiSKB!YmgBn7Q#2CXuMEvrOV2a*Hn0bVJtWfYKjm4H!rr$Ue|G z9I|<97$NFFdO#SY4n&8d`4`mB1-S(z2f{FQpz$tb^ZqbG>Ije;5Qc>ds60n@-BwT2n!^rn?T~Aau?aWE8PqX5=;yXAoDS_JYQGVfKRh zoiIHh{hsWQIuyhPVVK-j1_sa+3V2-|NL-{35+5M*Kx3;g^FZT#Fg+l3`Roh~C7{7% z5C#4ryUL63zXYyY6eF~IDCn+H{=GZ*1sP@4spd91<= z44^S8Lgt0cWncisImo}DF=t%nRSBb}D_rioGnat@lukkBf$|tG^Oguh>T*KvKx6kXBVkU(NG}Tz;RmZ{ zu$gy3lz|}&W*8p#O<90QFR*$Bn|W4Z3=H>Sj>2P}%t8hR&>An0e_{0uHuEGU7#Kif z_b?~Ij7Imb%VGuw(3mU8JXk%0&Adet3=C&Li4$rdF7xgzW?%rV;Q*Nj+D!t|g3Y`< zSx7p78izCgPFcyoFaergKyx0r%$p}iTzR0f8c`mA#_(~OcR-G~^yjl0k^Vq)UAWBq zB?sv{5cKbA1_sa?P*C`R=5}D_fyS|6VGc4QLY{%45=j8YyoFXi^Q>WD0JRZ7=7DxA z!OR1#=LG2il|3NyE-ElE90GN2KpbfL1IdHN4?#3c-Q;=(2GCp{R2ewlK=Pn@8W0Ur zce9>>AqSf0L25yAAS}cP+1~*Y17VLQ1_n@@4a5dvko!P1X#FU1z3^oXq8tLPu?49E zr7O@lB{Ks9s96fq#_*yEvZfr&f%*f)2HB0|90r+Y1_sbtDo{Hb6gD99K>JHTb|O{Z j3_2YQ3=K#EAag+Gf#yw-gc(fMGBAMFa)abR7^V&YsoekO literal 0 HcmV?d00001 diff --git a/src/gpio.h b/src/gpio.h index 298fd88..5b6e159 100644 --- a/src/gpio.h +++ b/src/gpio.h @@ -17,6 +17,10 @@ struct gpio { volatile uint32_t AFRH; // Alternative function high register }; +// AFRH, AFRL registers +#define GPIO_AF_USART2_RX (0b0111) // Alternative function 7 (AF7) +#define GPIO_AF_USART2_TX (0b0111) // Alternative function 7 (AF7) + #define GPIO_BASE_ADDR (0x40020000U) #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) diff --git a/src/rcc.h b/src/rcc.h index 153e57a..d898f6b 100644 --- a/src/rcc.h +++ b/src/rcc.h @@ -118,6 +118,9 @@ struct rcc { #define RCC_APB1ENR_PWREN_BIT 28 #define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART2EN_BIT) + #define RCC_APB1ENR_TIM4_BIT 2 #define RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT) diff --git a/src/usart.c b/src/usart.c new file mode 100644 index 0000000..e90bdaa --- /dev/null +++ b/src/usart.c @@ -0,0 +1,66 @@ +#include "rcc.h" +#include "gpio.h" +#include "usart.h" + +void usart2_init(void) { + // Enable clock for GPIOA as USART2 is on PORT A pins + RCC->AHB1ENR |= (1 << PORT('A')); + + // Configure PA2 and PA3 (USART2 pins) to use alternative functions + uint16_t txPin = PIN('A', 2); + gpio_set_mode(txPin, GPIO_MODE_AF); + gpio_set_af(txPin, GPIO_AF_USART2_TX); + + uint16_t rxPin = PIN('A', 3); + gpio_set_mode(rxPin, GPIO_MODE_AF); + gpio_set_af(rxPin, GPIO_AF_USART2_RX); + + + // Enable USART + RCC->APB1ENR |= RCC_APB1ENR_USART2EN_ENABLE; + + // Clear control registers + USART2->CR1 = 0; + USART2->CR2 = 0; + USART2->CR3 = 0; + + // Calculate Baud rate: + // baud = f_clck / (8 * (2 - OVER8) * USARTDIV) => + // (8 * (2 - OVER8) * USARTDIV) = f_clock / baud => + // baud * (8 * (2 - OVER8) * USARTDIV) = f_clock => + // USARTDIV = (f_clock / (baud * (8 * (2 - OVER8))) + + // Target Baud rate = 115200, f_clock = 48MHz, OVER8 = 0 + // USARTDIV = 48E6 / (115200 * 8 * 2) = 26.0416666 + // mantissa = 26 = 0x1A + // fraction = 0.041666 * 16 = 0.666656 ~= 1 + + // baud = 48E6 / (8 * 2 * 26) = 115384.61538461539 + // error of 0.16% (115384.61538461539 / 115200 ) = 1.001602564102564 + // + // skipping fractional part as error rate is good. + + USART2->BRR &= ~(USART_BRR_MANTISSA_MASK << USART_BRR_MANTISSA_BIT); + USART2->BRR |= (0x1A << USART_BRR_MANTISSA_BIT); + USART2->BRR &= ~(USART_BRR_FRACTION_MASK << USART_BRR_FRACTION_BIT); + USART2->BRR |= (0x0 << USART_BRR_MANTISSA_BIT); + + // Enable transmitter and receiver + USART2->CR1 |= USART_CR1_TE_ENABLE; + USART2->CR1 |= USART_CR1_RE_ENABLE; +} + +void usart2_start(void) { + USART2->CR1 |= USART_CR1_UE_ENABLE; +} + +void usart2_write_byte(uint8_t c) { + USART2->DR = c; + + // Wait indefinitely for transmission to be ready for data + while (!(USART2->SR & USART_SR_TC_COMPLETED)); +} + +void usart2_write(char *buf) { + while (*buf) usart2_write_byte(*buf++); +} diff --git a/src/usart.h b/src/usart.h new file mode 100644 index 0000000..7f94b9c --- /dev/null +++ b/src/usart.h @@ -0,0 +1,50 @@ +#ifndef USART_H_ +#define USART_H_ + +#include + +struct usart { + volatile uint32_t SR; // Status register + volatile uint32_t DR; // Data register + volatile uint32_t BRR; // Baud rate register + volatile uint32_t CR1; // Control register 1 + volatile uint32_t CR2; // Control register 2 + volatile uint32_t CR3; // Control register 3 + volatile uint32_t GTPR; // Guard time and prescaler register +}; + +#define USART2_BASE_ADDR (0x40004400U) +#define USART2 ((struct usart *) USART2_BASE_ADDR) + +// SR Register +// Transmission complete +#define USART_SR_TC_BIT 6 +#define USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT) + +// CR Register +// USART enable +#define USART_CR1_UE_BIT 13 +#define USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT) + +// Trasmitter enable +#define USART_CR1_TE_BIT 3 +#define USART_CR1_TE_ENABLE (1 << USART_CR1_TE_BIT) + +// Receiver enable +#define USART_CR1_RE_BIT 2 +#define USART_CR1_RE_ENABLE (1 << USART_CR1_RE_BIT) + +// BRR Register +#define USART_BRR_MANTISSA_BIT 4 // Bits [15:4] +#define USART_BRR_MANTISSA_MASK (0b111111111111) + +#define USART_BRR_FRACTION_BIT 0 // Bits [3:0] +#define USART_BRR_FRACTION_MASK (0b111) + +void usart2_init(void); +void usart2_start(void); + +void usart2_write_byte(uint8_t byte); +void usart2_write(char *buf); + +#endif