STM32_printf
서론
기본적으로
#include
표준출력장치를 출력 대상으로 하고 있다.
하지만 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.
-
프로젝트 우클릭 Properties (프로젝트 누르고 Alt + Enter)
-
C/C++ Build -> Settings -> Tool Settings
-
MCU Settings -> Runtime library -> Reduced C
-
Use float with printf 체크
-
Apply and Close
방법2.
-
프로젝트 우클릭 Properties (프로젝트 누르고 Alt + Enter)
-
C/C++ Build -> Settings ->Tool Settings
-
MCU GCC Linker -> Miscellaneous
-
Other flags 의 +를 누른다.
-
-u printf_float 추가
-
Apply and Close
결과
Leave a comment