可以有两种方式实现串口初始化
1 通过TI提供的drive库函数
2 自己查寄存器手册直接初始化寄存器
下面函数中如果宏定义USER_UART 则是通过库函数 否则通过寄存器初始化
void User_UartInit (void)
{#ifdef USER_UART
halUARTCfg_t uartConfig;
/* UART Configuration */
uartConfig.configured = TRUE;
uartConfig.baudRate = USER_UART_DEFAULT_BAUDRATE;
uartConfig.flowControl = FALSE;//USER_UART_DEFAULT_OVERFLOW;
uartConfig.flowControlThreshold = USER_UART_DEFAULT_THRESHOLD;
uartConfig.rx.maxBufSize = USER_UART_DEFAULT_MAX_RX_BUFF;
uartConfig.tx.maxBufSize = USER_UART_DEFAULT_MAX_TX_BUFF;
uartConfig.idleTimeout = USER_UART_DEFAULT_IDLE_TIMEOUT;
uartConfig.intEnable = TRUE;
uartConfig.callBackFunc = NULL;//User_UartProcessData;
/* Start UART */
HalUARTOpen (USER_UART_DEFAULT_PORT, &uartConfig);
#else
PERCFG&=~0x01;
P0SEL |= 0x0C; //P0_2 RXD P0_3 TXD 外设功能 0000 1100
U0CSR |= 0xC0; //串口接收使能 1100 0000 工作UART模式+允许接受
U0UCR |= 0x00; //无奇偶校验,1位停止位
// U0GCR |= 0x08;
// U0BAUD = 0x3b; //波特率:9600bps
U0GCR |= 11;
U0BAUD = 216; //波特率:115200bps
// IEN0 |= 0X04; //开串口接收中断 'URX0IE = 1',也可以写成 URX0IE=1;
EA=1;
#endif
// printf("SystemInit\r\n");
U_LOG("Uart Init Finish!");
// E_LOG("Uart Init Err");
}
初始化完成后重写putchar函数就可以使用printf了
__near_func int putchar(int c)
{
#ifdef USER_UART
unsigned char data;
data = (unsigned char)c;
HalUARTWrite(USER_UART_DEFAULT_PORT,(uint8 *)&data,1);
#else
U0DBUF = (unsigned char)c;
while(UTX0IF == 0);
UTX0IF = 0;
#endif
return c;
}