STM32 USART Rx Interrupts
Did you clear the interrupt bit? Try calling void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT) after you've processed the event.

If I were you I'd just include line feeds as the command separator, but you certainly could set a timer.