本帖最后由 50031185 于 2019-3-27 19:31 编辑 最近在使用STM32 F2 系列 读取U盘, 可是发现使用CubeMx生成文件后 在调试时 发现 循环中的 MX_USB_HOST_Process();后 USB 状态量 Appli_state 一直处于 APPLICATION_START状态 该状态下 无法加载U盘,打开文件, 该如何操作呢? while(1) { MX_USB_HOST_Process(); switch(Appli_state) { case APPLICATION_READY: MSC_Application(); HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_SET); Appli_state = APPLICATION_START; break; case APPLICATION_START: break; case APPLICATION_DISCONNECT: HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_RESET); Appli_state = APPLICATION_IDLE; default: break; } } 经过 几天排查,最后发现是 软复位的电路有问题,去掉了软复位电路 ,直接用2线 就好了, |
请问一下,stm32WB有可以驱动声卡的驱动程序吗(声卡是PCM2704)?
STM32F407 USB怎么测试接口的极限速度
求技术解答,STM32H723的USB模拟U盘应用过程遇到了问题。
我的电脑识别不到STM32的ST-LINK驱动(特指针对芯片stm32wle5ccu6)
请问各位大佬,STM32F4怎么利用Typec口OTG,硬件电路怎么实现
stm32 usb复合设备支持键盘鼠标和hid串口通信可以实现吗
请问一下,我的nucleo板子连接usb线,找不到target,一直无法下载程序怎么回事呢?
stm32f407 开启两路(FS和HS) Custom HID,与上位机通信偶尔中断
stm32f746g-disco开发板的串口通讯连接方式
STM32F746g-disco开发板串口配置串口助手无法接收到数据
switch(Appli_state)
{
case APPLICATION_READY:
MSC_Application();
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_SET);
Appli_state = APPLICATION_START;
break;
case APPLICATION_START:
break;
case APPLICATION_DISCONNECT:
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_RESET);
Appli_state = APPLICATION_IDLE;
default:
break;
}
}
这段话在很多例子里有,但是 实际不对,
我用 U盘方式,调试跟踪 ,根本没有途径能让Appli_state 达到APPLICATION_READY
观察到 如果用 Host 符合设备模式 就有可能达到APPLICATION_READY状态
U 盘 加载目的达成,没有继续细究
不知道 APPLICATION_READY状态是不是需要 结合上电控制电路才能激活?我是直接供电的
else
{
MSC_Handle->current_lun = 0U;
MSC_Handle->state = MSC_IDLE;
#if (USBH_USE_OS == 1U)
phost->os_msg = (uint32_t)USBH_CLASS_EVENT;
#if (osCMSIS < 0x20000U)
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
#else
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
#endif
#endif
phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
}
在USBH_UserProcess函数中会设置Appli_state状态到APPLICATION_READY状态:
static void USBH_UserProcess(USBH_HandleTypeDef *phost, uint8_t id)
{
switch(id)
{
case HOST_USER_SELECT_CONFIGURATION:
break;
case HOST_USER_DISCONNECTION:
Appli_state = APPLICATION_DISCONNECT;
if (FATFS_UnLinkDriver(USBDISKPath) == 0)
{
if(f_mount(NULL, "", 0) != FR_OK)
{
LCD_ErrLog("ERROR : Cannot DeInitialize FatFs! \n");
}
}
break;
case HOST_USER_CLASS_ACTIVE:
Appli_state = APPLICATION_READY;
break;
case HOST_USER_CONNECTION:
if (FATFS_LinkDriver(&USBH_Driver, USBDISKPath) == 0)
{
if (f_mount(&USBH_fatfs, "", 0) != FR_OK)
{
LCD_ErrLog("ERROR : Cannot Initialize FatFs! \n");
}
}
break;
default:
break;
}
}
所以看起来像是U盘要顺利通过枚举才行
你好,请问“如果用 Host 符合设备模式”这个是哪个模式啊?在cubemx里面配置吗