和板级支持包 (BSP)并启动库,用户需调用这 三个 API ( USB 设备库初始化):USBD_Init ():...
首先,在STM32CubeMX中配置USB OTG的时钟和IO端口,并在USB_DEVICE库中启用VID/PID,然后进行USB设备代码生成。 ```c #include "usbd_cdc_if.h" // USB初始化 void USB_Init(void) { // 初始化USB设备 MX_USB_DEVICE_Init(); } // USB数据传输 void USB_TransferData(uint8_t* buf, uint32_t len...
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass) 该结构体完成usb的事件的枚举和定义,可以看出,该事件主要是对usb的文件系统做了定义,并不是所有的都做了定义的。 USBD_ClassTypeDef USBD_MSC = { USBD_MSC_Init, USBD_MSC_DeInit, USBD_MSC_Setup, NULL, /...
USB虚拟串口,简称VCP,是Virtual COM Port的简写,它是利用 USB的 CDC类来实现的一种通信接口。我们可以利用STM32自带的USB功能,来实现一个USB虚拟串口,从而通过USB,实现电脑与STM32的数据互传。 上位机无需编写专门的USB程序,只需要一个下载虚拟串口驱动程序+串口调试助手即可调试,非常实用。 (虚拟串口启动在Win7、...
首先说一下STM32的USB库的初始化操作,MX_USB_DEVICE_Init函数中使用USBD_RegisterClass函数注册绑定了实际的端口初始化控制等操作,如果是CDC那么注册的就是USBD_CDC这个结构,如果是MSC那么就是注册的USB_MSC这个结构,所以我们的组合设备思路就是用哪个的时候,就将这个结构切换成对应的操作结构。
Endpoint1:输入(IN)类型端点,用于向 Host 发送数据,在本例程我们创建了一个应用线程usbx_cutomhid_thread_entry(),以 1S 为周期向 Host 通过 Endpoint1 发送 64 字节的数据包。Endpoint2:输出(OUT)类型端点,用于当 Host 向 device 发送数据时,USBx Stack 会自动调用 USBD_Custom_HID_SetReport()的回调...
USBD_HID_SendReport(&hUsbDeviceFS, keyboardHID, 8); HAL_Delay(1000); } } void MX_USB_DEVICE_Init(void) { // 初始化USB设备 MX_USB_DEVICE_Init(); USBD_HID_Init(&hUsbDeviceFS,HID_EPIN_ADDR, &hHIDInterface); USBD_Start(&hUsbDeviceFS); ...
六、USB串口回环发送 6.1 虚拟串口发送 添加头文件#include "usbd_cdc_if.h"。 在main()的死循环中添加CDC_Transmit_FS()函数。 #include "usbd_cdc_if.h" /** * @brief The application entry point. * @retval int */ int main(void)
void MX_USB_DEVICE_Init(void){ // 初始化USB设备 USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE...
4.1.10 usbd_cdc.c 4.1.11 项目文件 4.2 stsw_stm32081.zip中STM32_USB-FS-Device_Lib_V4.0.0的USB库 4.2.1 usb_def.h 4.2.2 usb_type.h 4.2.3 usb_lib.h 4.2.4 usb_core.h/.c 4.2.5 usb_init.h/.c 4.2.6 usb_int.h/.c