aboutsummaryrefslogtreecommitdiff
path: root/stmhal/pin.h
diff options
context:
space:
mode:
Diffstat (limited to 'stmhal/pin.h')
-rw-r--r--stmhal/pin.h80
1 files changed, 12 insertions, 68 deletions
diff --git a/stmhal/pin.h b/stmhal/pin.h
index d60bd22fd..8b3b86277 100644
--- a/stmhal/pin.h
+++ b/stmhal/pin.h
@@ -24,63 +24,10 @@
* THE SOFTWARE.
*/
-enum {
- PORT_A,
- PORT_B,
- PORT_C,
- PORT_D,
- PORT_E,
- PORT_F,
- PORT_G,
- PORT_H,
- PORT_I,
- PORT_J,
-};
+// This file requires pin_defs_xxx.h (which has port specific enums and
+// defines, so we include it here. It should never be included directly
-enum {
- AF_FN_TIM,
- AF_FN_I2C,
- AF_FN_USART,
- AF_FN_UART = AF_FN_USART,
- AF_FN_SPI
-};
-
-enum {
- AF_PIN_TYPE_TIM_CH1 = 0,
- AF_PIN_TYPE_TIM_CH2,
- AF_PIN_TYPE_TIM_CH3,
- AF_PIN_TYPE_TIM_CH4,
- AF_PIN_TYPE_TIM_CH1N,
- AF_PIN_TYPE_TIM_CH2N,
- AF_PIN_TYPE_TIM_CH3N,
- AF_PIN_TYPE_TIM_CH1_ETR,
- AF_PIN_TYPE_TIM_ETR,
- AF_PIN_TYPE_TIM_BKIN,
-
- AF_PIN_TYPE_I2C_SDA = 0,
- AF_PIN_TYPE_I2C_SCL,
-
- AF_PIN_TYPE_USART_TX = 0,
- AF_PIN_TYPE_USART_RX,
- AF_PIN_TYPE_USART_CTS,
- AF_PIN_TYPE_USART_RTS,
- AF_PIN_TYPE_USART_CK,
- AF_PIN_TYPE_UART_TX = AF_PIN_TYPE_USART_TX,
- AF_PIN_TYPE_UART_RX = AF_PIN_TYPE_USART_RX,
- AF_PIN_TYPE_UART_CTS = AF_PIN_TYPE_USART_CTS,
- AF_PIN_TYPE_UART_RTS = AF_PIN_TYPE_USART_RTS,
-
- AF_PIN_TYPE_SPI_MOSI = 0,
- AF_PIN_TYPE_SPI_MISO,
- AF_PIN_TYPE_SPI_SCK,
- AF_PIN_TYPE_SPI_NSS,
-};
-
-enum {
- PIN_ADC1 = (1 << 0),
- PIN_ADC2 = (1 << 1),
- PIN_ADC3 = (1 << 2),
-};
+#include PIN_DEFS_PORT_H
typedef struct {
mp_obj_base_t base;
@@ -91,24 +38,21 @@ typedef struct {
union {
void *reg;
- TIM_TypeDef *TIM;
- I2C_TypeDef *I2C;
- USART_TypeDef *USART;
- USART_TypeDef *UART;
- SPI_TypeDef *SPI;
+
+ PIN_DEFS_PORT_AF_UNION
};
} pin_af_obj_t;
typedef struct {
mp_obj_base_t base;
const char *name;
- uint16_t port : 4;
- uint16_t pin : 4;
- uint16_t num_af : 4;
- uint16_t adc_channel : 4;
- uint16_t adc_num : 3; // 1 bit per ADC
- uint16_t pin_mask;
- GPIO_TypeDef *gpio;
+ uint32_t port : 4;
+ uint32_t pin : 5; // Some ARM processors use 32 bits/PORT
+ uint32_t num_af : 4;
+ uint32_t adc_channel : 5; // Some ARM processors use 32 bits/PORT
+ uint32_t adc_num : 3; // 1 bit per ADC
+ uint32_t pin_mask;
+ pin_gpio_t *gpio;
const pin_af_obj_t *af;
} pin_obj_t;