I mean, I'm just using the UART code that gets created when you make a project. So, I'm not really sure why it wouldn't be working.
void uart_init(int channel, unsigned long systemClockKHz, unsigned long baudRate)
{
/*
* Initialize UART for serial communications
*/
register uint16 ubgs;
#if UART_SUPPORT_TYPE==UART_54451
uint32 vco;
uint32 divider;
uint32 bus_clk;
divider = ((MCF_CLOCK_PCR & 0x000000F0) >> 4) + 1;
vco = ((MCF_CLOCK_PCR >> 24) * systemClockKHz * 1000);
bus_clk = (vco / divider);
#endif
/*
* Reset Transmitter
*/
MCF_UART_UCR(channel) = MCF_UART_UCR_RESET_TX;
/*
* Reset Receiver
*/
MCF_UART_UCR(channel) = MCF_UART_UCR_RESET_RX;
/*
* Reset Mode Register
*/
MCF_UART_UCR(channel) = MCF_UART_UCR_RESET_MR;
/*
* No parity, 8-bits per character
*/
MCF_UART_UMR(channel) = (0
| MCF_UART_UMR_PM_NONE
| MCF_UART_UMR_BC_8 );
/*
* No echo or loopback, 1 stop bit
*/
MCF_UART_UMR(channel) = (0
| MCF_UART_UMR_CM_NORMAL
| MCF_UART_UMR_SB_STOP_BITS_1);
/*
* Set Rx and Tx baud by SYSTEM CLOCK
*/
MCF_UART_UCSR(channel) = (0
| MCF_UART_UCSR_RCS_SYS_CLK
| MCF_UART_UCSR_TCS_SYS_CLK);
/*
* Mask all UART interrupts
*/
MCF_UART_UIMR(channel) = 0;
/*
* Calculate baud settings
*/
#if UART_SUPPORT_TYPE==UART_54451
ubgs = (uint16)(((bus_clk >> 5) + (baudRate >> 1)) / baudRate);
#else
ubgs = (uint16)((systemClockKHz * 1000)/(baudRate * 32));
#endif
#if UART_SUPPORT_TYPE==UART_DIVIDER || UART_SUPPORT_TYPE == UART_5407
MCF_UART_UDU(channel) = (uint8)((ubgs & 0xFF00) >> 8);
MCF_UART_UDL(channel) = (uint8)(ubgs & 0x00FF);
#else /* UART_SUPPORT_TYPE!=UART_DIVIDER */
MCF_UART_UBG1(channel) = (uint8)((ubgs & 0xFF00) >> 8);
MCF_UART_UBG2(channel) = (uint8)(ubgs & 0x00FF);
#endif /* UART_SUPPORT_TYPE==UART_DIVIDER */
/*
* Enable receiver and transmitter
*/
MCF_UART_UCR(channel) = (0
| MCF_UART_UCR_TX_ENABLED
| MCF_UART_UCR_RX_ENABLED);