STM32 Cmake平台上对printf进行串口重定向的方法

从keil转移到cmake上的朋友可能还不知道怎么进行串口重定向

因为不是keil有自带microlib库,没法继续套用。

我将通过下面的示例告诉大家,并避免踩到一些已有的坑。

cmake框架由cubemx生成,如有提到路径就是生成目录下的

int _write(int fd, char *ptr, int len)  
{  
  HAL_UART_Transmit(&uart_handle, (uint8_t*)ptr, len, 0xFFFF);
  return len;
}

通过这个输出函数就能实现串口打印,但还有一些是要注意的:

  • printf的内容后面要跟上\r\n,不然串口打印不显示,最好是后面单独给出一行
    printf("hello,world");
    printf(\r\n);
    
  • 默认不能输出浮点数,因为编译器选项没有开启,在路径cmake/gcc-arm-none-eabi.cmake里配置
    -u _printf_float(添加这个编译选项)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fdata-sections -ffunction-sections -u _printf_float")
    
posted @ 2025-12-01 19:42  电猫echo  阅读(2)  评论(0)    收藏  举报