UART doesn't work with ADC enabled
I've fixed it. It didn't call the USART2_IRQHanlder() because I didn't enable USART global interrupts. That didn't fix the whole problem though. UART Transmit still didn't work properly - it was in BUSY state after sending 1 message. I followed the code and found why - turns out the HAL_Delay(500) affected the memory where the state was stored and that's why the state value was incorrect. Thanks for all your input, it helped me follow the problem to its root.