STM32_printf

less than 1 minute read

서론

기본적으로

#include 에 있는 printf(); 는

표준출력장치를 출력 대상으로 하고 있다.

하지만 STM32 MCU는 표준출력장치가 정해져 있지 않아서

syscalls.c 에 있는 _write 함수를 재정의하여

printf가 터미널에 보일 수 있도록 출력 대상을 UART 같은 것으로 바꿔줘야 한다.

Tiny printf

아직 조사 못함

UART printf

stdio.h 추가

/* USER CODE BEGIN Includes */
#include <stdio.h> 	// printf 사용
/* USER CODE END Includes */

_write 재정의

/* USER CODE BEGIN PFP */
int _write(int file, char* p, int len)	// printf 함수 호출 -> 함수 실행
{
	HAL_UART_Transmit(&huart3, p, len, 10);	// 출력 대상을 리디렉션
	return len;
}
/* USER CODE END PFP */

float사용1

float 사용

방법1.

  1. 프로젝트 우클릭 Properties (프로젝트 누르고 Alt + Enter)

  2. C/C++ Build -> Settings -> Tool Settings

  3. MCU Settings -> Runtime library -> Reduced C

  4. Use float with printf 체크

  5. Apply and Close

float사용_reduced

방법2.

  1. 프로젝트 우클릭 Properties (프로젝트 누르고 Alt + Enter)

  2. C/C++ Build -> Settings ->Tool Settings

  3. MCU GCC Linker -> Miscellaneous

  4. Other flags 의 +를 누른다.

  5. -u printf_float 추가

  6. Apply and Close

float사용

결과

float사용3

Go to top

Leave a comment