使用cubemx生成的工程,想使用printf来实现串口打印,一直在搜寻,终于找到了较为合适的方法。
1.点击truestudio,新建->其他->系统调用,然后将syscalls.c选择路径为src下即可。
2.在uart.c下添加如下语句
#include <stdio.h>
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
//具体哪个串口可以更改huart1为其它串口
HAL_UART_Transmit(&huart2 , (uint8_t *)&ch, 1 , 0xffff);
return ch;
}
3.在syscalls.c文件下,
添加内容
int DataIdx;
for (DataIdx = 0; DataIdx < len;DataIdx++)
{
__io_putchar(*ptr++);
}
return len;
4.然后就可以使用printf了
5.最好能加上
新建->其他-库函数-微笑printf实现
要不printf %s,%d,可能会出现内存泄漏。