Micom_Electric/마이컴_원칩
2012. 3. 20. 19:32
예전에 해둔 포스팅
http://turbocrazy.tistory.com/entry/%ED%8E%8C-GCC%EC%97%90%EC%84%9C-printf-UART%EB%A1%9C-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0-avr-libc-putchar-%ED%95%A8%EC%88%98-%EC%A0%95%EC%9D%98-%ED%95%98%EA%B8%B0
쓸라고 넣고 컴파일 해보니
stray '\241' 에러...
확인해 보니 허무한 에러
'\r' 에 붙은 따옴표 오류임...
아래거 대신에..
===
==============
수정된것
쓸때는 아래처럼 UART 초기화및 세팅해 주고 사용하면 된다
http://turbocrazy.tistory.com/entry/%ED%8E%8C-GCC%EC%97%90%EC%84%9C-printf-UART%EB%A1%9C-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0-avr-libc-putchar-%ED%95%A8%EC%88%98-%EC%A0%95%EC%9D%98-%ED%95%98%EA%B8%B0
쓸라고 넣고 컴파일 해보니
stray '\241' 에러...
확인해 보니 허무한 에러
'\r' 에 붙은 따옴표 오류임...
아래거 대신에..
===
Code:
#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;
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;
}
수정된것
static int uartPutch(char c, FILE *stream);
static FILE uartstdout = FDEV_SETUP_STREAM(uartPutch, NULL,_FDEV_SETUP_WRITE);
static int uartPutch(char c, FILE *stream){
if (c == '\n' || c == '\0')
uartPutch('\r', stream);
loop_until_bit_is_set(UCSR0A, UDRE0);
UDR0 = c;
return 0;
} 쓸때는 아래처럼 UART 초기화및 세팅해 주고 사용하면 된다
// ----------------------------------------------------------------------------
int main(void){
stdout = &uartstdout; // Use UART as Stdout
uartInit(); // Set baud 9600, 8 bit, no parity, 1 stop