From 6b6ab7dab536e9c8fdf2be3fedb789f775199b66 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Tue, 1 Sep 2015 19:58:39 +1000 Subject: [PATCH] Implemented PIN MAP in flash for all other variants --- STM32F1/variants/generic_stm32f103c/board.cpp | 76 +++--- STM32F1/variants/generic_stm32f103r/board.cpp | 104 ++++---- .../variants/generic_stm32f103r8/board.cpp | 98 ++++---- STM32F1/variants/generic_stm32f103v/board.cpp | 160 ++++++------- STM32F1/variants/generic_stm32f103z/board.cpp | 226 +++++++++--------- STM32F1/variants/maple/board.cpp | 90 +++---- STM32F1/variants/maple_ret6/board.cpp | 100 ++++---- STM32F1/variants/microduino/board.cpp | 50 ++-- STM32F1/variants/nucleo_f103rb/board.cpp | 104 ++++---- 9 files changed, 504 insertions(+), 504 deletions(-) diff --git a/STM32F1/variants/generic_stm32f103c/board.cpp b/STM32F1/variants/generic_stm32f103c/board.cpp index 95ea65b..7102adb 100644 --- a/STM32F1/variants/generic_stm32f103c/board.cpp +++ b/STM32F1/variants/generic_stm32f103c/board.cpp @@ -25,9 +25,9 @@ *****************************************************************************/ /** - * @file wirish/boards/maple_mini/board.cpp - * @author Marti Bolivar - * @brief Maple Mini board file. + * &file wirish/boards/maple_mini/board.cpp + * &author Marti Bolivar + * &brief Maple Mini board file. */ #include @@ -55,43 +55,43 @@ void boardInit(void) { extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { - {GPIOA, TIMER2, ADC1, 0, 1, 0}, /* PA0 */ - {GPIOA, TIMER2, ADC1, 1, 2, 1}, /* PA1 */ - {GPIOA, TIMER2, ADC1, 2, 3, 2}, /* PA2 */ - {GPIOA, TIMER2, ADC1, 3, 4, 3}, /* PA3 */ - {GPIOA, NULL, ADC1, 4, 0, 4}, /* PA4 */ - {GPIOA, NULL, ADC1, 5, 0, 5}, /* PA5 */ - {GPIOA, TIMER3, ADC1, 6, 1, 6}, /* PA6 */ - {GPIOA, TIMER3, ADC1, 7, 2, 7}, /* PA7 */ - {GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */ - {GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */ - {GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */ - {GPIOA, TIMER1, NULL, 11, 4, ADCx}, /* PA11 */ - {GPIOA, NULL, NULL, 12, 0, ADCx}, /* PA12 */ - {GPIOA, NULL, NULL, 13, 0, ADCx}, /* PA13 */ - {GPIOA, NULL, NULL, 14, 0, ADCx}, /* PA14 */ - {GPIOA, NULL, NULL, 15, 0, ADCx}, /* PA15 */ + {&gpioa, &timer2, &adc1, 0, 1, 0}, /* PA0 */ + {&gpioa, &timer2, &adc1, 1, 2, 1}, /* PA1 */ + {&gpioa, &timer2, &adc1, 2, 3, 2}, /* PA2 */ + {&gpioa, &timer2, &adc1, 3, 4, 3}, /* PA3 */ + {&gpioa, NULL, &adc1, 4, 0, 4}, /* PA4 */ + {&gpioa, NULL, &adc1, 5, 0, 5}, /* PA5 */ + {&gpioa, &timer3, &adc1, 6, 1, 6}, /* PA6 */ + {&gpioa, &timer3, &adc1, 7, 2, 7}, /* PA7 */ + {&gpioa, &timer1, NULL, 8, 1, ADCx}, /* PA8 */ + {&gpioa, &timer1, NULL, 9, 2, ADCx}, /* PA9 */ + {&gpioa, &timer1, NULL, 10, 3, ADCx}, /* PA10 */ + {&gpioa, &timer1, NULL, 11, 4, ADCx}, /* PA11 */ + {&gpioa, NULL, NULL, 12, 0, ADCx}, /* PA12 */ + {&gpioa, NULL, NULL, 13, 0, ADCx}, /* PA13 */ + {&gpioa, NULL, NULL, 14, 0, ADCx}, /* PA14 */ + {&gpioa, NULL, NULL, 15, 0, ADCx}, /* PA15 */ - {GPIOB, TIMER3, ADC1, 0, 3, 8}, /* PB0 */ - {GPIOB, TIMER3, ADC1, 1, 4, 9}, /* PB1 */ - {GPIOB, NULL, NULL, 2, 0, ADCx}, /* PB2 */ - {GPIOB, NULL, NULL, 3, 0, ADCx}, /* PB3 */ - {GPIOB, NULL, NULL, 4, 0, ADCx}, /* PB4 */ - {GPIOB, NULL, NULL, 5, 0, ADCx}, /* PB5 */ - {GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */ - {GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */ - {GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */ - {GPIOB, TIMER4, NULL, 9, 4, ADCx}, /* PB9 */ - {GPIOB, NULL, NULL, 10, 0, ADCx}, /* PB10 */ - {GPIOB, NULL, NULL, 11, 0, ADCx}, /* PB11 */ - {GPIOB, NULL, NULL, 12, 0, ADCx}, /* PB12 */ - {GPIOB, NULL, NULL, 13, 0, ADCx}, /* PB13 */ - {GPIOB, NULL, NULL, 14, 0, ADCx}, /* PB14 */ - {GPIOB, NULL, NULL, 15, 0, ADCx}, /* PB15 */ + {&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */ + {&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */ + {&gpiob, NULL, NULL, 2, 0, ADCx}, /* PB2 */ + {&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */ + {&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */ + {&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */ + {&gpiob, &timer4, NULL, 6, 1, ADCx}, /* PB6 */ + {&gpiob, &timer4, NULL, 7, 2, ADCx}, /* PB7 */ + {&gpiob, &timer4, NULL, 8, 3, ADCx}, /* PB8 */ + {&gpiob, &timer4, NULL, 9, 4, ADCx}, /* PB9 */ + {&gpiob, NULL, NULL, 10, 0, ADCx}, /* PB10 */ + {&gpiob, NULL, NULL, 11, 0, ADCx}, /* PB11 */ + {&gpiob, NULL, NULL, 12, 0, ADCx}, /* PB12 */ + {&gpiob, NULL, NULL, 13, 0, ADCx}, /* PB13 */ + {&gpiob, NULL, NULL, 14, 0, ADCx}, /* PB14 */ + {&gpiob, NULL, NULL, 15, 0, ADCx}, /* PB15 */ - {GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 */ - {GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 */ - {GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 */ + {&gpioc, NULL, NULL, 13, 0, ADCx}, /* PC13 */ + {&gpioc, NULL, NULL, 14, 0, ADCx}, /* PC14 */ + {&gpioc, NULL, NULL, 15, 0, ADCx}, /* PC15 */ diff --git a/STM32F1/variants/generic_stm32f103r/board.cpp b/STM32F1/variants/generic_stm32f103r/board.cpp index d04bb4a..3e3589c 100644 --- a/STM32F1/variants/generic_stm32f103r/board.cpp +++ b/STM32F1/variants/generic_stm32f103r/board.cpp @@ -63,7 +63,7 @@ void boardInit(void) { // PMAP_ROW() lets us specify a row (really a struct stm32_pin_info) // in the pin map. Its arguments are: // -// - GPIO device for the pin (GPIOA, etc.) +// - GPIO device for the pin (&gpioa, etc.) // - GPIO bit for the pin (0 through 15) // - Timer device, or NULL if none // - Timer channel (1 to 4, for PWM), or 0 if none @@ -81,61 +81,61 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { uint8 pinMode; mode specific by pinMode call (Roger Clark added to optimize compatibility with Arduino API */ - {GPIOA, TIMER2, ADC1, 0, 1, 0}, /* PA0 */ - {GPIOA, TIMER2, ADC1, 1, 2, 1}, /* PA1 */ - {GPIOA, TIMER2, ADC1, 2, 3, 2}, /* PA2 */ - {GPIOA, TIMER2, ADC1, 3, 4, 3}, /* PA3 */ - {GPIOA, NULL, ADC1, 4, 0, 4}, /* PA4 */ - {GPIOA, NULL, ADC1, 5, 0, 5}, /* PA5 */ - {GPIOA, TIMER3, ADC1, 6, 1, 6}, /* PA6 */ - {GPIOA, TIMER3, ADC1, 7, 2, 7}, /* PA7 */ - {GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */ - {GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */ - {GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */ - {GPIOA, NULL, NULL, 11, 0, ADCx}, /* PA11 */ - {GPIOA, NULL, NULL, 12, 0, ADCx}, /* PA12 */ - {GPIOA, NULL, NULL, 13, 0, ADCx}, /* PA13 */ - {GPIOA, NULL, NULL, 14, 0, ADCx}, /* PA14 */ - {GPIOA, NULL, NULL, 15, 0, ADCx}, /* PA15 */ + {&gpioa, &timer2, &adc1, 0, 1, 0}, /* PA0 */ + {&gpioa, &timer2, &adc1, 1, 2, 1}, /* PA1 */ + {&gpioa, &timer2, &adc1, 2, 3, 2}, /* PA2 */ + {&gpioa, &timer2, &adc1, 3, 4, 3}, /* PA3 */ + {&gpioa, NULL, &adc1, 4, 0, 4}, /* PA4 */ + {&gpioa, NULL, &adc1, 5, 0, 5}, /* PA5 */ + {&gpioa, &timer3, &adc1, 6, 1, 6}, /* PA6 */ + {&gpioa, &timer3, &adc1, 7, 2, 7}, /* PA7 */ + {&gpioa, &timer1, NULL, 8, 1, ADCx}, /* PA8 */ + {&gpioa, &timer1, NULL, 9, 2, ADCx}, /* PA9 */ + {&gpioa, &timer1, NULL, 10, 3, ADCx}, /* PA10 */ + {&gpioa, NULL, NULL, 11, 0, ADCx}, /* PA11 */ + {&gpioa, NULL, NULL, 12, 0, ADCx}, /* PA12 */ + {&gpioa, NULL, NULL, 13, 0, ADCx}, /* PA13 */ + {&gpioa, NULL, NULL, 14, 0, ADCx}, /* PA14 */ + {&gpioa, NULL, NULL, 15, 0, ADCx}, /* PA15 */ - {GPIOB, TIMER3, ADC1, 0, 3, 8}, /* PB0 */ - {GPIOB, TIMER3, ADC1, 1, 4, 9}, /* PB1 */ - {GPIOB, NULL, NULL, 2, 0, ADCx}, /* PB2 */ - {GPIOB, NULL, NULL, 3, 0, ADCx}, /* PB3 */ - {GPIOB, NULL, NULL, 4, 0, ADCx}, /* PB4 */ - {GPIOB, NULL, NULL, 5, 0, ADCx}, /* PB5 */ - {GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */ - {GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */ - {GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */ - {GPIOB, NULL, NULL, 9, 0, ADCx}, /* PB9 */ - {GPIOB, NULL, NULL, 10, 0, ADCx}, /* PB10 */ - {GPIOB, NULL, NULL, 11, 0, ADCx}, /* PB11 */ - {GPIOB, NULL, NULL, 12, 0, ADCx}, /* PB12 */ - {GPIOB, NULL, NULL, 13, 0, ADCx}, /* PB13 */ - {GPIOB, NULL, NULL, 14, 0, ADCx}, /* PB14 */ - {GPIOB, NULL, NULL, 15, 0, ADCx}, /* PB15 */ + {&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */ + {&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */ + {&gpiob, NULL, NULL, 2, 0, ADCx}, /* PB2 */ + {&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */ + {&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */ + {&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */ + {&gpiob, &timer4, NULL, 6, 1, ADCx}, /* PB6 */ + {&gpiob, &timer4, NULL, 7, 2, ADCx}, /* PB7 */ + {&gpiob, &timer4, NULL, 8, 3, ADCx}, /* PB8 */ + {&gpiob, NULL, NULL, 9, 0, ADCx}, /* PB9 */ + {&gpiob, NULL, NULL, 10, 0, ADCx}, /* PB10 */ + {&gpiob, NULL, NULL, 11, 0, ADCx}, /* PB11 */ + {&gpiob, NULL, NULL, 12, 0, ADCx}, /* PB12 */ + {&gpiob, NULL, NULL, 13, 0, ADCx}, /* PB13 */ + {&gpiob, NULL, NULL, 14, 0, ADCx}, /* PB14 */ + {&gpiob, NULL, NULL, 15, 0, ADCx}, /* PB15 */ - {GPIOC, NULL, ADC1, 0, 0, 10}, /* PC0 */ - {GPIOC, NULL, ADC1, 1, 0, 11}, /* PC1 */ - {GPIOC, NULL, ADC1, 2, 0, 12}, /* PC2 */ - {GPIOC, NULL, ADC1, 3, 0, 13}, /* PC3 */ - {GPIOC, NULL, ADC1, 4, 0, 14}, /* PC4 */ - {GPIOC, NULL, ADC1, 5, 0, 15}, /* PC5 */ - {GPIOC, TIMER8, NULL, 6, 1, ADCx}, /* PC6 */ - {GPIOC, TIMER8, NULL, 7, 2, ADCx}, /* PC7 */ - {GPIOC, TIMER8, NULL, 8, 3, ADCx}, /* PC8 */ - {GPIOC, TIMER8, NULL, 9, 4, ADCx}, /* PC9 */ - {GPIOC, NULL, NULL, 10, 0, ADCx}, /* PC10 UART4_TX/SDIO_D2 */ - {GPIOC, NULL, NULL, 11, 0, ADCx}, /* PC11 UART4_RX/SDIO_D3 */ - {GPIOC, NULL, NULL, 12, 0, ADCx}, /* PC12 UART5_TX/SDIO_CK */ - {GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 TAMPER-RTC */ - {GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 OSC32_IN */ - {GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 OSC32_OUT */ + {&gpioc, NULL, &adc1, 0, 0, 10}, /* PC0 */ + {&gpioc, NULL, &adc1, 1, 0, 11}, /* PC1 */ + {&gpioc, NULL, &adc1, 2, 0, 12}, /* PC2 */ + {&gpioc, NULL, &adc1, 3, 0, 13}, /* PC3 */ + {&gpioc, NULL, &adc1, 4, 0, 14}, /* PC4 */ + {&gpioc, NULL, &adc1, 5, 0, 15}, /* PC5 */ + {&gpioc, &timer8, NULL, 6, 1, ADCx}, /* PC6 */ + {&gpioc, &timer8, NULL, 7, 2, ADCx}, /* PC7 */ + {&gpioc, &timer8, NULL, 8, 3, ADCx}, /* PC8 */ + {&gpioc, &timer8, NULL, 9, 4, ADCx}, /* PC9 */ + {&gpioc, NULL, NULL, 10, 0, ADCx}, /* PC10 UART4_TX/SDIO_D2 */ + {&gpioc, NULL, NULL, 11, 0, ADCx}, /* PC11 UART4_RX/SDIO_D3 */ + {&gpioc, NULL, NULL, 12, 0, ADCx}, /* PC12 UART5_TX/SDIO_CK */ + {&gpioc, NULL, NULL, 13, 0, ADCx}, /* PC13 TAMPER-RTC */ + {&gpioc, NULL, NULL, 14, 0, ADCx}, /* PC14 OSC32_IN */ + {&gpioc, NULL, NULL, 15, 0, ADCx}, /* PC15 OSC32_OUT */ - {GPIOD, NULL, NULL, 0, 0, ADCx} , /* PD0 OSC_IN */ - {GPIOD, NULL, NULL, 1, 0, ADCx} , /* PD1 OSC_OUT */ - {GPIOD, NULL, NULL, 2, 0, ADCx} , /* PD2 TIM3_ETR/UART5_RX SDIO_CMD */ + {&gpiod, NULL, NULL, 0, 0, ADCx} , /* PD0 OSC_IN */ + {&gpiod, NULL, NULL, 1, 0, ADCx} , /* PD1 OSC_OUT */ + {&gpiod, NULL, NULL, 2, 0, ADCx} , /* PD2 TIM3_ETR/UART5_RX SDIO_CMD */ }; /* Basically everything that is defined as having a timer us PWM */ diff --git a/STM32F1/variants/generic_stm32f103r8/board.cpp b/STM32F1/variants/generic_stm32f103r8/board.cpp index 0a8bbc8..05f85a5 100644 --- a/STM32F1/variants/generic_stm32f103r8/board.cpp +++ b/STM32F1/variants/generic_stm32f103r8/board.cpp @@ -55,61 +55,61 @@ void boardInit(void) { extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { - {GPIOA, TIMER2, ADC1, 0, 1, 0}, /* PA0 */ - {GPIOA, TIMER2, ADC1, 1, 2, 1}, /* PA1 */ - {GPIOA, TIMER2, ADC1, 2, 3, 2}, /* PA2 */ - {GPIOA, TIMER2, ADC1, 3, 4, 3}, /* PA3 */ - {GPIOA, NULL, ADC1, 4, 0, 4}, /* PA4 */ - {GPIOA, NULL, ADC1, 5, 0, 5}, /* PA5 */ - {GPIOA, TIMER3, ADC1, 6, 1, 6}, /* PA6 */ - {GPIOA, TIMER3, ADC1, 7, 2, 7}, /* PA7 */ - {GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */ - {GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */ - {GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */ - {GPIOA, TIMER1, NULL, 11, 4, ADCx}, /* PA11 */ - {GPIOA, NULL, NULL, 12, 0, ADCx}, /* PA12 */ - {GPIOA, NULL, NULL, 13, 0, ADCx}, /* PA13 */ - {GPIOA, NULL, NULL, 14, 0, ADCx}, /* PA14 */ - {GPIOA, NULL, NULL, 15, 0, ADCx}, /* PA15 */ + {&gpioa, &timer2, &adc1, 0, 1, 0}, /* PA0 */ + {&gpioa, &timer2, &adc1, 1, 2, 1}, /* PA1 */ + {&gpioa, &timer2, &adc1, 2, 3, 2}, /* PA2 */ + {&gpioa, &timer2, &adc1, 3, 4, 3}, /* PA3 */ + {&gpioa, NULL, &adc1, 4, 0, 4}, /* PA4 */ + {&gpioa, NULL, &adc1, 5, 0, 5}, /* PA5 */ + {&gpioa, &timer3, &adc1, 6, 1, 6}, /* PA6 */ + {&gpioa, &timer3, &adc1, 7, 2, 7}, /* PA7 */ + {&gpioa, &timer1, NULL, 8, 1, ADCx}, /* PA8 */ + {&gpioa, &timer1, NULL, 9, 2, ADCx}, /* PA9 */ + {&gpioa, &timer1, NULL, 10, 3, ADCx}, /* PA10 */ + {&gpioa, &timer1, NULL, 11, 4, ADCx}, /* PA11 */ + {&gpioa, NULL, NULL, 12, 0, ADCx}, /* PA12 */ + {&gpioa, NULL, NULL, 13, 0, ADCx}, /* PA13 */ + {&gpioa, NULL, NULL, 14, 0, ADCx}, /* PA14 */ + {&gpioa, NULL, NULL, 15, 0, ADCx}, /* PA15 */ - {GPIOB, TIMER3, ADC1, 0, 3, 8}, /* PB0 */ - {GPIOB, TIMER3, ADC1, 1, 4, 9}, /* PB1 */ - {GPIOB, NULL, NULL, 2, 0, ADCx}, /* PB2 */ - {GPIOB, NULL, NULL, 3, 0, ADCx}, /* PB3 */ - {GPIOB, NULL, NULL, 4, 0, ADCx}, /* PB4 */ - {GPIOB, NULL, NULL, 5, 0, ADCx}, /* PB5 */ - {GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */ - {GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */ - {GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */ - {GPIOB, TIMER4, NULL, 9, 4, ADCx}, /* PB9 */ - {GPIOB, NULL, NULL, 10, 0, ADCx}, /* PB10 */ - {GPIOB, NULL, NULL, 11, 0, ADCx}, /* PB11 */ - {GPIOB, NULL, NULL, 12, 0, ADCx}, /* PB12 */ - {GPIOB, NULL, NULL, 13, 0, ADCx}, /* PB13 */ - {GPIOB, NULL, NULL, 14, 0, ADCx}, /* PB14 */ - {GPIOB, NULL, NULL, 15, 0, ADCx}, /* PB15 */ + {&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */ + {&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */ + {&gpiob, NULL, NULL, 2, 0, ADCx}, /* PB2 */ + {&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */ + {&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */ + {&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */ + {&gpiob, &timer4, NULL, 6, 1, ADCx}, /* PB6 */ + {&gpiob, &timer4, NULL, 7, 2, ADCx}, /* PB7 */ + {&gpiob, &timer4, NULL, 8, 3, ADCx}, /* PB8 */ + {&gpiob, &timer4, NULL, 9, 4, ADCx}, /* PB9 */ + {&gpiob, NULL, NULL, 10, 0, ADCx}, /* PB10 */ + {&gpiob, NULL, NULL, 11, 0, ADCx}, /* PB11 */ + {&gpiob, NULL, NULL, 12, 0, ADCx}, /* PB12 */ + {&gpiob, NULL, NULL, 13, 0, ADCx}, /* PB13 */ + {&gpiob, NULL, NULL, 14, 0, ADCx}, /* PB14 */ + {&gpiob, NULL, NULL, 15, 0, ADCx}, /* PB15 */ /* Andy Hull - the R8 is similar to the C8 but exposes more GPIO as follows */ - {GPIOC, NULL, ADC1, 0, 0, 10}, /* PC0 */ - {GPIOC, NULL, ADC1, 1, 0, 11}, /* PC1 */ - {GPIOC, NULL, ADC1, 2, 0, 12}, /* PC2 */ - {GPIOC, NULL, ADC1, 3, 0, 13}, /* PC3 */ - {GPIOC, NULL, ADC1, 4, 0, 14}, /* PC4 */ - {GPIOC, NULL, ADC1, 5, 0, 15}, /* PC5 */ + {&gpioc, NULL, &adc1, 0, 0, 10}, /* PC0 */ + {&gpioc, NULL, &adc1, 1, 0, 11}, /* PC1 */ + {&gpioc, NULL, &adc1, 2, 0, 12}, /* PC2 */ + {&gpioc, NULL, &adc1, 3, 0, 13}, /* PC3 */ + {&gpioc, NULL, &adc1, 4, 0, 14}, /* PC4 */ + {&gpioc, NULL, &adc1, 5, 0, 15}, /* PC5 */ - {GPIOC, NULL, NULL, 6, 0, ADCx}, /* PC6 */ - {GPIOC, NULL, NULL, 7, 0, ADCx}, /* PC7 */ - {GPIOC, NULL, NULL, 8, 0, ADCx}, /* PC8 */ - {GPIOC, NULL, NULL, 9, 0, ADCx}, /* PC9 */ + {&gpioc, NULL, NULL, 6, 0, ADCx}, /* PC6 */ + {&gpioc, NULL, NULL, 7, 0, ADCx}, /* PC7 */ + {&gpioc, NULL, NULL, 8, 0, ADCx}, /* PC8 */ + {&gpioc, NULL, NULL, 9, 0, ADCx}, /* PC9 */ - {GPIOC, NULL, NULL, 10, 0, ADCx}, /* PC10 */ - {GPIOC, NULL, NULL, 11, 0, ADCx}, /* PC11 */ - {GPIOC, NULL, NULL, 12, 0, ADCx}, /* PC12 */ - {GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 */ - {GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 */ - {GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 */ + {&gpioc, NULL, NULL, 10, 0, ADCx}, /* PC10 */ + {&gpioc, NULL, NULL, 11, 0, ADCx}, /* PC11 */ + {&gpioc, NULL, NULL, 12, 0, ADCx}, /* PC12 */ + {&gpioc, NULL, NULL, 13, 0, ADCx}, /* PC13 */ + {&gpioc, NULL, NULL, 14, 0, ADCx}, /* PC14 */ + {&gpioc, NULL, NULL, 15, 0, ADCx}, /* PC15 */ - {GPIOD, NULL, NULL, 2, 0, ADCx}, /* PD2 */ + {&gpiod, NULL, NULL, 2, 0, ADCx}, /* PD2 */ }; extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = { diff --git a/STM32F1/variants/generic_stm32f103v/board.cpp b/STM32F1/variants/generic_stm32f103v/board.cpp index 1b9b1c0..9c13772 100644 --- a/STM32F1/variants/generic_stm32f103v/board.cpp +++ b/STM32F1/variants/generic_stm32f103v/board.cpp @@ -62,7 +62,7 @@ void boardInit(void) { // PMAP_ROW() lets us specify a row (really a struct stm32_pin_info) // in the pin map. Its arguments are: // -// - GPIO device for the pin (GPIOA, etc.) +// - GPIO device for the pin (&gpioa, etc.) // - GPIO bit for the pin (0 through 15) // - Timer device, or NULL if none // - Timer channel (1 to 4, for PWM), or 0 if none @@ -79,91 +79,91 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { uint8 adc_channel; Pin ADC channel, or ADCx if none. */ - {GPIOA, TIMER2, ADC1, 0, 1, 0}, /* PA0 */ - {GPIOA, TIMER2, ADC1, 1, 2, 1}, /* PA1 */ - {GPIOA, TIMER2, ADC1, 2, 3, 2}, /* PA2 */ - {GPIOA, TIMER2, ADC1, 3, 4, 3}, /* PA3 */ - {GPIOA, NULL, ADC1, 4, 0, 4}, /* PA4 */ - {GPIOA, NULL, ADC1, 5, 0, 5}, /* PA5 */ - {GPIOA, TIMER3, ADC1, 6, 1, 6}, /* PA6 */ - {GPIOA, TIMER3, ADC1, 7, 2, 7}, /* PA7 */ - {GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */ - {GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */ - {GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */ - {GPIOA, NULL, NULL, 11, 0, ADCx}, /* PA11 */ //Could have TIMER1_CH4, but is also CAN_RX and USBDM - {GPIOA, NULL, NULL, 12, 0, ADCx}, /* PA12 */ //Could have TIMER1_ETR, but is also CAN_TX and USBDP - {GPIOA, NULL, NULL, 13, 0, ADCx}, /* PA13 */ - {GPIOA, NULL, NULL, 14, 0, ADCx}, /* PA14 */ - {GPIOA, NULL, NULL, 15, 0, ADCx}, /* PA15 */ //SPI3_NSS + {&gpioa, &timer2, &adc1, 0, 1, 0}, /* PA0 */ + {&gpioa, &timer2, &adc1, 1, 2, 1}, /* PA1 */ + {&gpioa, &timer2, &adc1, 2, 3, 2}, /* PA2 */ + {&gpioa, &timer2, &adc1, 3, 4, 3}, /* PA3 */ + {&gpioa, NULL, &adc1, 4, 0, 4}, /* PA4 */ + {&gpioa, NULL, &adc1, 5, 0, 5}, /* PA5 */ + {&gpioa, &timer3, &adc1, 6, 1, 6}, /* PA6 */ + {&gpioa, &timer3, &adc1, 7, 2, 7}, /* PA7 */ + {&gpioa, &timer1, NULL, 8, 1, ADCx}, /* PA8 */ + {&gpioa, &timer1, NULL, 9, 2, ADCx}, /* PA9 */ + {&gpioa, &timer1, NULL, 10, 3, ADCx}, /* PA10 */ + {&gpioa, NULL, NULL, 11, 0, ADCx}, /* PA11 */ //Could have &timer1_CH4, but is also CAN_RX and USBDM + {&gpioa, NULL, NULL, 12, 0, ADCx}, /* PA12 */ //Could have &timer1_ETR, but is also CAN_TX and USBDP + {&gpioa, NULL, NULL, 13, 0, ADCx}, /* PA13 */ + {&gpioa, NULL, NULL, 14, 0, ADCx}, /* PA14 */ + {&gpioa, NULL, NULL, 15, 0, ADCx}, /* PA15 */ //SPI3_NSS - {GPIOB, TIMER3, ADC1, 0, 3, 8}, /* PB0 */ - {GPIOB, TIMER3, ADC1, 1, 4, 9}, /* PB1 */ + {&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */ + {&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */ /* NOTE PB2 is not included as its Boot 1 */ - {GPIOB, NULL, NULL, 3, 0, ADCx}, /* PB3 */ //JTDO, SPI3_SCK / I2S3_CK/ - {GPIOB, NULL, NULL, 4, 0, ADCx}, /* PB4 */ //NJTRST, SPI3_MISO - {GPIOB, NULL, NULL, 5, 0, ADCx}, /* PB5 */ //I2C1_SMBA/ SPI3_MOSI - {GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */ //I2C1_SCL(9) - {GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */ //I2C1_SDA(9) / FSMC_NADV - {GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */ //SDIO_D4 - {GPIOB, TIMER4, NULL, 9, 4, ADCx}, /* PB9 */ //SDIO_D5 - {GPIOB, NULL, NULL, 10, 0, ADCx}, /* PB10 */ //I2C2_SCL/USART3_TX - {GPIOB, NULL, NULL, 11, 0, ADCx}, /* PB11 */ //I2C2_SDA/USART3_RX - {GPIOB, NULL, NULL, 12, 0, ADCx}, /* PB12 */ //SPI2_NSS/I2S2_WS/I2C2_SMBA/USART3_CK - {GPIOB, NULL, NULL, 13, 0, ADCx}, /* PB13 */ //SPI2_SCK/I2S2_CK/USART3_CTS - {GPIOB, NULL, NULL, 14, 0, ADCx}, /* PB14 */ //SPI2_MISO/TIM1_CH2N/USART3_RTS - {GPIOB, NULL, NULL, 15, 0, ADCx}, /* PB15 */ //SPI2_MOSI/I2S2_SD + {&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */ //JTDO, SPI3_SCK / I2S3_CK/ + {&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */ //NJTRST, SPI3_MISO + {&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */ //I2C1_SMBA/ SPI3_MOSI + {&gpiob, &timer4, NULL, 6, 1, ADCx}, /* PB6 */ //I2C1_SCL(9) + {&gpiob, &timer4, NULL, 7, 2, ADCx}, /* PB7 */ //I2C1_SDA(9) / FSMC_NADV + {&gpiob, &timer4, NULL, 8, 3, ADCx}, /* PB8 */ //SDIO_D4 + {&gpiob, &timer4, NULL, 9, 4, ADCx}, /* PB9 */ //SDIO_D5 + {&gpiob, NULL, NULL, 10, 0, ADCx}, /* PB10 */ //I2C2_SCL/USART3_TX + {&gpiob, NULL, NULL, 11, 0, ADCx}, /* PB11 */ //I2C2_SDA/USART3_RX + {&gpiob, NULL, NULL, 12, 0, ADCx}, /* PB12 */ //SPI2_NSS/I2S2_WS/I2C2_SMBA/USART3_CK + {&gpiob, NULL, NULL, 13, 0, ADCx}, /* PB13 */ //SPI2_SCK/I2S2_CK/USART3_CTS + {&gpiob, NULL, NULL, 14, 0, ADCx}, /* PB14 */ //SPI2_MISO/TIM1_CH2N/USART3_RTS + {&gpiob, NULL, NULL, 15, 0, ADCx}, /* PB15 */ //SPI2_MOSI/I2S2_SD - {GPIOC, NULL, ADC1, 0, 0, 10}, /* PC0 */ - {GPIOC, NULL, ADC1, 1, 0, 11}, /* PC1 */ - {GPIOC, NULL, ADC1, 2, 0, 12}, /* PC2 */ - {GPIOC, NULL, ADC1, 3, 0, 13}, /* PC3 */ - {GPIOC, NULL, ADC1, 4, 0, 14}, /* PC4 */ - {GPIOC, NULL, ADC1, 5, 0, 15}, /* PC5 */ - {GPIOC, TIMER8, NULL, 6, 1, ADCx}, /* PC6 I2S2_MCK/SDIO_D6*/ - {GPIOC, TIMER8, NULL, 7, 2, ADCx}, /* PC7 I2S3_MCK/SDIO_D7*/ - {GPIOC, TIMER8, NULL, 8, 3, ADCx}, /* PC8 SDIO_D0*/ - {GPIOC, TIMER8, NULL, 9, 4, ADCx}, /* PC9 SDIO_D1*/ - {GPIOC, NULL, NULL, 10, 0, ADCx}, /* PC10 UART4_TX/SDIO_D2 */ - {GPIOC, NULL, NULL, 11, 0, ADCx}, /* PC11 UART4_RX/SDIO_D3 */ - {GPIOC, NULL, NULL, 12, 0, ADCx}, /* PC12 UART5_TX/SDIO_CK */ - {GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 TAMPER-RTC/ Limited output*/ - {GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 OSC32_IN/ Limited output*/ - {GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 OSC32_OUT/ Limited output*/ + {&gpioc, NULL, &adc1, 0, 0, 10}, /* PC0 */ + {&gpioc, NULL, &adc1, 1, 0, 11}, /* PC1 */ + {&gpioc, NULL, &adc1, 2, 0, 12}, /* PC2 */ + {&gpioc, NULL, &adc1, 3, 0, 13}, /* PC3 */ + {&gpioc, NULL, &adc1, 4, 0, 14}, /* PC4 */ + {&gpioc, NULL, &adc1, 5, 0, 15}, /* PC5 */ + {&gpioc, &timer8, NULL, 6, 1, ADCx}, /* PC6 I2S2_MCK/SDIO_D6*/ + {&gpioc, &timer8, NULL, 7, 2, ADCx}, /* PC7 I2S3_MCK/SDIO_D7*/ + {&gpioc, &timer8, NULL, 8, 3, ADCx}, /* PC8 SDIO_D0*/ + {&gpioc, &timer8, NULL, 9, 4, ADCx}, /* PC9 SDIO_D1*/ + {&gpioc, NULL, NULL, 10, 0, ADCx}, /* PC10 UART4_TX/SDIO_D2 */ + {&gpioc, NULL, NULL, 11, 0, ADCx}, /* PC11 UART4_RX/SDIO_D3 */ + {&gpioc, NULL, NULL, 12, 0, ADCx}, /* PC12 UART5_TX/SDIO_CK */ + {&gpioc, NULL, NULL, 13, 0, ADCx}, /* PC13 TAMPER-RTC/ Limited output*/ + {&gpioc, NULL, NULL, 14, 0, ADCx}, /* PC14 OSC32_IN/ Limited output*/ + {&gpioc, NULL, NULL, 15, 0, ADCx}, /* PC15 OSC32_OUT/ Limited output*/ - {GPIOD, NULL, NULL, 0, 0, ADCx} , /* PD0 OSC_IN */ - {GPIOD, NULL, NULL, 1, 0, ADCx} , /* PD1 OSC_OUT */ - {GPIOD, NULL, NULL, 2, 0, ADCx} , /* PD2 TIM3_ETR/UART5_RX SDIO_CMD */ - {GPIOD, NULL, NULL, 3, 0, ADCx} , /* PD3 FSMC_CLK */ - {GPIOD, NULL, NULL, 4, 0, ADCx} , /* PD4 FSMC_NOE */ - {GPIOD, NULL, NULL, 5, 0, ADCx} , /* PD5 FSMC_NWE */ - {GPIOD, NULL, NULL, 6, 0, ADCx} , /* PD6 FSMC_NWAIT */ - {GPIOD, NULL, NULL, 7, 0, ADCx} , /* PD7 FSMC_NE1/FSMC_NCE2 */ - {GPIOD, NULL, NULL, 8, 0, ADCx} , /* PD8 FSMC_D13 */ - {GPIOD, NULL, NULL, 9, 0, ADCx} , /* PD9 FSMC_D14 */ - {GPIOD, NULL, NULL, 10, 0, ADCx} , /* PD10 FSMC_D15 */ - {GPIOD, NULL, NULL, 11, 0, ADCx} , /* PD11 FSMC_A16 */ - {GPIOD, NULL, NULL, 12, 0, ADCx} , /* PD12 FSMC_A17 */ - {GPIOD, NULL, NULL, 13, 0, ADCx} , /* PD13 FSMC_A18 */ - {GPIOD, NULL, NULL, 14, 0, ADCx} , /* PD14 FSMC_D0 */ - {GPIOD, NULL, NULL, 15, 0, ADCx} , /* PD15 FSMC_D1 */ + {&gpiod, NULL, NULL, 0, 0, ADCx} , /* PD0 OSC_IN */ + {&gpiod, NULL, NULL, 1, 0, ADCx} , /* PD1 OSC_OUT */ + {&gpiod, NULL, NULL, 2, 0, ADCx} , /* PD2 TIM3_ETR/UART5_RX SDIO_CMD */ + {&gpiod, NULL, NULL, 3, 0, ADCx} , /* PD3 FSMC_CLK */ + {&gpiod, NULL, NULL, 4, 0, ADCx} , /* PD4 FSMC_NOE */ + {&gpiod, NULL, NULL, 5, 0, ADCx} , /* PD5 FSMC_NWE */ + {&gpiod, NULL, NULL, 6, 0, ADCx} , /* PD6 FSMC_NWAIT */ + {&gpiod, NULL, NULL, 7, 0, ADCx} , /* PD7 FSMC_NE1/FSMC_NCE2 */ + {&gpiod, NULL, NULL, 8, 0, ADCx} , /* PD8 FSMC_D13 */ + {&gpiod, NULL, NULL, 9, 0, ADCx} , /* PD9 FSMC_D14 */ + {&gpiod, NULL, NULL, 10, 0, ADCx} , /* PD10 FSMC_D15 */ + {&gpiod, NULL, NULL, 11, 0, ADCx} , /* PD11 FSMC_A16 */ + {&gpiod, NULL, NULL, 12, 0, ADCx} , /* PD12 FSMC_A17 */ + {&gpiod, NULL, NULL, 13, 0, ADCx} , /* PD13 FSMC_A18 */ + {&gpiod, NULL, NULL, 14, 0, ADCx} , /* PD14 FSMC_D0 */ + {&gpiod, NULL, NULL, 15, 0, ADCx} , /* PD15 FSMC_D1 */ - {GPIOE, NULL, NULL, 0, 0, ADCx} , /* PE0 TIM4_ETR / FSMC_NBL0 */ - {GPIOE, NULL, NULL, 1, 0, ADCx} , /* PE1 FSMC_NBL1 */ - {GPIOE, NULL, NULL, 2, 0, ADCx} , /* PE2 TRACECK/ FSMC_A23 */ - {GPIOE, NULL, NULL, 3, 0, ADCx} , /* PE3 TRACED0/FSMC_A19 */ - {GPIOE, NULL, NULL, 4, 0, ADCx} , /* PE4 TRACED1/FSMC_A20 */ - {GPIOE, NULL, NULL, 5, 0, ADCx} , /* PE5 TRACED2/FSMC_A21 */ - {GPIOE, NULL, NULL, 6, 0, ADCx} , /* PE6 TRACED3/FSMC_A22 */ - {GPIOE, NULL, NULL, 7, 0, ADCx} , /* PE7 FSMC_D4 */ - {GPIOE, NULL, NULL, 8, 0, ADCx} , /* PE8 FSMC_D5 */ - {GPIOE, NULL, NULL, 9, 0, ADCx} , /* PE9 FSMC_D6 */ - {GPIOE, NULL, NULL, 10, 0, ADCx} , /* PE10 FSMC_D7 */ - {GPIOE, NULL, NULL, 11, 0, ADCx} , /* PE11 FSMC_D8 */ - {GPIOE, NULL, NULL, 12, 0, ADCx} , /* PE12 FSMC_D9 */ - {GPIOE, NULL, NULL, 13, 0, ADCx} , /* PE13 FSMC_D10 */ - {GPIOE, NULL, NULL, 14, 0, ADCx} , /* PE14 FSMC_D11 */ - {GPIOE, NULL, NULL, 15, 0, ADCx} , /* PE15 FSMC_D12 */ + {&gpioe, NULL, NULL, 0, 0, ADCx} , /* PE0 TIM4_ETR / FSMC_NBL0 */ + {&gpioe, NULL, NULL, 1, 0, ADCx} , /* PE1 FSMC_NBL1 */ + {&gpioe, NULL, NULL, 2, 0, ADCx} , /* PE2 TRACECK/ FSMC_A23 */ + {&gpioe, NULL, NULL, 3, 0, ADCx} , /* PE3 TRACED0/FSMC_A19 */ + {&gpioe, NULL, NULL, 4, 0, ADCx} , /* PE4 TRACED1/FSMC_A20 */ + {&gpioe, NULL, NULL, 5, 0, ADCx} , /* PE5 TRACED2/FSMC_A21 */ + {&gpioe, NULL, NULL, 6, 0, ADCx} , /* PE6 TRACED3/FSMC_A22 */ + {&gpioe, NULL, NULL, 7, 0, ADCx} , /* PE7 FSMC_D4 */ + {&gpioe, NULL, NULL, 8, 0, ADCx} , /* PE8 FSMC_D5 */ + {&gpioe, NULL, NULL, 9, 0, ADCx} , /* PE9 FSMC_D6 */ + {&gpioe, NULL, NULL, 10, 0, ADCx} , /* PE10 FSMC_D7 */ + {&gpioe, NULL, NULL, 11, 0, ADCx} , /* PE11 FSMC_D8 */ + {&gpioe, NULL, NULL, 12, 0, ADCx} , /* PE12 FSMC_D9 */ + {&gpioe, NULL, NULL, 13, 0, ADCx} , /* PE13 FSMC_D10 */ + {&gpioe, NULL, NULL, 14, 0, ADCx} , /* PE14 FSMC_D11 */ + {&gpioe, NULL, NULL, 15, 0, ADCx} , /* PE15 FSMC_D12 */ }; diff --git a/STM32F1/variants/generic_stm32f103z/board.cpp b/STM32F1/variants/generic_stm32f103z/board.cpp index cb04ae9..830479e 100644 --- a/STM32F1/variants/generic_stm32f103z/board.cpp +++ b/STM32F1/variants/generic_stm32f103z/board.cpp @@ -62,7 +62,7 @@ void boardInit(void) { // PMAP_ROW() lets us specify a row (really a struct stm32_pin_info) // in the pin map. Its arguments are: // -// - GPIO device for the pin (GPIOA, etc.) +// - GPIO device for the pin (&gpioa, etc.) // - GPIO bit for the pin (0 through 15) // - Timer device, or NULL if none // - Timer channel (1 to 4, for PWM), or 0 if none @@ -80,126 +80,126 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { uint8 pinMode; mode specific by pinMode call (Roger Clark added to optimize compatibility with Arduino API */ - {GPIOA, TIMER2, ADC1, 0, 1, 0}, /* PA0 */ - {GPIOA, TIMER2, ADC1, 1, 2, 1}, /* PA1 */ - {GPIOA, TIMER2, ADC1, 2, 3, 2}, /* PA2 */ - {GPIOA, TIMER2, ADC1, 3, 4, 3}, /* PA3 */ - {GPIOA, NULL, ADC1, 4, 0, 4}, /* PA4 */ - {GPIOA, NULL, ADC1, 5, 0, 5}, /* PA5 */ - {GPIOA, TIMER3, ADC1, 6, 1, 6}, /* PA6 */ - {GPIOA, TIMER3, ADC1, 7, 2, 7}, /* PA7 */ - {GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */ - {GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */ - {GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */ - {GPIOA, NULL, NULL, 11, 0, ADCx}, /* PA11 */ - {GPIOA, NULL, NULL, 12, 0, ADCx}, /* PA12 */ - {GPIOA, NULL, NULL, 13, 0, ADCx}, /* PA13 */ - {GPIOA, NULL, NULL, 14, 0, ADCx}, /* PA14 */ - {GPIOA, NULL, NULL, 15, 0, ADCx}, /* PA15 */ + {&gpioa, &timer2, &adc1, 0, 1, 0}, /* PA0 */ + {&gpioa, &timer2, &adc1, 1, 2, 1}, /* PA1 */ + {&gpioa, &timer2, &adc1, 2, 3, 2}, /* PA2 */ + {&gpioa, &timer2, &adc1, 3, 4, 3}, /* PA3 */ + {&gpioa, NULL, &adc1, 4, 0, 4}, /* PA4 */ + {&gpioa, NULL, &adc1, 5, 0, 5}, /* PA5 */ + {&gpioa, &timer3, &adc1, 6, 1, 6}, /* PA6 */ + {&gpioa, &timer3, &adc1, 7, 2, 7}, /* PA7 */ + {&gpioa, &timer1, NULL, 8, 1, ADCx}, /* PA8 */ + {&gpioa, &timer1, NULL, 9, 2, ADCx}, /* PA9 */ + {&gpioa, &timer1, NULL, 10, 3, ADCx}, /* PA10 */ + {&gpioa, NULL, NULL, 11, 0, ADCx}, /* PA11 */ + {&gpioa, NULL, NULL, 12, 0, ADCx}, /* PA12 */ + {&gpioa, NULL, NULL, 13, 0, ADCx}, /* PA13 */ + {&gpioa, NULL, NULL, 14, 0, ADCx}, /* PA14 */ + {&gpioa, NULL, NULL, 15, 0, ADCx}, /* PA15 */ - {GPIOB, TIMER3, ADC1, 0, 3, 8}, /* PB0 */ - {GPIOB, TIMER3, ADC1, 1, 4, 9}, /* PB1 */ - {GPIOB, TIMER3, ADC1, 2, 4, 9}, /* PB2 */ - {GPIOB, NULL, NULL, 3, 0, ADCx}, /* PB3 */ - {GPIOB, NULL, NULL, 4, 0, ADCx}, /* PB4 */ - {GPIOB, NULL, NULL, 5, 0, ADCx}, /* PB5 */ - {GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */ - {GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */ - {GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */ - {GPIOB, TIMER4, NULL, 9, 4, ADCx}, /* PB9 */ - {GPIOB, NULL, NULL, 10, 0, ADCx}, /* PB10 */ - {GPIOB, NULL, NULL, 11, 0, ADCx}, /* PB11 */ - {GPIOB, NULL, NULL, 12, 0, ADCx}, /* PB12 */ - {GPIOB, NULL, NULL, 13, 0, ADCx}, /* PB13 */ - {GPIOB, NULL, NULL, 14, 0, ADCx}, /* PB14 */ - {GPIOB, NULL, NULL, 15, 0, ADCx}, /* PB15 */ + {&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */ + {&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */ + {&gpiob, &timer3, &adc1, 2, 4, 9}, /* PB2 */ + {&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */ + {&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */ + {&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */ + {&gpiob, &timer4, NULL, 6, 1, ADCx}, /* PB6 */ + {&gpiob, &timer4, NULL, 7, 2, ADCx}, /* PB7 */ + {&gpiob, &timer4, NULL, 8, 3, ADCx}, /* PB8 */ + {&gpiob, &timer4, NULL, 9, 4, ADCx}, /* PB9 */ + {&gpiob, NULL, NULL, 10, 0, ADCx}, /* PB10 */ + {&gpiob, NULL, NULL, 11, 0, ADCx}, /* PB11 */ + {&gpiob, NULL, NULL, 12, 0, ADCx}, /* PB12 */ + {&gpiob, NULL, NULL, 13, 0, ADCx}, /* PB13 */ + {&gpiob, NULL, NULL, 14, 0, ADCx}, /* PB14 */ + {&gpiob, NULL, NULL, 15, 0, ADCx}, /* PB15 */ - {GPIOC, NULL, ADC1, 0, 0, 10}, /* PC0 */ - {GPIOC, NULL, ADC1, 1, 0, 11}, /* PC1 */ - {GPIOC, NULL, ADC1, 2, 0, 12}, /* PC2 */ - {GPIOC, NULL, ADC1, 3, 0, 13}, /* PC3 */ - {GPIOC, NULL, ADC1, 4, 0, 14}, /* PC4 */ - {GPIOC, NULL, ADC1, 5, 0, 15}, /* PC5 */ - {GPIOC, TIMER8, NULL, 6, 1, ADCx}, /* PC6 */ - {GPIOC, TIMER8, NULL, 7, 2, ADCx}, /* PC7 */ - {GPIOC, TIMER8, NULL, 8, 3, ADCx}, /* PC8 */ - {GPIOC, TIMER8, NULL, 9, 4, ADCx}, /* PC9 */ - {GPIOC, NULL, NULL, 10, 0, ADCx}, /* PC10 UART4_TX/SDIO_D2 */ - {GPIOC, NULL, NULL, 11, 0, ADCx}, /* PC11 UART4_RX/SDIO_D3 */ - {GPIOC, NULL, NULL, 12, 0, ADCx}, /* PC12 UART5_TX/SDIO_CK */ - {GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 TAMPER-RTC */ - {GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 OSC32_IN */ - {GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 OSC32_OUT */ + {&gpioc, NULL, &adc1, 0, 0, 10}, /* PC0 */ + {&gpioc, NULL, &adc1, 1, 0, 11}, /* PC1 */ + {&gpioc, NULL, &adc1, 2, 0, 12}, /* PC2 */ + {&gpioc, NULL, &adc1, 3, 0, 13}, /* PC3 */ + {&gpioc, NULL, &adc1, 4, 0, 14}, /* PC4 */ + {&gpioc, NULL, &adc1, 5, 0, 15}, /* PC5 */ + {&gpioc, &timer8, NULL, 6, 1, ADCx}, /* PC6 */ + {&gpioc, &timer8, NULL, 7, 2, ADCx}, /* PC7 */ + {&gpioc, &timer8, NULL, 8, 3, ADCx}, /* PC8 */ + {&gpioc, &timer8, NULL, 9, 4, ADCx}, /* PC9 */ + {&gpioc, NULL, NULL, 10, 0, ADCx}, /* PC10 UART4_TX/SDIO_D2 */ + {&gpioc, NULL, NULL, 11, 0, ADCx}, /* PC11 UART4_RX/SDIO_D3 */ + {&gpioc, NULL, NULL, 12, 0, ADCx}, /* PC12 UART5_TX/SDIO_CK */ + {&gpioc, NULL, NULL, 13, 0, ADCx}, /* PC13 TAMPER-RTC */ + {&gpioc, NULL, NULL, 14, 0, ADCx}, /* PC14 OSC32_IN */ + {&gpioc, NULL, NULL, 15, 0, ADCx}, /* PC15 OSC32_OUT */ - {GPIOD, NULL, NULL, 0, 0, ADCx} , /* PD0 OSC_IN */ - {GPIOD, NULL, NULL, 1, 0, ADCx} , /* PD1 OSC_OUT */ - {GPIOD, NULL, NULL, 2, 0, ADCx} , /* PD2 TIM3_ETR/UART5_RX SDIO_CMD */ + {&gpiod, NULL, NULL, 0, 0, ADCx} , /* PD0 OSC_IN */ + {&gpiod, NULL, NULL, 1, 0, ADCx} , /* PD1 OSC_OUT */ + {&gpiod, NULL, NULL, 2, 0, ADCx} , /* PD2 TIM3_ETR/UART5_RX SDIO_CMD */ - {GPIOD, NULL, NULL, 3, 0, ADCx} , /* PD3 FSMC_CLK */ - {GPIOD, NULL, NULL, 4, 0, ADCx} , /* PD4 FSMC_NOE */ - {GPIOD, NULL, NULL, 5, 0, ADCx} , /* PD5 FSMC_NWE */ - {GPIOD, NULL, NULL, 6, 0, ADCx} , /* PD6 FSMC_NWAIT */ - {GPIOD, NULL, NULL, 7, 0, ADCx} , /* PD7 FSMC_NE1/FSMC_NCE2 */ - {GPIOD, NULL, NULL, 8, 0, ADCx} , /* PD8 FSMC_D13 */ - {GPIOD, NULL, NULL, 9, 0, ADCx} , /* PD9 FSMC_D14 */ - {GPIOD, NULL, NULL, 10, 0, ADCx} , /* PD10 FSMC_D15 */ - {GPIOD, NULL, NULL, 11, 0, ADCx} , /* PD11 FSMC_A16 */ - {GPIOD, NULL, NULL, 12, 0, ADCx} , /* PD12 FSMC_A17 */ - {GPIOD, NULL, NULL, 13, 0, ADCx} , /* PD13 FSMC_A18 */ - {GPIOD, NULL, NULL, 14, 0, ADCx} , /* PD14 FSMC_D0 */ - {GPIOD, NULL, NULL, 15, 0, ADCx} , /* PD15 FSMC_D1 */ + {&gpiod, NULL, NULL, 3, 0, ADCx} , /* PD3 FSMC_CLK */ + {&gpiod, NULL, NULL, 4, 0, ADCx} , /* PD4 FSMC_NOE */ + {&gpiod, NULL, NULL, 5, 0, ADCx} , /* PD5 FSMC_NWE */ + {&gpiod, NULL, NULL, 6, 0, ADCx} , /* PD6 FSMC_NWAIT */ + {&gpiod, NULL, NULL, 7, 0, ADCx} , /* PD7 FSMC_NE1/FSMC_NCE2 */ + {&gpiod, NULL, NULL, 8, 0, ADCx} , /* PD8 FSMC_D13 */ + {&gpiod, NULL, NULL, 9, 0, ADCx} , /* PD9 FSMC_D14 */ + {&gpiod, NULL, NULL, 10, 0, ADCx} , /* PD10 FSMC_D15 */ + {&gpiod, NULL, NULL, 11, 0, ADCx} , /* PD11 FSMC_A16 */ + {&gpiod, NULL, NULL, 12, 0, ADCx} , /* PD12 FSMC_A17 */ + {&gpiod, NULL, NULL, 13, 0, ADCx} , /* PD13 FSMC_A18 */ + {&gpiod, NULL, NULL, 14, 0, ADCx} , /* PD14 FSMC_D0 */ + {&gpiod, NULL, NULL, 15, 0, ADCx} , /* PD15 FSMC_D1 */ - {GPIOE, NULL, NULL, 0, 0, ADCx} , /* PE0 */ - {GPIOE, NULL, NULL, 1, 0, ADCx} , /* PE1 */ - {GPIOE, NULL, NULL, 2, 0, ADCx} , /* PE2 */ - {GPIOE, NULL, NULL, 3, 0, ADCx} , /* PE3 */ - {GPIOE, NULL, NULL, 4, 0, ADCx} , /* PE4 */ - {GPIOE, NULL, NULL, 5, 0, ADCx} , /* PE5 */ - {GPIOE, NULL, NULL, 6, 0, ADCx} , /* PE6 */ - {GPIOE, NULL, NULL, 7, 0, ADCx} , /* PE7 */ - {GPIOE, NULL, NULL, 8, 0, ADCx} , /* PE8 */ - {GPIOE, NULL, NULL, 9, 0, ADCx} , /* PE9 */ - {GPIOE, NULL, NULL, 10, 0, ADCx} , /* PE10 */ - {GPIOE, NULL, NULL, 11, 0, ADCx} , /* PE11 */ - {GPIOE, NULL, NULL, 12, 0, ADCx} , /* PE12 */ - {GPIOE, NULL, NULL, 13, 0, ADCx} , /* PE13 */ - {GPIOE, NULL, NULL, 14, 0, ADCx} , /* PE14 */ - {GPIOE, NULL, NULL, 15, 0, ADCx} , /* PE15 */ + {&gpioe, NULL, NULL, 0, 0, ADCx} , /* PE0 */ + {&gpioe, NULL, NULL, 1, 0, ADCx} , /* PE1 */ + {&gpioe, NULL, NULL, 2, 0, ADCx} , /* PE2 */ + {&gpioe, NULL, NULL, 3, 0, ADCx} , /* PE3 */ + {&gpioe, NULL, NULL, 4, 0, ADCx} , /* PE4 */ + {&gpioe, NULL, NULL, 5, 0, ADCx} , /* PE5 */ + {&gpioe, NULL, NULL, 6, 0, ADCx} , /* PE6 */ + {&gpioe, NULL, NULL, 7, 0, ADCx} , /* PE7 */ + {&gpioe, NULL, NULL, 8, 0, ADCx} , /* PE8 */ + {&gpioe, NULL, NULL, 9, 0, ADCx} , /* PE9 */ + {&gpioe, NULL, NULL, 10, 0, ADCx} , /* PE10 */ + {&gpioe, NULL, NULL, 11, 0, ADCx} , /* PE11 */ + {&gpioe, NULL, NULL, 12, 0, ADCx} , /* PE12 */ + {&gpioe, NULL, NULL, 13, 0, ADCx} , /* PE13 */ + {&gpioe, NULL, NULL, 14, 0, ADCx} , /* PE14 */ + {&gpioe, NULL, NULL, 15, 0, ADCx} , /* PE15 */ - {GPIOF, NULL, NULL, 0, 0, ADCx} , /* PF0 */ - {GPIOF, NULL, NULL, 1, 0, ADCx} , /* PF1 */ - {GPIOF, NULL, NULL, 2, 0, ADCx} , /* PF2 */ - {GPIOF, NULL, NULL, 3, 0, ADCx} , /* PF3 */ - {GPIOF, NULL, NULL, 4, 0, ADCx} , /* PF4 */ - {GPIOF, NULL, NULL, 5, 0, ADCx} , /* PF5 */ - {GPIOF, NULL, NULL, 6, 0, ADCx} , /* PF6 */ - {GPIOF, NULL, NULL, 7, 0, ADCx} , /* PF7 */ - {GPIOF, NULL, NULL, 8, 0, ADCx} , /* PF8 */ - {GPIOF, NULL, NULL, 9, 0, ADCx} , /* PF9 */ - {GPIOF, NULL, NULL, 10, 0, ADCx} , /* PF10 */ - {GPIOF, NULL, NULL, 11, 0, ADCx} , /* PF11 */ - {GPIOF, NULL, NULL, 12, 0, ADCx} , /* PF12 */ - {GPIOF, NULL, NULL, 13, 0, ADCx} , /* PF13 */ - {GPIOF, NULL, NULL, 14, 0, ADCx} , /* PF14 */ - {GPIOF, NULL, NULL, 15, 0, ADCx} , /* PF15 */ + {&gpiof, NULL, NULL, 0, 0, ADCx} , /* PF0 */ + {&gpiof, NULL, NULL, 1, 0, ADCx} , /* PF1 */ + {&gpiof, NULL, NULL, 2, 0, ADCx} , /* PF2 */ + {&gpiof, NULL, NULL, 3, 0, ADCx} , /* PF3 */ + {&gpiof, NULL, NULL, 4, 0, ADCx} , /* PF4 */ + {&gpiof, NULL, NULL, 5, 0, ADCx} , /* PF5 */ + {&gpiof, NULL, NULL, 6, 0, ADCx} , /* PF6 */ + {&gpiof, NULL, NULL, 7, 0, ADCx} , /* PF7 */ + {&gpiof, NULL, NULL, 8, 0, ADCx} , /* PF8 */ + {&gpiof, NULL, NULL, 9, 0, ADCx} , /* PF9 */ + {&gpiof, NULL, NULL, 10, 0, ADCx} , /* PF10 */ + {&gpiof, NULL, NULL, 11, 0, ADCx} , /* PF11 */ + {&gpiof, NULL, NULL, 12, 0, ADCx} , /* PF12 */ + {&gpiof, NULL, NULL, 13, 0, ADCx} , /* PF13 */ + {&gpiof, NULL, NULL, 14, 0, ADCx} , /* PF14 */ + {&gpiof, NULL, NULL, 15, 0, ADCx} , /* PF15 */ - {GPIOG, NULL, NULL, 0, 0, ADCx} , /* PG0 */ - {GPIOG, NULL, NULL, 1, 0, ADCx} , /* PG1 */ - {GPIOG, NULL, NULL, 2, 0, ADCx} , /* PG2 */ - {GPIOG, NULL, NULL, 3, 0, ADCx} , /* PG3 */ - {GPIOG, NULL, NULL, 4, 0, ADCx} , /* PG4 */ - {GPIOG, NULL, NULL, 5, 0, ADCx} , /* PG5 */ - {GPIOG, NULL, NULL, 6, 0, ADCx} , /* PG6 */ - {GPIOG, NULL, NULL, 7, 0, ADCx} , /* PG7 */ - {GPIOG, NULL, NULL, 8, 0, ADCx} , /* PG8 */ - {GPIOG, NULL, NULL, 9, 0, ADCx} , /* PG9 */ - {GPIOG, NULL, NULL, 10, 0, ADCx} , /* PG10 */ - {GPIOG, NULL, NULL, 11, 0, ADCx} , /* PG11 */ - {GPIOG, NULL, NULL, 12, 0, ADCx} , /* PG12 */ - {GPIOG, NULL, NULL, 13, 0, ADCx} , /* PG13 */ - {GPIOG, NULL, NULL, 14, 0, ADCx} , /* PG14 */ - {GPIOG, NULL, NULL, 15, 0, ADCx} /* PG15 */ + {&gpiog, NULL, NULL, 0, 0, ADCx} , /* PG0 */ + {&gpiog, NULL, NULL, 1, 0, ADCx} , /* PG1 */ + {&gpiog, NULL, NULL, 2, 0, ADCx} , /* PG2 */ + {&gpiog, NULL, NULL, 3, 0, ADCx} , /* PG3 */ + {&gpiog, NULL, NULL, 4, 0, ADCx} , /* PG4 */ + {&gpiog, NULL, NULL, 5, 0, ADCx} , /* PG5 */ + {&gpiog, NULL, NULL, 6, 0, ADCx} , /* PG6 */ + {&gpiog, NULL, NULL, 7, 0, ADCx} , /* PG7 */ + {&gpiog, NULL, NULL, 8, 0, ADCx} , /* PG8 */ + {&gpiog, NULL, NULL, 9, 0, ADCx} , /* PG9 */ + {&gpiog, NULL, NULL, 10, 0, ADCx} , /* PG10 */ + {&gpiog, NULL, NULL, 11, 0, ADCx} , /* PG11 */ + {&gpiog, NULL, NULL, 12, 0, ADCx} , /* PG12 */ + {&gpiog, NULL, NULL, 13, 0, ADCx} , /* PG13 */ + {&gpiog, NULL, NULL, 14, 0, ADCx} , /* PG14 */ + {&gpiog, NULL, NULL, 15, 0, ADCx} /* PG15 */ }; /* Basically everything that is defined as having a timer us PWM */ diff --git a/STM32F1/variants/maple/board.cpp b/STM32F1/variants/maple/board.cpp index e1f66c4..a4c0335 100644 --- a/STM32F1/variants/maple/board.cpp +++ b/STM32F1/variants/maple/board.cpp @@ -62,7 +62,7 @@ void boardInit(void) { // PMAP_ROW() lets us specify a row (really a struct stm32_pin_info) // in the pin map. Its arguments are: // -// - GPIO device for the pin (GPIOA, etc.) +// - GPIO device for the pin (&gpioa, etc.) // - GPIO bit for the pin (0 through 15) // - Timer device, or NULL if none // - Timer channel (1 to 4, for PWM), or 0 if none @@ -72,59 +72,59 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { /* Top header */ - PMAP_ROW(GPIOA, 3, TIMER2, 4, ADC1, 3), /* D0/PA3 */ - PMAP_ROW(GPIOA, 2, TIMER2, 3, ADC1, 2), /* D1/PA2 */ - PMAP_ROW(GPIOA, 0, TIMER2, 1, ADC1, 0), /* D2/PA0 */ - PMAP_ROW(GPIOA, 1, TIMER2, 2, ADC1, 1), /* D3/PA1 */ - PMAP_ROW(GPIOB, 5, NULL, 0, NULL, ADCx), /* D4/PB5 */ - PMAP_ROW(GPIOB, 6, TIMER4, 1, NULL, ADCx), /* D5/PB6 */ - PMAP_ROW(GPIOA, 8, TIMER1, 1, NULL, ADCx), /* D6/PA8 */ - PMAP_ROW(GPIOA, 9, TIMER1, 2, NULL, ADCx), /* D7/PA9 */ - PMAP_ROW(GPIOA, 10, TIMER1, 3, NULL, ADCx), /* D8/PA10 */ - PMAP_ROW(GPIOB, 7, TIMER4, 2, NULL, ADCx), /* D9/PB7 */ - PMAP_ROW(GPIOA, 4, NULL, 0, ADC1, 4), /* D10/PA4 */ - PMAP_ROW(GPIOA, 7, TIMER3, 2, ADC1, 7), /* D11/PA7 */ - PMAP_ROW(GPIOA, 6, TIMER3, 1, ADC1, 6), /* D12/PA6 */ - PMAP_ROW(GPIOA, 5, NULL, 0, ADC1, 5), /* D13/PA5 (LED) */ - PMAP_ROW(GPIOB, 8, TIMER4, 3, NULL, ADCx), /* D14/PB8 */ + PMAP_ROW(&gpioa, 3, &timer2, 4, &adc1, 3), /* D0/PA3 */ + PMAP_ROW(&gpioa, 2, &timer2, 3, &adc1, 2), /* D1/PA2 */ + PMAP_ROW(&gpioa, 0, &timer2, 1, &adc1, 0), /* D2/PA0 */ + PMAP_ROW(&gpioa, 1, &timer2, 2, &adc1, 1), /* D3/PA1 */ + PMAP_ROW(&gpiob, 5, NULL, 0, NULL, ADCx), /* D4/PB5 */ + PMAP_ROW(&gpiob, 6, &timer4, 1, NULL, ADCx), /* D5/PB6 */ + PMAP_ROW(&gpioa, 8, &timer1, 1, NULL, ADCx), /* D6/PA8 */ + PMAP_ROW(&gpioa, 9, &timer1, 2, NULL, ADCx), /* D7/PA9 */ + PMAP_ROW(&gpioa, 10, &timer1, 3, NULL, ADCx), /* D8/PA10 */ + PMAP_ROW(&gpiob, 7, &timer4, 2, NULL, ADCx), /* D9/PB7 */ + PMAP_ROW(&gpioa, 4, NULL, 0, &adc1, 4), /* D10/PA4 */ + PMAP_ROW(&gpioa, 7, &timer3, 2, &adc1, 7), /* D11/PA7 */ + PMAP_ROW(&gpioa, 6, &timer3, 1, &adc1, 6), /* D12/PA6 */ + PMAP_ROW(&gpioa, 5, NULL, 0, &adc1, 5), /* D13/PA5 (LED) */ + PMAP_ROW(&gpiob, 8, &timer4, 3, NULL, ADCx), /* D14/PB8 */ /* Little header */ - PMAP_ROW(GPIOC, 0, NULL, 0, ADC1, 10), /* D15/PC0 */ - PMAP_ROW(GPIOC, 1, NULL, 0, ADC1, 11), /* D16/PC1 */ - PMAP_ROW(GPIOC, 2, NULL, 0, ADC1, 12), /* D17/PC2 */ - PMAP_ROW(GPIOC, 3, NULL, 0, ADC1, 13), /* D18/PC3 */ - PMAP_ROW(GPIOC, 4, NULL, 0, ADC1, 14), /* D19/PC4 */ - PMAP_ROW(GPIOC, 5, NULL, 0, ADC1, 15), /* D20/PC5 */ + PMAP_ROW(&gpioc, 0, NULL, 0, &adc1, 10), /* D15/PC0 */ + PMAP_ROW(&gpioc, 1, NULL, 0, &adc1, 11), /* D16/PC1 */ + PMAP_ROW(&gpioc, 2, NULL, 0, &adc1, 12), /* D17/PC2 */ + PMAP_ROW(&gpioc, 3, NULL, 0, &adc1, 13), /* D18/PC3 */ + PMAP_ROW(&gpioc, 4, NULL, 0, &adc1, 14), /* D19/PC4 */ + PMAP_ROW(&gpioc, 5, NULL, 0, &adc1, 15), /* D20/PC5 */ /* External header */ - PMAP_ROW(GPIOC, 13, NULL, 0, NULL, ADCx), /* D21/PC13 */ - PMAP_ROW(GPIOC, 14, NULL, 0, NULL, ADCx), /* D22/PC14 */ - PMAP_ROW(GPIOC, 15, NULL, 0, NULL, ADCx), /* D23/PC15 */ - PMAP_ROW(GPIOB, 9, TIMER4, 4, NULL, ADCx), /* D24/PB9 */ - PMAP_ROW(GPIOD, 2, NULL, 0, NULL, ADCx), /* D25/PD2 */ - PMAP_ROW(GPIOC, 10, NULL, 0, NULL, ADCx), /* D26/PC10 */ - PMAP_ROW(GPIOB, 0, TIMER3, 3, ADC1, 8), /* D27/PB0 */ - PMAP_ROW(GPIOB, 1, TIMER3, 4, ADC1, 9), /* D28/PB1 */ - PMAP_ROW(GPIOB, 10, NULL, 0, NULL, ADCx), /* D29/PB10 */ - PMAP_ROW(GPIOB, 11, NULL, 0, NULL, ADCx), /* D30/PB11 */ - PMAP_ROW(GPIOB, 12, NULL, 0, NULL, ADCx), /* D31/PB12 */ - PMAP_ROW(GPIOB, 13, NULL, 0, NULL, ADCx), /* D32/PB13 */ - PMAP_ROW(GPIOB, 14, NULL, 0, NULL, ADCx), /* D33/PB14 */ - PMAP_ROW(GPIOB, 15, NULL, 0, NULL, ADCx), /* D34/PB15 */ - PMAP_ROW(GPIOC, 6, NULL, 0, NULL, ADCx), /* D35/PC6 */ - PMAP_ROW(GPIOC, 7, NULL, 0, NULL, ADCx), /* D36/PC7 */ - PMAP_ROW(GPIOC, 8, NULL, 0, NULL, ADCx), /* D37/PC8 */ - PMAP_ROW(GPIOC, 9, NULL, 0, NULL, ADCx), /* D38/PC9 (BUT) */ + PMAP_ROW(&gpioc, 13, NULL, 0, NULL, ADCx), /* D21/PC13 */ + PMAP_ROW(&gpioc, 14, NULL, 0, NULL, ADCx), /* D22/PC14 */ + PMAP_ROW(&gpioc, 15, NULL, 0, NULL, ADCx), /* D23/PC15 */ + PMAP_ROW(&gpiob, 9, &timer4, 4, NULL, ADCx), /* D24/PB9 */ + PMAP_ROW(&gpiod, 2, NULL, 0, NULL, ADCx), /* D25/PD2 */ + PMAP_ROW(&gpioc, 10, NULL, 0, NULL, ADCx), /* D26/PC10 */ + PMAP_ROW(&gpiob, 0, &timer3, 3, &adc1, 8), /* D27/PB0 */ + PMAP_ROW(&gpiob, 1, &timer3, 4, &adc1, 9), /* D28/PB1 */ + PMAP_ROW(&gpiob, 10, NULL, 0, NULL, ADCx), /* D29/PB10 */ + PMAP_ROW(&gpiob, 11, NULL, 0, NULL, ADCx), /* D30/PB11 */ + PMAP_ROW(&gpiob, 12, NULL, 0, NULL, ADCx), /* D31/PB12 */ + PMAP_ROW(&gpiob, 13, NULL, 0, NULL, ADCx), /* D32/PB13 */ + PMAP_ROW(&gpiob, 14, NULL, 0, NULL, ADCx), /* D33/PB14 */ + PMAP_ROW(&gpiob, 15, NULL, 0, NULL, ADCx), /* D34/PB15 */ + PMAP_ROW(&gpioc, 6, NULL, 0, NULL, ADCx), /* D35/PC6 */ + PMAP_ROW(&gpioc, 7, NULL, 0, NULL, ADCx), /* D36/PC7 */ + PMAP_ROW(&gpioc, 8, NULL, 0, NULL, ADCx), /* D37/PC8 */ + PMAP_ROW(&gpioc, 9, NULL, 0, NULL, ADCx), /* D38/PC9 (BUT) */ /* JTAG header */ - PMAP_ROW(GPIOA, 13, NULL, 0, NULL, ADCx), /* D39/PA13 */ - PMAP_ROW(GPIOA, 14, NULL, 0, NULL, ADCx), /* D40/PA14 */ - PMAP_ROW(GPIOA, 15, NULL, 0, NULL, ADCx), /* D41/PA15 */ - PMAP_ROW(GPIOB, 3, NULL, 0, NULL, ADCx), /* D42/PB3 */ - PMAP_ROW(GPIOB, 4, NULL, 0, NULL, ADCx), /* D43/PB4 */ + PMAP_ROW(&gpioa, 13, NULL, 0, NULL, ADCx), /* D39/PA13 */ + PMAP_ROW(&gpioa, 14, NULL, 0, NULL, ADCx), /* D40/PA14 */ + PMAP_ROW(&gpioa, 15, NULL, 0, NULL, ADCx), /* D41/PA15 */ + PMAP_ROW(&gpiob, 3, NULL, 0, NULL, ADCx), /* D42/PB3 */ + PMAP_ROW(&gpiob, 4, NULL, 0, NULL, ADCx), /* D43/PB4 */ }; // Array of pins you can use for pwmWrite(). Keep it in Flash because diff --git a/STM32F1/variants/maple_ret6/board.cpp b/STM32F1/variants/maple_ret6/board.cpp index c210673..fb92779 100644 --- a/STM32F1/variants/maple_ret6/board.cpp +++ b/STM32F1/variants/maple_ret6/board.cpp @@ -62,7 +62,7 @@ void boardInit(void) { // PMAP_ROW() lets us specify a row (really a struct stm32_pin_info) // in the pin map. Its arguments are: // -// - GPIO device for the pin (GPIOA, etc.) +// - GPIO device for the pin (&gpioa, etc.) // - GPIO bit for the pin (0 through 15) // - Timer device, or NULL if none // - Timer channel (1 to 4, for PWM), or 0 if none @@ -82,66 +82,66 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { /* Top header */ - { GPIOA, TIMER2, ADC1, 3, 4, 3 }, /* D0/PA3 */ - { GPIOA, TIMER2, ADC1, 2, 3, 2 }, /* D1/PA2 */ - { GPIOA, TIMER2, ADC1, 0, 1, 0 }, /* D2/PA0 */ - { GPIOA, TIMER2, ADC1, 1, 2, 1 }, /* D3/PA1 */ - { GPIOB, NULL, NULL, 5, 0, ADCx }, /* D4/PB5 */ - { GPIOB, TIMER4, NULL, 6, 1, ADCx }, /* D5/PB6 */ - { GPIOA, TIMER1, NULL, 8, 1, ADCx }, /* D6/PA8 */ - { GPIOA, TIMER1, NULL, 9, 2, ADCx }, /* D7/PA9 */ - { GPIOA, TIMER1, NULL, 10, 3, ADCx }, /* D8/PA10 */ - { GPIOB, TIMER4, NULL, 7, 2, ADCx }, /* D9/PB7 */ - { GPIOA, NULL, ADC1, 4, 0, 4 }, /* D10/PA4 */ - { GPIOA, TIMER3, ADC1, 7, 2, 7 }, /* D11/PA7 */ - { GPIOA, TIMER3, ADC1, 6, 1, 6 }, /* D12/PA6 */ - { GPIOA, NULL, ADC1, 5, 0, 5 }, /* D13/PA5 (LED) */ - { GPIOB, TIMER4, NULL, 8, 3, ADCx }, /* D14/PB8 */ + { &gpioa, &timer2, &adc1, 3, 4, 3 }, /* D0/PA3 */ + { &gpioa, &timer2, &adc1, 2, 3, 2 }, /* D1/PA2 */ + { &gpioa, &timer2, &adc1, 0, 1, 0 }, /* D2/PA0 */ + { &gpioa, &timer2, &adc1, 1, 2, 1 }, /* D3/PA1 */ + { &gpiob, NULL, NULL, 5, 0, ADCx }, /* D4/PB5 */ + { &gpiob, &timer4, NULL, 6, 1, ADCx }, /* D5/PB6 */ + { &gpioa, &timer1, NULL, 8, 1, ADCx }, /* D6/PA8 */ + { &gpioa, &timer1, NULL, 9, 2, ADCx }, /* D7/PA9 */ + { &gpioa, &timer1, NULL, 10, 3, ADCx }, /* D8/PA10 */ + { &gpiob, &timer4, NULL, 7, 2, ADCx }, /* D9/PB7 */ + { &gpioa, NULL, &adc1, 4, 0, 4 }, /* D10/PA4 */ + { &gpioa, &timer3, &adc1, 7, 2, 7 }, /* D11/PA7 */ + { &gpioa, &timer3, &adc1, 6, 1, 6 }, /* D12/PA6 */ + { &gpioa, NULL, &adc1, 5, 0, 5 }, /* D13/PA5 (LED) */ + { &gpiob, &timer4, NULL, 8, 3, ADCx }, /* D14/PB8 */ /* Little header */ - { GPIOC, NULL, ADC1, 0, 0, 10 }, /* D15/PC0 */ - { GPIOC, NULL, ADC1, 1, 0, 11 }, /* D16/PC1 */ - { GPIOC, NULL, ADC1, 2, 0, 12 }, /* D17/PC2 */ - { GPIOC, NULL, ADC1, 3, 0, 13 }, /* D18/PC3 */ - { GPIOC, NULL, ADC1, 4, 0, 14 }, /* D19/PC4 */ - { GPIOC, NULL, ADC1, 5, 0, 15 }, /* D20/PC5 */ + { &gpioc, NULL, &adc1, 0, 0, 10 }, /* D15/PC0 */ + { &gpioc, NULL, &adc1, 1, 0, 11 }, /* D16/PC1 */ + { &gpioc, NULL, &adc1, 2, 0, 12 }, /* D17/PC2 */ + { &gpioc, NULL, &adc1, 3, 0, 13 }, /* D18/PC3 */ + { &gpioc, NULL, &adc1, 4, 0, 14 }, /* D19/PC4 */ + { &gpioc, NULL, &adc1, 5, 0, 15 }, /* D20/PC5 */ /* External header */ - { GPIOC, NULL, NULL, 13, 0, ADCx }, /* D21/PC13 */ - { GPIOC, NULL, NULL, 14, 0, ADCx }, /* D22/PC14 */ - { GPIOC, NULL, NULL, 15, 0, ADCx }, /* D23/PC15 */ - { GPIOB, TIMER4, NULL, 9, 4, ADCx }, /* D24/PB9 */ - { GPIOD, NULL, NULL, 2, 0, ADCx }, /* D25/PD2 */ - { GPIOC, NULL, NULL, 10, 0, ADCx }, /* D26/PC10 */ - { GPIOB, TIMER3, ADC1, 0, 3, 8 }, /* D27/PB0 */ - { GPIOB, TIMER3, ADC1, 1, 4, 9 }, /* D28/PB1 */ - { GPIOB, NULL, NULL, 10, 0, ADCx }, /* D29/PB10 */ - { GPIOB, NULL, NULL, 11, 0, ADCx }, /* D30/PB11 */ - { GPIOB, NULL, NULL, 12, 0, ADCx }, /* D31/PB12 */ - { GPIOB, NULL, NULL, 13, 0, ADCx }, /* D32/PB13 */ - { GPIOB, NULL, NULL, 14, 0, ADCx }, /* D33/PB14 */ - { GPIOB, NULL, NULL, 15, 0, ADCx }, /* D34/PB15 */ - { GPIOC, TIMER8, NULL, 6, 1, ADCx }, /* D35/PC6 */ - { GPIOC, TIMER8, NULL, 7, 2, ADCx }, /* D36/PC7 */ - { GPIOC, TIMER8, NULL, 8, 3, ADCx }, /* D37/PC8 */ - { GPIOC, TIMER8, NULL, 9, 4, ADCx }, /* D38/PC9 (BUT) */ + { &gpioc, NULL, NULL, 13, 0, ADCx }, /* D21/PC13 */ + { &gpioc, NULL, NULL, 14, 0, ADCx }, /* D22/PC14 */ + { &gpioc, NULL, NULL, 15, 0, ADCx }, /* D23/PC15 */ + { &gpiob, &timer4, NULL, 9, 4, ADCx }, /* D24/PB9 */ + { &gpiod, NULL, NULL, 2, 0, ADCx }, /* D25/PD2 */ + { &gpioc, NULL, NULL, 10, 0, ADCx }, /* D26/PC10 */ + { &gpiob, &timer3, &adc1, 0, 3, 8 }, /* D27/PB0 */ + { &gpiob, &timer3, &adc1, 1, 4, 9 }, /* D28/PB1 */ + { &gpiob, NULL, NULL, 10, 0, ADCx }, /* D29/PB10 */ + { &gpiob, NULL, NULL, 11, 0, ADCx }, /* D30/PB11 */ + { &gpiob, NULL, NULL, 12, 0, ADCx }, /* D31/PB12 */ + { &gpiob, NULL, NULL, 13, 0, ADCx }, /* D32/PB13 */ + { &gpiob, NULL, NULL, 14, 0, ADCx }, /* D33/PB14 */ + { &gpiob, NULL, NULL, 15, 0, ADCx }, /* D34/PB15 */ + { &gpioc, &timer8, NULL, 6, 1, ADCx }, /* D35/PC6 */ + { &gpioc, &timer8, NULL, 7, 2, ADCx }, /* D36/PC7 */ + { &gpioc, &timer8, NULL, 8, 3, ADCx }, /* D37/PC8 */ + { &gpioc, &timer8, NULL, 9, 4, ADCx }, /* D38/PC9 (BUT) */ /* JTAG header */ - { GPIOA, NULL, NULL, 13, 0, ADCx }, /* D39/PA13 */ - { GPIOA, NULL, NULL, 14, 0, ADCx }, /* D40/PA14 */ - { GPIOA, NULL, NULL, 15, 0, ADCx }, /* D41/PA15 */ - { GPIOB, NULL, NULL, 3, 0, ADCx }, /* D42/PB3 */ - { GPIOB, NULL, NULL, 4, 0, ADCx }, /* D43/PB4 */ + { &gpioa, NULL, NULL, 13, 0, ADCx }, /* D39/PA13 */ + { &gpioa, NULL, NULL, 14, 0, ADCx }, /* D40/PA14 */ + { &gpioa, NULL, NULL, 15, 0, ADCx }, /* D41/PA15 */ + { &gpiob, NULL, NULL, 3, 0, ADCx }, /* D42/PB3 */ + { &gpiob, NULL, NULL, 4, 0, ADCx }, /* D43/PB4 */ - { GPIOC, NULL, NULL, 11, 0, ADCx }, /* D44/PC11 UART4_RX/SDIO_D3 */ - { GPIOC, NULL, NULL, 12, 0, ADCx }, /* D45/PC12 UART5_TX/SDIO_CK */ + { &gpioc, NULL, NULL, 11, 0, ADCx }, /* D44/PC11 UART4_RX/SDIO_D3 */ + { &gpioc, NULL, NULL, 12, 0, ADCx }, /* D45/PC12 UART5_TX/SDIO_CK */ - { GPIOD, NULL, NULL, 0, 0, ADCx }, /* PD0 OSC_IN */ - { GPIOD, NULL, NULL, 1, 0, ADCx }, /* PD1 OSC_OUT */ - { GPIOB, NULL, NULL, 2, 0, ADCx }, /* PB2 */ + { &gpiod, NULL, NULL, 0, 0, ADCx }, /* PD0 OSC_IN */ + { &gpiod, NULL, NULL, 1, 0, ADCx }, /* PD1 OSC_OUT */ + { &gpiob, NULL, NULL, 2, 0, ADCx }, /* PB2 */ }; /* Basically everything that is defined as having a timer us PWM */ diff --git a/STM32F1/variants/microduino/board.cpp b/STM32F1/variants/microduino/board.cpp index 6375197..2a00288 100644 --- a/STM32F1/variants/microduino/board.cpp +++ b/STM32F1/variants/microduino/board.cpp @@ -54,35 +54,35 @@ void boardInit(void) { extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { - {GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* D0(RxD0)/PA10 */ - {GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* D1(TxD1)/PA9 */ - {GPIOB, NULL, NULL, 11, 0, ADCx}, /* D2/PB11 */ - {GPIOB, NULL, NULL, 10, 0, ADCx}, /* D3/PB10 */ - {GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* D4/PA8 */ - {GPIOA, NULL, NULL, 13, 0, ADCx}, /* D5/PA13 */ - {GPIOA, NULL, NULL, 14, 0, ADCx}, /* D6/PA14 */ - {GPIOA, NULL, NULL, 15, 0, ADCx}, /* D7/PA15 */ - {GPIOB, NULL, NULL, 3, 0, ADCx}, /* D8/PB3 */ - {GPIOB, NULL, NULL, 4, 0, ADCx}, /* D9/PB4 */ - {GPIOA, NULL, ADC1, 4, 0, 4}, /* D10/PA4 */ - {GPIOA, TIMER3, ADC1, 7, 2, 7}, /* D11/PA7 */ - {GPIOA, TIMER3, ADC1, 6, 1, 6}, /* D12/PA6 */ - {GPIOA, NULL, ADC1, 5, 0, 5}, /* D13/PA5 */ + {&gpioa, &timer1, NULL, 10, 3, ADCx}, /* D0(RxD0)/PA10 */ + {&gpioa, &timer1, NULL, 9, 2, ADCx}, /* D1(TxD1)/PA9 */ + {&gpiob, NULL, NULL, 11, 0, ADCx}, /* D2/PB11 */ + {&gpiob, NULL, NULL, 10, 0, ADCx}, /* D3/PB10 */ + {&gpioa, &timer1, NULL, 8, 1, ADCx}, /* D4/PA8 */ + {&gpioa, NULL, NULL, 13, 0, ADCx}, /* D5/PA13 */ + {&gpioa, NULL, NULL, 14, 0, ADCx}, /* D6/PA14 */ + {&gpioa, NULL, NULL, 15, 0, ADCx}, /* D7/PA15 */ + {&gpiob, NULL, NULL, 3, 0, ADCx}, /* D8/PB3 */ + {&gpiob, NULL, NULL, 4, 0, ADCx}, /* D9/PB4 */ + {&gpioa, NULL, &adc1, 4, 0, 4}, /* D10/PA4 */ + {&gpioa, &timer3, &adc1, 7, 2, 7}, /* D11/PA7 */ + {&gpioa, &timer3, &adc1, 6, 1, 6}, /* D12/PA6 */ + {&gpioa, NULL, &adc1, 5, 0, 5}, /* D13/PA5 */ - {GPIOA, TIMER2, ADC1, 0, 1, 0}, /* D14(A0)/PA0 */ - {GPIOA, TIMER2, ADC1, 1, 2, 1}, /* D15(A1)/PA1 */ - {GPIOA, TIMER2, ADC1, 2, 3, 2}, /* D16(A2)/PA2 */ - {GPIOA, TIMER2, ADC1, 3, 4, 3}, /* D17(A3)/PA3 */ - {GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* D18(A4)/PB7 */ - {GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* D19(A5)/PB6 */ - {GPIOB, TIMER3, ADC1, 0, 3, 8}, /* D20(A6)/PB0 */ - {GPIOB, TIMER3, ADC1, 1, 4, 9}, /* D21(A7)/PB1 */ + {&gpioa, &timer2, &adc1, 0, 1, 0}, /* D14(A0)/PA0 */ + {&gpioa, &timer2, &adc1, 1, 2, 1}, /* D15(A1)/PA1 */ + {&gpioa, &timer2, &adc1, 2, 3, 2}, /* D16(A2)/PA2 */ + {&gpioa, &timer2, &adc1, 3, 4, 3}, /* D17(A3)/PA3 */ + {&gpiob, &timer4, NULL, 7, 2, ADCx}, /* D18(A4)/PB7 */ + {&gpiob, &timer4, NULL, 6, 1, ADCx}, /* D19(A5)/PB6 */ + {&gpiob, &timer3, &adc1, 0, 3, 8}, /* D20(A6)/PB0 */ + {&gpiob, &timer3, &adc1, 1, 4, 9}, /* D21(A7)/PB1 */ - {GPIOA, NULL, NULL, 12, 0, ADCx}, /* D22/PA12/USB D+ */ - {GPIOA, TIMER1, NULL, 11, 4, ADCx}, /* D23/PA11/USB D- */ + {&gpioa, NULL, NULL, 12, 0, ADCx}, /* D22/PA12/USB D+ */ + {&gpioa, &timer1, NULL, 11, 4, ADCx}, /* D23/PA11/USB D- */ // FIXME: find out which pin is the button, if any - {GPIOB, NULL, NULL, 8, 0, ADCx}, /* D24/PB8??/Button */ + {&gpiob, NULL, NULL, 8, 0, ADCx}, /* D24/PB8??/Button */ }; extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = { diff --git a/STM32F1/variants/nucleo_f103rb/board.cpp b/STM32F1/variants/nucleo_f103rb/board.cpp index 8f58386..9f3e08a 100644 --- a/STM32F1/variants/nucleo_f103rb/board.cpp +++ b/STM32F1/variants/nucleo_f103rb/board.cpp @@ -80,14 +80,14 @@ rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; // PMAP_ROW() lets us specify a row (really a struct stm32_pin_info) // in the pin map. Its arguments are: // -// - GPIO device for the pin (GPIOA, etc.) +// - GPIO device for the pin (&gpioa, etc.) // - GPIO bit for the pin (0 through 15) // - Timer device, or NULL if none // - Timer channel (1 to 4, for PWM), or 0 if none // - ADC device, or NULL if none // - ADC channel, or ADCx if none -// gpioX, PINbit, TIMER/NULL, timerch/0, ADC1/NULL, adcsub/0 -// gpioX, TIMER/NULL, ADC1/NULL, PINbit, timerch/0, adcsub/0 +// gpioX, PINbit, TIMER/NULL, timerch/0, &adc1/NULL, adcsub/0 +// gpioX, TIMER/NULL, &adc1/NULL, PINbit, timerch/0, adcsub/0 // 0 1 2 3 4 5 // 0 3 1 4 2 5 @@ -96,58 +96,58 @@ rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { /* Arduino-like header, right connectors */ - {GPIOA, NULL, ADC1, 3, 0, 3}, /* D0/PA3 */ - {GPIOA, NULL, ADC1, 2, 0, 2}, /* D1/PA2 */ - {GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* D2/PA10 */ - {GPIOB, TIMER2, NULL, 3, 2, ADCx}, /* D3/PB3 */ - {GPIOB, TIMER3, NULL, 5, 2, ADCx}, /* D4/PB5 */ - {GPIOB, TIMER3, NULL, 4, 1, ADCx}, /* D5/PB4 */ - {GPIOB, TIMER2, NULL, 10, 3, ADCx}, /* D6/PB10 */ - {GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* D7/PA8 */ + {&gpioa, NULL, &adc1, 3, 0, 3}, /* D0/PA3 */ + {&gpioa, NULL, &adc1, 2, 0, 2}, /* D1/PA2 */ + {&gpioa, &timer1, NULL, 10, 3, ADCx}, /* D2/PA10 */ + {&gpiob, &timer2, NULL, 3, 2, ADCx}, /* D3/PB3 */ + {&gpiob, &timer3, NULL, 5, 2, ADCx}, /* D4/PB5 */ + {&gpiob, &timer3, NULL, 4, 1, ADCx}, /* D5/PB4 */ + {&gpiob, &timer2, NULL, 10, 3, ADCx}, /* D6/PB10 */ + {&gpioa, &timer1, NULL, 8, 1, ADCx}, /* D7/PA8 */ - {GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* D8/PA9 */ - {GPIOC, NULL, NULL, 7, 0, ADCx}, /* D9/PC7 */ - {GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* D10/PB6 */ - {GPIOA, NULL, ADC1, 7, 0, 7}, /* D11/PA7 */ - {GPIOA, NULL, ADC1, 6, 0, 6}, /* D12/PA6 */ - {GPIOA, NULL, NULL, 5, 0, ADCx}, /* D13/PA5 LED - no ADC12_IN5 !*/ - {GPIOB, TIMER4, NULL, 9, 4, ADCx}, /* D14/PB9 */ - {GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* D15/PB8 */ + {&gpioa, &timer1, NULL, 9, 2, ADCx}, /* D8/PA9 */ + {&gpioc, NULL, NULL, 7, 0, ADCx}, /* D9/PC7 */ + {&gpiob, &timer4, NULL, 6, 1, ADCx}, /* D10/PB6 */ + {&gpioa, NULL, &adc1, 7, 0, 7}, /* D11/PA7 */ + {&gpioa, NULL, &adc1, 6, 0, 6}, /* D12/PA6 */ + {&gpioa, NULL, NULL, 5, 0, ADCx}, /* D13/PA5 LED - no &adc12_IN5 !*/ + {&gpiob, &timer4, NULL, 9, 4, ADCx}, /* D14/PB9 */ + {&gpiob, &timer4, NULL, 8, 3, ADCx}, /* D15/PB8 */ - {GPIOA, NULL, ADC1, 0, 0, 0}, /* D16/A0/PA0 */ - {GPIOA, NULL, ADC1, 1, 0, 1}, /* D17/A1/PA1 */ - {GPIOA, NULL, ADC1, 4, 0, 4}, /* D18/A2/PA4 */ - {GPIOB, TIMER3, ADC1, 0, 3, 8}, /* D19/A3/PB0 */ - {GPIOC, NULL, ADC1, 1, 0, 11}, /* D20/A4/PC1 */ - {GPIOC, NULL, ADC1, 0, 0, 10}, /* D21/A5/PC0 */ + {&gpioa, NULL, &adc1, 0, 0, 0}, /* D16/A0/PA0 */ + {&gpioa, NULL, &adc1, 1, 0, 1}, /* D17/A1/PA1 */ + {&gpioa, NULL, &adc1, 4, 0, 4}, /* D18/A2/PA4 */ + {&gpiob, &timer3, &adc1, 0, 3, 8}, /* D19/A3/PB0 */ + {&gpioc, NULL, &adc1, 1, 0, 11}, /* D20/A4/PC1 */ + {&gpioc, NULL, &adc1, 0, 0, 10}, /* D21/A5/PC0 */ - {GPIOC, NULL, NULL, 10, 0, ADCx}, /* D22/PC10 */ - {GPIOC, NULL, NULL, 12, 0, ADCx}, /* D23/PC12 */ - {GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* D24/PB7 */ - {GPIOC, NULL, NULL, 13, 0, ADCx}, /* D25/PC13 USER BLUE BUTTON */ - {GPIOC, NULL, NULL, 14, 0, ADCx}, /* D26/PC14 */ - {GPIOC, NULL, NULL, 15, 0, ADCx}, /* D27/PC15 */ - {GPIOC, NULL, ADC1, 2, 0, 12}, /* D28/PC2 */ - {GPIOC, NULL, ADC1, 3, 0, 13}, /* D29/PC3 */ - {GPIOC, NULL, NULL, 11, 0, ADCx}, /* D30/PC11 */ - {GPIOD, NULL, NULL, 2, 0, ADCx}, /* D31/PD2 */ - {GPIOC, NULL, NULL, 9, 0, ADCx}, /* D32/PC9 */ - {GPIOC, NULL, NULL, 8, 0, ADCx}, /* D33/PC8 */ - {GPIOC, NULL, NULL, 6, 0, ADCx}, /* D34/PC6 */ - {GPIOC, NULL, ADC1, 5, 0, 15}, /* D35/PC5 */ - {GPIOA, NULL, NULL, 12, 0, ADCx}, /* D36/PA12 */ - {GPIOA, TIMER1, NULL, 11, 4, ADCx}, /* D37/PA11 */ - {GPIOB, NULL, NULL, 12, 0, ADCx}, /* D38/PB12 */ - {GPIOB, TIMER2, NULL, 11, 4, ADCx}, /* D39/PB11 PWM-not working?*/ - {GPIOB, NULL, NULL, 2, 0, ADCx}, /* D40/PB2 BOOT1 !!*/ - {GPIOB, TIMER3, ADC1, 1, 4, 9}, /* D41/PB1 */ - {GPIOB, NULL, NULL, 15, 0, ADCx}, /* D42/PB15 */ - {GPIOB, NULL, NULL, 14, 0, ADCx}, /* D43/PB14 */ - {GPIOB, NULL, NULL, 13, 0, ADCx}, /* D44/PB13 */ - {GPIOC, NULL, ADC1, 4, 0, 14}, /* D45/PC4 */ - // PMAP_ROW(GPIOA, 13, NULL, 0, NULL, ADCx), /* D41/PA13 do not use*/ - // PMAP_ROW(GPIOA, 14, NULL, 0, NULL, ADCx), /* D42/PA14 do not use*/ - // PMAP_ROW(GPIOA, 15, TIMER2, 1, NULL, ADCx), /* D43/PA15 do not use*/ + {&gpioc, NULL, NULL, 10, 0, ADCx}, /* D22/PC10 */ + {&gpioc, NULL, NULL, 12, 0, ADCx}, /* D23/PC12 */ + {&gpiob, &timer4, NULL, 7, 2, ADCx}, /* D24/PB7 */ + {&gpioc, NULL, NULL, 13, 0, ADCx}, /* D25/PC13 USER BLUE BUTTON */ + {&gpioc, NULL, NULL, 14, 0, ADCx}, /* D26/PC14 */ + {&gpioc, NULL, NULL, 15, 0, ADCx}, /* D27/PC15 */ + {&gpioc, NULL, &adc1, 2, 0, 12}, /* D28/PC2 */ + {&gpioc, NULL, &adc1, 3, 0, 13}, /* D29/PC3 */ + {&gpioc, NULL, NULL, 11, 0, ADCx}, /* D30/PC11 */ + {&gpiod, NULL, NULL, 2, 0, ADCx}, /* D31/PD2 */ + {&gpioc, NULL, NULL, 9, 0, ADCx}, /* D32/PC9 */ + {&gpioc, NULL, NULL, 8, 0, ADCx}, /* D33/PC8 */ + {&gpioc, NULL, NULL, 6, 0, ADCx}, /* D34/PC6 */ + {&gpioc, NULL, &adc1, 5, 0, 15}, /* D35/PC5 */ + {&gpioa, NULL, NULL, 12, 0, ADCx}, /* D36/PA12 */ + {&gpioa, &timer1, NULL, 11, 4, ADCx}, /* D37/PA11 */ + {&gpiob, NULL, NULL, 12, 0, ADCx}, /* D38/PB12 */ + {&gpiob, &timer2, NULL, 11, 4, ADCx}, /* D39/PB11 PWM-not working?*/ + {&gpiob, NULL, NULL, 2, 0, ADCx}, /* D40/PB2 BOOT1 !!*/ + {&gpiob, &timer3, &adc1, 1, 4, 9}, /* D41/PB1 */ + {&gpiob, NULL, NULL, 15, 0, ADCx}, /* D42/PB15 */ + {&gpiob, NULL, NULL, 14, 0, ADCx}, /* D43/PB14 */ + {&gpiob, NULL, NULL, 13, 0, ADCx}, /* D44/PB13 */ + {&gpioc, NULL, &adc1, 4, 0, 14}, /* D45/PC4 */ + // PMAP_ROW(&gpioa, 13, NULL, 0, NULL, ADCx), /* D41/PA13 do not use*/ + // PMAP_ROW(&gpioa, 14, NULL, 0, NULL, ADCx), /* D42/PA14 do not use*/ + // PMAP_ROW(&gpioa, 15, &timer2, 1, NULL, ADCx), /* D43/PA15 do not use*/ }; // Array of pins you can use for pwmWrite(). Keep it in Flash because