
USB_CDC_HOST 标准库里边USBH_DeAllocate_AllChannel()函数的疑问?
CUBEMX界面汉化有吗?
STM32部署机器学习算法硬件至少要使用哪个系列的芯片?
stm32cubeide官网账号登录一直显示登录失败,且不能找回密码。
重新配置SCB->VTOR = 0x08010000后,再次复位,程序异常,发现不进tick中断,IIC读数卡死在准备查询循环中。
STM32407 使用串口闲时中断+DMA方式接收最大接收字节是多少
uboot初始化IIC1,跳转到应用程序中后,先读一字节AT24C04的数据,然后初始化IIC1(未复位),再读一字节AT24C04时,有概率一直检测到IIC处于busy状态。
STM32F407的flash读写问题
keil调试阶段无法进行仿真,能进到仿真界面,但是无法执行程序,这个怎么解决?
STM32F4的IO口5V容忍问题
谢谢
我也试过主动发起接收,但是不知道应该在哪里加这个机制好点
还有一个问题,主机并不提前知道设备端发过来的字节数,主动请求多少数据呢?
是否cdc 的vcp类已经有相关的机制,求指导
你要看看相应协议。
HOST找device要数据,device有就给,没有就先拒绝。HOST会不停找你要的,至于你给多少数据过去,它会数据包的情况来判断,比方收到一包不满的数据或零数据包它就视为此次传输结束。
static uint16_t VCP_DataRx (uint8_t epnum,uint8_t* Buf, uint32_t Len)
{
switch(epnum+0x80)
{
case CDC_IN_EP1:
USART_rx(Buf, Len);
break;
default:
break;
}
return USBD_OK;
}
我们在sof中每1ms向从机请求一次从机数据,
但主机并不会提前知道从机每一个包会发多少数据过来,
我这个USBH_CDC_Receive函数应该指定多少的长度?
USBH_StatusTypeDef USBH_CDC_Receive(USBH_HandleTypeDef *phost,
uint8_t *pbuff,
uint32_t length);
还有另外一个问题,为什么PC端的vcp主机(窗口调试助手)没有定时轮询从机(用Bus Hound抓数据观察),但也能像串口中断那样收到从机的数据??请指导
这个要先主动轮询从机,从机回复数据之后才会进callback,
主机不轮询从机的话,尽管从机不断往上发数据,主机也不会进这个callback
不知道有没有相关的host vcp例程参考
现在在这里每1ms,向从设备请求一次数据
/**
* @brief SOF callback.
* @param hhcd: HCD handle
* @retval None
*/
void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd)
{
USBH_LL_IncTimer(hhcd->pData);
USBH_CDC_Receive(&hUsbHostFS, USBHTxBuf, 64);
}
但是请求数据的长度改如何合适?主机提前不会知道从机会发多少数据
USBH_StatusTypeDef USBH_CDC_Receive(USBH_HandleTypeDef *phost,
uint8_t *pbuff,
uint32_t length);
另外,pc端的host 窗口调试助手好像没有主动轮询设备也能及时收到从机主动发的数据(用Bus Hound抓取没看到轮询的包),为什么呢?是不是CDC vcp类有什么机制可以做到这样?
请问您这个代码在哪添加?系统如何通知调用到这里的?
我这个是标准库下的操作。我这个操作和中断差不多,是自己调用的,不需要我进行操作。