아~ 놔.. 열통 터지네. 이번에는 sprintf 함수에 아무리 float 값을 써도 이상하게 나와서 찾아보니,

이것도 컴파일러 문제일 듯 하네요. 또 라이브러리쪽에 뭘 써 넣어야 하는군요.

다음과 같이 수정하면 printf/sprintf 함수에서 floating point 값을 표시할 수 있습니다.

1. 프로젝트를 클릭하고, 다시 마우스 우클릭한 다음 Build Setting 을 클릭.




2. Linker 의 Use newlib-nano Float Format 을 True 로 고치고, 
command line 의 Custom Flags 에 -u _printf_float 라고 써 넣음.


STM32F4xx에서 uart2 로 printf()함수를 사용하는 방법을 테스트 해보고 정보를 공유합니다.


다음과 같은 코드를 main.c 파일에 추가하면 됩니다.

/* USER CODE BEGIN 0 */
#ifdef __GNUC__
 #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
 #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
 
PUTCHAR_PROTOTYPE
{
 HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 1);
 return ch;
}
/* USER CODE END 0 */



이 코드를 추가하기 전에 huart2 는 정의를 해야겠죠.
그리고 uart HAL 함수 HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 1); 를 사용해서 폴링으로 1Byte 전송하도록 되어 잇습니다.


+ Recent posts