当我试图编译nongnu avr用户手册上的示例时,我得到了一个错误:
下面是一个例子:
#include <stdio.h>
static int uart_putchar(char c, FILE *stream);
static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,
_FDEV_SETUP_WRITE);
static int
uart_putchar(char c, FILE *stream)
{
if (c == '\n')
uart_putchar('\r', stream);
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
return 0;
}
int
main(void)
{
init_uart();
stdout = &mystdout;
printf("Hello, world!\n");
return 0;
}
当我试图编译它时,我得到了UDR、UCSRA、UDRE和loop_until_bit_is_set未声明的错误。为什么会发生这种情况?
谢谢!
1条答案
按热度按时间ar7v8xwq1#
我通过包含〈avr/io. h〉、添加一些名称和实现init_uart函数来解决这个问题。