안녕하세요?
오늘은 자꾸만 까먹어서 기록해 놓은 STM32CubeIDE에서 <sdtion.h>에서 가장 많이 사용되는 printf 함수의 uart(usart) 구현 방법을 알아보겠습니다. 코드 먼저 보도록 하겠습니다.
#include <stdio.h>
printf가 사용된 곳에 위의 <stdio.h>를 include 해줍니다.
그리고 실제 STM32CubeIDE에서 사용가능하도록 _write 함수를 구현해 주면 끝납니다.
int _write(int file, char *ptr, int len)
{
HAL_UART_Transmit(&hlpuart1, (uint8_t *)ptr, len, HAL_MAX_DELAY);
return len;
}
추가로 printf에서 float 형태의 인자를 받기위해서는 아래와 같은 설정을 해주어야 합니다.
다만 주의할 점은 stdio lib가 무척 헤비한 편에 속하니 resource의 여유가 없는 곳에서는 사용이 어렵습니다. 또한 내부적으로 굉장히 많은 call stack을 쌓고 있으며 Core load 또한 무시할 정도가 되지 않기 때문에 printf, scanf등을 #define 을 통해 on/off 해주는 기능을 반드시 넣으시고 어플리케이션에서 사용 유무에 따라 문제가 발생하지 않는지 수시로 확인해 주어야 합니다.
그럼 이만..
'▶ STM32 > Peripheral' 카테고리의 다른 글
Buck current mode with the B-G474E-DPOW1 Discovery kit (1) - Principle (0) | 2023.12.23 |
---|---|
STM32 SAR ADC 변환 시간 및 기능에 대해 (0) | 2023.12.20 |
STM32 Window watchdog 멈추기 (0) | 2023.12.13 |
STM32 에서 ADC Polling conversion 하는 방법(2) (0) | 2023.12.08 |
STM32 에서 ADC Polling conversion 하는 방법(1) (0) | 2023.12.08 |