티스토리 뷰
이제 UART를 이용하여 AVR에서 printf() 함수를 사용할 수 있게 되었으니, 개발환경 구축 글에서 하고자 했던 "hello, world"라는 메시지를 컴퓨터 화면으로 출력하는 프로젝트를 만들어 보겠다.
물론 이미 앞의 글에서 printf()를 사용하여 문자를 출력하는 것을 해 보았기 때문에 굳이 "hello, world"를 출력해 보는 것을 따로 해 볼 필요는 없다.
그러나 이번 글은 단순히 printf를 이용해서 문자를 출력해 보는것이 목적이 아니라, uart관련된 코드를 별도의 c와 h파일로 분리 시켜, 이후에 진행 되는 프로젝트에서 쉽게 재활용할 수 있는 방법에 대해서 설명하기 위하여 이번 프로젝트를 진행하게 되었다.
먼저 uart.h 파일을 다음과 같이 만든다.
그리고 uart.c 파일은 다음과 같이 작성한다.
새로운 c파일로 만든 uart.c 파일을 프로젝트에 추가하여 main.c 파일과 같이 빌드되도록 하여야 한다.
Atmel Studio의 메뉴에서 Project > Add Existing Item...을 실행하여 uart.c 파일을 프로젝트에 등록한다.
파일이 등록되면 Atmel Studio의 "Solution Explorer" 창에 uart.c파일이 보이게 된다.
이렇게 한 다음 프로젝트를 빌드하면 아래 그림과 같은 에러가 발생할 것이다.
uart_init()함수에서 사용하는 F_CPU가 정의되지 않았기 때문에 발생하는 에러이다. F_CPU값은 여러 함수에서 참조하여 사용할 경우가 많으므로 매번 파일에 F_CPU를 정의하는 것보다 프로젝트에서 공통으로 사용할 수 있도록 해주는 것이 좋다. 그렇게 하기 위해서 프로젝트 속성창에 등록해 주면 된다.
Atmel Studio 메뉴에서 Project > Properties를 선택하면 프로젝트 속성창이 열리게 된다.
Toolchain > AVR/GNU C Compiler > Symbols를 선택한 후 그림에 보이는 빨간색 박스에 보이는 버튼을 클릭한다.
위 그림과 같은 다이얼로그 박스가 보이면 "F_CPU=1000000"이라고 입력한 후 OK버튼을 누른다. 그러면 Defined symbols에 입력한 내용이 추가된 것을 볼 수 있을것이다.
그리고 다시 빌드하면 에러가 더 이상 발생하지 않는다. 그리고 추후에 F_CPU가 필요한 부분에서는 그냥 사용하여도 컴파일 에러가 발생하지 않고 정상적으로 동작되는 결과물을 만들어 내게 된다.
이제 마지막으로 main.c 파일을 다음과 같이 작성한다.
이제 프로젝트를 빌드하고 실행 시킨 다음 컴퓨터의 UART 터미널을 확인해 본다.
마침내, AVR에서 printf()를 사용하여 컴퓨터 화면에 "hello, world"가 출력되는것을 볼 수 있게 되었다.
'입문' 카테고리의 다른 글
인터럽트 - 개념 (1) | 2016.04.04 |
---|---|
UART 온도계 (0) | 2016.04.03 |
UART - stdio (1) | 2016.04.03 |
UART - sprintf, my_printf (0) | 2016.04.03 |
UART - 수신 (0) | 2016.04.03 |