// Initialize UART for extended-audio void AUDIO_Init() { if (Transmitter.audio_player == AUDIO_DISABLED) { // Reload hardware.ini if audio_player had been temporarily disabled CONFIG_LoadHardware(); } printf("Voice: Initializing UART for extended-audio\n"); #if HAS_AUDIO_UART5 if (Transmitter.audio_uart5) { printf("Voice: UART5 already initialized\n"); return; } #endif #ifndef _DEVO12_TARGET_H_ if ( PPMin_Mode() || Model.protocol == PROTOCOL_PPM ) { printf("Voice: Cannot initialize UART for extended-audio, PPM in use\n"); UART_SetDataRate(0); } else { #endif // _DEVO12_TARGET_H_ printf("Voice: Setting up UART for extended-audio\n"); UART_SetDataRate(9600); #ifndef _DEVO12_TARGET_H_ } #endif // _DEVO12_TARGET_H_ AUDIO_SetVolume(); }
void UART_Initialize() { /* Enable clocks for GPIO port containing _USART and USART */ rcc_periph_clock_enable(get_rcc_from_port(UART_CFG.uart)); rcc_periph_clock_enable(get_rcc_from_pin(UART_CFG.rx)); rcc_periph_clock_enable(get_rcc_from_pin(UART_CFG.tx)); /* Enable DMA clock */ rcc_periph_clock_enable(get_rcc_from_port(USART_DMA.dma)); /* Setup GPIO pin GPIO_USARTX_TX on USART GPIO port for transmit. Set normal function to input as this is mode reverted to in half-duplex receive */ GPIO_setup_input(UART_CFG.rx, ITYPE_FLOAT); GPIO_setup_output_af(UART_CFG.tx, OTYPE_PUSHPULL, UART_CFG.uart); /* Setup UART parameters. */ UART_SetDataRate(0); UART_SetFormat(8, UART_PARITY_NONE, UART_STOPBITS_1); UART_SetDuplex(UART_DUPLEX_FULL); usart_set_flow_control(UART_CFG.uart, USART_FLOWCONTROL_NONE); usart_set_mode(UART_CFG.uart, USART_MODE_TX_RX); /* Finally enable the USART. */ usart_enable(UART_CFG.uart); nvic_set_priority(get_nvic_dma_irq(USART_DMA), 3); nvic_enable_irq(get_nvic_dma_irq(USART_DMA)); #if HAS_AUDIO_UART /* Enable clocks for GPIO port C (for GPIO_UART5_TX) and UART5. */ rcc_periph_clock_enable(get_rcc_from_port(AUDIO_UART_CFG.uart)); rcc_periph_clock_enable(get_rcc_from_pin(AUDIO_UART_CFG.tx)); /* Setup GPIO pins to use UART5 */ GPIO_setup_output_af(AUDIO_UART_CFG.tx, OTYPE_PUSHPULL, AUDIO_UART_CFG.uart); /* Setup UART5 parameters. */ usart_set_baudrate(AUDIO_UART_CFG.uart, 9600); usart_set_databits(AUDIO_UART_CFG.uart, 8); usart_set_stopbits(AUDIO_UART_CFG.uart, USART_STOPBITS_1); usart_set_parity(AUDIO_UART_CFG.uart, USART_PARITY_NONE); usart_set_mode(AUDIO_UART_CFG.uart, USART_MODE_TX); /* Finally enable the AUDIO_UART_CFG.uart. */ usart_enable(AUDIO_UART_CFG.uart); #endif }