串口接收到的数据是乱码怎么回事
锦瑟小仙 2013-05-25 07:59:20 #include "UART.h"
extern uint8 status;
/*
*Initialization of UART0
*/
void uart0_init(uint16 baudrate)
{
uint32 div,SYS_CLOCK;
SYS_CLOCK=80000000;
MCF_GPIO_PUAPAR=0b01010101;
//Reset Transmitter Receiver Mode Register
MCF_UART0_UCR=MCF_UART_UCR_RESET_TX;
MCF_UART0_UCR=MCF_UART_UCR_RESET_RX;
MCF_UART0_UCR=MCF_UART_UCR_RESET_MR;
//No parity,8bit data
MCF_UART0_UMR1=(0
|MCF_UART_UMR_PM_NONE
|MCF_UART_UMR_BC_8);
//1bit stop
MCF_UART0_UMR2|=MCF_UART_UMR_CM_NORMAL
|MCF_UART_UMR_SB_STOP_BITS_1;
//Set Rx and Tx buad by SYSTERM CLOCK
MCF_UART0_UCSR=0b11011101;
//Set UART interrupts
MCF_UART0_UIMR=0;
//set buad rate
div=(SYS_CLOCK/32/baudrate);
MCF_UART0_UBG1=(unsigned char)(div>>8);
MCF_UART0_UBG2=(unsigned char)(div&0x00ff);
//Enable Tx/Rx
MCF_UART0_UCR=(0
|MCF_UART_UCR_TX_ENABLED
|MCF_UART_UCR_RX_ENABLED);
}
//串口发送函数
void uart0_putchar(char c)
{
//Wait until space is available in the FIFO
while (!(MCF_UART0_USR&MCF_UART_USR_TXRDY))
{
;
}
//Send the character
MCF_UART0_UTB = (unsigned char)c;
}
//串口接收字符
unsigned char uart0_getchar()
{
//Wait until character has been received
while (!(MCF_UART0_USR & MCF_UART_USR_RXRDY))
{
};
return MCF_UART0_URB;
}
//串口发送字符串
void uart0_putstr(char *str)
{
while(*str!=0)
{
uart0_putchar(*str++);
}
}