苏柚 发表于 2015-8-12 11:07:56

【FAQ求助】STM32F429 U盘+FreeRTOS 问题

问题1: FreeRTOS为操作系统,STM32F429为主机,对U盘进行读写。有时候会出现:U盘插入时,会出现系统停止运行,把U盘拔出来,系统又可以正常运行。
此现象出现之后,只有系统复位之后才会消失,不如现象一直存在。(此现象出现的概率也较小),U盘中断级别为5,改U盘中断级别为8或者9之后,现象依旧会出现。我用的USB库是3.1.0的版本




问题2:因为之前不支持U盘热插拔,所以我有改USB中断里面的底层:
static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd)
{
... ....
    if( hprt0 & USB_OTG_HPRT_PCDET==USB_OTG_HPRT_PCDET)
       { //USB_MASK_INTERRUPT(hhcd->Instance,USB_OTG_GINTSTS_DISCINT);
            HAL_HCD_Connect_Callbcak(hhcd);
      }
   ....
}
屏蔽掉了USB_MASK_INTERRUPT(hhcd->Instance,USB_OTG_GINTSTS_DISCINT)就支持热插拔了。。。


FAQ:https://www.stmcu.org.cn/faq/index/detail/id-70593




creep 发表于 2015-8-12 11:21:47

问题1有可能是U盘枚举失败后触发了suspended中断导致系统休眠了,找下USB库中有没有suspended方面的中断函数以及进入sleep休眠的代码。

苏柚 发表于 2015-8-12 11:24:49

creep 发表于 2015-8-12 11:21
问题1有可能是U盘枚举失败后触发了suspended中断导致系统休眠了,找下USB库中有没有suspended方面的中断函 ...
:lol大神就是牛

creep 发表于 2015-8-12 11:58:47

苏柚 发表于 2015-8-12 11:24
大神就是牛

小哥,别打击我,我是随便猜的啊,我啥也不懂!

yanhaijian 发表于 2015-8-12 14:39:01

你要仿真看看U盘插入时程序究竟停在哪里出不去。

拥挤的寒冷 发表于 2015-8-12 16:50:51

creep 发表于 2015-8-12 11:21
问题1有可能是U盘枚举失败后触发了suspended中断导致系统休眠了,找下USB库中有没有suspended方面的中断函 ...

貌似可能有这种情况。。。我现在U盘的VBUS引脚是直接5V供电的,如果5V有干扰的话,是否就会引起这种情况?

拥挤的寒冷 发表于 2015-8-12 16:51:29

yanhaijian 发表于 2015-8-12 14:39
你要仿真看看U盘插入时程序究竟停在哪里出不去。

哎呀。。。遇到这种问题最纠结了。。。偶尔出现。。。
页: [1]
查看完整版本: 【FAQ求助】STM32F429 U盘+FreeRTOS 问题