@@ -115,7 +115,7 @@ serial_t *get_serial_obj(UART_HandleTypeDef *huart)
115
115
* @param obj : pointer to serial_t structure
116
116
* @retval None
117
117
*/
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 )
119
119
{
120
120
if (obj == NULL ) {
121
121
return ;
@@ -408,10 +408,22 @@ void uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
408
408
huart -> Init .HwFlowCtl = flow_control ;
409
409
huart -> Init .OverSampling = UART_OVERSAMPLING_16 ;
410
410
#if defined(UART_ADVFEATURE_SWAP_INIT )
411
- huart -> AdvancedInit .AdvFeatureInit = UART_ADVFEATURE_SWAP_INIT ;
411
+ huart -> AdvancedInit .AdvFeatureInit | = UART_ADVFEATURE_SWAP_INIT ;
412
412
huart -> AdvancedInit .Swap = pin_swap ;
413
413
#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
+ }
415
427
#endif
416
428
#ifdef UART_ONE_BIT_SAMPLE_DISABLE
417
429
huart -> Init .OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE ;
@@ -812,7 +824,7 @@ void uart_debug_init(void)
812
824
serial_debug .pin_tx = pinmap_pin (DEBUG_UART , PinMap_UART_TX );
813
825
#endif
814
826
/* 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 );
816
828
}
817
829
}
818
830
0 commit comments