//#include "uart.h"
#include "stdio.h"
// static int uart_putchar(char c, FILE *stream);
static int uart_putchar(char c, FILE *stream) // 自定义函数, static int uart_putchar(char c) 也可以。
{
if (c == '\n')
uart_putchar('\r', stream); //换行符
//串口输出字符
loop_until_bit_is_set(UCSR0A, UDRE0); // 或 :while (!(UCSR0A & (1<<UDRE0))); 表示串口数据寄存器可写。
UDR0 = c;
return 0;
}
static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,_FDEV_SETUP_WRITE);
void uart_init(void)
{
//串口初始化
UCSR0A |= (1<< U2X0);//倍速
UCSR0B = (1<<RXEN0) | (1<<TXEN0);
UBRR0L = (unsigned char) USART_BAUD_SELECT;
UBRR0H = (unsigned char) (USART_BAUD_SELECT>>8);
//重定向
stdout = &mystdout;
}