@@ -115,7 +115,7 @@ serial_t *get_serial_obj(UART_HandleTypeDef *huart)
115115 * @param obj : pointer to serial_t structure
116116 * @retval None
117117 */
118- void uart_init (serial_t * obj , uint32_t baudrate , uint32_t databits , uint32_t parity , uint32_t stopbits )
118+ void uart_init (serial_t * obj , uint32_t baudrate , uint32_t databits , uint32_t parity , uint32_t stopbits , uint8_t rx_invert , uint8_t tx_invert )
119119{
120120 if (obj == NULL ) {
121121 return ;
@@ -408,10 +408,22 @@ void uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
408408 huart -> Init .HwFlowCtl = flow_control ;
409409 huart -> Init .OverSampling = UART_OVERSAMPLING_16 ;
410410#if defined(UART_ADVFEATURE_SWAP_INIT )
411- huart -> AdvancedInit .AdvFeatureInit = UART_ADVFEATURE_SWAP_INIT ;
411+ huart -> AdvancedInit .AdvFeatureInit | = UART_ADVFEATURE_SWAP_INIT ;
412412 huart -> AdvancedInit .Swap = pin_swap ;
413413#elif defined(UART_ADVFEATURE_NO_INIT )
414- huart -> AdvancedInit .AdvFeatureInit = UART_ADVFEATURE_NO_INIT ;
414+ huart -> AdvancedInit .AdvFeatureInit |= UART_ADVFEATURE_NO_INIT ;
415+ #endif
416+ #if defined(UART_ADVFEATURE_RXINVERT_INIT )
417+ if (rx_invert ) {
418+ huart -> AdvancedInit .AdvFeatureInit |= UART_ADVFEATURE_RXINVERT_INIT ;
419+ huart -> AdvancedInit .RxPinLevelInvert = UART_ADVFEATURE_RXINV_ENABLE ;
420+ }
421+ #endif
422+ #if defined(UART_ADVFEATURE_TXINVERT_INIT )
423+ if (tx_invert ) {
424+ huart -> AdvancedInit .AdvFeatureInit |= UART_ADVFEATURE_TXINVERT_INIT ;
425+ huart -> AdvancedInit .TxPinLevelInvert = UART_ADVFEATURE_TXINV_ENABLE ;
426+ }
415427#endif
416428#ifdef UART_ONE_BIT_SAMPLE_DISABLE
417429 huart -> Init .OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE ;
@@ -812,7 +824,7 @@ void uart_debug_init(void)
812824 serial_debug .pin_tx = pinmap_pin (DEBUG_UART , PinMap_UART_TX );
813825#endif
814826 /* serial_debug.pin_rx set by default to NC to configure in half duplex mode */
815- uart_init (& serial_debug , DEBUG_UART_BAUDRATE , UART_WORDLENGTH_8B , UART_PARITY_NONE , UART_STOPBITS_1 );
827+ uart_init (& serial_debug , DEBUG_UART_BAUDRATE , UART_WORDLENGTH_8B , UART_PARITY_NONE , UART_STOPBITS_1 , false, false );
816828 }
817829}
818830
0 commit comments