关于Ubuntu+vscode环境下,stm32添加stdio.h和重定向printf
vscode 添加stdio.h
当需要用到stdio.h时,需要在vscode添加头文件路径,一般为/usr/include
一般方法为点击不能识别的#include“xxxx”,然后点击出现的黄色灯泡,选择编辑头文件路径,然后添加/usr/include/**
重定向printf
这里提供的是通过gcc编译环境下的重定向printf的方法,使用keil编译的另找。只需要添加一下代码在main.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
{
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
int _write(int file, char *ptr, int len)
{
int DataIdx;
for (DataIdx = 0; DataIdx < len;DataIdx++)
{
__io_putchar(*ptr++);
}
return len;
}
其中&huart1,改为自己定义的串口句柄,这里使用的stm32cube软件自动生成的代码,所以是&huart1.