void uart6_init(void) { uart_periph_init(&uart6); uart6.reg_addr = (void *)USART6; /* enable uart clock */ rcc_periph_clock_enable(RCC_USART6); /* init RCC and GPIOs */ #if USE_UART6_TX gpio_setup_pin_af(UART6_GPIO_PORT_TX, UART6_GPIO_TX, UART6_GPIO_AF, TRUE); #endif #if USE_UART6_RX gpio_setup_pin_af(UART6_GPIO_PORT_RX, UART6_GPIO_RX, UART6_GPIO_AF, FALSE); #endif /* Enable USART interrupts in the interrupt controller */ usart_enable_irq(NVIC_USART6_IRQ); #if UART6_HW_FLOW_CONTROL #warning "USING UART6 FLOW CONTROL. Make sure to pull down CTS if you are not connecting any flow-control-capable hardware." /* setup CTS and RTS pins */ gpio_setup_pin_af(UART6_GPIO_PORT_CTS, UART6_GPIO_CTS, UART6_GPIO_AF, FALSE); gpio_setup_pin_af(UART6_GPIO_PORT_RTS, UART6_GPIO_RTS, UART6_GPIO_AF, TRUE); #endif /* Configure USART Tx,Rx and hardware flow control*/ uart_periph_set_mode(&uart6, USE_UART6_TX, USE_UART6_RX, UART6_HW_FLOW_CONTROL); uart_periph_set_bits_stop_parity(&uart6, UART6_BITS, UART6_STOP, UART6_PARITY); uart_periph_set_baudrate(&uart6, UART6_BAUD); }
void uart1_init( void ) { uart_periph_init(&uart1); uart1.reg_addr = (void *)USART1; /* init RCC and GPIOs */ rcc_periph_clock_enable(RCC_USART1); /* #if USE_UART1_TX gpio_setup_pin_af(UART1_GPIO_PORT_TX, UART1_GPIO_TX, UART1_GPIO_AF, TRUE); #endif #if USE_UART1_RX gpio_setup_pin_af(UART1_GPIO_PORT_RX, UART1_GPIO_RX, UART1_GPIO_AF, FALSE); #endif */ /* Enable USART interrupts in the interrupt controller */ #define NVIC_USART1_IRQ 37 usart_enable_irq(NVIC_USART1_IRQ); #if UART1_HW_FLOW_CONTROL #warning "USING UART1 FLOW CONTROL. Make sure to pull down CTS if you are not connecting any flow-control-capable hardware." /* setup CTS and RTS gpios */ gpio_setup_pin_af(UART1_GPIO_PORT_CTS, UART1_GPIO_CTS, UART1_GPIO_AF, FALSE); gpio_setup_pin_af(UART1_GPIO_PORT_RTS, UART1_GPIO_RTS, UART1_GPIO_AF, TRUE); #endif /* Configure USART1, enable hardware flow control*/ uart_periph_set_mode(&uart1, USE_UART1_TX, USE_UART1_RX, UART1_HW_FLOW_CONTROL); /* Set USART1 parameters and enable interrupt */ uart_periph_set_bits_stop_parity(&uart1, UART1_BITS, UART1_STOP, UART1_PARITY); uart_periph_set_baudrate(&uart1, UART1_BAUD); }
// Init function void radio_control_impl_init(void) { sbus.frame_available = FALSE; sbus.status = SBUS_STATUS_UNINIT; // Set UART parameters (100K, 8 bits, 2 stops, even parity) uart_periph_set_bits_stop_parity(&SBUS_UART_DEV, UBITS_8, USTOP_2, UPARITY_EVEN); uart_periph_set_baudrate(&SBUS_UART_DEV, B100000); // Set polarity #ifdef RC_POLARITY_GPIO_PORT gpio_setup_output(RC_POLARITY_GPIO_PORT, RC_POLARITY_GPIO_PIN); RC_SET_POLARITY(RC_POLARITY_GPIO_PORT, RC_POLARITY_GPIO_PIN); #endif }
void sbus_common_init(struct Sbus *sbus_p, struct uart_periph *dev) { sbus_p->frame_available = false; sbus_p->status = SBUS_STATUS_UNINIT; // Set UART parameters (100K, 8 bits, 2 stops, even parity) uart_periph_set_bits_stop_parity(dev, UBITS_8, USTOP_2, UPARITY_EVEN); uart_periph_set_baudrate(dev, B100000); // Set polarity #ifdef RC_POLARITY_GPIO_PORT gpio_setup_output(RC_POLARITY_GPIO_PORT, RC_POLARITY_GPIO_PIN); RC_SET_POLARITY(RC_POLARITY_GPIO_PORT, RC_POLARITY_GPIO_PIN); #endif }
void sbus_common_init(struct Sbus *sbus_p, struct uart_periph *dev, gpio_port_t gpio_polarity_port, uint16_t gpio_polarity_pin) { sbus_p->frame_available = false; sbus_p->status = SBUS_STATUS_UNINIT; // Set UART parameters (100K, 8 bits, 2 stops, even parity) uart_periph_set_baudrate(dev, B100000); uart_periph_set_bits_stop_parity(dev, UBITS_8, USTOP_2, UPARITY_EVEN); // Try to invert RX data logic when available in hardware periph uart_periph_invert_data_logic(dev, true, false); // Set polarity (when not done in hardware, don't use both!) if (gpio_polarity_port != 0) { gpio_setup_output(gpio_polarity_port, gpio_polarity_pin); RC_SET_POLARITY(gpio_polarity_port, gpio_polarity_pin); } }
// Init function void radio_control_impl_init(void) { sbus.frame_available = FALSE; sbus.status = SBUS_STATUS_UNINIT; // Set UART parameters (100K, 8 bits, 2 stops, even parity) uart_periph_set_bits_stop_parity(&SBUS_UART_DEV, UBITS_8, USTOP_2, UPARITY_EVEN); uart_periph_set_baudrate(&SBUS_UART_DEV, B100000); // Set polarity #ifdef RC_POLARITY_GPIO_PORT gpio_setup_output(RC_POLARITY_GPIO_PORT, RC_POLARITY_GPIO_PIN); RC_SET_POLARITY(RC_POLARITY_GPIO_PORT, RC_POLARITY_GPIO_PIN); #endif // Register telemetry message #if PERIODIC_TELEMETRY register_periodic_telemetry(DOWNLINK_TELEMETRY, "PPM", send_sbus); #endif }
void uart5_init( void ) { uart_periph_init(&uart5); uart5.reg_addr = (void *)UART5; /* init RCC and GPIOs */ rcc_periph_clock_enable(RCC_UART5); #if USE_UART5_TX gpio_setup_pin_af(UART5_GPIO_PORT_TX, UART5_GPIO_TX, UART5_GPIO_AF, TRUE); #endif #if USE_UART5_RX gpio_setup_pin_af(UART5_GPIO_PORT_RX, UART5_GPIO_RX, UART5_GPIO_AF, FALSE); #endif /* Enable USART interrupts in the interrupt controller */ usart_enable_irq(NVIC_UART5_IRQ); /* Configure USART */ uart_periph_set_mode(&uart5, USE_UART5_TX, USE_UART5_RX, FALSE); uart_periph_set_bits_stop_parity(&uart5, UART5_BITS, UART5_STOP, UART5_PARITY); uart_periph_set_baudrate(&uart5, UART5_BAUD); }