你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
无力回天 发表于 2015-6-4 16:05 还是要潜心研究
creep 发表于 2015-6-4 16:57 HAL的结构的使用和Linux的做法很相似,将硬件层和应用层分离出来,这样的做法是很好的,但是适应的确需要 ...
watershade 发表于 2015-6-8 08:54 问题终于在上周五解决了,先说怎么解决的。 在usbd_conf.h中有两个宏:USBD_MAX_NUM_INTERFACES和USBD_MAX_ ...
必须,只是有时候专注应用的时候,被驱动伤的无限专注应用就悲惨了。还是沉淀的不够呀,学习学习...
从ST下的标准库是没有USB的,如果是F2/F4你还需要下载stm32_f105-07_f2_f4_usb-host-device_lib这个库,如果是F103就要下另一个USB库。但是这只是刚开始的时候配置费点劲,以后也就好了。
在usbd_conf.h中有两个宏:USBD_MAX_NUM_INTERFACES和USBD_MAX_NUM_CONFIGURATION。我将其值设置为2,问题顺利解决了。
这两个宏对应于CubeMX软件USB_DEVICE Configuration 配置卡里面Basic Parameters的头两项。
再说一下为什么要改这两项。在我用USB VIEW观察的时候我看到了两个接口。所以USBD_MAX_NUM_INTERFACES改为2是合理的。CDC类的确有两个Interface:第一个包含通讯端点,第二个包含两个数据端点。
但是为什么要将USBD_MAX_NUM_CONFIGURATION设置为2,我就不清楚,我只清楚的是:在usbd_ctlreq.c的函数USBD_SetConfig内部有if (cfgidx > USBD_MAX_NUM_CONFIGURATION ) 这句话。而cfgidx的含义是什么呐?我在追踪了一会发现这个值,可能是由setup阶段有关。
那么有谁能告诉我USBD_MAX_NUM_CONFIGURATION是什么意思。
上面的解决方案有问题,稍后我会在随后的帖子中详细说明中间的过程。
上面有点误导的意思。