串口输出重定向到 printf

xiaoxiao2021-02-28  74

//#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;    }

转载请注明原文地址: https://www.6miu.com/read-78925.html

最新回复(0)