各位,我最近用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()函数,我想大家都懂的,我就不重复在这里写保姆教程了。
大功告成,亲个嘴儿。
标签:STM32,USB,串口,浮点数,打印,VCP,printf,usb From: https://blog.csdn.net/dqsh06/article/details/141917657