diff --git a/build/final.elf b/build/final.elf index e72a153..b9785a1 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 97283df..5718856 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -52,7 +52,7 @@ Discarded input sections .debug_macro 0x00000000 0x89 build/main.o .debug_macro 0x00000000 0x4cc build/main.o .debug_macro 0x00000000 0x22 build/main.o - .debug_macro 0x00000000 0x2e build/main.o + .debug_macro 0x00000000 0x34 build/main.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o @@ -294,7 +294,7 @@ LOAD linker stubs .debug_rnglists 0x00000053 0x19 build/timer.o -.debug_macro 0x00000000 0x3b9a +.debug_macro 0x00000000 0x3ba0 .debug_macro 0x00000000 0xb56 build/gpio.o .debug_macro 0x00000b56 0x22 build/gpio.o .debug_macro 0x00000b78 0x75 build/gpio.o @@ -309,17 +309,17 @@ LOAD linker stubs .debug_macro 0x0000108c 0x89 build/gpio.o .debug_macro 0x00001115 0x4cc build/gpio.o .debug_macro 0x000015e1 0x22 build/gpio.o - .debug_macro 0x00001603 0x2e build/gpio.o - .debug_macro 0x00001631 0xb80 build/main.o - .debug_macro 0x000021b1 0x12a build/main.o - .debug_macro 0x000022db 0x46 build/main.o - .debug_macro 0x00002321 0x2e build/main.o - .debug_macro 0x0000234f 0x22 build/main.o - .debug_macro 0x00002371 0xb02 build/startup.o - .debug_macro 0x00002e73 0x56 build/startup.o - .debug_macro 0x00002ec9 0x51 build/startup.o - .debug_macro 0x00002f1a 0xb5c build/timer.o - .debug_macro 0x00003a76 0x124 build/timer.o + .debug_macro 0x00001603 0x34 build/gpio.o + .debug_macro 0x00001637 0xb80 build/main.o + .debug_macro 0x000021b7 0x12a build/main.o + .debug_macro 0x000022e1 0x46 build/main.o + .debug_macro 0x00002327 0x2e build/main.o + .debug_macro 0x00002355 0x22 build/main.o + .debug_macro 0x00002377 0xb02 build/startup.o + .debug_macro 0x00002e79 0x56 build/startup.o + .debug_macro 0x00002ecf 0x51 build/startup.o + .debug_macro 0x00002f20 0xb5c build/timer.o + .debug_macro 0x00003a7c 0x124 build/timer.o .debug_line 0x00000000 0x4b3 .debug_line 0x00000000 0x116 build/gpio.o @@ -327,14 +327,14 @@ LOAD linker stubs .debug_line 0x000002ea 0xea build/startup.o .debug_line 0x000003d4 0xdf build/timer.o -.debug_str 0x00000000 0x5ea4 - .debug_str 0x00000000 0x535f build/gpio.o - 0x5507 (size before relaxing) - .debug_str 0x0000535f 0xab1 build/main.o - 0x5f68 (size before relaxing) - .debug_str 0x00005e10 0x88 build/startup.o +.debug_str 0x00000000 0x5eba + .debug_str 0x00000000 0x5375 build/gpio.o + 0x551d (size before relaxing) + .debug_str 0x00005375 0xab1 build/main.o + 0x5f7e (size before relaxing) + .debug_str 0x00005e26 0x88 build/startup.o 0x3cdc (size before relaxing) - .debug_str 0x00005e98 0xc build/timer.o + .debug_str 0x00005eae 0xc build/timer.o 0x5b16 (size before relaxing) .comment 0x00000000 0x45 diff --git a/build/gpio.S b/build/gpio.S index 0b828f1..499cfd0 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -188,10 +188,10 @@ gpio_write: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x8 - .4byte .LASF893 - .byte 0x1d .4byte .LASF894 + .byte 0x1d .4byte .LASF895 + .4byte .LASF896 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -199,17 +199,17 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x6 - .4byte .LASF862 + .4byte .LASF863 .uleb128 0x1 .byte 0x1 .byte 0x8 - .4byte .LASF863 + .4byte .LASF864 .uleb128 0x1 .byte 0x2 .byte 0x5 - .4byte .LASF864 + .4byte .LASF865 .uleb128 0x3 - .4byte .LASF867 + .4byte .LASF868 .byte 0x2 .byte 0x39 .byte 0x1c @@ -217,13 +217,13 @@ gpio_write: .uleb128 0x1 .byte 0x2 .byte 0x7 - .4byte .LASF865 + .4byte .LASF866 .uleb128 0x1 .byte 0x4 .byte 0x5 - .4byte .LASF866 + .4byte .LASF867 .uleb128 0x3 - .4byte .LASF868 + .4byte .LASF869 .byte 0x2 .byte 0x4f .byte 0x1b @@ -231,21 +231,21 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF869 - .uleb128 0x1 - .byte 0x8 - .byte 0x5 .4byte .LASF870 .uleb128 0x1 .byte 0x8 - .byte 0x7 + .byte 0x5 .4byte .LASF871 + .uleb128 0x1 + .byte 0x8 + .byte 0x7 + .4byte .LASF872 .uleb128 0x9 .byte 0x4 .byte 0x5 .ascii "int\000" .uleb128 0x3 - .4byte .LASF872 + .4byte .LASF873 .byte 0x2 .byte 0xe8 .byte 0x16 @@ -253,15 +253,15 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF873 - .uleb128 0x3 .4byte .LASF874 + .uleb128 0x3 + .4byte .LASF875 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x3 - .4byte .LASF875 + .4byte .LASF876 .byte 0x3 .byte 0x30 .byte 0x14 @@ -269,35 +269,35 @@ gpio_write: .uleb128 0xa .4byte 0xa0 .uleb128 0x3 - .4byte .LASF876 + .4byte .LASF877 .byte 0x3 .byte 0x52 .byte 0x15 .4byte 0x81 .uleb128 0xb - .4byte .LASF892 + .4byte .LASF893 .byte 0x28 .byte 0x4 .byte 0x7 .byte 0x8 .4byte 0x139 .uleb128 0x2 - .4byte .LASF877 + .4byte .LASF878 .byte 0x8 .4byte 0xac .byte 0 .uleb128 0x2 - .4byte .LASF878 + .4byte .LASF879 .byte 0x9 .4byte 0xac .byte 0x4 .uleb128 0x2 - .4byte .LASF879 + .4byte .LASF880 .byte 0xa .4byte 0xac .byte 0x8 .uleb128 0x2 - .4byte .LASF880 + .4byte .LASF881 .byte 0xb .4byte 0xac .byte 0xc @@ -312,22 +312,22 @@ gpio_write: .4byte 0xac .byte 0x14 .uleb128 0x2 - .4byte .LASF881 + .4byte .LASF882 .byte 0xe .4byte 0xac .byte 0x18 .uleb128 0x2 - .4byte .LASF882 + .4byte .LASF883 .byte 0xf .4byte 0xac .byte 0x1c .uleb128 0x2 - .4byte .LASF883 + .4byte .LASF884 .byte 0x10 .4byte 0xac .byte 0x20 .uleb128 0x2 - .4byte .LASF884 + .4byte .LASF885 .byte 0x11 .4byte 0xac .byte 0x24 @@ -337,30 +337,30 @@ gpio_write: .byte 0x1 .4byte 0x31 .byte 0x4 - .byte 0x1f + .byte 0x21 .byte 0xe .4byte 0x160 .uleb128 0x4 - .4byte .LASF885 + .4byte .LASF886 .byte 0 .uleb128 0x4 - .4byte .LASF886 + .4byte .LASF887 .byte 0x1 .uleb128 0x4 - .4byte .LASF887 + .4byte .LASF888 .byte 0x2 .uleb128 0x4 - .4byte .LASF888 + .4byte .LASF889 .byte 0x3 .byte 0 .uleb128 0x3 - .4byte .LASF889 + .4byte .LASF890 .byte 0x4 - .byte 0x24 + .byte 0x26 .byte 0x3 .4byte 0x139 .uleb128 0xd - .4byte .LASF896 + .4byte .LASF897 .byte 0x1 .byte 0xd .byte 0x6 @@ -386,7 +386,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x7 - .4byte .LASF892 + .4byte .LASF893 .byte 0xe .4byte 0x1b3 .uleb128 0x2 @@ -396,12 +396,12 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x2 - .4byte .LASF890 + .4byte .LASF891 .uleb128 0xe .byte 0x4 .4byte 0xbd .uleb128 0xf - .4byte .LASF897 + .4byte .LASF898 .byte 0x1 .byte 0x6 .byte 0x6 @@ -418,7 +418,7 @@ gpio_write: .byte 0x91 .sleb128 -18 .uleb128 0x10 - .4byte .LASF891 + .4byte .LASF892 .byte 0x1 .byte 0x6 .byte 0x2c @@ -427,7 +427,7 @@ gpio_write: .byte 0x91 .sleb128 -19 .uleb128 0x7 - .4byte .LASF892 + .4byte .LASF893 .byte 0x7 .4byte 0x1b3 .uleb128 0x2 @@ -3525,7 +3525,7 @@ gpio_write: .uleb128 0x32 .4byte .LASF854 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.ca8518d3facb6a329deaeb59004fd0a1,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.3af2911851c1c29c51024d0f06788d31,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -3550,6 +3550,9 @@ gpio_write: .byte 0x5 .uleb128 0x1d .4byte .LASF861 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF862 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3594,7 +3597,7 @@ gpio_write: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF541: .ascii "_LONG_DOUBLE long double\000" -.LASF892: +.LASF893: .ascii "gpio\000" .LASF591: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -3602,7 +3605,7 @@ gpio_write: .ascii "_UINT32_T_DECLARED \000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF887: +.LASF888: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -3716,7 +3719,7 @@ gpio_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF893: +.LASF894: .ascii "GNU C2X 12.3.1 20230626 -mcpu=cortex-m4 -mthumb -mf" .ascii "loat-abi=hard -mfpu=fpv4-sp-d16 -march=armv7e-m+fp " .ascii "-g3 -ggdb -O0 -std=c2x -ffunction-sections -fdata-s" @@ -3837,7 +3840,7 @@ gpio_write: .ascii "PRId64 __PRI64(d)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF866: +.LASF867: .ascii "long int\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" @@ -3933,7 +3936,7 @@ gpio_write: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF885: +.LASF886: .ascii "GPIO_MODE_INPUT\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -3943,7 +3946,7 @@ gpio_write: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF562: .ascii "_UINT8_T_DECLARED \000" -.LASF862: +.LASF863: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -3955,7 +3958,7 @@ gpio_write: .ascii "__ARM_FEATURE_FMA 1\000" .LASF364: .ascii "__GNUC_STDC_INLINE__ 1\000" -.LASF889: +.LASF890: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -3979,7 +3982,7 @@ gpio_write: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF65: .ascii "__UINT_FAST32_TYPE__ unsigned int\000" -.LASF863: +.LASF864: .ascii "unsigned char\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" @@ -4027,13 +4030,13 @@ gpio_write: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF874: +.LASF875: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF890: +.LASF891: .ascii "_Bool\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" @@ -4051,7 +4054,9 @@ gpio_write: .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF886: +.LASF859: + .ascii "PORT(port) (((port) - 'A') << 8)\000" +.LASF887: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4089,7 +4094,7 @@ gpio_write: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF867: +.LASF868: .ascii "__uint16_t\000" .LASF224: .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" @@ -4145,8 +4150,6 @@ gpio_write: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF376: .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" -.LASF859: - .ascii "PIN(port,num) ((((port) - 'A') << 8) | num)\000" .LASF806: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" .LASF419: @@ -4301,7 +4304,7 @@ gpio_write: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF869: +.LASF870: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4317,7 +4320,7 @@ gpio_write: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF896: +.LASF897: .ascii "gpio_write\000" .LASF569: .ascii "__int32_t_defined 1\000" @@ -4361,7 +4364,7 @@ gpio_write: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF897: +.LASF898: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -4381,7 +4384,7 @@ gpio_write: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF876: +.LASF877: .ascii "uintptr_t\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4429,7 +4432,7 @@ gpio_write: .ascii "PRIX32 __PRI32(X)\000" .LASF773: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF879: +.LASF880: .ascii "OSPEEDR\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" @@ -4459,7 +4462,7 @@ gpio_write: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF868: +.LASF869: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4469,7 +4472,7 @@ gpio_write: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF870: +.LASF871: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4574,7 +4577,7 @@ gpio_write: .ascii "\000" .LASF582: .ascii "__int_fast16_t_defined 1\000" -.LASF877: +.LASF878: .ascii "MODER\000" .LASF482: .ascii "__FLOAT_TYPE float\000" @@ -4585,9 +4588,9 @@ gpio_write: .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF873: +.LASF874: .ascii "unsigned int\000" -.LASF872: +.LASF873: .ascii "__uintptr_t\000" .LASF459: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4619,7 +4622,7 @@ gpio_write: .ascii "__CHAR_BIT__ 8\000" .LASF143: .ascii "__FLT_EVAL_METHOD__ 0\000" -.LASF864: +.LASF865: .ascii "short int\000" .LASF685: .ascii "PRIdLEAST8 __PRI8LEAST(d)\000" @@ -4757,7 +4760,7 @@ gpio_write: .ascii "SCNuFAST16 __SCN16FAST(u)\000" .LASF801: .ascii "SCNx64 __SCN64(x)\000" -.LASF861: +.LASF862: .ascii "PINPORT(pin) (pin >> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" @@ -4805,7 +4808,7 @@ gpio_write: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF871: +.LASF872: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -4883,11 +4886,11 @@ gpio_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF576: .ascii "_UINTPTR_T_DECLARED \000" -.LASF884: +.LASF885: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF883: +.LASF884: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -4901,7 +4904,7 @@ gpio_write: .ascii "__INT32_TYPE__ long int\000" .LASF118: .ascii "__UINT_LEAST8_MAX__ 0xff\000" -.LASF882: +.LASF883: .ascii "LCKR\000" .LASF520: .ascii "__int20__ +2\000" @@ -4915,6 +4918,8 @@ gpio_write: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF860: + .ascii "PIN(port,num) (PORT(port) | num)\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -4947,7 +4952,7 @@ gpio_write: .ascii "__QQ_IBIT__ 0\000" .LASF763: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF878: +.LASF879: .ascii "OTYPER\000" .LASF811: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -4967,7 +4972,7 @@ gpio_write: .ascii "__GNUC_MINOR__ 3\000" .LASF57: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" -.LASF894: +.LASF895: .ascii "src/gpio.c\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" @@ -5041,7 +5046,7 @@ gpio_write: .ascii "__ACCUM_IBIT__ 16\000" .LASF509: .ascii "unsigned\000" -.LASF880: +.LASF881: .ascii "PUPDR\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5051,7 +5056,7 @@ gpio_write: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" -.LASF891: +.LASF892: .ascii "mode\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5065,7 +5070,7 @@ gpio_write: .ascii "__UHQ_FBIT__ 16\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF888: +.LASF889: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5103,7 +5108,7 @@ gpio_write: .ascii "__FAST8 \000" .LASF496: .ascii "__XSI_VISIBLE 0\000" -.LASF881: +.LASF882: .ascii "BSRR\000" .LASF794: .ascii "PRIu64 __PRI64(u)\000" @@ -5191,7 +5196,7 @@ gpio_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF875: +.LASF876: .ascii "uint32_t\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5239,13 +5244,13 @@ gpio_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF326: .ascii "__QQ_FBIT__ 7\000" -.LASF860: +.LASF861: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF865: +.LASF866: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5293,7 +5298,7 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF895: +.LASF896: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF249: .ascii "__SFRACT_MAX__ 0X7FP-7HR\000" diff --git a/build/gpio.i b/build/gpio.i index 348afd2..bd007eb 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -2004,7 +2004,9 @@ struct gpio { #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) -#define PIN(port,num) ((((port) - 'A') << 8) | num) +#define PORT(port) (((port) - 'A') << 8) + +#define PIN(port,num) (PORT(port) | num) #define PINNUM(pin) (pin & 0b1111) @@ -2019,9 +2021,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 39 "src/gpio.h" 3 4 +# 41 "src/gpio.h" 3 4 _Bool -# 39 "src/gpio.h" +# 41 "src/gpio.h" val); # 5 "src/gpio.c" 2 diff --git a/build/gpio.o b/build/gpio.o index 3483ab3..59a40c3 100644 Binary files a/build/gpio.o and b/build/gpio.o differ diff --git a/build/main.S b/build/main.S index 97dea73..72ecb9d 100644 --- a/build/main.S +++ b/build/main.S @@ -352,10 +352,10 @@ main: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0xd - .4byte .LASF1001 - .byte 0x1d .4byte .LASF1002 + .byte 0x1d .4byte .LASF1003 + .4byte .LASF1004 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -363,17 +363,17 @@ main: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF935 + .4byte .LASF936 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF936 + .4byte .LASF937 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF937 + .4byte .LASF938 .uleb128 0x4 - .4byte .LASF940 + .4byte .LASF941 .byte 0x2 .byte 0x39 .byte 0x1c @@ -381,13 +381,13 @@ main: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF938 + .4byte .LASF939 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF939 + .4byte .LASF940 .uleb128 0x4 - .4byte .LASF941 + .4byte .LASF942 .byte 0x2 .byte 0x4f .byte 0x1b @@ -395,15 +395,15 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF942 - .uleb128 0x3 - .byte 0x8 - .byte 0x5 .4byte .LASF943 .uleb128 0x3 .byte 0x8 - .byte 0x7 + .byte 0x5 .4byte .LASF944 + .uleb128 0x3 + .byte 0x8 + .byte 0x7 + .4byte .LASF945 .uleb128 0xe .byte 0x4 .byte 0x5 @@ -411,15 +411,15 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF945 - .uleb128 0x4 .4byte .LASF946 + .uleb128 0x4 + .4byte .LASF947 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF947 + .4byte .LASF948 .byte 0x3 .byte 0x30 .byte 0x14 @@ -438,13 +438,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF948 + .4byte .LASF949 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF949 + .4byte .LASF950 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -456,115 +456,115 @@ main: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF950 + .4byte .LASF951 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF951 + .4byte .LASF952 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF952 + .4byte .LASF953 .byte 0x4 .byte 0xd .4byte 0x210 .byte 0x18 .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF954 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF954 + .4byte .LASF955 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF955 + .4byte .LASF956 .byte 0x4 .byte 0x10 .4byte 0x210 .byte 0x28 .uleb128 0x1 - .4byte .LASF956 + .4byte .LASF957 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF957 + .4byte .LASF958 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF958 + .4byte .LASF959 .byte 0x4 .byte 0x13 .4byte 0x210 .byte 0x38 .uleb128 0x1 - .4byte .LASF959 + .4byte .LASF960 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF960 + .4byte .LASF961 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF961 + .4byte .LASF962 .byte 0x4 .byte 0x16 .4byte 0x210 .byte 0x48 .uleb128 0x1 - .4byte .LASF962 + .4byte .LASF963 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF963 + .4byte .LASF964 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF964 + .4byte .LASF965 .byte 0x4 .byte 0x19 .4byte 0x210 .byte 0x58 .uleb128 0x1 - .4byte .LASF965 + .4byte .LASF966 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF966 + .4byte .LASF967 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF967 + .4byte .LASF968 .byte 0x4 .byte 0x1c .4byte 0x210 .byte 0x68 .uleb128 0x1 - .4byte .LASF968 + .4byte .LASF969 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -576,25 +576,25 @@ main: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF969 + .4byte .LASF970 .byte 0x4 .byte 0x1f .4byte 0x210 .byte 0x78 .uleb128 0x1 - .4byte .LASF970 + .4byte .LASF971 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF971 + .4byte .LASF972 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF972 + .4byte .LASF973 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -614,30 +614,30 @@ main: .byte 0x1 .4byte 0x31 .byte 0x5 - .byte 0x1f + .byte 0x21 .byte 0xe .4byte 0x23c .uleb128 0x5 - .4byte .LASF973 + .4byte .LASF974 .byte 0 .uleb128 0x5 - .4byte .LASF974 + .4byte .LASF975 .byte 0x1 .uleb128 0x5 - .4byte .LASF975 + .4byte .LASF976 .byte 0x2 .uleb128 0x5 - .4byte .LASF976 + .4byte .LASF977 .byte 0x3 .byte 0 .uleb128 0x4 - .4byte .LASF977 + .4byte .LASF978 .byte 0x5 - .byte 0x24 + .byte 0x26 .byte 0x3 .4byte 0x215 .uleb128 0x9 - .4byte .LASF978 + .4byte .LASF979 .byte 0x18 .byte 0x6 .4byte 0x29a @@ -648,13 +648,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF979 + .4byte .LASF980 .byte 0x6 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF980 + .4byte .LASF981 .byte 0x6 .byte 0x9 .4byte 0xa0 @@ -672,7 +672,7 @@ main: .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF981 + .4byte .LASF982 .byte 0x6 .byte 0xc .4byte 0xa0 @@ -697,7 +697,7 @@ main: .byte 0x4 .byte 0 .uleb128 0x9 - .4byte .LASF982 + .4byte .LASF983 .byte 0x50 .byte 0x8 .4byte 0x3b8 @@ -714,13 +714,13 @@ main: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF983 + .4byte .LASF984 .byte 0x8 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF984 + .4byte .LASF985 .byte 0x8 .byte 0xa .4byte 0xa0 @@ -738,19 +738,19 @@ main: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF985 + .4byte .LASF986 .byte 0x8 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF986 + .4byte .LASF987 .byte 0x8 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF987 + .4byte .LASF988 .byte 0x8 .byte 0xf .4byte 0xa0 @@ -780,31 +780,31 @@ main: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF988 + .4byte .LASF989 .byte 0x8 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF989 + .4byte .LASF990 .byte 0x8 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF990 + .4byte .LASF991 .byte 0x8 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF991 + .4byte .LASF992 .byte 0x8 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF992 + .4byte .LASF993 .byte 0x8 .byte 0x18 .4byte 0xa0 @@ -816,15 +816,15 @@ main: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF993 + .4byte .LASF994 .byte 0x8 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 .uleb128 0xa - .4byte .LASF995 - .byte 0x27 + .4byte .LASF996 + .byte 0x29 .4byte 0x3cd .uleb128 0x6 .4byte 0x88 @@ -834,10 +834,10 @@ main: .uleb128 0x3 .byte 0x1 .byte 0x2 - .4byte .LASF994 + .4byte .LASF995 .uleb128 0xa - .4byte .LASF996 - .byte 0x26 + .4byte .LASF997 + .byte 0x28 .4byte 0x3e9 .uleb128 0x6 .4byte 0x88 @@ -845,13 +845,13 @@ main: .4byte 0x23c .byte 0 .uleb128 0xb - .4byte .LASF997 + .4byte .LASF998 .byte 0x24 .uleb128 0xb - .4byte .LASF998 + .4byte .LASF999 .byte 0x23 .uleb128 0x12 - .4byte .LASF1004 + .4byte .LASF1005 .byte 0x1 .byte 0x4b .byte 0x5 @@ -871,7 +871,7 @@ main: .byte 0x91 .sleb128 -14 .uleb128 0xc - .4byte .LASF999 + .4byte .LASF1000 .byte 0x55 .byte 0xc .4byte 0x88 @@ -879,7 +879,7 @@ main: .byte 0x91 .sleb128 -10 .uleb128 0xc - .4byte .LASF1000 + .4byte .LASF1001 .byte 0x56 .byte 0x7 .4byte 0x3cd @@ -888,7 +888,7 @@ main: .sleb128 -11 .byte 0 .uleb128 0x14 - .4byte .LASF1005 + .4byte .LASF1006 .byte 0x1 .byte 0xc .byte 0xd @@ -2768,7 +2768,7 @@ main: .byte 0x4 .byte 0x5 .uleb128 0xa - .4byte .LASF934 + .4byte .LASF935 .byte 0x4 .byte 0 .section .debug_macro,"G",%progbits,wm4._newlib_version.h.4.6d111ab2e95434b664b53815e5c8ccba,comdat @@ -4200,7 +4200,7 @@ main: .uleb128 0x7a .4byte .LASF903 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.ca8518d3facb6a329deaeb59004fd0a1,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.3af2911851c1c29c51024d0f06788d31,comdat .Ldebug_macro16: .2byte 0x5 .byte 0 @@ -4225,6 +4225,9 @@ main: .byte 0x5 .uleb128 0x1d .4byte .LASF910 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF911 .byte 0 .section .debug_macro,"G",%progbits,wm4.flash.h.2.51d6f0499046dca8c8d7cee08875e55f,comdat .Ldebug_macro17: @@ -4232,37 +4235,37 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF911 - .byte 0x5 - .uleb128 0xf .4byte .LASF912 .byte 0x5 - .uleb128 0x10 + .uleb128 0xf .4byte .LASF913 .byte 0x5 - .uleb128 0x14 + .uleb128 0x10 .4byte .LASF914 .byte 0x5 - .uleb128 0x15 + .uleb128 0x14 .4byte .LASF915 .byte 0x5 - .uleb128 0x18 + .uleb128 0x15 .4byte .LASF916 .byte 0x5 - .uleb128 0x19 + .uleb128 0x18 .4byte .LASF917 .byte 0x5 - .uleb128 0x1c + .uleb128 0x19 .4byte .LASF918 .byte 0x5 - .uleb128 0x1e + .uleb128 0x1c .4byte .LASF919 .byte 0x5 - .uleb128 0x1f + .uleb128 0x1e .4byte .LASF920 .byte 0x5 - .uleb128 0x20 + .uleb128 0x1f .4byte .LASF921 + .byte 0x5 + .uleb128 0x20 + .4byte .LASF922 .byte 0 .section .debug_macro,"G",%progbits,wm4.pwr.h.2.b22d01f8fafa27268c4600cc8f787804,comdat .Ldebug_macro18: @@ -4270,25 +4273,25 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF922 - .byte 0x5 - .uleb128 0xb .4byte .LASF923 .byte 0x5 - .uleb128 0xc + .uleb128 0xb .4byte .LASF924 .byte 0x5 - .uleb128 0xf + .uleb128 0xc .4byte .LASF925 .byte 0x5 - .uleb128 0x12 + .uleb128 0xf .4byte .LASF926 .byte 0x5 - .uleb128 0x13 + .uleb128 0x12 .4byte .LASF927 .byte 0x5 - .uleb128 0x14 + .uleb128 0x13 .4byte .LASF928 + .byte 0x5 + .uleb128 0x14 + .4byte .LASF929 .byte 0 .section .debug_macro,"G",%progbits,wm4.timer.h.2.2e929ede818fb0960868f1b0a08a1cbf,comdat .Ldebug_macro19: @@ -4296,19 +4299,19 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF929 - .byte 0x5 - .uleb128 0x1d .4byte .LASF930 .byte 0x5 - .uleb128 0x1e + .uleb128 0x1d .4byte .LASF931 .byte 0x5 - .uleb128 0x20 + .uleb128 0x1e .4byte .LASF932 .byte 0x5 - .uleb128 0x21 + .uleb128 0x20 .4byte .LASF933 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF934 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -4325,7 +4328,7 @@ main: .ascii "__UHA_FBIT__ 8\000" .LASF814: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF936: +.LASF937: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -4355,7 +4358,7 @@ main: .ascii "__WINT_MIN__ 0U\000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF975: +.LASF976: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -4381,7 +4384,7 @@ main: .ascii "__FRACT_MIN__ (-0.5R-0.5R)\000" .LASF324: .ascii "__ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK\000" -.LASF978: +.LASF979: .ascii "flash\000" .LASF294: .ascii "__USACCUM_MAX__ 0XFFFFP-8UHK\000" @@ -4456,9 +4459,9 @@ main: .ascii "_LDBL_EQ_DBL 1\000" .LASF675: .ascii "PRIi8 __PRI8(i)\000" -.LASF917: +.LASF918: .ascii "FLASH_ACR_ICEN_ENABLE (1 <> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" @@ -5694,13 +5697,13 @@ main: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF733: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF953: +.LASF954: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF959: +.LASF960: .ascii "APB1ENR\000" .LASF741: .ascii "SCNdFAST16 __SCN16FAST(d)\000" @@ -5730,7 +5733,7 @@ main: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF944: +.LASF945: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -5777,11 +5780,11 @@ main: .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" -.LASF925: +.LASF926: .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" -.LASF987: +.LASF988: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" @@ -5839,18 +5842,20 @@ main: .ascii "__int20__ +2\000" .LASF654: .ascii "_WCHAR_T_ \000" -.LASF983: +.LASF984: .ascii "SMCR\000" .LASF828: .ascii "PRIoMAX __PRIMAX(o)\000" .LASF747: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" -.LASF920: +.LASF921: .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" -.LASF973: +.LASF974: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF909: + .ascii "PIN(port,num) (PORT(port) | num)\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -5913,7 +5918,7 @@ main: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF956: +.LASF957: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5953,7 +5958,7 @@ main: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF951: +.LASF952: .ascii "AHB2RSTR\000" .LASF671: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" @@ -5977,13 +5982,13 @@ main: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: .ascii "__ARM_FEATURE_CDE\000" -.LASF979: +.LASF980: .ascii "KEYR\000" .LASF509: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF937: +.LASF938: .ascii "short int\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -6007,11 +6012,11 @@ main: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF976: +.LASF977: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF931: +.LASF932: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" @@ -6019,7 +6024,7 @@ main: .ascii "UINT64_MAX (__UINT64_MAX__)\000" .LASF471: .ascii "_RETARGETABLE_LOCKING 1\000" -.LASF914: +.LASF915: .ascii "FLASH_ACR_DCEN_BIT 10\000" .LASF453: .ascii "__USES_INITFINI__ 1\000" @@ -6091,11 +6096,11 @@ main: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF701: .ascii "PRIXFAST8 __PRI8FAST(X)\000" -.LASF1000: +.LASF1001: .ascii "led_on\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" -.LASF1002: +.LASF1003: .ascii "src/main.c\000" .LASF126: .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" @@ -6133,13 +6138,13 @@ main: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF651: .ascii "_T_WCHAR_ \000" -.LASF992: +.LASF993: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF664: .ascii "_BSD_WCHAR_T_\000" -.LASF971: +.LASF972: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -6147,9 +6152,9 @@ main: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF756: .ascii "PRIx32 __PRI32(x)\000" -.LASF998: +.LASF999: .ascii "tim4_init\000" -.LASF947: +.LASF948: .ascii "uint32_t\000" .LASF878: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -6157,13 +6162,13 @@ main: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" .LASF506: .ascii "_SYS__INTSUP_H \000" -.LASF981: +.LASF982: .ascii "OPTCR\000" .LASF290: .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" .LASF415: .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" -.LASF912: +.LASF913: .ascii "FLASH_BASE_ADDR (0x40023C00U)\000" .LASF745: .ascii "SCNxFAST16 __SCN16FAST(x)\000" @@ -6209,13 +6214,13 @@ main: .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF909: +.LASF910: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF938: +.LASF939: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6242,7 +6247,7 @@ main: .ascii "__SIZE_MAX__ 0xffffffffU\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" -.LASF911: +.LASF912: .ascii "FLASH_H_ \000" .LASF412: .ascii "__ARM_ARCH\000" @@ -6260,7 +6265,7 @@ main: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF522: .ascii "long +4\000" -.LASF950: +.LASF951: .ascii "AHB1RSTR\000" .LASF723: .ascii "SCNx16 __SCN16(x)\000" @@ -6270,7 +6275,7 @@ main: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" -.LASF1003: +.LASF1004: .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF796: .ascii "PRIX64 __PRI64(X)\000" @@ -6334,7 +6339,7 @@ main: .ascii "__INT_LEAST64_TYPE__ long long int\000" .LASF103: .ascii "__UINT16_MAX__ 0xffff\000" -.LASF923: +.LASF924: .ascii "PWR_BASE_ADDR (0x40007000U)\000" .LASF446: .ascii "__ARM_FEATURE_CDE_COPROC\000" diff --git a/build/main.i b/build/main.i index 8d199f6..f00220b 100644 --- a/build/main.i +++ b/build/main.i @@ -2128,7 +2128,9 @@ struct gpio { #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) -#define PIN(port,num) ((((port) - 'A') << 8) | num) +#define PORT(port) (((port) - 'A') << 8) + +#define PIN(port,num) (PORT(port) | num) #define PINNUM(pin) (pin & 0b1111) @@ -2143,9 +2145,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 39 "src/gpio.h" 3 4 +# 41 "src/gpio.h" 3 4 _Bool -# 39 "src/gpio.h" +# 41 "src/gpio.h" val); # 6 "src/main.c" 2 # 1 "src/flash.h" 1 diff --git a/build/main.o b/build/main.o index 3cf9db8..e3c3732 100644 Binary files a/build/main.o and b/build/main.o differ diff --git a/src/gpio.h b/src/gpio.h index 3bc669e..bad0e48 100644 --- a/src/gpio.h +++ b/src/gpio.h @@ -21,8 +21,10 @@ struct gpio { #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) +// Create a 8bit number from a port +#define PORT(port) (((port) - 'A') << 8) // Create a 16bit number from a port and pin -#define PIN(port, num) ((((port) - 'A') << 8) | num) +#define PIN(port, num) (PORT(port) | num) // get the lower byte from a PIN #define PINNUM(pin) (pin & 0b1111) // get the upper byte from a PIN