diff --git a/README.md b/README.md index 76f1008..cc2b9e9 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,27 @@ make build ## Probe for the board Run ```sh -st-info --probe +st-info --probe ``` ## Flashing Run ```sh -make flash +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`. diff --git a/build/final.elf b/build/final.elf index 8e6b73c..54f770f 100755 Binary files a/build/final.elf and b/build/final.elf differ diff --git a/build/final.elf.map b/build/final.elf.map index bfba6d0..6427ca2 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -53,7 +53,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 0x88 build/main.o + .debug_macro 0x00000000 0xa0 build/main.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o @@ -128,7 +128,7 @@ Discarded input sections .debug_macro 0x00000000 0x1df build/usart.o .debug_macro 0x00000000 0x89 build/usart.o .debug_macro 0x00000000 0x4cc build/usart.o - .debug_macro 0x00000000 0x13e build/usart.o + .debug_macro 0x00000000 0x19f build/usart.o .debug_macro 0x00000000 0x22 build/usart.o .debug_macro 0x00000000 0x82 build/usart.o @@ -157,7 +157,7 @@ LOAD build/usart.o 0x08000000 interrupt_vector_table 0x08000198 . = ALIGN (0x4) -.text 0x08000198 0x4e4 +.text 0x08000198 0x4d4 0x08000198 . = ALIGN (0x4) *(.text) *(.text.*) @@ -169,129 +169,129 @@ LOAD build/usart.o 0x080001fa gpio_write *fill* 0x08000246 0x2 .text.system_clock_init - 0x08000248 0x144 build/main.o - .text.main 0x0800038c 0x9c build/main.o - 0x0800038c main + 0x08000248 0x128 build/main.o + .text.main 0x08000370 0x9c build/main.o + 0x08000370 main .text.init_memory - 0x08000428 0x64 build/startup.o - 0x08000428 init_memory - .text.reset 0x0800048c 0x10 build/startup.o - 0x0800048c reset + 0x0800040c 0x64 build/startup.o + 0x0800040c init_memory + .text.reset 0x08000470 0x10 build/startup.o + 0x08000470 reset .text.default_handler - 0x0800049c 0x8 build/startup.o - 0x0800049c exti0 - 0x0800049c debug_monitor - 0x0800049c rcc - 0x0800049c x - 0x0800049c sdio - 0x0800049c usage_fault - 0x0800049c tim1_up_tim10 - 0x0800049c usart1 - 0x0800049c i2c3_er - 0x0800049c spi2 - 0x0800049c dma1_stream1 - 0x0800049c bus_fault - 0x0800049c spi5 - 0x0800049c exti3 - 0x0800049c dma2_stream5 - 0x0800049c tim2 - 0x0800049c dma1_stream6 - 0x0800049c default_handler - 0x0800049c i2c1_er - 0x0800049c hard_fault - 0x0800049c usart6 - 0x0800049c exti15_10 - 0x0800049c usart2 - 0x0800049c pend_sv - 0x0800049c i2c1_ev - 0x0800049c wwdg - 0x0800049c adc - 0x0800049c rtc_alarm - 0x0800049c spi3 - 0x0800049c exti1 - 0x0800049c mem_manage - 0x0800049c dma2_stream1 - 0x0800049c dma1_stream2 - 0x0800049c dma2_stream3 - 0x0800049c sv_call - 0x0800049c tim3 - 0x0800049c otg_fs - 0x0800049c dma1_stream5 - 0x0800049c dma2_stream6 - 0x0800049c flash - 0x0800049c tamp_stamp - 0x0800049c i2c3_ev - 0x0800049c rtc_wkup - 0x0800049c dma2_stream0 - 0x0800049c pvd - 0x0800049c fpu - 0x0800049c exti4 - 0x0800049c exti2 - 0x0800049c spi1 - 0x0800049c dma1_stream0 - 0x0800049c tim1_brk_tim9 - 0x0800049c i2c2_ev - 0x0800049c otg_fs_wkup - 0x0800049c spi4 - 0x0800049c dma2_stream2 - 0x0800049c tim1_cc - 0x0800049c tim1_trg_com_tim11 - 0x0800049c exti9_5 - 0x0800049c dma1_stream3 - 0x0800049c dma2_stream4 - 0x0800049c i2c2_er - 0x0800049c dma2_stream7 - 0x0800049c dma1_stream7 - 0x0800049c nmi - 0x0800049c systick - 0x0800049c tim4 - 0x0800049c tim5 - 0x0800049c dma1_stream4 + 0x08000480 0x8 build/startup.o + 0x08000480 exti0 + 0x08000480 debug_monitor + 0x08000480 rcc + 0x08000480 x + 0x08000480 sdio + 0x08000480 usage_fault + 0x08000480 tim1_up_tim10 + 0x08000480 usart1 + 0x08000480 i2c3_er + 0x08000480 spi2 + 0x08000480 dma1_stream1 + 0x08000480 bus_fault + 0x08000480 spi5 + 0x08000480 exti3 + 0x08000480 dma2_stream5 + 0x08000480 tim2 + 0x08000480 dma1_stream6 + 0x08000480 default_handler + 0x08000480 i2c1_er + 0x08000480 hard_fault + 0x08000480 usart6 + 0x08000480 exti15_10 + 0x08000480 usart2 + 0x08000480 pend_sv + 0x08000480 i2c1_ev + 0x08000480 wwdg + 0x08000480 adc + 0x08000480 rtc_alarm + 0x08000480 spi3 + 0x08000480 exti1 + 0x08000480 mem_manage + 0x08000480 dma2_stream1 + 0x08000480 dma1_stream2 + 0x08000480 dma2_stream3 + 0x08000480 sv_call + 0x08000480 tim3 + 0x08000480 otg_fs + 0x08000480 dma1_stream5 + 0x08000480 dma2_stream6 + 0x08000480 flash + 0x08000480 tamp_stamp + 0x08000480 i2c3_ev + 0x08000480 rtc_wkup + 0x08000480 dma2_stream0 + 0x08000480 pvd + 0x08000480 fpu + 0x08000480 exti4 + 0x08000480 exti2 + 0x08000480 spi1 + 0x08000480 dma1_stream0 + 0x08000480 tim1_brk_tim9 + 0x08000480 i2c2_ev + 0x08000480 otg_fs_wkup + 0x08000480 spi4 + 0x08000480 dma2_stream2 + 0x08000480 tim1_cc + 0x08000480 tim1_trg_com_tim11 + 0x08000480 exti9_5 + 0x08000480 dma1_stream3 + 0x08000480 dma2_stream4 + 0x08000480 i2c2_er + 0x08000480 dma2_stream7 + 0x08000480 dma1_stream7 + 0x08000480 nmi + 0x08000480 systick + 0x08000480 tim4 + 0x08000480 tim5 + 0x08000480 dma1_stream4 .text.tim4_init - 0x080004a4 0x40 build/timer.o - 0x080004a4 tim4_init + 0x08000488 0x40 build/timer.o + 0x08000488 tim4_init .text.tim4_start - 0x080004e4 0x20 build/timer.o - 0x080004e4 tim4_start + 0x080004c8 0x20 build/timer.o + 0x080004c8 tim4_start .text.usart2_init - 0x08000504 0xec build/usart.o - 0x08000504 usart2_init + 0x080004e8 0xf8 build/usart.o + 0x080004e8 usart2_init .text.usart2_start - 0x080005f0 0x20 build/usart.o - 0x080005f0 usart2_start + 0x080005e0 0x20 build/usart.o + 0x080005e0 usart2_start .text.usart2_write_byte - 0x08000610 0x30 build/usart.o - 0x08000610 usart2_write_byte + 0x08000600 0x30 build/usart.o + 0x08000600 usart2_write_byte .text.usart2_write - 0x08000640 0x2a build/usart.o - 0x08000640 usart2_write + 0x08000630 0x2a build/usart.o + 0x08000630 usart2_write *(.rodata) - *fill* 0x0800066a 0x2 - .rodata 0x0800066c 0xe build/main.o + *fill* 0x0800065a 0x2 + .rodata 0x0800065c 0xf build/main.o *(.rodata.*) - 0x0800067c . = ALIGN (0x4) - *fill* 0x0800067a 0x2 - 0x0800067c _data_addr = LOADADDR (.data) + 0x0800066c . = ALIGN (0x4) + *fill* 0x0800066b 0x1 + 0x0800066c _data_addr = LOADADDR (.data) -.glue_7 0x0800067c 0x0 - .glue_7 0x0800067c 0x0 linker stubs +.glue_7 0x0800066c 0x0 + .glue_7 0x0800066c 0x0 linker stubs -.glue_7t 0x0800067c 0x0 - .glue_7t 0x0800067c 0x0 linker stubs +.glue_7t 0x0800066c 0x0 + .glue_7t 0x0800066c 0x0 linker stubs -.vfp11_veneer 0x0800067c 0x0 - .vfp11_veneer 0x0800067c 0x0 linker stubs +.vfp11_veneer 0x0800066c 0x0 + .vfp11_veneer 0x0800066c 0x0 linker stubs -.v4_bx 0x0800067c 0x0 - .v4_bx 0x0800067c 0x0 linker stubs +.v4_bx 0x0800066c 0x0 + .v4_bx 0x0800066c 0x0 linker stubs -.iplt 0x0800067c 0x0 - .iplt 0x0800067c 0x0 build/main.o +.iplt 0x0800066c 0x0 + .iplt 0x0800066c 0x0 build/main.o -.rel.dyn 0x0800067c 0x0 - .rel.iplt 0x0800067c 0x0 build/main.o +.rel.dyn 0x0800066c 0x0 + .rel.iplt 0x0800066c 0x0 build/main.o -.data 0x20000000 0x0 load address 0x0800067c +.data 0x20000000 0x0 load address 0x0800066c 0x20000000 . = ALIGN (0x4) 0x20000000 _data_start = . *(.data) @@ -299,10 +299,10 @@ LOAD build/usart.o 0x20000000 . = ALIGN (0x4) 0x20000000 _data_end = . -.igot.plt 0x20000000 0x0 load address 0x0800067c +.igot.plt 0x20000000 0x0 load address 0x0800066c .igot.plt 0x20000000 0x0 build/main.o -.bss 0x20000000 0x0 load address 0x0800067c +.bss 0x20000000 0x0 load address 0x0800066c 0x20000000 . = ALIGN (0x4) 0x20000000 _bss_start = . *(.bss) @@ -351,7 +351,7 @@ LOAD linker stubs .debug_rnglists 0x0000006c 0x26 build/usart.o -.debug_macro 0x00000000 0x48a9 +.debug_macro 0x00000000 0x499b .debug_macro 0x00000000 0xb56 build/gpio.o .debug_macro 0x00000b56 0x22 build/gpio.o .debug_macro 0x00000b78 0x75 build/gpio.o @@ -366,39 +366,39 @@ 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 0x88 build/gpio.o - .debug_macro 0x0000168b 0xb89 build/main.o - .debug_macro 0x00002214 0x144 build/main.o - .debug_macro 0x00002358 0x46 build/main.o - .debug_macro 0x0000239e 0x2e build/main.o - .debug_macro 0x000023cc 0x22 build/main.o - .debug_macro 0x000023ee 0x82 build/main.o - .debug_macro 0x00002470 0xb02 build/startup.o - .debug_macro 0x00002f72 0x56 build/startup.o - .debug_macro 0x00002fc8 0x51 build/startup.o - .debug_macro 0x00003019 0xb5c build/timer.o - .debug_macro 0x00003b75 0x13e build/timer.o - .debug_macro 0x00003cb3 0xb74 build/usart.o - .debug_macro 0x00004827 0x82 build/usart.o + .debug_macro 0x00001603 0xa0 build/gpio.o + .debug_macro 0x000016a3 0xb89 build/main.o + .debug_macro 0x0000222c 0x1a5 build/main.o + .debug_macro 0x000023d1 0x46 build/main.o + .debug_macro 0x00002417 0x2e build/main.o + .debug_macro 0x00002445 0x22 build/main.o + .debug_macro 0x00002467 0x82 build/main.o + .debug_macro 0x000024e9 0xb02 build/startup.o + .debug_macro 0x00002feb 0x56 build/startup.o + .debug_macro 0x00003041 0x51 build/startup.o + .debug_macro 0x00003092 0xb5c build/timer.o + .debug_macro 0x00003bee 0x19f build/timer.o + .debug_macro 0x00003d8d 0xb74 build/usart.o + .debug_macro 0x00004901 0x9a build/usart.o -.debug_line 0x00000000 0x661 +.debug_line 0x00000000 0x65d .debug_line 0x00000000 0x116 build/gpio.o - .debug_line 0x00000116 0x1e4 build/main.o - .debug_line 0x000002fa 0xea build/startup.o - .debug_line 0x000003e4 0xdf build/timer.o - .debug_line 0x000004c3 0x19e build/usart.o + .debug_line 0x00000116 0x1da build/main.o + .debug_line 0x000002f0 0xea build/startup.o + .debug_line 0x000003da 0xdf build/timer.o + .debug_line 0x000004b9 0x1a4 build/usart.o -.debug_str 0x00000000 0x63e6 - .debug_str 0x00000000 0x5508 build/gpio.o - 0x56b0 (size before relaxing) - .debug_str 0x00005508 0xe17 build/main.o - 0x6477 (size before relaxing) - .debug_str 0x0000631f 0x88 build/startup.o +.debug_str 0x00000000 0x65c7 + .debug_str 0x00000000 0x5574 build/gpio.o + 0x571c (size before relaxing) + .debug_str 0x00005574 0xf8c build/main.o + 0x6658 (size before relaxing) + .debug_str 0x00006500 0x88 build/startup.o 0x3cdc (size before relaxing) - .debug_str 0x000063a7 0xc build/timer.o - 0x5bc2 (size before relaxing) - .debug_str 0x000063b3 0x33 build/usart.o - 0x60ec (size before relaxing) + .debug_str 0x00006588 0xc build/timer.o + 0x5d37 (size before relaxing) + .debug_str 0x00006594 0x33 build/usart.o + 0x62cd (size before relaxing) .comment 0x00000000 0x45 .comment 0x00000000 0x45 build/gpio.o diff --git a/build/gpio.S b/build/gpio.S index a59bc5e..de0bc90 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -188,10 +188,10 @@ gpio_write: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x8 - .4byte .LASF908 + .4byte .LASF912 .byte 0x1d - .4byte .LASF909 - .4byte .LASF910 + .4byte .LASF913 + .4byte .LASF914 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -199,17 +199,17 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x6 - .4byte .LASF877 + .4byte .LASF881 .uleb128 0x1 .byte 0x1 .byte 0x8 - .4byte .LASF878 + .4byte .LASF882 .uleb128 0x1 .byte 0x2 .byte 0x5 - .4byte .LASF879 + .4byte .LASF883 .uleb128 0x3 - .4byte .LASF882 + .4byte .LASF886 .byte 0x2 .byte 0x39 .byte 0x1c @@ -217,13 +217,13 @@ gpio_write: .uleb128 0x1 .byte 0x2 .byte 0x7 - .4byte .LASF880 + .4byte .LASF884 .uleb128 0x1 .byte 0x4 .byte 0x5 - .4byte .LASF881 + .4byte .LASF885 .uleb128 0x3 - .4byte .LASF883 + .4byte .LASF887 .byte 0x2 .byte 0x4f .byte 0x1b @@ -231,21 +231,21 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF884 + .4byte .LASF888 .uleb128 0x1 .byte 0x8 .byte 0x5 - .4byte .LASF885 + .4byte .LASF889 .uleb128 0x1 .byte 0x8 .byte 0x7 - .4byte .LASF886 + .4byte .LASF890 .uleb128 0x9 .byte 0x4 .byte 0x5 .ascii "int\000" .uleb128 0x3 - .4byte .LASF887 + .4byte .LASF891 .byte 0x2 .byte 0xe8 .byte 0x16 @@ -253,15 +253,15 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF888 + .4byte .LASF892 .uleb128 0x3 - .4byte .LASF889 + .4byte .LASF893 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x3 - .4byte .LASF890 + .4byte .LASF894 .byte 0x3 .byte 0x30 .byte 0x14 @@ -269,35 +269,35 @@ gpio_write: .uleb128 0xa .4byte 0xa0 .uleb128 0x3 - .4byte .LASF891 + .4byte .LASF895 .byte 0x3 .byte 0x52 .byte 0x15 .4byte 0x81 .uleb128 0xb - .4byte .LASF907 + .4byte .LASF911 .byte 0x28 .byte 0x4 .byte 0x7 .byte 0x8 .4byte 0x139 .uleb128 0x2 - .4byte .LASF892 + .4byte .LASF896 .byte 0x8 .4byte 0xac .byte 0 .uleb128 0x2 - .4byte .LASF893 + .4byte .LASF897 .byte 0x9 .4byte 0xac .byte 0x4 .uleb128 0x2 - .4byte .LASF894 + .4byte .LASF898 .byte 0xa .4byte 0xac .byte 0x8 .uleb128 0x2 - .4byte .LASF895 + .4byte .LASF899 .byte 0xb .4byte 0xac .byte 0xc @@ -312,22 +312,22 @@ gpio_write: .4byte 0xac .byte 0x14 .uleb128 0x2 - .4byte .LASF896 + .4byte .LASF900 .byte 0xe .4byte 0xac .byte 0x18 .uleb128 0x2 - .4byte .LASF897 + .4byte .LASF901 .byte 0xf .4byte 0xac .byte 0x1c .uleb128 0x2 - .4byte .LASF898 + .4byte .LASF902 .byte 0x10 .4byte 0xac .byte 0x20 .uleb128 0x2 - .4byte .LASF899 + .4byte .LASF903 .byte 0x11 .4byte 0xac .byte 0x24 @@ -337,30 +337,30 @@ gpio_write: .byte 0x1 .4byte 0x31 .byte 0x4 - .byte 0x38 + .byte 0x40 .byte 0xe .4byte 0x160 .uleb128 0x4 - .4byte .LASF900 + .4byte .LASF904 .byte 0 .uleb128 0x4 - .4byte .LASF901 + .4byte .LASF905 .byte 0x1 .uleb128 0x4 - .4byte .LASF902 + .4byte .LASF906 .byte 0x2 .uleb128 0x4 - .4byte .LASF903 + .4byte .LASF907 .byte 0x3 .byte 0 .uleb128 0x3 - .4byte .LASF904 + .4byte .LASF908 .byte 0x4 - .byte 0x3d + .byte 0x45 .byte 0x3 .4byte 0x139 .uleb128 0xd - .4byte .LASF911 + .4byte .LASF915 .byte 0x1 .byte 0xd .byte 0x6 @@ -386,7 +386,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x7 - .4byte .LASF907 + .4byte .LASF911 .byte 0xe .4byte 0x1b3 .uleb128 0x2 @@ -396,12 +396,12 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x2 - .4byte .LASF905 + .4byte .LASF909 .uleb128 0xe .byte 0x4 .4byte 0xbd .uleb128 0xf - .4byte .LASF912 + .4byte .LASF916 .byte 0x1 .byte 0x6 .byte 0x6 @@ -418,7 +418,7 @@ gpio_write: .byte 0x91 .sleb128 -18 .uleb128 0x10 - .4byte .LASF906 + .4byte .LASF910 .byte 0x1 .byte 0x6 .byte 0x2c @@ -427,7 +427,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x7 - .4byte .LASF907 + .4byte .LASF911 .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.482807a1c0512cd436d5862f3edb1adc,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.bc74b8bd59193b3190f972f5d232b4bf,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -3542,40 +3542,40 @@ gpio_write: .uleb128 0x18 .4byte .LASF858 .byte 0x5 - .uleb128 0x19 + .uleb128 0x1a .4byte .LASF859 .byte 0x5 - .uleb128 0x1a + .uleb128 0x1b .4byte .LASF860 .byte 0x5 - .uleb128 0x1c + .uleb128 0x1d .4byte .LASF861 .byte 0x5 - .uleb128 0x1d + .uleb128 0x1e .4byte .LASF862 .byte 0x5 - .uleb128 0x1e + .uleb128 0x20 .4byte .LASF863 .byte 0x5 .uleb128 0x21 .4byte .LASF864 .byte 0x5 - .uleb128 0x22 + .uleb128 0x24 .4byte .LASF865 .byte 0x5 - .uleb128 0x23 + .uleb128 0x25 .4byte .LASF866 .byte 0x5 - .uleb128 0x25 + .uleb128 0x26 .4byte .LASF867 .byte 0x5 - .uleb128 0x26 + .uleb128 0x29 .4byte .LASF868 .byte 0x5 - .uleb128 0x27 + .uleb128 0x2a .4byte .LASF869 .byte 0x5 - .uleb128 0x2c + .uleb128 0x2b .4byte .LASF870 .byte 0x5 .uleb128 0x2d @@ -3584,17 +3584,29 @@ gpio_write: .uleb128 0x2e .4byte .LASF872 .byte 0x5 - .uleb128 0x30 + .uleb128 0x2f .4byte .LASF873 .byte 0x5 - .uleb128 0x32 + .uleb128 0x34 .4byte .LASF874 .byte 0x5 - .uleb128 0x34 + .uleb128 0x35 .4byte .LASF875 .byte 0x5 .uleb128 0x36 .4byte .LASF876 + .byte 0x5 + .uleb128 0x38 + .4byte .LASF877 + .byte 0x5 + .uleb128 0x3a + .4byte .LASF878 + .byte 0x5 + .uleb128 0x3c + .4byte .LASF879 + .byte 0x5 + .uleb128 0x3e + .4byte .LASF880 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3639,7 +3651,7 @@ gpio_write: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF541: .ascii "_LONG_DOUBLE long double\000" -.LASF907: +.LASF911: .ascii "gpio\000" .LASF591: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -3647,7 +3659,7 @@ gpio_write: .ascii "_UINT32_T_DECLARED \000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF902: +.LASF906: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -3711,8 +3723,6 @@ gpio_write: .ascii "PRIXFAST32 __PRI32FAST(X)\000" .LASF525: .ascii "__INT8 \"hh\"\000" -.LASF860: - .ascii "GPIO_MODER_MODER3_AF (0b10)\000" .LASF47: .ascii "__UINT8_TYPE__ unsigned char\000" .LASF368: @@ -3765,12 +3775,14 @@ gpio_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF908: +.LASF912: .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" .ascii "ections -fno-builtin -fno-common\000" -.LASF864: +.LASF865: + .ascii "GPIO_AFRH_AFRH8_BIT 0\000" +.LASF868: .ascii "GPIO_AFRL_AFRL3_BIT 12\000" .LASF595: .ascii "INT16_MAX (__INT16_MAX__)\000" @@ -3852,7 +3864,7 @@ gpio_write: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF872: +.LASF876: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF499: @@ -3888,7 +3900,7 @@ gpio_write: .ascii "PRId64 __PRI64(d)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF881: +.LASF885: .ascii "long int\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" @@ -3916,6 +3928,8 @@ gpio_write: .ascii "PRIdFAST32 __PRI32FAST(d)\000" .LASF93: .ascii "__UINTMAX_C(c) c ## ULL\000" +.LASF866: + .ascii "GPIO_AFRH_AFRH8_MASK (0b1111)\000" .LASF31: .ascii "__SIZEOF_POINTER__ 4\000" .LASF621: @@ -3924,8 +3938,6 @@ gpio_write: .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" .LASF554: .ascii "___int64_t_defined 1\000" -.LASF863: - .ascii "GPIO_MODER_MODER2_AF (0b10)\000" .LASF432: .ascii "__ARM_NEON__\000" .LASF587: @@ -3986,7 +3998,7 @@ gpio_write: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF900: +.LASF904: .ascii "GPIO_MODE_INPUT\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -3996,7 +4008,7 @@ gpio_write: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF562: .ascii "_UINT8_T_DECLARED \000" -.LASF877: +.LASF881: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -4008,7 +4020,7 @@ gpio_write: .ascii "__ARM_FEATURE_FMA 1\000" .LASF364: .ascii "__GNUC_STDC_INLINE__ 1\000" -.LASF904: +.LASF908: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -4030,11 +4042,11 @@ gpio_write: .ascii "__SACCUM_MAX__ 0X7FFFP-7HK\000" .LASF219: .ascii "__FLT64_MAX_10_EXP__ 308\000" -.LASF868: +.LASF872: .ascii "GPIO_AFRL_AFRL2_MASK (0b1111)\000" .LASF65: .ascii "__UINT_FAST32_TYPE__ unsigned int\000" -.LASF878: +.LASF882: .ascii "unsigned char\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" @@ -4082,13 +4094,13 @@ gpio_write: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF889: +.LASF893: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF905: +.LASF909: .ascii "_Bool\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" @@ -4106,7 +4118,7 @@ gpio_write: .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF901: +.LASF905: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4144,7 +4156,7 @@ gpio_write: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF882: +.LASF886: .ascii "__uint16_t\000" .LASF224: .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" @@ -4172,7 +4184,7 @@ gpio_write: .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" .LASF601: .ascii "INT32_MAX (__INT32_MAX__)\000" -.LASF873: +.LASF877: .ascii "BIT(x) (1 << x)\000" .LASF469: .ascii "_MB_LEN_MAX 8\000" @@ -4190,7 +4202,7 @@ gpio_write: .ascii "_END_STD_C \000" .LASF852: .ascii "true ((_Bool)+1u)\000" -.LASF865: +.LASF869: .ascii "GPIO_AFRL_AFRL3_MASK (0b1111)\000" .LASF599: .ascii "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)\000" @@ -4204,7 +4216,7 @@ gpio_write: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF376: .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" -.LASF874: +.LASF878: .ascii "PIN(port,num) ((((port) - 'A') << 8) | num)\000" .LASF806: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" @@ -4270,7 +4282,7 @@ gpio_write: .ascii "__FP_FAST_FMAF 1\000" .LASF628: .ascii "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)\000" -.LASF869: +.LASF873: .ascii "GPIO_AFRL_AFRL2_USART2_TX (0b0111)\000" .LASF564: .ascii "_INT16_T_DECLARED \000" @@ -4294,6 +4306,8 @@ gpio_write: .ascii "__ARM_FEATURE_FP16_FML\000" .LASF802: .ascii "PRIdLEAST64 __PRI64LEAST(d)\000" +.LASF858: + .ascii "GPIO_MODER_AF_MODE (0b10)\000" .LASF255: .ascii "__USFRACT_EPSILON__ 0x1P-8UHR\000" .LASF762: @@ -4314,7 +4328,7 @@ gpio_write: .ascii "INT64_C(x) __INT64_C(x)\000" .LASF615: .ascii "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)\000" -.LASF862: +.LASF864: .ascii "GPIO_MODER_MODER2_MASK (0b11)\000" .LASF106: .ascii "__INT_LEAST8_MAX__ 0x7f\000" @@ -4342,6 +4356,8 @@ gpio_write: .ascii "__PRI8LEAST(x) __LEAST8 __STRINGIFY(x)\000" .LASF174: .ascii "__DBL_EPSILON__ ((double)2.2204460492503131e-16L)\000" +.LASF860: + .ascii "GPIO_MODER_MODER8_MASK (0b11)\000" .LASF268: .ascii "__LFRACT_MIN__ (-0.5LR-0.5LR)\000" .LASF117: @@ -4364,7 +4380,7 @@ gpio_write: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF884: +.LASF888: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4380,7 +4396,7 @@ gpio_write: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF911: +.LASF915: .ascii "gpio_write\000" .LASF569: .ascii "__int32_t_defined 1\000" @@ -4424,7 +4440,7 @@ gpio_write: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF912: +.LASF916: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -4446,7 +4462,7 @@ gpio_write: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF891: +.LASF895: .ascii "uintptr_t\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4494,7 +4510,7 @@ gpio_write: .ascii "PRIX32 __PRI32(X)\000" .LASF773: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF894: +.LASF898: .ascii "OSPEEDR\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" @@ -4524,7 +4540,7 @@ gpio_write: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF883: +.LASF887: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4534,7 +4550,7 @@ gpio_write: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF885: +.LASF889: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4570,7 +4586,7 @@ gpio_write: .ascii "__WCHAR_T \000" .LASF223: .ascii "__FLT64_MIN__ 2.2250738585072014e-308F64\000" -.LASF866: +.LASF870: .ascii "GPIO_AFRL_AFRL3_USART2_RX (0b0111)\000" .LASF553: .ascii "___int32_t_defined 1\000" @@ -4641,20 +4657,22 @@ gpio_write: .ascii "\000" .LASF582: .ascii "__int_fast16_t_defined 1\000" -.LASF892: +.LASF896: .ascii "MODER\000" .LASF482: .ascii "__FLOAT_TYPE float\000" .LASF185: .ascii "__LDBL_MAX_10_EXP__ 308\000" +.LASF867: + .ascii "GPIO_AFRH_AFRH8_MCO_1 (0b0000)\000" .LASF175: .ascii "__DBL_DENORM_MIN__ ((double)4.9406564584124654e-324" .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF888: +.LASF892: .ascii "unsigned int\000" -.LASF887: +.LASF891: .ascii "__uintptr_t\000" .LASF459: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4686,7 +4704,7 @@ gpio_write: .ascii "__CHAR_BIT__ 8\000" .LASF143: .ascii "__FLT_EVAL_METHOD__ 0\000" -.LASF879: +.LASF883: .ascii "short int\000" .LASF685: .ascii "PRIdLEAST8 __PRI8LEAST(d)\000" @@ -4746,6 +4764,8 @@ gpio_write: .ascii "__ATFILE_VISIBLE 0\000" .LASF372: .ascii "__GCC_ATOMIC_CHAR_LOCK_FREE 2\000" +.LASF859: + .ascii "GPIO_MODER_MODER8_BIT 16\000" .LASF270: .ascii "__LFRACT_EPSILON__ 0x1P-31LR\000" .LASF808: @@ -4812,7 +4832,7 @@ gpio_write: .ascii "__UFRACT_IBIT__ 0\000" .LASF399: .ascii "__ARM_32BIT_STATE 1\000" -.LASF861: +.LASF863: .ascii "GPIO_MODER_MODER2_BIT 4\000" .LASF107: .ascii "__INT8_C(c) c\000" @@ -4826,13 +4846,13 @@ gpio_write: .ascii "SCNuFAST16 __SCN16FAST(u)\000" .LASF801: .ascii "SCNx64 __SCN64(x)\000" -.LASF876: +.LASF880: .ascii "PINPORT(pin) (pin >> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" .LASF645: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" -.LASF859: +.LASF862: .ascii "GPIO_MODER_MODER3_MASK (0b11)\000" .LASF623: .ascii "UINT_FAST64_MAX (__UINT_FAST64_MAX__)\000" @@ -4876,7 +4896,7 @@ gpio_write: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF886: +.LASF890: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -4906,8 +4926,8 @@ gpio_write: .ascii "SCNdFAST32 __SCN32FAST(d)\000" .LASF339: .ascii "__UHQ_IBIT__ 0\000" -.LASF858: - .ascii "GPIO_MODER_MODER3_BIT 7\000" +.LASF861: + .ascii "GPIO_MODER_MODER3_BIT 6\000" .LASF60: .ascii "__INT_FAST16_TYPE__ int\000" .LASF631: @@ -4956,11 +4976,11 @@ gpio_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF576: .ascii "_UINTPTR_T_DECLARED \000" -.LASF899: +.LASF903: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF898: +.LASF902: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -4974,7 +4994,7 @@ gpio_write: .ascii "__INT32_TYPE__ long int\000" .LASF118: .ascii "__UINT_LEAST8_MAX__ 0xff\000" -.LASF897: +.LASF901: .ascii "LCKR\000" .LASF520: .ascii "__int20__ +2\000" @@ -5020,7 +5040,7 @@ gpio_write: .ascii "__QQ_IBIT__ 0\000" .LASF763: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF893: +.LASF897: .ascii "OTYPER\000" .LASF811: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -5040,11 +5060,11 @@ gpio_write: .ascii "__GNUC_MINOR__ 3\000" .LASF57: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" -.LASF909: +.LASF913: .ascii "src/gpio.c\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF870: +.LASF874: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" @@ -5096,7 +5116,7 @@ gpio_write: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" -.LASF871: +.LASF875: .ascii "GPIO_PORT_OFFSET (0x400U)\000" .LASF50: .ascii "__UINT64_TYPE__ long long unsigned int\000" @@ -5106,7 +5126,7 @@ gpio_write: .ascii "__INT64_C(c) c ## LL\000" .LASF699: .ascii "PRIuFAST8 __PRI8FAST(u)\000" -.LASF867: +.LASF871: .ascii "GPIO_AFRL_AFRL2_BIT 8\000" .LASF190: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" @@ -5116,7 +5136,7 @@ gpio_write: .ascii "__ACCUM_IBIT__ 16\000" .LASF509: .ascii "unsigned\000" -.LASF895: +.LASF899: .ascii "PUPDR\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5126,7 +5146,7 @@ gpio_write: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" -.LASF906: +.LASF910: .ascii "mode\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5140,7 +5160,7 @@ gpio_write: .ascii "__UHQ_FBIT__ 16\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF903: +.LASF907: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5178,7 +5198,7 @@ gpio_write: .ascii "__FAST8 \000" .LASF496: .ascii "__XSI_VISIBLE 0\000" -.LASF896: +.LASF900: .ascii "BSRR\000" .LASF794: .ascii "PRIu64 __PRI64(u)\000" @@ -5266,7 +5286,7 @@ gpio_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF890: +.LASF894: .ascii "uint32_t\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5314,13 +5334,13 @@ gpio_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF326: .ascii "__QQ_FBIT__ 7\000" -.LASF875: +.LASF879: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF880: +.LASF884: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5368,7 +5388,7 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF910: +.LASF914: .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 c3ed08a..0cab24a 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -2003,13 +2003,21 @@ struct gpio { #define GPIOA ((struct gpio *) GPIOA_BASE_ADDR) -#define GPIO_MODER_MODER3_BIT 7 +#define GPIO_MODER_AF_MODE (0b10) + +#define GPIO_MODER_MODER8_BIT 16 +#define GPIO_MODER_MODER8_MASK (0b11) + +#define GPIO_MODER_MODER3_BIT 6 #define GPIO_MODER_MODER3_MASK (0b11) -#define GPIO_MODER_MODER3_AF (0b10) #define GPIO_MODER_MODER2_BIT 4 #define GPIO_MODER_MODER2_MASK (0b11) -#define GPIO_MODER_MODER2_AF (0b10) + + +#define GPIO_AFRH_AFRH8_BIT 0 +#define GPIO_AFRH_AFRH8_MASK (0b1111) +#define GPIO_AFRH_AFRH8_MCO_1 (0b0000) #define GPIO_AFRL_AFRL3_BIT 12 @@ -2044,9 +2052,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 64 "src/gpio.h" 3 4 +# 72 "src/gpio.h" 3 4 _Bool -# 64 "src/gpio.h" +# 72 "src/gpio.h" val); # 5 "src/gpio.c" 2 diff --git a/build/gpio.o b/build/gpio.o index 7613394..f5ee649 100644 Binary files a/build/gpio.o and b/build/gpio.o differ diff --git a/build/main.S b/build/main.S index e25b4ba..6e5ff95 100644 --- a/build/main.S +++ b/build/main.S @@ -61,163 +61,149 @@ system_clock_init: ldr r3, [r3] ldr r2, .L5 .loc 1 22 38 - orr r3, r3, #65536 + bic r3, r3, #1 str r3, [r2] - .loc 1 26 9 - nop -.L2: - .loc 1 26 42 discriminator 1 - ldr r3, .L5 - ldr r3, [r3] - .loc 1 26 47 discriminator 1 - and r3, r3, #131072 - .loc 1 26 10 discriminator 1 - cmp r3, #0 - beq .L2 - .loc 1 30 33 + .loc 1 34 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 30 38 + .loc 1 34 38 + orr r3, r3, #65536 + str r3, [r2] + .loc 1 37 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 37 38 + orr r3, r3, #524288 + str r3, [r2] + .loc 1 41 9 + nop +.L2: + .loc 1 41 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 41 47 discriminator 1 + and r3, r3, #131072 + .loc 1 41 10 discriminator 1 + cmp r3, #0 + beq .L2 + .loc 1 45 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 45 38 bic r3, r3, #16777216 str r3, [r2] - .loc 1 33 33 + .loc 1 49 33 ldr r3, .L5 ldr r3, [r3, #4] ldr r2, .L5 - .loc 1 33 43 + .loc 1 49 43 orr r3, r3, #4194304 str r3, [r2, #4] - .loc 1 36 33 + .loc 1 52 33 ldr r3, .L5 ldr r2, [r3, #4] ldr r1, .L5 - .loc 1 36 43 + .loc 1 52 43 ldr r3, .L5+8 orrs r3, r3, r2 str r3, [r1, #4] - .loc 1 39 33 + .loc 1 55 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 39 40 + .loc 1 55 40 bic r3, r3, #240 str r3, [r2, #8] - .loc 1 40 33 + .loc 1 56 33 ldr r3, .L5 ldr r2, .L5 ldr r3, [r3, #8] - .loc 1 40 40 + .loc 1 56 40 str r3, [r2, #8] - .loc 1 43 33 + .loc 1 59 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 43 40 + .loc 1 59 40 bic r3, r3, #7168 str r3, [r2, #8] - .loc 1 44 33 + .loc 1 60 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 44 40 + .loc 1 60 40 orr r3, r3, #4096 str r3, [r2, #8] - .loc 1 47 33 - ldr r3, .L5 - ldr r3, [r3, #8] - ldr r2, .L5 - .loc 1 47 40 - bic r3, r3, #57344 - str r3, [r2, #8] - .loc 1 48 33 - ldr r3, .L5 - ldr r2, .L5 - ldr r3, [r3, #8] - .loc 1 48 40 - str r3, [r2, #8] - .loc 1 51 33 - ldr r3, .L5 - ldr r3, [r3] - ldr r2, .L5 - .loc 1 51 38 - orr r3, r3, #16777216 - str r3, [r2] - .loc 1 55 9 - nop -.L3: - .loc 1 55 42 discriminator 1 - ldr r3, .L5 - ldr r3, [r3] - .loc 1 55 47 discriminator 1 - and r3, r3, #131072 - .loc 1 55 10 discriminator 1 - cmp r3, #0 - beq .L3 - .loc 1 58 35 - ldr r3, .L5+12 - ldr r3, [r3] - ldr r2, .L5+12 - .loc 1 58 41 - orr r3, r3, #1024 - str r3, [r2] - .loc 1 59 35 - ldr r3, .L5+12 - ldr r3, [r3] - ldr r2, .L5+12 - .loc 1 59 41 - orr r3, r3, #512 - str r3, [r2] - .loc 1 62 35 - ldr r3, .L5+12 - ldr r3, [r3] - ldr r2, .L5+12 - .loc 1 62 41 - bic r3, r3, #15 - str r3, [r2] .loc 1 63 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 .loc 1 63 40 - orr r3, r3, #272 - orr r3, r3, #1 + bic r3, r3, #57344 str r3, [r2, #8] - .loc 1 66 33 + .loc 1 64 33 ldr r3, .L5 - ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 66 40 - bic r3, r3, #3 + ldr r3, [r3, #8] + .loc 1 64 40 str r3, [r2, #8] .loc 1 67 33 ldr r3, .L5 - ldr r3, [r3, #8] - ldr r2, .L5 - .loc 1 67 40 - orr r3, r3, #2 - str r3, [r2, #8] - .loc 1 71 9 - nop -.L4: - .loc 1 71 42 discriminator 1 - ldr r3, .L5 - ldr r3, [r3, #8] - .loc 1 71 49 discriminator 1 - lsrs r3, r3, #2 - .loc 1 71 55 discriminator 1 - and r3, r3, #3 - .loc 1 71 65 discriminator 1 - cmp r3, #2 - bne .L4 - .loc 1 74 33 - ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 74 38 - bic r3, r3, #1 + .loc 1 67 38 + orr r3, r3, #16777216 str r3, [r2] - .loc 1 75 1 + .loc 1 71 9 + nop +.L3: + .loc 1 71 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 71 47 discriminator 1 + and r3, r3, #33554432 + .loc 1 71 10 discriminator 1 + cmp r3, #0 + beq .L3 + .loc 1 74 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 74 41 + orr r3, r3, #1024 + str r3, [r2] + .loc 1 75 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 75 41 + orr r3, r3, #512 + str r3, [r2] + .loc 1 83 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 83 40 + orr r3, r3, #2 + str r3, [r2, #8] + .loc 1 87 9 + nop +.L4: + .loc 1 87 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3, #8] + .loc 1 87 49 discriminator 1 + lsrs r3, r3, #2 + .loc 1 87 55 discriminator 1 + and r3, r3, #3 + .loc 1 87 65 discriminator 1 + cmp r3, #2 + bne .L4 + .loc 1 88 1 + nop nop mov sp, r7 .cfi_def_cfa_register 13 @@ -231,7 +217,7 @@ system_clock_init: .L5: .word 1073887232 .word 1073770496 - .word 67252505 + .word 67252249 .word 1073888256 .cfi_endproc .LFE0: @@ -239,7 +225,7 @@ system_clock_init: .section .rodata .align 2 .LC0: - .ascii "hello, world\012\000" + .ascii "hello, world!\012\000" .section .text.main,"ax",%progbits .align 1 .global main @@ -249,7 +235,7 @@ system_clock_init: .type main, %function main: .LFB1: - .loc 1 77 16 + .loc 1 90 16 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -261,60 +247,60 @@ main: .cfi_def_cfa_offset 16 add r7, sp, #0 .cfi_def_cfa_register 7 - .loc 1 78 3 + .loc 1 91 3 bl system_clock_init - .loc 1 79 3 + .loc 1 92 3 bl tim4_init - .loc 1 80 3 + .loc 1 93 3 bl usart2_init - .loc 1 82 3 + .loc 1 95 3 bl tim4_start - .loc 1 83 3 + .loc 1 96 3 bl usart2_start - .loc 1 85 12 + .loc 1 98 12 movw r3, #525 strh r3, [r7, #2] @ movhi - .loc 1 86 33 + .loc 1 99 33 ldr r3, .L10 ldr r3, [r3, #48] - .loc 1 86 57 + .loc 1 99 57 ldrh r2, [r7, #2] lsrs r2, r2, #8 uxth r2, r2 mov r1, r2 - .loc 1 86 49 + .loc 1 99 49 movs r2, #1 lsls r2, r2, r1 mov r1, r2 - .loc 1 86 33 + .loc 1 99 33 ldr r2, .L10 - .loc 1 86 43 + .loc 1 99 43 orrs r3, r3, r1 str r3, [r2, #48] - .loc 1 87 3 + .loc 1 100 3 ldrh r3, [r7, #2] movs r1, #1 mov r0, r3 bl gpio_set_mode - .loc 1 89 54 + .loc 1 102 54 ldr r3, .L10+4 ldr r3, [r3, #36] - .loc 1 89 12 + .loc 1 102 12 strh r3, [r7, #6] @ movhi - .loc 1 90 7 + .loc 1 103 7 movs r3, #0 strb r3, [r7, #5] .L9: - .loc 1 92 39 + .loc 1 105 39 ldr r3, .L10+4 ldr r2, [r3, #36] - .loc 1 92 45 + .loc 1 105 45 ldrh r3, [r7, #6] subs r3, r2, r3 - .loc 1 92 5 + .loc 1 105 5 cmp r3, #249 bls .L9 - .loc 1 93 3 + .loc 1 106 3 ldrb r3, [r7, #5] @ zero_extendqisi2 cmp r3, #0 ite ne @@ -323,26 +309,26 @@ main: uxtb r3, r3 eor r3, r3, #1 uxtb r3, r3 - .loc 1 93 10 + .loc 1 106 10 strb r3, [r7, #5] ldrb r3, [r7, #5] and r3, r3, #1 strb r3, [r7, #5] - .loc 1 94 3 + .loc 1 107 3 ldrb r2, [r7, #5] @ zero_extendqisi2 ldrh r3, [r7, #2] mov r1, r2 mov r0, r3 bl gpio_write - .loc 1 96 3 + .loc 1 109 3 ldr r0, .L10+8 bl usart2_write - .loc 1 98 45 + .loc 1 111 45 ldr r3, .L10+4 ldr r3, [r3, #36] - .loc 1 98 11 + .loc 1 111 11 strh r3, [r7, #6] @ movhi - .loc 1 92 5 + .loc 1 105 5 b .L9 .L11: .align 2 @@ -371,10 +357,10 @@ main: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0xd - .4byte .LASF1044 + .4byte .LASF1061 .byte 0x1d - .4byte .LASF1045 - .4byte .LASF1046 + .4byte .LASF1062 + .4byte .LASF1063 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -382,17 +368,17 @@ main: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF975 + .4byte .LASF992 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF976 + .4byte .LASF993 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF977 + .4byte .LASF994 .uleb128 0x4 - .4byte .LASF980 + .4byte .LASF997 .byte 0x2 .byte 0x39 .byte 0x1c @@ -400,13 +386,13 @@ main: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF978 + .4byte .LASF995 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF979 + .4byte .LASF996 .uleb128 0x4 - .4byte .LASF981 + .4byte .LASF998 .byte 0x2 .byte 0x4f .byte 0x1b @@ -414,15 +400,15 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF982 + .4byte .LASF999 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF983 + .4byte .LASF1000 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF984 + .4byte .LASF1001 .uleb128 0xe .byte 0x4 .byte 0x5 @@ -430,15 +416,15 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF985 + .4byte .LASF1002 .uleb128 0x4 - .4byte .LASF986 + .4byte .LASF1003 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF987 + .4byte .LASF1004 .byte 0x3 .byte 0x30 .byte 0x14 @@ -457,13 +443,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF988 + .4byte .LASF1005 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF989 + .4byte .LASF1006 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -475,115 +461,115 @@ main: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF990 + .4byte .LASF1007 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF991 + .4byte .LASF1008 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF992 + .4byte .LASF1009 .byte 0x4 .byte 0xd .4byte 0x210 .byte 0x18 .uleb128 0x1 - .4byte .LASF993 + .4byte .LASF1010 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF994 + .4byte .LASF1011 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF995 + .4byte .LASF1012 .byte 0x4 .byte 0x10 .4byte 0x210 .byte 0x28 .uleb128 0x1 - .4byte .LASF996 + .4byte .LASF1013 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF997 + .4byte .LASF1014 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF998 + .4byte .LASF1015 .byte 0x4 .byte 0x13 .4byte 0x210 .byte 0x38 .uleb128 0x1 - .4byte .LASF999 + .4byte .LASF1016 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF1000 + .4byte .LASF1017 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF1001 + .4byte .LASF1018 .byte 0x4 .byte 0x16 .4byte 0x210 .byte 0x48 .uleb128 0x1 - .4byte .LASF1002 + .4byte .LASF1019 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF1003 + .4byte .LASF1020 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF1004 + .4byte .LASF1021 .byte 0x4 .byte 0x19 .4byte 0x210 .byte 0x58 .uleb128 0x1 - .4byte .LASF1005 + .4byte .LASF1022 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF1006 + .4byte .LASF1023 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF1007 + .4byte .LASF1024 .byte 0x4 .byte 0x1c .4byte 0x210 .byte 0x68 .uleb128 0x1 - .4byte .LASF1008 + .4byte .LASF1025 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -595,25 +581,25 @@ main: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF1009 + .4byte .LASF1026 .byte 0x4 .byte 0x1f .4byte 0x210 .byte 0x78 .uleb128 0x1 - .4byte .LASF1010 + .4byte .LASF1027 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF1011 + .4byte .LASF1028 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF1012 + .4byte .LASF1029 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -633,30 +619,30 @@ main: .byte 0x1 .4byte 0x31 .byte 0x5 - .byte 0x38 + .byte 0x40 .byte 0xe .4byte 0x23c .uleb128 0x6 - .4byte .LASF1013 + .4byte .LASF1030 .byte 0 .uleb128 0x6 - .4byte .LASF1014 + .4byte .LASF1031 .byte 0x1 .uleb128 0x6 - .4byte .LASF1015 + .4byte .LASF1032 .byte 0x2 .uleb128 0x6 - .4byte .LASF1016 + .4byte .LASF1033 .byte 0x3 .byte 0 .uleb128 0x4 - .4byte .LASF1017 + .4byte .LASF1034 .byte 0x5 - .byte 0x3d + .byte 0x45 .byte 0x3 .4byte 0x215 .uleb128 0xb - .4byte .LASF1018 + .4byte .LASF1035 .byte 0x18 .byte 0x6 .4byte 0x29a @@ -667,13 +653,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF1019 + .4byte .LASF1036 .byte 0x6 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF1020 + .4byte .LASF1037 .byte 0x6 .byte 0x9 .4byte 0xa0 @@ -691,7 +677,7 @@ main: .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF1021 + .4byte .LASF1038 .byte 0x6 .byte 0xc .4byte 0xa0 @@ -716,7 +702,7 @@ main: .byte 0x4 .byte 0 .uleb128 0xb - .4byte .LASF1022 + .4byte .LASF1039 .byte 0x50 .byte 0x8 .4byte 0x3b8 @@ -733,13 +719,13 @@ main: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF1023 + .4byte .LASF1040 .byte 0x8 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF1024 + .4byte .LASF1041 .byte 0x8 .byte 0xa .4byte 0xa0 @@ -757,19 +743,19 @@ main: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF1025 + .4byte .LASF1042 .byte 0x8 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF1026 + .4byte .LASF1043 .byte 0x8 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF1027 + .4byte .LASF1044 .byte 0x8 .byte 0xf .4byte 0xa0 @@ -799,31 +785,31 @@ main: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF1028 + .4byte .LASF1045 .byte 0x8 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF1029 + .4byte .LASF1046 .byte 0x8 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF1030 + .4byte .LASF1047 .byte 0x8 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF1031 + .4byte .LASF1048 .byte 0x8 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF1032 + .4byte .LASF1049 .byte 0x8 .byte 0x18 .4byte 0xa0 @@ -835,14 +821,14 @@ main: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF1033 + .4byte .LASF1050 .byte 0x8 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 .uleb128 0x8 - .4byte .LASF1034 + .4byte .LASF1051 .byte 0x9 .byte 0x3d .4byte 0x3c9 @@ -857,9 +843,9 @@ main: .byte 0x8 .4byte .LASF510 .uleb128 0x8 - .4byte .LASF1035 + .4byte .LASF1052 .byte 0x5 - .byte 0x40 + .byte 0x48 .4byte 0x3ec .uleb128 0x5 .4byte 0x88 @@ -869,11 +855,11 @@ main: .uleb128 0x3 .byte 0x1 .byte 0x2 - .4byte .LASF1036 + .4byte .LASF1053 .uleb128 0x8 - .4byte .LASF1037 + .4byte .LASF1054 .byte 0x5 - .byte 0x3f + .byte 0x47 .4byte 0x409 .uleb128 0x5 .4byte 0x88 @@ -881,25 +867,25 @@ main: .4byte 0x23c .byte 0 .uleb128 0x7 - .4byte .LASF1038 + .4byte .LASF1055 .byte 0x9 .byte 0x3a .uleb128 0x7 - .4byte .LASF1039 + .4byte .LASF1056 .byte 0x8 .byte 0x24 .uleb128 0x7 - .4byte .LASF1040 + .4byte .LASF1057 .byte 0x9 .byte 0x39 .uleb128 0x7 - .4byte .LASF1041 + .4byte .LASF1058 .byte 0x8 .byte 0x23 .uleb128 0x13 - .4byte .LASF1047 + .4byte .LASF1064 .byte 0x1 - .byte 0x4d + .byte 0x5a .byte 0x5 .4byte 0x7a .4byte .LFB1 @@ -910,23 +896,23 @@ main: .uleb128 0x14 .ascii "led\000" .byte 0x1 - .byte 0x55 + .byte 0x62 .byte 0xc .4byte 0x88 .uleb128 0x2 .byte 0x91 .sleb128 -14 .uleb128 0xc - .4byte .LASF1042 - .byte 0x59 + .4byte .LASF1059 + .byte 0x66 .byte 0xc .4byte 0x88 .uleb128 0x2 .byte 0x91 .sleb128 -10 .uleb128 0xc - .4byte .LASF1043 - .byte 0x5a + .4byte .LASF1060 + .byte 0x67 .byte 0x7 .4byte 0x3ec .uleb128 0x2 @@ -934,7 +920,7 @@ main: .sleb128 -11 .byte 0 .uleb128 0x15 - .4byte .LASF1048 + .4byte .LASF1065 .byte 0x1 .byte 0xd .byte 0xd @@ -2827,7 +2813,7 @@ main: .byte 0x4 .byte 0x5 .uleb128 0xb - .4byte .LASF974 + .4byte .LASF991 .byte 0x4 .byte 0 .section .debug_macro,"G",%progbits,wm4._newlib_version.h.4.6d111ab2e95434b664b53815e5c8ccba,comdat @@ -4107,7 +4093,7 @@ main: .uleb128 0x32 .4byte .LASF854 .byte 0 - .section .debug_macro,"G",%progbits,wm4.rcc.h.2.723e44a04c73f618b9d2a2287322c677,comdat + .section .debug_macro,"G",%progbits,wm4.rcc.h.2.900c20676b10d3f3230142c4a203d63e,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -4139,64 +4125,64 @@ main: .uleb128 0x33 .4byte .LASF863 .byte 0x5 - .uleb128 0x36 + .uleb128 0x37 .4byte .LASF864 .byte 0x5 - .uleb128 0x37 + .uleb128 0x38 .4byte .LASF865 .byte 0x5 - .uleb128 0x3a + .uleb128 0x3b .4byte .LASF866 .byte 0x5 - .uleb128 0x3b + .uleb128 0x3c .4byte .LASF867 .byte 0x5 - .uleb128 0x3e + .uleb128 0x3f .4byte .LASF868 .byte 0x5 - .uleb128 0x3f + .uleb128 0x40 .4byte .LASF869 .byte 0x5 - .uleb128 0x42 + .uleb128 0x43 .4byte .LASF870 .byte 0x5 - .uleb128 0x43 + .uleb128 0x44 .4byte .LASF871 .byte 0x5 - .uleb128 0x44 + .uleb128 0x47 .4byte .LASF872 .byte 0x5 - .uleb128 0x46 + .uleb128 0x48 .4byte .LASF873 .byte 0x5 - .uleb128 0x47 + .uleb128 0x49 .4byte .LASF874 .byte 0x5 - .uleb128 0x49 + .uleb128 0x4b .4byte .LASF875 .byte 0x5 - .uleb128 0x4a + .uleb128 0x4c .4byte .LASF876 .byte 0x5 - .uleb128 0x4b + .uleb128 0x4d .4byte .LASF877 .byte 0x5 - .uleb128 0x4d + .uleb128 0x4f .4byte .LASF878 .byte 0x5 - .uleb128 0x4e + .uleb128 0x50 .4byte .LASF879 .byte 0x5 - .uleb128 0x4f + .uleb128 0x51 .4byte .LASF880 .byte 0x5 - .uleb128 0x51 + .uleb128 0x53 .4byte .LASF881 .byte 0x5 - .uleb128 0x52 + .uleb128 0x54 .4byte .LASF882 .byte 0x5 - .uleb128 0x53 + .uleb128 0x55 .4byte .LASF883 .byte 0x5 .uleb128 0x57 @@ -4205,142 +4191,196 @@ main: .uleb128 0x58 .4byte .LASF885 .byte 0x5 - .uleb128 0x5b + .uleb128 0x59 .4byte .LASF886 .byte 0x5 - .uleb128 0x5c + .uleb128 0x5d .4byte .LASF887 .byte 0x5 - .uleb128 0x5f + .uleb128 0x5e .4byte .LASF888 .byte 0x5 - .uleb128 0x60 + .uleb128 0x61 .4byte .LASF889 .byte 0x5 - .uleb128 0x63 + .uleb128 0x62 .4byte .LASF890 .byte 0x5 - .uleb128 0x65 + .uleb128 0x63 .4byte .LASF891 .byte 0x5 - .uleb128 0x66 + .uleb128 0x65 .4byte .LASF892 .byte 0x5 - .uleb128 0x69 + .uleb128 0x66 .4byte .LASF893 .byte 0x5 - .uleb128 0x6b + .uleb128 0x68 .4byte .LASF894 .byte 0x5 - .uleb128 0x6c + .uleb128 0x69 .4byte .LASF895 .byte 0x5 - .uleb128 0x6f + .uleb128 0x6a .4byte .LASF896 .byte 0x5 - .uleb128 0x71 + .uleb128 0x6c .4byte .LASF897 .byte 0x5 - .uleb128 0x72 + .uleb128 0x6d .4byte .LASF898 .byte 0x5 - .uleb128 0x73 + .uleb128 0x70 .4byte .LASF899 .byte 0x5 - .uleb128 0x77 + .uleb128 0x71 .4byte .LASF900 .byte 0x5 - .uleb128 0x78 + .uleb128 0x74 .4byte .LASF901 .byte 0x5 - .uleb128 0x7b + .uleb128 0x75 .4byte .LASF902 .byte 0x5 - .uleb128 0x7c + .uleb128 0x78 .4byte .LASF903 .byte 0x5 - .uleb128 0x7e + .uleb128 0x7a .4byte .LASF904 .byte 0x5 - .uleb128 0x7f + .uleb128 0x7b .4byte .LASF905 .byte 0x5 - .uleb128 0x81 + .uleb128 0x7e .4byte .LASF906 .byte 0x5 - .uleb128 0x82 + .uleb128 0x80 .4byte .LASF907 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF908 + .byte 0x5 + .uleb128 0x84 + .4byte .LASF909 + .byte 0x5 + .uleb128 0x85 + .4byte .LASF909 + .byte 0x5 + .uleb128 0x87 + .4byte .LASF910 + .byte 0x5 + .uleb128 0x88 + .4byte .LASF911 + .byte 0x5 + .uleb128 0x89 + .4byte .LASF912 + .byte 0x5 + .uleb128 0x8d + .4byte .LASF913 + .byte 0x5 + .uleb128 0x8e + .4byte .LASF914 + .byte 0x5 + .uleb128 0x91 + .4byte .LASF915 + .byte 0x5 + .uleb128 0x92 + .4byte .LASF916 + .byte 0x5 + .uleb128 0x94 + .4byte .LASF917 + .byte 0x5 + .uleb128 0x95 + .4byte .LASF918 + .byte 0x5 + .uleb128 0x97 + .4byte .LASF919 + .byte 0x5 + .uleb128 0x98 + .4byte .LASF920 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.482807a1c0512cd436d5862f3edb1adc,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.bc74b8bd59193b3190f972f5d232b4bf,comdat .Ldebug_macro16: .2byte 0x5 .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF908 - .byte 0x5 - .uleb128 0x14 - .4byte .LASF909 - .byte 0x5 - .uleb128 0x15 - .4byte .LASF910 - .byte 0x5 - .uleb128 0x18 - .4byte .LASF911 - .byte 0x5 - .uleb128 0x19 - .4byte .LASF912 - .byte 0x5 - .uleb128 0x1a - .4byte .LASF913 - .byte 0x5 - .uleb128 0x1c - .4byte .LASF914 - .byte 0x5 - .uleb128 0x1d - .4byte .LASF915 - .byte 0x5 - .uleb128 0x1e - .4byte .LASF916 - .byte 0x5 - .uleb128 0x21 - .4byte .LASF917 - .byte 0x5 - .uleb128 0x22 - .4byte .LASF918 - .byte 0x5 - .uleb128 0x23 - .4byte .LASF919 - .byte 0x5 - .uleb128 0x25 - .4byte .LASF920 - .byte 0x5 - .uleb128 0x26 .4byte .LASF921 .byte 0x5 - .uleb128 0x27 + .uleb128 0x14 .4byte .LASF922 .byte 0x5 - .uleb128 0x2c + .uleb128 0x15 .4byte .LASF923 .byte 0x5 - .uleb128 0x2d + .uleb128 0x18 .4byte .LASF924 .byte 0x5 - .uleb128 0x2e + .uleb128 0x1a .4byte .LASF925 .byte 0x5 - .uleb128 0x30 + .uleb128 0x1b .4byte .LASF926 .byte 0x5 - .uleb128 0x32 + .uleb128 0x1d .4byte .LASF927 .byte 0x5 - .uleb128 0x34 + .uleb128 0x1e .4byte .LASF928 .byte 0x5 - .uleb128 0x36 + .uleb128 0x20 .4byte .LASF929 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF930 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF931 + .byte 0x5 + .uleb128 0x25 + .4byte .LASF932 + .byte 0x5 + .uleb128 0x26 + .4byte .LASF933 + .byte 0x5 + .uleb128 0x29 + .4byte .LASF934 + .byte 0x5 + .uleb128 0x2a + .4byte .LASF935 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF936 + .byte 0x5 + .uleb128 0x2d + .4byte .LASF937 + .byte 0x5 + .uleb128 0x2e + .4byte .LASF938 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF939 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF940 + .byte 0x5 + .uleb128 0x35 + .4byte .LASF941 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF942 + .byte 0x5 + .uleb128 0x38 + .4byte .LASF943 + .byte 0x5 + .uleb128 0x3a + .4byte .LASF944 + .byte 0x5 + .uleb128 0x3c + .4byte .LASF945 + .byte 0x5 + .uleb128 0x3e + .4byte .LASF946 .byte 0 .section .debug_macro,"G",%progbits,wm4.flash.h.2.51d6f0499046dca8c8d7cee08875e55f,comdat .Ldebug_macro17: @@ -4348,37 +4388,37 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF930 + .4byte .LASF947 .byte 0x5 .uleb128 0xf - .4byte .LASF931 + .4byte .LASF948 .byte 0x5 .uleb128 0x10 - .4byte .LASF932 + .4byte .LASF949 .byte 0x5 .uleb128 0x14 - .4byte .LASF933 + .4byte .LASF950 .byte 0x5 .uleb128 0x15 - .4byte .LASF934 + .4byte .LASF951 .byte 0x5 .uleb128 0x18 - .4byte .LASF935 + .4byte .LASF952 .byte 0x5 .uleb128 0x19 - .4byte .LASF936 + .4byte .LASF953 .byte 0x5 .uleb128 0x1c - .4byte .LASF937 + .4byte .LASF954 .byte 0x5 .uleb128 0x1e - .4byte .LASF938 + .4byte .LASF955 .byte 0x5 .uleb128 0x1f - .4byte .LASF939 + .4byte .LASF956 .byte 0x5 .uleb128 0x20 - .4byte .LASF940 + .4byte .LASF957 .byte 0 .section .debug_macro,"G",%progbits,wm4.pwr.h.2.b22d01f8fafa27268c4600cc8f787804,comdat .Ldebug_macro18: @@ -4386,25 +4426,25 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF941 + .4byte .LASF958 .byte 0x5 .uleb128 0xb - .4byte .LASF942 + .4byte .LASF959 .byte 0x5 .uleb128 0xc - .4byte .LASF943 + .4byte .LASF960 .byte 0x5 .uleb128 0xf - .4byte .LASF944 + .4byte .LASF961 .byte 0x5 .uleb128 0x12 - .4byte .LASF945 + .4byte .LASF962 .byte 0x5 .uleb128 0x13 - .4byte .LASF946 + .4byte .LASF963 .byte 0x5 .uleb128 0x14 - .4byte .LASF947 + .4byte .LASF964 .byte 0 .section .debug_macro,"G",%progbits,wm4.timer.h.2.2e929ede818fb0960868f1b0a08a1cbf,comdat .Ldebug_macro19: @@ -4412,19 +4452,19 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF948 + .4byte .LASF965 .byte 0x5 .uleb128 0x1d - .4byte .LASF949 + .4byte .LASF966 .byte 0x5 .uleb128 0x1e - .4byte .LASF950 + .4byte .LASF967 .byte 0x5 .uleb128 0x20 - .4byte .LASF951 + .4byte .LASF968 .byte 0x5 .uleb128 0x21 - .4byte .LASF952 + .4byte .LASF969 .byte 0 .section .debug_macro,"G",%progbits,wm4.usart.h.2.c32df0bd7cfa17e6f790f44d3d6388d5,comdat .Ldebug_macro20: @@ -4432,67 +4472,67 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF953 - .byte 0x5 - .uleb128 0x10 - .4byte .LASF954 - .byte 0x5 - .uleb128 0x11 - .4byte .LASF955 - .byte 0x5 - .uleb128 0x15 - .4byte .LASF956 - .byte 0x5 - .uleb128 0x16 - .4byte .LASF957 - .byte 0x5 - .uleb128 0x19 - .4byte .LASF958 - .byte 0x5 - .uleb128 0x1a - .4byte .LASF959 - .byte 0x5 - .uleb128 0x1e - .4byte .LASF960 - .byte 0x5 - .uleb128 0x1f - .4byte .LASF961 - .byte 0x5 - .uleb128 0x23 - .4byte .LASF962 - .byte 0x5 - .uleb128 0x24 - .4byte .LASF963 - .byte 0x5 - .uleb128 0x27 - .4byte .LASF964 - .byte 0x5 - .uleb128 0x28 - .4byte .LASF965 - .byte 0x5 - .uleb128 0x2b - .4byte .LASF966 - .byte 0x5 - .uleb128 0x2c - .4byte .LASF967 - .byte 0x5 - .uleb128 0x2f - .4byte .LASF968 - .byte 0x5 - .uleb128 0x30 - .4byte .LASF969 - .byte 0x5 - .uleb128 0x33 .4byte .LASF970 .byte 0x5 - .uleb128 0x34 + .uleb128 0x10 .4byte .LASF971 .byte 0x5 - .uleb128 0x36 + .uleb128 0x11 .4byte .LASF972 .byte 0x5 - .uleb128 0x37 + .uleb128 0x15 .4byte .LASF973 + .byte 0x5 + .uleb128 0x16 + .4byte .LASF974 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF975 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF976 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF977 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF978 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF979 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF980 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF981 + .byte 0x5 + .uleb128 0x28 + .4byte .LASF982 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF983 + .byte 0x5 + .uleb128 0x2c + .4byte .LASF984 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF985 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF986 + .byte 0x5 + .uleb128 0x33 + .4byte .LASF987 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF988 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF989 + .byte 0x5 + .uleb128 0x37 + .4byte .LASF990 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -4509,7 +4549,7 @@ main: .ascii "__UHA_FBIT__ 8\000" .LASF814: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF976: +.LASF993: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -4539,7 +4579,7 @@ main: .ascii "__WINT_MIN__ 0U\000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF1015: +.LASF1032: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -4551,11 +4591,13 @@ main: .ascii "__ULACCUM_FBIT__ 32\000" .LASF75: .ascii "__WCHAR_MAX__ 0xffffffffU\000" +.LASF896: + .ascii "RCC_CFGR_MCO1PRE_DIV2 (0b100)\000" .LASF513: .ascii "__int20__\000" -.LASF906: +.LASF919: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" -.LASF973: +.LASF990: .ascii "USART_BRR_FRACTION_MASK (0b111)\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" @@ -4567,7 +4609,7 @@ main: .ascii "__FRACT_MIN__ (-0.5R-0.5R)\000" .LASF324: .ascii "__ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK\000" -.LASF1018: +.LASF1035: .ascii "flash\000" .LASF294: .ascii "__USACCUM_MAX__ 0XFFFFP-8UHK\000" @@ -4575,7 +4617,7 @@ main: .ascii "__SFRACT_FBIT__ 7\000" .LASF94: .ascii "__INTMAX_WIDTH__ 64\000" -.LASF953: +.LASF970: .ascii "USART_H_ \000" .LASF448: .ascii "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC\000" @@ -4585,7 +4627,7 @@ main: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF907: +.LASF920: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF620: @@ -4624,8 +4666,6 @@ main: .ascii "RCC_BASE_ADDR (0x40023800U)\000" .LASF525: .ascii "__INT8 \"hh\"\000" -.LASF913: - .ascii "GPIO_MODER_MODER3_AF (0b10)\000" .LASF47: .ascii "__UINT8_TYPE__ unsigned char\000" .LASF368: @@ -4634,7 +4674,7 @@ main: .ascii "INT_LEAST16_MAX (__INT_LEAST16_MAX__)\000" .LASF703: .ascii "SCNiFAST8 __SCN8FAST(i)\000" -.LASF909: +.LASF922: .ascii "GPIOA_BASE_ADDR (0x40020000U)\000" .LASF790: .ascii "__SCN64FAST(x) __FAST64 __STRINGIFY(x)\000" @@ -4648,9 +4688,9 @@ main: .ascii "_LDBL_EQ_DBL 1\000" .LASF675: .ascii "PRIi8 __PRI8(i)\000" -.LASF936: +.LASF953: .ascii "FLASH_ACR_ICEN_ENABLE (1 <> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" -.LASF904: +.LASF895: + .ascii "RCC_CFGR_MCO1PRE_DIV4 (0b110)\000" +.LASF917: .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" -.LASF889: +.LASF902: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF645: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" -.LASF912: +.LASF928: .ascii "GPIO_MODER_MODER3_MASK (0b11)\000" .LASF623: .ascii "UINT_FAST64_MAX (__UINT_FAST64_MAX__)\000" @@ -5933,20 +5998,22 @@ main: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF733: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF993: +.LASF1010: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF999: +.LASF1016: .ascii "APB1ENR\000" .LASF741: .ascii "SCNdFAST16 __SCN16FAST(d)\000" -.LASF872: +.LASF892: + .ascii "RCC_CFGR_MCO1_BIT 21\000" +.LASF874: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" -.LASF957: +.LASF974: .ascii "USART_SR_TXE_TRANSMITTED (1 << USART_SR_TXE_BIT)\000" .LASF787: .ascii "__PRI64LEAST(x) __LEAST64 __STRINGIFY(x)\000" @@ -5966,18 +6033,18 @@ main: .ascii "__NEWLIB_PATCHLEVEL__ 0\000" .LASF26: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" -.LASF874: +.LASF876: .ascii "RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT" .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF984: +.LASF1001: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" .LASF150: .ascii "__FLT_MIN_10_EXP__ (-37)\000" -.LASF895: +.LASF908: .ascii "RCC_CFGR_SWS_MASK (0b11)\000" .LASF312: .ascii "__ULACCUM_IBIT__ 32\000" @@ -6003,8 +6070,8 @@ main: .ascii "SCNdFAST32 __SCN32FAST(d)\000" .LASF339: .ascii "__UHQ_IBIT__ 0\000" -.LASF911: - .ascii "GPIO_MODER_MODER3_BIT 7\000" +.LASF927: + .ascii "GPIO_MODER_MODER3_BIT 6\000" .LASF60: .ascii "__INT_FAST16_TYPE__ int\000" .LASF574: @@ -6015,20 +6082,20 @@ main: .ascii "__SACCUM_MIN__ (-0X1P7HK-0X1P7HK)\000" .LASF274: .ascii "__ULFRACT_MAX__ 0XFFFFFFFFP-32ULR\000" -.LASF880: +.LASF883: .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" -.LASF944: +.LASF961: .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" -.LASF1027: +.LASF1044: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" -.LASF959: +.LASF976: .ascii "USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT)\000" .LASF231: .ascii "__FLT32X_DIG__ 15\000" @@ -6072,6 +6139,8 @@ main: .ascii "SIZE_MAX (__SIZE_MAX__)\000" .LASF333: .ascii "__DQ_IBIT__ 0\000" +.LASF898: + .ascii "RCC_CFGR_MCO1PRE_MASK (0b111)\000" .LASF450: .ascii "__ARM_BF16_FORMAT_ALTERNATIVE\000" .LASF45: @@ -6084,19 +6153,19 @@ main: .ascii "__int20__ +2\000" .LASF654: .ascii "_WCHAR_T_ \000" -.LASF1023: +.LASF1040: .ascii "SMCR\000" .LASF828: .ascii "PRIoMAX __PRIMAX(o)\000" .LASF747: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" -.LASF939: +.LASF956: .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" -.LASF1013: +.LASF1030: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" -.LASF1040: +.LASF1057: .ascii "usart2_init\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" @@ -6122,7 +6191,7 @@ main: .ascii "PRIi16 __PRI16(i)\000" .LASF390: .ascii "__ARM_FEATURE_DSP 1\000" -.LASF965: +.LASF982: .ascii "USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT)\000" .LASF825: .ascii "__SCNMAX(x) __STRINGIFY(ll ##x)\000" @@ -6150,15 +6219,15 @@ main: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF923: +.LASF940: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" .LASF377: .ascii "__GCC_ATOMIC_INT_LOCK_FREE 2\000" -.LASF971: +.LASF988: .ascii "USART_BRR_MANTISSA_MASK (0b111111111111)\000" -.LASF960: +.LASF977: .ascii "USART_SR_RXNE_BIT 5\000" .LASF561: .ascii "_INT8_T_DECLARED \000" @@ -6166,7 +6235,7 @@ main: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF996: +.LASF1013: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -6206,11 +6275,11 @@ main: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF991: +.LASF1008: .ascii "AHB2RSTR\000" .LASF671: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" -.LASF887: +.LASF900: .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" @@ -6226,38 +6295,38 @@ main: .ascii "_FVWRITE_IN_STREAMIO 1\000" .LASF183: .ascii "__LDBL_MIN_10_EXP__ (-307)\000" -.LASF920: +.LASF937: .ascii "GPIO_AFRL_AFRL2_BIT 8\000" .LASF190: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: .ascii "__ARM_FEATURE_CDE\000" -.LASF1019: +.LASF1036: .ascii "KEYR\000" .LASF509: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF977: +.LASF994: .ascii "short int\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" -.LASF955: +.LASF972: .ascii "USART2 ((struct usart *) USART2_BASE_ADDR)\000" .LASF121: .ascii "__UINT16_C(c) c\000" -.LASF972: +.LASF989: .ascii "USART_BRR_FRACTION_BIT 0\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" .LASF534: .ascii "__LEAST16 \"h\"\000" -.LASF882: +.LASF885: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF365: .ascii "__NO_INLINE__ 1\000" -.LASF958: - .ascii "USART_SR_TC_BIT 6\000" +.LASF889: + .ascii "RCC_CFGR_MCO1_HSI (0b00)\000" .LASF710: .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" .LASF606: @@ -6268,22 +6337,24 @@ main: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF1016: +.LASF1033: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF950: +.LASF967: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" .LASF608: .ascii "UINT64_MAX (__UINT64_MAX__)\000" -.LASF901: +.LASF914: .ascii "RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAE" .ascii "N_BIT)\000" +.LASF932: + .ascii "GPIO_AFRH_AFRH8_MASK (0b1111)\000" .LASF471: .ascii "_RETARGETABLE_LOCKING 1\000" -.LASF933: +.LASF950: .ascii "FLASH_ACR_DCEN_BIT 10\000" .LASF453: .ascii "__USES_INITFINI__ 1\000" @@ -6307,7 +6378,7 @@ main: .ascii "__INT16_MAX__ 0x7fff\000" .LASF478: .ascii "__SYS_CONFIG_H__ \000" -.LASF881: +.LASF884: .ascii "RCC_PLLCFGR_PLLM_BIT 0\000" .LASF8: .ascii "__VERSION__ \"12.3.1 20230626\"\000" @@ -6343,7 +6414,7 @@ main: .ascii "PRIdMAX __PRIMAX(d)\000" .LASF388: .ascii "__SIZEOF_WINT_T__ 4\000" -.LASF886: +.LASF899: .ascii "RCC_CFGR_PPRE2_BIT 13\000" .LASF782: .ascii "SCNoFAST32 __SCN32FAST(o)\000" @@ -6355,11 +6426,11 @@ main: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF701: .ascii "PRIXFAST8 __PRI8FAST(X)\000" -.LASF1043: +.LASF1060: .ascii "led_on\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" -.LASF1045: +.LASF1062: .ascii "src/main.c\000" .LASF126: .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" @@ -6397,13 +6468,13 @@ main: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF651: .ascii "_T_WCHAR_ \000" -.LASF1032: +.LASF1049: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF664: .ascii "_BSD_WCHAR_T_\000" -.LASF1011: +.LASF1028: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -6411,23 +6482,23 @@ main: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF756: .ascii "PRIx32 __PRI32(x)\000" -.LASF1041: +.LASF1058: .ascii "tim4_init\000" -.LASF987: +.LASF1004: .ascii "uint32_t\000" -.LASF878: +.LASF881: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" .LASF506: .ascii "_SYS__INTSUP_H \000" -.LASF1021: +.LASF1038: .ascii "OPTCR\000" .LASF290: .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" .LASF415: .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" -.LASF931: +.LASF948: .ascii "FLASH_BASE_ADDR (0x40023C00U)\000" .LASF745: .ascii "SCNxFAST16 __SCN16FAST(x)\000" @@ -6451,9 +6522,11 @@ main: .ascii "__ULACCUM_EPSILON__ 0x1P-32ULK\000" .LASF181: .ascii "__LDBL_DIG__ 15\000" +.LASF894: + .ascii "RCC_CFGR_MCO1PRE_DIV5 (0b111)\000" .LASF89: .ascii "__SIZE_WIDTH__ 32\000" -.LASF876: +.LASF879: .ascii "RCC_PLLCFGR_PLLP_MASK (0b11)\000" .LASF480: .ascii "_SUPPORTS_ERREXCEPT \000" @@ -6461,7 +6534,7 @@ main: .ascii "__FLT64_DIG__ 15\000" .LASF524: .ascii "_INT32_EQ_LONG \000" -.LASF884: +.LASF887: .ascii "RCC_CFGR_PPRE_DIV_NONE 0\000" .LASF77: .ascii "__WINT_MAX__ 0xffffffffU\000" @@ -6473,13 +6546,13 @@ main: .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF928: +.LASF945: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF978: +.LASF995: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6487,7 +6560,7 @@ main: .ascii "__FLT32_HAS_INFINITY__ 1\000" .LASF416: .ascii "__thumb__ 1\000" -.LASF970: +.LASF987: .ascii "USART_BRR_MANTISSA_BIT 4\000" .LASF421: .ascii "__ARMEL__ 1\000" @@ -6497,23 +6570,25 @@ main: .ascii "__HQ_FBIT__ 15\000" .LASF854: .ascii "__bool_true_false_are_defined 1\000" -.LASF964: +.LASF981: .ascii "USART_CR1_UE_BIT 13\000" -.LASF925: +.LASF942: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF798: .ascii "SCNi64 __SCN64(i)\000" -.LASF866: +.LASF868: .ascii "RCC_CR_HSIRDY_BIT 1\000" .LASF80: .ascii "__SIZE_MAX__ 0xffffffffU\000" -.LASF1034: +.LASF1051: .ascii "usart2_write\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" -.LASF930: +.LASF947: .ascii "FLASH_H_ \000" +.LASF863: + .ascii "RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT)\000" .LASF412: .ascii "__ARM_ARCH\000" .LASF590: @@ -6530,7 +6605,7 @@ main: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF522: .ascii "long +4\000" -.LASF990: +.LASF1007: .ascii "AHB1RSTR\000" .LASF723: .ascii "SCNx16 __SCN16(x)\000" @@ -6540,7 +6615,7 @@ main: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF1046: +.LASF1063: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF796: .ascii "PRIX64 __PRI64(X)\000" @@ -6578,7 +6653,7 @@ main: .ascii "__DBL_MIN_10_EXP__ (-307)\000" .LASF795: .ascii "PRIx64 __PRI64(x)\000" -.LASF966: +.LASF983: .ascii "USART_CR1_TE_BIT 3\000" .LASF512: .ascii "__int20\000" @@ -6598,7 +6673,7 @@ main: .ascii "__ULFRACT_IBIT__ 0\000" .LASF857: .ascii "RCC ((struct rcc *) RCC_BASE_ADDR)\000" -.LASF892: +.LASF905: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: .ascii "__INT_MAX__ 0x7fffffff\000" @@ -6606,7 +6681,7 @@ main: .ascii "__INT_LEAST64_TYPE__ long long int\000" .LASF103: .ascii "__UINT16_MAX__ 0xffff\000" -.LASF942: +.LASF959: .ascii "PWR_BASE_ADDR (0x40007000U)\000" .LASF446: .ascii "__ARM_FEATURE_CDE_COPROC\000" diff --git a/build/main.i b/build/main.i index e46b82c..e7ac7fc 100644 --- a/build/main.i +++ b/build/main.i @@ -2029,6 +2029,11 @@ struct rcc { #define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) +#define RCC_CR_CSS_BIT 19 +#define RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT) + + + #define RCC_CR_HSERDY_BIT 17 #define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) @@ -2051,6 +2056,7 @@ struct rcc { #define RCC_PLLCFGR_PLLSRC_BIT 22 #define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT) +#define RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT) #define RCC_PLLCFGR_PLLP_BIT 16 #define RCC_PLLCFGR_PLLP_MASK (0b11) @@ -2070,6 +2076,21 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_2 (0b100) +#define RCC_CFGR_MCO1_HSI (0b00) +#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_DIV5 (0b111) +#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) @@ -2090,6 +2111,7 @@ struct rcc { #define RCC_CFGR_SWS_MASK (0b11) +#define RCC_CFGR_SW_PLL (0b10) #define RCC_CFGR_SW_PLL (0b10) #define RCC_CFGR_SW_BIT 0 @@ -2135,13 +2157,21 @@ struct gpio { #define GPIOA ((struct gpio *) GPIOA_BASE_ADDR) -#define GPIO_MODER_MODER3_BIT 7 +#define GPIO_MODER_AF_MODE (0b10) + +#define GPIO_MODER_MODER8_BIT 16 +#define GPIO_MODER_MODER8_MASK (0b11) + +#define GPIO_MODER_MODER3_BIT 6 #define GPIO_MODER_MODER3_MASK (0b11) -#define GPIO_MODER_MODER3_AF (0b10) #define GPIO_MODER_MODER2_BIT 4 #define GPIO_MODER_MODER2_MASK (0b11) -#define GPIO_MODER_MODER2_AF (0b10) + + +#define GPIO_AFRH_AFRH8_BIT 0 +#define GPIO_AFRH_AFRH8_MASK (0b1111) +#define GPIO_AFRH_AFRH8_MCO_1 (0b0000) #define GPIO_AFRL_AFRL3_BIT 12 @@ -2176,9 +2206,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 64 "src/gpio.h" 3 4 +# 72 "src/gpio.h" 3 4 _Bool -# 64 "src/gpio.h" +# 72 "src/gpio.h" val); # 6 "src/main.c" 2 # 1 "src/flash.h" 1 @@ -2350,9 +2380,14 @@ static void system_clock_init(void) { ((struct pwr *) (0x40007000U))->CR |= ((0b11) << 14); + ((struct rcc *) (0x40023800U))->CR &= ~(1 << 0); +# 34 "src/main.c" ((struct rcc *) (0x40023800U))->CR |= (1 << 16); + ((struct rcc *) (0x40023800U))->CR |= (1 << 19); + + while (!(((struct rcc *) (0x40023800U))->CR & (1 << 17))); @@ -2361,10 +2396,11 @@ static void system_clock_init(void) { ((struct rcc *) (0x40023800U))->CR &= ~(1 << 24); + ((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); @@ -2383,26 +2419,23 @@ 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); ((struct flash *) (0x40023C00U))->ACR |= (1 <<9); - ((struct flash *) (0x40023C00U))->ACR &= ~((0b1111) << 0); - ((struct rcc *) (0x40023800U))->CFGR |= ((0x0111) << 0); - ((struct rcc *) (0x40023800U))->CFGR &= ~((0b11) << 0); - ((struct rcc *) (0x40023800U))->CFGR |= ((0b10) << 0); + + + + ((struct rcc *) (0x40023800U))->CFGR |= (((0b10) & (0b11)) << 0); while (((((struct rcc *) (0x40023800U))->CFGR >> 2) & (0b11)) != (0b10)); - - - ((struct rcc *) (0x40023800U))->CR &= ~(1 << 0); } int main(void) { @@ -2419,20 +2452,20 @@ int main(void) { uint16_t counter = ((struct timer *) (0x40000800U))->CNT; -# 90 "src/main.c" 3 4 +# 103 "src/main.c" 3 4 _Bool -# 90 "src/main.c" +# 103 "src/main.c" led_on = -# 90 "src/main.c" 3 4 +# 103 "src/main.c" 3 4 ((_Bool)+0u) -# 90 "src/main.c" +# 103 "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"); + usart2_write("hello, world!\n"); counter = ((struct timer *) (0x40000800U))->CNT; } diff --git a/build/main.o b/build/main.o index 3687611..5a29d55 100644 Binary files a/build/main.o and b/build/main.o differ diff --git a/build/timer.S b/build/timer.S index aae1189..faa42c6 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 @@ -136,10 +136,10 @@ tim4_start: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x7 - .4byte .LASF960 + .4byte .LASF973 .byte 0x1d - .4byte .LASF961 - .4byte .LASF962 + .4byte .LASF974 + .4byte .LASF975 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -147,17 +147,17 @@ tim4_start: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF908 + .4byte .LASF921 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF909 + .4byte .LASF922 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF910 + .4byte .LASF923 .uleb128 0x4 - .4byte .LASF913 + .4byte .LASF926 .byte 0x2 .byte 0x39 .byte 0x1c @@ -165,13 +165,13 @@ tim4_start: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF911 + .4byte .LASF924 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF912 + .4byte .LASF925 .uleb128 0x4 - .4byte .LASF914 + .4byte .LASF927 .byte 0x2 .byte 0x4f .byte 0x1b @@ -179,15 +179,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF915 + .4byte .LASF928 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF916 + .4byte .LASF929 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF917 + .4byte .LASF930 .uleb128 0x8 .byte 0x4 .byte 0x5 @@ -195,15 +195,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF918 + .4byte .LASF931 .uleb128 0x4 - .4byte .LASF919 + .4byte .LASF932 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF920 + .4byte .LASF933 .byte 0x3 .byte 0x30 .byte 0x14 @@ -224,13 +224,13 @@ tim4_start: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF921 + .4byte .LASF934 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF922 + .4byte .LASF935 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -242,115 +242,115 @@ tim4_start: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF923 + .4byte .LASF936 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF924 + .4byte .LASF937 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF925 + .4byte .LASF938 .byte 0x4 .byte 0xd .4byte 0x212 .byte 0x18 .uleb128 0x1 - .4byte .LASF926 + .4byte .LASF939 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF927 + .4byte .LASF940 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF928 + .4byte .LASF941 .byte 0x4 .byte 0x10 .4byte 0x212 .byte 0x28 .uleb128 0x1 - .4byte .LASF929 + .4byte .LASF942 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF930 + .4byte .LASF943 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF931 + .4byte .LASF944 .byte 0x4 .byte 0x13 .4byte 0x212 .byte 0x38 .uleb128 0x1 - .4byte .LASF932 + .4byte .LASF945 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF933 + .4byte .LASF946 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF934 + .4byte .LASF947 .byte 0x4 .byte 0x16 .4byte 0x212 .byte 0x48 .uleb128 0x1 - .4byte .LASF935 + .4byte .LASF948 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF936 + .4byte .LASF949 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF937 + .4byte .LASF950 .byte 0x4 .byte 0x19 .4byte 0x212 .byte 0x58 .uleb128 0x1 - .4byte .LASF938 + .4byte .LASF951 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF939 + .4byte .LASF952 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF940 + .4byte .LASF953 .byte 0x4 .byte 0x1c .4byte 0x212 .byte 0x68 .uleb128 0x1 - .4byte .LASF941 + .4byte .LASF954 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -362,25 +362,25 @@ tim4_start: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF942 + .4byte .LASF955 .byte 0x4 .byte 0x1f .4byte 0x212 .byte 0x78 .uleb128 0x1 - .4byte .LASF943 + .4byte .LASF956 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF944 + .4byte .LASF957 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF945 + .4byte .LASF958 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -396,7 +396,7 @@ tim4_start: .uleb128 0x5 .4byte 0x202 .uleb128 0xc - .4byte .LASF946 + .4byte .LASF959 .byte 0x50 .byte 0x5 .byte 0x6 @@ -415,13 +415,13 @@ tim4_start: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF947 + .4byte .LASF960 .byte 0x5 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF948 + .4byte .LASF961 .byte 0x5 .byte 0xa .4byte 0xa0 @@ -439,19 +439,19 @@ tim4_start: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF949 + .4byte .LASF962 .byte 0x5 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF950 + .4byte .LASF963 .byte 0x5 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF951 + .4byte .LASF964 .byte 0x5 .byte 0xf .4byte 0xa0 @@ -481,31 +481,31 @@ tim4_start: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF952 + .4byte .LASF965 .byte 0x5 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF966 .byte 0x5 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF954 + .4byte .LASF967 .byte 0x5 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF955 + .4byte .LASF968 .byte 0x5 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF956 + .4byte .LASF969 .byte 0x5 .byte 0x18 .4byte 0xa0 @@ -517,21 +517,21 @@ tim4_start: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF957 + .4byte .LASF970 .byte 0x5 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 .uleb128 0x6 - .4byte .LASF958 + .4byte .LASF971 .byte 0x14 .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c .uleb128 0x6 - .4byte .LASF959 + .4byte .LASF972 .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.a17300cb822ec078eaa06c79bfd3d786,comdat + .section .debug_macro,"G",%progbits,wm4.rcc.h.37.3f1c030e2fd0ae54c1d5f4fbfda7d54f,comdat .Ldebug_macro14: .2byte 0x5 .byte 0 @@ -3530,64 +3530,64 @@ tim4_start: .uleb128 0x33 .4byte .LASF858 .byte 0x5 - .uleb128 0x36 + .uleb128 0x37 .4byte .LASF859 .byte 0x5 - .uleb128 0x37 + .uleb128 0x38 .4byte .LASF860 .byte 0x5 - .uleb128 0x3a + .uleb128 0x3b .4byte .LASF861 .byte 0x5 - .uleb128 0x3b + .uleb128 0x3c .4byte .LASF862 .byte 0x5 - .uleb128 0x3e + .uleb128 0x3f .4byte .LASF863 .byte 0x5 - .uleb128 0x3f + .uleb128 0x40 .4byte .LASF864 .byte 0x5 - .uleb128 0x42 + .uleb128 0x43 .4byte .LASF865 .byte 0x5 - .uleb128 0x43 + .uleb128 0x44 .4byte .LASF866 .byte 0x5 - .uleb128 0x44 + .uleb128 0x47 .4byte .LASF867 .byte 0x5 - .uleb128 0x46 + .uleb128 0x48 .4byte .LASF868 .byte 0x5 - .uleb128 0x47 + .uleb128 0x49 .4byte .LASF869 .byte 0x5 - .uleb128 0x49 + .uleb128 0x4b .4byte .LASF870 .byte 0x5 - .uleb128 0x4a + .uleb128 0x4c .4byte .LASF871 .byte 0x5 - .uleb128 0x4b + .uleb128 0x4d .4byte .LASF872 .byte 0x5 - .uleb128 0x4d + .uleb128 0x4f .4byte .LASF873 .byte 0x5 - .uleb128 0x4e + .uleb128 0x50 .4byte .LASF874 .byte 0x5 - .uleb128 0x4f + .uleb128 0x51 .4byte .LASF875 .byte 0x5 - .uleb128 0x51 + .uleb128 0x53 .4byte .LASF876 .byte 0x5 - .uleb128 0x52 + .uleb128 0x54 .4byte .LASF877 .byte 0x5 - .uleb128 0x53 + .uleb128 0x55 .4byte .LASF878 .byte 0x5 .uleb128 0x57 @@ -3596,71 +3596,113 @@ tim4_start: .uleb128 0x58 .4byte .LASF880 .byte 0x5 - .uleb128 0x5b + .uleb128 0x59 .4byte .LASF881 .byte 0x5 - .uleb128 0x5c + .uleb128 0x5d .4byte .LASF882 .byte 0x5 - .uleb128 0x5f + .uleb128 0x5e .4byte .LASF883 .byte 0x5 - .uleb128 0x60 + .uleb128 0x61 .4byte .LASF884 .byte 0x5 - .uleb128 0x63 + .uleb128 0x62 .4byte .LASF885 .byte 0x5 - .uleb128 0x65 + .uleb128 0x63 .4byte .LASF886 .byte 0x5 - .uleb128 0x66 + .uleb128 0x65 .4byte .LASF887 .byte 0x5 - .uleb128 0x69 + .uleb128 0x66 .4byte .LASF888 .byte 0x5 - .uleb128 0x6b + .uleb128 0x68 .4byte .LASF889 .byte 0x5 - .uleb128 0x6c + .uleb128 0x69 .4byte .LASF890 .byte 0x5 - .uleb128 0x6f + .uleb128 0x6a .4byte .LASF891 .byte 0x5 - .uleb128 0x71 + .uleb128 0x6c .4byte .LASF892 .byte 0x5 - .uleb128 0x72 + .uleb128 0x6d .4byte .LASF893 .byte 0x5 - .uleb128 0x73 + .uleb128 0x70 .4byte .LASF894 .byte 0x5 - .uleb128 0x77 + .uleb128 0x71 .4byte .LASF895 .byte 0x5 - .uleb128 0x78 + .uleb128 0x74 .4byte .LASF896 .byte 0x5 - .uleb128 0x7b + .uleb128 0x75 .4byte .LASF897 .byte 0x5 - .uleb128 0x7c + .uleb128 0x78 .4byte .LASF898 .byte 0x5 - .uleb128 0x7e + .uleb128 0x7a .4byte .LASF899 .byte 0x5 - .uleb128 0x7f + .uleb128 0x7b .4byte .LASF900 .byte 0x5 - .uleb128 0x81 + .uleb128 0x7e .4byte .LASF901 .byte 0x5 - .uleb128 0x82 + .uleb128 0x80 .4byte .LASF902 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF903 + .byte 0x5 + .uleb128 0x84 + .4byte .LASF904 + .byte 0x5 + .uleb128 0x85 + .4byte .LASF904 + .byte 0x5 + .uleb128 0x87 + .4byte .LASF905 + .byte 0x5 + .uleb128 0x88 + .4byte .LASF906 + .byte 0x5 + .uleb128 0x89 + .4byte .LASF907 + .byte 0x5 + .uleb128 0x8d + .4byte .LASF908 + .byte 0x5 + .uleb128 0x8e + .4byte .LASF909 + .byte 0x5 + .uleb128 0x91 + .4byte .LASF910 + .byte 0x5 + .uleb128 0x92 + .4byte .LASF911 + .byte 0x5 + .uleb128 0x94 + .4byte .LASF912 + .byte 0x5 + .uleb128 0x95 + .4byte .LASF913 + .byte 0x5 + .uleb128 0x97 + .4byte .LASF914 + .byte 0x5 + .uleb128 0x98 + .4byte .LASF915 .byte 0 .section .debug_macro,"G",%progbits,wm4.timer.h.2.2e929ede818fb0960868f1b0a08a1cbf,comdat .Ldebug_macro15: @@ -3668,19 +3710,19 @@ tim4_start: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF903 + .4byte .LASF916 .byte 0x5 .uleb128 0x1d - .4byte .LASF904 + .4byte .LASF917 .byte 0x5 .uleb128 0x1e - .4byte .LASF905 + .4byte .LASF918 .byte 0x5 .uleb128 0x20 - .4byte .LASF906 + .4byte .LASF919 .byte 0x5 .uleb128 0x21 - .4byte .LASF907 + .4byte .LASF920 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3695,7 +3737,7 @@ tim4_start: .ascii "__UHA_FBIT__ 8\000" .LASF815: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF909: +.LASF922: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -3739,9 +3781,11 @@ tim4_start: .ascii "__ULACCUM_FBIT__ 32\000" .LASF75: .ascii "__WCHAR_MAX__ 0xffffffffU\000" +.LASF891: + .ascii "RCC_CFGR_MCO1PRE_DIV2 (0b100)\000" .LASF514: .ascii "__int20__\000" -.LASF901: +.LASF914: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" @@ -3767,7 +3811,7 @@ tim4_start: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF902: +.LASF915: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF621: @@ -3838,7 +3882,7 @@ tim4_start: .ascii "__SCNPTR(x) __STRINGIFY(x)\000" .LASF202: .ascii "__FLT32_MAX_10_EXP__ 38\000" -.LASF886: +.LASF899: .ascii "RCC_CFGR_HPRE_BIT 4\000" .LASF683: .ascii "SCNo8 __SCN8(o)\000" @@ -3854,12 +3898,12 @@ tim4_start: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF960: +.LASF973: .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" .ascii "ections -fno-builtin -fno-common\000" -.LASF859: +.LASF861: .ascii "RCC_CR_HSEON_BIT 16\000" .LASF596: .ascii "INT16_MAX (__INT16_MAX__)\000" @@ -3873,7 +3917,7 @@ tim4_start: .ascii "__int_fast32_t_defined 1\000" .LASF133: .ascii "__INT_FAST64_WIDTH__ 64\000" -.LASF957: +.LASF970: .ascii "DMAR\000" .LASF660: .ascii "___int_wchar_t_h \000" @@ -3885,6 +3929,8 @@ tim4_start: .ascii "INT16_C(x) __INT16_C(x)\000" .LASF250: .ascii "__SFRACT_EPSILON__ 0x1P-7HR\000" +.LASF888: + .ascii "RCC_CFGR_MCO1_MASK (0b11)\000" .LASF113: .ascii "__INT32_C(c) c ## L\000" .LASF27: @@ -3915,28 +3961,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" +.LASF886: + .ascii "RCC_CFGR_MCO1_PLL (0b11)\000" .LASF134: .ascii "__UINT_FAST8_MAX__ 0xffffffffU\000" .LASF761: .ascii "SCNo32 __SCN32(o)\000" .LASF541: .ascii "_NOTHROW \000" -.LASF952: +.LASF965: .ascii "CCR1\000" -.LASF953: +.LASF966: .ascii "CCR2\000" -.LASF954: +.LASF967: .ascii "CCR3\000" -.LASF955: +.LASF968: .ascii "CCR4\000" .LASF307: .ascii "__LACCUM_IBIT__ 32\000" .LASF593: .ascii "INT_LEAST8_MAX (__INT_LEAST8_MAX__)\000" -.LASF888: +.LASF901: .ascii "RCC_CFGR_SWS_PLL (0b10)\000" .LASF560: .ascii "__EXP\000" @@ -3954,7 +3999,7 @@ tim4_start: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF936: +.LASF949: .ascii "AHB2LPENR\000" .LASF500: .ascii "__RAND_MAX\000" @@ -3964,7 +4009,7 @@ tim4_start: .ascii "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)\000" .LASF614: .ascii "INT_FAST8_MAX (__INT_FAST8_MAX__)\000" -.LASF898: +.LASF911: .ascii "RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PW" .ascii "REN_BIT)\000" .LASF487: @@ -3992,12 +4037,12 @@ tim4_start: .ascii "__ACCUM_FBIT__ 15\000" .LASF792: .ascii "PRId64 __PRI64(d)\000" -.LASF872: +.LASF875: .ascii "RCC_PLLCFGR_PLLP(p) ((p & RCC_PLLCFGR_PLLP_MASK) <<" .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF912: +.LASF925: .ascii "long int\000" .LASF720: .ascii "SCNd16 __SCN16(d)\000" @@ -4015,7 +4060,7 @@ tim4_start: .ascii "__FLT32X_EPSILON__ 2.2204460492503131e-16F32x\000" .LASF557: .ascii "___int_least16_t_defined 1\000" -.LASF878: +.LASF881: .ascii "RCC_PLLCFGR_PLLM(m) ((m & RCC_PLLCFGR_PLLM_MASK) <<" .ascii " RCC_PLLCFGR_PLLM_BIT)\000" .LASF468: @@ -4030,7 +4075,7 @@ tim4_start: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" .LASF93: .ascii "__UINTMAX_C(c) c ## ULL\000" -.LASF865: +.LASF867: .ascii "RCC_PLLCFGR_PLLQ_BIT 24\000" .LASF31: .ascii "__SIZEOF_POINTER__ 4\000" @@ -4038,7 +4083,7 @@ tim4_start: .ascii "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)\000" .LASF371: .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" -.LASF893: +.LASF906: .ascii "RCC_CFGR_SW_MASK (0b11)\000" .LASF432: .ascii "__ARM_NEON__\000" @@ -4074,7 +4119,7 @@ tim4_start: .ascii "__SIZEOF_LONG__ 4\000" .LASF754: .ascii "PRIi32 __PRI32(i)\000" -.LASF933: +.LASF946: .ascii "APB2ENR\000" .LASF822: .ascii "SCNoFAST64 __SCN64FAST(o)\000" @@ -4088,7 +4133,7 @@ tim4_start: .ascii "__FLT32X_MIN_EXP__ (-1021)\000" .LASF816: .ascii "PRIoFAST64 __PRI64FAST(o)\000" -.LASF935: +.LASF948: .ascii "AHB1LPENR\000" .LASF406: .ascii "__ARM_FEATURE_SIMD32 1\000" @@ -4100,7 +4145,7 @@ tim4_start: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF459: .ascii "__NEWLIB__ 4\000" -.LASF945: +.LASF958: .ascii "DCKCFGR\000" .LASF721: .ascii "SCNi16 __SCN16(i)\000" @@ -4110,7 +4155,7 @@ tim4_start: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF563: .ascii "_UINT8_T_DECLARED \000" -.LASF908: +.LASF921: .ascii "signed char\000" .LASF806: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -4132,7 +4177,7 @@ tim4_start: .ascii "__GNUC_PATCHLEVEL__ 1\000" .LASF374: .ascii "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2\000" -.LASF866: +.LASF868: .ascii "RCC_PLLCFGR_PLLQ_MASK (0b1111)\000" .LASF120: .ascii "__UINT_LEAST16_MAX__ 0xffff\000" @@ -4142,25 +4187,25 @@ tim4_start: .ascii "_STDINT_H \000" .LASF219: .ascii "__FLT64_MAX_10_EXP__ 308\000" -.LASF874: +.LASF877: .ascii "RCC_PLLCFGR_PLLN_MASK (0b111111111)\000" -.LASF961: +.LASF974: .ascii "src/timer.c\000" -.LASF928: +.LASF941: .ascii "RESERVED1\000" -.LASF931: +.LASF944: .ascii "RESERVED2\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" -.LASF937: +.LASF950: .ascii "RESERVED4\000" .LASF241: .ascii "__FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x\000" -.LASF942: +.LASF955: .ascii "RESERVED6\000" .LASF152: .ascii "__FLT_MAX_10_EXP__ 38\000" -.LASF883: +.LASF896: .ascii "RCC_CFGR_PPRE1_BIT 10\000" .LASF259: .ascii "__FRACT_MAX__ 0X7FFFP-15R\000" @@ -4174,9 +4219,9 @@ tim4_start: .ascii "_READ_WRITE_RETURN_TYPE int\000" .LASF772: .ascii "SCNoLEAST32 __SCN32LEAST(o)\000" -.LASF891: +.LASF904: .ascii "RCC_CFGR_SW_PLL (0b10)\000" -.LASF906: +.LASF919: .ascii "TIM_CR1_CEN_BIT 0\000" .LASF798: .ascii "SCNd64 __SCN64(d)\000" @@ -4196,15 +4241,15 @@ tim4_start: .ascii "__int_fast64_t_defined 1\000" .LASF838: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF919: +.LASF932: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF897: +.LASF910: .ascii "RCC_APB1ENR_PWREN_BIT 28\000" -.LASF900: +.LASF913: .ascii "RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART" .ascii "2EN_BIT)\000" .LASF366: @@ -4213,19 +4258,19 @@ tim4_start: .ascii "_SYS_FEATURES_H \000" .LASF813: .ascii "SCNxLEAST64 __SCN64LEAST(x)\000" -.LASF934: +.LASF947: .ascii "RESERVED3\000" .LASF22: .ascii "__SIZEOF_LONG_DOUBLE__ 8\000" -.LASF940: +.LASF953: .ascii "RESERVED5\000" -.LASF949: +.LASF962: .ascii "CCMR1\000" -.LASF950: +.LASF963: .ascii "CCMR2\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF903: +.LASF916: .ascii "TIMER_H_ \000" .LASF470: .ascii "_MB_LEN_MAX 8\000" @@ -4243,7 +4288,7 @@ tim4_start: .ascii "__need_wchar_t \000" .LASF66: .ascii "__UINT_FAST64_TYPE__ long long unsigned int\000" -.LASF889: +.LASF902: .ascii "RCC_CFGR_SWS_BIT 2\000" .LASF156: .ascii "__FLT_MIN__ 1.1754943508222875e-38F\000" @@ -4269,9 +4314,9 @@ tim4_start: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF647: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF913: +.LASF926: .ascii "__uint16_t\000" -.LASF930: +.LASF943: .ascii "AHB2ENR\000" .LASF805: .ascii "PRIoLEAST64 __PRI64LEAST(o)\000" @@ -4285,7 +4330,7 @@ tim4_start: .ascii "__UINT8_MAX__ 0xff\000" .LASF575: .ascii "_UINTMAX_T_DECLARED \000" -.LASF946: +.LASF959: .ascii "timer\000" .LASF184: .ascii "__LDBL_MAX_EXP__ 1024\000" @@ -4297,6 +4342,8 @@ tim4_start: .ascii "__int8_t_defined 1\000" .LASF176: .ascii "__DBL_HAS_DENORM__ 1\000" +.LASF885: + .ascii "RCC_CFGR_MCO1_HSE (0b10)\000" .LASF625: .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" .LASF602: @@ -4311,7 +4358,7 @@ tim4_start: .ascii "__FLT_DENORM_MIN__ 1.4012984643248171e-45F\000" .LASF534: .ascii "__LEAST8 \"hh\"\000" -.LASF885: +.LASF898: .ascii "RCC_CFGR_HPRE_DIV_NONE 0\000" .LASF540: .ascii "_END_STD_C \000" @@ -4323,13 +4370,13 @@ tim4_start: .ascii "PRIiLEAST16 __PRI16LEAST(i)\000" .LASF303: .ascii "__UACCUM_MIN__ 0.0UK\000" -.LASF870: +.LASF873: .ascii "RCC_PLLCFGR_PLLP_BIT 16\000" .LASF157: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF770: .ascii "SCNdLEAST32 __SCN32LEAST(d)\000" -.LASF925: +.LASF938: .ascii "RESERVED0\000" .LASF807: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" @@ -4349,7 +4396,7 @@ tim4_start: .ascii "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)\000" .LASF376: .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" -.LASF863: +.LASF865: .ascii "RCC_CR_HSION_BIT 0\000" .LASF779: .ascii "PRIxFAST32 __PRI32FAST(x)\000" @@ -4367,7 +4414,7 @@ tim4_start: .ascii "__LACCUM_FBIT__ 31\000" .LASF689: .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" -.LASF941: +.LASF954: .ascii "BDCR\000" .LASF211: .ascii "__FLT32_HAS_QUIET_NAN__ 1\000" @@ -4401,7 +4448,7 @@ tim4_start: .ascii "__FP_FAST_FMAF 1\000" .LASF629: .ascii "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)\000" -.LASF860: +.LASF862: .ascii "RCC_CR_HSEON_ON (1 << RCC_CR_HSEON_BIT)\000" .LASF565: .ascii "_INT16_T_DECLARED \000" @@ -4425,11 +4472,11 @@ tim4_start: .ascii "PRIdLEAST64 __PRI64LEAST(d)\000" .LASF255: .ascii "__USFRACT_EPSILON__ 0x1P-8UHR\000" -.LASF858: +.LASF860: .ascii "RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)\000" .LASF763: .ascii "SCNx32 __SCN32(x)\000" -.LASF922: +.LASF935: .ascii "CFGR\000" .LASF558: .ascii "___int_least32_t_defined 1\000" @@ -4499,7 +4546,7 @@ tim4_start: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF915: +.LASF928: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4515,9 +4562,9 @@ tim4_start: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF868: +.LASF870: .ascii "RCC_PLLCFGR_PLLSRC_BIT 22\000" -.LASF948: +.LASF961: .ascii "DIER\000" .LASF657: .ascii "_WCHAR_T_DEFINED_ \000" @@ -4575,7 +4622,7 @@ tim4_start: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF790: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF892: +.LASF905: .ascii "RCC_CFGR_SW_BIT 0\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4621,11 +4668,11 @@ tim4_start: .ascii "PRIX32 __PRI32(X)\000" .LASF774: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF958: +.LASF971: .ascii "tim4_start\000" .LASF704: .ascii "SCNiFAST8 __SCN8FAST(i)\000" -.LASF921: +.LASF934: .ascii "PLLCFGR\000" .LASF5: .ascii "__GNUC__ 12\000" @@ -4653,7 +4700,7 @@ tim4_start: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF462: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF914: +.LASF927: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4663,7 +4710,7 @@ tim4_start: .ascii "__FLT_RADIX__ 2\000" .LASF455: .ascii "_INTTYPES_H \000" -.LASF916: +.LASF929: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4683,7 +4730,7 @@ tim4_start: .ascii "WINT_MAX (__WINT_MAX__)\000" .LASF823: .ascii "SCNuFAST64 __SCN64FAST(u)\000" -.LASF943: +.LASF956: .ascii "SSCGR\000" .LASF137: .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" @@ -4711,7 +4758,7 @@ tim4_start: .ascii "___int32_t_defined 1\000" .LASF83: .ascii "__INT_WIDTH__ 32\000" -.LASF927: +.LASF940: .ascii "APB2RSTR\000" .LASF409: .ascii "__ARM_ARCH_PROFILE\000" @@ -4763,9 +4810,9 @@ tim4_start: .ascii "__ARM_NEON_FP\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF939: +.LASF952: .ascii "APB2LPENR\000" -.LASF907: +.LASF920: .ascii "TIM_ENABLE (1 << TIM_CR1_CEN_BIT)\000" .LASF821: .ascii "SCNiFAST64 __SCN64FAST(i)\000" @@ -4773,7 +4820,7 @@ tim4_start: .ascii "_ANSIDECL_H_ \000" .LASF684: .ascii "SCNu8 __SCN8(u)\000" -.LASF904: +.LASF917: .ascii "TIM4_BASE_ADDR (0x40000800U)\000" .LASF261: .ascii "__UFRACT_FBIT__ 16\000" @@ -4793,9 +4840,9 @@ tim4_start: .ascii "L)\000" .LASF608: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF918: +.LASF931: .ascii "unsigned int\000" -.LASF857: +.LASF859: .ascii "RCC_CR_HSERDY_BIT 17\000" .LASF460: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4833,6 +4880,8 @@ tim4_start: .ascii "__INT_FAST8_WIDTH__ 32\000" .LASF2: .ascii "__STDC_UTF_16__ 1\000" +.LASF892: + .ascii "RCC_CFGR_MCO1PRE_BIT 24\000" .LASF402: .ascii "__ARM_FEATURE_LDREX\000" .LASF336: @@ -4865,13 +4914,13 @@ tim4_start: .ascii "__ARM_FEATURE_COPROC 15\000" .LASF484: .ascii "__OBSOLETE_MATH_DEFAULT 1\000" -.LASF864: +.LASF866: .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: +.LASF883: .ascii "RCC_CFGR_PPRE_DIV_2 (0b100)\000" .LASF473: .ascii "_UNBUF_STREAM_OPT 1\000" @@ -4879,7 +4928,7 @@ tim4_start: .ascii "__STRINGIFY(a) #a\000" .LASF356: .ascii "__USA_FBIT__ 16\000" -.LASF938: +.LASF951: .ascii "APB1LPENR\000" .LASF480: .ascii "__IEEE_LITTLE_ENDIAN \000" @@ -4909,6 +4958,9 @@ tim4_start: .ascii "PRIuLEAST32 __PRI32LEAST(u)\000" .LASF407: .ascii "__ARM_SIZEOF_MINIMAL_ENUM 1\000" +.LASF872: + .ascii "RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT" + .ascii ")\000" .LASF499: .ascii "_POINTER_INT long\000" .LASF238: @@ -4939,7 +4991,7 @@ tim4_start: .ascii "__SCN16FAST(x) __FAST16 __STRINGIFY(x)\000" .LASF537: .ascii "__LEAST64 \"ll\"\000" -.LASF862: +.LASF864: .ascii "RCC_CR_HSIRDY_READY (1 << RCC_CR_HSIRDY_BIT)\000" .LASF659: .ascii "_WCHAR_T_H \000" @@ -4961,6 +5013,8 @@ tim4_start: .ascii "_FSEEK_OPTIMIZATION 1\000" .LASF87: .ascii "__WINT_WIDTH__ 32\000" +.LASF857: + .ascii "RCC_CR_CSS_BIT 19\000" .LASF515: .ascii "long\000" .LASF65: @@ -4987,9 +5041,11 @@ tim4_start: .ascii "SCNx64 __SCN64(x)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" -.LASF899: +.LASF890: + .ascii "RCC_CFGR_MCO1PRE_DIV4 (0b110)\000" +.LASF912: .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" -.LASF884: +.LASF897: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF646: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" @@ -5007,17 +5063,19 @@ tim4_start: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF734: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF926: +.LASF939: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF932: +.LASF945: .ascii "APB1ENR\000" .LASF742: .ascii "SCNdFAST16 __SCN16FAST(d)\000" -.LASF867: +.LASF887: + .ascii "RCC_CFGR_MCO1_BIT 21\000" +.LASF869: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" .LASF788: @@ -5038,18 +5096,18 @@ tim4_start: .ascii "__NEWLIB_PATCHLEVEL__ 0\000" .LASF26: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" -.LASF869: +.LASF871: .ascii "RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT" .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF917: +.LASF930: .ascii "long long unsigned int\000" .LASF612: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" .LASF150: .ascii "__FLT_MIN_10_EXP__ (-37)\000" -.LASF890: +.LASF903: .ascii "RCC_CFGR_SWS_MASK (0b11)\000" .LASF312: .ascii "__ULACCUM_IBIT__ 32\000" @@ -5083,14 +5141,14 @@ tim4_start: .ascii "__SACCUM_MIN__ (-0X1P7HK-0X1P7HK)\000" .LASF274: .ascii "__ULFRACT_MAX__ 0XFFFFFFFFP-32ULR\000" -.LASF875: +.LASF878: .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" -.LASF951: +.LASF964: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" @@ -5136,6 +5194,8 @@ tim4_start: .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: @@ -5146,7 +5206,7 @@ tim4_start: .ascii "__int20__ +2\000" .LASF655: .ascii "_WCHAR_T_ \000" -.LASF947: +.LASF960: .ascii "SMCR\000" .LASF829: .ascii "PRIoMAX __PRIMAX(o)\000" @@ -5154,7 +5214,7 @@ tim4_start: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF744: .ascii "SCNoFAST16 __SCN16FAST(o)\000" -.LASF895: +.LASF908: .ascii "RCC_AHB1ENR_GPIOAEN_BIT 0\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" @@ -5218,7 +5278,7 @@ tim4_start: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF929: +.LASF942: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5258,11 +5318,11 @@ tim4_start: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF924: +.LASF937: .ascii "AHB2RSTR\000" .LASF672: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" -.LASF882: +.LASF895: .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" @@ -5288,7 +5348,7 @@ tim4_start: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF910: +.LASF923: .ascii "short int\000" .LASF836: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5298,10 +5358,12 @@ tim4_start: .ascii "__UDA_IBIT__ 32\000" .LASF535: .ascii "__LEAST16 \"h\"\000" -.LASF877: +.LASF880: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF587: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" +.LASF884: + .ascii "RCC_CFGR_MCO1_HSI (0b00)\000" .LASF711: .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" .LASF607: @@ -5314,13 +5376,13 @@ tim4_start: .ascii "__ARM_FEATURE_COPROC\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF905: +.LASF918: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" .LASF609: .ascii "UINT64_MAX (__UINT64_MAX__)\000" -.LASF896: +.LASF909: .ascii "RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAE" .ascii "N_BIT)\000" .LASF472: @@ -5347,7 +5409,7 @@ tim4_start: .ascii "__INT16_MAX__ 0x7fff\000" .LASF479: .ascii "__SYS_CONFIG_H__ \000" -.LASF876: +.LASF879: .ascii "RCC_PLLCFGR_PLLM_BIT 0\000" .LASF8: .ascii "__VERSION__ \"12.3.1 20230626\"\000" @@ -5383,7 +5445,7 @@ tim4_start: .ascii "PRIdMAX __PRIMAX(d)\000" .LASF388: .ascii "__SIZEOF_WINT_T__ 4\000" -.LASF881: +.LASF894: .ascii "RCC_CFGR_PPRE2_BIT 13\000" .LASF783: .ascii "SCNoFAST32 __SCN32FAST(o)\000" @@ -5395,6 +5457,9 @@ tim4_start: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF702: .ascii "PRIXFAST8 __PRI8FAST(X)\000" +.LASF907: + .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: @@ -5435,13 +5500,13 @@ tim4_start: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF652: .ascii "_T_WCHAR_ \000" -.LASF956: +.LASF969: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF665: .ascii "_BSD_WCHAR_T_\000" -.LASF944: +.LASF957: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -5449,11 +5514,11 @@ tim4_start: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF757: .ascii "PRIx32 __PRI32(x)\000" -.LASF959: +.LASF972: .ascii "tim4_init\000" -.LASF920: +.LASF933: .ascii "uint32_t\000" -.LASF873: +.LASF876: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" .LASF690: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5485,9 +5550,11 @@ tim4_start: .ascii "__ULACCUM_EPSILON__ 0x1P-32ULK\000" .LASF181: .ascii "__LDBL_DIG__ 15\000" +.LASF889: + .ascii "RCC_CFGR_MCO1PRE_DIV5 (0b111)\000" .LASF89: .ascii "__SIZE_WIDTH__ 32\000" -.LASF871: +.LASF874: .ascii "RCC_PLLCFGR_PLLP_MASK (0b11)\000" .LASF481: .ascii "_SUPPORTS_ERREXCEPT \000" @@ -5495,7 +5562,7 @@ tim4_start: .ascii "__FLT64_DIG__ 15\000" .LASF525: .ascii "_INT32_EQ_LONG \000" -.LASF879: +.LASF882: .ascii "RCC_CFGR_PPRE_DIV_NONE 0\000" .LASF77: .ascii "__WINT_MAX__ 0xffffffffU\000" @@ -5511,7 +5578,7 @@ tim4_start: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF911: +.LASF924: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5527,7 +5594,7 @@ tim4_start: .ascii "__HQ_FBIT__ 15\000" .LASF799: .ascii "SCNi64 __SCN64(i)\000" -.LASF861: +.LASF863: .ascii "RCC_CR_HSIRDY_BIT 1\000" .LASF80: .ascii "__SIZE_MAX__ 0xffffffffU\000" @@ -5535,6 +5602,8 @@ tim4_start: .ascii "__FLT32X_HAS_INFINITY__ 1\000" .LASF819: .ascii "PRIXFAST64 __PRI64FAST(X)\000" +.LASF858: + .ascii "RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT)\000" .LASF412: .ascii "__ARM_ARCH\000" .LASF591: @@ -5551,7 +5620,7 @@ tim4_start: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF523: .ascii "long +4\000" -.LASF923: +.LASF936: .ascii "AHB1RSTR\000" .LASF724: .ascii "SCNx16 __SCN16(x)\000" @@ -5561,7 +5630,7 @@ tim4_start: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF962: +.LASF975: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF797: .ascii "PRIX64 __PRI64(X)\000" @@ -5613,7 +5682,7 @@ tim4_start: .ascii "__DBL_MANT_DIG__ 53\000" .LASF272: .ascii "__ULFRACT_IBIT__ 0\000" -.LASF887: +.LASF900: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: .ascii "__INT_MAX__ 0x7fffffff\000" diff --git a/build/timer.i b/build/timer.i index 2ba9e1b..035f6ed 100644 --- a/build/timer.i +++ b/build/timer.i @@ -2014,6 +2014,11 @@ struct rcc { #define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) +#define RCC_CR_CSS_BIT 19 +#define RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT) + + + #define RCC_CR_HSERDY_BIT 17 #define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) @@ -2036,6 +2041,7 @@ struct rcc { #define RCC_PLLCFGR_PLLSRC_BIT 22 #define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT) +#define RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT) #define RCC_PLLCFGR_PLLP_BIT 16 #define RCC_PLLCFGR_PLLP_MASK (0b11) @@ -2055,6 +2061,21 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_2 (0b100) +#define RCC_CFGR_MCO1_HSI (0b00) +#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_DIV5 (0b111) +#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) @@ -2075,6 +2096,7 @@ struct rcc { #define RCC_CFGR_SWS_MASK (0b11) +#define RCC_CFGR_SW_PLL (0b10) #define RCC_CFGR_SW_PLL (0b10) #define RCC_CFGR_SW_BIT 0 @@ -2145,7 +2167,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 ef13007..dbd3731 100644 Binary files a/build/timer.o and b/build/timer.o differ diff --git a/build/usart.S b/build/usart.S index e3a37e9..f0e688b 100644 --- a/build/usart.S +++ b/build/usart.S @@ -62,14 +62,14 @@ usart2_init: ldr r3, [r3] ldr r2, .L2+4 .loc 1 13 42 - bic r3, r3, #384 + bic r3, r3, #192 str r3, [r2] .loc 1 14 34 ldr r3, .L2+4 ldr r3, [r3] ldr r2, .L2+4 .loc 1 14 42 - orr r3, r3, #256 + orr r3, r3, #128 str r3, [r2] .loc 1 17 34 ldr r3, .L2+4 @@ -99,71 +99,78 @@ usart2_init: .loc 1 20 41 orr r3, r3, #28672 str r3, [r2, #32] - .loc 1 23 33 + .loc 1 23 34 + ldr r3, .L2+4 + ldr r3, [r3] + ldr r2, .L2+4 + .loc 1 23 42 + bic r3, r3, #196608 + str r3, [r2] + .loc 1 24 34 + ldr r3, .L2+4 + ldr r3, [r3] + ldr r2, .L2+4 + .loc 1 24 42 + orr r3, r3, #131072 + str r3, [r2] + .loc 1 27 34 + ldr r3, .L2+4 + ldr r3, [r3, #36] + ldr r2, .L2+4 + .loc 1 27 41 + bic r3, r3, #15 + str r3, [r2, #36] + .loc 1 28 34 + ldr r3, .L2+4 + ldr r2, .L2+4 + ldr r3, [r3, #36] + .loc 1 28 41 + str r3, [r2, #36] + .loc 1 31 33 ldr r3, .L2 ldr r3, [r3, #64] ldr r2, .L2 - .loc 1 23 43 + .loc 1 31 43 orr r3, r3, #131072 str r3, [r2, #64] - .loc 1 26 35 + .loc 1 34 35 ldr r3, .L2+8 - .loc 1 26 41 + .loc 1 34 41 movs r2, #0 str r2, [r3, #12] - .loc 1 27 35 + .loc 1 35 35 ldr r3, .L2+8 - .loc 1 27 41 + .loc 1 35 41 movs r2, #0 str r2, [r3, #16] - .loc 1 28 35 + .loc 1 36 35 ldr r3, .L2+8 - .loc 1 28 41 + .loc 1 36 41 movs r2, #0 str r2, [r3, #20] - .loc 1 54 35 + .loc 1 71 35 ldr r3, .L2+8 ldr r3, [r3, #8] ldr r2, .L2+8 - .loc 1 54 41 - bic r3, r3, #65280 - bic r3, r3, #240 + .loc 1 71 41 + orr r3, r3, #416 + orr r3, r3, #1 str r3, [r2, #8] - .loc 1 55 35 - ldr r3, .L2+8 - ldr r3, [r3, #8] - ldr r2, .L2+8 - .loc 1 55 41 - orr r3, r3, #832 - str r3, [r2, #8] - .loc 1 58 35 - ldr r3, .L2+8 - ldr r3, [r3, #8] - ldr r2, .L2+8 - .loc 1 58 41 - bic r3, r3, #7 - str r3, [r2, #8] - .loc 1 59 35 - ldr r3, .L2+8 - ldr r2, .L2+8 - ldr r3, [r3, #8] - .loc 1 59 41 - str r3, [r2, #8] - .loc 1 62 35 + .loc 1 74 35 ldr r3, .L2+8 ldr r3, [r3, #12] ldr r2, .L2+8 - .loc 1 62 41 + .loc 1 74 41 orr r3, r3, #8 str r3, [r2, #12] - .loc 1 63 35 + .loc 1 75 35 ldr r3, .L2+8 ldr r3, [r3, #12] ldr r2, .L2+8 - .loc 1 63 41 + .loc 1 75 41 orr r3, r3, #4 str r3, [r2, #12] - .loc 1 64 1 + .loc 1 76 1 nop mov sp, r7 .cfi_def_cfa_register 13 @@ -190,7 +197,7 @@ usart2_init: .type usart2_start, %function usart2_start: .LFB1: - .loc 1 66 25 + .loc 1 78 25 .cfi_startproc @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 @@ -200,14 +207,14 @@ usart2_start: .cfi_offset 7, -4 add r7, sp, #0 .cfi_def_cfa_register 7 - .loc 1 67 35 + .loc 1 79 35 ldr r3, .L5 ldr r3, [r3, #12] ldr r2, .L5 - .loc 1 67 41 + .loc 1 79 41 orr r3, r3, #8192 str r3, [r2, #12] - .loc 1 68 1 + .loc 1 80 1 nop mov sp, r7 .cfi_def_cfa_register 13 @@ -232,7 +239,7 @@ usart2_start: .type usart2_write_byte, %function usart2_write_byte: .LFB2: - .loc 1 70 35 + .loc 1 82 35 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -246,23 +253,23 @@ usart2_write_byte: .cfi_def_cfa_register 7 mov r3, r0 strb r3, [r7, #7] - .loc 1 72 35 + .loc 1 84 35 ldr r2, .L9 - .loc 1 72 40 + .loc 1 84 40 ldrb r3, [r7, #7] @ zero_extendqisi2 str r3, [r2, #4] - .loc 1 75 9 + .loc 1 88 9 nop .L8: - .loc 1 75 43 discriminator 1 + .loc 1 88 44 discriminator 1 ldr r3, .L9 ldr r3, [r3] - .loc 1 75 48 discriminator 1 - and r3, r3, #128 - .loc 1 75 60 discriminator 1 + .loc 1 88 49 discriminator 1 + and r3, r3, #64 + .loc 1 88 10 discriminator 1 cmp r3, #0 beq .L8 - .loc 1 77 1 + .loc 1 89 1 nop nop adds r7, r7, #12 @@ -290,7 +297,7 @@ usart2_write_byte: .type usart2_write, %function usart2_write: .LFB3: - .loc 1 79 30 + .loc 1 91 30 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -303,24 +310,24 @@ usart2_write: add r7, sp, #0 .cfi_def_cfa_register 7 str r0, [r7, #4] - .loc 1 80 9 + .loc 1 92 9 b .L12 .L13: - .loc 1 80 38 discriminator 2 + .loc 1 92 38 discriminator 2 ldr r3, [r7, #4] adds r2, r3, #1 str r2, [r7, #4] - .loc 1 80 16 discriminator 2 + .loc 1 92 16 discriminator 2 ldrb r3, [r3] @ zero_extendqisi2 mov r0, r3 bl usart2_write_byte .L12: - .loc 1 80 10 discriminator 1 + .loc 1 92 10 discriminator 1 ldr r3, [r7, #4] ldrb r3, [r3] @ zero_extendqisi2 cmp r3, #0 bne .L13 - .loc 1 81 1 + .loc 1 93 1 nop nop adds r7, r7, #8 @@ -347,10 +354,10 @@ usart2_write: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x9 - .4byte .LASF1004 + .4byte .LASF1021 .byte 0x1d - .4byte .LASF1005 - .4byte .LASF1006 + .4byte .LASF1022 + .4byte .LASF1023 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -358,9 +365,9 @@ usart2_write: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF951 + .4byte .LASF968 .uleb128 0x4 - .4byte .LASF956 + .4byte .LASF973 .byte 0x2 .byte 0x2b .byte 0x17 @@ -368,21 +375,21 @@ usart2_write: .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF952 + .4byte .LASF969 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF953 + .4byte .LASF970 .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF954 + .4byte .LASF971 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF955 + .4byte .LASF972 .uleb128 0x4 - .4byte .LASF957 + .4byte .LASF974 .byte 0x2 .byte 0x4f .byte 0x1b @@ -390,15 +397,15 @@ usart2_write: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF958 + .4byte .LASF975 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF959 + .4byte .LASF976 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF960 + .4byte .LASF977 .uleb128 0xa .byte 0x4 .byte 0x5 @@ -406,15 +413,15 @@ usart2_write: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF961 + .4byte .LASF978 .uleb128 0x4 - .4byte .LASF962 + .4byte .LASF979 .byte 0x3 .byte 0x18 .byte 0x13 .4byte 0x31 .uleb128 0x4 - .4byte .LASF963 + .4byte .LASF980 .byte 0x3 .byte 0x30 .byte 0x14 @@ -435,13 +442,13 @@ usart2_write: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF964 + .4byte .LASF981 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF965 + .4byte .LASF982 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -453,115 +460,115 @@ usart2_write: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF966 + .4byte .LASF983 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF967 + .4byte .LASF984 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF968 + .4byte .LASF985 .byte 0x4 .byte 0xd .4byte 0x212 .byte 0x18 .uleb128 0x1 - .4byte .LASF969 + .4byte .LASF986 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF970 + .4byte .LASF987 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF971 + .4byte .LASF988 .byte 0x4 .byte 0x10 .4byte 0x212 .byte 0x28 .uleb128 0x1 - .4byte .LASF972 + .4byte .LASF989 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF973 + .4byte .LASF990 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF974 + .4byte .LASF991 .byte 0x4 .byte 0x13 .4byte 0x212 .byte 0x38 .uleb128 0x1 - .4byte .LASF975 + .4byte .LASF992 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF976 + .4byte .LASF993 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF977 + .4byte .LASF994 .byte 0x4 .byte 0x16 .4byte 0x212 .byte 0x48 .uleb128 0x1 - .4byte .LASF978 + .4byte .LASF995 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF979 + .4byte .LASF996 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF980 + .4byte .LASF997 .byte 0x4 .byte 0x19 .4byte 0x212 .byte 0x58 .uleb128 0x1 - .4byte .LASF981 + .4byte .LASF998 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF982 + .4byte .LASF999 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF983 + .4byte .LASF1000 .byte 0x4 .byte 0x1c .4byte 0x212 .byte 0x68 .uleb128 0x1 - .4byte .LASF984 + .4byte .LASF1001 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -573,25 +580,25 @@ usart2_write: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF985 + .4byte .LASF1002 .byte 0x4 .byte 0x1f .4byte 0x212 .byte 0x78 .uleb128 0x1 - .4byte .LASF986 + .4byte .LASF1003 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF987 + .4byte .LASF1004 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF988 + .4byte .LASF1005 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -607,31 +614,31 @@ usart2_write: .uleb128 0x5 .4byte 0x202 .uleb128 0x6 - .4byte .LASF989 + .4byte .LASF1006 .byte 0x28 .byte 0x5 .byte 0x7 .4byte 0x29c .uleb128 0x1 - .4byte .LASF990 + .4byte .LASF1007 .byte 0x5 .byte 0x8 .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF991 + .4byte .LASF1008 .byte 0x5 .byte 0x9 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF992 + .4byte .LASF1009 .byte 0x5 .byte 0xa .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF993 + .4byte .LASF1010 .byte 0x5 .byte 0xb .4byte 0xa0 @@ -649,32 +656,32 @@ usart2_write: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF994 + .4byte .LASF1011 .byte 0x5 .byte 0xe .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF995 + .4byte .LASF1012 .byte 0x5 .byte 0xf .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF996 + .4byte .LASF1013 .byte 0x5 .byte 0x10 .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF997 + .4byte .LASF1014 .byte 0x5 .byte 0x11 .4byte 0xa0 .byte 0x24 .byte 0 .uleb128 0x6 - .4byte .LASF998 + .4byte .LASF1015 .byte 0x1c .byte 0x6 .byte 0x6 @@ -716,16 +723,16 @@ usart2_write: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF999 + .4byte .LASF1016 .byte 0x6 .byte 0xd .4byte 0xa0 .byte 0x18 .byte 0 .uleb128 0xe - .4byte .LASF1000 + .4byte .LASF1017 .byte 0x1 - .byte 0x4f + .byte 0x5b .byte 0x6 .4byte .LFB3 .4byte .LFE3-.LFB3 @@ -734,7 +741,7 @@ usart2_write: .4byte 0x320 .uleb128 0x7 .ascii "buf\000" - .byte 0x4f + .byte 0x5b .byte 0x19 .4byte 0x320 .uleb128 0x2 @@ -749,9 +756,9 @@ usart2_write: .byte 0x8 .4byte .LASF511 .uleb128 0x10 - .4byte .LASF1001 + .4byte .LASF1018 .byte 0x1 - .byte 0x46 + .byte 0x52 .byte 0x6 .4byte .LFB2 .4byte .LFE2-.LFB2 @@ -760,7 +767,7 @@ usart2_write: .4byte 0x350 .uleb128 0x7 .ascii "c\000" - .byte 0x46 + .byte 0x52 .byte 0x20 .4byte 0x88 .uleb128 0x2 @@ -768,14 +775,14 @@ usart2_write: .sleb128 -9 .byte 0 .uleb128 0x8 - .4byte .LASF1002 - .byte 0x42 + .4byte .LASF1019 + .byte 0x4e .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c .uleb128 0x8 - .4byte .LASF1003 + .4byte .LASF1020 .byte 0x5 .4byte .LFB0 .4byte .LFE0-.LFB0 @@ -2577,7 +2584,7 @@ usart2_write: .uleb128 0x5 .byte 0x5 .uleb128 0x2 - .4byte .LASF903 + .4byte .LASF916 .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 @@ -3853,7 +3860,7 @@ usart2_write: .uleb128 0x135 .4byte .LASF850 .byte 0 - .section .debug_macro,"G",%progbits,wm4.rcc.h.37.a17300cb822ec078eaa06c79bfd3d786,comdat + .section .debug_macro,"G",%progbits,wm4.rcc.h.37.3f1c030e2fd0ae54c1d5f4fbfda7d54f,comdat .Ldebug_macro14: .2byte 0x5 .byte 0 @@ -3882,64 +3889,64 @@ usart2_write: .uleb128 0x33 .4byte .LASF858 .byte 0x5 - .uleb128 0x36 + .uleb128 0x37 .4byte .LASF859 .byte 0x5 - .uleb128 0x37 + .uleb128 0x38 .4byte .LASF860 .byte 0x5 - .uleb128 0x3a + .uleb128 0x3b .4byte .LASF861 .byte 0x5 - .uleb128 0x3b + .uleb128 0x3c .4byte .LASF862 .byte 0x5 - .uleb128 0x3e + .uleb128 0x3f .4byte .LASF863 .byte 0x5 - .uleb128 0x3f + .uleb128 0x40 .4byte .LASF864 .byte 0x5 - .uleb128 0x42 + .uleb128 0x43 .4byte .LASF865 .byte 0x5 - .uleb128 0x43 + .uleb128 0x44 .4byte .LASF866 .byte 0x5 - .uleb128 0x44 + .uleb128 0x47 .4byte .LASF867 .byte 0x5 - .uleb128 0x46 + .uleb128 0x48 .4byte .LASF868 .byte 0x5 - .uleb128 0x47 + .uleb128 0x49 .4byte .LASF869 .byte 0x5 - .uleb128 0x49 + .uleb128 0x4b .4byte .LASF870 .byte 0x5 - .uleb128 0x4a + .uleb128 0x4c .4byte .LASF871 .byte 0x5 - .uleb128 0x4b + .uleb128 0x4d .4byte .LASF872 .byte 0x5 - .uleb128 0x4d + .uleb128 0x4f .4byte .LASF873 .byte 0x5 - .uleb128 0x4e + .uleb128 0x50 .4byte .LASF874 .byte 0x5 - .uleb128 0x4f + .uleb128 0x51 .4byte .LASF875 .byte 0x5 - .uleb128 0x51 + .uleb128 0x53 .4byte .LASF876 .byte 0x5 - .uleb128 0x52 + .uleb128 0x54 .4byte .LASF877 .byte 0x5 - .uleb128 0x53 + .uleb128 0x55 .4byte .LASF878 .byte 0x5 .uleb128 0x57 @@ -3948,71 +3955,113 @@ usart2_write: .uleb128 0x58 .4byte .LASF880 .byte 0x5 - .uleb128 0x5b + .uleb128 0x59 .4byte .LASF881 .byte 0x5 - .uleb128 0x5c + .uleb128 0x5d .4byte .LASF882 .byte 0x5 - .uleb128 0x5f + .uleb128 0x5e .4byte .LASF883 .byte 0x5 - .uleb128 0x60 + .uleb128 0x61 .4byte .LASF884 .byte 0x5 - .uleb128 0x63 + .uleb128 0x62 .4byte .LASF885 .byte 0x5 - .uleb128 0x65 + .uleb128 0x63 .4byte .LASF886 .byte 0x5 - .uleb128 0x66 + .uleb128 0x65 .4byte .LASF887 .byte 0x5 - .uleb128 0x69 + .uleb128 0x66 .4byte .LASF888 .byte 0x5 - .uleb128 0x6b + .uleb128 0x68 .4byte .LASF889 .byte 0x5 - .uleb128 0x6c + .uleb128 0x69 .4byte .LASF890 .byte 0x5 - .uleb128 0x6f + .uleb128 0x6a .4byte .LASF891 .byte 0x5 - .uleb128 0x71 + .uleb128 0x6c .4byte .LASF892 .byte 0x5 - .uleb128 0x72 + .uleb128 0x6d .4byte .LASF893 .byte 0x5 - .uleb128 0x73 + .uleb128 0x70 .4byte .LASF894 .byte 0x5 - .uleb128 0x77 + .uleb128 0x71 .4byte .LASF895 .byte 0x5 - .uleb128 0x78 + .uleb128 0x74 .4byte .LASF896 .byte 0x5 - .uleb128 0x7b + .uleb128 0x75 .4byte .LASF897 .byte 0x5 - .uleb128 0x7c + .uleb128 0x78 .4byte .LASF898 .byte 0x5 - .uleb128 0x7e + .uleb128 0x7a .4byte .LASF899 .byte 0x5 - .uleb128 0x7f + .uleb128 0x7b .4byte .LASF900 .byte 0x5 - .uleb128 0x81 + .uleb128 0x7e .4byte .LASF901 .byte 0x5 - .uleb128 0x82 + .uleb128 0x80 .4byte .LASF902 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF903 + .byte 0x5 + .uleb128 0x84 + .4byte .LASF904 + .byte 0x5 + .uleb128 0x85 + .4byte .LASF904 + .byte 0x5 + .uleb128 0x87 + .4byte .LASF905 + .byte 0x5 + .uleb128 0x88 + .4byte .LASF906 + .byte 0x5 + .uleb128 0x89 + .4byte .LASF907 + .byte 0x5 + .uleb128 0x8d + .4byte .LASF908 + .byte 0x5 + .uleb128 0x8e + .4byte .LASF909 + .byte 0x5 + .uleb128 0x91 + .4byte .LASF910 + .byte 0x5 + .uleb128 0x92 + .4byte .LASF911 + .byte 0x5 + .uleb128 0x94 + .4byte .LASF912 + .byte 0x5 + .uleb128 0x95 + .4byte .LASF913 + .byte 0x5 + .uleb128 0x97 + .4byte .LASF914 + .byte 0x5 + .uleb128 0x98 + .4byte .LASF915 .byte 0 .section .debug_macro,"G",%progbits,wm4.stdbool.h.29.eb124ecb79face0a1d832a352bec45e0,comdat .Ldebug_macro15: @@ -4020,87 +4069,99 @@ usart2_write: .byte 0 .byte 0x5 .uleb128 0x1d - .4byte .LASF904 - .byte 0x5 - .uleb128 0x21 - .4byte .LASF905 - .byte 0x5 - .uleb128 0x23 - .4byte .LASF906 - .byte 0x5 - .uleb128 0x24 - .4byte .LASF907 - .byte 0x5 - .uleb128 0x32 - .4byte .LASF908 - .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.20.b87a0d07dd796043155f078de080ca14,comdat -.Ldebug_macro16: - .2byte 0x5 - .byte 0 - .byte 0x5 - .uleb128 0x14 - .4byte .LASF909 - .byte 0x5 - .uleb128 0x15 - .4byte .LASF910 - .byte 0x5 - .uleb128 0x18 - .4byte .LASF911 - .byte 0x5 - .uleb128 0x19 - .4byte .LASF912 - .byte 0x5 - .uleb128 0x1a - .4byte .LASF913 - .byte 0x5 - .uleb128 0x1c - .4byte .LASF914 - .byte 0x5 - .uleb128 0x1d - .4byte .LASF915 - .byte 0x5 - .uleb128 0x1e - .4byte .LASF916 - .byte 0x5 - .uleb128 0x21 .4byte .LASF917 .byte 0x5 - .uleb128 0x22 + .uleb128 0x21 .4byte .LASF918 .byte 0x5 .uleb128 0x23 .4byte .LASF919 .byte 0x5 - .uleb128 0x25 + .uleb128 0x24 .4byte .LASF920 .byte 0x5 - .uleb128 0x26 + .uleb128 0x32 .4byte .LASF921 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.gpio.h.20.3f94558e20af8751ceb103a1b8564792,comdat +.Ldebug_macro16: + .2byte 0x5 + .byte 0 .byte 0x5 - .uleb128 0x27 + .uleb128 0x14 .4byte .LASF922 .byte 0x5 - .uleb128 0x2c + .uleb128 0x15 .4byte .LASF923 .byte 0x5 - .uleb128 0x2d + .uleb128 0x18 .4byte .LASF924 .byte 0x5 - .uleb128 0x2e + .uleb128 0x1a .4byte .LASF925 .byte 0x5 - .uleb128 0x30 + .uleb128 0x1b .4byte .LASF926 .byte 0x5 - .uleb128 0x32 + .uleb128 0x1d .4byte .LASF927 .byte 0x5 - .uleb128 0x34 + .uleb128 0x1e .4byte .LASF928 .byte 0x5 - .uleb128 0x36 + .uleb128 0x20 .4byte .LASF929 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF930 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF931 + .byte 0x5 + .uleb128 0x25 + .4byte .LASF932 + .byte 0x5 + .uleb128 0x26 + .4byte .LASF933 + .byte 0x5 + .uleb128 0x29 + .4byte .LASF934 + .byte 0x5 + .uleb128 0x2a + .4byte .LASF935 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF936 + .byte 0x5 + .uleb128 0x2d + .4byte .LASF937 + .byte 0x5 + .uleb128 0x2e + .4byte .LASF938 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF939 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF940 + .byte 0x5 + .uleb128 0x35 + .4byte .LASF941 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF942 + .byte 0x5 + .uleb128 0x38 + .4byte .LASF943 + .byte 0x5 + .uleb128 0x3a + .4byte .LASF944 + .byte 0x5 + .uleb128 0x3c + .4byte .LASF945 + .byte 0x5 + .uleb128 0x3e + .4byte .LASF946 .byte 0 .section .debug_macro,"G",%progbits,wm4.usart.h.2.c32df0bd7cfa17e6f790f44d3d6388d5,comdat .Ldebug_macro17: @@ -4108,67 +4169,67 @@ usart2_write: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF930 - .byte 0x5 - .uleb128 0x10 - .4byte .LASF931 - .byte 0x5 - .uleb128 0x11 - .4byte .LASF932 - .byte 0x5 - .uleb128 0x15 - .4byte .LASF933 - .byte 0x5 - .uleb128 0x16 - .4byte .LASF934 - .byte 0x5 - .uleb128 0x19 - .4byte .LASF935 - .byte 0x5 - .uleb128 0x1a - .4byte .LASF936 - .byte 0x5 - .uleb128 0x1e - .4byte .LASF937 - .byte 0x5 - .uleb128 0x1f - .4byte .LASF938 - .byte 0x5 - .uleb128 0x23 - .4byte .LASF939 - .byte 0x5 - .uleb128 0x24 - .4byte .LASF940 - .byte 0x5 - .uleb128 0x27 - .4byte .LASF941 - .byte 0x5 - .uleb128 0x28 - .4byte .LASF942 - .byte 0x5 - .uleb128 0x2b - .4byte .LASF943 - .byte 0x5 - .uleb128 0x2c - .4byte .LASF944 - .byte 0x5 - .uleb128 0x2f - .4byte .LASF945 - .byte 0x5 - .uleb128 0x30 - .4byte .LASF946 - .byte 0x5 - .uleb128 0x33 .4byte .LASF947 .byte 0x5 - .uleb128 0x34 + .uleb128 0x10 .4byte .LASF948 .byte 0x5 - .uleb128 0x36 + .uleb128 0x11 .4byte .LASF949 .byte 0x5 - .uleb128 0x37 + .uleb128 0x15 .4byte .LASF950 + .byte 0x5 + .uleb128 0x16 + .4byte .LASF951 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF952 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF953 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF954 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF955 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF956 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF957 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF958 + .byte 0x5 + .uleb128 0x28 + .4byte .LASF959 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF960 + .byte 0x5 + .uleb128 0x2c + .4byte .LASF961 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF962 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF963 + .byte 0x5 + .uleb128 0x33 + .4byte .LASF964 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF965 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF966 + .byte 0x5 + .uleb128 0x37 + .4byte .LASF967 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -4183,7 +4244,7 @@ usart2_write: .ascii "__UHA_FBIT__ 8\000" .LASF815: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF952: +.LASF969: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -4211,7 +4272,7 @@ usart2_write: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF542: .ascii "_LONG_DOUBLE long double\000" -.LASF989: +.LASF1006: .ascii "gpio\000" .LASF592: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -4231,11 +4292,13 @@ usart2_write: .ascii "__ULACCUM_FBIT__ 32\000" .LASF75: .ascii "__WCHAR_MAX__ 0xffffffffU\000" +.LASF891: + .ascii "RCC_CFGR_MCO1PRE_DIV2 (0b100)\000" .LASF514: .ascii "__int20__\000" -.LASF901: +.LASF914: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" -.LASF950: +.LASF967: .ascii "USART_BRR_FRACTION_MASK (0b111)\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" @@ -4253,7 +4316,7 @@ usart2_write: .ascii "__SFRACT_FBIT__ 7\000" .LASF94: .ascii "__INTMAX_WIDTH__ 64\000" -.LASF930: +.LASF947: .ascii "USART_H_ \000" .LASF448: .ascii "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC\000" @@ -4263,7 +4326,7 @@ usart2_write: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF902: +.LASF915: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF621: @@ -4296,8 +4359,6 @@ usart2_write: .ascii "RCC_BASE_ADDR (0x40023800U)\000" .LASF526: .ascii "__INT8 \"hh\"\000" -.LASF913: - .ascii "GPIO_MODER_MODER3_AF (0b10)\000" .LASF47: .ascii "__UINT8_TYPE__ unsigned char\000" .LASF368: @@ -4306,7 +4367,7 @@ usart2_write: .ascii "INT_LEAST16_MAX (__INT_LEAST16_MAX__)\000" .LASF704: .ascii "SCNiFAST8 __SCN8FAST(i)\000" -.LASF909: +.LASF922: .ascii "GPIOA_BASE_ADDR (0x40020000U)\000" .LASF791: .ascii "__SCN64FAST(x) __FAST64 __STRINGIFY(x)\000" @@ -4334,7 +4395,7 @@ usart2_write: .ascii "__SCNPTR(x) __STRINGIFY(x)\000" .LASF202: .ascii "__FLT32_MAX_10_EXP__ 38\000" -.LASF886: +.LASF899: .ascii "RCC_CFGR_HPRE_BIT 4\000" .LASF683: .ascii "SCNo8 __SCN8(o)\000" @@ -4350,14 +4411,16 @@ usart2_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF1004: +.LASF1021: .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" .ascii "ections -fno-builtin -fno-common\000" -.LASF917: +.LASF931: + .ascii "GPIO_AFRH_AFRH8_BIT 0\000" +.LASF934: .ascii "GPIO_AFRL_AFRL3_BIT 12\000" -.LASF859: +.LASF861: .ascii "RCC_CR_HSEON_BIT 16\000" .LASF596: .ascii "INT16_MAX (__INT16_MAX__)\000" @@ -4373,7 +4436,7 @@ usart2_write: .ascii "__int_fast32_t_defined 1\000" .LASF133: .ascii "__INT_FAST64_WIDTH__ 64\000" -.LASF879: +.LASF882: .ascii "RCC_CFGR_PPRE_DIV_NONE 0\000" .LASF660: .ascii "___int_wchar_t_h \000" @@ -4387,6 +4450,8 @@ usart2_write: .ascii "INT16_C(x) __INT16_C(x)\000" .LASF250: .ascii "__SFRACT_EPSILON__ 0x1P-7HR\000" +.LASF888: + .ascii "RCC_CFGR_MCO1_MASK (0b11)\000" .LASF113: .ascii "__INT32_C(c) c ## L\000" .LASF27: @@ -4417,12 +4482,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" +.LASF886: + .ascii "RCC_CFGR_MCO1_PLL (0b11)\000" .LASF134: .ascii "__UINT_FAST8_MAX__ 0xffffffffU\000" -.LASF949: +.LASF966: .ascii "USART_BRR_FRACTION_BIT 0\000" .LASF541: .ascii "_NOTHROW \000" @@ -4430,9 +4494,9 @@ usart2_write: .ascii "INT32_MIN (-__INT32_MAX__ - 1)\000" .LASF307: .ascii "__LACCUM_IBIT__ 32\000" -.LASF888: +.LASF901: .ascii "RCC_CFGR_SWS_PLL (0b10)\000" -.LASF956: +.LASF973: .ascii "__uint8_t\000" .LASF81: .ascii "__SCHAR_WIDTH__ 8\000" @@ -4448,7 +4512,7 @@ usart2_write: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF979: +.LASF996: .ascii "AHB2LPENR\000" .LASF500: .ascii "__RAND_MAX\000" @@ -4456,7 +4520,7 @@ usart2_write: .ascii "__UINT_FAST16_MAX__ 0xffffffffU\000" .LASF610: .ascii "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)\000" -.LASF898: +.LASF911: .ascii "RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PW" .ascii "REN_BIT)\000" .LASF487: @@ -4486,12 +4550,12 @@ usart2_write: .ascii "__ACCUM_FBIT__ 15\000" .LASF792: .ascii "PRId64 __PRI64(d)\000" -.LASF872: +.LASF875: .ascii "RCC_PLLCFGR_PLLP(p) ((p & RCC_PLLCFGR_PLLP_MASK) <<" .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF955: +.LASF972: .ascii "long int\000" .LASF720: .ascii "SCNd16 __SCN16(d)\000" @@ -4509,7 +4573,7 @@ usart2_write: .ascii "__FLT32X_EPSILON__ 2.2204460492503131e-16F32x\000" .LASF557: .ascii "___int_least16_t_defined 1\000" -.LASF878: +.LASF881: .ascii "RCC_PLLCFGR_PLLM(m) ((m & RCC_PLLCFGR_PLLM_MASK) <<" .ascii " RCC_PLLCFGR_PLLM_BIT)\000" .LASF59: @@ -4522,7 +4586,7 @@ usart2_write: .ascii "PRIdFAST32 __PRI32FAST(d)\000" .LASF93: .ascii "__UINTMAX_C(c) c ## ULL\000" -.LASF865: +.LASF867: .ascii "RCC_PLLCFGR_PLLQ_BIT 24\000" .LASF31: .ascii "__SIZEOF_POINTER__ 4\000" @@ -4530,10 +4594,8 @@ usart2_write: .ascii "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)\000" .LASF371: .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" -.LASF893: +.LASF906: .ascii "RCC_CFGR_SW_MASK (0b11)\000" -.LASF916: - .ascii "GPIO_MODER_MODER2_AF (0b10)\000" .LASF432: .ascii "__ARM_NEON__\000" .LASF588: @@ -4546,7 +4608,7 @@ usart2_write: .ascii "__UINTMAX_TYPE__ long long unsigned int\000" .LASF284: .ascii "__ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR\000" -.LASF938: +.LASF955: .ascii "USART_SR_RXNE_READY (1 <> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" -.LASF899: +.LASF890: + .ascii "RCC_CFGR_MCO1PRE_DIV4 (0b110)\000" +.LASF912: .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" -.LASF884: +.LASF897: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF646: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" -.LASF912: +.LASF928: .ascii "GPIO_MODER_MODER3_MASK (0b11)\000" .LASF624: .ascii "UINT_FAST64_MAX (__UINT_FAST64_MAX__)\000" @@ -5546,22 +5629,24 @@ usart2_write: .ascii "__SACCUM_FBIT__ 7\000" .LASF734: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF969: +.LASF986: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF975: +.LASF992: .ascii "APB1ENR\000" .LASF698: .ascii "PRIiFAST8 __PRI8FAST(i)\000" .LASF742: .ascii "SCNdFAST16 __SCN16FAST(d)\000" -.LASF867: +.LASF887: + .ascii "RCC_CFGR_MCO1_BIT 21\000" +.LASF869: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" -.LASF934: +.LASF951: .ascii "USART_SR_TXE_TRANSMITTED (1 << USART_SR_TXE_BIT)\000" .LASF788: .ascii "__PRI64LEAST(x) __LEAST64 __STRINGIFY(x)\000" @@ -5581,18 +5666,18 @@ usart2_write: .ascii "__NEWLIB_PATCHLEVEL__ 0\000" .LASF26: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" -.LASF869: +.LASF871: .ascii "RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT" .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF960: +.LASF977: .ascii "long long unsigned int\000" .LASF612: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" .LASF150: .ascii "__FLT_MIN_10_EXP__ (-37)\000" -.LASF890: +.LASF903: .ascii "RCC_CFGR_SWS_MASK (0b11)\000" .LASF312: .ascii "__ULACCUM_IBIT__ 32\000" @@ -5618,6 +5703,8 @@ usart2_write: .ascii "SCNdFAST32 __SCN32FAST(d)\000" .LASF339: .ascii "__UHQ_IBIT__ 0\000" +.LASF927: + .ascii "GPIO_MODER_MODER3_BIT 6\000" .LASF370: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF60: @@ -5630,7 +5717,7 @@ usart2_write: .ascii "__SACCUM_MIN__ (-0X1P7HK-0X1P7HK)\000" .LASF274: .ascii "__ULFRACT_MAX__ 0XFFFFFFFFP-32ULR\000" -.LASF875: +.LASF878: .ascii "RCC_PLLCFGR_PLLN(n) ((n & RCC_PLLCFGR_PLLN_MASK) <<" .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: @@ -5641,7 +5728,7 @@ usart2_write: .ascii "__LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" -.LASF936: +.LASF953: .ascii "USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT)\000" .LASF231: .ascii "__FLT32X_DIG__ 15\000" @@ -5675,11 +5762,11 @@ usart2_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF577: .ascii "_UINTPTR_T_DECLARED \000" -.LASF997: +.LASF1014: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF996: +.LASF1013: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -5687,6 +5774,8 @@ usart2_write: .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: @@ -5705,13 +5794,10 @@ usart2_write: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF744: .ascii "SCNoFAST16 __SCN16FAST(o)\000" -.LASF1003: +.LASF1020: .ascii "usart2_init\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" -.LASF925: - .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" - .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF348: .ascii "__SA_FBIT__ 15\000" .LASF661: @@ -5736,7 +5822,7 @@ usart2_write: .ascii "PRIi16 __PRI16(i)\000" .LASF390: .ascii "__ARM_FEATURE_DSP 1\000" -.LASF942: +.LASF959: .ascii "USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT)\000" .LASF826: .ascii "__SCNMAX(x) __STRINGIFY(ll ##x)\000" @@ -5744,7 +5830,7 @@ usart2_write: .ascii "__QQ_IBIT__ 0\000" .LASF764: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF991: +.LASF1008: .ascii "OTYPER\000" .LASF812: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -5766,21 +5852,21 @@ usart2_write: .ascii "RCC_H_ \000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF923: +.LASF940: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" .LASF512: .ascii "short\000" -.LASF948: +.LASF965: .ascii "USART_BRR_MANTISSA_MASK (0b111111111111)\000" -.LASF937: +.LASF954: .ascii "USART_SR_RXNE_BIT 5\000" .LASF436: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF972: +.LASF989: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5820,11 +5906,11 @@ usart2_write: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF967: +.LASF984: .ascii "AHB2RSTR\000" .LASF672: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" -.LASF882: +.LASF895: .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" @@ -5840,7 +5926,7 @@ usart2_write: .ascii "_FVWRITE_IN_STREAMIO 1\000" .LASF833: .ascii "SCNdMAX __SCNMAX(d)\000" -.LASF920: +.LASF937: .ascii "GPIO_AFRL_AFRL2_BIT 8\000" .LASF190: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" @@ -5852,11 +5938,11 @@ usart2_write: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF993: +.LASF1010: .ascii "PUPDR\000" .LASF836: .ascii "SCNuMAX __SCNMAX(u)\000" -.LASF932: +.LASF949: .ascii "USART2 ((struct usart *) USART2_BASE_ADDR)\000" .LASF121: .ascii "__UINT16_C(c) c\000" @@ -5864,12 +5950,12 @@ usart2_write: .ascii "__UDA_IBIT__ 32\000" .LASF535: .ascii "__LEAST16 \"h\"\000" -.LASF877: +.LASF880: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF587: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" -.LASF935: - .ascii "USART_SR_TC_BIT 6\000" +.LASF884: + .ascii "RCC_CFGR_MCO1_HSI (0b00)\000" .LASF711: .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" .LASF607: @@ -5886,6 +5972,8 @@ usart2_write: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" .LASF609: .ascii "UINT64_MAX (__UINT64_MAX__)\000" +.LASF932: + .ascii "GPIO_AFRH_AFRH8_MASK (0b1111)\000" .LASF472: .ascii "_RETARGETABLE_LOCKING 1\000" .LASF440: @@ -5910,7 +5998,7 @@ usart2_write: .ascii "__INT16_MAX__ 0x7fff\000" .LASF479: .ascii "__SYS_CONFIG_H__ \000" -.LASF876: +.LASF879: .ascii "RCC_PLLCFGR_PLLM_BIT 0\000" .LASF8: .ascii "__VERSION__ \"12.3.1 20230626\"\000" @@ -5920,7 +6008,7 @@ usart2_write: .ascii "__FAST8 \000" .LASF497: .ascii "__XSI_VISIBLE 0\000" -.LASF994: +.LASF1011: .ascii "BSRR\000" .LASF795: .ascii "PRIu64 __PRI64(u)\000" @@ -5946,7 +6034,7 @@ usart2_write: .ascii "PRIdMAX __PRIMAX(d)\000" .LASF388: .ascii "__SIZEOF_WINT_T__ 4\000" -.LASF881: +.LASF894: .ascii "RCC_CFGR_PPRE2_BIT 13\000" .LASF783: .ascii "SCNoFAST32 __SCN32FAST(o)\000" @@ -5958,6 +6046,9 @@ usart2_write: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF702: .ascii "PRIXFAST8 __PRI8FAST(X)\000" +.LASF907: + .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: @@ -6004,7 +6095,7 @@ usart2_write: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF665: .ascii "_BSD_WCHAR_T_\000" -.LASF987: +.LASF1004: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -6014,9 +6105,9 @@ usart2_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF963: +.LASF980: .ascii "uint32_t\000" -.LASF873: +.LASF876: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" .LASF690: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -6050,9 +6141,11 @@ usart2_write: .ascii "__ULACCUM_EPSILON__ 0x1P-32ULK\000" .LASF181: .ascii "__LDBL_DIG__ 15\000" +.LASF889: + .ascii "RCC_CFGR_MCO1PRE_DIV5 (0b111)\000" .LASF89: .ascii "__SIZE_WIDTH__ 32\000" -.LASF871: +.LASF874: .ascii "RCC_PLLCFGR_PLLP_MASK (0b11)\000" .LASF481: .ascii "_SUPPORTS_ERREXCEPT \000" @@ -6068,13 +6161,13 @@ usart2_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF326: .ascii "__QQ_FBIT__ 7\000" -.LASF928: +.LASF945: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF769: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF954: +.LASF971: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6082,7 +6175,7 @@ usart2_write: .ascii "__FLT32_HAS_INFINITY__ 1\000" .LASF416: .ascii "__thumb__ 1\000" -.LASF947: +.LASF964: .ascii "USART_BRR_MANTISSA_BIT 4\000" .LASF421: .ascii "__ARMEL__ 1\000" @@ -6090,22 +6183,25 @@ usart2_write: .ascii "PRIXLEAST8 __PRI8LEAST(X)\000" .LASF328: .ascii "__HQ_FBIT__ 15\000" -.LASF908: +.LASF921: .ascii "__bool_true_false_are_defined 1\000" -.LASF941: +.LASF958: .ascii "USART_CR1_UE_BIT 13\000" -.LASF911: - .ascii "GPIO_MODER_MODER3_BIT 7\000" +.LASF942: + .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" + .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF799: .ascii "SCNi64 __SCN64(i)\000" -.LASF861: +.LASF863: .ascii "RCC_CR_HSIRDY_BIT 1\000" .LASF80: .ascii "__SIZE_MAX__ 0xffffffffU\000" -.LASF1000: +.LASF1017: .ascii "usart2_write\000" .LASF819: .ascii "PRIXFAST64 __PRI64FAST(X)\000" +.LASF858: + .ascii "RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT)\000" .LASF412: .ascii "__ARM_ARCH\000" .LASF591: @@ -6122,7 +6218,7 @@ usart2_write: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF523: .ascii "long +4\000" -.LASF966: +.LASF983: .ascii "AHB1RSTR\000" .LASF724: .ascii "SCNx16 __SCN16(x)\000" @@ -6132,7 +6228,7 @@ usart2_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF1006: +.LASF1023: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF797: .ascii "PRIX64 __PRI64(X)\000" @@ -6172,7 +6268,7 @@ usart2_write: .ascii "__DBL_MIN_10_EXP__ (-307)\000" .LASF796: .ascii "PRIx64 __PRI64(x)\000" -.LASF943: +.LASF960: .ascii "USART_CR1_TE_BIT 3\000" .LASF513: .ascii "__int20\000" @@ -6180,7 +6276,7 @@ usart2_write: .ascii "INT_FAST32_MAX (__INT_FAST32_MAX__)\000" .LASF205: .ascii "__FLT32_NORM_MAX__ 3.4028234663852886e+38F32\000" -.LASF905: +.LASF918: .ascii "bool _Bool\000" .LASF632: .ascii "PTRDIFF_MIN (-PTRDIFF_MAX - 1)\000" @@ -6190,7 +6286,7 @@ usart2_write: .ascii "__DBL_MANT_DIG__ 53\000" .LASF272: .ascii "__ULFRACT_IBIT__ 0\000" -.LASF887: +.LASF900: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: .ascii "__INT_MAX__ 0x7fffffff\000" diff --git a/build/usart.i b/build/usart.i index 4a86ecc..f246bca 100644 --- a/build/usart.i +++ b/build/usart.i @@ -2014,6 +2014,11 @@ struct rcc { #define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) +#define RCC_CR_CSS_BIT 19 +#define RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT) + + + #define RCC_CR_HSERDY_BIT 17 #define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) @@ -2036,6 +2041,7 @@ struct rcc { #define RCC_PLLCFGR_PLLSRC_BIT 22 #define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT) +#define RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT) #define RCC_PLLCFGR_PLLP_BIT 16 #define RCC_PLLCFGR_PLLP_MASK (0b11) @@ -2055,6 +2061,21 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_2 (0b100) +#define RCC_CFGR_MCO1_HSI (0b00) +#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_DIV5 (0b111) +#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) @@ -2075,6 +2096,7 @@ struct rcc { #define RCC_CFGR_SWS_MASK (0b11) +#define RCC_CFGR_SW_PLL (0b10) #define RCC_CFGR_SW_PLL (0b10) #define RCC_CFGR_SW_BIT 0 @@ -2132,13 +2154,21 @@ struct gpio { #define GPIOA ((struct gpio *) GPIOA_BASE_ADDR) -#define GPIO_MODER_MODER3_BIT 7 +#define GPIO_MODER_AF_MODE (0b10) + +#define GPIO_MODER_MODER8_BIT 16 +#define GPIO_MODER_MODER8_MASK (0b11) + +#define GPIO_MODER_MODER3_BIT 6 #define GPIO_MODER_MODER3_MASK (0b11) -#define GPIO_MODER_MODER3_AF (0b10) #define GPIO_MODER_MODER2_BIT 4 #define GPIO_MODER_MODER2_MASK (0b11) -#define GPIO_MODER_MODER2_AF (0b10) + + +#define GPIO_AFRH_AFRH8_BIT 0 +#define GPIO_AFRH_AFRH8_MASK (0b1111) +#define GPIO_AFRH_AFRH8_MCO_1 (0b0000) #define GPIO_AFRL_AFRL3_BIT 12 @@ -2173,9 +2203,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 64 "src/gpio.h" 3 4 +# 72 "src/gpio.h" 3 4 _Bool -# 64 "src/gpio.h" +# 72 "src/gpio.h" val); # 3 "src/usart.c" 2 # 1 "src/usart.h" 1 @@ -2250,8 +2280,8 @@ void usart2_init(void) { ((struct gpio *) (0x40020000U))->MODER &= ~((0b11) << 4); ((struct gpio *) (0x40020000U))->MODER |= ((0b10) << 4); - ((struct gpio *) (0x40020000U))->MODER &= ~((0b11) << 7); - ((struct gpio *) (0x40020000U))->MODER |= ((0b10) << 7); + ((struct gpio *) (0x40020000U))->MODER &= ~((0b11) << 6); + ((struct gpio *) (0x40020000U))->MODER |= ((0b10) << 6); ((struct gpio *) (0x40020000U))->AFRL &= ~((0b1111) << 8); @@ -2260,19 +2290,22 @@ void usart2_init(void) { ((struct gpio *) (0x40020000U))->AFRL |= ((0b0111) << 12); + ((struct gpio *) (0x40020000U))->MODER &= ~((0b11) << 16); + ((struct gpio *) (0x40020000U))->MODER |= ((0b10) << 16); + + + ((struct gpio *) (0x40020000U))->AFRH &= ~((0b1111) << 0); + ((struct gpio *) (0x40020000U))->AFRH |= ((0b0000) << 0); + + ((struct rcc *) (0x40023800U))->APB1ENR |= (1 << 17); ((struct usart *) (0x40004400U))->CR1 = 0; ((struct usart *) (0x40004400U))->CR2 = 0; ((struct usart *) (0x40004400U))->CR3 = 0; -# 54 "src/usart.c" - ((struct usart *) (0x40004400U))->BRR &= ~((0b111111111111) << 4); - ((struct usart *) (0x40004400U))->BRR |= (0x34 << 4); - - - ((struct usart *) (0x40004400U))->BRR &= ~((0b111) << 0); - ((struct usart *) (0x40004400U))->BRR |= (0x0 << 0); +# 71 "src/usart.c" + ((struct usart *) (0x40004400U))->BRR |= 417; ((struct usart *) (0x40004400U))->CR1 |= (1 << 3); @@ -2288,8 +2321,8 @@ void usart2_write_byte(uint8_t c) { ((struct usart *) (0x40004400U))->DR = c; - while ((((struct usart *) (0x40004400U))->SR & (1 << 7)) == 0); + while (!(((struct usart *) (0x40004400U))->SR & (1 << 6))); } void usart2_write(char *buf) { diff --git a/build/usart.o b/build/usart.o index 6e26695..0ef9ead 100644 Binary files a/build/usart.o and b/build/usart.o differ diff --git a/src/gpio.h b/src/gpio.h index 33ef79b..d8edb76 100644 --- a/src/gpio.h +++ b/src/gpio.h @@ -21,22 +21,30 @@ struct gpio { #define GPIOA ((struct gpio *) GPIOA_BASE_ADDR) // MODER register -#define GPIO_MODER_MODER3_BIT 7 // Bits [7:6] +#define GPIO_MODER_AF_MODE (0b10) + +#define GPIO_MODER_MODER8_BIT 16 // Bits [17:16] +#define GPIO_MODER_MODER8_MASK (0b11) + +#define GPIO_MODER_MODER3_BIT 6 // Bits [7:6] #define GPIO_MODER_MODER3_MASK (0b11) -#define GPIO_MODER_MODER3_AF (0b10) #define GPIO_MODER_MODER2_BIT 4 // Bits [5:4] #define GPIO_MODER_MODER2_MASK (0b11) -#define GPIO_MODER_MODER2_AF (0b10) + +// AFRH register +#define GPIO_AFRH_AFRH8_BIT 0 // Bits [3:0] +#define GPIO_AFRH_AFRH8_MASK (0b1111) +#define GPIO_AFRH_AFRH8_MCO_1 (0b0000) // Alternative function 0 (AF0) // AFRL register #define GPIO_AFRL_AFRL3_BIT 12 // Bits [15:12] #define GPIO_AFRL_AFRL3_MASK (0b1111) -#define GPIO_AFRL_AFRL3_USART2_RX (0b0111) // Alternative function 7 +#define GPIO_AFRL_AFRL3_USART2_RX (0b0111) // Alternative function 7 (AF7) #define GPIO_AFRL_AFRL2_BIT 8 // Bits [11:8] #define GPIO_AFRL_AFRL2_MASK (0b1111) -#define GPIO_AFRL_AFRL2_USART2_TX (0b0111) // Alternative function 7 +#define GPIO_AFRL_AFRL2_USART2_TX (0b0111) // Alternative function 7 (AF7) diff --git a/src/main.c b/src/main.c index 41d2b1b..4cb4592 100644 --- a/src/main.c +++ b/src/main.c @@ -18,9 +18,24 @@ 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; + + // Output HSE clock + /* RCC->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_MCO1_HSI << RCC_CFGR_MCO1_BIT); */ + + /* RCC->CFGR &= ~(RCC_CFGR_MCO1PRE_MASK << RCC_CFGR_MCO1PRE_BIT); */ + /* RCC->CFGR |= (RCC_CFGR_MCO1PRE_DIV4 << RCC_CFGR_MCO1PRE_BIT); */ + // Turn on HSE RCC->CR |= RCC_CR_HSEON_ON; + // Turn on clock security system + RCC->CR |= RCC_CR_CSS_ON; + // Wait indefinitely for HSE to be ready // TODO indicate error/timeout somehow? while (!(RCC->CR & RCC_CR_HSERDY_READY)); @@ -30,6 +45,7 @@ static void system_clock_init(void) { RCC->CR &= ~RCC_CR_PLLON_ON; // Set HSE as PLL source + /* RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE; */ RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE; // Settings to achieve system clock of 96Mhz @@ -58,20 +74,17 @@ static void system_clock_init(void) { FLASH->ACR |= FLASH_ACR_DCEN_ENABLE; FLASH->ACR |= FLASH_ACR_ICEN_ENABLE; + // TODO breaks with these flash settings on; what were they intended to do? // 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_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? 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) { @@ -93,7 +106,7 @@ int main(void) { led_on = !led_on; gpio_write(led, led_on); - usart2_write("hello, world\n"); + usart2_write("hello, world!\n"); counter = TIM4->CNT; } diff --git a/src/rcc.h b/src/rcc.h index 045b533..89dfb21 100644 --- a/src/rcc.h +++ b/src/rcc.h @@ -46,6 +46,11 @@ struct rcc { #define RCC_CR_PLLON_BIT 24 #define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) +// Clock security system +#define RCC_CR_CSS_BIT 19 +#define RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT) + + // HSE clock ready flag #define RCC_CR_HSERDY_BIT 17 #define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) @@ -69,6 +74,7 @@ struct rcc { #define RCC_PLLCFGR_PLLSRC_BIT 22 #define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT) +#define RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT) #define RCC_PLLCFGR_PLLP_BIT 16 // Bits [17:16] #define RCC_PLLCFGR_PLLP_MASK (0b11) @@ -87,6 +93,21 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_NONE 0 #define RCC_CFGR_PPRE_DIV_2 (0b100) +// Microcontroller clock output 1 +#define RCC_CFGR_MCO1_HSI (0b00) +#define RCC_CFGR_MCO1_HSE (0b10) +#define RCC_CFGR_MCO1_PLL (0b11) + +#define RCC_CFGR_MCO1_BIT 21 // Bits [22:21] +#define RCC_CFGR_MCO1_MASK (0b11) + +#define RCC_CFGR_MCO1PRE_DIV5 (0b111) +#define RCC_CFGR_MCO1PRE_DIV4 (0b110) +#define RCC_CFGR_MCO1PRE_DIV2 (0b100) + +#define RCC_CFGR_MCO1PRE_BIT 24 // Bits [26:24] +#define RCC_CFGR_MCO1PRE_MASK (0b111) + // APB2 #define RCC_CFGR_PPRE2_BIT 13 // Bits [15:13] #define RCC_CFGR_PPRE2_MASK (0b111) @@ -109,6 +130,7 @@ struct rcc { // System clock switch #define RCC_CFGR_SW_PLL (0b10) +#define RCC_CFGR_SW_PLL (0b10) #define RCC_CFGR_SW_BIT 0 // Bits [1:0] #define RCC_CFGR_SW_MASK (0b11) 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; diff --git a/src/usart.c b/src/usart.c index 32bc316..9ea6c7e 100644 --- a/src/usart.c +++ b/src/usart.c @@ -9,9 +9,9 @@ void usart2_init(void) { // Configure PA2 and PA3 (USART2 pins) to use alternative functions // file:///home/alex/sync/org/stm32-sand/stm32f411ce.pdf#page=48 GPIOA->MODER &= ~(GPIO_MODER_MODER2_MASK << GPIO_MODER_MODER2_BIT); - GPIOA->MODER |= (GPIO_MODER_MODER2_AF << GPIO_MODER_MODER2_BIT); + GPIOA->MODER |= (GPIO_MODER_AF_MODE << GPIO_MODER_MODER2_BIT); GPIOA->MODER &= ~(GPIO_MODER_MODER3_MASK << GPIO_MODER_MODER3_BIT); - GPIOA->MODER |= (GPIO_MODER_MODER3_AF << GPIO_MODER_MODER3_BIT); + GPIOA->MODER |= (GPIO_MODER_AF_MODE << GPIO_MODER_MODER3_BIT); // Set pin alternative modes to use USART GPIOA->AFRL &= ~(GPIO_AFRL_AFRL2_MASK << GPIO_AFRL_AFRL2_BIT); @@ -19,6 +19,14 @@ void usart2_init(void) { GPIOA->AFRL &= ~(GPIO_AFRL_AFRL3_MASK << GPIO_AFRL_AFRL3_BIT); GPIOA->AFRL |= (GPIO_AFRL_AFRL3_USART2_RX << GPIO_AFRL_AFRL3_BIT); + // Configure PA8 to output HSE (MCO1) + GPIOA->MODER &= ~(GPIO_MODER_MODER8_MASK << GPIO_MODER_MODER8_BIT); + GPIOA->MODER |= (GPIO_MODER_AF_MODE << GPIO_MODER_MODER8_BIT); + + // Set pin alternative mode to use MCO1 + GPIOA->AFRH &= ~(GPIO_AFRH_AFRH8_MASK << GPIO_AFRH_AFRH8_BIT); + GPIOA->AFRH |= (GPIO_AFRH_AFRH8_MCO_1 << GPIO_AFRH_AFRH8_BIT); + // Enable USART RCC->APB1ENR |= RCC_APB1ENR_USART2EN_ENABLE; @@ -30,33 +38,37 @@ void usart2_init(void) { // 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 + // Target Baud rate = 115200, f_clock = 48MHz,OVER8 = 0 - // With OVER8 = 1 (oversampling by 8) - // USARTDIV = (48E6 / (115200 * (8 * (2 - 0)))) = 26.0416666 - // mantissa = 26 - // fraction = 0.041666 * 8 = 0.33328 ~= 0 + // USARTDIV = (48E6 / (115200 * (8 * 2))) = 26.0416666 + // mantissa = 26 = 0x1A + // fraction = 0.041666 * 16 = 0.666656 ~= 1 - // rounding fraction up: USARTDIV = 26 // baud = 48E6 / (8 * 2 * 26) = 115384.61538461539 // error of 0.001% (115384.61538461539 / 115200 ) = 1.001602564102564 + // f_clock = USARTDIV * (baud * (8 * 2) + // f_clock = 26 * 115200 * 16 = 47923200 = 48MHz - // baud = f_clck / (8 * (2 - OVER8) * USARTDIV) */ - // baud * ((8 * (2 - OVER8) * USARTDIV)) = f_clck */ - // 393400 * (8 * 2 * 26) = 163654400 + // fclk = 13 * 115200 * 16 + + + // Baud = 9600 + // USARTDIV = (48E6 / (9600 * (8 * 2))) = 312.5 + // mantissa = 312 = 0x138 + // fraction = 0.5 * 16 = 8 = 0x8 + // BRR = 0x1388 /* USART2->CR1 |= USART_CR1_OVER8_8; */ - USART2->BRR &= ~(USART_BRR_MANTISSA_MASK << USART_BRR_MANTISSA_BIT); - USART2->BRR |= (0x34 << USART_BRR_MANTISSA_BIT); - /* USART2->BRR |= (0x69 << USART_BRR_MANTISSA_BIT); */ + /* 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_FRACTION_BIT); + /* USART2->BRR &= ~(USART_BRR_FRACTION_MASK << USART_BRR_FRACTION_BIT); */ + USART2->BRR |= 417; // Enable transmitter and receiver USART2->CR1 |= USART_CR1_TE_ENABLE; @@ -72,8 +84,8 @@ void usart2_write_byte(uint8_t c) { USART2->DR = c; // Wait indefinitely for transmission to be ready for data - while ((USART2->SR & USART_SR_TXE_TRANSMITTED) == 0); - /* while (!(USART2->SR & USART_SR_TC_COMPLETED)); */ + /* while ((USART2->SR & USART_SR_TXE_TRANSMITTED) == 0); */ + while (!(USART2->SR & USART_SR_TC_COMPLETED)); } void usart2_write(char *buf) { diff --git a/src/usart.h b/src/usart.h index c44a0ad..48a121d 100644 --- a/src/usart.h +++ b/src/usart.h @@ -49,10 +49,10 @@ struct usart { // BRR Register #define USART_BRR_MANTISSA_BIT 4 // Bits [15:4] -#define USART_BRR_MANTISSA_MASK (0b111111111111) // Bits [15:4] +#define USART_BRR_MANTISSA_MASK (0b111111111111) #define USART_BRR_FRACTION_BIT 0 // Bits [3:0] -#define USART_BRR_FRACTION_MASK (0b111) // Bits [3:0] +#define USART_BRR_FRACTION_MASK (0b111) void usart2_init(void); void usart2_start(void);