STM32 VCP串口通信 浮点数printf打印的问题 保姆级教程

各位,我最近用STM32G474,设计一个电机驱动的电路。其中ADC采样供电电压,结果是个浮点数,想用printf打印出来看看。然而,电脑上都是USB的接口,没有串口,不想接USB转串口的芯片的话,就将STM32的USB直接配置成VCP(virtual Communication Port), 那么,电脑就直接将USB识别为串口,直接用printf打印,用串口调试器,就可以看到输出的结果了。

道理是这么个道理,我要说的,其实不是这个,而是,我都弄好了之后,用printf函数打印,如下

usb_printf("val =%-7d    V = %5.2f\r\n", vbus_volt, vbus_volt1);

结果却是,整数的能打印,浮点的不能打印,程序运行的结果如下

%5.2f的打印结果是 \0\0\0\0\0\0\0

我以为是我的usb_printf()函数写错了,百思不得其解。

昨天晚上茶叶喝多了,很晚都睡不着,就在知乎上搜搜看这个问题,结果还真给我搜到了。该文说是STM32CubeIDE的有个设置没有设置对。我早上来办公室试了一下,还真的是这么一回事。就是这个设置。

 

这两个库得勾选上。

看一下,我勾选上之后的运行的结果。

 看到没有,浮点的打印输出,从 \0\0\0\0\0\0\0,变成了正常的 v = 19.23的输出了。

我把这个问题写出来,就是因为如果你不知道,你就真的百思不得其解,还以为是printf函数写错了。你怎么查也查不出来,其实这个设置的问题。为了给自己留一份笔记,也为了给大家以帮助,所以,我就把这个写出来,记录下来。

关于怎么用STM32配置VCP串口通信,怎么写usb_printf()函数,我想大家都懂的,我就不重复在这里写保姆教程了。

大功告成,亲个嘴儿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值