1:创建工程参考链接
2:将参考链接里面的fputc这一块代码进行更换;
int fputc(int c,FILE *f)
{
uint8_t ch[1]={c};
HAL_UART_Transmit(&huart1,ch,1,0xFFFF);
return c;
}
改换成代码:
#include <stdio.h>
#include <sys/unistd.h>
#include <sys/stat.h>
/* USER CODE BEGIN 4 */
// 关闭标准输出缓冲,printf 立即生效
/* USER CODE BEGIN 4 */
int _write(int file, char *ptr, int len)
{
HAL_UART_Transmit(&huart1, (uint8_t*)ptr, len, 100);
return len;
}
/* USER CODE END 4 */
原因:VSCode + GCC 环境必须用 _write;fputc 是 Keil MDK(ARMCC 编译器)专用的 printf 重定向函数;_write 是 GCC(VSCode/CubeIDE 用)专用的 printf 重定向函数。