1、本篇文章已经默认您已经会使用STM32CUBEMX生成CDC工程并测试通过了,如果你还不会可参考我的另一篇博客:STM32快速实现USB虚拟串口+回环测试+USB转TTL的功能 2、USB组合设备的编写需要具备一定的USB相关知识,如果你不了解,那么请先看一下我的这篇博客:STM32 USB相关知识扫盲 工程...
在中间件配置中启用USB_DEVICE库,并选择CDC类(Communication Device Class Virtual Port Com)。 3. 代码实现 3.1 包含USB接口头文件 在main.c文件中包含USB接口的头文件: #include "usbd_cdc_if.h" 3.2 模拟USB插拔 为了避免调试时频繁插拔USB线,可以通过代码模拟USB拔出动作: void HAL_PCD_MspInit(PCD_Handle...
首先说一下STM32的USB库的初始化操作,MX_USB_DEVICE_Init函数中使用USBD_RegisterClass函数注册绑定了实际的端口初始化控制等操作,如果是CDC那么注册的就是USBD_CDC这个结构,如果是MSC那么就是注册的USB_MSC这个结构,所以我们的组合设备思路就是用哪个的时候,就将这个结构切换成对应的操作结构。 第一步:基础工程生成...
修改HAL库关于CDC部分函数接口的参数,以适配多CDC设备的情况 3.2 使用STM32CubeIDE生成一个CDC程序的代码 根据下面的文件操作即可,文件会介绍USBCDC的知识,在PDF的最后会说怎么使用cubeIDE配置,很简单没什么坑(注意的是可能需要将Heap设置大一点)USB CDC类入门培训.pdf ...
首先先用STM32CUBEMX生成CDC工程,并测试通过没有问题后,就可以着手开始下一步的修改。第二步:USB...
内容:HAL库与STD库的USB CDC类实验 实验效果:设备和电脑通过USB接口通信,完美替代之前的串口 HAL库实验 建立工程 CubeMX中加入USB_OTG_FS,选择Device Only。MiddleWares中选择communications device class IP。 如图配置时钟,USB部分需要48M时钟。 在Project->Settings中把Heap Size调大,因为USB HAL固件库中使用了mall...
USB虚拟串口,简称VCP,是Virtual COM Port的简写,它是利用 USB的 CDC类来实现的一种通信接口。我们可以利用STM32自带的USB功能,来实现一个USB虚拟串口,从而通过USB,实现电脑与STM32的数据互传。 上位机无需编写专门的USB程序,只需要一个下载虚拟串口驱动程序+串口调试助手即可调试,非常实用。
但是不同USB类,对应枚举的实现其实是一样的,所以,第一步:将usbd_hid.c 移除,项目工程中加入\stm32_mw_usb_device master\Class\CDC\Src 中的 usbd_cdc.c,并修改相应头文件名称和路径,解决编译问题;另外,由于移除了usbd_hid.c文件,所以在应用层也需要并屏蔽掉HID相关的应用层操作;主要比如HAL_...
3.3.实现USB CDC的枚举 即使目前使用的是HID类,但是不同USB类,对应枚举的实现其实是一样的,所以...
使用HAL USB CDC库,调用usbd_cdc_if.c中的CDC_Receive_FS(uint8_t* Buf,uint32_t *Len)与CDC...