Hi Tim,
Based on your description I have some observations that may help debug this issue that you are having. When reading your LSR register you have 0x60, this means that your transmitter register is also empty, therefore nothing is being sent and consequently your while loop will remain as nothing is received.
Can you please check the status of the 1) DLAB prior to reading the LSR register(from the code your provided I can see you clear this bit at the end of initialization, but I'd like to make sure that nothing is changing it prior to your UART3_receiving), 2) try hardcoding a value into THR and then calling your receive function (here you should be able to confirm if you are properly sending and receiving).
In that section you should essentially do the following:
UART3 -> THR = data_to_send;
UART3->LCR DLAB status?/* not necessary if you confirm that it is 0 prior to reading the next line*/
read_register_value = UART->LSR; (check if thr has data or not)
data_to_read = UART->RBR;
data_to_send == data_to_read?
Also you mention that you are able to see some data incoming. Can you please elaborate, when do you see this? and is it what you were expecting for that moment?
Let me know the results.
Best Regards,
Sabina