@@ -40,12 +40,12 @@ extern "C" {
4040 * [2:0] Function (like in MODER reg) : Input / Output / Alt / Analog
4141 * [3] Output Push-Pull / Open Drain (as in OTYPER reg)
4242 * [5:4] as in PUPDR reg: No Pull, Pull-up, Pull-Donc
43- * [7 :6] Reserved for speed config (as in OSPEEDR), but not used yet
44- * [11:8 ] Alternate Num (as in AFRL/AFRG reg)
45- * [16:12 ] Channel (Analog/Timer specific)
46- * [17 ] Inverted (Analog/Timer specific)
47- * [18 ] Analog ADC control - Only valid for specific families
48- * [32:19 ] Reserved
43+ * [9 :6] speed config (as in OSPEEDR)
44+ * [13:10 ] Alternate Num (as in AFRL/AFRG reg)
45+ * [17:14 ] Channel (Analog/Timer specific)
46+ * [18 ] Inverted (Analog/Timer specific)
47+ * [19 ] Analog ADC control - Only valid for specific families
48+ * [32:21 ] Reserved
4949 */
5050
5151#define STM_PIN_FUNCTION_MASK 0x07
@@ -60,24 +60,24 @@ extern "C" {
6060#define STM_PIN_PUPD_SHIFT 4
6161#define STM_PIN_PUPD_BITS (STM_PIN_PUPD_MASK << STM_PIN_PUPD_SHIFT)
6262
63- #define STM_PIN_SPEED_MASK 0x03
63+ #define STM_PIN_SPEED_MASK 0x0F
6464#define STM_PIN_SPEED_SHIFT 6
6565#define STM_PIN_SPEED_BITS (STM_PIN_SPEED_MASK << STM_PIN_SPEED_SHIFT)
6666
6767#define STM_PIN_AFNUM_MASK 0x0F
68- #define STM_PIN_AFNUM_SHIFT 8
68+ #define STM_PIN_AFNUM_SHIFT 10
6969#define STM_PIN_AFNUM_BITS (STM_PIN_AFNUM_MASK << STM_PIN_AFNUM_SHIFT)
7070
7171#define STM_PIN_CHAN_MASK 0x1F
72- #define STM_PIN_CHAN_SHIFT 12
72+ #define STM_PIN_CHAN_SHIFT 14
7373#define STM_PIN_CHANNEL_BIT (STM_PIN_CHAN_MASK << STM_PIN_CHAN_SHIFT)
7474
7575#define STM_PIN_INV_MASK 0x01
76- #define STM_PIN_INV_SHIFT 17
76+ #define STM_PIN_INV_SHIFT 19
7777#define STM_PIN_INV_BIT (STM_PIN_INV_MASK << STM_PIN_INV_SHIFT)
7878
7979#define STM_PIN_AN_CTRL_MASK 0x01
80- #define STM_PIN_AN_CTRL_SHIFT 18
80+ #define STM_PIN_AN_CTRL_SHIFT 20
8181#define STM_PIN_ANALOG_CONTROL_BIT (STM_PIN_AN_CTRL_MASK << STM_PIN_AN_CTRL_SHIFT)
8282
8383#define STM_PIN_FUNCTION (X ) (((X) >> STM_PIN_FUNCTION_SHIFT) & STM_PIN_FUNCTION_MASK)
@@ -90,15 +90,30 @@ extern "C" {
9090#define STM_PIN_ANALOG_CONTROL (X ) (((X) >> STM_PIN_AN_CTRL_SHIFT) & STM_PIN_AN_CTRL_MASK)
9191
9292#define STM_PIN_DEFINE (FUNC_OD , PUPD , AFNUM ) ((int)(FUNC_OD) |\
93- ((PUPD & STM_PIN_PUPD_MASK) << STM_PIN_PUPD_SHIFT) |\
94- ((AFNUM & STM_PIN_AFNUM_MASK) << STM_PIN_AFNUM_SHIFT))
93+ ((STM_PIN_SPEED_MASK & STM_PIN_SPEED_MASK) << STM_PIN_SPEED_SHIFT) |\
94+ (((PUPD) & STM_PIN_PUPD_MASK) << STM_PIN_PUPD_SHIFT) |\
95+ (((AFNUM) & STM_PIN_AFNUM_MASK) << STM_PIN_AFNUM_SHIFT))
96+
97+ #define STM_PIN_DEFINE_SPEED (FUNC_OD , PUPD , AFNUM , SPEEDV ) ((int)(FUNC_OD) |\
98+ (((SPEEDV) & STM_PIN_SPEED_MASK) << STM_PIN_SPEED_SHIFT) |\
99+ (((PUPD) & STM_PIN_PUPD_MASK) << STM_PIN_PUPD_SHIFT) |\
100+ (((AFNUM) & STM_PIN_AFNUM_MASK) << STM_PIN_AFNUM_SHIFT))
95101
96102#define STM_PIN_DEFINE_EXT (FUNC_OD , PUPD , AFNUM , CHAN , INV ) \
97- ((int)(FUNC_OD) |\
98- ((PUPD & STM_PIN_PUPD_MASK) << STM_PIN_PUPD_SHIFT) |\
99- ((AFNUM & STM_PIN_AFNUM_MASK) << STM_PIN_AFNUM_SHIFT) |\
100- ((CHAN & STM_PIN_CHAN_MASK) << STM_PIN_CHAN_SHIFT) |\
101- ((INV & STM_PIN_INV_MASK) << STM_PIN_INV_SHIFT))
103+ ((int)(FUNC_OD) |\
104+ ((STM_PIN_SPEED_MASK & STM_PIN_SPEED_MASK) << STM_PIN_SPEED_SHIFT) |\
105+ (((PUPD) & STM_PIN_PUPD_MASK) << STM_PIN_PUPD_SHIFT) |\
106+ (((AFNUM) & STM_PIN_AFNUM_MASK) << STM_PIN_AFNUM_SHIFT) |\
107+ (((CHAN) & STM_PIN_CHAN_MASK) << STM_PIN_CHAN_SHIFT) |\
108+ (((INV) & STM_PIN_INV_MASK) << STM_PIN_INV_SHIFT))
109+
110+ #define STM_PIN_DEFINE_SPEED_EXT (FUNC_OD , PUPD , AFNUM , CHAN , INV , SPEEDV ) \
111+ ((int)(FUNC_OD) |\
112+ (((SPEEDV) & STM_PIN_SPEED_MASK) << STM_PIN_SPEED_SHIFT) |\
113+ (((PUPD) & STM_PIN_PUPD_MASK) << STM_PIN_PUPD_SHIFT) |\
114+ (((AFNUM) & STM_PIN_AFNUM_MASK) << STM_PIN_AFNUM_SHIFT) |\
115+ (((CHAN) & STM_PIN_CHAN_MASK) << STM_PIN_CHAN_SHIFT) |\
116+ (((INV) & STM_PIN_INV_MASK) << STM_PIN_INV_SHIFT))
102117
103118/*
104119 * MACROS to support the legacy definition of PIN formats
0 commit comments