求一个STM32F103 USBHID 收发64字节数据的例程! 更加原厂提供的例程来修改发现一直没有成功, 发送64字节数据时出错。 |
stm32 USB的CDC类传输掉数据
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
是用Cube生成的吗?
需要改一下底层的函数...
正好发送64字节或者64字节的整数倍时,需要再发送一个“空包”以通知PC数据传输结束
static uint8_t USBD_CDC_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum)
{
USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
//一下代码是为了支持64字节整数倍发送
PCD_HandleTypeDef *hpcd = pdev->pData;
PCD_EPTypeDef *ep;
ep = &hpcd->IN_ep[epnum];
if((ep->xfer_len > 0) && (ep->xfer_len % ep->maxpacket == 0))
{
USBD_LL_Transmit(pdev,epnum,NULL,0);
return USBD_OK;
}
else
{
//结束
if(pdev->pClassData != NULL)
{
hcdc->TxState = 0;
return USBD_OK;
}
else
{
return USBD_FAIL;
}
}
}
修改下面2个宏定义
#define CUSTOM_HID_EPIN_SIZE 0x40 //64
#define CUSTOM_HID_EPOUT_SIZE 0x40
然后用
USBD_CUSTOM_HID_SendReport(hUsbDevice_0,USB_TX_Buffer,64);
发送就可以。。。。
我这个是L496zg测试了。。。。