diff --git a/src/main/drivers/pwm_mapping.c b/src/main/drivers/pwm_mapping.c index 5e797ea2f..fe2c5f24b 100755 --- a/src/main/drivers/pwm_mapping.c +++ b/src/main/drivers/pwm_mapping.c @@ -144,7 +144,7 @@ pwmOutputConfiguration_t *pwmInit(drv_pwm_config_t *init) #if defined(STM32F303xC) && defined(USE_USART3) // skip UART3 ports (PB10/PB11) - if (init->useUART3 && (CheckGPIOPin(timerHardwarePtr->tag, UART3_GPIO, UART3_TX_PIN) || CheckGPIOPin(timerHardwarePtr->tag, UART3_GPIO, UART3_RX_PIN))) + if (init->useUART3 && (timerHardwarePtr->tag == IO_TAG(UART3_TX_PIN) || timerHardwarePtr->tag == IO_TAG(UART3_RX_PIN))) continue; #endif diff --git a/src/main/drivers/serial_uart_stm32f10x.c b/src/main/drivers/serial_uart_stm32f10x.c index 08c16fa2f..473689a8b 100644 --- a/src/main/drivers/serial_uart_stm32f10x.c +++ b/src/main/drivers/serial_uart_stm32f10x.c @@ -29,8 +29,9 @@ #include #include "system.h" -#include "gpio.h" +#include "io.h" #include "nvic.h" +#include "rcc.h" #include "serial.h" #include "serial_uart.h" @@ -48,13 +49,6 @@ static uartPort_t uartPort2; static uartPort_t uartPort3; #endif -// Using RX DMA disables the use of receive callbacks -#define USE_USART1_RX_DMA - -#if defined(CC3D) // FIXME move board specific code to target.h files. -#undef USE_USART1_RX_DMA -#endif - void usartIrqCallback(uartPort_t *s) { uint16_t SR = s->USARTx->SR; @@ -89,7 +83,7 @@ uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode, portOptions_t optio uartPort_t *s; static volatile uint8_t rx1Buffer[UART1_RX_BUFFER_SIZE]; static volatile uint8_t tx1Buffer[UART1_TX_BUFFER_SIZE]; - gpio_config_t gpio; + NVIC_InitTypeDef NVIC_InitStructure; s = &uartPort1; @@ -112,27 +106,23 @@ uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode, portOptions_t optio s->txDMAChannel = DMA1_Channel4; s->txDMAPeripheralBaseAddr = (uint32_t)&s->USARTx->DR; - RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); + RCC_ClockCmd(RCC_APB2(USART1), ENABLE); + RCC_ClockCmd(RCC_AHB(DMA1), ENABLE); // USART1_TX PA9 // USART1_RX PA10 - gpio.speed = Speed_2MHz; - - gpio.pin = Pin_9; if (options & SERIAL_BIDIR) { - gpio.mode = Mode_AF_OD; - gpioInit(GPIOA, &gpio); + IOInit(IOGetByTag(IO_TAG(PA9)), OWNER_SERIAL_RXTX, RESOURCE_USART); + IOConfigGPIO(IOGetByTag(IO_TAG(PA9)), IOCFG_AF_OD); } else { if (mode & MODE_TX) { - gpio.mode = Mode_AF_PP; - gpioInit(GPIOA, &gpio); + IOInit(IOGetByTag(IO_TAG(PA9)), OWNER_SERIAL_TX, RESOURCE_USART); + IOConfigGPIO(IOGetByTag(IO_TAG(PA9)), IOCFG_AF_PP); } if (mode & MODE_RX) { - gpio.pin = Pin_10; - gpio.mode = Mode_IPU; - gpioInit(GPIOA, &gpio); + IOInit(IOGetByTag(IO_TAG(PA10)), OWNER_SERIAL_RX, RESOURCE_USART); + IOConfigGPIO(IOGetByTag(IO_TAG(PA10)), IOCFG_IPU); } } @@ -155,7 +145,6 @@ uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode, portOptions_t optio return s; } - // USART1 Tx DMA Handler void DMA1_Channel4_IRQHandler(void) { @@ -185,7 +174,7 @@ uartPort_t *serialUSART2(uint32_t baudRate, portMode_t mode, portOptions_t optio uartPort_t *s; static volatile uint8_t rx2Buffer[UART2_RX_BUFFER_SIZE]; static volatile uint8_t tx2Buffer[UART2_TX_BUFFER_SIZE]; - gpio_config_t gpio; + NVIC_InitTypeDef NVIC_InitStructure; s = &uartPort2; @@ -203,27 +192,23 @@ uartPort_t *serialUSART2(uint32_t baudRate, portMode_t mode, portOptions_t optio s->txDMAPeripheralBaseAddr = (uint32_t)&s->USARTx->DR; s->rxDMAPeripheralBaseAddr = (uint32_t)&s->USARTx->DR; - RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); + RCC_ClockCmd(RCC_APB1(USART2), ENABLE); + RCC_ClockCmd(RCC_AHB(DMA1), ENABLE); // USART2_TX PA2 // USART2_RX PA3 - gpio.speed = Speed_2MHz; - - gpio.pin = Pin_2; if (options & SERIAL_BIDIR) { - gpio.mode = Mode_AF_OD; - gpioInit(GPIOA, &gpio); + IOInit(IOGetByTag(IO_TAG(PA2)), OWNER_SERIAL_RXTX, RESOURCE_USART); + IOConfigGPIO(IOGetByTag(IO_TAG(PA2)), IOCFG_AF_OD); } else { if (mode & MODE_TX) { - gpio.mode = Mode_AF_PP; - gpioInit(GPIOA, &gpio); + IOInit(IOGetByTag(IO_TAG(PA2)), OWNER_SERIAL_TX, RESOURCE_USART); + IOConfigGPIO(IOGetByTag(IO_TAG(PA2)), IOCFG_AF_PP); } if (mode & MODE_RX) { - gpio.pin = Pin_3; - gpio.mode = Mode_IPU; - gpioInit(GPIOA, &gpio); + IOInit(IOGetByTag(IO_TAG(PA3)), OWNER_SERIAL_RX, RESOURCE_USART); + IOConfigGPIO(IOGetByTag(IO_TAG(PA3)), IOCFG_IPU); } } @@ -254,7 +239,7 @@ uartPort_t *serialUSART3(uint32_t baudRate, portMode_t mode, portOptions_t optio uartPort_t *s; static volatile uint8_t rx3Buffer[UART3_RX_BUFFER_SIZE]; static volatile uint8_t tx3Buffer[UART3_TX_BUFFER_SIZE]; - gpio_config_t gpio; + NVIC_InitTypeDef NVIC_InitStructure; s = &uartPort3; @@ -272,29 +257,20 @@ uartPort_t *serialUSART3(uint32_t baudRate, portMode_t mode, portOptions_t optio s->txDMAPeripheralBaseAddr = (uint32_t)&s->USARTx->DR; s->rxDMAPeripheralBaseAddr = (uint32_t)&s->USARTx->DR; -#ifdef USART3_APB1_PERIPHERALS - RCC_APB1PeriphClockCmd(USART3_APB1_PERIPHERALS, ENABLE); -#endif -#ifdef USART3_APB2_PERIPHERALS - RCC_APB2PeriphClockCmd(USART3_APB2_PERIPHERALS, ENABLE); -#endif + RCC_ClockCmd(RCC_APB1(USART3), ENABLE); - gpio.speed = Speed_2MHz; - - gpio.pin = USART3_TX_PIN; if (options & SERIAL_BIDIR) { - gpio.mode = Mode_AF_OD; - gpioInit(USART3_GPIO, &gpio); + IOInit(IOGetByTag(IO_TAG(USART3_TX_PIN)), OWNER_SERIAL_RXTX, RESOURCE_USART); + IOConfigGPIO(IOGetByTag(IO_TAG(USART3_TX_PIN)), IOCFG_AF_OD); } else { if (mode & MODE_TX) { - gpio.mode = Mode_AF_PP; - gpioInit(USART3_GPIO, &gpio); + IOInit(IOGetByTag(IO_TAG(USART3_TX_PIN)), OWNER_SERIAL_TX, RESOURCE_USART); + IOConfigGPIO(IOGetByTag(IO_TAG(USART3_TX_PIN)), IOCFG_AF_PP); } if (mode & MODE_RX) { - gpio.pin = USART3_RX_PIN; - gpio.mode = Mode_IPU; - gpioInit(USART3_GPIO, &gpio); + IOInit(IOGetByTag(IO_TAG(USART3_RX_PIN)), OWNER_SERIAL_RX, RESOURCE_USART); + IOConfigGPIO(IOGetByTag(IO_TAG(USART3_RX_PIN)), IOCFG_IPU); } } diff --git a/src/main/drivers/serial_uart_stm32f30x.c b/src/main/drivers/serial_uart_stm32f30x.c index f457288ac..f8c0c5789 100644 --- a/src/main/drivers/serial_uart_stm32f30x.c +++ b/src/main/drivers/serial_uart_stm32f30x.c @@ -30,63 +30,57 @@ #include #include "system.h" -#include "gpio.h" +#include "io.h" #include "nvic.h" +#include "rcc.h" #include "serial.h" #include "serial_uart.h" #include "serial_uart_impl.h" -// Using RX DMA disables the use of receive callbacks -//#define USE_USART1_RX_DMA -//#define USE_USART2_RX_DMA -//#define USE_USART2_TX_DMA -//#define USE_USART3_RX_DMA -//#define USE_USART3_TX_DMA - -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 +#ifdef USE_USART1 +#ifndef UART1_TX_PIN +#define UART1_TX_PIN PA9 // PA9 +#endif +#ifndef UART1_RX_PIN +#define UART1_RX_PIN PA10 // PA10 +#endif #endif -#ifndef UART2_GPIO -#define UART2_TX_PIN GPIO_Pin_5 // PD5 -#define UART2_RX_PIN GPIO_Pin_6 // PD6 -#define UART2_GPIO GPIOD -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource5 -#define UART2_RX_PINSOURCE GPIO_PinSource6 +#ifdef USE_USART2 +#ifndef UART2_TX_PIN +#define UART2_TX_PIN PD5 // PD5 +#endif +#ifndef UART2_RX_PIN +#define UART2_RX_PIN PD6 // PD6 +#endif #endif -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 +#ifdef USE_USART3 +#ifndef UART3_TX_PIN +#define UART3_TX_PIN PB10 // PB10 (AF7) +#endif +#ifndef UART3_RX_PIN +#define UART3_RX_PIN PB11 // PB11 (AF7) +#endif #endif -#ifndef UART4_GPIO -#define UART4_TX_PIN GPIO_Pin_10 // PC10 (AF5) -#define UART4_RX_PIN GPIO_Pin_11 // PC11 (AF5) -#define UART4_GPIO_AF GPIO_AF_5 -#define UART4_GPIO GPIOC -#define UART4_TX_PINSOURCE GPIO_PinSource10 -#define UART4_RX_PINSOURCE GPIO_PinSource11 +#ifdef USE_USART4 +#ifndef UART4_TX_PIN +#define UART4_TX_PIN PC10 // PC10 (AF5) +#endif +#ifndef UART4_RX_PIN +#define UART4_RX_PIN PC11 // PC11 (AF5) +#endif #endif -#ifndef UART5_GPIO // The real UART5_RX is on PD2, no board is using. -#define UART5_TX_PIN GPIO_Pin_12 // PC12 (AF5) -#define UART5_RX_PIN GPIO_Pin_12 // PC12 (AF5) -#define UART5_GPIO_AF GPIO_AF_5 -#define UART5_GPIO GPIOC -#define UART5_TX_PINSOURCE GPIO_PinSource12 -#define UART5_RX_PINSOURCE GPIO_PinSource12 +#ifdef USE_USART5 +#ifndef UART5_TX_PIN // The real UART5_RX is on PD2, no board is using. +#define UART5_TX_PIN PC12 // PC12 (AF5) +#endif +#ifndef UART5_RX_PIN +#define UART5_RX_PIN PC12 // PC12 (AF5) +#endif #endif #ifdef USE_USART1 @@ -105,6 +99,33 @@ static uartPort_t uartPort4; static uartPort_t uartPort5; #endif +void serialUARTInit(IO_t tx, IO_t rx, portMode_t mode, portOptions_t options, uint8_t af) +{ + if (options & SERIAL_BIDIR) { + ioConfig_t ioCfg = IO_CONFIG(GPIO_Mode_AF, GPIO_Speed_50MHz, + (options & SERIAL_INVERTED) ? GPIO_OType_PP : GPIO_OType_OD, + (options & SERIAL_INVERTED) ? GPIO_PuPd_DOWN : GPIO_PuPd_UP + ); + + IOInit(tx, OWNER_SERIAL_RXTX, RESOURCE_USART); + IOConfigGPIOAF(tx, ioCfg, af); + + if (!(options & SERIAL_INVERTED)) + IOLo(tx); // OpenDrain output should be inactive + } else { + ioConfig_t ioCfg = IO_CONFIG(GPIO_Mode_AF, GPIO_Speed_50MHz, GPIO_OType_PP, (options & SERIAL_INVERTED) ? GPIO_PuPd_DOWN : GPIO_PuPd_UP); + if (mode & MODE_TX) { + IOInit(tx, OWNER_SERIAL_TX, RESOURCE_USART); + IOConfigGPIOAF(tx, ioCfg, af); + } + + if (mode & MODE_RX) { + IOInit(tx, OWNER_SERIAL_RX, RESOURCE_USART); + IOConfigGPIOAF(rx, ioCfg, af); + } + } +} + #ifdef USE_USART1 uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode, portOptions_t options) { @@ -112,7 +133,6 @@ uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode, portOptions_t optio static volatile uint8_t rx1Buffer[UART1_RX_BUFFER_SIZE]; static volatile uint8_t tx1Buffer[UART1_TX_BUFFER_SIZE]; NVIC_InitTypeDef NVIC_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; s = &uartPort1; s->port.vTable = uartVTable; @@ -134,34 +154,10 @@ uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode, portOptions_t optio s->rxDMAPeripheralBaseAddr = (uint32_t)&s->USARTx->RDR; s->txDMAPeripheralBaseAddr = (uint32_t)&s->USARTx->TDR; - RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); + RCC_ClockCmd(RCC_APB2(USART1), ENABLE); + RCC_ClockCmd(RCC_AHB(DMA1), ENABLE); - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; - GPIO_InitStructure.GPIO_PuPd = (options & SERIAL_INVERTED) ? GPIO_PuPd_DOWN : GPIO_PuPd_UP; - - if (options & SERIAL_BIDIR) { - GPIO_InitStructure.GPIO_Pin = UART1_TX_PIN; - GPIO_InitStructure.GPIO_OType = (options & SERIAL_INVERTED) ? GPIO_OType_PP : GPIO_OType_OD; - GPIO_PinAFConfig(UART1_GPIO, UART1_TX_PINSOURCE, UART1_GPIO_AF); - GPIO_Init(UART1_GPIO, &GPIO_InitStructure); - if(!(options & SERIAL_INVERTED)) - GPIO_SetBits(UART1_GPIO, UART1_TX_PIN); // OpenDrain output should be inactive - } else { - if (mode & MODE_TX) { - GPIO_InitStructure.GPIO_Pin = UART1_TX_PIN; - GPIO_PinAFConfig(UART1_GPIO, UART1_TX_PINSOURCE, UART1_GPIO_AF); - GPIO_Init(UART1_GPIO, &GPIO_InitStructure); - } - - if (mode & MODE_RX) { - GPIO_InitStructure.GPIO_Pin = UART1_RX_PIN; - GPIO_PinAFConfig(UART1_GPIO, UART1_RX_PINSOURCE, UART1_GPIO_AF); - GPIO_Init(UART1_GPIO, &GPIO_InitStructure); - } - } + serialUARTInit(IOGetByTag(IO_TAG(UART1_TX_PIN)), IOGetByTag(IO_TAG(UART1_RX_PIN)), mode, options, GPIO_AF_7); // DMA TX Interrupt NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn; @@ -189,7 +185,6 @@ uartPort_t *serialUSART2(uint32_t baudRate, portMode_t mode, portOptions_t optio static volatile uint8_t rx2Buffer[UART2_RX_BUFFER_SIZE]; static volatile uint8_t tx2Buffer[UART2_TX_BUFFER_SIZE]; NVIC_InitTypeDef NVIC_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; s = &uartPort2; s->port.vTable = uartVTable; @@ -212,37 +207,13 @@ uartPort_t *serialUSART2(uint32_t baudRate, portMode_t mode, portOptions_t optio s->txDMAPeripheralBaseAddr = (uint32_t)&s->USARTx->TDR; #endif - RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + RCC_ClockCmd(RCC_APB1(USART2), ENABLE); #if defined(USE_USART2_TX_DMA) || defined(USE_USART2_RX_DMA) - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); + RCC_ClockCmd(RCC_AHB(DMA1), ENABLE); #endif - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; - GPIO_InitStructure.GPIO_PuPd = (options & SERIAL_INVERTED) ? GPIO_PuPd_DOWN : GPIO_PuPd_UP; - - if (options & SERIAL_BIDIR) { - GPIO_InitStructure.GPIO_Pin = UART2_TX_PIN; - GPIO_InitStructure.GPIO_OType = (options & SERIAL_INVERTED) ? GPIO_OType_PP : GPIO_OType_OD; - GPIO_PinAFConfig(UART2_GPIO, UART2_TX_PINSOURCE, UART2_GPIO_AF); - GPIO_Init(UART2_GPIO, &GPIO_InitStructure); - if(!(options & SERIAL_INVERTED)) - GPIO_SetBits(UART2_GPIO, UART2_TX_PIN); // OpenDrain output should be inactive - } else { - if (mode & MODE_TX) { - GPIO_InitStructure.GPIO_Pin = UART2_TX_PIN; - GPIO_PinAFConfig(UART2_GPIO, UART2_TX_PINSOURCE, UART2_GPIO_AF); - GPIO_Init(UART2_GPIO, &GPIO_InitStructure); - } - - if (mode & MODE_RX) { - GPIO_InitStructure.GPIO_Pin = UART2_RX_PIN; - GPIO_PinAFConfig(UART2_GPIO, UART2_RX_PINSOURCE, UART2_GPIO_AF); - GPIO_Init(UART2_GPIO, &GPIO_InitStructure); - } - } + serialUARTInit(IOGetByTag(IO_TAG(UART2_TX_PIN)), IOGetByTag(IO_TAG(UART2_RX_PIN)), mode, options, GPIO_AF_7); #ifdef USE_USART2_TX_DMA // DMA TX Interrupt @@ -272,7 +243,6 @@ uartPort_t *serialUSART3(uint32_t baudRate, portMode_t mode, portOptions_t optio static volatile uint8_t rx3Buffer[UART3_RX_BUFFER_SIZE]; static volatile uint8_t tx3Buffer[UART3_TX_BUFFER_SIZE]; NVIC_InitTypeDef NVIC_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; s = &uartPort3; s->port.vTable = uartVTable; @@ -295,37 +265,13 @@ uartPort_t *serialUSART3(uint32_t baudRate, portMode_t mode, portOptions_t optio s->txDMAPeripheralBaseAddr = (uint32_t)&s->USARTx->TDR; #endif - RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); + RCC_ClockCmd(RCC_APB1(USART3), ENABLE); #if defined(USE_USART3_TX_DMA) || defined(USE_USART3_RX_DMA) - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); + RCC_AHBClockCmd(RCC_AHB(DMA1), ENABLE); #endif - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; - GPIO_InitStructure.GPIO_PuPd = (options & SERIAL_INVERTED) ? GPIO_PuPd_DOWN : GPIO_PuPd_UP; - - if (options & SERIAL_BIDIR) { - GPIO_InitStructure.GPIO_Pin = UART3_TX_PIN; - GPIO_InitStructure.GPIO_OType = (options & SERIAL_INVERTED) ? GPIO_OType_PP : GPIO_OType_OD; - GPIO_PinAFConfig(UART3_GPIO, UART3_TX_PINSOURCE, UART3_GPIO_AF); - GPIO_Init(UART3_GPIO, &GPIO_InitStructure); - if(!(options & SERIAL_INVERTED)) - GPIO_SetBits(UART3_GPIO, UART3_TX_PIN); // OpenDrain output should be inactive - } else { - if (mode & MODE_TX) { - GPIO_InitStructure.GPIO_Pin = UART3_TX_PIN; - GPIO_PinAFConfig(UART3_GPIO, UART3_TX_PINSOURCE, UART3_GPIO_AF); - GPIO_Init(UART3_GPIO, &GPIO_InitStructure); - } - - if (mode & MODE_RX) { - GPIO_InitStructure.GPIO_Pin = UART3_RX_PIN; - GPIO_PinAFConfig(UART3_GPIO, UART3_RX_PINSOURCE, UART3_GPIO_AF); - GPIO_Init(UART3_GPIO, &GPIO_InitStructure); - } - } + serialUARTInit(IOGetByTag(IO_TAG(UART3_TX_PIN)), IOGetByTag(IO_TAG(UART3_RX_PIN)), mode, options, GPIO_AF_7); #ifdef USE_USART3_TX_DMA // DMA TX Interrupt @@ -355,7 +301,6 @@ uartPort_t *serialUSART4(uint32_t baudRate, portMode_t mode, portOptions_t optio static volatile uint8_t rx4Buffer[UART4_RX_BUFFER_SIZE]; static volatile uint8_t tx4Buffer[UART4_TX_BUFFER_SIZE]; NVIC_InitTypeDef NVIC_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; s = &uartPort4; s->port.vTable = uartVTable; @@ -369,33 +314,9 @@ uartPort_t *serialUSART4(uint32_t baudRate, portMode_t mode, portOptions_t optio s->USARTx = UART4; - RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE); + RCC_ClockCmd(RCC_APB1(UART4), ENABLE); - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; - GPIO_InitStructure.GPIO_PuPd = (options & SERIAL_INVERTED) ? GPIO_PuPd_DOWN : GPIO_PuPd_UP; - - if (options & SERIAL_BIDIR) { - GPIO_InitStructure.GPIO_Pin = UART4_TX_PIN; - GPIO_InitStructure.GPIO_OType = (options & SERIAL_INVERTED) ? GPIO_OType_PP : GPIO_OType_OD; - GPIO_PinAFConfig(UART4_GPIO, UART4_TX_PINSOURCE, UART4_GPIO_AF); - GPIO_Init(UART4_GPIO, &GPIO_InitStructure); - if(!(options & SERIAL_INVERTED)) - GPIO_SetBits(UART4_GPIO, UART4_TX_PIN); // OpenDrain output should be inactive - } else { - if (mode & MODE_TX) { - GPIO_InitStructure.GPIO_Pin = UART4_TX_PIN; - GPIO_PinAFConfig(UART4_GPIO, UART4_TX_PINSOURCE, UART4_GPIO_AF); - GPIO_Init(UART4_GPIO, &GPIO_InitStructure); - } - - if (mode & MODE_RX) { - GPIO_InitStructure.GPIO_Pin = UART4_RX_PIN; - GPIO_PinAFConfig(UART4_GPIO, UART4_RX_PINSOURCE, UART4_GPIO_AF); - GPIO_Init(UART4_GPIO, &GPIO_InitStructure); - } - } + serialUARTInit(IOGetByTag(IO_TAG(UART4_TX_PIN)), IOGetByTag(IO_TAG(UART4_RX_PIN)), mode, options, GPIO_AF_5); NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_PRIORITY_BASE(NVIC_PRIO_SERIALUART4); @@ -414,7 +335,6 @@ uartPort_t *serialUSART5(uint32_t baudRate, portMode_t mode, portOptions_t optio static volatile uint8_t rx5Buffer[UART5_RX_BUFFER_SIZE]; static volatile uint8_t tx5Buffer[UART5_TX_BUFFER_SIZE]; NVIC_InitTypeDef NVIC_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; s = &uartPort5; s->port.vTable = uartVTable; @@ -428,33 +348,9 @@ uartPort_t *serialUSART5(uint32_t baudRate, portMode_t mode, portOptions_t optio s->USARTx = UART5; - RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE); + RCC_ClockCmd(RCC_APB1(UART5), ENABLE); - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; - GPIO_InitStructure.GPIO_PuPd = (options & SERIAL_INVERTED) ? GPIO_PuPd_DOWN : GPIO_PuPd_UP; - - if (options & SERIAL_BIDIR) { - GPIO_InitStructure.GPIO_Pin = UART5_TX_PIN; - GPIO_InitStructure.GPIO_OType = (options & SERIAL_INVERTED) ? GPIO_OType_PP : GPIO_OType_OD; - GPIO_PinAFConfig(UART5_GPIO, UART5_TX_PINSOURCE, UART5_GPIO_AF); - GPIO_Init(UART5_GPIO, &GPIO_InitStructure); - if(!(options & SERIAL_INVERTED)) - GPIO_SetBits(UART5_GPIO, UART5_TX_PIN); // OpenDrain output should be inactive - } else { - if (mode & MODE_TX) { - GPIO_InitStructure.GPIO_Pin = UART5_TX_PIN; - GPIO_PinAFConfig(UART5_GPIO, UART5_TX_PINSOURCE, UART5_GPIO_AF); - GPIO_Init(UART5_GPIO, &GPIO_InitStructure); - } - - if (mode & MODE_RX) { - GPIO_InitStructure.GPIO_Pin = UART5_RX_PIN; - GPIO_PinAFConfig(UART5_GPIO, UART5_RX_PINSOURCE, UART5_GPIO_AF); - GPIO_Init(UART5_GPIO, &GPIO_InitStructure); - } - } + serialUARTInit(IOGetByTag(IO_TAG(UART5_TX_PIN)), IOGetByTag(IO_TAG(UART5_RX_PIN)), mode, options, GPIO_AF_5); NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_PRIORITY_BASE(NVIC_PRIO_SERIALUART5); diff --git a/src/main/target/ALIENFLIGHTF3/target.h b/src/main/target/ALIENFLIGHTF3/target.h index 1df1d3c4f..286cfe9a4 100644 --- a/src/main/target/ALIENFLIGHTF3/target.h +++ b/src/main/target/ALIENFLIGHTF3/target.h @@ -74,27 +74,14 @@ #define USE_USART3 // Not connected - 10/RX (PB11) 11/TX (PB10) #define SERIAL_PORT_COUNT 4 -#define UART1_TX_PIN GPIO_Pin_6 // PB6 -#define UART1_RX_PIN GPIO_Pin_7 // PB7 -#define UART1_GPIO GPIOB -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource6 -#define UART1_RX_PINSOURCE GPIO_PinSource7 +#define UART1_TX_PIN PB6 // PB6 +#define UART1_RX_PIN PB7 // PB7 -#define UART2_TX_PIN GPIO_Pin_2 // PA2 -#define UART2_RX_PIN GPIO_Pin_3 // PA3 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource2 -#define UART2_RX_PINSOURCE GPIO_PinSource3 - -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 +#define UART2_TX_PIN PA2 // PA2 +#define UART2_RX_PIN PA3 // PA3 +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define USE_I2C #define I2C_DEVICE (I2CDEV_2) // SDA (PA10/AF4), SCL (PA9/AF4) diff --git a/src/main/target/CC3D/target.h b/src/main/target/CC3D/target.h index 5e6c1b8ad..4ca63a6b5 100644 --- a/src/main/target/CC3D/target.h +++ b/src/main/target/CC3D/target.h @@ -74,15 +74,16 @@ #define USE_SOFTSERIAL1 #define SERIAL_PORT_COUNT 4 +#ifdef USE_UART1_RX_DMA +#undef USE_UART1_RX_DMA +#endif + #define SOFTSERIAL_1_TIMER TIM3 #define SOFTSERIAL_1_TIMER_TX_HARDWARE 1 // PWM 2 #define SOFTSERIAL_1_TIMER_RX_HARDWARE 2 // PWM 3 -#define USART3_RX_PIN Pin_11 -#define USART3_TX_PIN Pin_10 -#define USART3_GPIO GPIOB -#define USART3_APB1_PERIPHERALS RCC_APB1Periph_USART3 -#define USART3_APB2_PERIPHERALS RCC_APB2Periph_GPIOB +#define USART3_RX_PIN PB11 +#define USART3_TX_PIN PB10 #define USE_SPI #define USE_SPI_DEVICE_1 diff --git a/src/main/target/CHEBUZZF3/target.h b/src/main/target/CHEBUZZF3/target.h index 5e7f79ce0..f3fdecfee 100644 --- a/src/main/target/CHEBUZZF3/target.h +++ b/src/main/target/CHEBUZZF3/target.h @@ -111,7 +111,7 @@ #define TARGET_IO_PORTA 0xffff #define TARGET_IO_PORTB 0xffff #define TARGET_IO_PORTC 0xffff -#define TARGET_IO_PORTD (BIT(2)|BIT(10)|BIT(12)|BIT(13)|BIT(14)|BIT(15)) +#define TARGET_IO_PORTD (BIT(2)|BIT(5)|BIT(6)|BIT(10)|BIT(12)|BIT(13)|BIT(14)|BIT(15)) #define TARGET_IO_PORTE 0xffff #define TARGET_IO_PORTF (BIT(0)|BIT(1)|BIT(4)|BIT(9)|BIT(10)) diff --git a/src/main/target/COLIBRI_RACE/target.h b/src/main/target/COLIBRI_RACE/target.h index 8fb4cee7a..e0d102913 100755 --- a/src/main/target/COLIBRI_RACE/target.h +++ b/src/main/target/COLIBRI_RACE/target.h @@ -82,26 +82,14 @@ #define USE_USART3 #define SERIAL_PORT_COUNT 4 -#define UART1_TX_PIN GPIO_Pin_4 -#define UART1_RX_PIN GPIO_Pin_5 -#define UART1_GPIO GPIOC -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource4 -#define UART1_RX_PINSOURCE GPIO_PinSource5 +#define UART1_TX_PIN PC4 +#define UART1_RX_PIN PC5 -#define UART2_TX_PIN GPIO_Pin_14 -#define UART2_RX_PIN GPIO_Pin_15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 +#define UART2_RX_PIN PA15 -#define UART3_TX_PIN GPIO_Pin_10 -#define UART3_RX_PIN GPIO_Pin_11 -#define UART3_GPIO GPIOB -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 +#define UART3_TX_PIN PB10 +#define UART3_RX_PIN PB11 #define USE_I2C #define I2C_DEVICE (I2CDEV_2) diff --git a/src/main/target/DOGE/target.h b/src/main/target/DOGE/target.h index c790c5242..c3be09e18 100644 --- a/src/main/target/DOGE/target.h +++ b/src/main/target/DOGE/target.h @@ -100,32 +100,14 @@ #define USE_USART3 #define SERIAL_PORT_COUNT 4 -// tqfp48 pin 42 -#define UART1_TX_PIN GPIO_Pin_6 -// tqfp48 pin 43 -#define UART1_RX_PIN GPIO_Pin_7 -#define UART1_GPIO GPIOB -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource6 -#define UART1_RX_PINSOURCE GPIO_PinSource7 +#define UART1_TX_PIN PB6 +#define UART1_RX_PIN PB7 -// tqfp48 pin 12 -#define UART2_TX_PIN GPIO_Pin_2 -// tqfp48 pin 13 -#define UART2_RX_PIN GPIO_Pin_3 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource2 -#define UART2_RX_PINSOURCE GPIO_PinSource3 +#define UART2_TX_PIN PA2 +#define UART2_RX_PIN PA3 -// tqfp48 pin 21 -#define UART3_TX_PIN GPIO_Pin_10 -// tqfp48 pin 22 -#define UART3_RX_PIN GPIO_Pin_11 -#define UART3_GPIO GPIOB -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 +#define UART3_TX_PIN PB10 +#define UART3_RX_PIN PB11 #define USE_ADC #define BOARD_HAS_VOLTAGE_DIVIDER diff --git a/src/main/target/FURYF3/target.h b/src/main/target/FURYF3/target.h index db4ddd745..4c9e1f44e 100644 --- a/src/main/target/FURYF3/target.h +++ b/src/main/target/FURYF3/target.h @@ -113,30 +113,14 @@ #define USE_SOFTSERIAL1 #define SERIAL_PORT_COUNT 5 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_14 // PA14 -#define UART2_RX_PIN GPIO_Pin_15 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 // PA14 +#define UART2_RX_PIN PA15 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define SOFTSERIAL_1_TIMER TIM3 #define SOFTSERIAL_1_TIMER_RX_HARDWARE 1 diff --git a/src/main/target/IRCFUSIONF3/target.h b/src/main/target/IRCFUSIONF3/target.h index 958815972..4ff16f5ff 100644 --- a/src/main/target/IRCFUSIONF3/target.h +++ b/src/main/target/IRCFUSIONF3/target.h @@ -49,30 +49,14 @@ #define USE_USART3 #define SERIAL_PORT_COUNT 3 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_14 // PA14 / SWCLK -#define UART2_RX_PIN GPIO_Pin_15 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 // PA14 / SWCLK +#define UART2_RX_PIN PA15 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define USE_I2C #define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA diff --git a/src/main/target/KISSFC/target.h b/src/main/target/KISSFC/target.h index 13550a254..31bcb82f7 100644 --- a/src/main/target/KISSFC/target.h +++ b/src/main/target/KISSFC/target.h @@ -23,8 +23,9 @@ #define SBUS_PORT_OPTIONS (SERIAL_STOPBITS_2 | SERIAL_PARITY_EVEN | SERIAL_INVERTED | SERIAL_BIDIR) -#define LED0 PB1 +#define LED0 PB1 #define BEEPER PB13 +#define BEEPER_INVERTED #define USABLE_TIMER_CHANNEL_COUNT 12 @@ -49,26 +50,14 @@ #define SERIAL_PORT_COUNT 4 -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_3 -#define UART2_RX_PIN GPIO_Pin_4 -#define UART2_GPIO GPIOB -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource3 -#define UART2_RX_PINSOURCE GPIO_PinSource4 +#define UART2_TX_PIN PB3 +#define UART2_RX_PIN PB4 -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define USE_I2C #define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA diff --git a/src/main/target/LUX_RACE/target.h b/src/main/target/LUX_RACE/target.h index 600bd2ee6..4001b733b 100644 --- a/src/main/target/LUX_RACE/target.h +++ b/src/main/target/LUX_RACE/target.h @@ -62,26 +62,14 @@ #define USE_USART3 #define SERIAL_PORT_COUNT 4 -#define UART1_TX_PIN GPIO_Pin_4 -#define UART1_RX_PIN GPIO_Pin_5 -#define UART1_GPIO GPIOC -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource4 -#define UART1_RX_PINSOURCE GPIO_PinSource5 +#define UART1_TX_PIN PC4 +#define UART1_RX_PIN PC5 -#define UART2_TX_PIN GPIO_Pin_14 -#define UART2_RX_PIN GPIO_Pin_15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 +#define UART2_RX_PIN PA15 -#define UART3_TX_PIN GPIO_Pin_10 -#define UART3_RX_PIN GPIO_Pin_11 -#define UART3_GPIO GPIOB -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 +#define UART3_TX_PIN PB10 +#define UART3_RX_PIN PB11 #define USE_I2C #define I2C_DEVICE (I2CDEV_2) diff --git a/src/main/target/MOTOLAB/target.h b/src/main/target/MOTOLAB/target.h index 183e1326d..e6ea276d6 100644 --- a/src/main/target/MOTOLAB/target.h +++ b/src/main/target/MOTOLAB/target.h @@ -68,26 +68,14 @@ #define USE_USART3 #define SERIAL_PORT_COUNT 4 -#define UART1_TX_PIN GPIO_Pin_6 // PB6 -#define UART1_RX_PIN GPIO_Pin_7 // PB7 -#define UART1_GPIO GPIOB -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource6 -#define UART1_RX_PINSOURCE GPIO_PinSource7 +#define UART1_TX_PIN PB6 // PB6 +#define UART1_RX_PIN PB7 // PB7 -#define UART2_TX_PIN GPIO_Pin_3 // PB3 -#define UART2_RX_PIN GPIO_Pin_4 // PB4 -#define UART2_GPIO GPIOB -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource3 -#define UART2_RX_PINSOURCE GPIO_PinSource4 +#define UART2_TX_PIN PB3 // PB3 +#define UART2_RX_PIN PB4 // PB4 -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define USE_I2C #define I2C_DEVICE (I2CDEV_2) // SDA (PA10/AF4), SCL (PA9/AF4) diff --git a/src/main/target/NAZE/target.h b/src/main/target/NAZE/target.h index cc8b93c09..f8c8b6642 100644 --- a/src/main/target/NAZE/target.h +++ b/src/main/target/NAZE/target.h @@ -134,11 +134,8 @@ #define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8 // USART3 only on NAZE32_SP - Flex Port -#define USART3_RX_PIN Pin_11 -#define USART3_TX_PIN Pin_10 -#define USART3_GPIO GPIOB -#define USART3_APB1_PERIPHERALS RCC_APB1Periph_USART3 -#define USART3_APB2_PERIPHERALS RCC_APB2Periph_GPIOB +#define USART3_RX_PIN PB11 +#define USART3_TX_PIN PB10 #define USE_I2C #define I2C_DEVICE (I2CDEV_2) diff --git a/src/main/target/OMNIBUS/target.h b/src/main/target/OMNIBUS/target.h index 76d995fce..4512142c2 100644 --- a/src/main/target/OMNIBUS/target.h +++ b/src/main/target/OMNIBUS/target.h @@ -76,30 +76,14 @@ #define USE_SOFTSERIAL1 #define SERIAL_PORT_COUNT 5 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_14 // PA14 / SWCLK -#define UART2_RX_PIN GPIO_Pin_15 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 // PA14 / SWCLK +#define UART2_RX_PIN PA15 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define SOFTSERIAL_1_TIMER TIM2 #define SOFTSERIAL_1_TIMER_RX_HARDWARE 9 // PA0 / PAD3 diff --git a/src/main/target/PIKOBLX/target.h b/src/main/target/PIKOBLX/target.h index 36ee21772..e9eaf65df 100644 --- a/src/main/target/PIKOBLX/target.h +++ b/src/main/target/PIKOBLX/target.h @@ -54,26 +54,14 @@ #define USE_USART3 #define SERIAL_PORT_COUNT 4 -#define UART1_TX_PIN GPIO_Pin_6 // PB6 -#define UART1_RX_PIN GPIO_Pin_7 // PB7 -#define UART1_GPIO GPIOB -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource6 -#define UART1_RX_PINSOURCE GPIO_PinSource7 +#define UART1_TX_PIN PB6 // PB6 +#define UART1_RX_PIN PB7 // PB7 -#define UART2_TX_PIN GPIO_Pin_3 // PB3 -#define UART2_RX_PIN GPIO_Pin_4 // PB4 -#define UART2_GPIO GPIOB -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource3 -#define UART2_RX_PINSOURCE GPIO_PinSource4 +#define UART2_TX_PIN PB3 // PB3 +#define UART2_RX_PIN PB4 // PB4 -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define USE_SPI #define USE_SPI_DEVICE_2 diff --git a/src/main/target/RMDO/target.h b/src/main/target/RMDO/target.h index 602609862..db24488cb 100644 --- a/src/main/target/RMDO/target.h +++ b/src/main/target/RMDO/target.h @@ -62,30 +62,14 @@ #define USE_SOFTSERIAL2 #define SERIAL_PORT_COUNT 5 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_14 // PA14 / SWCLK -#define UART2_RX_PIN GPIO_Pin_15 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 // PA14 / SWCLK +#define UART2_RX_PIN PA15 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define SOFTSERIAL_1_TIMER TIM3 #define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 diff --git a/src/main/target/SINGULARITY/target.h b/src/main/target/SINGULARITY/target.h index 0d89f4226..8de22972a 100644 --- a/src/main/target/SINGULARITY/target.h +++ b/src/main/target/SINGULARITY/target.h @@ -49,26 +49,15 @@ #define USE_SOFTSERIAL1 // Telemetry #define SERIAL_PORT_COUNT 5 -#define UART1_TX_PIN GPIO_Pin_9 -#define UART1_RX_PIN GPIO_Pin_10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 +#define UART1_TX_PIN PA9 +#define UART1_RX_PIN PA10 -#define UART2_TX_PIN GPIO_Pin_14 //Not connected -#define UART2_RX_PIN GPIO_Pin_15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 //Not connected +#define UART2_RX_PIN PA15 + +#define UART3_TX_PIN PB10 +#define UART3_RX_PIN PB11 -#define UART3_TX_PIN GPIO_Pin_10 -#define UART3_RX_PIN GPIO_Pin_11 -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 #define SOFTSERIAL_1_TIMER TIM15 #define SOFTSERIAL_1_TIMER_RX_HARDWARE 7 //Not connected diff --git a/src/main/target/SIRINFPV/target.h b/src/main/target/SIRINFPV/target.h index 1700d13cf..c504b5871 100644 --- a/src/main/target/SIRINFPV/target.h +++ b/src/main/target/SIRINFPV/target.h @@ -61,30 +61,14 @@ #define USE_USART3 #define SERIAL_PORT_COUNT 4 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_2 // PA14 / SWCLK -#define UART2_RX_PIN GPIO_Pin_3 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource2 -#define UART2_RX_PINSOURCE GPIO_PinSource3 +#define UART2_TX_PIN PA2 // PA14 / SWCLK +#define UART2_RX_PIN PA3 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #undef USE_I2C diff --git a/src/main/target/SPARKY/target.h b/src/main/target/SPARKY/target.h index 0913d0ec1..15f7d013c 100644 --- a/src/main/target/SPARKY/target.h +++ b/src/main/target/SPARKY/target.h @@ -61,26 +61,14 @@ #define USE_USART3 // Servo out - 10/RX (PB11) 11/TX (PB10) #define SERIAL_PORT_COUNT 4 -#define UART1_TX_PIN GPIO_Pin_6 // PB6 -#define UART1_RX_PIN GPIO_Pin_7 // PB7 -#define UART1_GPIO GPIOB -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource6 -#define UART1_RX_PINSOURCE GPIO_PinSource7 +#define UART1_TX_PIN PB6 // PB6 +#define UART1_RX_PIN PB7 // PB7 -#define UART2_TX_PIN GPIO_Pin_2 // PA2 - Clashes with PWM6 input. -#define UART2_RX_PIN GPIO_Pin_3 // PA3 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource2 -#define UART2_RX_PINSOURCE GPIO_PinSource3 +#define UART2_TX_PIN PA2 // PA2 - Clashes with PWM6 input. +#define UART2_RX_PIN PA3 // PA3 -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) // Note: PA5 and PA0 are N/C on the sparky - potentially use for ADC or LED STRIP? diff --git a/src/main/target/SPRACINGF3/target.h b/src/main/target/SPRACINGF3/target.h index 840dda225..6cf238c0c 100644 --- a/src/main/target/SPRACINGF3/target.h +++ b/src/main/target/SPRACINGF3/target.h @@ -72,30 +72,14 @@ #define USE_SOFTSERIAL2 #define SERIAL_PORT_COUNT 5 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_14 // PA14 / SWCLK -#define UART2_RX_PIN GPIO_Pin_15 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 // PA14 / SWCLK +#define UART2_RX_PIN PA15 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define SOFTSERIAL_1_TIMER TIM3 #define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 diff --git a/src/main/target/SPRACINGF3EVO/target.h b/src/main/target/SPRACINGF3EVO/target.h index 4adbe0d56..d30b46f29 100755 --- a/src/main/target/SPRACINGF3EVO/target.h +++ b/src/main/target/SPRACINGF3EVO/target.h @@ -70,30 +70,14 @@ #define USE_USART3 #define SERIAL_PORT_COUNT 4 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_14 // PA14 / SWCLK -#define UART2_RX_PIN GPIO_Pin_15 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 // PA14 / SWCLK +#define UART2_RX_PIN PA15 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define USE_I2C #define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA diff --git a/src/main/target/SPRACINGF3MINI/target.h b/src/main/target/SPRACINGF3MINI/target.h index 61b4bd9b5..a1e609d4a 100644 --- a/src/main/target/SPRACINGF3MINI/target.h +++ b/src/main/target/SPRACINGF3MINI/target.h @@ -79,30 +79,14 @@ #define USE_SOFTSERIAL1 #define SERIAL_PORT_COUNT 5 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_14 // PA14 / SWCLK -#define UART2_RX_PIN GPIO_Pin_15 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 // PA14 / SWCLK +#define UART2_RX_PIN PA15 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define SOFTSERIAL_1_TIMER TIM2 #define SOFTSERIAL_1_TIMER_RX_HARDWARE 9 // PA0 / PAD3 diff --git a/src/main/target/X_RACERSPI/target.h b/src/main/target/X_RACERSPI/target.h index 217765adc..187ab6911 100644 --- a/src/main/target/X_RACERSPI/target.h +++ b/src/main/target/X_RACERSPI/target.h @@ -62,30 +62,14 @@ #define USE_SOFTSERIAL2 #define SERIAL_PORT_COUNT 5 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif +#define UART1_TX_PIN PA9 // PA9 +#define UART1_RX_PIN PA10 // PA10 -#define UART2_TX_PIN GPIO_Pin_2 // PA14 / SWCLK -#define UART2_RX_PIN GPIO_Pin_3 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource2 -#define UART2_RX_PINSOURCE GPIO_PinSource3 +#define UART2_TX_PIN PA2 // PA14 / SWCLK +#define UART2_RX_PIN PA3 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define SOFTSERIAL_1_TIMER TIM3 #define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5 diff --git a/src/main/target/ZCOREF3/target.h b/src/main/target/ZCOREF3/target.h index d8ac143e8..d15f1b299 100644 --- a/src/main/target/ZCOREF3/target.h +++ b/src/main/target/ZCOREF3/target.h @@ -56,30 +56,12 @@ #define USE_USART3 #define SERIAL_PORT_COUNT 3 -#ifndef UART1_GPIO -#define UART1_TX_PIN GPIO_Pin_9 // PA9 -#define UART1_RX_PIN GPIO_Pin_10 // PA10 -#define UART1_GPIO GPIOA -#define UART1_GPIO_AF GPIO_AF_7 -#define UART1_TX_PINSOURCE GPIO_PinSource9 -#define UART1_RX_PINSOURCE GPIO_PinSource10 -#endif -#define UART2_TX_PIN GPIO_Pin_14 // PA14 / SWCLK -#define UART2_RX_PIN GPIO_Pin_15 // PA15 -#define UART2_GPIO GPIOA -#define UART2_GPIO_AF GPIO_AF_7 -#define UART2_TX_PINSOURCE GPIO_PinSource14 -#define UART2_RX_PINSOURCE GPIO_PinSource15 +#define UART2_TX_PIN PA14 // PA14 / SWCLK +#define UART2_RX_PIN PA15 // PA15 -#ifndef UART3_GPIO -#define UART3_TX_PIN GPIO_Pin_10 // PB10 (AF7) -#define UART3_RX_PIN GPIO_Pin_11 // PB11 (AF7) -#define UART3_GPIO_AF GPIO_AF_7 -#define UART3_GPIO GPIOB -#define UART3_TX_PINSOURCE GPIO_PinSource10 -#define UART3_RX_PINSOURCE GPIO_PinSource11 -#endif +#define UART3_TX_PIN PB10 // PB10 (AF7) +#define UART3_RX_PIN PB11 // PB11 (AF7) #define USE_I2C #define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA diff --git a/src/main/target/common.h b/src/main/target/common.h index dbe2c3a37..c9a9a0f1b 100644 --- a/src/main/target/common.h +++ b/src/main/target/common.h @@ -36,6 +36,12 @@ #endif +#ifdef STM32F1 +// Using RX DMA disables the use of receive callbacks +#define USE_UART1_RX_DMA + +#endif + #define SERIAL_RX #define USE_CLI