printf 함수는 펌웨어 개발단계에서 디버깅을 위해 가장 많이 사용하는 방법중 하나이다.
보통 visual studio나 PC 기반의 IDE는 printf를 통하여 툴에서 화면으로 출력되도록 지정되어 있다.
그러나 STM32와 같은 임베디드 보드의 경우에는 printf를 출력할 대상을 지정해주어야 한다.
STM는 UART를 기본적으로 가지고 있기 때문에 UART를 이용하여 printf를 출력할 수 있다.
오늘은 UART를 이용하여 printf를 터미널 화면으로 출력하는 방법을 소개한다.
UART를 이용하여 printf를 출력하기 위해서는 먼저 UART 사용할 수 있도록 드라이버가 설정되어 있어야 한다. STM32CubeIDE에서 UART를 설정하는 방법에 대해서는 아래를 참고하면 된다.
https://swiftcam.tistory.com/89
1. main.c에서 printf를 사용하기 위해서는 아래 헤더파일을 추가한다. stdio.h는 printf가 정의되어 있는 standard io 헤더파일이다.
#define <stdio.h> |
2. 그 아래에 다음과 같은 함수를 추가한다. _write는 printf 함수의 출력대상을 redirection하는 함수이다. printf를 실행하 경우 아래 함수가 호출되어 UART로 데이터를 1byte 씩 len의 크기 만큼 전송한다.
int _write(int file, char* p, int len) { for(int i=0; i<len; i++) { LL_USART_TransmitData8(USART6, *(p+i)); LL_mDelay(1); } return len; } |
3. main.c에서 printf를 이용하여 문자열을 출력해본다.
4. 터미널 프로그램을 이용하여 문자열이 출력되는지 확인한다.
728x90
'엔지니어링 > 임베디드' 카테고리의 다른 글
[STM32] sysTick 을 이용한 usDelay 함수 만들기 (4) | 2020.03.09 |
---|---|
[STM32] UART로 실수형(float) 출력하기 (0) | 2020.03.06 |
[아두이노 기초] 타이머 제어 (1) | 2020.02.18 |
[아두이노 기초] 초음파 센서 (0) | 2020.02.15 |
[아두이노 기초] SPI 통신 (0) | 2020.02.12 |
댓글