STM32CubeMX生成的CDC收发接口分析
研究hal库生成的CDC接收接口uint8_tUserRxBufferFS[APP_RX_DATA_SIZE];//自动生成的接收buffuint8_tUserTxBufferFS[APP_TX_DATA_SIZE];//初始化VCP收发缓冲区staticint8_tCDC_Init_FS(void){/* USER CODE BEGIN 3 *//* Set Application Buffers */USBD_CDC_SetTxBuffer(hUsbDeviceFS,UserTxBufferFS,0);//该缓冲区可以在发送的时候自定义在此可以注释USBD_CDC_SetRxBuffer(hUsbDeviceFS,UserRxBufferFS);//该缓冲区不能注释虽然在接收回调函数里可以重新指定接收缓冲区但在枚举阶段收发之前需要用到但可以修改该缓冲区的大小return(USBD_OK);/* USER CODE END 3 */}uint32_tCDC_Rx_Buff_Addr;uint8_tCDC_Test_Rx_Buff[100];//自定义接收缓冲区/* CDC_Receive_FS()该函数被USB设备回调用于USB外设数据接收 在这个回调函数中通过Len获取数据长度通过Buf指针获取数据 通过USBD_CDC_SetRxBuffer(hUsbDeviceFS, Buf[0]);重新设置接收缓冲区地址 通过USBD_CDC_ReceivePacket(hUsbDeviceFS);启动设备继续接收。 */staticint8_tCDC_Receive_FS(uint8_t*Buf,uint32_t*Len){/* USER CODE BEGIN 6 *///CDC_Rx_Buff_Addr Buf[0]; //地址验证USBD_CDC_SetRxBuffer(hUsbDeviceFS,Buf[0]);// Buf[0]地址就是UserRxBufferFS[]的地址//USBD_CDC_SetRxBuffer(hUsbDeviceFS, CDC_Test_Rx_Buff); //接收缓冲区修改USBD_CDC_ReceivePacket(hUsbDeviceFS);return(USBD_OK);/* USER CODE END 6 *//* CDC接收缓冲区疑问 USBD_CDC_SetRxBuffer()是重置CDC接收缓冲区 1.在CDC_Receive_FS()中调用USBD_CDC_SetRxBuffer(hUsbDeviceFS, Buf[0])Buf[0]地址就是UserRxBufferFS[]的地址 2.在CDC_Receive_FS()中不调用USBD_CDC_SetRxBuffer()使用默认缓冲UserRxBufferFS[] 3.在CDC_Receive_FS()中调用USBD_CDC_SetRxBuffer()自定义缓冲 */}uint8_tCDC_Transmit_FS(uint8_t*Buf,uint16_tLen){uint8_tresultUSBD_OK;/* USER CODE BEGIN 7 */USBD_CDC_HandleTypeDef*hcdc(USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData;if(hcdc-TxState!0){returnUSBD_BUSY;}USBD_CDC_SetTxBuffer(hUsbDeviceFS,Buf,Len);resultUSBD_CDC_TransmitPacket(hUsbDeviceFS);/* USER CODE END 7 */returnresult;}CDC接收缓冲区疑问USBD_CDC_SetRxBuffer()是重置CDC接收缓冲区1.在CDC_Receive_FS()中调用USBD_CDC_SetRxBuffer(hUsbDeviceFS, Buf[0])Buf[0]地址就是UserRxBufferFS[]的地址2.在CDC_Receive_FS()中不调用USBD_CDC_SetRxBuffer()使用默认缓冲UserRxBufferFS[]3.在CDC_Receive_FS()中调用USBD_CDC_SetRxBuffer()自定义缓冲

相关新闻

钉钉悟空平台:AI低代码开发实战与X.COM克隆

钉钉悟空平台:AI低代码开发实战与X.COM克隆

1. 钉钉"悟空"平台初探:AI驱动的低代码开发新范式 最近在测试钉钉最新推出的"悟空"平台时,意外发现这个被官方定位为"AI低代码开发工具"的产品,竟然能通过自然语言直接生成完整可用的网站系统。我尝试输入&quo…

2026/8/16 18:25:46 阅读更多 →
用 iPhone 远程控制 Android 手机:Scrcpy-iOS 是什么、怎么用、以及它的终极玩法

用 iPhone 远程控制 Android 手机:Scrcpy-iOS 是什么、怎么用、以及它的终极玩法

用 iPhone 远程控制 Android 手机:Scrcpy-iOS 是什么、怎么用、以及它的终极玩法 【免费下载链接】scrcpy-ios Scrcpy-iOS.app is a remote control tool for Android Phones based on [https://github.com/Genymobile/scrcpy]. 项目地址: https://gitcode.com/gh…

2026/8/16 18:25:46 阅读更多 →
无监督学习数据集特征与构建实践指南

无监督学习数据集特征与构建实践指南

1. 无监督学习数据集的核心特征解析 无监督学习作为机器学习三大范式之一,与监督学习的最大区别在于数据标注的缺失。这种特性决定了其数据集结构的独特性——没有人工标注的标签信息,数据对象之间不存在显式的对应关系。典型的无监督学习数据集通常呈现…

2026/8/16 18:25:46 阅读更多 →

最新新闻

iPXE+WDS混合部署:构建高效统一的网络启动与操作系统自动化安装平台

iPXE+WDS混合部署:构建高效统一的网络启动与操作系统自动化安装平台

1. 从“PXE启动”到“iPXEWDS”:一次网络启动方案的深度演进 如果你负责过企业或机房的大规模操作系统部署,一定对PXE(Preboot Execution Environment)不陌生。它让一台裸机通过网络就能启动并加载操作系统镜像,是自动…

2026/8/16 19:03:54 阅读更多 →
kube-rbac-proxy 源码解析:一次 RBAC 授权请求背后的设计哲学

kube-rbac-proxy 源码解析:一次 RBAC 授权请求背后的设计哲学

kube-rbac-proxy 源码解析:一次 RBAC 授权请求背后的设计哲学 【免费下载链接】kube-rbac-proxy Kubernetes RBAC authorizing HTTP proxy for a single upstream. 项目地址: https://gitcode.com/gh_mirrors/ku/kube-rbac-proxy kube-rbac-proxy 源码解析是…

2026/8/16 19:03:54 阅读更多 →
数学建模入门:从核心模型到论文写作的实战指南

数学建模入门:从核心模型到论文写作的实战指南

1. 项目概述:一场面向未来的数学建模启蒙课今晚七点,一场名为“APMCM公开课”的线上活动即将拉开帷幕。对于很多初次接触这个领域的朋友来说,APMCM可能是个陌生的缩写,它指的是“亚太地区大学生数学建模竞赛”。但这场公开课的核心…

2026/8/16 19:03:54 阅读更多 →
数学建模竞赛全流程解析:从备赛到获奖的系统性工程实践

数学建模竞赛全流程解析:从备赛到获奖的系统性工程实践

1. 项目概述:一次竞赛背后的系统性工程最近,我们学校在亚太地区大学生数学建模竞赛(APMCM)中取得了不错的成绩,拿下了1项二等奖和8项三等奖。可能很多人看到这个标题,第一反应是“恭喜”或者“学校又添荣誉…

2026/8/16 19:03:54 阅读更多 →
PCB低阻测试怎么做?四线法全解析

PCB低阻测试怎么做?四线法全解析

我身为猎板那儿的一名工艺工程师, 每日与之打交道最多的便是PCB阻抗测试,今日呢想要跟大伙聊一聊四线低阻测试这个话题。 讲真, 不少同行对于四线测试的领会还停留在“只要能使用就可以”这样一个水平上。然而在我所经手处理的几十个高端的项目之内, 发觉超过90%的阻…

2026/8/16 19:03:54 阅读更多 →
Linux ZRAM内存压缩交换技术:原理、配置与性能调优实战

Linux ZRAM内存压缩交换技术:原理、配置与性能调优实战

1. 项目概述:为什么我们需要ZRAM? 如果你在Linux服务器或者资源紧张的嵌入式设备、老旧笔记本上工作过,大概率遇到过内存不足(OOM)的窘境。系统开始疯狂地使用交换分区(Swap),硬盘灯…

2026/8/16 19:02:54 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →