这里注意一点,Cube软件初始化的USB结构体是hUsbDeviceFS,这里操作的结构体是hUsbDevice_0。故这个函数不能直接调用,必须先CDC_Init_FS()函数初始化才能用这个函数,初始化中包含有这个语句hUsbDevice_0 = &hUsbDeviceFS。 1uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) 2{ 3uint8_t result =...
CDC_Control_FS()来自主机请求的回调函数 CDC_Receive_FS()接收数据回调函数; CDC_Transmit_FS()用来发送数据; CDC_TransmitCplt_FS()发送完成回调函数; 回环测试 在官方生成的代码中只要添加一行代码就可以进行通讯回环测试了: 上面中在 CDC_Receive_FS 中添加了一行 CDC_Transmit_FS(Buf, *Len); 代码,可以...
USBD_CDC_ItfTypeDefUSBD_Interface_fops_FS={CDC_Init_FS,CDC_DeInit_FS,CDC_Control_FS,CDC_Receive_FS}; 注册到USBD_CDC类:使用USBD_CDC_RegisterInterface()函数将此操作接口注册到USBD_CDC类中 其中hUsbDeviceFS是_USBD_HandleTypeDef即USBD_CDC类对象 USBD_CDC_RegisterInterface(&hUsbDeviceFS,&USBD...
点击其中的Init 这里是关键,主要的功能是把CDC类的功能和我们用户要调用的_fops_FS函数都注册到USB的设备类里,这样在USB内核运行的时候就会调动我们注册进去的函数,点击USBD_Interface_fops_FS进去,这里面的函数指针 指向的函数就是我们需要使用和修改的了 函数在如下文件中: 2)我们修改这个文件: 首先在里面定义个...
CDC_Itf_Control(void)是CDC类的控制处理,保留原状。CDC_Itf_Receive()是接收数据的回调函数,一定要...
USB复合设备MSC+CDC,CDC_Transmit_FS函数发送不正常是怎么回事? 接收不到数据。(多次尝试打开、关闭串口,打开起始会收到一些数据) 2、在接收中断中,调用CDC_Transmit_FS将收到的数据,发回给上位机正常3、在接收中断中,设置接收数据标志,主循环中发送也正常总结:CDC先收到数据,再发送可以;如果只是CDC_Transmit_FS...
这一步很简单的,就是修改usbd_desc.c中的设备描述符数组USBD_FS_DeviceDesc,将设备类型改为组合...
这一步很简单的,就是修改usbd_desc.c中的设备描述符数组USBD_FS_DeviceDesc,将设备类型改为组合设备类型: 第三步:修改PMA端点分布 然后进入usbd_conf.c文件中,找到USBD_LL_Init函数,修改PMA端点初始化: ...
1)首先在drv_usbd.c中实现了USB的中断处理函数USBD_IRQ_HANDLER(OTG_FS_IRQHandler的重定义),里面调用了ST的HAL_PCD_IRQHandler 2)PCD_IRQHandler处理的类型的中断然后调用不同的针对性的函数源。这些函数部分在32f4xxhal_d.中定义线程均__WEAK协议,具体为接口实现内容,需要具体实现。这部分也闯了drv_usbd.c...
首先说一下STM32的USB库的初始化操作,MX_USB_DEVICE_Init函数中使用USBD_RegisterClass函数注册绑定了...