使用stm32的 USB功能做串口直接打印到电脑端这样可以省去一个usb转TTL的转换器。而且USB的硬件接口还具有供电功能
之前介绍了如何使用USB的CDC功能
STM32 USB-CDC实现虚拟串口
然后只需要再usbd_cdc_if.h中添加以下代码
#include <stdarg.h>
void usb_printf(const char *format, ...)
{
va_list args;
uint32_t length;
va_start(args, format);
length = vsnprintf((char *)UserTxBufferHS, APP_TX_DATA_SIZE, (char *)format, args);
va_end(args);
CDC_Transmit_HS(UserTxBufferHS, length);
}
注意添加到 /* USER CODE BEGIN*/
到 /* USER CODE END */ 之间cubemx生成代码覆盖
实验结果
void sprintf_test(void)
{
for (;;)
{
usb_printf("Hello world!\r\n");
osDelay(1000); /*延时一秒*/
}
}