AVR Studio 4.19기준 상부의 “Project”메뉴에서 “Configration Options”를 선택해 Project Option 진입 후 아래와 같은 절차로 설정해주면 Printf 함수를 사용할 수 있음.
libprintf_flt.a 를 Link with These에 추가
Link Options에 아래 옵션 추가
-Wl,-u,vfprintf
-lprintf_flt
-lm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <avr/io.h> #include <stdio.h> // 핵심 // USART1 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART1 Receiver: On // USART1 Transmitter: On // USART1 Mode: Asynchronous // USART1 Baud Rate: 9600 UCSR1A=(0<<RXC1) | (0<<TXC1) | (0<<UDRE1) | (0<<FE1) | (0<<DOR1) | (0<<UPE1) | (0<<U2X1) | (0<<MPCM1); UCSR1B=(0<<RXCIE1) | (0<<TXCIE1) | (0<<UDRIE1) | (1<<RXEN1) | (1<<TXEN1) | (0<<UCSZ12) | (0<<RXB81) | (0<<TXB81); UCSR1C=(0<<UMSEL11) | (0<<UMSEL10) | (0<<UPM11) | (0<<UPM10) | (0<<USBS1) | (1<<UCSZ11) | (1<<UCSZ10) | (0<<UCPOL1); UBRR1H=0x00; UBRR1L=0x47; // 각종 USART 레지스터인데 사용하고자 출력 포트의 레지스터로 변경사용해도 됨 // 예제는 USART1로 설정 static int TxChar(char data, FILE *stream); static FILE device = FDEV_SETUP_STREAM(TxChar, NULL, _FDEV_SETUP_WRITE); int TxChar(char data, FILE * stream){while(!(UCSR1A & (1 << UDRE1)));UDR1 = data;return 0;} // USARTxA,UDREx,UDRx 의 숫자를 바꿔주면 출력 포트를 변경가능 // 예제는 USART1로 사용 int main(void) { stdout = &device; while(1) { printf("Hello World\r\n"); } } |