USB协议学习笔记 - 虚拟串口Virtual Port Com用于LOG打印
2022/2/8 23:20:33
本文主要是介绍USB协议学习笔记 - 虚拟串口Virtual Port Com用于LOG打印,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
- 上一篇讲了STM32 USB 虚拟串口的功能实现,可以通过STM32输出信息到PC端
- 这篇简单的做个应用:打印LOG(日志)信息到虚拟串口
操作方法
- 基于上篇的STM32 USB Virtual Port Com 例程,把USB的发送,改为字符串输出
- 这里使用标准C库的:
vsnprintf
函数,目的是格式化打印字符串到指定的数组
#include "main.h" #include "usb_device.h" #include "usbd_cdc_if.h" #include <stdio.h> #include <stdarg.h> void SystemClock_Config(void); static void MX_GPIO_Init(void); #define DBG_BUFF_MAX_LEN 256 void usb_vcom_puts(uint8_t *buf) { CDC_Transmit_FS(buf, strlen((const char *)buf)); } /* debug print : support float double */ int printk(const char *fmt, ...) { va_list args; static char log_buf[DBG_BUFF_MAX_LEN] = { 0 }; va_start(args, fmt); int length = vsnprintf(log_buf, sizeof(log_buf) - 1, fmt, args); usb_vcom_puts((uint8_t *)log_buf); return length; } void vcp_send_test(uint8_t ch) { uint8_t temp_buf[DBG_BUFF_MAX_LEN]; for (uint16_t i = 0; i < DBG_BUFF_MAX_LEN; i++) { temp_buf[i] = 0x41; } temp_buf[0] = ch; CDC_Transmit_FS(temp_buf, sizeof(temp_buf)); } int main(void) { uint32_t cnt = 0x00; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USB_DEVICE_Init(); HAL_Delay(2000); printk("%s : STM32 USB Virtual Port Com Test!\r\n", __func__, cnt); while (1) { HAL_Delay(3000); printk("%s: hell, usb virtual com,cnt = %d\r\n", __func__, cnt); cnt++; } }
调试效果
- 编译下载
- PC端串口助手,打开STM32 USB虚拟的串口,波特率随意(不要太高就好)
- 发现跟打印到实际的串口,并没有什么区别
小结
- USB功能很强大,多多去了解,会发现更多
- 先熟悉基本的USB应用,再返回去细化或消化每个USB协议的细节
这篇关于USB协议学习笔记 - 虚拟串口Virtual Port Com用于LOG打印的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在使用平台私钥进行解密时提示 "私钥解密失败" 错误信息是什么原因?-icode9专业技术文章分享
- 2024-11-15Layui框架有哪些方式引入?-icode9专业技术文章分享
- 2024-11-15Layui框架中有哪些减少对全局环境的污染方法?-icode9专业技术文章分享
- 2024-11-15laydate怎么关闭自动的日期格式校验功能?-icode9专业技术文章分享
- 2024-11-15laydate怎么取消初始日期校验?-icode9专业技术文章分享
- 2024-11-15SendGrid 的邮件发送时,怎么设置回复邮箱?-icode9专业技术文章分享
- 2024-11-15使用 SendGrid API 发送邮件后获取到唯一的请求 ID?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 tags标签最多有多少个?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 怎么批量发送给多个人?-icode9专业技术文章分享
- 2024-11-15如何搭建web开发环境并实现 web项目在浏览器中访问?-icode9专业技术文章分享