板子:NUCLEO-H723ZG
被读取的U盘是一张SD卡加读卡器
这个卡死时卡死在下图中osMessageQueueGet
处,而且for循环中osMessageQueueGet
第一次运行通过,第二次卡死了。
进入函数中,逐次查找发现是卡在了这里,原因是这个uxItemSize大小是错的,值居然为 0xA5A5A5A5。
想了想可能是因为CubeMX没有给USBH_Process_OS Task分配足够用的stack_size导致,试了一下usbh_conf.h中的USBH_PROCESS_STACK_SIZE大小至少要为128 *11 bytes才能正常运行。修改为128 *3 bytes时,U盘知识的亮起,应该是板子识别到设备,对U盘供电了。建议设置为128 *16 bytes。
在CubeMX中对应于下图中框选位置。当然可以自己修改代码为无OS的,虽然CubeMX在勾选了FreeRTOS后USB_HOST就只能Enable the support of an RTOS。