|
|
@ -53,10 +53,9 @@ |
|
|
|
// function out, as we do here.
|
|
|
|
|
|
|
|
void boardInit(void) { |
|
|
|
// afio_remap(AFIO_REMAP_I2C1);
|
|
|
|
// afio_remap(AFIO_REMAP_I2C1);
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Pin map: this lets the basic I/O functions (digitalWrite(),
|
|
|
|
// analogRead(), pwmWrite()) translate from pin numbers to STM32
|
|
|
|
// peripherals.
|
|
|
@ -72,86 +71,86 @@ void boardInit(void) { |
|
|
|
// - ADC channel, or ADCx if none
|
|
|
|
|
|
|
|
extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { |
|
|
|
/*
|
|
|
|
gpio_dev *gpio_device; GPIO device |
|
|
|
timer_dev *timer_device; Pin's timer device, if any. |
|
|
|
const adc_dev *adc_device; ADC device, if any. |
|
|
|
uint8 gpio_bit; Pin's GPIO port bit. |
|
|
|
uint8 timer_channel; Timer channel, or 0 if none. |
|
|
|
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 */ |
|
|
|
{&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 */ |
|
|
|
|
|
|
|
|
|
|
|
{&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 */ |
|
|
|
/*
|
|
|
|
gpio_dev *gpio_device; GPIO device |
|
|
|
timer_dev *timer_device; Pin's timer device, if any. |
|
|
|
const adc_dev *adc_device; ADC device, if any. |
|
|
|
uint8 gpio_bit; Pin's GPIO port bit. |
|
|
|
uint8 timer_channel; Timer channel, or 0 if none. |
|
|
|
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 */ |
|
|
|
{&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 */ |
|
|
|
|
|
|
|
|
|
|
|
{&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 */ |
|
|
|
}; |
|
|
|
|
|
|
|
/* Basically everything that is defined as having a timer us PWM */ |
|
|
|
extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = { |
|
|
|
PA0,PA1,PA2,PA3,PA6,PA7,PA8,PA9,PA10,PB0,PB1,PB6,PB7,PB8,PB9,PC6,PC7,PC8,PC9 |
|
|
|
PA0,PA1,PA2,PA3,PA6,PA7,PA8,PA9,PA10,PB0,PB1,PB6,PB7,PB8,PB9,PC6,PC7,PC8,PC9 |
|
|
|
}; |
|
|
|
|
|
|
|
/* Basically everything that is defined having ADC */ |
|
|
|
extern const uint8 boardADCPins[BOARD_NR_ADC_PINS] __FLASH__ = { |
|
|
|
PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,PB0,PB1,PC0,PC1,PC2,PC3,PC4,PC5 |
|
|
|
PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,PB0,PB1,PC0,PC1,PC2,PC3,PC4,PC5 |
|
|
|
}; |
|
|
|
|
|
|
|
/* not sure what this us used for */ |
|
|
|
extern const uint8 boardUsedPins[BOARD_NR_USED_PINS] __FLASH__ = { |
|
|
|
BOARD_JTMS_SWDIO_PIN, |
|
|
|
BOARD_JTCK_SWCLK_PIN, BOARD_JTDI_PIN, BOARD_JTDO_PIN, BOARD_NJTRST_PIN |
|
|
|
BOARD_JTMS_SWDIO_PIN, |
|
|
|
BOARD_JTCK_SWCLK_PIN, BOARD_JTDI_PIN, BOARD_JTDO_PIN, BOARD_NJTRST_PIN |
|
|
|
}; |
|
|
|
|
|
|
|
DEFINE_HWSERIAL(Serial1, 1); |
|
|
|