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")

浙公网安备 33010602011771号