IAR 9.20.1 버전 이후 <stdio.h> 에 overriding 되어 있는 fputc() 은 더 이상 동작하지 않습니다.
자세한 내용은 아래 URL을 참조하시기 바랍니다.
위의 Application Note에 따르면 IAR 9.20.1 이상버전 + Full library configuration을 사용하는 경우 _write() 함수를 이용하여야 합니다. _write 함수는 EWARM 이전 버전에서도 이미 지원되고 있었습니다.
#include <stdio.h>
#if defined(__ICCARM__)
#include <LowLevelIOInterface.h>
#endif
#if defined(__ICCARM__)
int iar_fputc(int ch);
#define PUTCHAR_PROTOTYPE int write(int ch)
#elif defined ( __CC_ARM ) || defined(__ARMCC_VERSION)
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#elif defined(__GNUC__)
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#endif /* __ICCARM__ */
#if defined(__ICCARM__)
size_t __write(int file, const unsigned char *ptr, size_t size)
{
const unsigned char const *p= ptr;
for(int i=0; i<len; i++)
{
write((int)*p);
p++;
}
return size;
}
#endif /* __ICCARM__ */
/**
* @brief Retargets the C library printf function to the USART.
*/
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&husartx, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
<끝>
'▶ STM32 > 개발환경' 카테고리의 다른 글
STM32 와 ST-Link 연결이 안 될 경우 체크 사항 (0) | 2024.02.01 |
---|---|
STM32에서 Hardfault 만들기 (1) | 2024.01.17 |
STM32CubeAI를 이용한 XOR 게이트 모델 (0) | 2024.01.10 |
STM32CubeIDE Terminal Console (0) | 2023.12.16 |
STM32CubeIDE, 나의 Code를 일관성 있게 만드는 Formatter (0) | 2023.12.08 |