From 908cfda5b37c29e49476ad11993822d40df7f44d Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 11:39:53 +0100 Subject: [PATCH 01/17] Add `stm32cubemx` in dev shell --- flake.nix | 53 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/flake.nix b/flake.nix index 7be6eef..35794b2 100644 --- a/flake.nix +++ b/flake.nix @@ -5,31 +5,38 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; - outputs = { nixpkgs, ... }: + outputs = + { nixpkgs, ... }: let systems = [ "x86_64-linux" ]; in - { - config = { - nixpkgs.config.allowUnfree = true; - }; - - devShells = nixpkgs.lib.genAttrs systems (system: - let - pkgs = nixpkgs.legacyPackages.${system}; - in - { - default = pkgs.mkShell { - packages = [ - pkgs.gnumake - pkgs.gcc-arm-embedded - pkgs.stlink - pkgs.gdb - pkgs.openocd - pkgs.gdbgui - ]; - }; - } - ); + { + config = { + nixpkgs.config.allowUnfree = true; }; + + devShells = nixpkgs.lib.genAttrs systems ( + system: + let + # pkgs = nixpkgs.legacyPackages.${system}; + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; + in + { + default = pkgs.mkShell { + packages = [ + pkgs.gnumake + pkgs.gcc-arm-embedded + pkgs.stlink + pkgs.gdb + pkgs.openocd + pkgs.gdbgui + pkgs.stm32cubemx + ]; + }; + } + ); + }; } -- 2.51.0 From 8f3285072b45fc9587365e71914545a0fd620327 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 11:44:18 +0100 Subject: [PATCH 02/17] Generalise naming of `TIMx_ENABLE` --- build/final.elf | Bin 55116 -> 55108 bytes build/final.elf.map | 36 ++++++++++++++++++------------------ build/gpio.S | 4 ++-- build/gpio.i | 2 +- build/gpio.o | Bin 42328 -> 42320 bytes build/main.S | 38 +++++++++++++++++++------------------- build/main.i | 6 +++--- build/main.o | Bin 48600 -> 48592 bytes build/startup.S | 32 ++++++++++++++++---------------- build/startup.i | 2 +- build/startup.o | Bin 33192 -> 33188 bytes build/timer.S | 22 +++++++++++----------- build/timer.i | 6 +++--- build/timer.o | Bin 44612 -> 44604 bytes src/timer.c | 2 +- src/timer.h | 4 ++-- 16 files changed, 77 insertions(+), 77 deletions(-) diff --git a/build/final.elf b/build/final.elf index 72a7ae973eff74ae76774e019bb5abccd9df6700..8cba364732a74e2e56edd6d791aeabfe6b308f06 100755 GIT binary patch delta 15394 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 H4N?gJf3)fX diff --git a/build/final.elf.map b/build/final.elf.map index 64b9935..d9b7e68 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -327,15 +327,15 @@ LOAD linker stubs .debug_line 0x000002f0 0xea build/startup.o .debug_line 0x000003da 0xdf build/timer.o -.debug_str 0x00000000 0x5eb8 - .debug_str 0x00000000 0x5372 build/gpio.o - 0x551a (size before relaxing) - .debug_str 0x00005372 0xab2 build/main.o - 0x5f7c (size before relaxing) - .debug_str 0x00005e24 0x88 build/startup.o - 0x3cdf (size before relaxing) - .debug_str 0x00005eac 0xc build/timer.o - 0x5b1a (size before relaxing) +.debug_str 0x00000000 0x5eb4 + .debug_str 0x00000000 0x536f build/gpio.o + 0x5517 (size before relaxing) + .debug_str 0x0000536f 0xab1 build/main.o + 0x5f78 (size before relaxing) + .debug_str 0x00005e20 0x88 build/startup.o + 0x3cdc (size before relaxing) + .debug_str 0x00005ea8 0xc build/timer.o + 0x5b16 (size before relaxing) .comment 0x00000000 0x45 .comment 0x00000000 0x45 build/gpio.o @@ -356,19 +356,19 @@ LOAD linker stubs 0x0000009c 0x34 build/timer.o .debug_line_str - 0x00000000 0x283 + 0x00000000 0x280 .debug_line_str - 0x00000000 0x24e build/gpio.o - 0x260 (size before relaxing) + 0x00000000 0x24b build/gpio.o + 0x25d (size before relaxing) .debug_line_str - 0x0000024e 0x23 build/main.o - 0x27c (size before relaxing) + 0x0000024b 0x23 build/main.o + 0x279 (size before relaxing) .debug_line_str - 0x00000271 0xa build/startup.o - 0x21b (size before relaxing) + 0x0000026e 0xa build/startup.o + 0x218 (size before relaxing) .debug_line_str - 0x0000027b 0x8 build/timer.o - 0x25e (size before relaxing) + 0x00000278 0x8 build/timer.o + 0x25b (size before relaxing) .debug_frame 0x00000000 0x16c .debug_frame 0x00000000 0x60 build/gpio.o diff --git a/build/gpio.S b/build/gpio.S index e9c50e4..630dcd5 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -4361,8 +4361,6 @@ gpio_write: .ascii "__FLT_EVAL_METHOD_TS_18661_3__ 0\000" .LASF521: .ascii "int +2\000" -.LASF896: - .ascii "/home/alex/code/own/c-compile-experiments\000" .LASF636: .ascii "INT8_C(x) __INT8_C(x)\000" .LASF63: @@ -5327,6 +5325,8 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" +.LASF896: + .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF249: .ascii "__SFRACT_MAX__ 0X7FP-7HR\000" .LASF230: diff --git a/build/gpio.i b/build/gpio.i index ba500f4..5d3f033 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -1,5 +1,5 @@ # 0 "src/gpio.c" -# 1 "/home/alex/code/own/c-compile-experiments//" +# 1 "/home/alex/code/own/stm32-falling-sand//" # 0 "" #define __STDC__ 1 # 0 "" diff --git a/build/gpio.o b/build/gpio.o index 81c99fcbae6b6417a239de18d30f01cf704eb081..64cd8881277e668c43232d14a82e22bb98918575 100644 GIT binary patch delta 5600 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" #define __STDC__ 1 # 0 "" @@ -2237,8 +2237,8 @@ struct timer { #define TIM4_BASE_ADDR (0x40000800U) #define TIM4 ((struct timer *) TIM4_BASE_ADDR) -#define TIM4_CR_CEN_BIT 0 -#define TIM4_ENABLE (1 << TIM4_CR_CEN_BIT) +#define TIM_CR1_CEN_BIT 0 +#define TIM_ENABLE (1 << TIM_CR1_CEN_BIT) void tim4_init(void); void tim4_start(void); diff --git a/build/main.o b/build/main.o index 7baa25a3a5ce343d9fe13e2cda2b95d1fcc6e8b0..87460c913e63da9781041fd3d1a7fc5add2179b9 100644 GIT binary patch delta 7444 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 Ssx!7sp1D_@QDO4Iz2X2>j^o1s delta 7460 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 ((maj) << 16) + (min))\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" +.LASF602: + .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" .LASF253: .ascii "__USFRACT_MIN__ 0.0UHR\000" .LASF578: @@ -3020,8 +3022,8 @@ interrupt_vector_table: .ascii "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__\000" .LASF200: .ascii "__FLT32_MIN_10_EXP__ (-37)\000" -.LASF176: - .ascii "__DBL_HAS_DENORM__ 1\000" +.LASF492: + .ascii "__int20\000" .LASF267: .ascii "__LFRACT_IBIT__ 0\000" .LASF497: @@ -3106,8 +3108,8 @@ interrupt_vector_table: .ascii "__ARM_NEON\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" -.LASF625: - .ascii "/home/alex/code/own/c-compile-experiments\000" +.LASF68: + .ascii "__UINTPTR_TYPE__ unsigned int\000" .LASF229: .ascii "__FLT64_IS_IEC_60559__ 2\000" .LASF209: @@ -3473,8 +3475,6 @@ interrupt_vector_table: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF344: .ascii "__UTQ_FBIT__ 128\000" -.LASF499: - .ascii "__int20 +2\000" .LASF610: .ascii "long long int\000" .LASF24: @@ -3539,8 +3539,8 @@ interrupt_vector_table: .ascii "__STDC__ 1\000" .LASF17: .ascii "__SIZEOF_LONG__ 4\000" -.LASF492: - .ascii "__int20\000" +.LASF499: + .ascii "__int20 +2\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" .LASF585: @@ -3567,6 +3567,8 @@ interrupt_vector_table: .ascii "__SCHAR_WIDTH__ 8\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" +.LASF40: + .ascii "__CHAR16_TYPE__ short unsigned int\000" .LASF21: .ascii "__SIZEOF_DOUBLE__ 8\000" .LASF7: @@ -3801,8 +3803,8 @@ interrupt_vector_table: .ascii "SIZE_MAX (__SIZE_MAX__)\000" .LASF54: .ascii "__INT_LEAST64_TYPE__ long long int\000" -.LASF602: - .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" +.LASF128: + .ascii "__INT_FAST16_MAX__ 0x7fffffff\000" .LASF49: .ascii "__UINT32_TYPE__ long unsigned int\000" .LASF183: @@ -3879,8 +3881,8 @@ interrupt_vector_table: .ascii "INT64_MAX (__INT64_MAX__)\000" .LASF518: .ascii "_INT8_T_DECLARED \000" -.LASF40: - .ascii "__CHAR16_TYPE__ short unsigned int\000" +.LASF625: + .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF370: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF151: @@ -4044,8 +4046,8 @@ interrupt_vector_table: .ascii "__FLT32X_MAX_10_EXP__ 308\000" .LASF140: .ascii "__UINTPTR_MAX__ 0xffffffffU\000" -.LASF128: - .ascii "__INT_FAST16_MAX__ 0x7fffffff\000" +.LASF176: + .ascii "__DBL_HAS_DENORM__ 1\000" .LASF32: .ascii "__GNUC_EXECUTION_CHARSET_NAME \"UTF-8\"\000" .LASF475: @@ -4072,8 +4074,6 @@ interrupt_vector_table: .ascii "long +4\000" .LASF534: .ascii "__int_least8_t_defined 1\000" -.LASF68: - .ascii "__UINTPTR_TYPE__ unsigned int\000" .LASF92: .ascii "__UINTMAX_MAX__ 0xffffffffffffffffULL\000" .LASF42: diff --git a/build/startup.i b/build/startup.i index a43bdc7..1d70ec9 100644 --- a/build/startup.i +++ b/build/startup.i @@ -1,5 +1,5 @@ # 0 "src/startup.c" -# 1 "/home/alex/code/own/c-compile-experiments//" +# 1 "/home/alex/code/own/stm32-falling-sand//" # 0 "" #define __STDC__ 1 # 0 "" diff --git a/build/startup.o b/build/startup.o index fd68f1d78b488e82874695bf415e0fc3f2aea89d..7f8da7530ba32c8b9c2873fdfed396a7157460a7 100644 GIT binary patch delta 4520 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 diff --git a/build/timer.S b/build/timer.S index 4ff166a..25a5850 100644 --- a/build/timer.S +++ b/build/timer.S @@ -3650,7 +3650,7 @@ tim4_start: .uleb128 0x7a .4byte .LASF898 .byte 0 - .section .debug_macro,"G",%progbits,wm4.timer.h.2.a5bec0ee8e2998a7b121820fb4e4e9a6,comdat + .section .debug_macro,"G",%progbits,wm4.timer.h.2.2e929ede818fb0960868f1b0a08a1cbf,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -3673,8 +3673,6 @@ tim4_start: .section .debug_line,"",%progbits .Ldebug_line0: .section .debug_str,"MS",%progbits,1 -.LASF902: - .ascii "TIM4_CR_CEN_BIT 0\000" .LASF735: .ascii "SCNxLEAST16 __SCN16LEAST(x)\000" .LASF636: @@ -3822,8 +3820,6 @@ tim4_start: .ascii "PRIx8 __PRI8(x)\000" .LASF590: .ascii "INT8_MAX (__INT8_MAX__)\000" -.LASF516: - .ascii "signed +0\000" .LASF631: .ascii "PTRDIFF_MAX (__PTRDIFF_MAX__)\000" .LASF839: @@ -4168,6 +4164,8 @@ tim4_start: .ascii "SCNoLEAST32 __SCN32LEAST(o)\000" .LASF891: .ascii "RCC_CFGR_SW_PLL (0b10)\000" +.LASF902: + .ascii "TIM_CR1_CEN_BIT 0\000" .LASF798: .ascii "SCNd64 __SCN64(d)\000" .LASF828: @@ -4242,8 +4240,8 @@ tim4_start: .ascii "__FDPIC__\000" .LASF263: .ascii "__UFRACT_MIN__ 0.0UR\000" -.LASF689: - .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" +.LASF516: + .ascii "signed +0\000" .LASF213: .ascii "__FLT32_IS_IEC_60559__ 2\000" .LASF630: @@ -4352,6 +4350,8 @@ tim4_start: .ascii "__MISC_VISIBLE 0\000" .LASF306: .ascii "__LACCUM_FBIT__ 31\000" +.LASF689: + .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" .LASF937: .ascii "BDCR\000" .LASF211: @@ -4510,8 +4510,6 @@ tim4_start: .ascii "__FLT_EVAL_METHOD_TS_18661_3__ 0\000" .LASF522: .ascii "int +2\000" -.LASF958: - .ascii "/home/alex/code/own/c-compile-experiments\000" .LASF637: .ascii "INT8_C(x) __INT8_C(x)\000" .LASF63: @@ -4752,6 +4750,8 @@ tim4_start: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" .LASF935: .ascii "APB2LPENR\000" +.LASF903: + .ascii "TIM_ENABLE (1 << TIM_CR1_CEN_BIT)\000" .LASF821: .ascii "SCNiFAST64 __SCN64FAST(i)\000" .LASF538: @@ -5275,8 +5275,6 @@ tim4_start: .ascii "SCNuMAX __SCNMAX(u)\000" .LASF121: .ascii "__UINT16_C(c) c\000" -.LASF903: - .ascii "TIM4_ENABLE (1 << TIM4_CR_CEN_BIT)\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" .LASF535: @@ -5541,6 +5539,8 @@ tim4_start: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" +.LASF958: + .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF797: .ascii "PRIX64 __PRI64(X)\000" .LASF249: diff --git a/build/timer.i b/build/timer.i index 74f1085..c8a2bbe 100644 --- a/build/timer.i +++ b/build/timer.i @@ -1,5 +1,5 @@ # 0 "src/timer.c" -# 1 "/home/alex/code/own/c-compile-experiments//" +# 1 "/home/alex/code/own/stm32-falling-sand//" # 0 "" #define __STDC__ 1 # 0 "" @@ -2120,8 +2120,8 @@ struct timer { #define TIM4_BASE_ADDR (0x40000800U) #define TIM4 ((struct timer *) TIM4_BASE_ADDR) -#define TIM4_CR_CEN_BIT 0 -#define TIM4_ENABLE (1 << TIM4_CR_CEN_BIT) +#define TIM_CR1_CEN_BIT 0 +#define TIM_ENABLE (1 << TIM_CR1_CEN_BIT) void tim4_init(void); void tim4_start(void); diff --git a/build/timer.o b/build/timer.o index e731214da19a61f4d65ab74f6402af0d8b146ae2..917c295c2f3905e439882f5ce14c4ddc956e75cf 100644 GIT binary patch delta 6931 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 FWB?B1e{28% delta 6961 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 diff --git a/src/timer.c b/src/timer.c index cb794d3..0bec1bd 100644 --- a/src/timer.c +++ b/src/timer.c @@ -18,5 +18,5 @@ void tim4_init(void) { } void tim4_start(void) { - TIM4->CR1 |= TIM4_ENABLE; + TIM4->CR1 |= TIM_ENABLE; } diff --git a/src/timer.h b/src/timer.h index 18eebc4..3b386de 100644 --- a/src/timer.h +++ b/src/timer.h @@ -29,8 +29,8 @@ struct timer { #define TIM4_BASE_ADDR (0x40000800U) #define TIM4 ((struct timer *) TIM4_BASE_ADDR) -#define TIM4_CR_CEN_BIT 0 -#define TIM4_ENABLE (1 << TIM4_CR_CEN_BIT) +#define TIM_CR1_CEN_BIT 0 +#define TIM_ENABLE (1 << TIM_CR1_CEN_BIT) void tim4_init(void); void tim4_start(void); -- 2.51.0 From a1c43ad21cb093684ef198ddf6b8b2cb780f6a0d Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 11:45:04 +0100 Subject: [PATCH 03/17] `TIM4` runs at 96MHz, not 48MHz --- build/final.elf | Bin 55108 -> 55108 bytes build/timer.S | 2 +- build/timer.i | 2 +- build/timer.o | Bin 44604 -> 44604 bytes src/timer.c | 4 ++-- 5 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/final.elf b/build/final.elf index 8cba364732a74e2e56edd6d791aeabfe6b308f06..840b7af434e4450775f756fbc25e4221f3af23aa 100755 GIT binary patch delta 19 bcmX@Ij`_$s<_+saSlmDTPujdmWYQr3UxNwA delta 19 bcmX@Ij`_$s<_+saSiHa08*SbsGU*TiTPF!1 diff --git a/build/timer.S b/build/timer.S index 25a5850..d8141ff 100644 --- a/build/timer.S +++ b/build/timer.S @@ -56,7 +56,7 @@ tim4_init: .loc 1 14 35 ldr r3, .L2+4 .loc 1 14 41 - movw r2, #47999 + movw r2, #30463 str r2, [r3, #40] .loc 1 17 35 ldr r3, .L2+4 diff --git a/build/timer.i b/build/timer.i index c8a2bbe..0f9db82 100644 --- a/build/timer.i +++ b/build/timer.i @@ -2137,7 +2137,7 @@ void tim4_init(void) { - ((struct timer *) (0x40000800U))->PSC = (uint16_t) 48000 - 1; + ((struct timer *) (0x40000800U))->PSC = (uint16_t) 96000 - 1; ((struct timer *) (0x40000800U))->ARR = (uint16_t) 0xFFFF; diff --git a/build/timer.o b/build/timer.o index 917c295c2f3905e439882f5ce14c4ddc956e75cf..7cca30663621c6357433acb253d2715ead344e3b 100644 GIT binary patch delta 17 ZcmdmUhiT6prU}1T+&}$K+W60IEdW=r3HJa1 delta 17 ZcmdmUhiT6prU}1TyuZ~OZTx4q764QH2~Pk3 diff --git a/src/timer.c b/src/timer.c index 0bec1bd..971b392 100644 --- a/src/timer.c +++ b/src/timer.c @@ -10,8 +10,8 @@ void tim4_init(void) { TIM4->CR2 = 0x0000; // Set prescaler - // f_clk = 48MHz -> /48000 = 1KHz counting frequency = 1ms - TIM4->PSC = (uint16_t) 48000 - 1; + // f_clk = 96MHz -> 96E6/96E3 = 1E3 = 1KHz counting frequency = 1ms + TIM4->PSC = (uint16_t) 96000 - 1; // Set ARR to maximum value to get 1ms between updates TIM4->ARR = (uint16_t) 0xFFFF; -- 2.51.0 From a63527a997013bf723491b5686710edd1dd2eb1b Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 11:46:10 +0100 Subject: [PATCH 04/17] Correctly check PLL readiness --- build/final.elf | Bin 55108 -> 55108 bytes build/main.S | 2 +- build/main.i | 2 +- build/main.o | Bin 48592 -> 48592 bytes src/main.c | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/final.elf b/build/final.elf index 840b7af434e4450775f756fbc25e4221f3af23aa..5f46cac09cd12977bdc5da13aab988698f597673 100755 GIT binary patch delta 18 acmX@Ij`_$s<_(O(%pVwvH?s&k9034FAqL|B delta 18 acmX@Ij`_$s<_(O(%wHIcH?s&k9034D!3L)Q diff --git a/build/main.S b/build/main.S index 4eb459c..2f2ba27 100644 --- a/build/main.S +++ b/build/main.S @@ -150,7 +150,7 @@ system_clock_init: ldr r3, .L5 ldr r3, [r3] .loc 1 54 47 discriminator 1 - and r3, r3, #131072 + and r3, r3, #33554432 .loc 1 54 10 discriminator 1 cmp r3, #0 beq .L3 diff --git a/build/main.i b/build/main.i index e6e6844..5757b32 100644 --- a/build/main.i +++ b/build/main.i @@ -2288,7 +2288,7 @@ static void system_clock_init(void) { - while (!(((struct rcc *) (0x40023800U))->CR & (1 << 17))); + while (!(((struct rcc *) (0x40023800U))->CR & (1 << 25))); ((struct flash *) (0x40023C00U))->ACR |= (1 <<10); diff --git a/build/main.o b/build/main.o index 87460c913e63da9781041fd3d1a7fc5add2179b9..7b6ef1767ddea45b911ae85cf27403458f72408b 100644 GIT binary patch delta 18 acmccco9V)DrVU3KnLjWTZ$81uu?GNK{Rp=J delta 18 acmccco9V)DrVU3KnZGa?Z$81uu?GNJod|mX diff --git a/src/main.c b/src/main.c index 82c27f9..230a8e5 100644 --- a/src/main.c +++ b/src/main.c @@ -51,7 +51,7 @@ static void system_clock_init(void) { // Wait indefinitely for PLL to be ready // TODO indicate error/timeout somehow? - while (!(RCC->CR & RCC_CR_HSERDY_READY)); + while (!(RCC->CR & RCC_CR_PLLRDY_LOCKED)); // Enable caching of instructions and data FLASH->ACR |= FLASH_ACR_DCEN_ENABLE; -- 2.51.0 From 916d7d9620a7f87a5c262ab7057bd0a611eb7e51 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 11:47:18 +0100 Subject: [PATCH 05/17] Set correct PLL N for 96MHz --- build/final.elf | Bin 55108 -> 55108 bytes build/main.S | 2 +- build/main.i | 2 +- build/main.o | Bin 48592 -> 48592 bytes src/main.c | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/final.elf b/build/final.elf index 5f46cac09cd12977bdc5da13aab988698f597673..cdc8fff42d932b1491b296d84c5c233e0e2b8b06 100755 GIT binary patch delta 16 YcmX@Ij`_$s<_)dFj0T(Ag!df=06s(qF#rGn delta 16 YcmX@Ij`_$s<_)dFjE0-rg!df=06t0wG5`Po diff --git a/build/main.S b/build/main.S index 2f2ba27..de60756 100644 --- a/build/main.S +++ b/build/main.S @@ -231,7 +231,7 @@ system_clock_init: .L5: .word 1073887232 .word 1073770496 - .word 67252505 + .word 67252249 .word 1073888256 .cfi_endproc .LFE0: diff --git a/build/main.i b/build/main.i index 5757b32..1cc263b 100644 --- a/build/main.i +++ b/build/main.i @@ -2269,7 +2269,7 @@ static void system_clock_init(void) { ((struct rcc *) (0x40023800U))->PLLCFGR |= (1 << 22); - ((struct rcc *) (0x40023800U))->PLLCFGR |= ((25 & (0b111111)) << 0) | ((196 & (0b111111111)) << 6) | ((2 & (0b11)) << 16) | ((4 & (0b1111)) << 24); + ((struct rcc *) (0x40023800U))->PLLCFGR |= ((25 & (0b111111)) << 0) | ((192 & (0b111111111)) << 6) | ((2 & (0b11)) << 16) | ((4 & (0b1111)) << 24); ((struct rcc *) (0x40023800U))->CFGR &= ~((0b1111) << 4); diff --git a/build/main.o b/build/main.o index 7b6ef1767ddea45b911ae85cf27403458f72408b..35ff02f8bf973aef55120b2870ca52db8dd4a4e2 100644 GIT binary patch delta 16 Ycmccco9V)DrVXAPLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE; // Settings to achieve system clock of 96Mhz - RCC->PLLCFGR |= RCC_PLLCFGR_PLLM(25) | RCC_PLLCFGR_PLLN(196) | RCC_PLLCFGR_PLLP(2) | RCC_PLLCFGR_PLLQ(4); + RCC->PLLCFGR |= RCC_PLLCFGR_PLLM(25) | RCC_PLLCFGR_PLLN(192) | RCC_PLLCFGR_PLLP(2) | RCC_PLLCFGR_PLLQ(4); // Set AHB prescalar to /1 RCC->CFGR &= ~(RCC_CFGR_HPRE_MASK << RCC_CFGR_HPRE_BIT); -- 2.51.0 From 11f469564f3b4df04df146f4e867dbea6d149ee8 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 11:47:54 +0100 Subject: [PATCH 06/17] Turn off `HSI` earlier --- build/final.elf | Bin 55108 -> 55108 bytes build/main.S | 153 ++++++++++++++++++++++++------------------------ build/main.i | 6 +- build/main.o | Bin 48592 -> 48592 bytes src/main.c | 6 +- 5 files changed, 83 insertions(+), 82 deletions(-) diff --git a/build/final.elf b/build/final.elf index cdc8fff42d932b1491b296d84c5c233e0e2b8b06..e6ae9b9d07bbea34512c92474c3b43c177b02eac 100755 GIT binary patch delta 298 zcmX@Ij`_$s<_%>+^~xU@nS~SVy`?kkyqv!@7z-yb?6>ij&S3t+V9cQX^Ma+fbcThO z@`r|E;RG}9=nPYkD(2t>WACU8BTr**VQ23I1Mk@x`d-Q(J}^&C(Dl~wnw>E@LEC$F zhL)G|mj}U<6EwVMXQ+ep1y4>;^`4!f;-&m0!Fh6mlDA?#Sh0e)bcVc_GuRS_{W2iy zKQI)7tOv2BL0XfA6C}N*GbFs6zc3UFCy04VXNYK zfz_suoJHU5)7C2eJ5)Ze^5IV^>7>SneRcKiTL@M%{7 delta 308 zcmX@Ij`_$s<_%>+_0C@!jD-^z_S<_)XE1+ZFlNyHdBMh8I>Xva`9njoaDt_GbcThO z^OpwZ-~==8s0>q2GjCyM?*wD-*%?M&${#*3PfjrK*7us7F*!lcdv=Ddm-3ef!IKlT zy=P}=f%FAWPSEh4ouTff{3XG8a)PS23RtbOw{(V*mvcSX5{CWqAnQLc6oae>vE@Ko zlZ6vxyrnawy_~-=6bmOvdP`?WcqxD2XBJKn_MV*~9Lyh>nVGbITx9i@&S3FU{=mo#^7LLej@Tb8 t)dlVh`#0AJ*Z5BkN|u-`mOPz9(U4WmhLzEF^ZMkl6vio=*-qH;0|0hgYKH&- diff --git a/build/main.S b/build/main.S index de60756..7b4b13b 100644 --- a/build/main.S +++ b/build/main.S @@ -61,164 +61,165 @@ system_clock_init: ldr r3, [r3] ldr r2, .L5 .loc 1 21 38 - orr r3, r3, #65536 + bic r3, r3, #1 str r3, [r2] - .loc 1 25 9 - nop -.L2: - .loc 1 25 42 discriminator 1 - ldr r3, .L5 - ldr r3, [r3] - .loc 1 25 47 discriminator 1 - and r3, r3, #131072 - .loc 1 25 10 discriminator 1 - cmp r3, #0 - beq .L2 - .loc 1 29 33 + .loc 1 24 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 29 38 + .loc 1 24 38 + orr r3, r3, #65536 + str r3, [r2] + .loc 1 28 9 + nop +.L2: + .loc 1 28 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 28 47 discriminator 1 + and r3, r3, #131072 + .loc 1 28 10 discriminator 1 + cmp r3, #0 + beq .L2 + .loc 1 32 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 32 38 bic r3, r3, #16777216 str r3, [r2] - .loc 1 32 33 + .loc 1 35 33 ldr r3, .L5 ldr r3, [r3, #4] ldr r2, .L5 - .loc 1 32 43 + .loc 1 35 43 orr r3, r3, #4194304 str r3, [r2, #4] - .loc 1 35 33 + .loc 1 38 33 ldr r3, .L5 ldr r2, [r3, #4] ldr r1, .L5 - .loc 1 35 43 + .loc 1 38 43 ldr r3, .L5+8 orrs r3, r3, r2 str r3, [r1, #4] - .loc 1 38 33 + .loc 1 41 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 38 40 + .loc 1 41 40 bic r3, r3, #240 str r3, [r2, #8] - .loc 1 39 33 - ldr r3, .L5 - ldr r2, .L5 - ldr r3, [r3, #8] - .loc 1 39 40 - str r3, [r2, #8] .loc 1 42 33 ldr r3, .L5 - ldr r3, [r3, #8] ldr r2, .L5 + ldr r3, [r3, #8] .loc 1 42 40 - bic r3, r3, #7168 str r3, [r2, #8] - .loc 1 43 33 + .loc 1 45 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 43 40 - orr r3, r3, #4096 + .loc 1 45 40 + bic r3, r3, #7168 str r3, [r2, #8] .loc 1 46 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 .loc 1 46 40 - bic r3, r3, #57344 + orr r3, r3, #4096 str r3, [r2, #8] - .loc 1 47 33 + .loc 1 49 33 ldr r3, .L5 - ldr r2, .L5 ldr r3, [r3, #8] - .loc 1 47 40 + ldr r2, .L5 + .loc 1 49 40 + bic r3, r3, #57344 str r3, [r2, #8] .loc 1 50 33 ldr r3, .L5 - ldr r3, [r3] ldr r2, .L5 - .loc 1 50 38 - orr r3, r3, #16777216 - str r3, [r2] - .loc 1 54 9 - nop -.L3: - .loc 1 54 42 discriminator 1 + ldr r3, [r3, #8] + .loc 1 50 40 + str r3, [r2, #8] + .loc 1 53 33 ldr r3, .L5 ldr r3, [r3] - .loc 1 54 47 discriminator 1 + ldr r2, .L5 + .loc 1 53 38 + orr r3, r3, #16777216 + str r3, [r2] + .loc 1 57 9 + nop +.L3: + .loc 1 57 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 57 47 discriminator 1 and r3, r3, #33554432 - .loc 1 54 10 discriminator 1 + .loc 1 57 10 discriminator 1 cmp r3, #0 beq .L3 - .loc 1 57 35 + .loc 1 60 35 ldr r3, .L5+12 ldr r3, [r3] ldr r2, .L5+12 - .loc 1 57 41 + .loc 1 60 41 orr r3, r3, #1024 str r3, [r2] - .loc 1 58 35 - ldr r3, .L5+12 - ldr r3, [r3] - ldr r2, .L5+12 - .loc 1 58 41 - orr r3, r3, #512 - str r3, [r2] .loc 1 61 35 ldr r3, .L5+12 ldr r3, [r3] ldr r2, .L5+12 .loc 1 61 41 + orr r3, r3, #512 + str r3, [r2] + .loc 1 64 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 64 41 bic r3, r3, #15 str r3, [r2] - .loc 1 62 33 - ldr r3, .L5 - ldr r3, [r3, #8] - ldr r2, .L5 - .loc 1 62 40 - orr r3, r3, #272 - orr r3, r3, #1 - str r3, [r2, #8] .loc 1 65 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 .loc 1 65 40 + orr r3, r3, #272 + orr r3, r3, #1 + str r3, [r2, #8] + .loc 1 68 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 68 40 bic r3, r3, #3 str r3, [r2, #8] - .loc 1 66 33 + .loc 1 69 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 66 40 + .loc 1 69 40 orr r3, r3, #2 str r3, [r2, #8] - .loc 1 70 9 + .loc 1 73 9 nop .L4: - .loc 1 70 42 discriminator 1 + .loc 1 73 42 discriminator 1 ldr r3, .L5 ldr r3, [r3, #8] - .loc 1 70 49 discriminator 1 + .loc 1 73 49 discriminator 1 lsrs r3, r3, #2 - .loc 1 70 55 discriminator 1 + .loc 1 73 55 discriminator 1 and r3, r3, #3 - .loc 1 70 65 discriminator 1 + .loc 1 73 65 discriminator 1 cmp r3, #2 bne .L4 - .loc 1 73 33 - ldr r3, .L5 - ldr r3, [r3] - ldr r2, .L5 - .loc 1 73 38 - bic r3, r3, #1 - str r3, [r2] .loc 1 74 1 nop + nop mov sp, r7 .cfi_def_cfa_register 13 @ sp needed diff --git a/build/main.i b/build/main.i index 1cc263b..d6cb1ed 100644 --- a/build/main.i +++ b/build/main.i @@ -2255,6 +2255,9 @@ static void system_clock_init(void) { ((struct pwr *) (0x40007000U))->CR |= ((0b11) << 14); + ((struct rcc *) (0x40023800U))->CR &= ~(1 << 0); + + ((struct rcc *) (0x40023800U))->CR |= (1 << 16); @@ -2305,9 +2308,6 @@ static void system_clock_init(void) { while (((((struct rcc *) (0x40023800U))->CFGR >> 2) & (0b11)) != (0b10)); - - - ((struct rcc *) (0x40023800U))->CR &= ~(1 << 0); } int main(void) { diff --git a/build/main.o b/build/main.o index 35ff02f8bf973aef55120b2870ca52db8dd4a4e2..a62cebb4b1caa0599d56accb964ef6f3d85993ea 100644 GIT binary patch delta 305 zcmccco9V)DrVUn%^~xU@nS~SVy`?kkyqv!@7z-yb?6>ij&S3t+V9cQX^Ma+fbcThO z@`r|E;RG}9=nPYkD(2t>WACU8BTr**VQ23I1Mk@x`d-Q(J}^&C(Dl~wnw>E@LEC$F zhL)G|mj}U<6EwVMXQ+ep1y4>;^`4!f;-&m0!Fh6mlDA?#Sh0e)bcVc_GuRS_{W2iy zKQI)7tOv2BL0XfA6C}N*GbFs6zc3UFCy04VXNYK zfz_stGWG4f1`_LJWz%1qv(IGu@6e{-o4Hz#SpWclA8OG6 delta 304 zcmccco9V)DrVUn%_0C@!jD-^z_S<_)XE1+ZFlNyHdBMh8I>Xva`9njoaDt_GbcThO z^OpwZ-~==8s0>q2GjCyM?*wD-*%?M&${#*3PfjrK*7us7F*!lcdv=Ddm-3ef!IKlT zy=P}=f%FAWPSEh4ouTff{3XG8a)PS23RtbOw{(V*mvcSX5{CWqAnQLc6oae>vE@Ko zlZ6vxyrnawy_~-=6bmOvdP`?WcqxD2XBJKn_MV*~9Lyh>nVGbITx9i@&S3FU{=mo#^7LLej@Tb8 p)dlVh`!_o<#mG-yq`00#(U4WmhLzEFbFk93B*rP5xmu4|001=}X@UR% diff --git a/src/main.c b/src/main.c index 26025cc..8129bf2 100644 --- a/src/main.c +++ b/src/main.c @@ -17,6 +17,9 @@ static void system_clock_init(void) { PWR->CR &= ~(PWR_CR_VOS_MASK << PWR_CR_VOS_BIT); PWR->CR |= (PWR_SCALE3 << PWR_CR_VOS_BIT); + // Turn off HSI (which is on by default) + RCC->CR &= ~RCC_CR_HSION_ON; + // Turn on HSE RCC->CR |= RCC_CR_HSEON_ON; @@ -68,9 +71,6 @@ static void system_clock_init(void) { // Wait indefinitely for PLL clock to be selected // TODO indicate error/timeout somehow? while (((RCC->CFGR >> RCC_CFGR_SWS_BIT) & RCC_CFGR_SWS_MASK) != RCC_CFGR_SWS_PLL); - - // Turn off HSI (which is on by default) - RCC->CR &= ~RCC_CR_HSION_ON; } int main(void) { -- 2.51.0 From 3aad7271a18286f069d7089639c966c7e0674c77 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 11:48:38 +0100 Subject: [PATCH 07/17] Use `RCC_CFGR_SW` helper function to set software clock --- build/final.elf | Bin 55108 -> 55088 bytes build/final.elf.map | 204 ++++++++++++++++++++++---------------------- build/main.S | 73 +++++++--------- build/main.i | 11 ++- build/main.o | Bin 48592 -> 48576 bytes src/main.c | 3 +- 6 files changed, 141 insertions(+), 150 deletions(-) diff --git a/build/final.elf b/build/final.elf index e6ae9b9d07bbea34512c92474c3b43c177b02eac..364d3f75554307ee5409e2fa3d5859e17ffd3deb 100755 GIT binary patch delta 2450 zcmX@Ij(Nj6<_Qv#TW_wbg^arbim&=4$~;^r-#;p(OQ#lcxP!P#3n z!^z7T%(nNI&am@R{=mpAoM7WEonh_e{H4KIIDuimrMGkj^A`qV2JN30%)F&DOudvp zG!zRb7<)%&7=ctV2PYVKM`h@H8h8skdnf36&(6^CQvUFPd2)i5x2D(Z`i#j58s4)r z)V-9yJP4kgpz1w4Lj|NUcyfZ0_v{QsFXb-@&XW`5z2&@SXG~6z^_I?%0XerAWW6NF z`VS1nAnQSF36RcY;RG>n=?qaX=PwM!!U@9O(iuWt${+Zdg%fzaXJ_zuIe+OWcK*P~ zJUM~Wdvcht9b^3Dslxhwq;`cKbb`&h4IPeOp!TkzTT`=3=9kn%nTeI3=9m6 zbF5hy7=&|DQy3Tnc|ame6N`90L@+RfLV0C8jIj(1VeDs_85o!*mNJOchchrR^6+{v zF>qK+4wBYjd^NdRdb4T`3j+rS*hGQuI0gnrQMMcw1`YwRh@c)wgpG}3alm+urP3> zFfcH{%&eJwQAM7!g@u8`fq{YH$mE|YmbN>X*umanWRPZHU|?ln0VfJ}uvT`kMs|oJ zMUkb!X0RXGoUdB1%=l{adyf^|OjnpUfACntwb?cPDHG#`&Du$^jFbD4wb?+%GoPBg zKY2SN$K>)9cgCE_`%|PDYbM`LSDEudjp3rCHnCyB&oiS%}?g@|~ohQ^8TPANjA>$fOK$5qFmNX!TDKRiH*rV}%(fEOA{9pzKCvZ^(Gav#@0Vvj= zKrIwt`1n5`O}-YypSpAZ8R!vc^hB>ANv{^Y->o!q z6GQFfy=cxjji&4d8vg+r|0x>(4I2L^8lR1cfuRvvpn<%>&BRcTlBNWiP-8#_jjw{n z*G1!7q4Dj|_)chi4<=z$3;jR}Cciz08a?G8QKaZ-MdSCP@n3;Fr#`~6pb&*Y>cWv5lw*_8ebd4-)wuKn1#`2 z^2RI5Oix56|GOeK`OOsz#wU|iuc|Y0PWHX3&Kjb^z_4O6<5l6wJy!*o{-{izcU6rs zWAf3f>Z}}z3=Eqmf4r*9xO=kbHFd`P$+p+jS+^WvU@!q|sJSM<_+oPJHFd^}$y=|f aGhUf|_nJDR$z;~+>a01J85mB3Q~>~DY@YQ1 delta 2440 zcmdn6j`_$s<_Qv#TW_x6^~@$z#1&=4$~;^{4&;o+tH#lcxP!OdGb z!_~_f%y#mY&T#Zn{=mpAoM7)QonhzY{H4KIIDuimjkk0L^A`qV2JN30EWM>OEWDII zG!zRbn0ZHMn1WO>2PYVNM`aj!8hZ;ndnXup&(6^IQvUFPd2)iTw~p8B`i#j5+TOD> zw7itRJP4kgpy53`Lmi|scyfZO_v{Q6FXb-@&XW_AycNA>XG~5|@RrVy2RXMGWW5Z? z`VS1nAnQSFX^_rj;RH!<=?n=k=PwM!!U{DU2UB$BN8hGxuSwVqjqC zVP@dyU|?WioMX+xz#yEHn!>;s!~+sxnpnj1A%cM+49Y9xVT@&92%l^qEz0OJ*-cu5 z@x$bN>CLJgEDRhRU=swo;}{qiMcFD?7&rvLB7%A#5jHlF$?h_)j8c<(Wi%OWCU2Lq zXS}ufyUcec!3!)59138iY|60=3@j5i|CgW0!s^1vz|b>!s*1dz2nz#83IhWJ%*>9- zM^)rGC$KPZI503UT$ub;#nSc&6Fb-&j11BY3=FIcEa1ez4%W&J*2oTVq$sj9*bMdy zo0C=Rm6<*;ZSDzA@NdRjn|neg@iJc9ET0t1$fRgHxguGg4P*iH>B(!8w=;@N zPEB!VteCtuMVhf=^2wC7j1wl8r|L6a*t|UTU?L;Ko{(p}uzBwZZAL?o>%snD zU}E57U|>jLVE~0P0|NsS12;54VDcb-$7IP<#kwGCnV>pqm{E0rya3YyGLdKU&QtRB zpkP22J%MHqD29;b-yq3bLQ5Ht!;~1980^vbzG(bFG=4AxgA=%zf*BBjrT`T4AD|Wr zFns)6wvVF5@LG?jv!xfH~o{PMKCAhNFG zU{T34^58-gX4YMhD3ab+X#DqR{69#1klj3tkb)Ryo(LLW9*wWY$S`^P8ATNTxT2}? zLF0#j_>(!$qPjenk%3_%G@pQ6QVvpu%YlHZkH7^viFh)$C zdqtV?!{mck{24z?7QCv?C_35lsybuBCFGR |= ((0x0111) << 0); - ((struct rcc *) (0x40023800U))->CFGR &= ~((0b11) << 0); - ((struct rcc *) (0x40023800U))->CFGR |= ((0b10) << 0); + ((struct rcc *) (0x40023800U))->CFGR |= (((0b10) & (0b11)) << 0); @@ -2322,13 +2321,13 @@ int main(void) { uint16_t counter = ((struct timer *) (0x40000800U))->CNT; -# 87 "src/main.c" 3 4 +# 86 "src/main.c" 3 4 _Bool -# 87 "src/main.c" +# 86 "src/main.c" led_on = -# 87 "src/main.c" 3 4 +# 86 "src/main.c" 3 4 ((_Bool)+0u) -# 87 "src/main.c" +# 86 "src/main.c" ; while(1) { if ((((struct timer *) (0x40000800U))->CNT - counter) >= 250) { diff --git a/build/main.o b/build/main.o index a62cebb4b1caa0599d56accb964ef6f3d85993ea..e3ccc40ad397b8def0206d30f3931f0517f28c48 100644 GIT binary patch delta 904 zcmccco9V!BrU?p+5)&2Q*L!$N=eT=0e`p96PI2>=&T#co{^H;)oZ##&o#Eu=3})MV zOJ~@5DSu#O7EZA7md>#Da{kg_ES$iw-_lz;gZT@CF@yHc3ufNZ8Kz#!9~z2<6O6s1 zGmJp0n1d4xyrVMoJq^5toxKxuy=Q0WcqxDQz&trY%UjcHc74X=1P$-m8R}ljUmgTc zPEhrpouLBK7(6*a$$NH&qL=cQ1n0>K^4@Y@voj_q$a+g>$bg(%46$*VvzM9 zwggCLvT%Z!w{(W6m-82fV&Mc~Z|MvnFXa#X%)$x0-m^1!yqv#u6gz)lWS*SB>AhKs zX(x-XH)|CG1avSkFfh)sW?^6u&Ph#SU<~8|i7-tp;*m6DUTKJ^7#PAKRxe^;$bedH z0JfS>oPi;0vh8k_$%Z@C*($^t816GpuG_9WxpAjDYq%r>LnqiEfyozlszUI6JX+@;QTPL6>=3*wND$p?3-v;L50U@(E|7u>DRs-wWb;5PZ} zc9qGAyVY5X6c`xvz_KeQZ``fUv_N5U*ETiA2a_51sIwkYU|_g1S$B^zBgf>xJ?f0p zCRgrJXXKl_aF04;$mElIKmq=7k2=$b^^>Lcsxc}|cH9e+$lR;WSTcFyUUdn94Gavd LjG&|e!7wHO=d2ik delta 908 zcmX@`o9V)DrU?p+8WR=Y*L!#Aa{kg_ES$iw-^N=ygZT@CF@yHc3zpu}85Um39~z2<6U@A$ zGfY9Mn1d6Hy`wUWJdM4DoxKwbyk}?VdnteTz&trY*IUPHc74X=1a0rx8CqV-UmgTc zPSEh4ouLlW7(6*a)q8e^ikI@21n0>KO5TcIvoj_qD0oX}$b+0)46$*VvzM9 zwlqj*vT%Z=w{(Vtm-82fV&McaZ|MwCFXa#X%)$u*-m^3Ky_~;v6gz)lWS*SBfyk(2`)hw)wC^EF+Vm z?PM7x6UNh<1C?r%CSPcg;d5bRU~uGPX=ilgWoMc?`B%#&UXTzIgBXJ>0|SG}=9{hj zT8#ahU#{QG!ss%2?iOXnfXN59s51skez`@R@y2Aqt?G;wlP$NZGpbEa+^Wu)HMw)E zI^%=M8@H-6PMUmktNP@CZ7h>nwy7|#ovgV{orz=OJU|?YI zV_;xVnjE`Ln$=%~fuVGA?KWjbgUKJask0stVPMb#^LI>k+^){{PK1FWhGDYbPUXoH zx2v;yi83(QOxE44GWp?lb+$H91_oxv$#vV57$;0N+@a3eDaOEH1=f9Fa^ntl*27{9 z4B;R?FUMjAh773924I_|#2FZ}Kyr))lNEQWv$cpbFx&?jraZZDr#fr0Bm+a|| zz+eK_%(z>f)k1-R!EN&29V(LpcdN73DKIeTf$iNfdEst#rZoy+lRixTxLcj|oB{*G zt;w=`lo=%^JMK|uTroLwk2<5mCFGR |= (FLASH_ACR_LATENCY_3_WAIT_STATES << FLASH_ACR_LATENCY_BIT); // Use PLL as system clock - RCC->CFGR &= ~(RCC_CFGR_SW_MASK << RCC_CFGR_SW_BIT); - RCC->CFGR |= (RCC_CFGR_SW_PLL << RCC_CFGR_SW_BIT); + RCC->CFGR |= RCC_CFGR_SW(RCC_CFGR_SW_PLL); // Wait indefinitely for PLL clock to be selected // TODO indicate error/timeout somehow? -- 2.51.0 From 980b9a2d9b8e145df60d2762b81e89cb4bd4b8a7 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 11:49:48 +0100 Subject: [PATCH 08/17] GPIO alternative function registers are 32bit each, not 64bit --- build/final.elf | Bin 55088 -> 55052 bytes build/final.elf.map | 20 ++++----- build/gpio.S | 105 ++++++++++++++++---------------------------- build/gpio.i | 4 +- build/gpio.o | Bin 42320 -> 42280 bytes build/main.i | 4 +- src/gpio.h | 4 +- 7 files changed, 55 insertions(+), 82 deletions(-) diff --git a/build/final.elf b/build/final.elf index 364d3f75554307ee5409e2fa3d5859e17ffd3deb..e33c69c2a2e56e6c04b23ef014809fd17b1bf246 100755 GIT binary patch delta 543 zcmdn6j=5(Y^8^J(k&TLnMR*yR7#LU?7+Dw?7#KJve-z1OGiqs!!l*VGv| cOg?!{ol#)&$7|{m9+w#yPJ<#HiW#9a05mLcr2qf` delta 583 zcmeBK$Gl-3^8^J(i;aqhMR>)S7#LU?7+Dw?7#KJwe-z1O0}Ktl^{Px1_u5wDhv#ayllT18901EO6MG8WME(|$joElm72o9z`!&y zkF_i@hk;iaB*8Q>m*XGEs1uAJsS*Z8MyBK-1_l9^y$lQtf|KWo$(sr>s53Ayvgwq9 zl|a<9L)8lx@GvrZ3WFHDiVU8@`rHf*d@PK1 z+}zxr!caw%&nZapfm8_aGk}Ca{#&OYCc?lV#0s(>Y!t+H;mv;(;+YwxCda6#GiFR~ zQPF4ouz8D0@1o5v$Jg*Os!slRMVXaTfq}t$vgB1|#*oRjSJhens4y_(OkQ|Jcyi5E z0mh8Uy;s$lI1(psyQ;>xd-C0@>Wul5S+A)xZkeomO`Y+@g)w)LC;bGccS683F(Zt$1hv diff --git a/build/final.elf.map b/build/final.elf.map index 006e196..57b4ee1 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -261,17 +261,17 @@ LOAD build/timer.o OUTPUT(build/final.elf elf32-littlearm) LOAD linker stubs -.debug_info 0x00000000 0xb25 - .debug_info 0x00000000 0x21a build/gpio.o - .debug_info 0x0000021a 0x44e build/main.o - .debug_info 0x00000668 0x188 build/startup.o - .debug_info 0x000007f0 0x335 build/timer.o +.debug_info 0x00000000 0xb10 + .debug_info 0x00000000 0x205 build/gpio.o + .debug_info 0x00000205 0x44e build/main.o + .debug_info 0x00000653 0x188 build/startup.o + .debug_info 0x000007db 0x335 build/timer.o -.debug_abbrev 0x00000000 0x44b - .debug_abbrev 0x00000000 0x12b build/gpio.o - .debug_abbrev 0x0000012b 0x144 build/main.o - .debug_abbrev 0x0000026f 0x127 build/startup.o - .debug_abbrev 0x00000396 0xb5 build/timer.o +.debug_abbrev 0x00000000 0x439 + .debug_abbrev 0x00000000 0x119 build/gpio.o + .debug_abbrev 0x00000119 0x144 build/main.o + .debug_abbrev 0x0000025d 0x127 build/startup.o + .debug_abbrev 0x00000384 0xb5 build/timer.o .debug_aranges 0x00000000 0xa8 .debug_aranges diff --git a/build/gpio.S b/build/gpio.S index 630dcd5..11ce30e 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -182,12 +182,12 @@ gpio_write: .file 4 "src/gpio.h" .section .debug_info,"",%progbits .Ldebug_info0: - .4byte 0x216 + .4byte 0x201 .2byte 0x5 .byte 0x1 .byte 0x4 .4byte .Ldebug_abbrev0 - .uleb128 0x9 + .uleb128 0x8 .4byte .LASF894 .byte 0x1d .4byte .LASF895 @@ -240,7 +240,7 @@ gpio_write: .byte 0x8 .byte 0x7 .4byte .LASF872 - .uleb128 0xa + .uleb128 0x9 .byte 0x4 .byte 0x5 .ascii "int\000" @@ -266,7 +266,7 @@ gpio_write: .byte 0x30 .byte 0x14 .4byte 0x59 - .uleb128 0x6 + .uleb128 0xa .4byte 0xa0 .uleb128 0x3 .4byte .LASF877 @@ -276,7 +276,7 @@ gpio_write: .4byte 0x81 .uleb128 0xb .4byte .LASF893 - .byte 0x30 + .byte 0x28 .byte 0x4 .byte 0x7 .byte 0x8 @@ -301,12 +301,12 @@ gpio_write: .byte 0xb .4byte 0xac .byte 0xc - .uleb128 0x7 + .uleb128 0x6 .ascii "IDR\000" .byte 0xc .4byte 0xac .byte 0x10 - .uleb128 0x7 + .uleb128 0x6 .ascii "ODR\000" .byte 0xd .4byte 0xac @@ -324,31 +324,22 @@ gpio_write: .uleb128 0x2 .4byte .LASF884 .byte 0x10 - .4byte 0x149 + .4byte 0xac .byte 0x20 .uleb128 0x2 .4byte .LASF885 .byte 0x11 - .4byte 0x149 - .byte 0x28 + .4byte 0xac + .byte 0x24 .byte 0 .uleb128 0xc - .4byte 0xac - .4byte 0x149 - .uleb128 0xd - .4byte 0x8d - .byte 0x1 - .byte 0 - .uleb128 0x6 - .4byte 0x139 - .uleb128 0xe .byte 0x7 .byte 0x1 .4byte 0x31 .byte 0x4 .byte 0x20 .byte 0xe - .4byte 0x175 + .4byte 0x160 .uleb128 0x4 .4byte .LASF886 .byte 0 @@ -367,8 +358,8 @@ gpio_write: .byte 0x4 .byte 0x25 .byte 0x3 - .4byte 0x14e - .uleb128 0xf + .4byte 0x139 + .uleb128 0xd .4byte .LASF897 .byte 0x1 .byte 0xd @@ -377,7 +368,7 @@ gpio_write: .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c - .4byte 0x1c1 + .4byte 0x1ac .uleb128 0x5 .ascii "pin\000" .byte 0xd @@ -390,14 +381,14 @@ gpio_write: .ascii "val\000" .byte 0xd .byte 0x23 - .4byte 0x1c1 + .4byte 0x1ac .uleb128 0x2 .byte 0x91 .sleb128 -19 - .uleb128 0x8 + .uleb128 0x7 .4byte .LASF893 .byte 0xe - .4byte 0x1c8 + .4byte 0x1b3 .uleb128 0x2 .byte 0x91 .sleb128 -12 @@ -406,10 +397,10 @@ gpio_write: .byte 0x1 .byte 0x2 .4byte .LASF891 - .uleb128 0x10 + .uleb128 0xe .byte 0x4 .4byte 0xbd - .uleb128 0x11 + .uleb128 0xf .4byte .LASF898 .byte 0x1 .byte 0x6 @@ -426,23 +417,23 @@ gpio_write: .uleb128 0x2 .byte 0x91 .sleb128 -18 - .uleb128 0x12 + .uleb128 0x10 .4byte .LASF892 .byte 0x1 .byte 0x6 .byte 0x2c - .4byte 0x175 + .4byte 0x160 .uleb128 0x2 .byte 0x91 .sleb128 -19 - .uleb128 0x8 + .uleb128 0x7 .4byte .LASF893 .byte 0x7 - .4byte 0x1c8 + .4byte 0x1b3 .uleb128 0x2 .byte 0x91 .sleb128 -12 - .uleb128 0x13 + .uleb128 0x11 .ascii "pn\000" .byte 0x1 .byte 0x8 @@ -528,13 +519,6 @@ gpio_write: .byte 0 .byte 0 .uleb128 0x6 - .uleb128 0x35 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x7 .uleb128 0xd .byte 0 .uleb128 0x3 @@ -553,7 +537,7 @@ gpio_write: .uleb128 0xb .byte 0 .byte 0 - .uleb128 0x8 + .uleb128 0x7 .uleb128 0x34 .byte 0 .uleb128 0x3 @@ -572,7 +556,7 @@ gpio_write: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x9 + .uleb128 0x8 .uleb128 0x11 .byte 0x1 .uleb128 0x25 @@ -593,7 +577,7 @@ gpio_write: .uleb128 0x17 .byte 0 .byte 0 - .uleb128 0xa + .uleb128 0x9 .uleb128 0x24 .byte 0 .uleb128 0xb @@ -604,6 +588,13 @@ gpio_write: .uleb128 0x8 .byte 0 .byte 0 + .uleb128 0xa + .uleb128 0x35 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 .uleb128 0xb .uleb128 0x13 .byte 0x1 @@ -622,24 +613,6 @@ gpio_write: .byte 0 .byte 0 .uleb128 0xc - .uleb128 0x1 - .byte 0x1 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0xd - .uleb128 0x21 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2f - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xe .uleb128 0x4 .byte 0x1 .uleb128 0x3e @@ -658,7 +631,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0xf + .uleb128 0xd .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -685,7 +658,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x10 + .uleb128 0xe .uleb128 0xf .byte 0 .uleb128 0xb @@ -694,7 +667,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x11 + .uleb128 0xf .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -719,7 +692,7 @@ gpio_write: .uleb128 0x19 .byte 0 .byte 0 - .uleb128 0x12 + .uleb128 0x10 .uleb128 0x5 .byte 0 .uleb128 0x3 @@ -736,7 +709,7 @@ gpio_write: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x13 + .uleb128 0x11 .uleb128 0x34 .byte 0 .uleb128 0x3 diff --git a/build/gpio.i b/build/gpio.i index 5d3f033..e5588a3 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -1995,8 +1995,8 @@ struct gpio { volatile uint32_t ODR; volatile uint32_t BSRR; volatile uint32_t LCKR; - volatile uint32_t AFRL[2]; - volatile uint32_t AFRH[2]; + volatile uint32_t AFRL; + volatile uint32_t AFRH; }; #define GPIO_BASE_ADDR (0x40020000U) diff --git a/build/gpio.o b/build/gpio.o index 64cd8881277e668c43232d14a82e22bb98918575..6fcc9010e5320fc9e738f8d055f1e154ee32cfa4 100644 GIT binary patch delta 939 zcmca`ifP3urU?p+9UB!h8F?9*7#LU?7+Dw?7#KJvPiM?!@USr2adUHf3L}Jg^%(6XnfV|B z>XMV|Sa{g@_!+plJtya|NQp2o2(W^z2O9ygTyXO~mdO0g5+x-Zi5?(-@G~&@LFo`E z9R;Nmp>!^kE&@O%z~YD20lNaCR^-FgP+WFvw5V zoiELLO@M(x3oQ3xf#77p1?sE}f(#5XU=fFff|C;$sI$fhGBDVHML=eXOy0Oaoo$97 z0|PVTWWV`Jj3JX57pk+)7Ghwq0xK$5EI2uEp*rhTAqIwUun0)onaK+mssi_}?9Ng?~#WU}F6b=Egh3=Ae<6BHJUOm11M!l*EL9gR%bMu{ByB7 zqwi$JCF+cmCwneYXZlb)xoC+RW6I>2OVk+yCLdg)&e$^fC72XksxHwo6XaP?zJOpx H2*m&ZzL(G_ delta 895 zcmZ2+is`~BrU?p+8#XFtGV+QsF)*+)FtRW(FfedVp3a!d$TgXj$xxha0RsaA^8*bA z2Ie5qMg|53Ze}J127}4IOvXIyo-RQQJZl&j7zEfS_b{m$dNMLFC@?kKGcX8(m>LjC z5Rm(U5_GfklC@bn-bSm3lu$1_u5GstgQ_ylf!reLza*9Aso* zU@geZW8jsV!oa}5G%=60EHQ_HR~aP1G%=S0j?Qy8j9 zLzsbqUyspVl9>-8qAn@OD8%Ld_s&&joHF_0Ty@qZ%nS_LlX>SUGoGJpI8UAN%jC#;>WtqfH_lUM z;;EgyYMvUC0PEyS^VFDRYA64ir^c8zS#dr{ndf|U#*WE_^VOMTdM3}Bug3Uy^1=D) zj7uiJoUhKPK3Q;qI^&hemJ8Gwng1j)EPfcez*vvi*vC$tFSZ!gUMvpg({OH7ppV6Pi|bS z&Uj?<%Eju8v6C+@R%a}k{ByB7 Date: Wed, 1 Jan 2025 11:58:40 +0100 Subject: [PATCH 09/17] Remove `BIT` macro --- build/final.elf | Bin 55052 -> 55028 bytes build/final.elf.map | 40 ++--- build/gpio.S | 169 +++++++++--------- build/gpio.i | 5 +- build/gpio.o | Bin 42280 -> 42252 bytes build/main.S | 405 ++++++++++++++++++++++---------------------- build/main.i | 5 +- build/main.o | Bin 48576 -> 48544 bytes src/gpio.h | 1 - src/main.c | 2 +- 10 files changed, 307 insertions(+), 320 deletions(-) diff --git a/build/final.elf b/build/final.elf index e33c69c2a2e56e6c04b23ef014809fd17b1bf246..933203eea664e6c1e395aa953781e7fb8d58e74a 100755 GIT binary patch delta 15821 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 GMHm1QE!3R= delta 15953 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 diff --git a/build/final.elf.map b/build/final.elf.map index 57b4ee1..97283df 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -52,7 +52,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 0x2e build/main.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o @@ -294,7 +294,7 @@ LOAD linker stubs .debug_rnglists 0x00000053 0x19 build/timer.o -.debug_macro 0x00000000 0x3ba0 +.debug_macro 0x00000000 0x3b9a .debug_macro 0x00000000 0xb56 build/gpio.o .debug_macro 0x00000b56 0x22 build/gpio.o .debug_macro 0x00000b78 0x75 build/gpio.o @@ -309,17 +309,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 0x2e build/gpio.o + .debug_macro 0x00001631 0xb80 build/main.o + .debug_macro 0x000021b1 0x12a build/main.o + .debug_macro 0x000022db 0x46 build/main.o + .debug_macro 0x00002321 0x2e build/main.o + .debug_macro 0x0000234f 0x22 build/main.o + .debug_macro 0x00002371 0xb02 build/startup.o + .debug_macro 0x00002e73 0x56 build/startup.o + .debug_macro 0x00002ec9 0x51 build/startup.o + .debug_macro 0x00002f1a 0xb5c build/timer.o + .debug_macro 0x00003a76 0x124 build/timer.o .debug_line 0x00000000 0x4b3 .debug_line 0x00000000 0x116 build/gpio.o @@ -327,14 +327,14 @@ LOAD linker stubs .debug_line 0x000002ea 0xea build/startup.o .debug_line 0x000003d4 0xdf build/timer.o -.debug_str 0x00000000 0x5eb4 - .debug_str 0x00000000 0x536f build/gpio.o - 0x5517 (size before relaxing) - .debug_str 0x0000536f 0xab1 build/main.o - 0x5f78 (size before relaxing) - .debug_str 0x00005e20 0x88 build/startup.o +.debug_str 0x00000000 0x5ea4 + .debug_str 0x00000000 0x535f build/gpio.o + 0x5507 (size before relaxing) + .debug_str 0x0000535f 0xab1 build/main.o + 0x5f68 (size before relaxing) + .debug_str 0x00005e10 0x88 build/startup.o 0x3cdc (size before relaxing) - .debug_str 0x00005ea8 0xc build/timer.o + .debug_str 0x00005e98 0xc build/timer.o 0x5b16 (size before relaxing) .comment 0x00000000 0x45 diff --git a/build/gpio.S b/build/gpio.S index 11ce30e..9af46bc 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -188,10 +188,10 @@ gpio_write: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x8 - .4byte .LASF894 + .4byte .LASF893 .byte 0x1d + .4byte .LASF894 .4byte .LASF895 - .4byte .LASF896 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -199,17 +199,17 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x6 - .4byte .LASF863 + .4byte .LASF862 .uleb128 0x1 .byte 0x1 .byte 0x8 - .4byte .LASF864 + .4byte .LASF863 .uleb128 0x1 .byte 0x2 .byte 0x5 - .4byte .LASF865 + .4byte .LASF864 .uleb128 0x3 - .4byte .LASF868 + .4byte .LASF867 .byte 0x2 .byte 0x39 .byte 0x1c @@ -217,13 +217,13 @@ gpio_write: .uleb128 0x1 .byte 0x2 .byte 0x7 - .4byte .LASF866 + .4byte .LASF865 .uleb128 0x1 .byte 0x4 .byte 0x5 - .4byte .LASF867 + .4byte .LASF866 .uleb128 0x3 - .4byte .LASF869 + .4byte .LASF868 .byte 0x2 .byte 0x4f .byte 0x1b @@ -231,21 +231,21 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF870 + .4byte .LASF869 .uleb128 0x1 .byte 0x8 .byte 0x5 - .4byte .LASF871 + .4byte .LASF870 .uleb128 0x1 .byte 0x8 .byte 0x7 - .4byte .LASF872 + .4byte .LASF871 .uleb128 0x9 .byte 0x4 .byte 0x5 .ascii "int\000" .uleb128 0x3 - .4byte .LASF873 + .4byte .LASF872 .byte 0x2 .byte 0xe8 .byte 0x16 @@ -253,15 +253,15 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF874 + .4byte .LASF873 .uleb128 0x3 - .4byte .LASF875 + .4byte .LASF874 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x3 - .4byte .LASF876 + .4byte .LASF875 .byte 0x3 .byte 0x30 .byte 0x14 @@ -269,35 +269,35 @@ gpio_write: .uleb128 0xa .4byte 0xa0 .uleb128 0x3 - .4byte .LASF877 + .4byte .LASF876 .byte 0x3 .byte 0x52 .byte 0x15 .4byte 0x81 .uleb128 0xb - .4byte .LASF893 + .4byte .LASF892 .byte 0x28 .byte 0x4 .byte 0x7 .byte 0x8 .4byte 0x139 .uleb128 0x2 - .4byte .LASF878 + .4byte .LASF877 .byte 0x8 .4byte 0xac .byte 0 .uleb128 0x2 - .4byte .LASF879 + .4byte .LASF878 .byte 0x9 .4byte 0xac .byte 0x4 .uleb128 0x2 - .4byte .LASF880 + .4byte .LASF879 .byte 0xa .4byte 0xac .byte 0x8 .uleb128 0x2 - .4byte .LASF881 + .4byte .LASF880 .byte 0xb .4byte 0xac .byte 0xc @@ -312,22 +312,22 @@ gpio_write: .4byte 0xac .byte 0x14 .uleb128 0x2 - .4byte .LASF882 + .4byte .LASF881 .byte 0xe .4byte 0xac .byte 0x18 .uleb128 0x2 - .4byte .LASF883 + .4byte .LASF882 .byte 0xf .4byte 0xac .byte 0x1c .uleb128 0x2 - .4byte .LASF884 + .4byte .LASF883 .byte 0x10 .4byte 0xac .byte 0x20 .uleb128 0x2 - .4byte .LASF885 + .4byte .LASF884 .byte 0x11 .4byte 0xac .byte 0x24 @@ -337,30 +337,30 @@ gpio_write: .byte 0x1 .4byte 0x31 .byte 0x4 - .byte 0x20 + .byte 0x1f .byte 0xe .4byte 0x160 .uleb128 0x4 - .4byte .LASF886 + .4byte .LASF885 .byte 0 .uleb128 0x4 - .4byte .LASF887 + .4byte .LASF886 .byte 0x1 .uleb128 0x4 - .4byte .LASF888 + .4byte .LASF887 .byte 0x2 .uleb128 0x4 - .4byte .LASF889 + .4byte .LASF888 .byte 0x3 .byte 0 .uleb128 0x3 - .4byte .LASF890 + .4byte .LASF889 .byte 0x4 - .byte 0x25 + .byte 0x24 .byte 0x3 .4byte 0x139 .uleb128 0xd - .4byte .LASF897 + .4byte .LASF896 .byte 0x1 .byte 0xd .byte 0x6 @@ -386,7 +386,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x7 - .4byte .LASF893 + .4byte .LASF892 .byte 0xe .4byte 0x1b3 .uleb128 0x2 @@ -396,12 +396,12 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x2 - .4byte .LASF891 + .4byte .LASF890 .uleb128 0xe .byte 0x4 .4byte 0xbd .uleb128 0xf - .4byte .LASF898 + .4byte .LASF897 .byte 0x1 .byte 0x6 .byte 0x6 @@ -418,7 +418,7 @@ gpio_write: .byte 0x91 .sleb128 -18 .uleb128 0x10 - .4byte .LASF892 + .4byte .LASF891 .byte 0x1 .byte 0x6 .byte 0x2c @@ -427,7 +427,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x7 - .4byte .LASF893 + .4byte .LASF892 .byte 0x7 .4byte 0x1b3 .uleb128 0x2 @@ -3525,7 +3525,7 @@ gpio_write: .uleb128 0x32 .4byte .LASF854 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.d78c96d470f4347bf35ed0e3d72ef81e,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.ca8518d3facb6a329deaeb59004fd0a1,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -3542,17 +3542,14 @@ gpio_write: .uleb128 0x16 .4byte .LASF858 .byte 0x5 - .uleb128 0x18 + .uleb128 0x19 .4byte .LASF859 .byte 0x5 - .uleb128 0x1a + .uleb128 0x1b .4byte .LASF860 .byte 0x5 - .uleb128 0x1c + .uleb128 0x1d .4byte .LASF861 - .byte 0x5 - .uleb128 0x1e - .4byte .LASF862 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3597,7 +3594,7 @@ gpio_write: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF541: .ascii "_LONG_DOUBLE long double\000" -.LASF893: +.LASF892: .ascii "gpio\000" .LASF591: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -3605,7 +3602,7 @@ gpio_write: .ascii "_UINT32_T_DECLARED \000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF888: +.LASF887: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -3719,7 +3716,7 @@ gpio_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF894: +.LASF893: .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" @@ -3840,7 +3837,7 @@ gpio_write: .ascii "PRId64 __PRI64(d)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF867: +.LASF866: .ascii "long int\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" @@ -3936,7 +3933,7 @@ gpio_write: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF886: +.LASF885: .ascii "GPIO_MODE_INPUT\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -3946,7 +3943,7 @@ gpio_write: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF562: .ascii "_UINT8_T_DECLARED \000" -.LASF863: +.LASF862: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -3958,7 +3955,7 @@ gpio_write: .ascii "__ARM_FEATURE_FMA 1\000" .LASF364: .ascii "__GNUC_STDC_INLINE__ 1\000" -.LASF890: +.LASF889: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -3982,7 +3979,7 @@ gpio_write: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF65: .ascii "__UINT_FAST32_TYPE__ unsigned int\000" -.LASF864: +.LASF863: .ascii "unsigned char\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" @@ -4030,13 +4027,13 @@ gpio_write: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF875: +.LASF874: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF891: +.LASF890: .ascii "_Bool\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" @@ -4054,7 +4051,7 @@ gpio_write: .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF887: +.LASF886: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4092,7 +4089,7 @@ gpio_write: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF868: +.LASF867: .ascii "__uint16_t\000" .LASF224: .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" @@ -4120,8 +4117,6 @@ gpio_write: .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" .LASF601: .ascii "INT32_MAX (__INT32_MAX__)\000" -.LASF859: - .ascii "BIT(x) (1 << x)\000" .LASF469: .ascii "_MB_LEN_MAX 8\000" .LASF69: @@ -4150,7 +4145,7 @@ gpio_write: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF376: .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" -.LASF860: +.LASF859: .ascii "PIN(port,num) ((((port) - 'A') << 8) | num)\000" .LASF806: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" @@ -4306,7 +4301,7 @@ gpio_write: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF870: +.LASF869: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4322,7 +4317,7 @@ gpio_write: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF897: +.LASF896: .ascii "gpio_write\000" .LASF569: .ascii "__int32_t_defined 1\000" @@ -4366,7 +4361,7 @@ gpio_write: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF898: +.LASF897: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -4386,7 +4381,7 @@ gpio_write: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF877: +.LASF876: .ascii "uintptr_t\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4434,7 +4429,7 @@ gpio_write: .ascii "PRIX32 __PRI32(X)\000" .LASF773: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF880: +.LASF879: .ascii "OSPEEDR\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" @@ -4464,7 +4459,7 @@ gpio_write: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF869: +.LASF868: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4474,7 +4469,7 @@ gpio_write: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF871: +.LASF870: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4579,7 +4574,7 @@ gpio_write: .ascii "\000" .LASF582: .ascii "__int_fast16_t_defined 1\000" -.LASF878: +.LASF877: .ascii "MODER\000" .LASF482: .ascii "__FLOAT_TYPE float\000" @@ -4590,9 +4585,9 @@ gpio_write: .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF874: - .ascii "unsigned int\000" .LASF873: + .ascii "unsigned int\000" +.LASF872: .ascii "__uintptr_t\000" .LASF459: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4624,7 +4619,7 @@ gpio_write: .ascii "__CHAR_BIT__ 8\000" .LASF143: .ascii "__FLT_EVAL_METHOD__ 0\000" -.LASF865: +.LASF864: .ascii "short int\000" .LASF685: .ascii "PRIdLEAST8 __PRI8LEAST(d)\000" @@ -4762,7 +4757,7 @@ gpio_write: .ascii "SCNuFAST16 __SCN16FAST(u)\000" .LASF801: .ascii "SCNx64 __SCN64(x)\000" -.LASF862: +.LASF861: .ascii "PINPORT(pin) (pin >> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" @@ -4810,7 +4805,7 @@ gpio_write: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF872: +.LASF871: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -4888,11 +4883,11 @@ gpio_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF576: .ascii "_UINTPTR_T_DECLARED \000" -.LASF885: +.LASF884: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF884: +.LASF883: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -4906,7 +4901,7 @@ gpio_write: .ascii "__INT32_TYPE__ long int\000" .LASF118: .ascii "__UINT_LEAST8_MAX__ 0xff\000" -.LASF883: +.LASF882: .ascii "LCKR\000" .LASF520: .ascii "__int20__ +2\000" @@ -4952,7 +4947,7 @@ gpio_write: .ascii "__QQ_IBIT__ 0\000" .LASF763: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF879: +.LASF878: .ascii "OTYPER\000" .LASF811: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -4972,7 +4967,7 @@ gpio_write: .ascii "__GNUC_MINOR__ 3\000" .LASF57: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" -.LASF895: +.LASF894: .ascii "src/gpio.c\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" @@ -5046,7 +5041,7 @@ gpio_write: .ascii "__ACCUM_IBIT__ 16\000" .LASF509: .ascii "unsigned\000" -.LASF881: +.LASF880: .ascii "PUPDR\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5056,7 +5051,7 @@ gpio_write: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" -.LASF892: +.LASF891: .ascii "mode\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5070,7 +5065,7 @@ gpio_write: .ascii "__UHQ_FBIT__ 16\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF889: +.LASF888: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5108,7 +5103,7 @@ gpio_write: .ascii "__FAST8 \000" .LASF496: .ascii "__XSI_VISIBLE 0\000" -.LASF882: +.LASF881: .ascii "BSRR\000" .LASF794: .ascii "PRIu64 __PRI64(u)\000" @@ -5196,7 +5191,7 @@ gpio_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF876: +.LASF875: .ascii "uint32_t\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5244,13 +5239,13 @@ gpio_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF326: .ascii "__QQ_FBIT__ 7\000" -.LASF861: +.LASF860: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF866: +.LASF865: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5298,7 +5293,7 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF896: +.LASF895: .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 e5588a3..8601f4c 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -2003,7 +2003,6 @@ struct gpio { #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) -#define BIT(x) (1 << x) #define PIN(port,num) ((((port) - 'A') << 8) | num) @@ -2020,9 +2019,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 40 "src/gpio.h" 3 4 +# 39 "src/gpio.h" 3 4 _Bool -# 40 "src/gpio.h" +# 39 "src/gpio.h" val); # 5 "src/gpio.c" 2 diff --git a/build/gpio.o b/build/gpio.o index 6fcc9010e5320fc9e738f8d055f1e154ee32cfa4..c02e7ce305bc89b98f8db677db92d2e225480f79 100644 GIT binary patch delta 5923 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 D&A`$Z diff --git a/build/main.S b/build/main.S index 323a419..97dea73 100644 --- a/build/main.S +++ b/build/main.S @@ -352,10 +352,10 @@ main: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0xd - .4byte .LASF1002 + .4byte .LASF1001 .byte 0x1d + .4byte .LASF1002 .4byte .LASF1003 - .4byte .LASF1004 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -363,17 +363,17 @@ main: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF936 + .4byte .LASF935 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF937 + .4byte .LASF936 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF938 + .4byte .LASF937 .uleb128 0x4 - .4byte .LASF941 + .4byte .LASF940 .byte 0x2 .byte 0x39 .byte 0x1c @@ -381,13 +381,13 @@ main: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF939 + .4byte .LASF938 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF940 + .4byte .LASF939 .uleb128 0x4 - .4byte .LASF942 + .4byte .LASF941 .byte 0x2 .byte 0x4f .byte 0x1b @@ -395,15 +395,15 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF943 + .4byte .LASF942 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF944 + .4byte .LASF943 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF945 + .4byte .LASF944 .uleb128 0xe .byte 0x4 .byte 0x5 @@ -411,15 +411,15 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF946 + .4byte .LASF945 .uleb128 0x4 - .4byte .LASF947 + .4byte .LASF946 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF948 + .4byte .LASF947 .byte 0x3 .byte 0x30 .byte 0x14 @@ -438,13 +438,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF949 + .4byte .LASF948 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF950 + .4byte .LASF949 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -456,115 +456,115 @@ main: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF951 + .4byte .LASF950 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF952 + .4byte .LASF951 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF952 .byte 0x4 .byte 0xd .4byte 0x210 .byte 0x18 .uleb128 0x1 - .4byte .LASF954 + .4byte .LASF953 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF955 + .4byte .LASF954 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF956 + .4byte .LASF955 .byte 0x4 .byte 0x10 .4byte 0x210 .byte 0x28 .uleb128 0x1 - .4byte .LASF957 + .4byte .LASF956 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF958 + .4byte .LASF957 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF959 + .4byte .LASF958 .byte 0x4 .byte 0x13 .4byte 0x210 .byte 0x38 .uleb128 0x1 - .4byte .LASF960 + .4byte .LASF959 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF961 + .4byte .LASF960 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF962 + .4byte .LASF961 .byte 0x4 .byte 0x16 .4byte 0x210 .byte 0x48 .uleb128 0x1 - .4byte .LASF963 + .4byte .LASF962 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF964 + .4byte .LASF963 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF965 + .4byte .LASF964 .byte 0x4 .byte 0x19 .4byte 0x210 .byte 0x58 .uleb128 0x1 - .4byte .LASF966 + .4byte .LASF965 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF967 + .4byte .LASF966 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF968 + .4byte .LASF967 .byte 0x4 .byte 0x1c .4byte 0x210 .byte 0x68 .uleb128 0x1 - .4byte .LASF969 + .4byte .LASF968 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -576,25 +576,25 @@ main: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF970 + .4byte .LASF969 .byte 0x4 .byte 0x1f .4byte 0x210 .byte 0x78 .uleb128 0x1 - .4byte .LASF971 + .4byte .LASF970 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF972 + .4byte .LASF971 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF973 + .4byte .LASF972 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -614,30 +614,30 @@ main: .byte 0x1 .4byte 0x31 .byte 0x5 - .byte 0x20 + .byte 0x1f .byte 0xe .4byte 0x23c .uleb128 0x5 - .4byte .LASF974 + .4byte .LASF973 .byte 0 .uleb128 0x5 - .4byte .LASF975 + .4byte .LASF974 .byte 0x1 .uleb128 0x5 - .4byte .LASF976 + .4byte .LASF975 .byte 0x2 .uleb128 0x5 - .4byte .LASF977 + .4byte .LASF976 .byte 0x3 .byte 0 .uleb128 0x4 - .4byte .LASF978 + .4byte .LASF977 .byte 0x5 - .byte 0x25 + .byte 0x24 .byte 0x3 .4byte 0x215 .uleb128 0x9 - .4byte .LASF979 + .4byte .LASF978 .byte 0x18 .byte 0x6 .4byte 0x29a @@ -648,13 +648,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF980 + .4byte .LASF979 .byte 0x6 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF981 + .4byte .LASF980 .byte 0x6 .byte 0x9 .4byte 0xa0 @@ -672,7 +672,7 @@ main: .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF982 + .4byte .LASF981 .byte 0x6 .byte 0xc .4byte 0xa0 @@ -697,7 +697,7 @@ main: .byte 0x4 .byte 0 .uleb128 0x9 - .4byte .LASF983 + .4byte .LASF982 .byte 0x50 .byte 0x8 .4byte 0x3b8 @@ -714,13 +714,13 @@ main: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF984 + .4byte .LASF983 .byte 0x8 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF985 + .4byte .LASF984 .byte 0x8 .byte 0xa .4byte 0xa0 @@ -738,19 +738,19 @@ main: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF986 + .4byte .LASF985 .byte 0x8 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF987 + .4byte .LASF986 .byte 0x8 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF988 + .4byte .LASF987 .byte 0x8 .byte 0xf .4byte 0xa0 @@ -780,31 +780,31 @@ main: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF989 + .4byte .LASF988 .byte 0x8 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF990 + .4byte .LASF989 .byte 0x8 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF991 + .4byte .LASF990 .byte 0x8 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF992 + .4byte .LASF991 .byte 0x8 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF993 + .4byte .LASF992 .byte 0x8 .byte 0x18 .4byte 0xa0 @@ -816,15 +816,15 @@ main: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF994 + .4byte .LASF993 .byte 0x8 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 .uleb128 0xa - .4byte .LASF996 - .byte 0x28 + .4byte .LASF995 + .byte 0x27 .4byte 0x3cd .uleb128 0x6 .4byte 0x88 @@ -834,10 +834,10 @@ main: .uleb128 0x3 .byte 0x1 .byte 0x2 - .4byte .LASF995 + .4byte .LASF994 .uleb128 0xa - .4byte .LASF997 - .byte 0x27 + .4byte .LASF996 + .byte 0x26 .4byte 0x3e9 .uleb128 0x6 .4byte 0x88 @@ -845,13 +845,13 @@ main: .4byte 0x23c .byte 0 .uleb128 0xb - .4byte .LASF998 + .4byte .LASF997 .byte 0x24 .uleb128 0xb - .4byte .LASF999 + .4byte .LASF998 .byte 0x23 .uleb128 0x12 - .4byte .LASF1005 + .4byte .LASF1004 .byte 0x1 .byte 0x4b .byte 0x5 @@ -871,7 +871,7 @@ main: .byte 0x91 .sleb128 -14 .uleb128 0xc - .4byte .LASF1000 + .4byte .LASF999 .byte 0x55 .byte 0xc .4byte 0x88 @@ -879,7 +879,7 @@ main: .byte 0x91 .sleb128 -10 .uleb128 0xc - .4byte .LASF1001 + .4byte .LASF1000 .byte 0x56 .byte 0x7 .4byte 0x3cd @@ -888,7 +888,7 @@ main: .sleb128 -11 .byte 0 .uleb128 0x14 - .4byte .LASF1006 + .4byte .LASF1005 .byte 0x1 .byte 0xc .byte 0xd @@ -2768,7 +2768,7 @@ main: .byte 0x4 .byte 0x5 .uleb128 0xa - .4byte .LASF935 + .4byte .LASF934 .byte 0x4 .byte 0 .section .debug_macro,"G",%progbits,wm4._newlib_version.h.4.6d111ab2e95434b664b53815e5c8ccba,comdat @@ -4200,7 +4200,7 @@ main: .uleb128 0x7a .4byte .LASF903 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.d78c96d470f4347bf35ed0e3d72ef81e,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.ca8518d3facb6a329deaeb59004fd0a1,comdat .Ldebug_macro16: .2byte 0x5 .byte 0 @@ -4217,17 +4217,14 @@ main: .uleb128 0x16 .4byte .LASF907 .byte 0x5 - .uleb128 0x18 + .uleb128 0x19 .4byte .LASF908 .byte 0x5 - .uleb128 0x1a + .uleb128 0x1b .4byte .LASF909 .byte 0x5 - .uleb128 0x1c + .uleb128 0x1d .4byte .LASF910 - .byte 0x5 - .uleb128 0x1e - .4byte .LASF911 .byte 0 .section .debug_macro,"G",%progbits,wm4.flash.h.2.51d6f0499046dca8c8d7cee08875e55f,comdat .Ldebug_macro17: @@ -4235,37 +4232,37 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF912 + .4byte .LASF911 .byte 0x5 .uleb128 0xf - .4byte .LASF913 + .4byte .LASF912 .byte 0x5 .uleb128 0x10 - .4byte .LASF914 + .4byte .LASF913 .byte 0x5 .uleb128 0x14 - .4byte .LASF915 + .4byte .LASF914 .byte 0x5 .uleb128 0x15 - .4byte .LASF916 + .4byte .LASF915 .byte 0x5 .uleb128 0x18 - .4byte .LASF917 + .4byte .LASF916 .byte 0x5 .uleb128 0x19 - .4byte .LASF918 + .4byte .LASF917 .byte 0x5 .uleb128 0x1c - .4byte .LASF919 + .4byte .LASF918 .byte 0x5 .uleb128 0x1e - .4byte .LASF920 + .4byte .LASF919 .byte 0x5 .uleb128 0x1f - .4byte .LASF921 + .4byte .LASF920 .byte 0x5 .uleb128 0x20 - .4byte .LASF922 + .4byte .LASF921 .byte 0 .section .debug_macro,"G",%progbits,wm4.pwr.h.2.b22d01f8fafa27268c4600cc8f787804,comdat .Ldebug_macro18: @@ -4273,25 +4270,25 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF923 + .4byte .LASF922 .byte 0x5 .uleb128 0xb - .4byte .LASF924 + .4byte .LASF923 .byte 0x5 .uleb128 0xc - .4byte .LASF925 + .4byte .LASF924 .byte 0x5 .uleb128 0xf - .4byte .LASF926 + .4byte .LASF925 .byte 0x5 .uleb128 0x12 - .4byte .LASF927 + .4byte .LASF926 .byte 0x5 .uleb128 0x13 - .4byte .LASF928 + .4byte .LASF927 .byte 0x5 .uleb128 0x14 - .4byte .LASF929 + .4byte .LASF928 .byte 0 .section .debug_macro,"G",%progbits,wm4.timer.h.2.2e929ede818fb0960868f1b0a08a1cbf,comdat .Ldebug_macro19: @@ -4299,19 +4296,19 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF930 + .4byte .LASF929 .byte 0x5 .uleb128 0x1d - .4byte .LASF931 + .4byte .LASF930 .byte 0x5 .uleb128 0x1e - .4byte .LASF932 + .4byte .LASF931 .byte 0x5 .uleb128 0x20 - .4byte .LASF933 + .4byte .LASF932 .byte 0x5 .uleb128 0x21 - .4byte .LASF934 + .4byte .LASF933 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -4328,7 +4325,7 @@ main: .ascii "__UHA_FBIT__ 8\000" .LASF814: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF937: +.LASF936: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -4358,7 +4355,7 @@ main: .ascii "__WINT_MIN__ 0U\000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF976: +.LASF975: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -4384,7 +4381,7 @@ main: .ascii "__FRACT_MIN__ (-0.5R-0.5R)\000" .LASF324: .ascii "__ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK\000" -.LASF979: +.LASF978: .ascii "flash\000" .LASF294: .ascii "__USACCUM_MAX__ 0XFFFFP-8UHK\000" @@ -4459,9 +4456,9 @@ main: .ascii "_LDBL_EQ_DBL 1\000" .LASF675: .ascii "PRIi8 __PRI8(i)\000" -.LASF918: +.LASF917: .ascii "FLASH_ACR_ICEN_ENABLE (1 <> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" @@ -5699,13 +5694,13 @@ main: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF733: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF954: +.LASF953: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF960: +.LASF959: .ascii "APB1ENR\000" .LASF741: .ascii "SCNdFAST16 __SCN16FAST(d)\000" @@ -5735,7 +5730,7 @@ main: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF945: +.LASF944: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -5782,11 +5777,11 @@ main: .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" -.LASF926: +.LASF925: .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" -.LASF988: +.LASF987: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" @@ -5844,15 +5839,15 @@ main: .ascii "__int20__ +2\000" .LASF654: .ascii "_WCHAR_T_ \000" -.LASF984: +.LASF983: .ascii "SMCR\000" .LASF828: .ascii "PRIoMAX __PRIMAX(o)\000" .LASF747: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" -.LASF921: +.LASF920: .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" -.LASF974: +.LASF973: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" @@ -5918,7 +5913,7 @@ main: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF957: +.LASF956: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5958,7 +5953,7 @@ main: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF952: +.LASF951: .ascii "AHB2RSTR\000" .LASF671: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" @@ -5982,13 +5977,13 @@ main: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: .ascii "__ARM_FEATURE_CDE\000" -.LASF980: +.LASF979: .ascii "KEYR\000" .LASF509: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF938: +.LASF937: .ascii "short int\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -6012,11 +6007,11 @@ main: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF977: +.LASF976: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF932: +.LASF931: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" @@ -6024,7 +6019,7 @@ main: .ascii "UINT64_MAX (__UINT64_MAX__)\000" .LASF471: .ascii "_RETARGETABLE_LOCKING 1\000" -.LASF915: +.LASF914: .ascii "FLASH_ACR_DCEN_BIT 10\000" .LASF453: .ascii "__USES_INITFINI__ 1\000" @@ -6096,11 +6091,11 @@ main: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF701: .ascii "PRIXFAST8 __PRI8FAST(X)\000" -.LASF1001: +.LASF1000: .ascii "led_on\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" -.LASF1003: +.LASF1002: .ascii "src/main.c\000" .LASF126: .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" @@ -6138,13 +6133,13 @@ main: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF651: .ascii "_T_WCHAR_ \000" -.LASF993: +.LASF992: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF664: .ascii "_BSD_WCHAR_T_\000" -.LASF972: +.LASF971: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -6152,9 +6147,9 @@ main: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF756: .ascii "PRIx32 __PRI32(x)\000" -.LASF999: +.LASF998: .ascii "tim4_init\000" -.LASF948: +.LASF947: .ascii "uint32_t\000" .LASF878: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -6162,13 +6157,13 @@ main: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" .LASF506: .ascii "_SYS__INTSUP_H \000" -.LASF982: +.LASF981: .ascii "OPTCR\000" .LASF290: .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" .LASF415: .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" -.LASF913: +.LASF912: .ascii "FLASH_BASE_ADDR (0x40023C00U)\000" .LASF745: .ascii "SCNxFAST16 __SCN16FAST(x)\000" @@ -6214,13 +6209,13 @@ main: .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF910: +.LASF909: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF939: +.LASF938: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6247,7 +6242,7 @@ main: .ascii "__SIZE_MAX__ 0xffffffffU\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" -.LASF912: +.LASF911: .ascii "FLASH_H_ \000" .LASF412: .ascii "__ARM_ARCH\000" @@ -6265,7 +6260,7 @@ main: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF522: .ascii "long +4\000" -.LASF951: +.LASF950: .ascii "AHB1RSTR\000" .LASF723: .ascii "SCNx16 __SCN16(x)\000" @@ -6275,7 +6270,7 @@ main: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF1004: +.LASF1003: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF796: .ascii "PRIX64 __PRI64(X)\000" @@ -6339,7 +6334,7 @@ main: .ascii "__INT_LEAST64_TYPE__ long long int\000" .LASF103: .ascii "__UINT16_MAX__ 0xffff\000" -.LASF924: +.LASF923: .ascii "PWR_BASE_ADDR (0x40007000U)\000" .LASF446: .ascii "__ARM_FEATURE_CDE_COPROC\000" diff --git a/build/main.i b/build/main.i index 6e92124..8d199f6 100644 --- a/build/main.i +++ b/build/main.i @@ -2127,7 +2127,6 @@ struct gpio { #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) -#define BIT(x) (1 << x) #define PIN(port,num) ((((port) - 'A') << 8) | num) @@ -2144,9 +2143,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 40 "src/gpio.h" 3 4 +# 39 "src/gpio.h" 3 4 _Bool -# 40 "src/gpio.h" +# 39 "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 e3ccc40ad397b8def0206d30f3931f0517f28c48..3cf9db8751e687e08f043681ca243941e9f72c99 100644 GIT binary patch delta 6547 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 delta 6587 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 |= BIT(PINPORT(led)); // Enable GPIO clock for LED + RCC->AHB1ENR |= (1 << PINPORT(led)); // Enable GPIO clock for LED gpio_set_mode(led, GPIO_MODE_OUTPUT); // Set blue LED to output mode uint16_t counter = TIM4->CNT; -- 2.51.0 From 2a1e3a41dab989abb80662a79acaf215ccc89c9b Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:19:50 +0100 Subject: [PATCH 10/17] Fix `gpio_set_mode` masking --- build/final.elf | Bin 55028 -> 55028 bytes build/gpio.S | 10 +++++----- build/gpio.i | 4 ++-- build/gpio.o | Bin 42252 -> 42252 bytes src/gpio.c | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/build/final.elf b/build/final.elf index 933203eea664e6c1e395aa953781e7fb8d58e74a..e72a153aacc5ac8c29265488c6b6c9d9f949c7d1 100755 GIT binary patch delta 44 zcmeyemifzC<_#wV8JRbq6g=cFrl7|vsmCg0!^*F~%5KXlp~tFj!>X`(VPbG807bqG ANdN!< delta 44 zcmeyemifzC<_#wV83i|=6g=cFrliLzt;Z^4!^*F~%5KXlp~tFW!>YJ>VPbG807wrE AT>t<8 diff --git a/build/gpio.S b/build/gpio.S index 9af46bc..0b828f1 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -61,11 +61,11 @@ gpio_set_mode: .loc 1 9 7 ldr r3, [r7, #12] ldr r3, [r3] - .loc 1 9 34 + .loc 1 9 32 ldr r2, [r7, #8] lsls r2, r2, #1 - .loc 1 9 27 - movs r1, #17 + .loc 1 9 25 + movs r1, #3 lsl r2, r1, r2 .loc 1 9 18 mvns r2, r2 @@ -79,10 +79,10 @@ gpio_set_mode: .loc 1 10 24 ldrb r2, [r7, #5] @ zero_extendqisi2 and r1, r2, #3 - .loc 1 10 40 + .loc 1 10 39 ldr r2, [r7, #8] lsls r2, r2, #1 - .loc 1 10 33 + .loc 1 10 32 lsl r2, r1, r2 .loc 1 10 15 orrs r2, r2, r3 diff --git a/build/gpio.i b/build/gpio.i index 8601f4c..348afd2 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -2028,8 +2028,8 @@ void gpio_write(uint16_t pin, void gpio_set_mode(uint16_t pin, GPIO_MODE mode) { struct gpio *gpio = ((struct gpio*)(uintptr_t)((0x40020000U) + ((0x400U) * (pin >> 8)))); int pn = (pin & 0b1111); - gpio->MODER &= ~(0x0011 << (pn * 2)); - gpio->MODER |= (mode & 0b011) << (pn * 2); + gpio->MODER &= ~(0b11 << (pn * 2)); + gpio->MODER |= (mode & 0b11) << (pn * 2); } void gpio_write(uint16_t pin, diff --git a/build/gpio.o b/build/gpio.o index c02e7ce305bc89b98f8db677db92d2e225480f79..3483ab30e4fcccecb037b8edf334d7dd19e928c3 100644 GIT binary patch delta 44 zcmeA<#nf|(X#)=R delta 44 zcmeA<#nf|(X#)=MODER &= ~(0x0011 << (pn * 2)); // Clear existing setting. Each pin uses 2 bits - gpio->MODER |= (mode & 0b011) << (pn * 2); // Set new mode. Each pin uses 2 bits + gpio->MODER &= ~(0b11 << (pn * 2)); // Clear existing setting. Each pin uses 2 bits + gpio->MODER |= (mode & 0b11) << (pn * 2); // Set new mode. Each pin uses 2 bits } void gpio_write(uint16_t pin, bool val) { -- 2.51.0 From 3f95f00852a85576312bf7390544f7291de25872 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:22:09 +0100 Subject: [PATCH 11/17] Add `PORT` macro And use it in the `PIN` macro --- build/final.elf | Bin 55028 -> 55056 bytes build/final.elf.map | 40 ++--- build/gpio.S | 169 +++++++++--------- build/gpio.i | 8 +- build/gpio.o | Bin 42252 -> 42288 bytes build/main.S | 411 ++++++++++++++++++++++---------------------- build/main.i | 8 +- build/main.o | Bin 48544 -> 48580 bytes src/gpio.h | 4 +- 9 files changed, 328 insertions(+), 312 deletions(-) diff --git a/build/final.elf b/build/final.elf index e72a153aacc5ac8c29265488c6b6c9d9f949c7d1..b9785a129d8f271da41924eecd43cf9001d5c69e 100755 GIT binary patch delta 16382 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 Rn7r+p8mrG`28PohWdJ139IXHV delta 16282 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 diff --git a/build/final.elf.map b/build/final.elf.map index 97283df..5718856 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -52,7 +52,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 0x2e build/main.o + .debug_macro 0x00000000 0x34 build/main.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o @@ -294,7 +294,7 @@ LOAD linker stubs .debug_rnglists 0x00000053 0x19 build/timer.o -.debug_macro 0x00000000 0x3b9a +.debug_macro 0x00000000 0x3ba0 .debug_macro 0x00000000 0xb56 build/gpio.o .debug_macro 0x00000b56 0x22 build/gpio.o .debug_macro 0x00000b78 0x75 build/gpio.o @@ -309,17 +309,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 0x2e build/gpio.o - .debug_macro 0x00001631 0xb80 build/main.o - .debug_macro 0x000021b1 0x12a build/main.o - .debug_macro 0x000022db 0x46 build/main.o - .debug_macro 0x00002321 0x2e build/main.o - .debug_macro 0x0000234f 0x22 build/main.o - .debug_macro 0x00002371 0xb02 build/startup.o - .debug_macro 0x00002e73 0x56 build/startup.o - .debug_macro 0x00002ec9 0x51 build/startup.o - .debug_macro 0x00002f1a 0xb5c build/timer.o - .debug_macro 0x00003a76 0x124 build/timer.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_line 0x00000000 0x4b3 .debug_line 0x00000000 0x116 build/gpio.o @@ -327,14 +327,14 @@ LOAD linker stubs .debug_line 0x000002ea 0xea build/startup.o .debug_line 0x000003d4 0xdf build/timer.o -.debug_str 0x00000000 0x5ea4 - .debug_str 0x00000000 0x535f build/gpio.o - 0x5507 (size before relaxing) - .debug_str 0x0000535f 0xab1 build/main.o - 0x5f68 (size before relaxing) - .debug_str 0x00005e10 0x88 build/startup.o +.debug_str 0x00000000 0x5eba + .debug_str 0x00000000 0x5375 build/gpio.o + 0x551d (size before relaxing) + .debug_str 0x00005375 0xab1 build/main.o + 0x5f7e (size before relaxing) + .debug_str 0x00005e26 0x88 build/startup.o 0x3cdc (size before relaxing) - .debug_str 0x00005e98 0xc build/timer.o + .debug_str 0x00005eae 0xc build/timer.o 0x5b16 (size before relaxing) .comment 0x00000000 0x45 diff --git a/build/gpio.S b/build/gpio.S index 0b828f1..499cfd0 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -188,10 +188,10 @@ gpio_write: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x8 - .4byte .LASF893 - .byte 0x1d .4byte .LASF894 + .byte 0x1d .4byte .LASF895 + .4byte .LASF896 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -199,17 +199,17 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x6 - .4byte .LASF862 + .4byte .LASF863 .uleb128 0x1 .byte 0x1 .byte 0x8 - .4byte .LASF863 + .4byte .LASF864 .uleb128 0x1 .byte 0x2 .byte 0x5 - .4byte .LASF864 + .4byte .LASF865 .uleb128 0x3 - .4byte .LASF867 + .4byte .LASF868 .byte 0x2 .byte 0x39 .byte 0x1c @@ -217,13 +217,13 @@ gpio_write: .uleb128 0x1 .byte 0x2 .byte 0x7 - .4byte .LASF865 + .4byte .LASF866 .uleb128 0x1 .byte 0x4 .byte 0x5 - .4byte .LASF866 + .4byte .LASF867 .uleb128 0x3 - .4byte .LASF868 + .4byte .LASF869 .byte 0x2 .byte 0x4f .byte 0x1b @@ -231,21 +231,21 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF869 - .uleb128 0x1 - .byte 0x8 - .byte 0x5 .4byte .LASF870 .uleb128 0x1 .byte 0x8 - .byte 0x7 + .byte 0x5 .4byte .LASF871 + .uleb128 0x1 + .byte 0x8 + .byte 0x7 + .4byte .LASF872 .uleb128 0x9 .byte 0x4 .byte 0x5 .ascii "int\000" .uleb128 0x3 - .4byte .LASF872 + .4byte .LASF873 .byte 0x2 .byte 0xe8 .byte 0x16 @@ -253,15 +253,15 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF873 - .uleb128 0x3 .4byte .LASF874 + .uleb128 0x3 + .4byte .LASF875 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x3 - .4byte .LASF875 + .4byte .LASF876 .byte 0x3 .byte 0x30 .byte 0x14 @@ -269,35 +269,35 @@ gpio_write: .uleb128 0xa .4byte 0xa0 .uleb128 0x3 - .4byte .LASF876 + .4byte .LASF877 .byte 0x3 .byte 0x52 .byte 0x15 .4byte 0x81 .uleb128 0xb - .4byte .LASF892 + .4byte .LASF893 .byte 0x28 .byte 0x4 .byte 0x7 .byte 0x8 .4byte 0x139 .uleb128 0x2 - .4byte .LASF877 + .4byte .LASF878 .byte 0x8 .4byte 0xac .byte 0 .uleb128 0x2 - .4byte .LASF878 + .4byte .LASF879 .byte 0x9 .4byte 0xac .byte 0x4 .uleb128 0x2 - .4byte .LASF879 + .4byte .LASF880 .byte 0xa .4byte 0xac .byte 0x8 .uleb128 0x2 - .4byte .LASF880 + .4byte .LASF881 .byte 0xb .4byte 0xac .byte 0xc @@ -312,22 +312,22 @@ gpio_write: .4byte 0xac .byte 0x14 .uleb128 0x2 - .4byte .LASF881 + .4byte .LASF882 .byte 0xe .4byte 0xac .byte 0x18 .uleb128 0x2 - .4byte .LASF882 + .4byte .LASF883 .byte 0xf .4byte 0xac .byte 0x1c .uleb128 0x2 - .4byte .LASF883 + .4byte .LASF884 .byte 0x10 .4byte 0xac .byte 0x20 .uleb128 0x2 - .4byte .LASF884 + .4byte .LASF885 .byte 0x11 .4byte 0xac .byte 0x24 @@ -337,30 +337,30 @@ gpio_write: .byte 0x1 .4byte 0x31 .byte 0x4 - .byte 0x1f + .byte 0x21 .byte 0xe .4byte 0x160 .uleb128 0x4 - .4byte .LASF885 + .4byte .LASF886 .byte 0 .uleb128 0x4 - .4byte .LASF886 + .4byte .LASF887 .byte 0x1 .uleb128 0x4 - .4byte .LASF887 + .4byte .LASF888 .byte 0x2 .uleb128 0x4 - .4byte .LASF888 + .4byte .LASF889 .byte 0x3 .byte 0 .uleb128 0x3 - .4byte .LASF889 + .4byte .LASF890 .byte 0x4 - .byte 0x24 + .byte 0x26 .byte 0x3 .4byte 0x139 .uleb128 0xd - .4byte .LASF896 + .4byte .LASF897 .byte 0x1 .byte 0xd .byte 0x6 @@ -386,7 +386,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x7 - .4byte .LASF892 + .4byte .LASF893 .byte 0xe .4byte 0x1b3 .uleb128 0x2 @@ -396,12 +396,12 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x2 - .4byte .LASF890 + .4byte .LASF891 .uleb128 0xe .byte 0x4 .4byte 0xbd .uleb128 0xf - .4byte .LASF897 + .4byte .LASF898 .byte 0x1 .byte 0x6 .byte 0x6 @@ -418,7 +418,7 @@ gpio_write: .byte 0x91 .sleb128 -18 .uleb128 0x10 - .4byte .LASF891 + .4byte .LASF892 .byte 0x1 .byte 0x6 .byte 0x2c @@ -427,7 +427,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x7 - .4byte .LASF892 + .4byte .LASF893 .byte 0x7 .4byte 0x1b3 .uleb128 0x2 @@ -3525,7 +3525,7 @@ gpio_write: .uleb128 0x32 .4byte .LASF854 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.ca8518d3facb6a329deaeb59004fd0a1,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.3af2911851c1c29c51024d0f06788d31,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -3550,6 +3550,9 @@ gpio_write: .byte 0x5 .uleb128 0x1d .4byte .LASF861 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF862 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3594,7 +3597,7 @@ gpio_write: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF541: .ascii "_LONG_DOUBLE long double\000" -.LASF892: +.LASF893: .ascii "gpio\000" .LASF591: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -3602,7 +3605,7 @@ gpio_write: .ascii "_UINT32_T_DECLARED \000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF887: +.LASF888: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -3716,7 +3719,7 @@ gpio_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF893: +.LASF894: .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" @@ -3837,7 +3840,7 @@ gpio_write: .ascii "PRId64 __PRI64(d)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF866: +.LASF867: .ascii "long int\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" @@ -3933,7 +3936,7 @@ gpio_write: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF885: +.LASF886: .ascii "GPIO_MODE_INPUT\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -3943,7 +3946,7 @@ gpio_write: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF562: .ascii "_UINT8_T_DECLARED \000" -.LASF862: +.LASF863: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -3955,7 +3958,7 @@ gpio_write: .ascii "__ARM_FEATURE_FMA 1\000" .LASF364: .ascii "__GNUC_STDC_INLINE__ 1\000" -.LASF889: +.LASF890: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -3979,7 +3982,7 @@ gpio_write: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF65: .ascii "__UINT_FAST32_TYPE__ unsigned int\000" -.LASF863: +.LASF864: .ascii "unsigned char\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" @@ -4027,13 +4030,13 @@ gpio_write: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF874: +.LASF875: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF890: +.LASF891: .ascii "_Bool\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" @@ -4051,7 +4054,9 @@ gpio_write: .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF886: +.LASF859: + .ascii "PORT(port) (((port) - 'A') << 8)\000" +.LASF887: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4089,7 +4094,7 @@ gpio_write: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF867: +.LASF868: .ascii "__uint16_t\000" .LASF224: .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" @@ -4145,8 +4150,6 @@ gpio_write: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF376: .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" -.LASF859: - .ascii "PIN(port,num) ((((port) - 'A') << 8) | num)\000" .LASF806: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" .LASF419: @@ -4301,7 +4304,7 @@ gpio_write: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF869: +.LASF870: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4317,7 +4320,7 @@ gpio_write: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF896: +.LASF897: .ascii "gpio_write\000" .LASF569: .ascii "__int32_t_defined 1\000" @@ -4361,7 +4364,7 @@ gpio_write: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF897: +.LASF898: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -4381,7 +4384,7 @@ gpio_write: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF876: +.LASF877: .ascii "uintptr_t\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4429,7 +4432,7 @@ gpio_write: .ascii "PRIX32 __PRI32(X)\000" .LASF773: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF879: +.LASF880: .ascii "OSPEEDR\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" @@ -4459,7 +4462,7 @@ gpio_write: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF868: +.LASF869: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4469,7 +4472,7 @@ gpio_write: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF870: +.LASF871: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4574,7 +4577,7 @@ gpio_write: .ascii "\000" .LASF582: .ascii "__int_fast16_t_defined 1\000" -.LASF877: +.LASF878: .ascii "MODER\000" .LASF482: .ascii "__FLOAT_TYPE float\000" @@ -4585,9 +4588,9 @@ gpio_write: .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF873: +.LASF874: .ascii "unsigned int\000" -.LASF872: +.LASF873: .ascii "__uintptr_t\000" .LASF459: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4619,7 +4622,7 @@ gpio_write: .ascii "__CHAR_BIT__ 8\000" .LASF143: .ascii "__FLT_EVAL_METHOD__ 0\000" -.LASF864: +.LASF865: .ascii "short int\000" .LASF685: .ascii "PRIdLEAST8 __PRI8LEAST(d)\000" @@ -4757,7 +4760,7 @@ gpio_write: .ascii "SCNuFAST16 __SCN16FAST(u)\000" .LASF801: .ascii "SCNx64 __SCN64(x)\000" -.LASF861: +.LASF862: .ascii "PINPORT(pin) (pin >> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" @@ -4805,7 +4808,7 @@ gpio_write: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF871: +.LASF872: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -4883,11 +4886,11 @@ gpio_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF576: .ascii "_UINTPTR_T_DECLARED \000" -.LASF884: +.LASF885: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF883: +.LASF884: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -4901,7 +4904,7 @@ gpio_write: .ascii "__INT32_TYPE__ long int\000" .LASF118: .ascii "__UINT_LEAST8_MAX__ 0xff\000" -.LASF882: +.LASF883: .ascii "LCKR\000" .LASF520: .ascii "__int20__ +2\000" @@ -4915,6 +4918,8 @@ gpio_write: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF860: + .ascii "PIN(port,num) (PORT(port) | num)\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -4947,7 +4952,7 @@ gpio_write: .ascii "__QQ_IBIT__ 0\000" .LASF763: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF878: +.LASF879: .ascii "OTYPER\000" .LASF811: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -4967,7 +4972,7 @@ gpio_write: .ascii "__GNUC_MINOR__ 3\000" .LASF57: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" -.LASF894: +.LASF895: .ascii "src/gpio.c\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" @@ -5041,7 +5046,7 @@ gpio_write: .ascii "__ACCUM_IBIT__ 16\000" .LASF509: .ascii "unsigned\000" -.LASF880: +.LASF881: .ascii "PUPDR\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5051,7 +5056,7 @@ gpio_write: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" -.LASF891: +.LASF892: .ascii "mode\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5065,7 +5070,7 @@ gpio_write: .ascii "__UHQ_FBIT__ 16\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF888: +.LASF889: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5103,7 +5108,7 @@ gpio_write: .ascii "__FAST8 \000" .LASF496: .ascii "__XSI_VISIBLE 0\000" -.LASF881: +.LASF882: .ascii "BSRR\000" .LASF794: .ascii "PRIu64 __PRI64(u)\000" @@ -5191,7 +5196,7 @@ gpio_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF875: +.LASF876: .ascii "uint32_t\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5239,13 +5244,13 @@ gpio_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF326: .ascii "__QQ_FBIT__ 7\000" -.LASF860: +.LASF861: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF865: +.LASF866: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5293,7 +5298,7 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF895: +.LASF896: .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 348afd2..bd007eb 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -2004,7 +2004,9 @@ struct gpio { #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) -#define PIN(port,num) ((((port) - 'A') << 8) | num) +#define PORT(port) (((port) - 'A') << 8) + +#define PIN(port,num) (PORT(port) | num) #define PINNUM(pin) (pin & 0b1111) @@ -2019,9 +2021,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 39 "src/gpio.h" 3 4 +# 41 "src/gpio.h" 3 4 _Bool -# 39 "src/gpio.h" +# 41 "src/gpio.h" val); # 5 "src/gpio.c" 2 diff --git a/build/gpio.o b/build/gpio.o index 3483ab30e4fcccecb037b8edf334d7dd19e928c3..59a40c38ef5bd5c7518dfee6594ea1f883da4751 100644 GIT binary patch delta 6063 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 YU82s|GkGbPJiA1lwPz*+12f1R0IS^HL;wH) delta 6064 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 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" @@ -5694,13 +5697,13 @@ main: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF733: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF953: +.LASF954: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF959: +.LASF960: .ascii "APB1ENR\000" .LASF741: .ascii "SCNdFAST16 __SCN16FAST(d)\000" @@ -5730,7 +5733,7 @@ main: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF944: +.LASF945: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -5777,11 +5780,11 @@ main: .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" -.LASF925: +.LASF926: .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" -.LASF987: +.LASF988: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" @@ -5839,18 +5842,20 @@ main: .ascii "__int20__ +2\000" .LASF654: .ascii "_WCHAR_T_ \000" -.LASF983: +.LASF984: .ascii "SMCR\000" .LASF828: .ascii "PRIoMAX __PRIMAX(o)\000" .LASF747: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" -.LASF920: +.LASF921: .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" -.LASF973: +.LASF974: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF909: + .ascii "PIN(port,num) (PORT(port) | num)\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -5913,7 +5918,7 @@ main: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF956: +.LASF957: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5953,7 +5958,7 @@ main: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF951: +.LASF952: .ascii "AHB2RSTR\000" .LASF671: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" @@ -5977,13 +5982,13 @@ main: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: .ascii "__ARM_FEATURE_CDE\000" -.LASF979: +.LASF980: .ascii "KEYR\000" .LASF509: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF937: +.LASF938: .ascii "short int\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -6007,11 +6012,11 @@ main: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF976: +.LASF977: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF931: +.LASF932: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" @@ -6019,7 +6024,7 @@ main: .ascii "UINT64_MAX (__UINT64_MAX__)\000" .LASF471: .ascii "_RETARGETABLE_LOCKING 1\000" -.LASF914: +.LASF915: .ascii "FLASH_ACR_DCEN_BIT 10\000" .LASF453: .ascii "__USES_INITFINI__ 1\000" @@ -6091,11 +6096,11 @@ main: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF701: .ascii "PRIXFAST8 __PRI8FAST(X)\000" -.LASF1000: +.LASF1001: .ascii "led_on\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" -.LASF1002: +.LASF1003: .ascii "src/main.c\000" .LASF126: .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" @@ -6133,13 +6138,13 @@ main: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF651: .ascii "_T_WCHAR_ \000" -.LASF992: +.LASF993: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF664: .ascii "_BSD_WCHAR_T_\000" -.LASF971: +.LASF972: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -6147,9 +6152,9 @@ main: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF756: .ascii "PRIx32 __PRI32(x)\000" -.LASF998: +.LASF999: .ascii "tim4_init\000" -.LASF947: +.LASF948: .ascii "uint32_t\000" .LASF878: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -6157,13 +6162,13 @@ main: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" .LASF506: .ascii "_SYS__INTSUP_H \000" -.LASF981: +.LASF982: .ascii "OPTCR\000" .LASF290: .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" .LASF415: .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" -.LASF912: +.LASF913: .ascii "FLASH_BASE_ADDR (0x40023C00U)\000" .LASF745: .ascii "SCNxFAST16 __SCN16FAST(x)\000" @@ -6209,13 +6214,13 @@ main: .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF909: +.LASF910: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF938: +.LASF939: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6242,7 +6247,7 @@ main: .ascii "__SIZE_MAX__ 0xffffffffU\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" -.LASF911: +.LASF912: .ascii "FLASH_H_ \000" .LASF412: .ascii "__ARM_ARCH\000" @@ -6260,7 +6265,7 @@ main: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF522: .ascii "long +4\000" -.LASF950: +.LASF951: .ascii "AHB1RSTR\000" .LASF723: .ascii "SCNx16 __SCN16(x)\000" @@ -6270,7 +6275,7 @@ main: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF1003: +.LASF1004: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF796: .ascii "PRIX64 __PRI64(X)\000" @@ -6334,7 +6339,7 @@ main: .ascii "__INT_LEAST64_TYPE__ long long int\000" .LASF103: .ascii "__UINT16_MAX__ 0xffff\000" -.LASF923: +.LASF924: .ascii "PWR_BASE_ADDR (0x40007000U)\000" .LASF446: .ascii "__ARM_FEATURE_CDE_COPROC\000" diff --git a/build/main.i b/build/main.i index 8d199f6..f00220b 100644 --- a/build/main.i +++ b/build/main.i @@ -2128,7 +2128,9 @@ struct gpio { #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) -#define PIN(port,num) ((((port) - 'A') << 8) | num) +#define PORT(port) (((port) - 'A') << 8) + +#define PIN(port,num) (PORT(port) | num) #define PINNUM(pin) (pin & 0b1111) @@ -2143,9 +2145,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 39 "src/gpio.h" 3 4 +# 41 "src/gpio.h" 3 4 _Bool -# 39 "src/gpio.h" +# 41 "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 3cf9db8751e687e08f043681ca243941e9f72c99..e3c37326480d10889f48acf64526565426730ab7 100644 GIT binary patch delta 7229 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 Date: Wed, 1 Jan 2025 12:23:18 +0100 Subject: [PATCH 12/17] Add `gpio_set_af` to set alternative function of a pin --- build/final.elf | Bin 55056 -> 55328 bytes build/final.elf.map | 74 ++--- build/gpio.S | 769 +++++++++++++++++++++++++++----------------- build/gpio.i | 21 +- build/gpio.o | Bin 42288 -> 42920 bytes build/main.S | 2 +- build/main.i | 5 +- build/main.o | Bin 48580 -> 48580 bytes src/gpio.c | 12 + src/gpio.h | 1 + 10 files changed, 549 insertions(+), 335 deletions(-) diff --git a/build/final.elf b/build/final.elf index b9785a129d8f271da41924eecd43cf9001d5c69e..4974603064a1839a673dbabdba1e2aa6d0587b2f 100755 GIT binary patch delta 18219 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 diff --git a/build/final.elf.map b/build/final.elf.map index 5718856..2a42ce1 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -18,6 +18,8 @@ Discarded input sections .text 0x00000000 0x0 build/gpio.o .data 0x00000000 0x0 build/gpio.o .bss 0x00000000 0x0 build/gpio.o + .text.gpio_set_af + 0x00000000 0x98 build/gpio.o .group 0x00000000 0xc build/main.o .group 0x00000000 0xc build/main.o .group 0x00000000 0xc build/main.o @@ -261,38 +263,38 @@ LOAD build/timer.o OUTPUT(build/final.elf elf32-littlearm) LOAD linker stubs -.debug_info 0x00000000 0xb10 - .debug_info 0x00000000 0x205 build/gpio.o - .debug_info 0x00000205 0x44e build/main.o - .debug_info 0x00000653 0x188 build/startup.o - .debug_info 0x000007db 0x335 build/timer.o +.debug_info 0x00000000 0xb6d + .debug_info 0x00000000 0x262 build/gpio.o + .debug_info 0x00000262 0x44e build/main.o + .debug_info 0x000006b0 0x188 build/startup.o + .debug_info 0x00000838 0x335 build/timer.o -.debug_abbrev 0x00000000 0x439 - .debug_abbrev 0x00000000 0x119 build/gpio.o - .debug_abbrev 0x00000119 0x144 build/main.o - .debug_abbrev 0x0000025d 0x127 build/startup.o - .debug_abbrev 0x00000384 0xb5 build/timer.o +.debug_abbrev 0x00000000 0x43d + .debug_abbrev 0x00000000 0x11d build/gpio.o + .debug_abbrev 0x0000011d 0x144 build/main.o + .debug_abbrev 0x00000261 0x127 build/startup.o + .debug_abbrev 0x00000388 0xb5 build/timer.o -.debug_aranges 0x00000000 0xa8 +.debug_aranges 0x00000000 0xb0 .debug_aranges - 0x00000000 0x28 build/gpio.o + 0x00000000 0x30 build/gpio.o .debug_aranges - 0x00000028 0x28 build/main.o + 0x00000030 0x28 build/main.o .debug_aranges - 0x00000050 0x30 build/startup.o + 0x00000058 0x30 build/startup.o .debug_aranges - 0x00000080 0x28 build/timer.o + 0x00000088 0x28 build/timer.o .debug_rnglists - 0x00000000 0x6c + 0x00000000 0x73 .debug_rnglists - 0x00000000 0x19 build/gpio.o + 0x00000000 0x20 build/gpio.o .debug_rnglists - 0x00000019 0x1b build/main.o + 0x00000020 0x1b build/main.o .debug_rnglists - 0x00000034 0x1f build/startup.o + 0x0000003b 0x1f build/startup.o .debug_rnglists - 0x00000053 0x19 build/timer.o + 0x0000005a 0x19 build/timer.o .debug_macro 0x00000000 0x3ba0 .debug_macro 0x00000000 0xb56 build/gpio.o @@ -321,20 +323,20 @@ LOAD linker stubs .debug_macro 0x00002f20 0xb5c build/timer.o .debug_macro 0x00003a7c 0x124 build/timer.o -.debug_line 0x00000000 0x4b3 - .debug_line 0x00000000 0x116 build/gpio.o - .debug_line 0x00000116 0x1d4 build/main.o - .debug_line 0x000002ea 0xea build/startup.o - .debug_line 0x000003d4 0xdf build/timer.o +.debug_line 0x00000000 0x516 + .debug_line 0x00000000 0x179 build/gpio.o + .debug_line 0x00000179 0x1d4 build/main.o + .debug_line 0x0000034d 0xea build/startup.o + .debug_line 0x00000437 0xdf build/timer.o -.debug_str 0x00000000 0x5eba - .debug_str 0x00000000 0x5375 build/gpio.o - 0x551d (size before relaxing) - .debug_str 0x00005375 0xab1 build/main.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 0x00005e26 0x88 build/startup.o + .debug_str 0x00005e3c 0x88 build/startup.o 0x3cdc (size before relaxing) - .debug_str 0x00005eae 0xc build/timer.o + .debug_str 0x00005ec4 0xc build/timer.o 0x5b16 (size before relaxing) .comment 0x00000000 0x45 @@ -370,8 +372,8 @@ LOAD linker stubs 0x00000278 0x8 build/timer.o 0x25b (size before relaxing) -.debug_frame 0x00000000 0x16c - .debug_frame 0x00000000 0x60 build/gpio.o - .debug_frame 0x00000060 0x50 build/main.o - .debug_frame 0x000000b0 0x6c build/startup.o - .debug_frame 0x0000011c 0x50 build/timer.o +.debug_frame 0x00000000 0x194 + .debug_frame 0x00000000 0x88 build/gpio.o + .debug_frame 0x00000088 0x50 build/main.o + .debug_frame 0x000000d8 0x6c build/startup.o + .debug_frame 0x00000144 0x50 build/timer.o diff --git a/build/gpio.S b/build/gpio.S index 499cfd0..9e89fa0 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -102,16 +102,16 @@ gpio_set_mode: .cfi_endproc .LFE0: .size gpio_set_mode, .-gpio_set_mode - .section .text.gpio_write,"ax",%progbits + .section .text.gpio_set_af,"ax",%progbits .align 1 - .global gpio_write + .global gpio_set_af .syntax unified .thumb .thumb_func - .type gpio_write, %function -gpio_write: + .type gpio_set_af, %function +gpio_set_af: .LFB1: - .loc 1 13 40 + .loc 1 13 44 .cfi_startproc @ args = 0, pretend = 0, frame = 16 @ frame_needed = 1, uses_anonymous_args = 0 @@ -138,30 +138,80 @@ gpio_write: lsls r3, r3, #10 .loc 1 14 16 str r3, [r7, #12] - .loc 1 15 32 + .loc 1 15 17 ldrh r3, [r7, #6] + .loc 1 15 7 and r3, r3, #15 - .loc 1 15 24 - movs r2, #3 - lsls r2, r2, r3 - .loc 1 15 55 - ldrb r3, [r7, #5] @ zero_extendqisi2 - cmp r3, #0 - beq .L3 - .loc 1 15 55 is_stmt 0 discriminator 1 - movs r3, #0 - b .L4 -.L3: - .loc 1 15 55 discriminator 2 - movs r3, #16 -.L4: - .loc 1 15 43 is_stmt 1 discriminator 4 - lsl r3, r2, r3 - mov r2, r3 - .loc 1 15 14 discriminator 4 + str r3, [r7, #8] + .loc 1 16 6 + ldr r3, [r7, #8] + cmp r3, #7 + bgt .L3 + .loc 1 17 6 ldr r3, [r7, #12] - str r2, [r3, #24] - .loc 1 16 1 discriminator 4 + ldr r3, [r3, #32] + .loc 1 17 32 + ldr r2, [r7, #8] + lsls r2, r2, #2 + .loc 1 17 25 + movs r1, #15 + lsl r2, r1, r2 + .loc 1 17 16 + mvns r2, r2 + .loc 1 17 13 + ands r2, r2, r3 + ldr r3, [r7, #12] + str r2, [r3, #32] + .loc 1 18 6 + ldr r3, [r7, #12] + ldr r3, [r3, #32] + .loc 1 18 20 + ldrb r2, [r7, #5] @ zero_extendqisi2 + and r1, r2, #15 + .loc 1 18 37 + ldr r2, [r7, #8] + lsls r2, r2, #2 + .loc 1 18 30 + lsl r2, r1, r2 + .loc 1 18 13 + orrs r2, r2, r3 + ldr r3, [r7, #12] + str r2, [r3, #32] + .loc 1 23 1 + b .L5 +.L3: + .loc 1 20 6 + ldr r3, [r7, #12] + ldr r3, [r3, #36] + .loc 1 20 32 + ldr r2, [r7, #8] + lsls r2, r2, #2 + .loc 1 20 25 + movs r1, #15 + lsl r2, r1, r2 + .loc 1 20 16 + mvns r2, r2 + .loc 1 20 13 + ands r2, r2, r3 + ldr r3, [r7, #12] + str r2, [r3, #36] + .loc 1 21 6 + ldr r3, [r7, #12] + ldr r3, [r3, #36] + .loc 1 21 20 + ldrb r2, [r7, #5] @ zero_extendqisi2 + and r1, r2, #15 + .loc 1 21 37 + ldr r2, [r7, #8] + lsls r2, r2, #2 + .loc 1 21 30 + lsl r2, r1, r2 + .loc 1 21 13 + orrs r2, r2, r3 + ldr r3, [r7, #12] + str r2, [r3, #36] +.L5: + .loc 1 23 1 nop adds r7, r7, #20 .cfi_def_cfa_offset 4 @@ -174,6 +224,79 @@ gpio_write: bx lr .cfi_endproc .LFE1: + .size gpio_set_af, .-gpio_set_af + .section .text.gpio_write,"ax",%progbits + .align 1 + .global gpio_write + .syntax unified + .thumb + .thumb_func + .type gpio_write, %function +gpio_write: +.LFB2: + .loc 1 25 40 + .cfi_startproc + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 1, uses_anonymous_args = 0 + @ link register save eliminated. + push {r7} + .cfi_def_cfa_offset 4 + .cfi_offset 7, -4 + sub sp, sp, #20 + .cfi_def_cfa_offset 24 + add r7, sp, #0 + .cfi_def_cfa_register 7 + mov r3, r0 + mov r2, r1 + strh r3, [r7, #6] @ movhi + mov r3, r2 + strb r3, [r7, #5] + .loc 1 26 83 + ldrh r3, [r7, #6] + lsrs r3, r3, #8 + uxth r3, r3 + .loc 1 26 38 + add r3, r3, #1048576 + adds r3, r3, #128 + lsls r3, r3, #10 + .loc 1 26 16 + str r3, [r7, #12] + .loc 1 27 32 + ldrh r3, [r7, #6] + and r3, r3, #15 + .loc 1 27 24 + movs r2, #3 + lsls r2, r2, r3 + .loc 1 27 55 + ldrb r3, [r7, #5] @ zero_extendqisi2 + cmp r3, #0 + beq .L7 + .loc 1 27 55 is_stmt 0 discriminator 1 + movs r3, #0 + b .L8 +.L7: + .loc 1 27 55 discriminator 2 + movs r3, #16 +.L8: + .loc 1 27 43 is_stmt 1 discriminator 4 + lsl r3, r2, r3 + mov r2, r3 + .loc 1 27 14 discriminator 4 + ldr r3, [r7, #12] + str r2, [r3, #24] + .loc 1 28 1 discriminator 4 + nop + adds r7, r7, #20 + .cfi_def_cfa_offset 4 + mov sp, r7 + .cfi_def_cfa_register 13 + @ sp needed + ldr r7, [sp], #4 + .cfi_restore 7 + .cfi_def_cfa_offset 0 + bx lr + .cfi_endproc +.LFE2: .size gpio_write, .-gpio_write .text .Letext0: @@ -182,16 +305,16 @@ gpio_write: .file 4 "src/gpio.h" .section .debug_info,"",%progbits .Ldebug_info0: - .4byte 0x201 + .4byte 0x25e .2byte 0x5 .byte 0x1 .byte 0x4 .4byte .Ldebug_abbrev0 - .uleb128 0x8 - .4byte .LASF894 + .uleb128 0xa + .4byte .LASF898 .byte 0x1d - .4byte .LASF895 - .4byte .LASF896 + .4byte .LASF899 + .4byte .LASF900 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -200,6 +323,12 @@ gpio_write: .byte 0x1 .byte 0x6 .4byte .LASF863 + .uleb128 0x2 + .4byte .LASF866 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x3d .uleb128 0x1 .byte 0x1 .byte 0x8 @@ -208,187 +337,191 @@ gpio_write: .byte 0x2 .byte 0x5 .4byte .LASF865 - .uleb128 0x3 - .4byte .LASF868 + .uleb128 0x2 + .4byte .LASF867 .byte 0x2 .byte 0x39 .byte 0x1c - .4byte 0x4b + .4byte 0x57 .uleb128 0x1 .byte 0x2 .byte 0x7 - .4byte .LASF866 + .4byte .LASF868 .uleb128 0x1 .byte 0x4 .byte 0x5 - .4byte .LASF867 - .uleb128 0x3 .4byte .LASF869 + .uleb128 0x2 + .4byte .LASF870 .byte 0x2 .byte 0x4f .byte 0x1b - .4byte 0x65 + .4byte 0x71 .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF870 - .uleb128 0x1 - .byte 0x8 - .byte 0x5 .4byte .LASF871 .uleb128 0x1 .byte 0x8 - .byte 0x7 + .byte 0x5 .4byte .LASF872 - .uleb128 0x9 + .uleb128 0x1 + .byte 0x8 + .byte 0x7 + .4byte .LASF873 + .uleb128 0xb .byte 0x4 .byte 0x5 .ascii "int\000" - .uleb128 0x3 - .4byte .LASF873 + .uleb128 0x2 + .4byte .LASF874 .byte 0x2 .byte 0xe8 .byte 0x16 - .4byte 0x8d + .4byte 0x99 .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF874 - .uleb128 0x3 .4byte .LASF875 + .uleb128 0x2 + .4byte .LASF876 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x31 + .uleb128 0x2 + .4byte .LASF877 .byte 0x3 .byte 0x24 .byte 0x14 - .4byte 0x3f - .uleb128 0x3 - .4byte .LASF876 + .4byte 0x4b + .uleb128 0x2 + .4byte .LASF878 .byte 0x3 .byte 0x30 .byte 0x14 - .4byte 0x59 - .uleb128 0xa - .4byte 0xa0 - .uleb128 0x3 - .4byte .LASF877 + .4byte 0x65 + .uleb128 0xc + .4byte 0xb8 + .uleb128 0x2 + .4byte .LASF879 .byte 0x3 .byte 0x52 .byte 0x15 - .4byte 0x81 - .uleb128 0xb - .4byte .LASF893 + .4byte 0x8d + .uleb128 0xd + .4byte .LASF896 .byte 0x28 .byte 0x4 .byte 0x7 .byte 0x8 - .4byte 0x139 - .uleb128 0x2 - .4byte .LASF878 - .byte 0x8 - .4byte 0xac - .byte 0 - .uleb128 0x2 - .4byte .LASF879 - .byte 0x9 - .4byte 0xac - .byte 0x4 - .uleb128 0x2 + .4byte 0x151 + .uleb128 0x3 .4byte .LASF880 - .byte 0xa - .4byte 0xac .byte 0x8 - .uleb128 0x2 + .4byte 0xc4 + .byte 0 + .uleb128 0x3 .4byte .LASF881 + .byte 0x9 + .4byte 0xc4 + .byte 0x4 + .uleb128 0x3 + .4byte .LASF882 + .byte 0xa + .4byte 0xc4 + .byte 0x8 + .uleb128 0x3 + .4byte .LASF883 .byte 0xb - .4byte 0xac + .4byte 0xc4 .byte 0xc - .uleb128 0x6 + .uleb128 0x7 .ascii "IDR\000" .byte 0xc - .4byte 0xac + .4byte 0xc4 .byte 0x10 - .uleb128 0x6 + .uleb128 0x7 .ascii "ODR\000" .byte 0xd - .4byte 0xac + .4byte 0xc4 .byte 0x14 - .uleb128 0x2 - .4byte .LASF882 - .byte 0xe - .4byte 0xac - .byte 0x18 - .uleb128 0x2 - .4byte .LASF883 - .byte 0xf - .4byte 0xac - .byte 0x1c - .uleb128 0x2 + .uleb128 0x3 .4byte .LASF884 - .byte 0x10 - .4byte 0xac - .byte 0x20 - .uleb128 0x2 + .byte 0xe + .4byte 0xc4 + .byte 0x18 + .uleb128 0x3 .4byte .LASF885 + .byte 0xf + .4byte 0xc4 + .byte 0x1c + .uleb128 0x3 + .4byte .LASF886 + .byte 0x10 + .4byte 0xc4 + .byte 0x20 + .uleb128 0x3 + .4byte .LASF887 .byte 0x11 - .4byte 0xac + .4byte 0xc4 .byte 0x24 .byte 0 - .uleb128 0xc + .uleb128 0xe .byte 0x7 .byte 0x1 - .4byte 0x31 + .4byte 0x3d .byte 0x4 .byte 0x21 .byte 0xe - .4byte 0x160 - .uleb128 0x4 - .4byte .LASF886 - .byte 0 - .uleb128 0x4 - .4byte .LASF887 - .byte 0x1 - .uleb128 0x4 + .4byte 0x178 + .uleb128 0x5 .4byte .LASF888 - .byte 0x2 - .uleb128 0x4 + .byte 0 + .uleb128 0x5 .4byte .LASF889 + .byte 0x1 + .uleb128 0x5 + .4byte .LASF890 + .byte 0x2 + .uleb128 0x5 + .4byte .LASF891 .byte 0x3 .byte 0 - .uleb128 0x3 - .4byte .LASF890 + .uleb128 0x2 + .4byte .LASF892 .byte 0x4 .byte 0x26 .byte 0x3 - .4byte 0x139 - .uleb128 0xd - .4byte .LASF897 - .byte 0x1 - .byte 0xd - .byte 0x6 - .4byte .LFB1 - .4byte .LFE1-.LFB1 + .4byte 0x151 + .uleb128 0x8 + .4byte .LASF894 + .byte 0x19 + .4byte .LFB2 + .4byte .LFE2-.LFB2 .uleb128 0x1 .byte 0x9c - .4byte 0x1ac - .uleb128 0x5 + .4byte 0x1c2 + .uleb128 0x4 .ascii "pin\000" - .byte 0xd + .byte 0x19 .byte 0x1a - .4byte 0x94 + .4byte 0xac .uleb128 0x2 .byte 0x91 .sleb128 -18 - .uleb128 0x5 + .uleb128 0x4 .ascii "val\000" - .byte 0xd + .byte 0x19 .byte 0x23 - .4byte 0x1ac + .4byte 0x1c2 .uleb128 0x2 .byte 0x91 .sleb128 -19 - .uleb128 0x7 - .4byte .LASF893 - .byte 0xe - .4byte 0x1b3 + .uleb128 0x6 + .4byte .LASF896 + .byte 0x1a + .4byte 0x1c9 .uleb128 0x2 .byte 0x91 .sleb128 -12 @@ -396,12 +529,51 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x2 - .4byte .LASF891 - .uleb128 0xe - .byte 0x4 - .4byte 0xbd + .4byte .LASF893 .uleb128 0xf - .4byte .LASF898 + .byte 0x4 + .4byte 0xd5 + .uleb128 0x8 + .4byte .LASF895 + .byte 0xd + .4byte .LFB1 + .4byte .LFE1-.LFB1 + .uleb128 0x1 + .byte 0x9c + .4byte 0x218 + .uleb128 0x4 + .ascii "pin\000" + .byte 0xd + .byte 0x1b + .4byte 0xac + .uleb128 0x2 + .byte 0x91 + .sleb128 -18 + .uleb128 0x4 + .ascii "af\000" + .byte 0xd + .byte 0x28 + .4byte 0xa0 + .uleb128 0x2 + .byte 0x91 + .sleb128 -19 + .uleb128 0x6 + .4byte .LASF896 + .byte 0xe + .4byte 0x1c9 + .uleb128 0x2 + .byte 0x91 + .sleb128 -12 + .uleb128 0x9 + .ascii "pn\000" + .byte 0xf + .4byte 0x86 + .uleb128 0x2 + .byte 0x91 + .sleb128 -16 + .byte 0 + .uleb128 0x10 + .4byte .LASF901 .byte 0x1 .byte 0x6 .byte 0x6 @@ -409,36 +581,34 @@ gpio_write: .4byte .LFE0-.LFB0 .uleb128 0x1 .byte 0x9c - .uleb128 0x5 + .uleb128 0x4 .ascii "pin\000" .byte 0x6 .byte 0x1d - .4byte 0x94 + .4byte 0xac .uleb128 0x2 .byte 0x91 .sleb128 -18 - .uleb128 0x10 - .4byte .LASF892 + .uleb128 0x11 + .4byte .LASF897 .byte 0x1 .byte 0x6 .byte 0x2c - .4byte 0x160 + .4byte 0x178 .uleb128 0x2 .byte 0x91 .sleb128 -19 - .uleb128 0x7 - .4byte .LASF893 + .uleb128 0x6 + .4byte .LASF896 .byte 0x7 - .4byte 0x1b3 + .4byte 0x1c9 .uleb128 0x2 .byte 0x91 .sleb128 -12 - .uleb128 0x11 + .uleb128 0x9 .ascii "pn\000" - .byte 0x1 .byte 0x8 - .byte 0x7 - .4byte 0x7a + .4byte 0x86 .uleb128 0x2 .byte 0x91 .sleb128 -16 @@ -458,6 +628,21 @@ gpio_write: .byte 0 .byte 0 .uleb128 0x2 + .uleb128 0x16 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x3 .uleb128 0xd .byte 0 .uleb128 0x3 @@ -476,31 +661,7 @@ gpio_write: .uleb128 0xb .byte 0 .byte 0 - .uleb128 0x3 - .uleb128 0x16 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x39 - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 .uleb128 0x4 - .uleb128 0x28 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x1c - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0x5 .uleb128 0x5 .byte 0 .uleb128 0x3 @@ -518,26 +679,16 @@ gpio_write: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x6 - .uleb128 0xd + .uleb128 0x5 + .uleb128 0x28 .byte 0 .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0x21 - .sleb128 4 - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x39 - .uleb128 0x21 - .sleb128 21 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 + .uleb128 0xe + .uleb128 0x1c .uleb128 0xb .byte 0 .byte 0 - .uleb128 0x7 + .uleb128 0x6 .uleb128 0x34 .byte 0 .uleb128 0x3 @@ -556,7 +707,74 @@ gpio_write: .uleb128 0x18 .byte 0 .byte 0 + .uleb128 0x7 + .uleb128 0xd + .byte 0 + .uleb128 0x3 .uleb128 0x8 + .uleb128 0x3a + .uleb128 0x21 + .sleb128 4 + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 21 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x8 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0x21 + .sleb128 1 + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 6 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x6 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x7a + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x9 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0x21 + .sleb128 1 + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 7 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0xa .uleb128 0x11 .byte 0x1 .uleb128 0x25 @@ -577,7 +795,7 @@ gpio_write: .uleb128 0x17 .byte 0 .byte 0 - .uleb128 0x9 + .uleb128 0xb .uleb128 0x24 .byte 0 .uleb128 0xb @@ -588,14 +806,14 @@ gpio_write: .uleb128 0x8 .byte 0 .byte 0 - .uleb128 0xa + .uleb128 0xc .uleb128 0x35 .byte 0 .uleb128 0x49 .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0xb + .uleb128 0xd .uleb128 0x13 .byte 0x1 .uleb128 0x3 @@ -612,7 +830,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0xc + .uleb128 0xe .uleb128 0x4 .byte 0x1 .uleb128 0x3e @@ -631,34 +849,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0xd - .uleb128 0x2e - .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x39 - .uleb128 0xb - .uleb128 0x27 - .uleb128 0x19 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x6 - .uleb128 0x40 - .uleb128 0x18 - .uleb128 0x7a - .uleb128 0x19 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0xe + .uleb128 0xf .uleb128 0xf .byte 0 .uleb128 0xb @@ -667,7 +858,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0xf + .uleb128 0x10 .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -692,7 +883,7 @@ gpio_write: .uleb128 0x19 .byte 0 .byte 0 - .uleb128 0x10 + .uleb128 0x11 .uleb128 0x5 .byte 0 .uleb128 0x3 @@ -709,26 +900,9 @@ gpio_write: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x11 - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x39 - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0x18 - .byte 0 - .byte 0 .byte 0 .section .debug_aranges,"",%progbits - .4byte 0x24 + .4byte 0x2c .2byte 0x2 .4byte .Ldebug_info0 .byte 0x4 @@ -739,6 +913,8 @@ gpio_write: .4byte .LFE0-.LFB0 .4byte .LFB1 .4byte .LFE1-.LFB1 + .4byte .LFB2 + .4byte .LFE2-.LFB2 .4byte 0 .4byte 0 .section .debug_rnglists,"",%progbits @@ -756,6 +932,9 @@ gpio_write: .byte 0x7 .4byte .LFB1 .uleb128 .LFE1-.LFB1 + .byte 0x7 + .4byte .LFB2 + .uleb128 .LFE2-.LFB2 .byte 0 .Ldebug_ranges3: .section .debug_macro,"",%progbits @@ -3587,8 +3766,8 @@ gpio_write: .ascii "__SCN32FAST(x) __FAST32 __STRINGIFY(x)\000" .LASF318: .ascii "__LLACCUM_MIN__ (-0X1P31LLK-0X1P31LLK)\000" -.LASF381: - .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" +.LASF338: + .ascii "__UHQ_FBIT__ 16\000" .LASF310: .ascii "__LACCUM_EPSILON__ 0x1P-31LK\000" .LASF809: @@ -3597,7 +3776,7 @@ gpio_write: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF541: .ascii "_LONG_DOUBLE long double\000" -.LASF893: +.LASF896: .ascii "gpio\000" .LASF591: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -3605,7 +3784,7 @@ gpio_write: .ascii "_UINT32_T_DECLARED \000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF888: +.LASF890: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -3719,7 +3898,7 @@ gpio_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF894: +.LASF898: .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" @@ -3788,8 +3967,8 @@ gpio_write: .ascii "__LACCUM_IBIT__ 32\000" .LASF592: .ascii "INT_LEAST8_MAX (__INT_LEAST8_MAX__)\000" -.LASF559: - .ascii "__EXP\000" +.LASF866: + .ascii "__uint8_t\000" .LASF81: .ascii "__SCHAR_WIDTH__ 8\000" .LASF455: @@ -3838,9 +4017,7 @@ gpio_write: .ascii "__ACCUM_FBIT__ 15\000" .LASF791: .ascii "PRId64 __PRI64(d)\000" -.LASF302: - .ascii "__UACCUM_IBIT__ 16\000" -.LASF867: +.LASF869: .ascii "long int\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" @@ -3936,7 +4113,7 @@ gpio_write: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF886: +.LASF888: .ascii "GPIO_MODE_INPUT\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -3950,15 +4127,17 @@ gpio_write: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" +.LASF876: + .ascii "uint8_t\000" .LASF704: .ascii "SCNoFAST8 __SCN8FAST(o)\000" .LASF625: .ascii "INTMAX_MIN (-INTMAX_MAX - 1)\000" .LASF431: .ascii "__ARM_FEATURE_FMA 1\000" -.LASF364: - .ascii "__GNUC_STDC_INLINE__ 1\000" -.LASF890: +.LASF466: + .ascii "_HAVE_LONG_DOUBLE 1\000" +.LASF892: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -4024,19 +4203,17 @@ gpio_write: .ascii "__PRI16LEAST(x) __LEAST16 __STRINGIFY(x)\000" .LASF494: .ascii "__POSIX_VISIBLE 0\000" -.LASF466: - .ascii "_HAVE_LONG_DOUBLE 1\000" .LASF584: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF875: +.LASF877: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF891: +.LASF893: .ascii "_Bool\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" @@ -4056,7 +4233,7 @@ gpio_write: .ascii "__WCHAR_TYPE__ unsigned int\000" .LASF859: .ascii "PORT(port) (((port) - 'A') << 8)\000" -.LASF887: +.LASF889: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4094,7 +4271,7 @@ gpio_write: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF868: +.LASF867: .ascii "__uint16_t\000" .LASF224: .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" @@ -4304,7 +4481,7 @@ gpio_write: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF870: +.LASF871: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4320,7 +4497,7 @@ gpio_write: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF897: +.LASF894: .ascii "gpio_write\000" .LASF569: .ascii "__int32_t_defined 1\000" @@ -4364,7 +4541,7 @@ gpio_write: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF898: +.LASF901: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -4384,7 +4561,7 @@ gpio_write: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF877: +.LASF879: .ascii "uintptr_t\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4432,7 +4609,7 @@ gpio_write: .ascii "PRIX32 __PRI32(X)\000" .LASF773: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF880: +.LASF882: .ascii "OSPEEDR\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" @@ -4462,7 +4639,7 @@ gpio_write: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF869: +.LASF870: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4472,7 +4649,7 @@ gpio_write: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF871: +.LASF872: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4492,6 +4669,8 @@ gpio_write: .ascii "_NEWLIB_VERSION \"4.3.0\"\000" .LASF137: .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" +.LASF722: + .ascii "SCNu16 __SCN16(u)\000" .LASF423: .ascii "__ARM_FP\000" .LASF347: @@ -4577,7 +4756,7 @@ gpio_write: .ascii "\000" .LASF582: .ascii "__int_fast16_t_defined 1\000" -.LASF878: +.LASF880: .ascii "MODER\000" .LASF482: .ascii "__FLOAT_TYPE float\000" @@ -4588,9 +4767,9 @@ gpio_write: .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF874: +.LASF875: .ascii "unsigned int\000" -.LASF873: +.LASF874: .ascii "__uintptr_t\000" .LASF459: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4616,8 +4795,6 @@ gpio_write: .ascii "_FVWRITE_IN_STREAMIO 1\000" .LASF662: .ascii "_WCHAR_T_DECLARED \000" -.LASF361: - .ascii "__UTA_IBIT__ 64\000" .LASF24: .ascii "__CHAR_BIT__ 8\000" .LASF143: @@ -4628,6 +4805,8 @@ gpio_write: .ascii "PRIdLEAST8 __PRI8LEAST(d)\000" .LASF70: .ascii "__SCHAR_MAX__ 0x7f\000" +.LASF559: + .ascii "__EXP\000" .LASF127: .ascii "__INT_FAST8_WIDTH__ 32\000" .LASF2: @@ -4644,6 +4823,8 @@ gpio_write: .ascii "__LFRACT_MAX__ 0X7FFFFFFFP-31LR\000" .LASF389: .ascii "__SIZEOF_PTRDIFF_T__ 4\000" +.LASF270: + .ascii "__LFRACT_EPSILON__ 0x1P-31LR\000" .LASF649: .ascii "__WCHAR_T__ \000" .LASF555: @@ -4662,6 +4843,8 @@ gpio_write: .ascii "__ARM_FEATURE_COPROC 15\000" .LASF483: .ascii "__OBSOLETE_MATH_DEFAULT 1\000" +.LASF895: + .ascii "gpio_set_af\000" .LASF82: .ascii "__SHRT_WIDTH__ 16\000" .LASF472: @@ -4682,8 +4865,8 @@ gpio_write: .ascii "__ATFILE_VISIBLE 0\000" .LASF372: .ascii "__GCC_ATOMIC_CHAR_LOCK_FREE 2\000" -.LASF270: - .ascii "__LFRACT_EPSILON__ 0x1P-31LR\000" +.LASF695: + .ascii "SCNxLEAST8 __SCN8LEAST(x)\000" .LASF808: .ascii "SCNdLEAST64 __SCN64LEAST(d)\000" .LASF538: @@ -4808,7 +4991,7 @@ gpio_write: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF872: +.LASF873: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -4822,8 +5005,6 @@ gpio_write: .ascii "__SHRT_MAX__ 0x7fff\000" .LASF196: .ascii "__LDBL_IS_IEC_60559__ 2\000" -.LASF695: - .ascii "SCNxLEAST8 __SCN8LEAST(x)\000" .LASF35: .ascii "__PTRDIFF_TYPE__ int\000" .LASF670: @@ -4886,11 +5067,11 @@ gpio_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF576: .ascii "_UINTPTR_T_DECLARED \000" -.LASF885: +.LASF887: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF884: +.LASF886: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -4904,7 +5085,7 @@ gpio_write: .ascii "__INT32_TYPE__ long int\000" .LASF118: .ascii "__UINT_LEAST8_MAX__ 0xff\000" -.LASF883: +.LASF885: .ascii "LCKR\000" .LASF520: .ascii "__int20__ +2\000" @@ -4934,6 +5115,8 @@ gpio_write: .ascii "__ARM_EABI__ 1\000" .LASF465: .ascii "_HAVE_INITFINI_ARRAY 1\000" +.LASF302: + .ascii "__UACCUM_IBIT__ 16\000" .LASF732: .ascii "SCNoLEAST16 __SCN16LEAST(o)\000" .LASF473: @@ -4952,7 +5135,7 @@ gpio_write: .ascii "__QQ_IBIT__ 0\000" .LASF763: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF879: +.LASF881: .ascii "OTYPER\000" .LASF811: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -4972,7 +5155,7 @@ gpio_write: .ascii "__GNUC_MINOR__ 3\000" .LASF57: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" -.LASF895: +.LASF899: .ascii "src/gpio.c\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" @@ -5046,17 +5229,17 @@ gpio_write: .ascii "__ACCUM_IBIT__ 16\000" .LASF509: .ascii "unsigned\000" -.LASF881: +.LASF381: + .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" +.LASF883: .ascii "PUPDR\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" .LASF121: .ascii "__UINT16_C(c) c\000" -.LASF542: - .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" -.LASF892: +.LASF897: .ascii "mode\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5066,11 +5249,11 @@ gpio_write: .ascii "INT64_MIN (-__INT64_MAX__ - 1)\000" .LASF9: .ascii "__ATOMIC_RELAXED 0\000" -.LASF338: - .ascii "__UHQ_FBIT__ 16\000" +.LASF542: + .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF889: +.LASF891: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5108,7 +5291,7 @@ gpio_write: .ascii "__FAST8 \000" .LASF496: .ascii "__XSI_VISIBLE 0\000" -.LASF882: +.LASF884: .ascii "BSRR\000" .LASF794: .ascii "PRIu64 __PRI64(u)\000" @@ -5120,8 +5303,8 @@ gpio_write: .ascii "PRIxMAX __PRIMAX(x)\000" .LASF487: .ascii "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)\000" -.LASF722: - .ascii "SCNu16 __SCN16(u)\000" +.LASF361: + .ascii "__UTA_IBIT__ 64\000" .LASF322: .ascii "__ULLACCUM_IBIT__ 32\000" .LASF396: @@ -5196,7 +5379,7 @@ gpio_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF876: +.LASF878: .ascii "uint32_t\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5220,6 +5403,8 @@ gpio_write: .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: @@ -5250,7 +5435,7 @@ gpio_write: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF866: +.LASF868: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5298,7 +5483,7 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF896: +.LASF900: .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 bd007eb..cb23541 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -2020,10 +2020,11 @@ typedef enum { } 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, -# 41 "src/gpio.h" 3 4 +# 42 "src/gpio.h" 3 4 _Bool -# 41 "src/gpio.h" +# 42 "src/gpio.h" val); # 5 "src/gpio.c" 2 @@ -2034,10 +2035,22 @@ void gpio_set_mode(uint16_t pin, GPIO_MODE mode) { gpio->MODER |= (mode & 0b11) << (pn * 2); } +void gpio_set_af(uint16_t pin, uint8_t af) { + struct gpio *gpio = ((struct gpio*)(uintptr_t)((0x40020000U) + ((0x400U) * (pin >> 8)))); + int pn = (pin & 0b1111); + if (pn < 8) { + gpio->AFRL &= ~(0b1111 << (pn * 4)); + gpio->AFRL |= (af & 0b1111) << (pn * 4); + } else { + gpio->AFRH &= ~(0b1111 << (pn * 4)); + gpio->AFRH |= (af & 0b1111) << (pn * 4); + } +} + void gpio_write(uint16_t pin, -# 13 "src/gpio.c" 3 4 +# 25 "src/gpio.c" 3 4 _Bool -# 13 "src/gpio.c" +# 25 "src/gpio.c" val) { struct gpio *gpio = ((struct gpio*)(uintptr_t)((0x40020000U) + ((0x400U) * (pin >> 8)))); gpio->BSRR = (0b0011 << (pin & 0b1111)) << (val ? 0 : 16); diff --git a/build/gpio.o b/build/gpio.o index 59a40c38ef5bd5c7518dfee6594ea1f883da4751..849a43dbd25ed4d2247f3764beb7a9a1e6c71e7f 100644 GIT binary patch delta 17900 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 Xzb;XhI5C@n0kkC-A`V&A2Vw&NlI%?y delta 17286 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 diff --git a/build/main.S b/build/main.S index 72ecb9d..c94d753 100644 --- a/build/main.S +++ b/build/main.S @@ -824,7 +824,7 @@ main: .byte 0 .uleb128 0xa .4byte .LASF996 - .byte 0x29 + .byte 0x2a .4byte 0x3cd .uleb128 0x6 .4byte 0x88 diff --git a/build/main.i b/build/main.i index f00220b..e5271b3 100644 --- a/build/main.i +++ b/build/main.i @@ -2144,10 +2144,11 @@ typedef enum { } 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, -# 41 "src/gpio.h" 3 4 +# 42 "src/gpio.h" 3 4 _Bool -# 41 "src/gpio.h" +# 42 "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 e3c37326480d10889f48acf64526565426730ab7..87fe3e81740fdcfafca6e7c3b5170e973036c9af 100644 GIT binary patch delta 16 YcmX@|o9W1JrVX8Jj9Qz!*sQh#07SP3ApigX delta 16 YcmX@|o9W1JrVX8JjGCLf*sQh#07S6|AOHXW diff --git a/src/gpio.c b/src/gpio.c index b92dd26..fa63bb9 100644 --- a/src/gpio.c +++ b/src/gpio.c @@ -10,6 +10,18 @@ void gpio_set_mode(uint16_t pin, GPIO_MODE mode) { gpio->MODER |= (mode & 0b11) << (pn * 2); // Set new mode. Each pin uses 2 bits } +void gpio_set_af(uint16_t pin, uint8_t af) { + struct gpio *gpio = GPIO(PINPORT(pin)); + int pn = PINNUM(pin); + if (pn < 8) { + gpio->AFRL &= ~(0b1111 << (pn * 4)); // Each pin uses 4 bits + gpio->AFRL |= (af & 0b1111) << (pn * 4); + } else { + gpio->AFRH &= ~(0b1111 << (pn * 4)); // Each pin uses 4 bits + gpio->AFRH |= (af & 0b1111) << (pn * 4); + } +} + void gpio_write(uint16_t pin, bool val) { struct gpio *gpio = GPIO(PINPORT(pin)); gpio->BSRR = (0b0011 << PINNUM(pin)) << (val ? 0 : 16); diff --git a/src/gpio.h b/src/gpio.h index bad0e48..298fd88 100644 --- a/src/gpio.h +++ b/src/gpio.h @@ -38,6 +38,7 @@ typedef enum { } 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, bool val); #endif -- 2.51.0 From 95455a716158610ff554ed75e4b1d107b89ab2eb Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:30:57 +0100 Subject: [PATCH 13/17] 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 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 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 -- 2.51.0 From 55ee09eab8ff37c33ba11fb27c9e0e7cfae9c0a7 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:33:52 +0100 Subject: [PATCH 14/17] Use `USART2` --- build/final.elf | Bin 55508 -> 61936 bytes build/final.elf.map | 338 ++++++++--------- build/main.S | 859 +++++++++++++++++++++++++------------------- build/main.i | 62 +++- build/main.o | Bin 48780 -> 50084 bytes src/main.c | 5 + 6 files changed, 737 insertions(+), 527 deletions(-) diff --git a/build/final.elf b/build/final.elf index f408989771ce71cd14427a28a4d2607cbb093304..5f5d0642ee94f3999226a25c91e943ba2d7705cf 100755 GIT binary patch delta 8792 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 PxXQqA8YT?t1wz>XT90e| diff --git a/build/final.elf.map b/build/final.elf.map index 4610e2f..464f9bd 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -18,8 +18,7 @@ Discarded input sections .text 0x00000000 0x0 build/gpio.o .data 0x00000000 0x0 build/gpio.o .bss 0x00000000 0x0 build/gpio.o - .text.gpio_set_af - 0x00000000 0x98 build/gpio.o + .group 0x00000000 0xc build/main.o .group 0x00000000 0xc build/main.o .group 0x00000000 0xc build/main.o .group 0x00000000 0xc build/main.o @@ -117,21 +116,6 @@ Discarded input sections .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 @@ -146,16 +130,7 @@ Discarded input sections .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 @@ -182,126 +157,144 @@ LOAD build/usart.o 0x08000000 interrupt_vector_table 0x08000198 . = ALIGN (0x4) -.text 0x08000198 0x34c +.text 0x08000198 0x53c 0x08000198 . = ALIGN (0x4) *(.text) *(.text.*) .text.gpio_set_mode 0x08000198 0x62 build/gpio.o 0x08000198 gpio_set_mode + .text.gpio_set_af + 0x080001fa 0x98 build/gpio.o + 0x080001fa gpio_set_af .text.gpio_write - 0x080001fa 0x4c build/gpio.o - 0x080001fa gpio_write - *fill* 0x08000246 0x2 + 0x08000292 0x4c build/gpio.o + 0x08000292 gpio_write + *fill* 0x080002de 0x2 .text.system_clock_init - 0x08000248 0x138 build/main.o - .text.main 0x08000380 0x88 build/main.o - 0x08000380 main + 0x080002e0 0x138 build/main.o + .text.main 0x08000418 0x9c build/main.o + 0x08000418 main .text.init_memory - 0x08000408 0x64 build/startup.o - 0x08000408 init_memory - .text.reset 0x0800046c 0x10 build/startup.o - 0x0800046c reset + 0x080004b4 0x64 build/startup.o + 0x080004b4 init_memory + .text.reset 0x08000518 0x10 build/startup.o + 0x08000518 reset .text.default_handler - 0x0800047c 0x8 build/startup.o - 0x0800047c exti0 - 0x0800047c debug_monitor - 0x0800047c rcc - 0x0800047c x - 0x0800047c sdio - 0x0800047c usage_fault - 0x0800047c tim1_up_tim10 - 0x0800047c usart1 - 0x0800047c i2c3_er - 0x0800047c spi2 - 0x0800047c dma1_stream1 - 0x0800047c bus_fault - 0x0800047c spi5 - 0x0800047c exti3 - 0x0800047c dma2_stream5 - 0x0800047c tim2 - 0x0800047c dma1_stream6 - 0x0800047c default_handler - 0x0800047c i2c1_er - 0x0800047c hard_fault - 0x0800047c usart6 - 0x0800047c exti15_10 - 0x0800047c usart2 - 0x0800047c pend_sv - 0x0800047c i2c1_ev - 0x0800047c wwdg - 0x0800047c adc - 0x0800047c rtc_alarm - 0x0800047c spi3 - 0x0800047c exti1 - 0x0800047c mem_manage - 0x0800047c dma2_stream1 - 0x0800047c dma1_stream2 - 0x0800047c dma2_stream3 - 0x0800047c sv_call - 0x0800047c tim3 - 0x0800047c otg_fs - 0x0800047c dma1_stream5 - 0x0800047c dma2_stream6 - 0x0800047c flash - 0x0800047c tamp_stamp - 0x0800047c i2c3_ev - 0x0800047c rtc_wkup - 0x0800047c dma2_stream0 - 0x0800047c pvd - 0x0800047c fpu - 0x0800047c exti4 - 0x0800047c exti2 - 0x0800047c spi1 - 0x0800047c dma1_stream0 - 0x0800047c tim1_brk_tim9 - 0x0800047c i2c2_ev - 0x0800047c otg_fs_wkup - 0x0800047c spi4 - 0x0800047c dma2_stream2 - 0x0800047c tim1_cc - 0x0800047c tim1_trg_com_tim11 - 0x0800047c exti9_5 - 0x0800047c dma1_stream3 - 0x0800047c dma2_stream4 - 0x0800047c i2c2_er - 0x0800047c dma2_stream7 - 0x0800047c dma1_stream7 - 0x0800047c nmi - 0x0800047c systick - 0x0800047c tim4 - 0x0800047c tim5 - 0x0800047c dma1_stream4 + 0x08000528 0x8 build/startup.o + 0x08000528 exti0 + 0x08000528 debug_monitor + 0x08000528 rcc + 0x08000528 x + 0x08000528 sdio + 0x08000528 usage_fault + 0x08000528 tim1_up_tim10 + 0x08000528 usart1 + 0x08000528 i2c3_er + 0x08000528 spi2 + 0x08000528 dma1_stream1 + 0x08000528 bus_fault + 0x08000528 spi5 + 0x08000528 exti3 + 0x08000528 dma2_stream5 + 0x08000528 tim2 + 0x08000528 dma1_stream6 + 0x08000528 default_handler + 0x08000528 i2c1_er + 0x08000528 hard_fault + 0x08000528 usart6 + 0x08000528 exti15_10 + 0x08000528 usart2 + 0x08000528 pend_sv + 0x08000528 i2c1_ev + 0x08000528 wwdg + 0x08000528 adc + 0x08000528 rtc_alarm + 0x08000528 spi3 + 0x08000528 exti1 + 0x08000528 mem_manage + 0x08000528 dma2_stream1 + 0x08000528 dma1_stream2 + 0x08000528 dma2_stream3 + 0x08000528 sv_call + 0x08000528 tim3 + 0x08000528 otg_fs + 0x08000528 dma1_stream5 + 0x08000528 dma2_stream6 + 0x08000528 flash + 0x08000528 tamp_stamp + 0x08000528 i2c3_ev + 0x08000528 rtc_wkup + 0x08000528 dma2_stream0 + 0x08000528 pvd + 0x08000528 fpu + 0x08000528 exti4 + 0x08000528 exti2 + 0x08000528 spi1 + 0x08000528 dma1_stream0 + 0x08000528 tim1_brk_tim9 + 0x08000528 i2c2_ev + 0x08000528 otg_fs_wkup + 0x08000528 spi4 + 0x08000528 dma2_stream2 + 0x08000528 tim1_cc + 0x08000528 tim1_trg_com_tim11 + 0x08000528 exti9_5 + 0x08000528 dma1_stream3 + 0x08000528 dma2_stream4 + 0x08000528 i2c2_er + 0x08000528 dma2_stream7 + 0x08000528 dma1_stream7 + 0x08000528 nmi + 0x08000528 systick + 0x08000528 tim4 + 0x08000528 tim5 + 0x08000528 dma1_stream4 .text.tim4_init - 0x08000484 0x40 build/timer.o - 0x08000484 tim4_init + 0x08000530 0x40 build/timer.o + 0x08000530 tim4_init .text.tim4_start - 0x080004c4 0x20 build/timer.o - 0x080004c4 tim4_start + 0x08000570 0x20 build/timer.o + 0x08000570 tim4_start + .text.usart2_init + 0x08000590 0xb8 build/usart.o + 0x08000590 usart2_init + .text.usart2_start + 0x08000648 0x20 build/usart.o + 0x08000648 usart2_start + .text.usart2_write_byte + 0x08000668 0x30 build/usart.o + 0x08000668 usart2_write_byte + .text.usart2_write + 0x08000698 0x2a build/usart.o + 0x08000698 usart2_write *(.rodata) + *fill* 0x080006c2 0x2 + .rodata 0x080006c4 0xf build/main.o *(.rodata.*) - 0x080004e4 . = ALIGN (0x4) - 0x080004e4 _data_addr = LOADADDR (.data) + 0x080006d4 . = ALIGN (0x4) + *fill* 0x080006d3 0x1 + 0x080006d4 _data_addr = LOADADDR (.data) -.glue_7 0x080004e4 0x0 - .glue_7 0x080004e4 0x0 linker stubs +.glue_7 0x080006d4 0x0 + .glue_7 0x080006d4 0x0 linker stubs -.glue_7t 0x080004e4 0x0 - .glue_7t 0x080004e4 0x0 linker stubs +.glue_7t 0x080006d4 0x0 + .glue_7t 0x080006d4 0x0 linker stubs -.vfp11_veneer 0x080004e4 0x0 - .vfp11_veneer 0x080004e4 0x0 linker stubs +.vfp11_veneer 0x080006d4 0x0 + .vfp11_veneer 0x080006d4 0x0 linker stubs -.v4_bx 0x080004e4 0x0 - .v4_bx 0x080004e4 0x0 linker stubs +.v4_bx 0x080006d4 0x0 + .v4_bx 0x080006d4 0x0 linker stubs -.iplt 0x080004e4 0x0 - .iplt 0x080004e4 0x0 build/main.o +.iplt 0x080006d4 0x0 + .iplt 0x080006d4 0x0 build/main.o -.rel.dyn 0x080004e4 0x0 - .rel.iplt 0x080004e4 0x0 build/main.o +.rel.dyn 0x080006d4 0x0 + .rel.iplt 0x080006d4 0x0 build/main.o -.data 0x20000000 0x0 load address 0x080004e4 +.data 0x20000000 0x0 load address 0x080006d4 0x20000000 . = ALIGN (0x4) 0x20000000 _data_start = . *(.data) @@ -309,10 +302,10 @@ LOAD build/usart.o 0x20000000 . = ALIGN (0x4) 0x20000000 _data_end = . -.igot.plt 0x20000000 0x0 load address 0x080004e4 +.igot.plt 0x20000000 0x0 load address 0x080006d4 .igot.plt 0x20000000 0x0 build/main.o -.bss 0x20000000 0x0 load address 0x080004e4 +.bss 0x20000000 0x0 load address 0x080006d4 0x20000000 . = ALIGN (0x4) 0x20000000 _bss_start = . *(.bss) @@ -322,19 +315,21 @@ LOAD build/usart.o OUTPUT(build/final.elf elf32-littlearm) LOAD linker stubs -.debug_info 0x00000000 0xb6d +.debug_info 0x00000000 0xf1e .debug_info 0x00000000 0x262 build/gpio.o - .debug_info 0x00000262 0x44e build/main.o - .debug_info 0x000006b0 0x188 build/startup.o - .debug_info 0x00000838 0x335 build/timer.o + .debug_info 0x00000262 0x47e build/main.o + .debug_info 0x000006e0 0x188 build/startup.o + .debug_info 0x00000868 0x335 build/timer.o + .debug_info 0x00000b9d 0x381 build/usart.o -.debug_abbrev 0x00000000 0x43d +.debug_abbrev 0x00000000 0x5ae .debug_abbrev 0x00000000 0x11d build/gpio.o - .debug_abbrev 0x0000011d 0x144 build/main.o - .debug_abbrev 0x00000261 0x127 build/startup.o - .debug_abbrev 0x00000388 0xb5 build/timer.o + .debug_abbrev 0x0000011d 0x14b build/main.o + .debug_abbrev 0x00000268 0x127 build/startup.o + .debug_abbrev 0x0000038f 0xb5 build/timer.o + .debug_abbrev 0x00000444 0x16a build/usart.o -.debug_aranges 0x00000000 0xb0 +.debug_aranges 0x00000000 0xe8 .debug_aranges 0x00000000 0x30 build/gpio.o .debug_aranges @@ -343,9 +338,11 @@ LOAD linker stubs 0x00000058 0x30 build/startup.o .debug_aranges 0x00000088 0x28 build/timer.o + .debug_aranges + 0x000000b0 0x38 build/usart.o .debug_rnglists - 0x00000000 0x73 + 0x00000000 0x99 .debug_rnglists 0x00000000 0x20 build/gpio.o .debug_rnglists @@ -354,8 +351,10 @@ LOAD linker stubs 0x0000003b 0x1f build/startup.o .debug_rnglists 0x0000005a 0x19 build/timer.o + .debug_rnglists + 0x00000073 0x26 build/usart.o -.debug_macro 0x00000000 0x3bc4 +.debug_macro 0x00000000 0x47d9 .debug_macro 0x00000000 0xb56 build/gpio.o .debug_macro 0x00000b56 0x22 build/gpio.o .debug_macro 0x00000b78 0x75 build/gpio.o @@ -371,32 +370,38 @@ LOAD linker stubs .debug_macro 0x00001115 0x4cc build/gpio.o .debug_macro 0x000015e1 0x22 build/gpio.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_macro 0x00001643 0xb89 build/main.o + .debug_macro 0x000021cc 0x136 build/main.o + .debug_macro 0x00002302 0x46 build/main.o + .debug_macro 0x00002348 0x2e build/main.o + .debug_macro 0x00002376 0x22 build/main.o + .debug_macro 0x00002398 0x5e build/main.o + .debug_macro 0x000023f6 0xb02 build/startup.o + .debug_macro 0x00002ef8 0x56 build/startup.o + .debug_macro 0x00002f4e 0x51 build/startup.o + .debug_macro 0x00002f9f 0xb5c build/timer.o + .debug_macro 0x00003afb 0x130 build/timer.o + .debug_macro 0x00003c2b 0xb74 build/usart.o + .debug_macro 0x0000479f 0x3a build/usart.o -.debug_line 0x00000000 0x516 +.debug_line 0x00000000 0x699 .debug_line 0x00000000 0x179 build/gpio.o - .debug_line 0x00000179 0x1d4 build/main.o - .debug_line 0x0000034d 0xea build/startup.o - .debug_line 0x00000437 0xdf build/timer.o + .debug_line 0x00000179 0x1de build/main.o + .debug_line 0x00000357 0xea build/startup.o + .debug_line 0x00000441 0xdf build/timer.o + .debug_line 0x00000520 0x179 build/usart.o -.debug_str 0x00000000 0x5f5e +.debug_str 0x00000000 0x6185 .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 + .debug_str 0x000053c1 0xcfb build/main.o + 0x61fe (size before relaxing) + .debug_str 0x000060bc 0x88 build/startup.o 0x3cdc (size before relaxing) - .debug_str 0x00005f52 0xc build/timer.o + .debug_str 0x00006144 0xc build/timer.o 0x5b6e (size before relaxing) + .debug_str 0x00006150 0x35 build/usart.o + 0x5ec2 (size before relaxing) .comment 0x00000000 0x45 .comment 0x00000000 0x45 build/gpio.o @@ -404,6 +409,7 @@ LOAD linker stubs .comment 0x00000045 0x46 build/main.o .comment 0x00000045 0x46 build/startup.o .comment 0x00000045 0x46 build/timer.o + .comment 0x00000045 0x46 build/usart.o .ARM.attributes 0x00000000 0x34 @@ -415,24 +421,30 @@ LOAD linker stubs 0x00000068 0x34 build/startup.o .ARM.attributes 0x0000009c 0x34 build/timer.o + .ARM.attributes + 0x000000d0 0x34 build/usart.o .debug_line_str - 0x00000000 0x280 + 0x00000000 0x290 .debug_line_str 0x00000000 0x24b build/gpio.o 0x25d (size before relaxing) .debug_line_str - 0x0000024b 0x23 build/main.o - 0x279 (size before relaxing) + 0x0000024b 0x2b build/main.o + 0x281 (size before relaxing) .debug_line_str - 0x0000026e 0xa build/startup.o + 0x00000276 0xa build/startup.o 0x218 (size before relaxing) .debug_line_str - 0x00000278 0x8 build/timer.o + 0x00000280 0x8 build/timer.o 0x25b (size before relaxing) + .debug_line_str + 0x00000288 0x8 build/usart.o + 0x26c (size before relaxing) -.debug_frame 0x00000000 0x194 +.debug_frame 0x00000000 0x234 .debug_frame 0x00000000 0x88 build/gpio.o .debug_frame 0x00000088 0x50 build/main.o .debug_frame 0x000000d8 0x6c build/startup.o .debug_frame 0x00000144 0x50 build/timer.o + .debug_frame 0x00000194 0xa0 build/usart.o diff --git a/build/main.S b/build/main.S index f83b1b4..8b25fb2 100644 --- a/build/main.S +++ b/build/main.S @@ -25,7 +25,7 @@ .type system_clock_init, %function system_clock_init: .LFB0: - .loc 1 12 37 + .loc 1 13 37 .cfi_startproc @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 @@ -35,182 +35,182 @@ system_clock_init: .cfi_offset 7, -4 add r7, sp, #0 .cfi_def_cfa_register 7 - .loc 1 14 33 + .loc 1 15 33 ldr r3, .L5 ldr r3, [r3, #64] ldr r2, .L5 - .loc 1 14 43 + .loc 1 15 43 orr r3, r3, #268435456 str r3, [r2, #64] - .loc 1 17 33 - ldr r3, .L5+4 - ldr r3, [r3] - ldr r2, .L5+4 - .loc 1 17 38 - bic r3, r3, #49152 - str r3, [r2] .loc 1 18 33 ldr r3, .L5+4 ldr r3, [r3] ldr r2, .L5+4 .loc 1 18 38 + bic r3, r3, #49152 + str r3, [r2] + .loc 1 19 33 + ldr r3, .L5+4 + ldr r3, [r3] + ldr r2, .L5+4 + .loc 1 19 38 orr r3, r3, #49152 str r3, [r2] - .loc 1 21 33 + .loc 1 22 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 21 38 + .loc 1 22 38 bic r3, r3, #1 str r3, [r2] - .loc 1 24 33 + .loc 1 25 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 24 38 + .loc 1 25 38 orr r3, r3, #65536 str r3, [r2] - .loc 1 28 9 + .loc 1 29 9 nop .L2: - .loc 1 28 42 discriminator 1 + .loc 1 29 42 discriminator 1 ldr r3, .L5 ldr r3, [r3] - .loc 1 28 47 discriminator 1 + .loc 1 29 47 discriminator 1 and r3, r3, #131072 - .loc 1 28 10 discriminator 1 + .loc 1 29 10 discriminator 1 cmp r3, #0 beq .L2 - .loc 1 32 33 + .loc 1 33 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 32 38 + .loc 1 33 38 bic r3, r3, #16777216 str r3, [r2] - .loc 1 35 33 + .loc 1 36 33 ldr r3, .L5 ldr r3, [r3, #4] ldr r2, .L5 - .loc 1 35 43 + .loc 1 36 43 orr r3, r3, #4194304 str r3, [r2, #4] - .loc 1 38 33 + .loc 1 39 33 ldr r3, .L5 ldr r2, [r3, #4] ldr r1, .L5 - .loc 1 38 43 + .loc 1 39 43 ldr r3, .L5+8 orrs r3, r3, r2 str r3, [r1, #4] - .loc 1 41 33 - ldr r3, .L5 - ldr r3, [r3, #8] - ldr r2, .L5 - .loc 1 41 40 - bic r3, r3, #240 - str r3, [r2, #8] .loc 1 42 33 ldr r3, .L5 - ldr r2, .L5 ldr r3, [r3, #8] + ldr r2, .L5 .loc 1 42 40 + bic r3, r3, #240 str r3, [r2, #8] - .loc 1 45 33 + .loc 1 43 33 ldr r3, .L5 - ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 45 40 - bic r3, r3, #7168 + ldr r3, [r3, #8] + .loc 1 43 40 str r3, [r2, #8] .loc 1 46 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 .loc 1 46 40 - orr r3, r3, #4096 + bic r3, r3, #7168 str r3, [r2, #8] - .loc 1 49 33 + .loc 1 47 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 49 40 - bic r3, r3, #57344 + .loc 1 47 40 + orr r3, r3, #4096 str r3, [r2, #8] .loc 1 50 33 ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 50 40 + bic r3, r3, #57344 + str r3, [r2, #8] + .loc 1 51 33 + ldr r3, .L5 ldr r2, .L5 ldr r3, [r3, #8] - .loc 1 50 40 + .loc 1 51 40 str r3, [r2, #8] - .loc 1 53 33 + .loc 1 54 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 53 38 + .loc 1 54 38 orr r3, r3, #16777216 str r3, [r2] - .loc 1 57 9 + .loc 1 58 9 nop .L3: - .loc 1 57 42 discriminator 1 + .loc 1 58 42 discriminator 1 ldr r3, .L5 ldr r3, [r3] - .loc 1 57 47 discriminator 1 + .loc 1 58 47 discriminator 1 and r3, r3, #33554432 - .loc 1 57 10 discriminator 1 + .loc 1 58 10 discriminator 1 cmp r3, #0 beq .L3 - .loc 1 60 35 - ldr r3, .L5+12 - ldr r3, [r3] - ldr r2, .L5+12 - .loc 1 60 41 - orr r3, r3, #1024 - str r3, [r2] .loc 1 61 35 ldr r3, .L5+12 ldr r3, [r3] ldr r2, .L5+12 .loc 1 61 41 - orr r3, r3, #512 + orr r3, r3, #1024 str r3, [r2] - .loc 1 64 35 + .loc 1 62 35 ldr r3, .L5+12 ldr r3, [r3] ldr r2, .L5+12 - .loc 1 64 41 + .loc 1 62 41 + orr r3, r3, #512 + str r3, [r2] + .loc 1 65 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 65 41 bic r3, r3, #15 str r3, [r2] - .loc 1 65 33 + .loc 1 66 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 65 40 + .loc 1 66 40 orr r3, r3, #272 orr r3, r3, #1 str r3, [r2, #8] - .loc 1 68 33 + .loc 1 69 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 68 40 + .loc 1 69 40 orr r3, r3, #2 str r3, [r2, #8] - .loc 1 72 9 + .loc 1 73 9 nop .L4: - .loc 1 72 42 discriminator 1 + .loc 1 73 42 discriminator 1 ldr r3, .L5 ldr r3, [r3, #8] - .loc 1 72 49 discriminator 1 + .loc 1 73 49 discriminator 1 lsrs r3, r3, #2 - .loc 1 72 55 discriminator 1 + .loc 1 73 55 discriminator 1 and r3, r3, #3 - .loc 1 72 65 discriminator 1 + .loc 1 73 65 discriminator 1 cmp r3, #2 bne .L4 - .loc 1 73 1 + .loc 1 74 1 nop nop mov sp, r7 @@ -230,6 +230,10 @@ system_clock_init: .cfi_endproc .LFE0: .size system_clock_init, .-system_clock_init + .section .rodata + .align 2 +.LC0: + .ascii "hello, world!\012\000" .section .text.main,"ax",%progbits .align 1 .global main @@ -239,7 +243,7 @@ system_clock_init: .type main, %function main: .LFB1: - .loc 1 75 16 + .loc 1 76 16 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -251,56 +255,60 @@ main: .cfi_def_cfa_offset 16 add r7, sp, #0 .cfi_def_cfa_register 7 - .loc 1 76 3 - bl system_clock_init .loc 1 77 3 + bl system_clock_init + .loc 1 78 3 bl tim4_init .loc 1 79 3 + bl usart2_init + .loc 1 81 3 bl tim4_start - .loc 1 81 12 + .loc 1 82 3 + bl usart2_start + .loc 1 84 12 movw r3, #525 strh r3, [r7, #2] @ movhi - .loc 1 82 33 + .loc 1 85 33 ldr r3, .L10 ldr r3, [r3, #48] - .loc 1 82 57 + .loc 1 85 57 ldrh r2, [r7, #2] lsrs r2, r2, #8 uxth r2, r2 mov r1, r2 - .loc 1 82 49 + .loc 1 85 49 movs r2, #1 lsls r2, r2, r1 mov r1, r2 - .loc 1 82 33 + .loc 1 85 33 ldr r2, .L10 - .loc 1 82 43 + .loc 1 85 43 orrs r3, r3, r1 str r3, [r2, #48] - .loc 1 83 3 + .loc 1 86 3 ldrh r3, [r7, #2] movs r1, #1 mov r0, r3 bl gpio_set_mode - .loc 1 85 54 + .loc 1 88 54 ldr r3, .L10+4 ldr r3, [r3, #36] - .loc 1 85 12 + .loc 1 88 12 strh r3, [r7, #6] @ movhi - .loc 1 86 7 + .loc 1 89 7 movs r3, #0 strb r3, [r7, #5] .L9: - .loc 1 88 39 + .loc 1 91 39 ldr r3, .L10+4 ldr r2, [r3, #36] - .loc 1 88 45 + .loc 1 91 45 ldrh r3, [r7, #6] subs r3, r2, r3 - .loc 1 88 5 + .loc 1 91 5 cmp r3, #249 bls .L9 - .loc 1 89 3 + .loc 1 92 3 ldrb r3, [r7, #5] @ zero_extendqisi2 cmp r3, #0 ite ne @@ -309,29 +317,33 @@ main: uxtb r3, r3 eor r3, r3, #1 uxtb r3, r3 - .loc 1 89 10 + .loc 1 92 10 strb r3, [r7, #5] ldrb r3, [r7, #5] and r3, r3, #1 strb r3, [r7, #5] - .loc 1 90 3 + .loc 1 93 3 ldrb r2, [r7, #5] @ zero_extendqisi2 ldrh r3, [r7, #2] mov r1, r2 mov r0, r3 bl gpio_write - .loc 1 92 45 + .loc 1 95 3 + ldr r0, .L10+8 + bl usart2_write + .loc 1 97 45 ldr r3, .L10+4 ldr r3, [r3, #36] - .loc 1 92 11 + .loc 1 97 11 strh r3, [r7, #6] @ movhi - .loc 1 88 5 + .loc 1 91 5 b .L9 .L11: .align 2 .L10: .word 1073887232 .word 1073743872 + .word .LC0 .cfi_endproc .LFE1: .size main, .-main @@ -344,18 +356,19 @@ main: .file 6 "src/flash.h" .file 7 "src/pwr.h" .file 8 "src/timer.h" + .file 9 "src/usart.h" .section .debug_info,"",%progbits .Ldebug_info0: - .4byte 0x44a + .4byte 0x47a .2byte 0x5 .byte 0x1 .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0xd - .4byte .LASF1006 + .4byte .LASF1024 .byte 0x1d - .4byte .LASF1007 - .4byte .LASF1008 + .4byte .LASF1025 + .4byte .LASF1026 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -363,17 +376,17 @@ main: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF940 + .4byte .LASF955 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF941 + .4byte .LASF956 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF942 + .4byte .LASF957 .uleb128 0x4 - .4byte .LASF945 + .4byte .LASF960 .byte 0x2 .byte 0x39 .byte 0x1c @@ -381,13 +394,13 @@ main: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF943 + .4byte .LASF958 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF944 + .4byte .LASF959 .uleb128 0x4 - .4byte .LASF946 + .4byte .LASF961 .byte 0x2 .byte 0x4f .byte 0x1b @@ -395,15 +408,15 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF947 + .4byte .LASF962 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF948 + .4byte .LASF963 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF949 + .4byte .LASF964 .uleb128 0xe .byte 0x4 .byte 0x5 @@ -411,22 +424,22 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF950 + .4byte .LASF965 .uleb128 0x4 - .4byte .LASF951 + .4byte .LASF966 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF952 + .4byte .LASF967 .byte 0x3 .byte 0x30 .byte 0x14 .4byte 0x59 - .uleb128 0x7 + .uleb128 0x9 .4byte 0x94 - .uleb128 0x8 + .uleb128 0xa .ascii "rcc\000" .byte 0x8c .byte 0x4 @@ -438,13 +451,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF968 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF954 + .4byte .LASF969 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -456,115 +469,115 @@ main: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF955 + .4byte .LASF970 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF956 + .4byte .LASF971 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF957 + .4byte .LASF972 .byte 0x4 .byte 0xd .4byte 0x210 .byte 0x18 .uleb128 0x1 - .4byte .LASF958 + .4byte .LASF973 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF959 + .4byte .LASF974 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF960 + .4byte .LASF975 .byte 0x4 .byte 0x10 .4byte 0x210 .byte 0x28 .uleb128 0x1 - .4byte .LASF961 + .4byte .LASF976 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF962 + .4byte .LASF977 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF963 + .4byte .LASF978 .byte 0x4 .byte 0x13 .4byte 0x210 .byte 0x38 .uleb128 0x1 - .4byte .LASF964 + .4byte .LASF979 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF965 + .4byte .LASF980 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF966 + .4byte .LASF981 .byte 0x4 .byte 0x16 .4byte 0x210 .byte 0x48 .uleb128 0x1 - .4byte .LASF967 + .4byte .LASF982 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF968 + .4byte .LASF983 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF969 + .4byte .LASF984 .byte 0x4 .byte 0x19 .4byte 0x210 .byte 0x58 .uleb128 0x1 - .4byte .LASF970 + .4byte .LASF985 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF971 + .4byte .LASF986 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF972 + .4byte .LASF987 .byte 0x4 .byte 0x1c .4byte 0x210 .byte 0x68 .uleb128 0x1 - .4byte .LASF973 + .4byte .LASF988 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -576,25 +589,25 @@ main: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF974 + .4byte .LASF989 .byte 0x4 .byte 0x1f .4byte 0x210 .byte 0x78 .uleb128 0x1 - .4byte .LASF975 + .4byte .LASF990 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF976 + .4byte .LASF991 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF977 + .4byte .LASF992 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -607,7 +620,7 @@ main: .4byte 0x81 .byte 0x1 .byte 0 - .uleb128 0x7 + .uleb128 0x9 .4byte 0x200 .uleb128 0x11 .byte 0x7 @@ -617,27 +630,27 @@ main: .byte 0x25 .byte 0xe .4byte 0x23c - .uleb128 0x5 - .4byte .LASF978 + .uleb128 0x6 + .4byte .LASF993 .byte 0 - .uleb128 0x5 - .4byte .LASF979 + .uleb128 0x6 + .4byte .LASF994 .byte 0x1 - .uleb128 0x5 - .4byte .LASF980 + .uleb128 0x6 + .4byte .LASF995 .byte 0x2 - .uleb128 0x5 - .4byte .LASF981 + .uleb128 0x6 + .4byte .LASF996 .byte 0x3 .byte 0 .uleb128 0x4 - .4byte .LASF982 + .4byte .LASF997 .byte 0x5 .byte 0x2a .byte 0x3 .4byte 0x215 - .uleb128 0x9 - .4byte .LASF983 + .uleb128 0xb + .4byte .LASF998 .byte 0x18 .byte 0x6 .4byte 0x29a @@ -648,13 +661,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF984 + .4byte .LASF999 .byte 0x6 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF985 + .4byte .LASF1000 .byte 0x6 .byte 0x9 .4byte 0xa0 @@ -672,13 +685,13 @@ main: .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF986 + .4byte .LASF1001 .byte 0x6 .byte 0xc .4byte 0xa0 .byte 0x14 .byte 0 - .uleb128 0x8 + .uleb128 0xa .ascii "pwr\000" .byte 0x8 .byte 0x7 @@ -696,8 +709,8 @@ main: .4byte 0xa0 .byte 0x4 .byte 0 - .uleb128 0x9 - .4byte .LASF987 + .uleb128 0xb + .4byte .LASF1002 .byte 0x50 .byte 0x8 .4byte 0x3b8 @@ -714,13 +727,13 @@ main: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF988 + .4byte .LASF1003 .byte 0x8 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF989 + .4byte .LASF1004 .byte 0x8 .byte 0xa .4byte 0xa0 @@ -738,19 +751,19 @@ main: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF990 + .4byte .LASF1005 .byte 0x8 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF991 + .4byte .LASF1006 .byte 0x8 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF992 + .4byte .LASF1007 .byte 0x8 .byte 0xf .4byte 0xa0 @@ -780,31 +793,31 @@ main: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF993 + .4byte .LASF1008 .byte 0x8 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF994 + .4byte .LASF1009 .byte 0x8 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF995 + .4byte .LASF1010 .byte 0x8 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF996 + .4byte .LASF1011 .byte 0x8 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF997 + .4byte .LASF1012 .byte 0x8 .byte 0x18 .4byte 0xa0 @@ -816,81 +829,108 @@ main: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF998 + .4byte .LASF1013 .byte 0x8 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 - .uleb128 0xa - .4byte .LASF1000 + .uleb128 0x8 + .4byte .LASF1014 + .byte 0x9 + .byte 0x30 + .4byte 0x3c9 + .uleb128 0x5 + .4byte 0x3c9 + .byte 0 + .uleb128 0x12 + .byte 0x4 + .4byte 0x3cf + .uleb128 0x3 + .byte 0x1 + .byte 0x8 + .4byte .LASF510 + .uleb128 0x8 + .4byte .LASF1015 + .byte 0x5 .byte 0x2e - .4byte 0x3cd - .uleb128 0x6 + .4byte 0x3ec + .uleb128 0x5 .4byte 0x88 - .uleb128 0x6 - .4byte 0x3cd + .uleb128 0x5 + .4byte 0x3ec .byte 0 .uleb128 0x3 .byte 0x1 .byte 0x2 - .4byte .LASF999 - .uleb128 0xa - .4byte .LASF1001 + .4byte .LASF1016 + .uleb128 0x8 + .4byte .LASF1017 + .byte 0x5 .byte 0x2c - .4byte 0x3e9 - .uleb128 0x6 + .4byte 0x409 + .uleb128 0x5 .4byte 0x88 - .uleb128 0x6 + .uleb128 0x5 .4byte 0x23c .byte 0 - .uleb128 0xb - .4byte .LASF1002 + .uleb128 0x7 + .4byte .LASF1018 + .byte 0x9 + .byte 0x2d + .uleb128 0x7 + .4byte .LASF1019 + .byte 0x8 .byte 0x24 - .uleb128 0xb - .4byte .LASF1003 + .uleb128 0x7 + .4byte .LASF1020 + .byte 0x9 + .byte 0x2c + .uleb128 0x7 + .4byte .LASF1021 + .byte 0x8 .byte 0x23 - .uleb128 0x12 - .4byte .LASF1009 + .uleb128 0x13 + .4byte .LASF1027 .byte 0x1 - .byte 0x4b + .byte 0x4c .byte 0x5 .4byte 0x7a .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c - .4byte 0x43b - .uleb128 0x13 + .4byte 0x46b + .uleb128 0x14 .ascii "led\000" .byte 0x1 - .byte 0x51 + .byte 0x54 .byte 0xc .4byte 0x88 .uleb128 0x2 .byte 0x91 .sleb128 -14 .uleb128 0xc - .4byte .LASF1004 - .byte 0x55 + .4byte .LASF1022 + .byte 0x58 .byte 0xc .4byte 0x88 .uleb128 0x2 .byte 0x91 .sleb128 -10 .uleb128 0xc - .4byte .LASF1005 - .byte 0x56 + .4byte .LASF1023 + .byte 0x59 .byte 0x7 - .4byte 0x3cd + .4byte 0x3ec .uleb128 0x2 .byte 0x91 .sleb128 -11 .byte 0 - .uleb128 0x14 - .4byte .LASF1010 + .uleb128 0x15 + .4byte .LASF1028 .byte 0x1 - .byte 0xc + .byte 0xd .byte 0xd .4byte .LFB0 .4byte .LFE0-.LFB0 @@ -962,6 +1002,13 @@ main: .byte 0 .byte 0 .uleb128 0x5 + .uleb128 0x5 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x6 .uleb128 0x28 .byte 0 .uleb128 0x3 @@ -970,100 +1017,91 @@ main: .uleb128 0xb .byte 0 .byte 0 - .uleb128 0x6 - .uleb128 0x5 + .uleb128 0x7 + .uleb128 0x2e .byte 0 - .uleb128 0x49 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 6 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x8 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 6 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x1 .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x7 + .uleb128 0x9 .uleb128 0x35 .byte 0 .uleb128 0x49 .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x8 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x21 - .sleb128 6 - .uleb128 0x39 - .uleb128 0x21 - .sleb128 8 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x9 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x21 - .sleb128 6 - .uleb128 0x39 - .uleb128 0x21 - .sleb128 8 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 .uleb128 0xa - .uleb128 0x2e + .uleb128 0x13 .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0x21 - .sleb128 5 - .uleb128 0x3b + .uleb128 0x8 .uleb128 0xb - .uleb128 0x39 + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b .uleb128 0x21 .sleb128 6 - .uleb128 0x27 - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 + .uleb128 0x39 + .uleb128 0x21 + .sleb128 8 .uleb128 0x1 .uleb128 0x13 .byte 0 .byte 0 .uleb128 0xb - .uleb128 0x2e - .byte 0 - .uleb128 0x3f - .uleb128 0x19 + .uleb128 0x13 + .byte 0x1 .uleb128 0x3 .uleb128 0xe - .uleb128 0x3a - .uleb128 0x21 - .sleb128 8 - .uleb128 0x3b .uleb128 0xb - .uleb128 0x39 + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b .uleb128 0x21 .sleb128 6 - .uleb128 0x27 - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 + .uleb128 0x39 + .uleb128 0x21 + .sleb128 8 + .uleb128 0x1 + .uleb128 0x13 .byte 0 .byte 0 .uleb128 0xc @@ -1154,6 +1192,15 @@ main: .byte 0 .byte 0 .uleb128 0x12 + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x13 .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -1182,7 +1229,7 @@ main: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x13 + .uleb128 0x14 .uleb128 0x34 .byte 0 .uleb128 0x3 @@ -1199,7 +1246,7 @@ main: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x14 + .uleb128 0x15 .uleb128 0x2e .byte 0 .uleb128 0x3 @@ -2624,76 +2671,76 @@ main: .byte 0x5 .uleb128 0 .4byte .LASF453 - .file 9 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" + .file 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" .byte 0x3 .uleb128 0x1 - .uleb128 0x9 + .uleb128 0xa .byte 0x5 .uleb128 0xe .4byte .LASF454 - .file 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" + .file 11 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" .byte 0x3 .uleb128 0x10 - .uleb128 0xa + .uleb128 0xb .byte 0x5 .uleb128 0x7 .4byte .LASF455 - .file 11 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_newlib_version.h" + .file 12 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_newlib_version.h" .byte 0x3 .uleb128 0xa - .uleb128 0xb + .uleb128 0xc .byte 0x7 .4byte .Ldebug_macro2 .byte 0x4 .byte 0x7 .4byte .Ldebug_macro3 .byte 0x4 - .file 12 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" + .file 13 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" .byte 0x3 .uleb128 0x11 - .uleb128 0xc + .uleb128 0xd .byte 0x5 .uleb128 0x2 .4byte .LASF478 - .file 13 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" + .file 14 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" .byte 0x3 .uleb128 0x4 - .uleb128 0xd + .uleb128 0xe .byte 0x7 .4byte .Ldebug_macro4 .byte 0x4 - .file 14 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" + .file 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" .byte 0x3 .uleb128 0x5 - .uleb128 0xe + .uleb128 0xf .byte 0x7 .4byte .Ldebug_macro5 .byte 0x4 .byte 0x7 .4byte .Ldebug_macro6 .byte 0x4 - .file 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" + .file 16 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" .byte 0x3 .uleb128 0x12 - .uleb128 0xf + .uleb128 0x10 .byte 0x7 .4byte .Ldebug_macro7 .byte 0x4 - .file 16 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" + .file 17 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" .byte 0x3 .uleb128 0x13 - .uleb128 0x10 + .uleb128 0x11 .byte 0x7 .4byte .Ldebug_macro8 .byte 0x4 - .file 17 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" + .file 18 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" .byte 0x3 .uleb128 0x14 - .uleb128 0x11 - .file 18 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" + .uleb128 0x12 + .file 19 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" .byte 0x3 .uleb128 0x9 - .uleb128 0x12 + .uleb128 0x13 .byte 0x5 .uleb128 0xa .4byte .LASF546 @@ -2719,20 +2766,20 @@ main: .byte 0x5 .uleb128 0x15 .4byte .LASF647 - .file 19 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" + .file 20 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" .byte 0x3 .uleb128 0x16 - .uleb128 0x13 + .uleb128 0x14 .byte 0x7 .4byte .Ldebug_macro12 .byte 0x4 .byte 0x7 .4byte .Ldebug_macro13 .byte 0x4 - .file 20 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" + .file 21 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" .byte 0x3 .uleb128 0x2 - .uleb128 0x14 + .uleb128 0x15 .byte 0x7 .4byte .Ldebug_macro14 .byte 0x4 @@ -2766,9 +2813,15 @@ main: .byte 0x7 .4byte .Ldebug_macro19 .byte 0x4 + .byte 0x3 + .uleb128 0x9 + .uleb128 0x9 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 .byte 0x5 - .uleb128 0xa - .4byte .LASF939 + .uleb128 0xb + .4byte .LASF954 .byte 0x4 .byte 0 .section .debug_macro,"G",%progbits,wm4._newlib_version.h.4.6d111ab2e95434b664b53815e5c8ccba,comdat @@ -4325,6 +4378,56 @@ main: .uleb128 0x21 .4byte .LASF938 .byte 0 + .section .debug_macro,"G",%progbits,wm4.usart.h.2.41f911260774cb69712a09f3470bfff3,comdat +.Ldebug_macro20: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x2 + .4byte .LASF939 + .byte 0x5 + .uleb128 0x10 + .4byte .LASF940 + .byte 0x5 + .uleb128 0x11 + .4byte .LASF941 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF942 + .byte 0x5 + .uleb128 0x16 + .4byte .LASF943 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF944 + .byte 0x5 + .uleb128 0x1b + .4byte .LASF945 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF946 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF947 + .byte 0x5 + .uleb128 0x22 + .4byte .LASF948 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF949 + .byte 0x5 + .uleb128 0x26 + .4byte .LASF950 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF951 + .byte 0x5 + .uleb128 0x29 + .4byte .LASF952 + .byte 0x5 + .uleb128 0x2a + .4byte .LASF953 + .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: .section .debug_str,"MS",%progbits,1 @@ -4340,7 +4443,7 @@ main: .ascii "__UHA_FBIT__ 8\000" .LASF814: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF941: +.LASF956: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -4370,7 +4473,7 @@ main: .ascii "__WINT_MIN__ 0U\000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF980: +.LASF995: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -4386,6 +4489,8 @@ main: .ascii "__int20__\000" .LASF904: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" +.LASF953: + .ascii "USART_BRR_FRACTION_MASK (0b111)\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" .LASF169: @@ -4396,7 +4501,7 @@ main: .ascii "__FRACT_MIN__ (-0.5R-0.5R)\000" .LASF324: .ascii "__ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK\000" -.LASF983: +.LASF998: .ascii "flash\000" .LASF294: .ascii "__USACCUM_MAX__ 0XFFFFP-8UHK\000" @@ -4404,6 +4509,8 @@ main: .ascii "__SFRACT_FBIT__ 7\000" .LASF94: .ascii "__INTMAX_WIDTH__ 64\000" +.LASF939: + .ascii "USART_H_ \000" .LASF448: .ascii "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC\000" .LASF331: @@ -4507,7 +4614,7 @@ main: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF1006: +.LASF1024: .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" @@ -4526,7 +4633,7 @@ main: .ascii "__int_fast32_t_defined 1\000" .LASF133: .ascii "__INT_FAST64_WIDTH__ 64\000" -.LASF998: +.LASF1013: .ascii "DMAR\000" .LASF659: .ascii "___int_wchar_t_h \000" @@ -4579,13 +4686,13 @@ main: .ascii "SCNo32 __SCN32(o)\000" .LASF540: .ascii "_NOTHROW \000" -.LASF993: +.LASF1008: .ascii "CCR1\000" .LASF633: .ascii "WCHAR_MAX (__WCHAR_MAX__)\000" -.LASF995: +.LASF1010: .ascii "CCR3\000" -.LASF996: +.LASF1011: .ascii "CCR4\000" .LASF307: .ascii "__LACCUM_IBIT__ 32\000" @@ -4609,7 +4716,7 @@ main: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF968: +.LASF983: .ascii "AHB2LPENR\000" .LASF499: .ascii "__RAND_MAX\000" @@ -4652,7 +4759,7 @@ main: .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF944: +.LASF959: .ascii "long int\000" .LASF719: .ascii "SCNd16 __SCN16(d)\000" @@ -4703,7 +4810,7 @@ main: .ascii "__FLT32_MAX_EXP__ 128\000" .LASF824: .ascii "__PRIMAX(x) __STRINGIFY(ll ##x)\000" -.LASF1009: +.LASF1027: .ascii "main\000" .LASF435: .ascii "__THUMB_INTERWORK__ 1\000" @@ -4731,7 +4838,7 @@ main: .ascii "__SIZEOF_LONG__ 4\000" .LASF753: .ascii "PRIi32 __PRI32(i)\000" -.LASF965: +.LASF980: .ascii "APB2ENR\000" .LASF855: .ascii "RCC_H_ \000" @@ -4747,7 +4854,7 @@ main: .ascii "FLASH_ACR_ICEN_BIT 9\000" .LASF815: .ascii "PRIoFAST64 __PRI64FAST(o)\000" -.LASF967: +.LASF982: .ascii "AHB1LPENR\000" .LASF406: .ascii "__ARM_FEATURE_SIMD32 1\000" @@ -4759,7 +4866,7 @@ main: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF977: +.LASF992: .ascii "DCKCFGR\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -4769,7 +4876,7 @@ main: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF562: .ascii "_UINT8_T_DECLARED \000" -.LASF940: +.LASF955: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -4779,7 +4886,7 @@ main: .ascii "INTMAX_MIN (-INTMAX_MAX - 1)\000" .LASF364: .ascii "__GNUC_STDC_INLINE__ 1\000" -.LASF982: +.LASF997: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -4805,19 +4912,19 @@ main: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF879: .ascii "RCC_PLLCFGR_PLLN_MASK (0b111111111)\000" -.LASF957: +.LASF972: .ascii "RESERVED0\000" -.LASF960: +.LASF975: .ascii "RESERVED1\000" -.LASF963: +.LASF978: .ascii "RESERVED2\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" -.LASF969: +.LASF984: .ascii "RESERVED4\000" .LASF241: .ascii "__FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x\000" -.LASF974: +.LASF989: .ascii "RESERVED6\000" .LASF152: .ascii "__FLT_MAX_10_EXP__ 38\000" @@ -4864,13 +4971,13 @@ main: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF951: +.LASF966: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF999: +.LASF1016: .ascii "_Bool\000" .LASF900: .ascii "RCC_APB1ENR_PWREN_BIT 28\000" @@ -4885,15 +4992,15 @@ main: .ascii "SCNxLEAST64 __SCN64LEAST(x)\000" .LASF769: .ascii "SCNdLEAST32 __SCN32LEAST(d)\000" -.LASF966: +.LASF981: .ascii "RESERVED3\000" .LASF22: .ascii "__SIZEOF_LONG_DOUBLE__ 8\000" -.LASF972: +.LASF987: .ascii "RESERVED5\000" -.LASF990: +.LASF1005: .ascii "CCMR1\000" -.LASF991: +.LASF1006: .ascii "CCMR2\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" @@ -4901,7 +5008,7 @@ main: .ascii "TIMER_H_ \000" .LASF469: .ascii "_MB_LEN_MAX 8\000" -.LASF979: +.LASF994: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4915,6 +5022,8 @@ main: .ascii "__need_wchar_t \000" .LASF66: .ascii "__UINT_FAST64_TYPE__ long long unsigned int\000" +.LASF940: + .ascii "USART2_BASE_ADDR (0x40004400U)\000" .LASF894: .ascii "RCC_CFGR_SWS_BIT 2\000" .LASF156: @@ -4933,6 +5042,8 @@ main: .ascii "__FLT32_IS_IEC_60559__ 2\000" .LASF629: .ascii "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))\000" +.LASF949: + .ascii "USART_CR1_RE_ENABLE (1 << USART_CR1_RE_BIT)\000" .LASF724: .ascii "PRIdLEAST16 __PRI16LEAST(d)\000" .LASF755: @@ -4941,9 +5052,9 @@ main: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF945: +.LASF960: .ascii "__uint16_t\000" -.LASF962: +.LASF977: .ascii "AHB2ENR\000" .LASF804: .ascii "PRIoLEAST64 __PRI64LEAST(o)\000" @@ -4957,7 +5068,7 @@ main: .ascii "__UINT8_MAX__ 0xff\000" .LASF552: .ascii "___int16_t_defined 1\000" -.LASF987: +.LASF1002: .ascii "timer\000" .LASF184: .ascii "__LDBL_MAX_EXP__ 1024\000" @@ -4977,7 +5088,7 @@ main: .ascii "INT32_MAX (__INT32_MAX__)\000" .LASF426: .ascii "__ARM_FP16_FORMAT_ALTERNATIVE\000" -.LASF1010: +.LASF1028: .ascii "system_clock_init\000" .LASF918: .ascii "FLASH ((struct flash *) FLASH_BASE_ADDR)\000" @@ -5049,7 +5160,7 @@ main: .ascii "__ELF__ 1\000" .LASF688: .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" -.LASF973: +.LASF988: .ascii "BDCR\000" .LASF853: .ascii "false ((_Bool)+0u)\000" @@ -5111,7 +5222,7 @@ main: .ascii "RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)\000" .LASF762: .ascii "SCNx32 __SCN32(x)\000" -.LASF954: +.LASF969: .ascii "CFGR\000" .LASF557: .ascii "___int_least32_t_defined 1\000" @@ -5159,7 +5270,7 @@ main: .ascii "__PRI8LEAST(x) __LEAST8 __STRINGIFY(x)\000" .LASF174: .ascii "__DBL_EPSILON__ ((double)2.2204460492503131e-16L)\000" -.LASF985: +.LASF1000: .ascii "OPTKEYR\000" .LASF268: .ascii "__LFRACT_MIN__ (-0.5LR-0.5LR)\000" @@ -5183,7 +5294,7 @@ main: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF947: +.LASF962: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -5203,9 +5314,9 @@ main: .ascii "RCC_PLLCFGR_PLLSRC_BIT 22\000" .LASF907: .ascii "GPIO_AF_USART2_RX (0b0111)\000" -.LASF1000: +.LASF1015: .ascii "gpio_write\000" -.LASF989: +.LASF1004: .ascii "DIER\000" .LASF656: .ascii "_WCHAR_T_DEFINED_ \000" @@ -5215,7 +5326,7 @@ main: .ascii "int +2\000" .LASF636: .ascii "INT8_C(x) __INT8_C(x)\000" -.LASF939: +.LASF954: .ascii "exit 42\000" .LASF63: .ascii "__UINT_FAST8_TYPE__ unsigned int\000" @@ -5247,7 +5358,7 @@ main: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF1001: +.LASF1017: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -5263,6 +5374,8 @@ main: .ascii "PRIXLEAST16 __PRI16LEAST(X)\000" .LASF622: .ascii "INT_FAST64_MAX (__INT_FAST64_MAX__)\000" +.LASF948: + .ascii "USART_CR1_RE_BIT 2\000" .LASF373: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: @@ -5313,7 +5426,7 @@ main: .ascii "PRIX32 __PRI32(X)\000" .LASF773: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF1002: +.LASF1019: .ascii "tim4_start\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" @@ -5345,7 +5458,7 @@ main: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF946: +.LASF961: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -5355,7 +5468,7 @@ main: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF948: +.LASF963: .ascii "long long int\000" .LASF784: .ascii "SCNxFAST32 __SCN32FAST(x)\000" @@ -5365,7 +5478,7 @@ main: .ascii "__LONG_WIDTH__ 32\000" .LASF602: .ascii "UINT32_MAX (__UINT32_MAX__)\000" -.LASF1004: +.LASF1022: .ascii "counter\000" .LASF648: .ascii "__wchar_t__ \000" @@ -5381,7 +5494,7 @@ main: .ascii "WINT_MAX (__WINT_MAX__)\000" .LASF822: .ascii "SCNuFAST64 __SCN64FAST(u)\000" -.LASF975: +.LASF990: .ascii "SSCGR\000" .LASF137: .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" @@ -5395,7 +5508,7 @@ main: .ascii "__INTPTR_WIDTH__ 32\000" .LASF379: .ascii "__GCC_ATOMIC_LLONG_LOCK_FREE 1\000" -.LASF953: +.LASF968: .ascii "PLLCFGR\000" .LASF239: .ascii "__FLT32X_MIN__ 2.2250738585072014e-308F32x\000" @@ -5411,7 +5524,7 @@ main: .ascii "___int32_t_defined 1\000" .LASF83: .ascii "__INT_WIDTH__ 32\000" -.LASF959: +.LASF974: .ascii "APB2RSTR\000" .LASF409: .ascii "__ARM_ARCH_PROFILE\000" @@ -5461,7 +5574,7 @@ main: .ascii "__ARM_NEON_FP\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF971: +.LASF986: .ascii "APB2LPENR\000" .LASF938: .ascii "TIM_ENABLE (1 << TIM_CR1_CEN_BIT)\000" @@ -5494,7 +5607,7 @@ main: .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF950: +.LASF965: .ascii "unsigned int\000" .LASF862: .ascii "RCC_CR_HSERDY_BIT 17\000" @@ -5540,6 +5653,8 @@ main: .ascii "__INT16 \"h\"\000" .LASF402: .ascii "__ARM_FEATURE_LDREX\000" +.LASF1018: + .ascii "usart2_start\000" .LASF336: .ascii "__UQQ_FBIT__ 8\000" .LASF427: @@ -5586,7 +5701,7 @@ main: .ascii "PWR_H_ \000" .LASF356: .ascii "__USA_FBIT__ 16\000" -.LASF970: +.LASF985: .ascii "APB1LPENR\000" .LASF479: .ascii "__IEEE_LITTLE_ENDIAN \000" @@ -5632,7 +5747,7 @@ main: .ascii "WCHAR_MIN (__WCHAR_MIN__)\000" .LASF594: .ascii "INT16_MIN (-__INT16_MAX__ - 1)\000" -.LASF994: +.LASF1009: .ascii "CCR2\000" .LASF189: .ascii "__LDBL_NORM_MAX__ 1.7976931348623157e+308L\000" @@ -5686,6 +5801,8 @@ main: .ascii "__LFRACT_IBIT__ 0\000" .LASF16: .ascii "__SIZEOF_INT__ 4\000" +.LASF947: + .ascii "USART_CR1_TE_ENABLE (1 << USART_CR1_TE_BIT)\000" .LASF166: .ascii "__DBL_MIN_EXP__ (-1021)\000" .LASF705: @@ -5718,13 +5835,13 @@ main: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF733: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF958: +.LASF973: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF964: +.LASF979: .ascii "APB1ENR\000" .LASF741: .ascii "SCNdFAST16 __SCN16FAST(d)\000" @@ -5754,7 +5871,7 @@ main: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF949: +.LASF964: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -5805,10 +5922,12 @@ main: .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" -.LASF992: +.LASF1007: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" +.LASF943: + .ascii "USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT)\000" .LASF231: .ascii "__FLT32X_DIG__ 15\000" .LASF740: @@ -5863,7 +5982,7 @@ main: .ascii "__int20__ +2\000" .LASF654: .ascii "_WCHAR_T_ \000" -.LASF988: +.LASF1003: .ascii "SMCR\000" .LASF828: .ascii "PRIoMAX __PRIMAX(o)\000" @@ -5871,12 +5990,14 @@ main: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF925: .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" -.LASF978: +.LASF993: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" .LASF913: .ascii "PIN(port,num) (PORT(port) | num)\000" +.LASF1020: + .ascii "usart2_init\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -5901,6 +6022,8 @@ main: .ascii "PRIi16 __PRI16(i)\000" .LASF390: .ascii "__ARM_FEATURE_DSP 1\000" +.LASF945: + .ascii "USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT)\000" .LASF825: .ascii "__SCNMAX(x) __STRINGIFY(ll ##x)\000" .LASF327: @@ -5933,13 +6056,15 @@ main: .ascii "__INTMAX_TYPE__ long long int\000" .LASF377: .ascii "__GCC_ATOMIC_INT_LOCK_FREE 2\000" +.LASF951: + .ascii "USART_BRR_MANTISSA_MASK (0b111111111111)\000" .LASF561: .ascii "_INT8_T_DECLARED \000" .LASF436: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF961: +.LASF976: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5979,7 +6104,7 @@ main: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF956: +.LASF971: .ascii "AHB2RSTR\000" .LASF671: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" @@ -6003,18 +6128,22 @@ main: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: .ascii "__ARM_FEATURE_CDE\000" -.LASF984: +.LASF999: .ascii "KEYR\000" .LASF509: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF942: +.LASF957: .ascii "short int\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" +.LASF941: + .ascii "USART2 ((struct usart *) USART2_BASE_ADDR)\000" .LASF121: .ascii "__UINT16_C(c) c\000" +.LASF952: + .ascii "USART_BRR_FRACTION_BIT 0\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" .LASF534: @@ -6023,6 +6152,8 @@ main: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF365: .ascii "__NO_INLINE__ 1\000" +.LASF942: + .ascii "USART_SR_TC_BIT 6\000" .LASF710: .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" .LASF606: @@ -6033,7 +6164,7 @@ main: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF981: +.LASF996: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -6117,11 +6248,11 @@ main: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF701: .ascii "PRIXFAST8 __PRI8FAST(X)\000" -.LASF1005: +.LASF1023: .ascii "led_on\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" -.LASF1007: +.LASF1025: .ascii "src/main.c\000" .LASF126: .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" @@ -6159,13 +6290,13 @@ main: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF651: .ascii "_T_WCHAR_ \000" -.LASF997: +.LASF1012: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF664: .ascii "_BSD_WCHAR_T_\000" -.LASF976: +.LASF991: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -6173,9 +6304,9 @@ main: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF756: .ascii "PRIx32 __PRI32(x)\000" -.LASF1003: +.LASF1021: .ascii "tim4_init\000" -.LASF952: +.LASF967: .ascii "uint32_t\000" .LASF878: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -6183,7 +6314,7 @@ main: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" .LASF506: .ascii "_SYS__INTSUP_H \000" -.LASF986: +.LASF1001: .ascii "OPTCR\000" .LASF290: .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" @@ -6241,7 +6372,7 @@ main: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF943: +.LASF958: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6249,6 +6380,8 @@ main: .ascii "__FLT32_HAS_INFINITY__ 1\000" .LASF416: .ascii "__thumb__ 1\000" +.LASF950: + .ascii "USART_BRR_MANTISSA_BIT 4\000" .LASF421: .ascii "__ARMEL__ 1\000" .LASF690: @@ -6257,6 +6390,8 @@ main: .ascii "__HQ_FBIT__ 15\000" .LASF854: .ascii "__bool_true_false_are_defined 1\000" +.LASF944: + .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" @@ -6266,6 +6401,8 @@ main: .ascii "RCC_CR_HSIRDY_BIT 1\000" .LASF80: .ascii "__SIZE_MAX__ 0xffffffffU\000" +.LASF1014: + .ascii "usart2_write\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" .LASF916: @@ -6286,7 +6423,7 @@ main: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF522: .ascii "long +4\000" -.LASF955: +.LASF970: .ascii "AHB1RSTR\000" .LASF723: .ascii "SCNx16 __SCN16(x)\000" @@ -6296,7 +6433,7 @@ main: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF1008: +.LASF1026: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF796: .ascii "PRIX64 __PRI64(X)\000" @@ -6334,6 +6471,8 @@ main: .ascii "__DBL_MIN_10_EXP__ (-307)\000" .LASF795: .ascii "PRIx64 __PRI64(x)\000" +.LASF946: + .ascii "USART_CR1_TE_BIT 3\000" .LASF512: .ascii "__int20\000" .LASF619: diff --git a/build/main.i b/build/main.i index 69baaab..52527ad 100644 --- a/build/main.i +++ b/build/main.i @@ -2252,6 +2252,56 @@ struct timer { void tim4_init(void); void tim4_start(void); # 9 "src/main.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); +# 10 "src/main.c" 2 #define exit 42 @@ -2321,8 +2371,10 @@ static void system_clock_init(void) { int main(void) { (void) system_clock_init(); (void) tim4_init(); + (void) usart2_init(); (void) tim4_start(); + (void) usart2_start(); uint16_t led = (((('C') - 'A') << 8) | 13); ((struct rcc *) (0x40023800U))->AHB1ENR |= (1 << (led >> 8)); @@ -2330,19 +2382,21 @@ int main(void) { uint16_t counter = ((struct timer *) (0x40000800U))->CNT; -# 86 "src/main.c" 3 4 +# 89 "src/main.c" 3 4 _Bool -# 86 "src/main.c" +# 89 "src/main.c" led_on = -# 86 "src/main.c" 3 4 +# 89 "src/main.c" 3 4 ((_Bool)+0u) -# 86 "src/main.c" +# 89 "src/main.c" ; while(1) { if ((((struct timer *) (0x40000800U))->CNT - counter) >= 250) { led_on = !led_on; gpio_write(led, led_on); + usart2_write("hello, world!\n"); + counter = ((struct timer *) (0x40000800U))->CNT; } }; diff --git a/build/main.o b/build/main.o index 2ea000bb1b2bb8060257a94fb14140a4b13a1b88..06cdb228385386f97ef1cdd3400e579d55e3cf80 100644 GIT binary patch delta 20353 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 KWnkb1g$Mv+q6oVH delta 19092 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 diff --git a/src/main.c b/src/main.c index 8c0edc1..634d4d0 100644 --- a/src/main.c +++ b/src/main.c @@ -6,6 +6,7 @@ #include "flash.h" #include "pwr.h" #include "timer.h" +#include "usart.h" #define exit 42 @@ -75,8 +76,10 @@ static void system_clock_init(void) { int main(void) { (void) system_clock_init(); (void) tim4_init(); + (void) usart2_init(); (void) tim4_start(); + (void) usart2_start(); uint16_t led = PIN('C', 13); // Blue LED RCC->AHB1ENR |= (1 << PINPORT(led)); // Enable GPIO clock for LED @@ -89,6 +92,8 @@ int main(void) { led_on = !led_on; gpio_write(led, led_on); + usart2_write("hello, world!\n"); + counter = TIM4->CNT; } }; -- 2.51.0 From 1ae81edf572cb219ddbc261587f81723f40f408e Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:37:52 +0100 Subject: [PATCH 15/17] Add ability to debug clock with MCO1 --- build/final.elf | Bin 61936 -> 62296 bytes build/final.elf.map | 58 ++-- build/gpio.S | 203 +++++++------ build/gpio.i | 5 +- build/gpio.o | Bin 43004 -> 43040 bytes build/main.S | 727 +++++++++++++++++++++++--------------------- build/main.i | 18 +- build/main.o | Bin 50084 -> 50452 bytes build/timer.S | 360 ++++++++++++---------- build/timer.i | 13 + build/timer.o | Bin 44720 -> 45048 bytes build/usart.S | 619 ++++++++++++++++++++----------------- build/usart.i | 24 +- build/usart.o | Bin 47772 -> 48140 bytes src/gpio.h | 1 + src/rcc.h | 13 + src/usart.c | 9 + 17 files changed, 1124 insertions(+), 926 deletions(-) diff --git a/build/final.elf b/build/final.elf index 5f5d0642ee94f3999226a25c91e943ba2d7705cf..6ce76be4c9892667cdbc9c244a1abe97147f9dcb 100755 GIT binary patch delta 17107 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 DVq-$o delta 16774 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 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" @@ -5001,7 +5006,7 @@ gpio_write: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF875: +.LASF876: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -5077,11 +5082,11 @@ gpio_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF576: .ascii "_UINTPTR_T_DECLARED \000" -.LASF889: +.LASF890: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF888: +.LASF889: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -5095,7 +5100,7 @@ gpio_write: .ascii "__INT32_TYPE__ long int\000" .LASF118: .ascii "__UINT_LEAST8_MAX__ 0xff\000" -.LASF887: +.LASF888: .ascii "LCKR\000" .LASF520: .ascii "__int20__ +2\000" @@ -5109,7 +5114,7 @@ gpio_write: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" -.LASF862: +.LASF863: .ascii "PIN(port,num) (PORT(port) | num)\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" @@ -5145,7 +5150,7 @@ gpio_write: .ascii "__QQ_IBIT__ 0\000" .LASF763: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF883: +.LASF884: .ascii "OTYPER\000" .LASF811: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -5165,11 +5170,11 @@ gpio_write: .ascii "__GNUC_MINOR__ 3\000" .LASF57: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" -.LASF901: +.LASF902: .ascii "src/gpio.c\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF858: +.LASF859: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" @@ -5221,7 +5226,7 @@ gpio_write: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" -.LASF859: +.LASF860: .ascii "GPIO_PORT_OFFSET (0x400U)\000" .LASF50: .ascii "__UINT64_TYPE__ long long unsigned int\000" @@ -5241,7 +5246,7 @@ gpio_write: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF885: +.LASF886: .ascii "PUPDR\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5249,7 +5254,7 @@ gpio_write: .ascii "__UINT16_C(c) c\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" -.LASF899: +.LASF900: .ascii "mode\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5263,7 +5268,7 @@ gpio_write: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF893: +.LASF894: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5301,7 +5306,7 @@ gpio_write: .ascii "__FAST8 \000" .LASF496: .ascii "__XSI_VISIBLE 0\000" -.LASF886: +.LASF887: .ascii "BSRR\000" .LASF794: .ascii "PRIu64 __PRI64(u)\000" @@ -5389,7 +5394,7 @@ gpio_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF880: +.LASF881: .ascii "uint32_t\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5439,13 +5444,13 @@ gpio_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF326: .ascii "__QQ_FBIT__ 7\000" -.LASF863: +.LASF864: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF870: +.LASF871: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5493,7 +5498,7 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF902: +.LASF903: .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 9250b62..d992b00 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -2000,6 +2000,7 @@ struct gpio { }; +#define GPIO_AF_MCO_1 (0b0000) #define GPIO_AF_USART2_RX (0b0111) #define GPIO_AF_USART2_TX (0b0111) @@ -2026,9 +2027,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, -# 46 "src/gpio.h" 3 4 +# 47 "src/gpio.h" 3 4 _Bool -# 46 "src/gpio.h" +# 47 "src/gpio.h" val); # 5 "src/gpio.c" 2 diff --git a/build/gpio.o b/build/gpio.o index 8eb3dee2de4010056a7436f33a0112aaaca0cd89..656d143b69402a982a5821bf9f901faa97f617c9 100644 GIT binary patch delta 5129 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 J7(_t^0RV~XW}yH8 delta 5103 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 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" -.LASF902: +.LASF890: + .ascii "RCC_CFGR_MCO1PRE_DIV4 (0b110)\000" +.LASF910: .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" -.LASF889: +.LASF897: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF645: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" @@ -5835,16 +5876,18 @@ main: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF733: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF973: +.LASF982: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF979: +.LASF988: .ascii "APB1ENR\000" .LASF741: .ascii "SCNdFAST16 __SCN16FAST(d)\000" +.LASF888: + .ascii "RCC_CFGR_MCO1_BIT 21\000" .LASF872: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" @@ -5871,13 +5914,13 @@ main: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF964: +.LASF973: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" .LASF150: .ascii "__FLT_MIN_10_EXP__ (-37)\000" -.LASF895: +.LASF903: .ascii "RCC_CFGR_SWS_MASK (0b11)\000" .LASF312: .ascii "__ULACCUM_IBIT__ 32\000" @@ -5918,15 +5961,15 @@ main: .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" -.LASF930: +.LASF939: .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" -.LASF1007: +.LASF1016: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" -.LASF943: +.LASF952: .ascii "USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT)\000" .LASF231: .ascii "__FLT32X_DIG__ 15\000" @@ -5970,6 +6013,8 @@ main: .ascii "SIZE_MAX (__SIZE_MAX__)\000" .LASF333: .ascii "__DQ_IBIT__ 0\000" +.LASF893: + .ascii "RCC_CFGR_MCO1PRE_MASK (0b111)\000" .LASF450: .ascii "__ARM_BF16_FORMAT_ALTERNATIVE\000" .LASF45: @@ -5982,21 +6027,21 @@ main: .ascii "__int20__ +2\000" .LASF654: .ascii "_WCHAR_T_ \000" -.LASF1003: +.LASF1012: .ascii "SMCR\000" .LASF828: .ascii "PRIoMAX __PRIMAX(o)\000" .LASF747: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" -.LASF925: +.LASF934: .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" -.LASF993: +.LASF1002: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" -.LASF913: +.LASF922: .ascii "PIN(port,num) (PORT(port) | num)\000" -.LASF1020: +.LASF1029: .ascii "usart2_init\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" @@ -6022,7 +6067,7 @@ main: .ascii "PRIi16 __PRI16(i)\000" .LASF390: .ascii "__ARM_FEATURE_DSP 1\000" -.LASF945: +.LASF954: .ascii "USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT)\000" .LASF825: .ascii "__SCNMAX(x) __STRINGIFY(ll ##x)\000" @@ -6050,13 +6095,13 @@ main: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF909: +.LASF918: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" .LASF377: .ascii "__GCC_ATOMIC_INT_LOCK_FREE 2\000" -.LASF951: +.LASF960: .ascii "USART_BRR_MANTISSA_MASK (0b111111111111)\000" .LASF561: .ascii "_INT8_T_DECLARED \000" @@ -6064,7 +6109,7 @@ main: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF976: +.LASF985: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -6104,11 +6149,11 @@ main: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF971: +.LASF980: .ascii "AHB2RSTR\000" .LASF671: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" -.LASF887: +.LASF895: .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" @@ -6128,21 +6173,21 @@ main: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: .ascii "__ARM_FEATURE_CDE\000" -.LASF999: +.LASF1008: .ascii "KEYR\000" .LASF509: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF957: +.LASF966: .ascii "short int\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" -.LASF941: +.LASF950: .ascii "USART2 ((struct usart *) USART2_BASE_ADDR)\000" .LASF121: .ascii "__UINT16_C(c) c\000" -.LASF952: +.LASF961: .ascii "USART_BRR_FRACTION_BIT 0\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" @@ -6152,7 +6197,7 @@ main: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF365: .ascii "__NO_INLINE__ 1\000" -.LASF942: +.LASF951: .ascii "USART_SR_TC_BIT 6\000" .LASF710: .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" @@ -6164,11 +6209,11 @@ main: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF996: +.LASF1005: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF936: +.LASF945: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" @@ -6176,7 +6221,7 @@ main: .ascii "UINT64_MAX (__UINT64_MAX__)\000" .LASF471: .ascii "_RETARGETABLE_LOCKING 1\000" -.LASF919: +.LASF928: .ascii "FLASH_ACR_DCEN_BIT 10\000" .LASF453: .ascii "__USES_INITFINI__ 1\000" @@ -6236,7 +6281,7 @@ main: .ascii "PRIdMAX __PRIMAX(d)\000" .LASF388: .ascii "__SIZEOF_WINT_T__ 4\000" -.LASF886: +.LASF894: .ascii "RCC_CFGR_PPRE2_BIT 13\000" .LASF782: .ascii "SCNoFAST32 __SCN32FAST(o)\000" @@ -6248,11 +6293,11 @@ main: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF701: .ascii "PRIXFAST8 __PRI8FAST(X)\000" -.LASF1023: +.LASF1032: .ascii "led_on\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" -.LASF1025: +.LASF1034: .ascii "src/main.c\000" .LASF126: .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" @@ -6290,13 +6335,13 @@ main: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF651: .ascii "_T_WCHAR_ \000" -.LASF1012: +.LASF1021: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF664: .ascii "_BSD_WCHAR_T_\000" -.LASF991: +.LASF1000: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -6304,9 +6349,9 @@ main: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF756: .ascii "PRIx32 __PRI32(x)\000" -.LASF1021: +.LASF1030: .ascii "tim4_init\000" -.LASF967: +.LASF976: .ascii "uint32_t\000" .LASF878: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -6314,13 +6359,13 @@ main: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" .LASF506: .ascii "_SYS__INTSUP_H \000" -.LASF1001: +.LASF1010: .ascii "OPTCR\000" .LASF290: .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" .LASF415: .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" -.LASF917: +.LASF926: .ascii "FLASH_BASE_ADDR (0x40023C00U)\000" .LASF745: .ascii "SCNxFAST16 __SCN16FAST(x)\000" @@ -6366,13 +6411,13 @@ main: .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF914: +.LASF923: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF958: +.LASF967: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6380,7 +6425,7 @@ main: .ascii "__FLT32_HAS_INFINITY__ 1\000" .LASF416: .ascii "__thumb__ 1\000" -.LASF950: +.LASF959: .ascii "USART_BRR_MANTISSA_BIT 4\000" .LASF421: .ascii "__ARMEL__ 1\000" @@ -6390,9 +6435,9 @@ main: .ascii "__HQ_FBIT__ 15\000" .LASF854: .ascii "__bool_true_false_are_defined 1\000" -.LASF944: +.LASF953: .ascii "USART_CR1_UE_BIT 13\000" -.LASF911: +.LASF920: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF798: @@ -6401,11 +6446,11 @@ main: .ascii "RCC_CR_HSIRDY_BIT 1\000" .LASF80: .ascii "__SIZE_MAX__ 0xffffffffU\000" -.LASF1014: +.LASF1023: .ascii "usart2_write\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" -.LASF916: +.LASF925: .ascii "FLASH_H_ \000" .LASF412: .ascii "__ARM_ARCH\000" @@ -6423,7 +6468,7 @@ main: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF522: .ascii "long +4\000" -.LASF970: +.LASF979: .ascii "AHB1RSTR\000" .LASF723: .ascii "SCNx16 __SCN16(x)\000" @@ -6433,7 +6478,7 @@ main: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF1026: +.LASF1035: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF796: .ascii "PRIX64 __PRI64(X)\000" @@ -6471,7 +6516,7 @@ main: .ascii "__DBL_MIN_10_EXP__ (-307)\000" .LASF795: .ascii "PRIx64 __PRI64(x)\000" -.LASF946: +.LASF955: .ascii "USART_CR1_TE_BIT 3\000" .LASF512: .ascii "__int20\000" @@ -6491,7 +6536,7 @@ main: .ascii "__ULFRACT_IBIT__ 0\000" .LASF857: .ascii "RCC ((struct rcc *) RCC_BASE_ADDR)\000" -.LASF892: +.LASF900: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: .ascii "__INT_MAX__ 0x7fffffff\000" @@ -6499,7 +6544,7 @@ main: .ascii "__INT_LEAST64_TYPE__ long long int\000" .LASF103: .ascii "__UINT16_MAX__ 0xffff\000" -.LASF928: +.LASF937: .ascii "PWR_BASE_ADDR (0x40007000U)\000" .LASF446: .ascii "__ARM_FEATURE_CDE_COPROC\000" diff --git a/build/main.i b/build/main.i index 52527ad..bc9dacc 100644 --- a/build/main.i +++ b/build/main.i @@ -2070,6 +2070,19 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_2 (0b100) +#define RCC_CFGR_MCO1_HSE (0b10) +#define RCC_CFGR_MCO1_PLL (0b11) + +#define RCC_CFGR_MCO1_BIT 21 +#define RCC_CFGR_MCO1_MASK (0b11) + +#define RCC_CFGR_MCO1PRE_DIV4 (0b110) +#define RCC_CFGR_MCO1PRE_DIV2 (0b100) + +#define RCC_CFGR_MCO1PRE_BIT 24 +#define RCC_CFGR_MCO1PRE_MASK (0b111) + + #define RCC_CFGR_PPRE2_BIT 13 #define RCC_CFGR_PPRE2_MASK (0b111) @@ -2127,6 +2140,7 @@ struct gpio { }; +#define GPIO_AF_MCO_1 (0b0000) #define GPIO_AF_USART2_RX (0b0111) #define GPIO_AF_USART2_TX (0b0111) @@ -2153,9 +2167,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, -# 46 "src/gpio.h" 3 4 +# 47 "src/gpio.h" 3 4 _Bool -# 46 "src/gpio.h" +# 47 "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 06cdb228385386f97ef1cdd3400e579d55e3cf80..7cec1a07ccb52dfb4d17a6e6d410f053c681874b 100644 GIT binary patch delta 7992 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 FFaQ@GRv-WX delta 7647 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

q zW$HAh3Xn^tGu460))`ESpky$UsS^~evzYvi7#P@=GgU+|FtFWay2HW1z&4AyKn>~= z87WYqCm#t45d}L?`%ZB+NW0!KP;*1S02JN^A3#aLq@E3wl1x=Wq*)y(f0-wN%3q5e zAQ8*6pa`>51!Y-#e-P=A1`1fmb)c;5WCvSs__C3u&wU*Z>kk7q;fjsUL z2C97nH-W^1-h*;d@H|ky3Go8uvrw;kP*#du0pdih0VVP19iTvtkpXFr-3p56IAc(Q zFnJaz+o$w_l1{2GNIZ=Tlqk}So6++!Y}_nsPrn>1+ud6At?S! z0zjpHsRbzZ$}WIXS-G4KDEuoLKpHBqfXe9V4p8H_<`$^>tF-_HVBHZ=tk&y+iq}j8j0=RK^-mb96f6RglIRjFzBK zp2;W)GHn*45-0#>GuDF~K9BJgNc()o>a-UOx9#f+k$f?_G7 z4k*7bW85qP%74olS$O1|pM;L2B3F;_g5{Np+_yiP> zCm2tG?@36ASG8B zCxN2rT0P@3P>QV8Ce84y#Ab*NldsMEizO4^*JOW!w+S zYwsEBe}l5>2gVa1KYe7p1hW1U;}uYlerA*hh1Yk+!=RM(gE1PEyMHqJfzsSBMlVnt z{AM%&QGXbNK-T|bd<`=DKVusxcQ!Cx1+_vNnW{kPw~5IV6eC?suAofT&C~_5VItGK zdQh-UV%iAu(`2U2ptLiEDG3y8Q<*-3d_Rq8C#VdV!E_hoikVE)KruRti5uj#*-U1j zOg4wf4pgozV~PeY#*qOG~Wiw z?N$dx~n$T?oUprq)n z1WHN1k3reUZz)KSpe!9*UGXmfb3^rU}f?J1)OLq$VXy7LCIC(2B;Mw=?DrY zsm-7=T=oH|MvylK6+MdepbV|-2dny+azLTRp9spd0#%?&TEq|(*rLxs`XwwuNmkMn zq+iArge+<;%R*D4$q;e*x)KD`7`CZ)r)DF;W1!>mWzWJeI1`&kzNJ&C|m7vu)0e z+sU}uE@1}iaqG6JGa+0xenk7Sdu8CfHL1w;QhMtjLs)dEQL5gXrv9U>#MRKyGky)}?l8JGW znW?3vv5Aqv=B1PD6(_5#44AC4Wx{5jtq<6krc9drZnq!Pok^4J_LMQDOr5-Kj~`Rb z)X8jn{g`^DP7d4a$24Wh>`Q*0!eoRxAPrkO_kLl0y$!Z7um|9j$E<51Iv}V=hV+Z`0TvksOJLt#s zXT#*QgIbJclLhxH^QvrQV3@(kz!1d1z+g8yaj!IMi2?(I!{o-jDmrd-eIo%5HNY+ZsEy3M+BI3woZ;aqQ*L>gMqO7vz38?ce3DqVF1tF0BisN diff --git a/build/timer.S b/build/timer.S index fead8af..b1c92b7 100644 --- a/build/timer.S +++ b/build/timer.S @@ -136,10 +136,10 @@ tim4_start: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x7 - .4byte .LASF958 + .4byte .LASF966 .byte 0x1d - .4byte .LASF959 - .4byte .LASF960 + .4byte .LASF967 + .4byte .LASF968 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -147,17 +147,17 @@ tim4_start: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF906 + .4byte .LASF914 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF907 + .4byte .LASF915 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF908 + .4byte .LASF916 .uleb128 0x4 - .4byte .LASF911 + .4byte .LASF919 .byte 0x2 .byte 0x39 .byte 0x1c @@ -165,13 +165,13 @@ tim4_start: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF909 + .4byte .LASF917 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF910 + .4byte .LASF918 .uleb128 0x4 - .4byte .LASF912 + .4byte .LASF920 .byte 0x2 .byte 0x4f .byte 0x1b @@ -179,15 +179,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF913 + .4byte .LASF921 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF914 + .4byte .LASF922 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF915 + .4byte .LASF923 .uleb128 0x8 .byte 0x4 .byte 0x5 @@ -195,15 +195,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF916 + .4byte .LASF924 .uleb128 0x4 - .4byte .LASF917 + .4byte .LASF925 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF918 + .4byte .LASF926 .byte 0x3 .byte 0x30 .byte 0x14 @@ -224,13 +224,13 @@ tim4_start: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF919 + .4byte .LASF927 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF920 + .4byte .LASF928 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -242,115 +242,115 @@ tim4_start: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF921 + .4byte .LASF929 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF922 + .4byte .LASF930 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF923 + .4byte .LASF931 .byte 0x4 .byte 0xd .4byte 0x212 .byte 0x18 .uleb128 0x1 - .4byte .LASF924 + .4byte .LASF932 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF925 + .4byte .LASF933 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF926 + .4byte .LASF934 .byte 0x4 .byte 0x10 .4byte 0x212 .byte 0x28 .uleb128 0x1 - .4byte .LASF927 + .4byte .LASF935 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF928 + .4byte .LASF936 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF929 + .4byte .LASF937 .byte 0x4 .byte 0x13 .4byte 0x212 .byte 0x38 .uleb128 0x1 - .4byte .LASF930 + .4byte .LASF938 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF931 + .4byte .LASF939 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF932 + .4byte .LASF940 .byte 0x4 .byte 0x16 .4byte 0x212 .byte 0x48 .uleb128 0x1 - .4byte .LASF933 + .4byte .LASF941 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF934 + .4byte .LASF942 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF935 + .4byte .LASF943 .byte 0x4 .byte 0x19 .4byte 0x212 .byte 0x58 .uleb128 0x1 - .4byte .LASF936 + .4byte .LASF944 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF937 + .4byte .LASF945 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF938 + .4byte .LASF946 .byte 0x4 .byte 0x1c .4byte 0x212 .byte 0x68 .uleb128 0x1 - .4byte .LASF939 + .4byte .LASF947 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -362,25 +362,25 @@ tim4_start: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF940 + .4byte .LASF948 .byte 0x4 .byte 0x1f .4byte 0x212 .byte 0x78 .uleb128 0x1 - .4byte .LASF941 + .4byte .LASF949 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF942 + .4byte .LASF950 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF943 + .4byte .LASF951 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -396,7 +396,7 @@ tim4_start: .uleb128 0x5 .4byte 0x202 .uleb128 0xc - .4byte .LASF944 + .4byte .LASF952 .byte 0x50 .byte 0x5 .byte 0x6 @@ -415,13 +415,13 @@ tim4_start: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF945 + .4byte .LASF953 .byte 0x5 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF946 + .4byte .LASF954 .byte 0x5 .byte 0xa .4byte 0xa0 @@ -439,19 +439,19 @@ tim4_start: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF947 + .4byte .LASF955 .byte 0x5 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF948 + .4byte .LASF956 .byte 0x5 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF949 + .4byte .LASF957 .byte 0x5 .byte 0xf .4byte 0xa0 @@ -481,31 +481,31 @@ tim4_start: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF950 + .4byte .LASF958 .byte 0x5 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF951 + .4byte .LASF959 .byte 0x5 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF952 + .4byte .LASF960 .byte 0x5 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF961 .byte 0x5 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF954 + .4byte .LASF962 .byte 0x5 .byte 0x18 .4byte 0xa0 @@ -517,21 +517,21 @@ tim4_start: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF955 + .4byte .LASF963 .byte 0x5 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 .uleb128 0x6 - .4byte .LASF956 + .4byte .LASF964 .byte 0x14 .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c .uleb128 0x6 - .4byte .LASF957 + .4byte .LASF965 .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.fc51eb78a9b2f3f5a4ab23580aa1aac2,comdat + .section .debug_macro,"G",%progbits,wm4.rcc.h.37.3d84d3b65eb54f3a031f4b28466e140e,comdat .Ldebug_macro14: .2byte 0x5 .byte 0 @@ -3602,59 +3602,83 @@ tim4_start: .uleb128 0x5c .4byte .LASF882 .byte 0x5 - .uleb128 0x5f + .uleb128 0x5e .4byte .LASF883 .byte 0x5 - .uleb128 0x60 + .uleb128 0x5f .4byte .LASF884 .byte 0x5 - .uleb128 0x63 + .uleb128 0x61 .4byte .LASF885 .byte 0x5 - .uleb128 0x65 + .uleb128 0x62 .4byte .LASF886 .byte 0x5 - .uleb128 0x66 + .uleb128 0x64 .4byte .LASF887 .byte 0x5 - .uleb128 0x69 + .uleb128 0x65 .4byte .LASF888 .byte 0x5 - .uleb128 0x6b + .uleb128 0x68 .4byte .LASF889 .byte 0x5 - .uleb128 0x6c + .uleb128 0x69 .4byte .LASF890 .byte 0x5 - .uleb128 0x6f + .uleb128 0x6c .4byte .LASF891 .byte 0x5 - .uleb128 0x71 + .uleb128 0x6d .4byte .LASF892 .byte 0x5 - .uleb128 0x72 + .uleb128 0x70 .4byte .LASF893 .byte 0x5 - .uleb128 0x73 + .uleb128 0x72 .4byte .LASF894 .byte 0x5 - .uleb128 0x76 + .uleb128 0x73 .4byte .LASF895 .byte 0x5 - .uleb128 0x77 + .uleb128 0x76 .4byte .LASF896 .byte 0x5 - .uleb128 0x79 + .uleb128 0x78 .4byte .LASF897 .byte 0x5 - .uleb128 0x7a + .uleb128 0x79 .4byte .LASF898 .byte 0x5 .uleb128 0x7c .4byte .LASF899 .byte 0x5 - .uleb128 0x7d + .uleb128 0x7e .4byte .LASF900 + .byte 0x5 + .uleb128 0x7f + .4byte .LASF901 + .byte 0x5 + .uleb128 0x80 + .4byte .LASF902 + .byte 0x5 + .uleb128 0x83 + .4byte .LASF903 + .byte 0x5 + .uleb128 0x84 + .4byte .LASF904 + .byte 0x5 + .uleb128 0x86 + .4byte .LASF905 + .byte 0x5 + .uleb128 0x87 + .4byte .LASF906 + .byte 0x5 + .uleb128 0x89 + .4byte .LASF907 + .byte 0x5 + .uleb128 0x8a + .4byte .LASF908 .byte 0 .section .debug_macro,"G",%progbits,wm4.timer.h.2.2e929ede818fb0960868f1b0a08a1cbf,comdat .Ldebug_macro15: @@ -3662,19 +3686,19 @@ tim4_start: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF901 + .4byte .LASF909 .byte 0x5 .uleb128 0x1d - .4byte .LASF902 + .4byte .LASF910 .byte 0x5 .uleb128 0x1e - .4byte .LASF903 + .4byte .LASF911 .byte 0x5 .uleb128 0x20 - .4byte .LASF904 + .4byte .LASF912 .byte 0x5 .uleb128 0x21 - .4byte .LASF905 + .4byte .LASF913 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3689,7 +3713,7 @@ tim4_start: .ascii "__UHA_FBIT__ 8\000" .LASF815: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF907: +.LASF915: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -3733,9 +3757,11 @@ tim4_start: .ascii "__ULACCUM_FBIT__ 32\000" .LASF75: .ascii "__WCHAR_MAX__ 0xffffffffU\000" +.LASF886: + .ascii "RCC_CFGR_MCO1PRE_DIV2 (0b100)\000" .LASF514: .ascii "__int20__\000" -.LASF899: +.LASF907: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" @@ -3761,7 +3787,7 @@ tim4_start: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF900: +.LASF908: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF621: @@ -3832,7 +3858,7 @@ tim4_start: .ascii "__SCNPTR(x) __STRINGIFY(x)\000" .LASF202: .ascii "__FLT32_MAX_10_EXP__ 38\000" -.LASF886: +.LASF894: .ascii "RCC_CFGR_HPRE_BIT 4\000" .LASF683: .ascii "SCNo8 __SCN8(o)\000" @@ -3848,7 +3874,7 @@ tim4_start: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF958: +.LASF966: .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" @@ -3867,7 +3893,7 @@ tim4_start: .ascii "__int_fast32_t_defined 1\000" .LASF133: .ascii "__INT_FAST64_WIDTH__ 64\000" -.LASF955: +.LASF963: .ascii "DMAR\000" .LASF660: .ascii "___int_wchar_t_h \000" @@ -3879,6 +3905,8 @@ tim4_start: .ascii "INT16_C(x) __INT16_C(x)\000" .LASF250: .ascii "__SFRACT_EPSILON__ 0x1P-7HR\000" +.LASF884: + .ascii "RCC_CFGR_MCO1_MASK (0b11)\000" .LASF113: .ascii "__INT32_C(c) c ## L\000" .LASF27: @@ -3909,28 +3937,27 @@ tim4_start: .ascii "__PRI32LEAST(x) __LEAST32 __STRINGIFY(x)\000" .LASF88: .ascii "__PTRDIFF_WIDTH__ 32\000" -.LASF894: - .ascii "RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << R" - .ascii "CC_CFGR_SW_BIT)\000" +.LASF882: + .ascii "RCC_CFGR_MCO1_PLL (0b11)\000" .LASF134: .ascii "__UINT_FAST8_MAX__ 0xffffffffU\000" .LASF761: .ascii "SCNo32 __SCN32(o)\000" .LASF541: .ascii "_NOTHROW \000" -.LASF950: +.LASF958: .ascii "CCR1\000" -.LASF951: +.LASF959: .ascii "CCR2\000" -.LASF952: +.LASF960: .ascii "CCR3\000" -.LASF953: +.LASF961: .ascii "CCR4\000" .LASF307: .ascii "__LACCUM_IBIT__ 32\000" .LASF593: .ascii "INT_LEAST8_MAX (__INT_LEAST8_MAX__)\000" -.LASF888: +.LASF896: .ascii "RCC_CFGR_SWS_PLL (0b10)\000" .LASF560: .ascii "__EXP\000" @@ -3948,7 +3975,7 @@ tim4_start: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF934: +.LASF942: .ascii "AHB2LPENR\000" .LASF500: .ascii "__RAND_MAX\000" @@ -3958,7 +3985,7 @@ tim4_start: .ascii "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)\000" .LASF614: .ascii "INT_FAST8_MAX (__INT_FAST8_MAX__)\000" -.LASF896: +.LASF904: .ascii "RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PW" .ascii "REN_BIT)\000" .LASF487: @@ -3991,7 +4018,7 @@ tim4_start: .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF910: +.LASF918: .ascii "long int\000" .LASF720: .ascii "SCNd16 __SCN16(d)\000" @@ -4032,7 +4059,7 @@ tim4_start: .ascii "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)\000" .LASF371: .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" -.LASF893: +.LASF901: .ascii "RCC_CFGR_SW_MASK (0b11)\000" .LASF432: .ascii "__ARM_NEON__\000" @@ -4068,7 +4095,7 @@ tim4_start: .ascii "__SIZEOF_LONG__ 4\000" .LASF754: .ascii "PRIi32 __PRI32(i)\000" -.LASF931: +.LASF939: .ascii "APB2ENR\000" .LASF822: .ascii "SCNoFAST64 __SCN64FAST(o)\000" @@ -4082,7 +4109,7 @@ tim4_start: .ascii "__FLT32X_MIN_EXP__ (-1021)\000" .LASF816: .ascii "PRIoFAST64 __PRI64FAST(o)\000" -.LASF933: +.LASF941: .ascii "AHB1LPENR\000" .LASF406: .ascii "__ARM_FEATURE_SIMD32 1\000" @@ -4094,7 +4121,7 @@ tim4_start: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF459: .ascii "__NEWLIB__ 4\000" -.LASF943: +.LASF951: .ascii "DCKCFGR\000" .LASF721: .ascii "SCNi16 __SCN16(i)\000" @@ -4104,7 +4131,7 @@ tim4_start: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF563: .ascii "_UINT8_T_DECLARED \000" -.LASF906: +.LASF914: .ascii "signed char\000" .LASF806: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -4138,23 +4165,23 @@ tim4_start: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF874: .ascii "RCC_PLLCFGR_PLLN_MASK (0b111111111)\000" -.LASF959: +.LASF967: .ascii "src/timer.c\000" -.LASF926: +.LASF934: .ascii "RESERVED1\000" -.LASF929: +.LASF937: .ascii "RESERVED2\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" -.LASF935: +.LASF943: .ascii "RESERVED4\000" .LASF241: .ascii "__FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x\000" -.LASF940: +.LASF948: .ascii "RESERVED6\000" .LASF152: .ascii "__FLT_MAX_10_EXP__ 38\000" -.LASF883: +.LASF891: .ascii "RCC_CFGR_PPRE1_BIT 10\000" .LASF259: .ascii "__FRACT_MAX__ 0X7FFFP-15R\000" @@ -4168,9 +4195,9 @@ tim4_start: .ascii "_READ_WRITE_RETURN_TYPE int\000" .LASF772: .ascii "SCNoLEAST32 __SCN32LEAST(o)\000" -.LASF891: +.LASF899: .ascii "RCC_CFGR_SW_PLL (0b10)\000" -.LASF904: +.LASF912: .ascii "TIM_CR1_CEN_BIT 0\000" .LASF798: .ascii "SCNd64 __SCN64(d)\000" @@ -4190,15 +4217,15 @@ tim4_start: .ascii "__int_fast64_t_defined 1\000" .LASF838: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF917: +.LASF925: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF895: +.LASF903: .ascii "RCC_APB1ENR_PWREN_BIT 28\000" -.LASF898: +.LASF906: .ascii "RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART" .ascii "2EN_BIT)\000" .LASF366: @@ -4207,19 +4234,19 @@ tim4_start: .ascii "_SYS_FEATURES_H \000" .LASF813: .ascii "SCNxLEAST64 __SCN64LEAST(x)\000" -.LASF932: +.LASF940: .ascii "RESERVED3\000" .LASF22: .ascii "__SIZEOF_LONG_DOUBLE__ 8\000" -.LASF938: +.LASF946: .ascii "RESERVED5\000" -.LASF947: +.LASF955: .ascii "CCMR1\000" -.LASF948: +.LASF956: .ascii "CCMR2\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF901: +.LASF909: .ascii "TIMER_H_ \000" .LASF470: .ascii "_MB_LEN_MAX 8\000" @@ -4237,7 +4264,7 @@ tim4_start: .ascii "__need_wchar_t \000" .LASF66: .ascii "__UINT_FAST64_TYPE__ long long unsigned int\000" -.LASF889: +.LASF897: .ascii "RCC_CFGR_SWS_BIT 2\000" .LASF156: .ascii "__FLT_MIN__ 1.1754943508222875e-38F\000" @@ -4263,9 +4290,9 @@ tim4_start: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF647: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF911: +.LASF919: .ascii "__uint16_t\000" -.LASF928: +.LASF936: .ascii "AHB2ENR\000" .LASF805: .ascii "PRIoLEAST64 __PRI64LEAST(o)\000" @@ -4279,7 +4306,7 @@ tim4_start: .ascii "__UINT8_MAX__ 0xff\000" .LASF575: .ascii "_UINTMAX_T_DECLARED \000" -.LASF944: +.LASF952: .ascii "timer\000" .LASF184: .ascii "__LDBL_MAX_EXP__ 1024\000" @@ -4291,6 +4318,8 @@ tim4_start: .ascii "__int8_t_defined 1\000" .LASF176: .ascii "__DBL_HAS_DENORM__ 1\000" +.LASF881: + .ascii "RCC_CFGR_MCO1_HSE (0b10)\000" .LASF625: .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" .LASF602: @@ -4305,7 +4334,7 @@ tim4_start: .ascii "__FLT_DENORM_MIN__ 1.4012984643248171e-45F\000" .LASF534: .ascii "__LEAST8 \"hh\"\000" -.LASF885: +.LASF893: .ascii "RCC_CFGR_HPRE_DIV_NONE 0\000" .LASF540: .ascii "_END_STD_C \000" @@ -4323,7 +4352,7 @@ tim4_start: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF770: .ascii "SCNdLEAST32 __SCN32LEAST(d)\000" -.LASF923: +.LASF931: .ascii "RESERVED0\000" .LASF807: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" @@ -4361,7 +4390,7 @@ tim4_start: .ascii "__LACCUM_FBIT__ 31\000" .LASF689: .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" -.LASF939: +.LASF947: .ascii "BDCR\000" .LASF211: .ascii "__FLT32_HAS_QUIET_NAN__ 1\000" @@ -4423,7 +4452,7 @@ tim4_start: .ascii "RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)\000" .LASF763: .ascii "SCNx32 __SCN32(x)\000" -.LASF920: +.LASF928: .ascii "CFGR\000" .LASF558: .ascii "___int_least32_t_defined 1\000" @@ -4493,7 +4522,7 @@ tim4_start: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF913: +.LASF921: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4511,7 +4540,7 @@ tim4_start: .ascii "__UINT16_TYPE__ short unsigned int\000" .LASF868: .ascii "RCC_PLLCFGR_PLLSRC_BIT 22\000" -.LASF946: +.LASF954: .ascii "DIER\000" .LASF657: .ascii "_WCHAR_T_DEFINED_ \000" @@ -4569,7 +4598,7 @@ tim4_start: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF790: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF892: +.LASF900: .ascii "RCC_CFGR_SW_BIT 0\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4615,11 +4644,11 @@ tim4_start: .ascii "PRIX32 __PRI32(X)\000" .LASF774: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF956: +.LASF964: .ascii "tim4_start\000" .LASF704: .ascii "SCNiFAST8 __SCN8FAST(i)\000" -.LASF919: +.LASF927: .ascii "PLLCFGR\000" .LASF5: .ascii "__GNUC__ 12\000" @@ -4647,7 +4676,7 @@ tim4_start: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF462: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF912: +.LASF920: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4657,7 +4686,7 @@ tim4_start: .ascii "__FLT_RADIX__ 2\000" .LASF455: .ascii "_INTTYPES_H \000" -.LASF914: +.LASF922: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4677,7 +4706,7 @@ tim4_start: .ascii "WINT_MAX (__WINT_MAX__)\000" .LASF823: .ascii "SCNuFAST64 __SCN64FAST(u)\000" -.LASF941: +.LASF949: .ascii "SSCGR\000" .LASF137: .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" @@ -4705,7 +4734,7 @@ tim4_start: .ascii "___int32_t_defined 1\000" .LASF83: .ascii "__INT_WIDTH__ 32\000" -.LASF925: +.LASF933: .ascii "APB2RSTR\000" .LASF409: .ascii "__ARM_ARCH_PROFILE\000" @@ -4757,9 +4786,9 @@ tim4_start: .ascii "__ARM_NEON_FP\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF937: +.LASF945: .ascii "APB2LPENR\000" -.LASF905: +.LASF913: .ascii "TIM_ENABLE (1 << TIM_CR1_CEN_BIT)\000" .LASF821: .ascii "SCNiFAST64 __SCN64FAST(i)\000" @@ -4767,7 +4796,7 @@ tim4_start: .ascii "_ANSIDECL_H_ \000" .LASF684: .ascii "SCNu8 __SCN8(u)\000" -.LASF902: +.LASF910: .ascii "TIM4_BASE_ADDR (0x40000800U)\000" .LASF261: .ascii "__UFRACT_FBIT__ 16\000" @@ -4787,7 +4816,7 @@ tim4_start: .ascii "L)\000" .LASF608: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF916: +.LASF924: .ascii "unsigned int\000" .LASF857: .ascii "RCC_CR_HSERDY_BIT 17\000" @@ -4827,6 +4856,8 @@ tim4_start: .ascii "__INT_FAST8_WIDTH__ 32\000" .LASF2: .ascii "__STDC_UTF_16__ 1\000" +.LASF887: + .ascii "RCC_CFGR_MCO1PRE_BIT 24\000" .LASF402: .ascii "__ARM_FEATURE_LDREX\000" .LASF336: @@ -4873,7 +4904,7 @@ tim4_start: .ascii "__STRINGIFY(a) #a\000" .LASF356: .ascii "__USA_FBIT__ 16\000" -.LASF936: +.LASF944: .ascii "APB1LPENR\000" .LASF480: .ascii "__IEEE_LITTLE_ENDIAN \000" @@ -4981,9 +5012,11 @@ tim4_start: .ascii "SCNx64 __SCN64(x)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" -.LASF897: +.LASF885: + .ascii "RCC_CFGR_MCO1PRE_DIV4 (0b110)\000" +.LASF905: .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" -.LASF884: +.LASF892: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF646: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" @@ -5001,16 +5034,18 @@ tim4_start: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF734: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF924: +.LASF932: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF930: +.LASF938: .ascii "APB1ENR\000" .LASF742: .ascii "SCNdFAST16 __SCN16FAST(d)\000" +.LASF883: + .ascii "RCC_CFGR_MCO1_BIT 21\000" .LASF867: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" @@ -5037,13 +5072,13 @@ tim4_start: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF915: +.LASF923: .ascii "long long unsigned int\000" .LASF612: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" .LASF150: .ascii "__FLT_MIN_10_EXP__ (-37)\000" -.LASF890: +.LASF898: .ascii "RCC_CFGR_SWS_MASK (0b11)\000" .LASF312: .ascii "__ULACCUM_IBIT__ 32\000" @@ -5084,7 +5119,7 @@ tim4_start: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" .LASF574: .ascii "_INTMAX_T_DECLARED \000" -.LASF949: +.LASF957: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" @@ -5130,6 +5165,8 @@ tim4_start: .ascii "SIZE_MAX (__SIZE_MAX__)\000" .LASF333: .ascii "__DQ_IBIT__ 0\000" +.LASF888: + .ascii "RCC_CFGR_MCO1PRE_MASK (0b111)\000" .LASF450: .ascii "__ARM_BF16_FORMAT_ALTERNATIVE\000" .LASF45: @@ -5140,7 +5177,7 @@ tim4_start: .ascii "__int20__ +2\000" .LASF655: .ascii "_WCHAR_T_ \000" -.LASF945: +.LASF953: .ascii "SMCR\000" .LASF829: .ascii "PRIoMAX __PRIMAX(o)\000" @@ -5210,7 +5247,7 @@ tim4_start: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF927: +.LASF935: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5250,11 +5287,11 @@ tim4_start: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF922: +.LASF930: .ascii "AHB2RSTR\000" .LASF672: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" -.LASF882: +.LASF890: .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" @@ -5280,7 +5317,7 @@ tim4_start: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF908: +.LASF916: .ascii "short int\000" .LASF836: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5306,7 +5343,7 @@ tim4_start: .ascii "__ARM_FEATURE_COPROC\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF903: +.LASF911: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" @@ -5372,7 +5409,7 @@ tim4_start: .ascii "PRIdMAX __PRIMAX(d)\000" .LASF388: .ascii "__SIZEOF_WINT_T__ 4\000" -.LASF881: +.LASF889: .ascii "RCC_CFGR_PPRE2_BIT 13\000" .LASF783: .ascii "SCNoFAST32 __SCN32FAST(o)\000" @@ -5384,6 +5421,9 @@ tim4_start: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF702: .ascii "PRIXFAST8 __PRI8FAST(X)\000" +.LASF902: + .ascii "RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << R" + .ascii "CC_CFGR_SW_BIT)\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" .LASF785: @@ -5424,13 +5464,13 @@ tim4_start: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF652: .ascii "_T_WCHAR_ \000" -.LASF954: +.LASF962: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF665: .ascii "_BSD_WCHAR_T_\000" -.LASF942: +.LASF950: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -5438,9 +5478,9 @@ tim4_start: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF757: .ascii "PRIx32 __PRI32(x)\000" -.LASF957: +.LASF965: .ascii "tim4_init\000" -.LASF918: +.LASF926: .ascii "uint32_t\000" .LASF873: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -5500,7 +5540,7 @@ tim4_start: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF909: +.LASF917: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5540,7 +5580,7 @@ tim4_start: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF523: .ascii "long +4\000" -.LASF921: +.LASF929: .ascii "AHB1RSTR\000" .LASF724: .ascii "SCNx16 __SCN16(x)\000" @@ -5550,7 +5590,7 @@ tim4_start: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF960: +.LASF968: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF797: .ascii "PRIX64 __PRI64(X)\000" @@ -5602,7 +5642,7 @@ tim4_start: .ascii "__DBL_MANT_DIG__ 53\000" .LASF272: .ascii "__ULFRACT_IBIT__ 0\000" -.LASF887: +.LASF895: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: .ascii "__INT_MAX__ 0x7fffffff\000" diff --git a/build/timer.i b/build/timer.i index a36d58e..cf7ccc7 100644 --- a/build/timer.i +++ b/build/timer.i @@ -2055,6 +2055,19 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_2 (0b100) +#define RCC_CFGR_MCO1_HSE (0b10) +#define RCC_CFGR_MCO1_PLL (0b11) + +#define RCC_CFGR_MCO1_BIT 21 +#define RCC_CFGR_MCO1_MASK (0b11) + +#define RCC_CFGR_MCO1PRE_DIV4 (0b110) +#define RCC_CFGR_MCO1PRE_DIV2 (0b100) + +#define RCC_CFGR_MCO1PRE_BIT 24 +#define RCC_CFGR_MCO1PRE_MASK (0b111) + + #define RCC_CFGR_PPRE2_BIT 13 #define RCC_CFGR_PPRE2_MASK (0b111) diff --git a/build/timer.o b/build/timer.o index 2c88b0890366e9ec9bc623b2f63506c3cd07a4fe..841bd5a59a79ad3d50464be80c41a01f0026a57a 100644 GIT binary patch delta 7137 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 delta 6851 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 H{)6NIEDLKO diff --git a/build/usart.S b/build/usart.S index a6b6c96..94112f7 100644 --- a/build/usart.S +++ b/build/usart.S @@ -71,71 +71,71 @@ usart2_init: movs r1, #7 mov r0, r3 bl gpio_set_af - .loc 1 20 33 + .loc 1 29 33 ldr r3, .L2 ldr r3, [r3, #64] ldr r2, .L2 - .loc 1 20 43 + .loc 1 29 43 orr r3, r3, #131072 str r3, [r2, #64] - .loc 1 23 35 + .loc 1 32 35 ldr r3, .L2+4 - .loc 1 23 41 + .loc 1 32 41 movs r2, #0 str r2, [r3, #12] - .loc 1 24 35 + .loc 1 33 35 ldr r3, .L2+4 - .loc 1 24 41 + .loc 1 33 41 movs r2, #0 str r2, [r3, #16] - .loc 1 25 35 + .loc 1 34 35 ldr r3, .L2+4 - .loc 1 25 41 + .loc 1 34 41 movs r2, #0 str r2, [r3, #20] - .loc 1 43 35 + .loc 1 52 35 ldr r3, .L2+4 ldr r3, [r3, #8] ldr r2, .L2+4 - .loc 1 43 41 + .loc 1 52 41 bic r3, r3, #65280 bic r3, r3, #240 str r3, [r2, #8] - .loc 1 44 35 + .loc 1 53 35 ldr r3, .L2+4 ldr r3, [r3, #8] ldr r2, .L2+4 - .loc 1 44 41 + .loc 1 53 41 orr r3, r3, #416 str r3, [r2, #8] - .loc 1 45 35 + .loc 1 54 35 ldr r3, .L2+4 ldr r3, [r3, #8] ldr r2, .L2+4 - .loc 1 45 41 + .loc 1 54 41 bic r3, r3, #7 str r3, [r2, #8] - .loc 1 46 35 + .loc 1 55 35 ldr r3, .L2+4 ldr r2, .L2+4 ldr r3, [r3, #8] - .loc 1 46 41 + .loc 1 55 41 str r3, [r2, #8] - .loc 1 49 35 + .loc 1 58 35 ldr r3, .L2+4 ldr r3, [r3, #12] ldr r2, .L2+4 - .loc 1 49 41 + .loc 1 58 41 orr r3, r3, #8 str r3, [r2, #12] - .loc 1 50 35 + .loc 1 59 35 ldr r3, .L2+4 ldr r3, [r3, #12] ldr r2, .L2+4 - .loc 1 50 41 + .loc 1 59 41 orr r3, r3, #4 str r3, [r2, #12] - .loc 1 51 1 + .loc 1 60 1 nop adds r7, r7, #8 .cfi_def_cfa_offset 8 @@ -160,7 +160,7 @@ usart2_init: .type usart2_start, %function usart2_start: .LFB1: - .loc 1 53 25 + .loc 1 62 25 .cfi_startproc @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 @@ -170,14 +170,14 @@ usart2_start: .cfi_offset 7, -4 add r7, sp, #0 .cfi_def_cfa_register 7 - .loc 1 54 35 + .loc 1 63 35 ldr r3, .L5 ldr r3, [r3, #12] ldr r2, .L5 - .loc 1 54 41 + .loc 1 63 41 orr r3, r3, #8192 str r3, [r2, #12] - .loc 1 55 1 + .loc 1 64 1 nop mov sp, r7 .cfi_def_cfa_register 13 @@ -202,7 +202,7 @@ usart2_start: .type usart2_write_byte, %function usart2_write_byte: .LFB2: - .loc 1 57 35 + .loc 1 66 35 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -216,23 +216,23 @@ usart2_write_byte: .cfi_def_cfa_register 7 mov r3, r0 strb r3, [r7, #7] - .loc 1 58 35 + .loc 1 67 35 ldr r2, .L9 - .loc 1 58 40 + .loc 1 67 40 ldrb r3, [r7, #7] @ zero_extendqisi2 str r3, [r2, #4] - .loc 1 61 9 + .loc 1 70 9 nop .L8: - .loc 1 61 44 discriminator 1 + .loc 1 70 44 discriminator 1 ldr r3, .L9 ldr r3, [r3] - .loc 1 61 49 discriminator 1 + .loc 1 70 49 discriminator 1 and r3, r3, #64 - .loc 1 61 10 discriminator 1 + .loc 1 70 10 discriminator 1 cmp r3, #0 beq .L8 - .loc 1 62 1 + .loc 1 71 1 nop nop adds r7, r7, #12 @@ -260,7 +260,7 @@ usart2_write_byte: .type usart2_write, %function usart2_write: .LFB3: - .loc 1 64 30 + .loc 1 73 30 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -273,24 +273,24 @@ usart2_write: add r7, sp, #0 .cfi_def_cfa_register 7 str r0, [r7, #4] - .loc 1 65 9 + .loc 1 74 9 b .L12 .L13: - .loc 1 65 38 discriminator 2 + .loc 1 74 38 discriminator 2 ldr r3, [r7, #4] adds r2, r3, #1 str r2, [r7, #4] - .loc 1 65 16 discriminator 2 + .loc 1 74 16 discriminator 2 ldrb r3, [r3] @ zero_extendqisi2 mov r0, r3 bl usart2_write_byte .L12: - .loc 1 65 10 discriminator 1 + .loc 1 74 10 discriminator 1 ldr r3, [r7, #4] ldrb r3, [r3] @ zero_extendqisi2 cmp r3, #0 bne .L13 - .loc 1 66 1 + .loc 1 75 1 nop nop adds r7, r7, #8 @@ -317,10 +317,10 @@ usart2_write: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0xb - .4byte .LASF984 + .4byte .LASF993 .byte 0x1d - .4byte .LASF985 - .4byte .LASF986 + .4byte .LASF994 + .4byte .LASF995 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -328,9 +328,9 @@ usart2_write: .uleb128 0x2 .byte 0x1 .byte 0x6 - .4byte .LASF931 + .4byte .LASF940 .uleb128 0x4 - .4byte .LASF934 + .4byte .LASF943 .byte 0x2 .byte 0x2b .byte 0x17 @@ -338,13 +338,13 @@ usart2_write: .uleb128 0x2 .byte 0x1 .byte 0x8 - .4byte .LASF932 + .4byte .LASF941 .uleb128 0x2 .byte 0x2 .byte 0x5 - .4byte .LASF933 + .4byte .LASF942 .uleb128 0x4 - .4byte .LASF935 + .4byte .LASF944 .byte 0x2 .byte 0x39 .byte 0x1c @@ -352,13 +352,13 @@ usart2_write: .uleb128 0x2 .byte 0x2 .byte 0x7 - .4byte .LASF936 + .4byte .LASF945 .uleb128 0x2 .byte 0x4 .byte 0x5 - .4byte .LASF937 + .4byte .LASF946 .uleb128 0x4 - .4byte .LASF938 + .4byte .LASF947 .byte 0x2 .byte 0x4f .byte 0x1b @@ -366,15 +366,15 @@ usart2_write: .uleb128 0x2 .byte 0x4 .byte 0x7 - .4byte .LASF939 + .4byte .LASF948 .uleb128 0x2 .byte 0x8 .byte 0x5 - .4byte .LASF940 + .4byte .LASF949 .uleb128 0x2 .byte 0x8 .byte 0x7 - .4byte .LASF941 + .4byte .LASF950 .uleb128 0xc .byte 0x4 .byte 0x5 @@ -382,21 +382,21 @@ usart2_write: .uleb128 0x2 .byte 0x4 .byte 0x7 - .4byte .LASF942 + .4byte .LASF951 .uleb128 0x4 - .4byte .LASF943 + .4byte .LASF952 .byte 0x3 .byte 0x18 .byte 0x13 .4byte 0x31 .uleb128 0x4 - .4byte .LASF944 + .4byte .LASF953 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x4b .uleb128 0x4 - .4byte .LASF945 + .4byte .LASF954 .byte 0x3 .byte 0x30 .byte 0x14 @@ -417,13 +417,13 @@ usart2_write: .4byte 0xb8 .byte 0 .uleb128 0x1 - .4byte .LASF946 + .4byte .LASF955 .byte 0x4 .byte 0x8 .4byte 0xb8 .byte 0x4 .uleb128 0x1 - .4byte .LASF947 + .4byte .LASF956 .byte 0x4 .byte 0x9 .4byte 0xb8 @@ -435,115 +435,115 @@ usart2_write: .4byte 0xb8 .byte 0xc .uleb128 0x1 - .4byte .LASF948 + .4byte .LASF957 .byte 0x4 .byte 0xb .4byte 0xb8 .byte 0x10 .uleb128 0x1 - .4byte .LASF949 + .4byte .LASF958 .byte 0x4 .byte 0xc .4byte 0xb8 .byte 0x14 .uleb128 0x1 - .4byte .LASF950 + .4byte .LASF959 .byte 0x4 .byte 0xd .4byte 0x22a .byte 0x18 .uleb128 0x1 - .4byte .LASF951 + .4byte .LASF960 .byte 0x4 .byte 0xe .4byte 0xb8 .byte 0x20 .uleb128 0x1 - .4byte .LASF952 + .4byte .LASF961 .byte 0x4 .byte 0xf .4byte 0xb8 .byte 0x24 .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF962 .byte 0x4 .byte 0x10 .4byte 0x22a .byte 0x28 .uleb128 0x1 - .4byte .LASF954 + .4byte .LASF963 .byte 0x4 .byte 0x11 .4byte 0xb8 .byte 0x30 .uleb128 0x1 - .4byte .LASF955 + .4byte .LASF964 .byte 0x4 .byte 0x12 .4byte 0xb8 .byte 0x34 .uleb128 0x1 - .4byte .LASF956 + .4byte .LASF965 .byte 0x4 .byte 0x13 .4byte 0x22a .byte 0x38 .uleb128 0x1 - .4byte .LASF957 + .4byte .LASF966 .byte 0x4 .byte 0x14 .4byte 0xb8 .byte 0x40 .uleb128 0x1 - .4byte .LASF958 + .4byte .LASF967 .byte 0x4 .byte 0x15 .4byte 0xb8 .byte 0x44 .uleb128 0x1 - .4byte .LASF959 + .4byte .LASF968 .byte 0x4 .byte 0x16 .4byte 0x22a .byte 0x48 .uleb128 0x1 - .4byte .LASF960 + .4byte .LASF969 .byte 0x4 .byte 0x17 .4byte 0xb8 .byte 0x50 .uleb128 0x1 - .4byte .LASF961 + .4byte .LASF970 .byte 0x4 .byte 0x18 .4byte 0xb8 .byte 0x54 .uleb128 0x1 - .4byte .LASF962 + .4byte .LASF971 .byte 0x4 .byte 0x19 .4byte 0x22a .byte 0x58 .uleb128 0x1 - .4byte .LASF963 + .4byte .LASF972 .byte 0x4 .byte 0x1a .4byte 0xb8 .byte 0x60 .uleb128 0x1 - .4byte .LASF964 + .4byte .LASF973 .byte 0x4 .byte 0x1b .4byte 0xb8 .byte 0x64 .uleb128 0x1 - .4byte .LASF965 + .4byte .LASF974 .byte 0x4 .byte 0x1c .4byte 0x22a .byte 0x68 .uleb128 0x1 - .4byte .LASF966 + .4byte .LASF975 .byte 0x4 .byte 0x1d .4byte 0xb8 @@ -555,25 +555,25 @@ usart2_write: .4byte 0xb8 .byte 0x74 .uleb128 0x1 - .4byte .LASF967 + .4byte .LASF976 .byte 0x4 .byte 0x1f .4byte 0x22a .byte 0x78 .uleb128 0x1 - .4byte .LASF968 + .4byte .LASF977 .byte 0x4 .byte 0x20 .4byte 0xb8 .byte 0x80 .uleb128 0x1 - .4byte .LASF969 + .4byte .LASF978 .byte 0x4 .byte 0x21 .4byte 0xb8 .byte 0x84 .uleb128 0x1 - .4byte .LASF970 + .4byte .LASF979 .byte 0x4 .byte 0x22 .4byte 0xb8 @@ -593,30 +593,30 @@ usart2_write: .byte 0x1 .4byte 0x3d .byte 0x5 - .byte 0x25 + .byte 0x26 .byte 0xe .4byte 0x256 .uleb128 0x5 - .4byte .LASF971 + .4byte .LASF980 .byte 0 .uleb128 0x5 - .4byte .LASF972 + .4byte .LASF981 .byte 0x1 .uleb128 0x5 - .4byte .LASF973 + .4byte .LASF982 .byte 0x2 .uleb128 0x5 - .4byte .LASF974 + .4byte .LASF983 .byte 0x3 .byte 0 .uleb128 0x4 - .4byte .LASF975 + .4byte .LASF984 .byte 0x5 - .byte 0x2a + .byte 0x2b .byte 0x3 .4byte 0x22f .uleb128 0x11 - .4byte .LASF976 + .4byte .LASF985 .byte 0x1c .byte 0x6 .byte 0x6 @@ -659,15 +659,15 @@ usart2_write: .4byte 0xb8 .byte 0x14 .uleb128 0x1 - .4byte .LASF977 + .4byte .LASF986 .byte 0x6 .byte 0xd .4byte 0xb8 .byte 0x18 .byte 0 .uleb128 0x8 - .4byte .LASF978 - .byte 0x2d + .4byte .LASF987 + .byte 0x2e .4byte 0x2d7 .uleb128 0x6 .4byte 0xa0 @@ -675,8 +675,8 @@ usart2_write: .4byte 0x94 .byte 0 .uleb128 0x8 - .4byte .LASF979 - .byte 0x2c + .4byte .LASF988 + .byte 0x2d .4byte 0x2ec .uleb128 0x6 .4byte 0xa0 @@ -684,9 +684,9 @@ usart2_write: .4byte 0x256 .byte 0 .uleb128 0x12 - .4byte .LASF980 + .4byte .LASF989 .byte 0x1 - .byte 0x40 + .byte 0x49 .byte 0x6 .4byte .LFB3 .4byte .LFE3-.LFB3 @@ -695,7 +695,7 @@ usart2_write: .4byte 0x311 .uleb128 0x9 .ascii "buf\000" - .byte 0x40 + .byte 0x49 .byte 0x19 .4byte 0x311 .uleb128 0x2 @@ -710,9 +710,9 @@ usart2_write: .byte 0x8 .4byte .LASF511 .uleb128 0x14 - .4byte .LASF981 + .4byte .LASF990 .byte 0x1 - .byte 0x39 + .byte 0x42 .byte 0x6 .4byte .LFB2 .4byte .LFE2-.LFB2 @@ -721,7 +721,7 @@ usart2_write: .4byte 0x341 .uleb128 0x9 .ascii "c\000" - .byte 0x39 + .byte 0x42 .byte 0x20 .4byte 0x94 .uleb128 0x2 @@ -729,16 +729,16 @@ usart2_write: .sleb128 -9 .byte 0 .uleb128 0x15 - .4byte .LASF987 + .4byte .LASF996 .byte 0x1 - .byte 0x35 + .byte 0x3e .byte 0x6 .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c .uleb128 0x16 - .4byte .LASF988 + .4byte .LASF997 .byte 0x1 .byte 0x5 .byte 0x6 @@ -747,14 +747,14 @@ usart2_write: .uleb128 0x1 .byte 0x9c .uleb128 0xa - .4byte .LASF982 + .4byte .LASF991 .byte 0xa .4byte 0xa0 .uleb128 0x2 .byte 0x91 .sleb128 -10 .uleb128 0xa - .4byte .LASF983 + .4byte .LASF992 .byte 0xe .4byte 0xa0 .uleb128 0x2 @@ -2656,7 +2656,7 @@ usart2_write: .uleb128 0x5 .byte 0x5 .uleb128 0x2 - .4byte .LASF901 + .4byte .LASF909 .file 18 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" .byte 0x3 .uleb128 0x4 @@ -3932,7 +3932,7 @@ usart2_write: .uleb128 0x135 .4byte .LASF850 .byte 0 - .section .debug_macro,"G",%progbits,wm4.rcc.h.37.fc51eb78a9b2f3f5a4ab23580aa1aac2,comdat + .section .debug_macro,"G",%progbits,wm4.rcc.h.37.3d84d3b65eb54f3a031f4b28466e140e,comdat .Ldebug_macro14: .2byte 0x5 .byte 0 @@ -4033,59 +4033,83 @@ usart2_write: .uleb128 0x5c .4byte .LASF882 .byte 0x5 - .uleb128 0x5f + .uleb128 0x5e .4byte .LASF883 .byte 0x5 - .uleb128 0x60 + .uleb128 0x5f .4byte .LASF884 .byte 0x5 - .uleb128 0x63 + .uleb128 0x61 .4byte .LASF885 .byte 0x5 - .uleb128 0x65 + .uleb128 0x62 .4byte .LASF886 .byte 0x5 - .uleb128 0x66 + .uleb128 0x64 .4byte .LASF887 .byte 0x5 - .uleb128 0x69 + .uleb128 0x65 .4byte .LASF888 .byte 0x5 - .uleb128 0x6b + .uleb128 0x68 .4byte .LASF889 .byte 0x5 - .uleb128 0x6c + .uleb128 0x69 .4byte .LASF890 .byte 0x5 - .uleb128 0x6f + .uleb128 0x6c .4byte .LASF891 .byte 0x5 - .uleb128 0x71 + .uleb128 0x6d .4byte .LASF892 .byte 0x5 - .uleb128 0x72 + .uleb128 0x70 .4byte .LASF893 .byte 0x5 - .uleb128 0x73 + .uleb128 0x72 .4byte .LASF894 .byte 0x5 - .uleb128 0x76 + .uleb128 0x73 .4byte .LASF895 .byte 0x5 - .uleb128 0x77 + .uleb128 0x76 .4byte .LASF896 .byte 0x5 - .uleb128 0x79 + .uleb128 0x78 .4byte .LASF897 .byte 0x5 - .uleb128 0x7a + .uleb128 0x79 .4byte .LASF898 .byte 0x5 .uleb128 0x7c .4byte .LASF899 .byte 0x5 - .uleb128 0x7d + .uleb128 0x7e .4byte .LASF900 + .byte 0x5 + .uleb128 0x7f + .4byte .LASF901 + .byte 0x5 + .uleb128 0x80 + .4byte .LASF902 + .byte 0x5 + .uleb128 0x83 + .4byte .LASF903 + .byte 0x5 + .uleb128 0x84 + .4byte .LASF904 + .byte 0x5 + .uleb128 0x86 + .4byte .LASF905 + .byte 0x5 + .uleb128 0x87 + .4byte .LASF906 + .byte 0x5 + .uleb128 0x89 + .4byte .LASF907 + .byte 0x5 + .uleb128 0x8a + .4byte .LASF908 .byte 0 .section .debug_macro,"G",%progbits,wm4.stdbool.h.29.eb124ecb79face0a1d832a352bec45e0,comdat .Ldebug_macro15: @@ -4093,51 +4117,54 @@ usart2_write: .byte 0 .byte 0x5 .uleb128 0x1d - .4byte .LASF902 + .4byte .LASF910 .byte 0x5 .uleb128 0x21 - .4byte .LASF903 + .4byte .LASF911 .byte 0x5 .uleb128 0x23 - .4byte .LASF904 + .4byte .LASF912 .byte 0x5 .uleb128 0x24 - .4byte .LASF905 + .4byte .LASF913 .byte 0x5 .uleb128 0x32 - .4byte .LASF906 + .4byte .LASF914 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.21.e1d894a99a4e20e5ed6ffc90fcb5e1e3,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.21.3348067d9334353ab1797d9b1fa5e257,comdat .Ldebug_macro16: .2byte 0x5 .byte 0 .byte 0x5 .uleb128 0x15 - .4byte .LASF907 + .4byte .LASF915 .byte 0x5 .uleb128 0x16 - .4byte .LASF908 + .4byte .LASF916 .byte 0x5 - .uleb128 0x18 - .4byte .LASF909 + .uleb128 0x17 + .4byte .LASF917 .byte 0x5 .uleb128 0x19 - .4byte .LASF910 + .4byte .LASF918 .byte 0x5 .uleb128 0x1a - .4byte .LASF911 + .4byte .LASF919 .byte 0x5 - .uleb128 0x1d - .4byte .LASF912 + .uleb128 0x1b + .4byte .LASF920 .byte 0x5 - .uleb128 0x1f - .4byte .LASF913 + .uleb128 0x1e + .4byte .LASF921 .byte 0x5 - .uleb128 0x21 - .4byte .LASF914 + .uleb128 0x20 + .4byte .LASF922 .byte 0x5 - .uleb128 0x23 - .4byte .LASF915 + .uleb128 0x22 + .4byte .LASF923 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF924 .byte 0 .section .debug_macro,"G",%progbits,wm4.usart.h.2.41f911260774cb69712a09f3470bfff3,comdat .Ldebug_macro17: @@ -4145,49 +4172,49 @@ usart2_write: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF916 - .byte 0x5 - .uleb128 0x10 - .4byte .LASF917 - .byte 0x5 - .uleb128 0x11 - .4byte .LASF918 - .byte 0x5 - .uleb128 0x15 - .4byte .LASF919 - .byte 0x5 - .uleb128 0x16 - .4byte .LASF920 - .byte 0x5 - .uleb128 0x1a - .4byte .LASF921 - .byte 0x5 - .uleb128 0x1b - .4byte .LASF922 - .byte 0x5 - .uleb128 0x1e - .4byte .LASF923 - .byte 0x5 - .uleb128 0x1f - .4byte .LASF924 - .byte 0x5 - .uleb128 0x22 .4byte .LASF925 .byte 0x5 - .uleb128 0x23 + .uleb128 0x10 .4byte .LASF926 .byte 0x5 - .uleb128 0x26 + .uleb128 0x11 .4byte .LASF927 .byte 0x5 - .uleb128 0x27 + .uleb128 0x15 .4byte .LASF928 .byte 0x5 - .uleb128 0x29 + .uleb128 0x16 .4byte .LASF929 .byte 0x5 - .uleb128 0x2a + .uleb128 0x1a .4byte .LASF930 + .byte 0x5 + .uleb128 0x1b + .4byte .LASF931 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF932 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF933 + .byte 0x5 + .uleb128 0x22 + .4byte .LASF934 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF935 + .byte 0x5 + .uleb128 0x26 + .4byte .LASF936 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF937 + .byte 0x5 + .uleb128 0x29 + .4byte .LASF938 + .byte 0x5 + .uleb128 0x2a + .4byte .LASF939 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -4202,7 +4229,7 @@ usart2_write: .ascii "__UHA_FBIT__ 8\000" .LASF815: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF932: +.LASF941: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -4236,7 +4263,7 @@ usart2_write: .ascii "__WINT_MIN__ 0U\000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF973: +.LASF982: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -4248,11 +4275,13 @@ usart2_write: .ascii "__ULACCUM_FBIT__ 32\000" .LASF75: .ascii "__WCHAR_MAX__ 0xffffffffU\000" +.LASF886: + .ascii "RCC_CFGR_MCO1PRE_DIV2 (0b100)\000" .LASF514: .ascii "__int20__\000" -.LASF899: +.LASF907: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" -.LASF930: +.LASF939: .ascii "USART_BRR_FRACTION_MASK (0b111)\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" @@ -4270,7 +4299,7 @@ usart2_write: .ascii "__SFRACT_FBIT__ 7\000" .LASF94: .ascii "__INTMAX_WIDTH__ 64\000" -.LASF916: +.LASF925: .ascii "USART_H_ \000" .LASF448: .ascii "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC\000" @@ -4280,7 +4309,7 @@ usart2_write: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF900: +.LASF908: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF621: @@ -4345,7 +4374,7 @@ usart2_write: .ascii "PRIx8 __PRI8(x)\000" .LASF590: .ascii "INT8_MAX (__INT8_MAX__)\000" -.LASF912: +.LASF921: .ascii "PORT(port) (((port) - 'A') << 8)\000" .LASF631: .ascii "PTRDIFF_MAX (__PTRDIFF_MAX__)\000" @@ -4353,7 +4382,7 @@ usart2_write: .ascii "__SCNPTR(x) __STRINGIFY(x)\000" .LASF202: .ascii "__FLT32_MAX_10_EXP__ 38\000" -.LASF886: +.LASF894: .ascii "RCC_CFGR_HPRE_BIT 4\000" .LASF683: .ascii "SCNo8 __SCN8(o)\000" @@ -4369,7 +4398,7 @@ usart2_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF984: +.LASF993: .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" @@ -4400,6 +4429,8 @@ usart2_write: .ascii "INT16_C(x) __INT16_C(x)\000" .LASF250: .ascii "__SFRACT_EPSILON__ 0x1P-7HR\000" +.LASF884: + .ascii "RCC_CFGR_MCO1_MASK (0b11)\000" .LASF113: .ascii "__INT32_C(c) c ## L\000" .LASF27: @@ -4430,12 +4461,11 @@ usart2_write: .ascii "__PRI32LEAST(x) __LEAST32 __STRINGIFY(x)\000" .LASF88: .ascii "__PTRDIFF_WIDTH__ 32\000" -.LASF894: - .ascii "RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << R" - .ascii "CC_CFGR_SW_BIT)\000" +.LASF882: + .ascii "RCC_CFGR_MCO1_PLL (0b11)\000" .LASF134: .ascii "__UINT_FAST8_MAX__ 0xffffffffU\000" -.LASF929: +.LASF938: .ascii "USART_BRR_FRACTION_BIT 0\000" .LASF541: .ascii "_NOTHROW \000" @@ -4445,9 +4475,9 @@ usart2_write: .ascii "__LACCUM_IBIT__ 32\000" .LASF593: .ascii "INT_LEAST8_MAX (__INT_LEAST8_MAX__)\000" -.LASF888: +.LASF896: .ascii "RCC_CFGR_SWS_PLL (0b10)\000" -.LASF934: +.LASF943: .ascii "__uint8_t\000" .LASF81: .ascii "__SCHAR_WIDTH__ 8\000" @@ -4463,7 +4493,7 @@ usart2_write: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF961: +.LASF970: .ascii "AHB2LPENR\000" .LASF500: .ascii "__RAND_MAX\000" @@ -4471,7 +4501,7 @@ usart2_write: .ascii "__UINT_FAST16_MAX__ 0xffffffffU\000" .LASF610: .ascii "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)\000" -.LASF896: +.LASF904: .ascii "RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PW" .ascii "REN_BIT)\000" .LASF487: @@ -4504,7 +4534,7 @@ usart2_write: .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF937: +.LASF946: .ascii "long int\000" .LASF720: .ascii "SCNd16 __SCN16(d)\000" @@ -4520,7 +4550,7 @@ usart2_write: .ascii "SCNuLEAST32 __SCN32LEAST(u)\000" .LASF240: .ascii "__FLT32X_EPSILON__ 2.2204460492503131e-16F32x\000" -.LASF982: +.LASF991: .ascii "txPin\000" .LASF878: .ascii "RCC_PLLCFGR_PLLM(m) ((m & RCC_PLLCFGR_PLLM_MASK) <<" @@ -4543,7 +4573,7 @@ usart2_write: .ascii "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)\000" .LASF371: .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" -.LASF893: +.LASF901: .ascii "RCC_CFGR_SW_MASK (0b11)\000" .LASF432: .ascii "__ARM_NEON__\000" @@ -4567,7 +4597,7 @@ usart2_write: .ascii "__CHAR32_TYPE__ long unsigned int\000" .LASF429: .ascii "__ARM_FEATURE_FP16_VECTOR_ARITHMETIC\000" -.LASF901: +.LASF909: .ascii "GPIO_H_ \000" .LASF179: .ascii "__DBL_IS_IEC_60559__ 2\000" @@ -4579,7 +4609,7 @@ usart2_write: .ascii "__SIZEOF_LONG__ 4\000" .LASF754: .ascii "PRIi32 __PRI32(i)\000" -.LASF958: +.LASF967: .ascii "APB2ENR\000" .LASF822: .ascii "SCNoFAST64 __SCN64FAST(o)\000" @@ -4593,7 +4623,7 @@ usart2_write: .ascii "__FLT32X_MIN_EXP__ (-1021)\000" .LASF816: .ascii "PRIoFAST64 __PRI64FAST(o)\000" -.LASF960: +.LASF969: .ascii "AHB1LPENR\000" .LASF406: .ascii "__ARM_FEATURE_SIMD32 1\000" @@ -4605,23 +4635,23 @@ usart2_write: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF459: .ascii "__NEWLIB__ 4\000" -.LASF970: +.LASF979: .ascii "DCKCFGR\000" .LASF721: .ascii "SCNi16 __SCN16(i)\000" .LASF360: .ascii "__UTA_FBIT__ 64\000" -.LASF976: +.LASF985: .ascii "usart\000" .LASF153: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF563: .ascii "_UINT8_T_DECLARED \000" -.LASF931: +.LASF940: .ascii "signed char\000" .LASF806: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" -.LASF943: +.LASF952: .ascii "uint8_t\000" .LASF705: .ascii "SCNoFAST8 __SCN8FAST(o)\000" @@ -4629,7 +4659,7 @@ usart2_write: .ascii "INTMAX_MIN (-INTMAX_MAX - 1)\000" .LASF467: .ascii "_HAVE_LONG_DOUBLE 1\000" -.LASF975: +.LASF984: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -4657,33 +4687,33 @@ usart2_write: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF874: .ascii "RCC_PLLCFGR_PLLN_MASK (0b111111111)\000" -.LASF950: +.LASF959: .ascii "RESERVED0\000" -.LASF953: +.LASF962: .ascii "RESERVED1\000" -.LASF956: +.LASF965: .ascii "RESERVED2\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" -.LASF962: +.LASF971: .ascii "RESERVED4\000" .LASF241: .ascii "__FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x\000" -.LASF967: +.LASF976: .ascii "RESERVED6\000" .LASF152: .ascii "__FLT_MAX_10_EXP__ 38\000" .LASF42: .ascii "__SIG_ATOMIC_TYPE__ int\000" -.LASF883: +.LASF891: .ascii "RCC_CFGR_PPRE1_BIT 10\000" .LASF259: .ascii "__FRACT_MAX__ 0X7FFFP-15R\000" .LASF729: .ascii "PRIxLEAST16 __PRI16LEAST(x)\000" -.LASF981: +.LASF990: .ascii "usart2_write_byte\000" -.LASF985: +.LASF994: .ascii "src/usart.c\000" .LASF130: .ascii "__INT_FAST32_MAX__ 0x7fffffff\000" @@ -4693,13 +4723,13 @@ usart2_write: .ascii "_READ_WRITE_RETURN_TYPE int\000" .LASF772: .ascii "SCNoLEAST32 __SCN32LEAST(o)\000" -.LASF891: +.LASF899: .ascii "RCC_CFGR_SW_PLL (0b10)\000" .LASF845: .ascii "PRIXPTR __PRIPTR(X)\000" .LASF798: .ascii "SCNd64 __SCN64(d)\000" -.LASF972: +.LASF981: .ascii "GPIO_MODE_OUTPUT\000" .LASF614: .ascii "INT_FAST8_MAX (__INT_FAST8_MAX__)\000" @@ -4721,9 +4751,9 @@ usart2_write: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF895: +.LASF903: .ascii "RCC_APB1ENR_PWREN_BIT 28\000" -.LASF898: +.LASF906: .ascii "RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART" .ascii "2EN_BIT)\000" .LASF366: @@ -4732,11 +4762,11 @@ usart2_write: .ascii "_SYS_FEATURES_H \000" .LASF813: .ascii "SCNxLEAST64 __SCN64LEAST(x)\000" -.LASF959: +.LASF968: .ascii "RESERVED3\000" .LASF22: .ascii "__SIZEOF_LONG_DOUBLE__ 8\000" -.LASF965: +.LASF974: .ascii "RESERVED5\000" .LASF386: .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" @@ -4758,9 +4788,9 @@ usart2_write: .ascii "__need_wchar_t \000" .LASF66: .ascii "__UINT_FAST64_TYPE__ long long unsigned int\000" -.LASF917: +.LASF926: .ascii "USART2_BASE_ADDR (0x40004400U)\000" -.LASF889: +.LASF897: .ascii "RCC_CFGR_SWS_BIT 2\000" .LASF156: .ascii "__FLT_MIN__ 1.1754943508222875e-38F\000" @@ -4778,7 +4808,7 @@ usart2_write: .ascii "__FLT32_IS_IEC_60559__ 2\000" .LASF630: .ascii "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))\000" -.LASF926: +.LASF935: .ascii "USART_CR1_RE_ENABLE (1 << USART_CR1_RE_BIT)\000" .LASF725: .ascii "PRIdLEAST16 __PRI16LEAST(d)\000" @@ -4788,9 +4818,9 @@ usart2_write: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF647: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF935: +.LASF944: .ascii "__uint16_t\000" -.LASF955: +.LASF964: .ascii "AHB2ENR\000" .LASF805: .ascii "PRIoLEAST64 __PRI64LEAST(o)\000" @@ -4814,8 +4844,10 @@ usart2_write: .ascii "__int8_t_defined 1\000" .LASF176: .ascii "__DBL_HAS_DENORM__ 1\000" -.LASF908: +.LASF917: .ascii "GPIO_AF_USART2_TX (0b0111)\000" +.LASF881: + .ascii "RCC_CFGR_MCO1_HSE (0b10)\000" .LASF625: .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" .LASF602: @@ -4832,11 +4864,11 @@ usart2_write: .ascii "__FLT_DENORM_MIN__ 1.4012984643248171e-45F\000" .LASF534: .ascii "__LEAST8 \"hh\"\000" -.LASF885: +.LASF893: .ascii "RCC_CFGR_HPRE_DIV_NONE 0\000" .LASF540: .ascii "_END_STD_C \000" -.LASF904: +.LASF912: .ascii "true ((_Bool)+1u)\000" .LASF600: .ascii "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)\000" @@ -4888,7 +4920,7 @@ usart2_write: .ascii "__LACCUM_FBIT__ 31\000" .LASF689: .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" -.LASF966: +.LASF975: .ascii "BDCR\000" .LASF211: .ascii "__FLT32_HAS_QUIET_NAN__ 1\000" @@ -4904,7 +4936,7 @@ usart2_write: .ascii "PRIo64 __PRI64(o)\000" .LASF736: .ascii "PRIdFAST16 __PRI16FAST(d)\000" -.LASF944: +.LASF953: .ascii "uint16_t\000" .LASF96: .ascii "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)\000" @@ -4948,7 +4980,7 @@ usart2_write: .ascii "RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)\000" .LASF763: .ascii "SCNx32 __SCN32(x)\000" -.LASF947: +.LASF956: .ascii "CFGR\000" .LASF558: .ascii "___int_least32_t_defined 1\000" @@ -5018,7 +5050,7 @@ usart2_write: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF939: +.LASF948: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -5036,9 +5068,9 @@ usart2_write: .ascii "__UINT16_TYPE__ short unsigned int\000" .LASF868: .ascii "RCC_PLLCFGR_PLLSRC_BIT 22\000" -.LASF907: +.LASF916: .ascii "GPIO_AF_USART2_RX (0b0111)\000" -.LASF905: +.LASF913: .ascii "false ((_Bool)+0u)\000" .LASF657: .ascii "_WCHAR_T_DEFINED_ \000" @@ -5076,7 +5108,7 @@ usart2_write: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF979: +.LASF988: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -5092,13 +5124,13 @@ usart2_write: .ascii "PRIXLEAST16 __PRI16LEAST(X)\000" .LASF623: .ascii "INT_FAST64_MAX (__INT_FAST64_MAX__)\000" -.LASF925: +.LASF934: .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: +.LASF900: .ascii "RCC_CFGR_SW_BIT 0\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -5126,7 +5158,7 @@ usart2_write: .ascii "_INT32_T_DECLARED \000" .LASF1: .ascii "__STDC_VERSION__ 202000L\000" -.LASF983: +.LASF992: .ascii "rxPin\000" .LASF520: .ascii "__int20 +2\000" @@ -5146,7 +5178,7 @@ usart2_write: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" .LASF712: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" -.LASF946: +.LASF955: .ascii "PLLCFGR\000" .LASF5: .ascii "__GNUC__ 12\000" @@ -5174,7 +5206,7 @@ usart2_write: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF462: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF938: +.LASF947: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -5184,7 +5216,7 @@ usart2_write: .ascii "__FLT_RADIX__ 2\000" .LASF455: .ascii "_INTTYPES_H \000" -.LASF940: +.LASF949: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -5202,7 +5234,7 @@ usart2_write: .ascii "WINT_MAX (__WINT_MAX__)\000" .LASF823: .ascii "SCNuFAST64 __SCN64FAST(u)\000" -.LASF968: +.LASF977: .ascii "SSCGR\000" .LASF137: .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" @@ -5218,19 +5250,21 @@ usart2_write: .ascii "__STDC__ 1\000" .LASF239: .ascii "__FLT32X_MIN__ 2.2250738585072014e-308F32x\000" +.LASF915: + .ascii "GPIO_AF_MCO_1 (0b0000)\000" .LASF218: .ascii "__FLT64_MAX_EXP__ 1024\000" .LASF654: .ascii "__WCHAR_T \000" .LASF223: .ascii "__FLT64_MIN__ 2.2250738585072014e-308F64\000" -.LASF977: +.LASF986: .ascii "GTPR\000" .LASF554: .ascii "___int32_t_defined 1\000" .LASF83: .ascii "__INT_WIDTH__ 32\000" -.LASF952: +.LASF961: .ascii "APB2RSTR\000" .LASF409: .ascii "__ARM_ARCH_PROFILE\000" @@ -5282,7 +5316,7 @@ usart2_write: .ascii "__ARM_NEON_FP\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF964: +.LASF973: .ascii "APB2LPENR\000" .LASF821: .ascii "SCNiFAST64 __SCN64FAST(i)\000" @@ -5290,7 +5324,7 @@ usart2_write: .ascii "_ANSIDECL_H_ \000" .LASF684: .ascii "SCNu8 __SCN8(u)\000" -.LASF902: +.LASF910: .ascii "_STDBOOL_H \000" .LASF261: .ascii "__UFRACT_FBIT__ 16\000" @@ -5310,11 +5344,11 @@ usart2_write: .ascii "L)\000" .LASF608: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF942: +.LASF951: .ascii "unsigned int\000" .LASF857: .ascii "RCC_CR_HSERDY_BIT 17\000" -.LASF910: +.LASF919: .ascii "GPIO_PORT_OFFSET (0x400U)\000" .LASF460: .ascii "__NEWLIB_MINOR__ 3\000" @@ -5354,9 +5388,11 @@ usart2_write: .ascii "__INT_FAST8_WIDTH__ 32\000" .LASF2: .ascii "__STDC_UTF_16__ 1\000" +.LASF887: + .ascii "RCC_CFGR_MCO1PRE_BIT 24\000" .LASF402: .ascii "__ARM_FEATURE_LDREX\000" -.LASF987: +.LASF996: .ascii "usart2_start\000" .LASF336: .ascii "__UQQ_FBIT__ 8\000" @@ -5386,7 +5422,7 @@ usart2_write: .ascii "__ARM_FEATURE_COPROC 15\000" .LASF484: .ascii "__OBSOLETE_MATH_DEFAULT 1\000" -.LASF978: +.LASF987: .ascii "gpio_set_af\000" .LASF864: .ascii "RCC_CR_HSION_ON (1 << RCC_CR_HSION_BIT)\000" @@ -5402,7 +5438,7 @@ usart2_write: .ascii "__STRINGIFY(a) #a\000" .LASF356: .ascii "__USA_FBIT__ 16\000" -.LASF963: +.LASF972: .ascii "APB1LPENR\000" .LASF480: .ascii "__IEEE_LITTLE_ENDIAN \000" @@ -5500,7 +5536,7 @@ usart2_write: .ascii "__LFRACT_IBIT__ 0\000" .LASF16: .ascii "__SIZEOF_INT__ 4\000" -.LASF924: +.LASF933: .ascii "USART_CR1_TE_ENABLE (1 << USART_CR1_TE_BIT)\000" .LASF166: .ascii "__DBL_MIN_EXP__ (-1021)\000" @@ -5510,13 +5546,15 @@ usart2_write: .ascii "SCNuFAST16 __SCN16FAST(u)\000" .LASF802: .ascii "SCNx64 __SCN64(x)\000" -.LASF915: +.LASF924: .ascii "PINPORT(pin) (pin >> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" -.LASF897: +.LASF885: + .ascii "RCC_CFGR_MCO1PRE_DIV4 (0b110)\000" +.LASF905: .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" -.LASF884: +.LASF892: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF646: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" @@ -5532,18 +5570,20 @@ usart2_write: .ascii "__SACCUM_FBIT__ 7\000" .LASF734: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF951: +.LASF960: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF957: +.LASF966: .ascii "APB1ENR\000" .LASF698: .ascii "PRIiFAST8 __PRI8FAST(i)\000" .LASF742: .ascii "SCNdFAST16 __SCN16FAST(d)\000" +.LASF883: + .ascii "RCC_CFGR_MCO1_BIT 21\000" .LASF867: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" @@ -5570,13 +5610,13 @@ usart2_write: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF941: +.LASF950: .ascii "long long unsigned int\000" .LASF612: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" .LASF150: .ascii "__FLT_MIN_10_EXP__ (-37)\000" -.LASF890: +.LASF898: .ascii "RCC_CFGR_SWS_MASK (0b11)\000" .LASF312: .ascii "__ULACCUM_IBIT__ 32\000" @@ -5625,7 +5665,7 @@ usart2_write: .ascii "__LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" -.LASF920: +.LASF929: .ascii "USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT)\000" .LASF231: .ascii "__FLT32X_DIG__ 15\000" @@ -5669,6 +5709,8 @@ usart2_write: .ascii "SIZE_MAX (__SIZE_MAX__)\000" .LASF333: .ascii "__DQ_IBIT__ 0\000" +.LASF888: + .ascii "RCC_CFGR_MCO1PRE_MASK (0b111)\000" .LASF450: .ascii "__ARM_BF16_FORMAT_ALTERNATIVE\000" .LASF45: @@ -5685,13 +5727,13 @@ usart2_write: .ascii "PRIoMAX __PRIMAX(o)\000" .LASF748: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" -.LASF971: +.LASF980: .ascii "GPIO_MODE_INPUT\000" .LASF744: .ascii "SCNoFAST16 __SCN16FAST(o)\000" -.LASF913: +.LASF922: .ascii "PIN(port,num) (PORT(port) | num)\000" -.LASF988: +.LASF997: .ascii "usart2_init\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" @@ -5717,7 +5759,7 @@ usart2_write: .ascii "PRIi16 __PRI16(i)\000" .LASF390: .ascii "__ARM_FEATURE_DSP 1\000" -.LASF922: +.LASF931: .ascii "USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT)\000" .LASF826: .ascii "__SCNMAX(x) __STRINGIFY(ll ##x)\000" @@ -5747,19 +5789,19 @@ usart2_write: .ascii "RCC_H_ \000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF909: +.LASF918: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" .LASF377: .ascii "__GCC_ATOMIC_INT_LOCK_FREE 2\000" -.LASF928: +.LASF937: .ascii "USART_BRR_MANTISSA_MASK (0b111111111111)\000" .LASF436: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF954: +.LASF963: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5799,11 +5841,11 @@ usart2_write: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF949: +.LASF958: .ascii "AHB2RSTR\000" .LASF672: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" -.LASF882: +.LASF890: .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" @@ -5829,11 +5871,11 @@ usart2_write: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF933: +.LASF942: .ascii "short int\000" .LASF836: .ascii "SCNuMAX __SCNMAX(u)\000" -.LASF918: +.LASF927: .ascii "USART2 ((struct usart *) USART2_BASE_ADDR)\000" .LASF121: .ascii "__UINT16_C(c) c\000" @@ -5845,7 +5887,7 @@ usart2_write: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF587: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" -.LASF919: +.LASF928: .ascii "USART_SR_TC_BIT 6\000" .LASF711: .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" @@ -5857,7 +5899,7 @@ usart2_write: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF974: +.LASF983: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5927,7 +5969,7 @@ usart2_write: .ascii "PRIdMAX __PRIMAX(d)\000" .LASF388: .ascii "__SIZEOF_WINT_T__ 4\000" -.LASF881: +.LASF889: .ascii "RCC_CFGR_PPRE2_BIT 13\000" .LASF783: .ascii "SCNoFAST32 __SCN32FAST(o)\000" @@ -5939,6 +5981,9 @@ usart2_write: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF702: .ascii "PRIXFAST8 __PRI8FAST(X)\000" +.LASF902: + .ascii "RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << R" + .ascii "CC_CFGR_SW_BIT)\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" .LASF785: @@ -5985,7 +6030,7 @@ usart2_write: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF665: .ascii "_BSD_WCHAR_T_\000" -.LASF969: +.LASF978: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -5995,7 +6040,7 @@ usart2_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF945: +.LASF954: .ascii "uint32_t\000" .LASF873: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -6049,13 +6094,13 @@ usart2_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF914: +.LASF923: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF769: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF936: +.LASF945: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6063,7 +6108,7 @@ usart2_write: .ascii "__FLT32_HAS_INFINITY__ 1\000" .LASF416: .ascii "__thumb__ 1\000" -.LASF927: +.LASF936: .ascii "USART_BRR_MANTISSA_BIT 4\000" .LASF421: .ascii "__ARMEL__ 1\000" @@ -6071,11 +6116,11 @@ usart2_write: .ascii "PRIXLEAST8 __PRI8LEAST(X)\000" .LASF328: .ascii "__HQ_FBIT__ 15\000" -.LASF906: +.LASF914: .ascii "__bool_true_false_are_defined 1\000" -.LASF921: +.LASF930: .ascii "USART_CR1_UE_BIT 13\000" -.LASF911: +.LASF920: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF799: @@ -6084,7 +6129,7 @@ usart2_write: .ascii "RCC_CR_HSIRDY_BIT 1\000" .LASF80: .ascii "__SIZE_MAX__ 0xffffffffU\000" -.LASF980: +.LASF989: .ascii "usart2_write\000" .LASF819: .ascii "PRIXFAST64 __PRI64FAST(X)\000" @@ -6104,7 +6149,7 @@ usart2_write: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF523: .ascii "long +4\000" -.LASF948: +.LASF957: .ascii "AHB1RSTR\000" .LASF724: .ascii "SCNx16 __SCN16(x)\000" @@ -6114,7 +6159,7 @@ usart2_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF986: +.LASF995: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF797: .ascii "PRIX64 __PRI64(X)\000" @@ -6152,7 +6197,7 @@ usart2_write: .ascii "__DBL_MIN_10_EXP__ (-307)\000" .LASF796: .ascii "PRIx64 __PRI64(x)\000" -.LASF923: +.LASF932: .ascii "USART_CR1_TE_BIT 3\000" .LASF513: .ascii "__int20\000" @@ -6160,7 +6205,7 @@ usart2_write: .ascii "INT_FAST32_MAX (__INT_FAST32_MAX__)\000" .LASF205: .ascii "__FLT32_NORM_MAX__ 3.4028234663852886e+38F32\000" -.LASF903: +.LASF911: .ascii "bool _Bool\000" .LASF632: .ascii "PTRDIFF_MIN (-PTRDIFF_MAX - 1)\000" @@ -6172,7 +6217,7 @@ usart2_write: .ascii "__ULFRACT_IBIT__ 0\000" .LASF852: .ascii "RCC ((struct rcc *) RCC_BASE_ADDR)\000" -.LASF887: +.LASF895: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: .ascii "__INT_MAX__ 0x7fffffff\000" diff --git a/build/usart.i b/build/usart.i index 8b07638..6bdf7f6 100644 --- a/build/usart.i +++ b/build/usart.i @@ -2055,6 +2055,19 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_2 (0b100) +#define RCC_CFGR_MCO1_HSE (0b10) +#define RCC_CFGR_MCO1_PLL (0b11) + +#define RCC_CFGR_MCO1_BIT 21 +#define RCC_CFGR_MCO1_MASK (0b11) + +#define RCC_CFGR_MCO1PRE_DIV4 (0b110) +#define RCC_CFGR_MCO1PRE_DIV2 (0b100) + +#define RCC_CFGR_MCO1PRE_BIT 24 +#define RCC_CFGR_MCO1PRE_MASK (0b111) + + #define RCC_CFGR_PPRE2_BIT 13 #define RCC_CFGR_PPRE2_MASK (0b111) @@ -2124,6 +2137,7 @@ struct gpio { }; +#define GPIO_AF_MCO_1 (0b0000) #define GPIO_AF_USART2_RX (0b0111) #define GPIO_AF_USART2_TX (0b0111) @@ -2150,9 +2164,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, -# 46 "src/gpio.h" 3 4 +# 47 "src/gpio.h" 3 4 _Bool -# 46 "src/gpio.h" +# 47 "src/gpio.h" val); # 3 "src/usart.c" 2 # 1 "src/usart.h" 1 @@ -2218,16 +2232,14 @@ void usart2_init(void) { uint16_t rxPin = (((('A') - 'A') << 8) | 3); gpio_set_mode(rxPin, GPIO_MODE_AF); gpio_set_af(rxPin, (0b0111)); - - - +# 29 "src/usart.c" ((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" +# 52 "src/usart.c" ((struct usart *) (0x40004400U))->BRR &= ~((0b111111111111) << 4); ((struct usart *) (0x40004400U))->BRR |= (0x1A << 4); ((struct usart *) (0x40004400U))->BRR &= ~((0b111) << 0); diff --git a/build/usart.o b/build/usart.o index b3faefa46d130e8522e055b3f02414f672aca560..7f9a7022a7b992a255eff609492a0aac92525067 100644 GIT binary patch delta 7683 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 delta 7343 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 sZZ)PaYbJ;7R%3e6G`ViK8k0=(CFGR &= ~(RCC_CFGR_MCO1_MASK << RCC_CFGR_MCO1_BIT); */ + /* RCC->CFGR |= (RCC_CFGR_MCO1_HSE << RCC_CFGR_MCO1_BIT); */ + /* RCC->CFGR |= (RCC_CFGR_MCO1_PLL << RCC_CFGR_MCO1_BIT); */ + /* RCC->CFGR &= ~(RCC_CFGR_MCO1PRE_MASK << RCC_CFGR_MCO1PRE_BIT); */ + /* RCC->CFGR |= (RCC_CFGR_MCO1PRE_DIV4 << RCC_CFGR_MCO1PRE_BIT); */ // Enable USART RCC->APB1ENR |= RCC_APB1ENR_USART2EN_ENABLE; -- 2.51.0 From 4600e8e838cb4a717b77fb7ef3c3d41b8be3aae5 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:40:01 +0100 Subject: [PATCH 16/17] Disable `FLASH` wait states As it blocks the mc from reaching a ready state for unknown reason(s) --- build/final.elf | Bin 62296 -> 62256 bytes build/final.elf.map | 228 ++++++++++++++++++++++---------------------- build/main.S | 97 ++++++++----------- build/main.i | 15 +-- build/main.o | Bin 50452 -> 50412 bytes src/flash.h | 2 +- src/main.c | 5 +- 7 files changed, 167 insertions(+), 180 deletions(-) diff --git a/build/final.elf b/build/final.elf index 6ce76be4c9892667cdbc9c244a1abe97147f9dcb..831ee91ea1f41182a370ec044683149a512ae8e9 100755 GIT binary patch delta 4486 zcmccdjCsQ|<_QvR-qBk+$HB|_Lqo7|ioLgVhMkx47YAqI1RHPZ z3~MiEFx$dgI>X#c`2!=faDu6~bcTtS^Opu=;RJ^LM&8mH%wHIc8MJ?1(D#O#pyM5#p$$^S9Gsx(9hITssp&23?46+IJv&3yOZmeG=E(`l-b!Ax6EY?zD0Qn-m^2Lyp+ErI8RQH@D}%)oiRB<%v(A`6y)4uko7_! z>pw6QgRBR!1wlHKg%kL_r8D@voWC#>3s1f;?8ulqSy9BCaqZ+t5nE~Q|EwMiAO8Me z_Kwc_-Ei+Y!+r(}CIT9z-|r4~MG3e6-}U}6EAMXD-N6Lr zefzr`Dz3EoqG&lYqr_xS$(4+ClYh%Ad$J`mFtBhhU|?VnU_2Sez`()-Vv8_xhchs+ z@Cq<7Fi0@&iD6)1;RA^)Ft$Z8FtG50*eZ;oATl@8*wj$>fp-~>rX9SjT%OcRTE;-VNBBB8u89>D|#hA8$o%pkc^2GIi% z3=E9CybqWdIAj<>CNQ)xGBB_*FtTJYF-+bsE6(UW`MT_8RUTFb4i2yt0)j~l42+^| ze^?ke1i&JKTM`)<7}?lnOkOYN$~bTGS2<0_1C!s10^U%R<@GO zXH~`7*g*0Bhk5cVZ8^aiEDRhepo9gDW1h*9I`W(%tPC6u3=9k*lO1*BB}-TtI6&@z znFq7FW^$#DL-HIZc5td>WRPY6r6(3}*~bnxm>ryS*da+u6j>T<13M%Rl#nIBmNBw} z?P3Sp#9p&mM)#s3BlF~Ueq!}Xi3|*^S{!i<46NGkK&0M646H_m(F_c% z#yOD;46J6)Ll_uX&0RojtJ?_-46N3?F$@f>b~+#t`&l5BPBCE&46M#4K%~nfkgVGi zkgU5-ECU0prwEAcRRPlLeF9{@uWdbui>Y8$sYwG1ulV15!nT@T+|KZ9EpV>{gS<)FqEkU*(Y}h zBrfj&a+<=8C~%xHurhrEiE<}`RPb1XZ00`#a*I$Jh%LMaq+cXB9H!b3WRL7_kX*go zWRP_Vt3XauoC!D37^FqO8l+HA2Bbo?5k!jJ1{o`L9OPW-9FQaA_(7J+TYFn(iRITD&1(2QYavGcYhSFtRc%_GH*x>Aa9@GE2-KM$^rVvB}&c zJ!K_RC1rskqn+_8C{8;Wzk!l>7o#mS^hH=V=R2?F+FVdl%fxtY^SiPDMkYm<$vzeO zY@iZ^`OM_Tiam@oCfilI%Yq6HW)VhKW_<%z9tI{BMnfhh21Z6!83tA+p2>?U*D{Js z4ye*+44K?ewS%!_vSoEDqt4{{)sl=plXq4dFxG5-Rc#%)+3#v5$7I#3N~}o+28M>4 zx8AL0kpq=}j(jZbjE=nQOpUy}PRIEeWEdD2K(*)}=E;7K^cZJMu6?8qb_1y1bL8V_ zXX*nfXJ8OvU|_hxz`(#W`QRgUMv=)cAIUR?uuhJ9EH+u;u>{B=kChp9CdWROXY`p| z`&gZ^X7kd=`izF4;t*UgGB7dlF)%Q^U||4NvY-;1fg4)>!sJ1Gp2@6Fn>|5JWrFH> z!;H`YGGPT9f)COG3PP9(Ao(678w@8Od?IWMDsz!l_^_gy04j}<M4 z6)I?M0F~Ov@*ZgNpz<79z5-3Y28r(o?K6OaNr{1p!JUDj9^8q535234h(zN@qwy2a z_&E#=3_G9}3NU>9Uydf<2#}8{n7ZrObiUQYz!P)3=9k)3lq@fQ<#iVU7Urcpn!>i zp%mJf0~t^QlAk>Fm3$y_@>~iMMT)M?X#Cx1{Nqdv4584*G|1FTAoW`-n`;vxi1K_VJI6^);Z#xFwSmxK75 zS>NnuVN{rW^n)_vj>#`S_%rU9Z23{0@!I6XkLrvqlRH1EGv-X*_)(pab@I)R>Z}o^ z3=9(|vwl)$dRaYL>ysK|#N@zF>Wp(ISAJ4wyf}H`Cw0b@$tORlGtQX&@sm2!i`SE- NKC3b2Om_S%4gf~o-i81G delta 4437 zcmdn+jQPeh<_Qv4Bp&?i}#m!qf!_`aqi-WUpg0r`D zhLe{wm~HPZonhyt{DF~KIKjqSI>Xw_`AdVba00`AOK<56<}VD!4B9_0n0ZTQn0hIH zXebs=F!qklFaoJ!4o)!ej>^#YH1HO7_D<0Co}HoNrTpOo^W+3AZ%wb+^%;{BG`weL zsCy}Yc@R7~LDhS9h6+ey@Zn)uj19EOL$a+bT z^&c3DLDqxV5+I$)!UR^HvPyMqbLd+~QSR9s~9R?%{1M#sszk}DaPPrfg&?5Ur~z`(-2fPsNQfbmlt z0|N^Wh%Lg%9nQeO!YjbUz#zf+G=_nJg%2dIz_>n&fq{h|#8zPx1*s7LsnKA3HQ8H1 zc5;Fg8{@ml`3ka=Tcos9)j|5CKxz{hcYyRsgV-sI(h&>{EHWT{8H^c|Z!5@7{vgH1 zyAY&80i>dVF>o@obU7bK6axbr2S|j4ku_>^hqMA??c|lxL3}B33=ABcAPEje^{C05 zGM0@0Cp*iyGa63rmQiN(nY>;`g-IfD@>LoC`fbq+44k^`kx>i`94hRcaSRNcI_xnC z3=AB~!aZRO42(XkRSXOa5-bcHa~K#H80TcOFffSZq^2-1hVXPSFfcGpEaGX8Vql1X z^2&Iu5*QdF+21gOTz{ia%3u!QKJlw7Iy+s0#Xl&5@odL;8ui$Ix8a7vlT(1 zzElwu>TeZ6p)RPTA_fX)kpfl*4h68k*gzr8VldfTNrzEka)r`n#^sZBl$8x3KG}hk z>_BW-veQCJb|7&D#`TjMl*JieO`f3)^2r`$cV0;10?8&Y?wBl~BF>mGSwjWpZjd-A z8AYhP;*bCZttZ=z$zH04j2V+_RHdariGtCN&4Uf*PBBozU}R;Ruz91ZI2#)%9wk^N zpVO8T+`_`ZkpfB}(74i={8w9^(}0zM!-0W;pfJhha zSOx}GH{K`)23Ggb*m?#AR!>`yQm=&x3=FK^CqNeXrh(Xg&p{ge7lSke@`6NyIzf&I z76OTf?*oZMFoP_MULL`~z#1b3(i`^;Bofa6Vkh>4*hx2n85meo=7F4&>IU*sh6+e; z=I=O$7zWlH+i(U3*4&dIr3Jr11{GZf`KdS$$P|&sAWw+qgPbF=5TswS z7i6D|2*?n**C28EOpr4b7^A^)$iT`Z4{{xM7sxE06p+pQZ$WMm>Ibof_ki?^1c$>^ z8-nbSeFBoJm)irfPGJ?uX^MxUU`mWZS_G^?3I$z3DnwU-NHG?W#Zn(Y&Xt}DV#`^8 zER|0NIY7w-WTbK~NSE4mkQ()aAT^o=AiY|=Az;&)!kHNum>C#Z85VmoY<3Tv%gyA- zve`Cp4cFvJ>D%h*m9%iAta^~M>5;T>q%2nk239I0t?o=2CIwb-sBR7|sbS*01+G3= z7#2-VEH&FKP%gyCr)f~HgK@%S!Rl0LP=Ud0%gCy%4>F3;mWhLbk&#uIft4v^ z^2BNb#u=LrRa-|+PP?nbR$*XhXsEgQ&y_5W&HZ;PS>!Jtmtz zmS@bE9Qs(DamMD_$NG$hpkfeQATls9@G&qju&^?KDoIeq%fJmScVY4%zQ*LcPnvB( z4q}4p;9x=M0GV)v4Z#QL00k7x1d#lS$#b8|8-mJLWYG*XdqE{HvV70vw@>BkL4_}} zr~{f^pg=~JPeGFhmDkAfQ_$pRAn_fc?R`*iC^0ZGxHB-+Gk_ZYFo94s1(9fcP?3YI zJ^@WWhk=3N3e-XYhL8Wt(d1jv_&p4hxt(@+L+G2195I0pyY%kSZkqPGDqU*a~e| zfaK?($uC3WuSVl@oGkki)fo@al)Xjce?{Z}LgOi zVIs7#1~Q-qBtJR#m3$y_@>~iMMT)M?X#Cx1{Nqdv4294pFUZtOAon4I`gov~wb=SOu$#mO5#sACR |= (1 <<9); - ((struct flash *) (0x40023C00U))->ACR &= ~((0b1111) << 0); - ((struct rcc *) (0x40023800U))->CFGR |= ((0x0111) << 0); + + + ((struct rcc *) (0x40023800U))->CFGR |= (((0b10) & (0b11)) << 0); @@ -2396,13 +2397,13 @@ int main(void) { uint16_t counter = ((struct timer *) (0x40000800U))->CNT; -# 89 "src/main.c" 3 4 +# 90 "src/main.c" 3 4 _Bool -# 89 "src/main.c" +# 90 "src/main.c" led_on = -# 89 "src/main.c" 3 4 +# 90 "src/main.c" 3 4 ((_Bool)+0u) -# 89 "src/main.c" +# 90 "src/main.c" ; while(1) { if ((((struct timer *) (0x40000800U))->CNT - counter) >= 250) { diff --git a/build/main.o b/build/main.o index 7cec1a07ccb52dfb4d17a6e6d410f053c681874b..bbbf9b4b30c6cdf4aac91563a5e6bd5616e51c53 100644 GIT binary patch delta 7620 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 delta 7325 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 |= FLASH_ACR_DCEN_ENABLE; FLASH->ACR |= FLASH_ACR_ICEN_ENABLE; + // TODO breaks with these flash settings on; turning off for now // Set latency to be 3 wait states (TODO: understand why exactly 3) - FLASH->ACR &= ~(FLASH_ACR_LATENCY_MASK << FLASH_ACR_LATENCY_BIT); - RCC->CFGR |= (FLASH_ACR_LATENCY_3_WAIT_STATES << FLASH_ACR_LATENCY_BIT); + /* FLASH->ACR &= ~(FLASH_ACR_LATENCY_MASK << FLASH_ACR_LATENCY_BIT); */ + /* RCC->CFGR |= (FLASH_ACR_LATENCY_3_WAIT_STATES << FLASH_ACR_LATENCY_BIT); */ // Use PLL as system clock RCC->CFGR |= RCC_CFGR_SW(RCC_CFGR_SW_PLL); -- 2.51.0 From 68f6d98f1f07cdab475652349a258233e555bd1e Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:39:17 +0100 Subject: [PATCH 17/17] Add `README` --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..cc2b9e9 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# Falling sand on the STM32F411CE + +## Building +Run +```sh +make build +``` + +## Probe for the board +Run +```sh +st-info --probe +``` + +## Flashing +Run +```sh +make flash +``` + +## Debugging + +### `st-info --probe` shows 0KB flash +``` +> sudo st-info --probe +Found 1 stlink programmers + version: V2J43S28 + serial: 0671FF343056363043090732 + flash: 0 (pagesize: 16384) <--- 0KB flash + sram: 131072 + chipid: 0x431 + dev-type: STM32F411xC_xE +``` +This can happen when the flash is locked. One way to unlock it is to erase the entire chip via the +Windows application `ST-Link Util`. -- 2.51.0