硬汉,我这几天学习 USB host 的例子,我在用F107的host时,是用的裸机跑 的 main 中就调用
USBH_Init初始化,然后 一直间隔循环调用 USBH_Process 就可以了,然后自己的文件下系统读写都在 USBH_USR_MSC_Application这个状态机中实现,因为 Process 在被循环的调用过程中也会被循环调用,我看官方的驱动说明文档是这样说明的,
但是我看你的F407的综合DEMO中 开了一个线程 循环调用
while(1)
{
if(g_ucState == USB_HOST)
{
if(HCD_IsDeviceConnected(&USB_OTG_Core))
{
USBH_Process(&USB_OTG_Core, &USB_Host);
}
}
BSP_OS_TimeDlyMs(10);
}
然后 USBH_USR_MSC_Application 直接返回0 即可,之后的使用 就是和 操作 SD卡 一样调用FATFS的文件系统就可以了,但是 最后都执行到了disk_write中的status = USBH_MSC_Write10(&USB_OTG_Core,(BYTE*)buff,sector, 512 * count);
USBH_MSC_HandleBOTXfer(&USB_OTG_Core, &USB_Host);
这里执行就和 USB内核关联起来了吗? |