From 53d91b5d766efb0d4112c14e98851fb83f80bb36 Mon Sep 17 00:00:00 2001 From: Boris Mladenov Beslimov Date: Fri, 20 Mar 2026 19:31:25 +0100 Subject: [PATCH 1/2] fix(GPIO): Fix the bitmaps for available AFs --- Inc/HALAL/Models/Pin.hpp | 202 +++++++++++++++++++-------------------- 1 file changed, 101 insertions(+), 101 deletions(-) diff --git a/Inc/HALAL/Models/Pin.hpp b/Inc/HALAL/Models/Pin.hpp index f4881abe3..5b8ac3cf2 100644 --- a/Inc/HALAL/Models/Pin.hpp +++ b/Inc/HALAL/Models/Pin.hpp @@ -17,123 +17,123 @@ constexpr GPIODomain::Pin PA6{A, GPIO_PIN_6, 0b0111011011111111}; constexpr GPIODomain::Pin PA7{A, GPIO_PIN_7, 0b0111010011111011}; constexpr GPIODomain::Pin PA8{A, GPIO_PIN_8, 0b1101101100111111}; constexpr GPIODomain::Pin PA9{A, GPIO_PIN_9, 0b0101111100010111}; -constexpr GPIODomain::Pin PA10{A, GPIO_PIN_10, 0b0101110100010111}; -constexpr GPIODomain::Pin PA11{A, GPIO_PIN_11, 0b0101111110010011}; -constexpr GPIODomain::Pin PA12{A, GPIO_PIN_12, 0b0011111110010111}; +constexpr GPIODomain::Pin PA10{A, GPIO_PIN_10, 0b0101000100111111}; +constexpr GPIODomain::Pin PA11{A, GPIO_PIN_11, 0b0101011101000011}; +constexpr GPIODomain::Pin PA12{A, GPIO_PIN_12, 0b0101011111001011}; constexpr GPIODomain::Pin PA13{A, GPIO_PIN_13, 0b1000000000000001}; constexpr GPIODomain::Pin PA14{A, GPIO_PIN_14, 0b1000000000000001}; constexpr GPIODomain::Pin PA15{A, GPIO_PIN_15, 0b1100111111010011}; // Port B -constexpr GPIODomain::Pin PB0{B, GPIO_PIN_0, 0b0111110011111011}; -constexpr GPIODomain::Pin PB1{B, GPIO_PIN_1, 0b0111110011111011}; -constexpr GPIODomain::Pin PB2{B, GPIO_PIN_2, 0b0110111110111011}; -constexpr GPIODomain::Pin PB3{B, GPIO_PIN_3, 0b0111110110111011}; -constexpr GPIODomain::Pin PB4{B, GPIO_PIN_4, 0b0111111110110011}; -constexpr GPIODomain::Pin PB5{B, GPIO_PIN_5, 0b0111110111111111}; -constexpr GPIODomain::Pin PB6{B, GPIO_PIN_6, 0b0111110111111111}; -constexpr GPIODomain::Pin PB7{B, GPIO_PIN_7, 0b0111110111111011}; -constexpr GPIODomain::Pin PB8{B, GPIO_PIN_8, 0b0110111111111111}; -constexpr GPIODomain::Pin PB9{B, GPIO_PIN_9, 0b0110111111111111}; -constexpr GPIODomain::Pin PB10{B, GPIO_PIN_10, 0b0111110111111111}; -constexpr GPIODomain::Pin PB11{B, GPIO_PIN_11, 0b0111110111111011}; -constexpr GPIODomain::Pin PB12{B, GPIO_PIN_12, 0b0111110111111011}; -constexpr GPIODomain::Pin PB13{B, GPIO_PIN_13, 0b0111110111111011}; -constexpr GPIODomain::Pin PB14{B, GPIO_PIN_14, 0b0111110011111011}; -constexpr GPIODomain::Pin PB15{B, GPIO_PIN_15, 0b0111110011111011}; +constexpr GPIODomain::Pin PB0{B, GPIO_PIN_0, 0b0111101011110011}; +constexpr GPIODomain::Pin PB1{B, GPIO_PIN_1, 0b0111101001110011}; +constexpr GPIODomain::Pin PB2{B, GPIO_PIN_2, 0b1110101111110101}; +constexpr GPIODomain::Pin PB3{B, GPIO_PIN_3, 0b1100011011110011}; +constexpr GPIODomain::Pin PB4{B, GPIO_PIN_4, 0b1110011111010001}; +constexpr GPIODomain::Pin PB5{B, GPIO_PIN_5, 0b0111111111111111}; +constexpr GPIODomain::Pin PB6{B, GPIO_PIN_6, 0b0110111111111111}; +constexpr GPIODomain::Pin PB7{B, GPIO_PIN_7, 0b0110101110011101}; +constexpr GPIODomain::Pin PB8{B, GPIO_PIN_8, 0b0111101111111111}; +constexpr GPIODomain::Pin PB9{B, GPIO_PIN_9, 0b0111111111111111}; +constexpr GPIODomain::Pin PB10{B, GPIO_PIN_10, 0b0101111101110011}; +constexpr GPIODomain::Pin PB11{B, GPIO_PIN_11, 0b0101101100110011}; +constexpr GPIODomain::Pin PB12{B, GPIO_PIN_12, 0b0101111101111111}; +constexpr GPIODomain::Pin PB13{B, GPIO_PIN_13, 0b0101111101111111}; +constexpr GPIODomain::Pin PB14{B, GPIO_PIN_14, 0b0111111111001011}; +constexpr GPIODomain::Pin PB15{B, GPIO_PIN_15, 0b1111111011001011}; // Port C -constexpr GPIODomain::Pin PC0{C, GPIO_PIN_0, 0b0110110110110011}; -constexpr GPIODomain::Pin PC1{C, GPIO_PIN_1, 0b0110111111111111}; -constexpr GPIODomain::Pin PC2{C, GPIO_PIN_2, 0b0110111110110011}; -constexpr GPIODomain::Pin PC3{C, GPIO_PIN_3, 0b0110111110110011}; -constexpr GPIODomain::Pin PC4{C, GPIO_PIN_4, 0b0110110110111011}; -constexpr GPIODomain::Pin PC5{C, GPIO_PIN_5, 0b0110110110111111}; -constexpr GPIODomain::Pin PC6{C, GPIO_PIN_6, 0b0111110011111111}; -constexpr GPIODomain::Pin PC7{C, GPIO_PIN_7, 0b0111110011111111}; -constexpr GPIODomain::Pin PC8{C, GPIO_PIN_8, 0b0111110011011111}; -constexpr GPIODomain::Pin PC9{C, GPIO_PIN_9, 0b0111110110111111}; -constexpr GPIODomain::Pin PC10{C, GPIO_PIN_10, 0b0110111111111111}; -constexpr GPIODomain::Pin PC11{C, GPIO_PIN_11, 0b0110111111111111}; -constexpr GPIODomain::Pin PC12{C, GPIO_PIN_12, 0b0110111111011111}; -constexpr GPIODomain::Pin PC13{C, GPIO_PIN_13, 0b1000000000000001}; -constexpr GPIODomain::Pin PC14{C, GPIO_PIN_14, 0b1000000000000001}; -constexpr GPIODomain::Pin PC15{C, GPIO_PIN_15, 0b1000000000000001}; +constexpr GPIODomain::Pin PC0{C, GPIO_PIN_0, 0b0101001011111011}; +constexpr GPIODomain::Pin PC1{C, GPIO_PIN_1, 0b1111111011111011}; +constexpr GPIODomain::Pin PC2{C, GPIO_PIN_2, 0b1001111001111001}; +constexpr GPIODomain::Pin PC3{C, GPIO_PIN_3, 0b1001110001111001}; +constexpr GPIODomain::Pin PC4{C, GPIO_PIN_4, 0b1101010001111011}; +constexpr GPIODomain::Pin PC5{C, GPIO_PIN_5, 0b1111100001111111}; +constexpr GPIODomain::Pin PC6{C, GPIO_PIN_6, 0b0011110111101111}; +constexpr GPIODomain::Pin PC7{C, GPIO_PIN_7, 0b1011101111111111}; +constexpr GPIODomain::Pin PC8{C, GPIO_PIN_8, 0b1011000111111101}; +constexpr GPIODomain::Pin PC9{C, GPIO_PIN_9, 0b1011111011111111}; +constexpr GPIODomain::Pin PC10{C, GPIO_PIN_10, 0b0001101111111111}; +constexpr GPIODomain::Pin PC11{C, GPIO_PIN_11, 0b0001101111001111}; +constexpr GPIODomain::Pin PC12{C, GPIO_PIN_12, 0b1110111110001111}; +constexpr GPIODomain::Pin PC13{C, GPIO_PIN_13, 0b0000000000000001}; +constexpr GPIODomain::Pin PC14{C, GPIO_PIN_14, 0b0000000000000001}; +constexpr GPIODomain::Pin PC15{C, GPIO_PIN_15, 0b0000000000000001}; // Port D -constexpr GPIODomain::Pin PD0{D, GPIO_PIN_0, 0b0111110110011011}; -constexpr GPIODomain::Pin PD1{D, GPIO_PIN_1, 0b0111110110011011}; -constexpr GPIODomain::Pin PD2{D, GPIO_PIN_2, 0b1110110110011011}; -constexpr GPIODomain::Pin PD3{D, GPIO_PIN_3, 0b0110110111110011}; -constexpr GPIODomain::Pin PD4{D, GPIO_PIN_4, 0b0010110010010011}; -constexpr GPIODomain::Pin PD5{D, GPIO_PIN_5, 0b0010110010010011}; -constexpr GPIODomain::Pin PD6{D, GPIO_PIN_6, 0b0111110110111011}; -constexpr GPIODomain::Pin PD7{D, GPIO_PIN_7, 0b0110110111111011}; -constexpr GPIODomain::Pin PD8{D, GPIO_PIN_8, 0b0110110110010011}; -constexpr GPIODomain::Pin PD9{D, GPIO_PIN_9, 0b0110110110010011}; -constexpr GPIODomain::Pin PD10{D, GPIO_PIN_10, 0b0110110110010011}; -constexpr GPIODomain::Pin PD11{D, GPIO_PIN_11, 0b0111100110110011}; -constexpr GPIODomain::Pin PD12{D, GPIO_PIN_12, 0b0111110110110011}; -constexpr GPIODomain::Pin PD13{D, GPIO_PIN_13, 0b0111110110110011}; -constexpr GPIODomain::Pin PD14{D, GPIO_PIN_14, 0b0111010010010011}; -constexpr GPIODomain::Pin PD15{D, GPIO_PIN_15, 0b0111010010010011}; +constexpr GPIODomain::Pin PD0{D, GPIO_PIN_0, 0b0001000011011011}; +constexpr GPIODomain::Pin PD1{D, GPIO_PIN_1, 0b0001000011001001}; +constexpr GPIODomain::Pin PD2{D, GPIO_PIN_2, 0b1110100011001111}; +constexpr GPIODomain::Pin PD3{D, GPIO_PIN_3, 0b0001010100001111}; +constexpr GPIODomain::Pin PD4{D, GPIO_PIN_4, 0b0000000100101001}; +constexpr GPIODomain::Pin PD5{D, GPIO_PIN_5, 0b0000000100101001}; +constexpr GPIODomain::Pin PD6{D, GPIO_PIN_6, 0b0111111110111111}; +constexpr GPIODomain::Pin PD7{D, GPIO_PIN_7, 0b0001011101111001}; +constexpr GPIODomain::Pin PD8{D, GPIO_PIN_8, 0b0001000101001001}; +constexpr GPIODomain::Pin PD9{D, GPIO_PIN_9, 0b0001000100001001}; +constexpr GPIODomain::Pin PD10{D, GPIO_PIN_10, 0b0001000100001011}; +constexpr GPIODomain::Pin PD11{D, GPIO_PIN_11, 0b0001100101101001}; +constexpr GPIODomain::Pin PD12{D, GPIO_PIN_12, 0b0111110101101101}; +constexpr GPIODomain::Pin PD13{D, GPIO_PIN_13, 0b0110110001111001}; +constexpr GPIODomain::Pin PD14{D, GPIO_PIN_14, 0b0010000010011001}; +constexpr GPIODomain::Pin PD15{D, GPIO_PIN_15, 0b0010000010011001}; // Port E -constexpr GPIODomain::Pin PE0{E, GPIO_PIN_0, 0b0111110010110011}; -constexpr GPIODomain::Pin PE1{E, GPIO_PIN_1, 0b0111110010011011}; -constexpr GPIODomain::Pin PE2{E, GPIO_PIN_2, 0b0110110111110011}; -constexpr GPIODomain::Pin PE3{E, GPIO_PIN_3, 0b0110110111110011}; -constexpr GPIODomain::Pin PE4{E, GPIO_PIN_4, 0b0110110111111111}; -constexpr GPIODomain::Pin PE5{E, GPIO_PIN_5, 0b0110110111111011}; -constexpr GPIODomain::Pin PE6{E, GPIO_PIN_6, 0b0110110111111111}; -constexpr GPIODomain::Pin PE7{E, GPIO_PIN_7, 0b0111110010010011}; -constexpr GPIODomain::Pin PE8{E, GPIO_PIN_8, 0b0111110010010011}; -constexpr GPIODomain::Pin PE9{E, GPIO_PIN_9, 0b0111110010010011}; -constexpr GPIODomain::Pin PE10{E, GPIO_PIN_10, 0b0111110010010011}; -constexpr GPIODomain::Pin PE11{E, GPIO_PIN_11, 0b0111110010011011}; -constexpr GPIODomain::Pin PE12{E, GPIO_PIN_12, 0b0111110010011011}; -constexpr GPIODomain::Pin PE13{E, GPIO_PIN_13, 0b0111110010011011}; -constexpr GPIODomain::Pin PE14{E, GPIO_PIN_14, 0b0011110010010011}; -constexpr GPIODomain::Pin PE15{E, GPIO_PIN_15, 0b0110110010010011}; +constexpr GPIODomain::Pin PE0{E, GPIO_PIN_0, 0b0110100010101111}; +constexpr GPIODomain::Pin PE1{E, GPIO_PIN_1, 0b0100000010001111}; +constexpr GPIODomain::Pin PE2{E, GPIO_PIN_2, 0b1010111011111001}; +constexpr GPIODomain::Pin PE3{E, GPIO_PIN_3, 0b1000101010011001}; +constexpr GPIODomain::Pin PE4{E, GPIO_PIN_4, 0b1011111010101111}; +constexpr GPIODomain::Pin PE5{E, GPIO_PIN_5, 0b1011111010101111}; +constexpr GPIODomain::Pin PE6{E, GPIO_PIN_6, 0b1110111011111111}; +constexpr GPIODomain::Pin PE7{E, GPIO_PIN_7, 0b0101000100101001}; +constexpr GPIODomain::Pin PE8{E, GPIO_PIN_8, 0b0101000100101101}; +constexpr GPIODomain::Pin PE9{E, GPIO_PIN_9, 0b0101000100101001}; +constexpr GPIODomain::Pin PE10{E, GPIO_PIN_10, 0b0101000100101001}; +constexpr GPIODomain::Pin PE11{E, GPIO_PIN_11, 0b0101010000111011}; +constexpr GPIODomain::Pin PE12{E, GPIO_PIN_12, 0b0101010000101111}; +constexpr GPIODomain::Pin PE13{E, GPIO_PIN_13, 0b0101010000101111}; +constexpr GPIODomain::Pin PE14{E, GPIO_PIN_14, 0b0100010000101011}; +constexpr GPIODomain::Pin PE15{E, GPIO_PIN_15, 0b0100000000011111}; // Port F -constexpr GPIODomain::Pin PF0{F, GPIO_PIN_0, 0b0010110010010111}; -constexpr GPIODomain::Pin PF1{F, GPIO_PIN_1, 0b0010110010010111}; -constexpr GPIODomain::Pin PF2{F, GPIO_PIN_2, 0b0010110010010011}; -constexpr GPIODomain::Pin PF3{F, GPIO_PIN_3, 0b0010010010010011}; -constexpr GPIODomain::Pin PF4{F, GPIO_PIN_4, 0b0010010010010011}; -constexpr GPIODomain::Pin PF5{F, GPIO_PIN_5, 0b0010010010010011}; -constexpr GPIODomain::Pin PF6{F, GPIO_PIN_6, 0b0111110010110011}; -constexpr GPIODomain::Pin PF7{F, GPIO_PIN_7, 0b0111110010110011}; -constexpr GPIODomain::Pin PF8{F, GPIO_PIN_8, 0b0111110010111011}; -constexpr GPIODomain::Pin PF9{F, GPIO_PIN_9, 0b0111110010111011}; -constexpr GPIODomain::Pin PF10{F, GPIO_PIN_10, 0b0110110010110011}; -constexpr GPIODomain::Pin PF11{F, GPIO_PIN_11, 0b0010110010010011}; -constexpr GPIODomain::Pin PF12{F, GPIO_PIN_12, 0b0010010010010011}; -constexpr GPIODomain::Pin PF13{F, GPIO_PIN_13, 0b0110110010110011}; -constexpr GPIODomain::Pin PF14{F, GPIO_PIN_14, 0b0110110010110011}; -constexpr GPIODomain::Pin PF15{F, GPIO_PIN_15, 0b0010110010010011}; +constexpr GPIODomain::Pin PF0{F, GPIO_PIN_0, 0b0000101001001101}; +constexpr GPIODomain::Pin PF1{F, GPIO_PIN_1, 0b0000101001001101}; +constexpr GPIODomain::Pin PF2{F, GPIO_PIN_2, 0b0000101001001101}; +constexpr GPIODomain::Pin PF3{F, GPIO_PIN_3, 0b0000000001001101}; +constexpr GPIODomain::Pin PF4{F, GPIO_PIN_4, 0b0000000001001001}; +constexpr GPIODomain::Pin PF5{F, GPIO_PIN_5, 0b0000000001001001}; +constexpr GPIODomain::Pin PF6{F, GPIO_PIN_6, 0b0110011110100101}; +constexpr GPIODomain::Pin PF7{F, GPIO_PIN_7, 0b0110011110100101}; +constexpr GPIODomain::Pin PF8{F, GPIO_PIN_8, 0b0100011111100101}; +constexpr GPIODomain::Pin PF9{F, GPIO_PIN_9, 0b0100011111100101}; +constexpr GPIODomain::Pin PF10{F, GPIO_PIN_10, 0b0110100001100111}; +constexpr GPIODomain::Pin PF11{F, GPIO_PIN_11, 0b0000010001101111}; +constexpr GPIODomain::Pin PF12{F, GPIO_PIN_12, 0b0000000001001011}; +constexpr GPIODomain::Pin PF13{F, GPIO_PIN_13, 0b0001100000001011}; +constexpr GPIODomain::Pin PF14{F, GPIO_PIN_14, 0b0001100000001011}; +constexpr GPIODomain::Pin PF15{F, GPIO_PIN_15, 0b0000100000001001}; // Port G -constexpr GPIODomain::Pin PG0{G, GPIO_PIN_0, 0b0010010010010011}; -constexpr GPIODomain::Pin PG1{G, GPIO_PIN_1, 0b0010010010010011}; -constexpr GPIODomain::Pin PG2{G, GPIO_PIN_2, 0b0110010010010011}; -constexpr GPIODomain::Pin PG3{G, GPIO_PIN_3, 0b0110010010010011}; -constexpr GPIODomain::Pin PG4{G, GPIO_PIN_4, 0b0110010010010011}; -constexpr GPIODomain::Pin PG5{G, GPIO_PIN_5, 0b0010010010010011}; -constexpr GPIODomain::Pin PG6{G, GPIO_PIN_6, 0b0111110010110011}; -constexpr GPIODomain::Pin PG7{G, GPIO_PIN_7, 0b0110110010110011}; -constexpr GPIODomain::Pin PG8{G, GPIO_PIN_8, 0b0111110010110011}; -constexpr GPIODomain::Pin PG9{G, GPIO_PIN_9, 0b0110110110110011}; -constexpr GPIODomain::Pin PG10{G, GPIO_PIN_10, 0b0110110110111011}; -constexpr GPIODomain::Pin PG11{G, GPIO_PIN_11, 0b0110110110111011}; -constexpr GPIODomain::Pin PG12{G, GPIO_PIN_12, 0b0111110110111111}; -constexpr GPIODomain::Pin PG13{G, GPIO_PIN_13, 0b0111110110111111}; -constexpr GPIODomain::Pin PG14{G, GPIO_PIN_14, 0b0111110110011111}; -constexpr GPIODomain::Pin PG15{G, GPIO_PIN_15, 0b0110110010010011}; +constexpr GPIODomain::Pin PG0{G, GPIO_PIN_0, 0b0000000001011001}; +constexpr GPIODomain::Pin PG1{G, GPIO_PIN_1, 0b0000000001011001}; +constexpr GPIODomain::Pin PG2{G, GPIO_PIN_2, 0b0001000000011011}; +constexpr GPIODomain::Pin PG3{G, GPIO_PIN_3, 0b0001000000011101}; +constexpr GPIODomain::Pin PG4{G, GPIO_PIN_4, 0b0100000000011001}; +constexpr GPIODomain::Pin PG5{G, GPIO_PIN_5, 0b0100000000001001}; +constexpr GPIODomain::Pin PG6{G, GPIO_PIN_6, 0b0100000000101111}; +constexpr GPIODomain::Pin PG7{G, GPIO_PIN_7, 0b0000001101001111}; +constexpr GPIODomain::Pin PG8{G, GPIO_PIN_8, 0b0001010110011011}; +constexpr GPIODomain::Pin PG9{G, GPIO_PIN_9, 0b0010010111111101}; +constexpr GPIODomain::Pin PG10{G, GPIO_PIN_10, 0b0011010001111111}; +constexpr GPIODomain::Pin PG11{G, GPIO_PIN_11, 0b0100110011110111}; +constexpr GPIODomain::Pin PG12{G, GPIO_PIN_12, 0b0101110111111111}; +constexpr GPIODomain::Pin PG13{G, GPIO_PIN_13, 0b1100110100111111}; +constexpr GPIODomain::Pin PG14{G, GPIO_PIN_14, 0b1100110101111111}; +constexpr GPIODomain::Pin PG15{G, GPIO_PIN_15, 0b0000000101011101}; // Port H -constexpr GPIODomain::Pin PH0{H, GPIO_PIN_0, 0b1000000000000001}; -constexpr GPIODomain::Pin PH1{H, GPIO_PIN_1, 0b1000000000000001}; +constexpr GPIODomain::Pin PH0{H, GPIO_PIN_0, 0b0000000000000001}; +constexpr GPIODomain::Pin PH1{H, GPIO_PIN_1, 0b0000000000000001}; } // namespace ST_LIB From bb016db10bc025aef7b0d37a6d1be7f2c9a6c8d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20S=C3=A1ez?= Date: Fri, 20 Mar 2026 22:00:16 +0100 Subject: [PATCH 2/2] added info for changelog and release flow --- .changesets/gpio-af-bitmaps-patch.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changesets/gpio-af-bitmaps-patch.md diff --git a/.changesets/gpio-af-bitmaps-patch.md b/.changesets/gpio-af-bitmaps-patch.md new file mode 100644 index 000000000..a37a26576 --- /dev/null +++ b/.changesets/gpio-af-bitmaps-patch.md @@ -0,0 +1,5 @@ +release: patch +summary: Fix incorrect GPIO alternate-function availability bitmaps + +Correct the STM32H723 pin alternate-function masks in `Pin.hpp` so GPIO +configuration reflects the actual AF support per pin.