CubeIDE使用的时GNUC编译器, Keil使用的是自己的编译器,两个对printf的重载是不一样的,
如果一个程序同时在cubeide和keil下使用,则需要选择编译。代码如下
#ifdef __GNUC__ //CUBEIDE中printf函数
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
PUTCHAR_PROTOTYPE {
HAL_UART_Transmit(pfhuart, (uint8_t*) &ch, 1, 1);
return ch;
}
#else // keil中
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
};
FILE __stdout;
FILE __stdin;
//int _sys_exit(int x)
void _sys_exit(int x)
{
x = x;
}
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(pfhuart, (uint8_t*) &ch, 1, 1);
return ch;
}
#endif