STM32F407 USART Interrupt config
Read The Fine Manual


  USART_IT,: specifies the USART interrupt sources to be enabled or disabled. This parameter can be one of the following values:
  
  
  USART_IT_CTS: CTS change interrupt
  USART_IT_LBD: LIN Break detection interrupt
  USART_IT_TXE: Transmit Data Register empty interrupt
  USART_IT_TC: Transmission complete interrupt
  USART_IT_RXNE: Receive Data register not empty interrupt
  USART_IT_IDLE: Idle line detection interrupt
  USART_IT_PE: Parity Error interrupt
  USART_IT_ERR: Error interrupt(Frame error, noise error, overrun error)
  


So don't try any combinations. Looking at the library source, it actually checks and rejects any value not in the list, if USE_FULL_ASSERT is enabled.

If you'd like to have short, fast, and easy to understand code, just write

USART1-&gt;CR1 |= USART_CR1_RXNEIE | USART_CR1_TXEIE;