STM32 USB 实验提示:无法识别的USB设备

[复制链接]
 楼主| CreatAll 发表于 2011-7-13 10:42 | 显示全部楼层 |阅读模式
用的 JoyStickMouse 程序
STM32 USB 实验提示:无法识别的USB设备

usb上拉电阻接在D+上通过三极管接3.3V电压,一IO口控制。程序中我一开始初始化的时候就让D+上的电阻接通了3.3V。后来才USB初始化

请教,谢谢!!
香水城 发表于 2011-7-13 11:30 | 显示全部楼层
请具体描述你的操作过程。
 楼主| CreatAll 发表于 2011-7-13 12:14 | 显示全部楼层
用的是STM32提供的JoyStickMouse 程序
唯一不同的是USB设计的时候加了个三极管控制端口(PC13),我初始化PC13的时候设置好了初始化后就输出0,让三极管导通,也就是PC13初始化后则D+上的上拉电阻就OK了(这些都测试OK了,上拉也电阻OK了)

PC13初始化后,我就初始化USB,下载后,重新上电电脑就提示:无法识别的USB设备
香水城 发表于 2011-7-13 12:23 | 显示全部楼层
很可能你的程序没有运行或被你暂停了,比如单步或断点操作。
 楼主| CreatAll 发表于 2011-7-13 13:18 | 显示全部楼层
实在不明白

难道说是提供的库函数,期间我哪里设置了使其暂停?
 楼主| CreatAll 发表于 2011-7-13 14:32 | 显示全部楼层
  1. int main(void)
  2. {                          
  3.         Stm32_Clock_Init;                //系统时钟设置
  4.         delay_init();                     //延时初始化
  5.         LED_Init();                      //初始化与LED连接的硬件接口
  6.         KEY_Init();                      //初始化与按键连接的硬件接口
  7.         EXTIX_Init();                  //外部中断初始化
  8.         USB_EN_Init();              //USB控制脚初始化
  9.         delay_ms(1000);
  10.   
  11.         //USB配置
  12.         USB_Interrupts_Config();   
  13.         Set_USBClock();   
  14.         USB_Init();        

  15.         while(1)
  16.         {
  17.                 ;               
  18.         }         
  19. }
香水城 发表于 2011-7-13 14:47 | 显示全部楼层
实在不明白

难道说是提供的库函数,期间我哪里设置了使其暂停?
CreatAll 发表于 2011-7-13 13:18


我是问你的实验步骤,而不是你在程序中做了什么。
 楼主| CreatAll 发表于 2011-7-13 14:59 | 显示全部楼层
我没有调试,而是直接编译下载,重新上电的
vigia 发表于 2011-7-13 17:06 | 显示全部楼层
程序中我一开始初始化的时候就让D+上的电阻接通了3.3V。后来才USB初始化

反了,必须先初始化USB,再使能上拉电阻。或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

D+一上拉,主机就开始枚举设备了,你的USB又没有初始化,当然不会响应主机的枚举,主机不能枚举设备,当然就是一个无法识别的USB设备了。
 楼主| CreatAll 发表于 2011-7-13 17:22 | 显示全部楼层
//USB配置

     USB_Interrupts_Config();   
        Set_USBClock();   
        USB_Init();

       USB_ON;    //使能usb控制端IO

我先USB设置后在让D+接3.3V后还是提示:无法识别的USB设备
 楼主| CreatAll 发表于 2011-7-13 17:23 | 显示全部楼层
程序中我一开始初始化的时候就让D+上的电阻接通了3.3V。后来才USB初始化

反了,必须先初始化USB,再使能上拉电阻。或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

D+一上拉,主机就开始枚举设备了,你的U ...
vigia 发表于 2011-7-13 17:06

===============================

或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

这个不明白中……
香水城 发表于 2011-7-13 17:37 | 显示全部楼层
===============================

或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

这个不明白中……
CreatAll 发表于 2011-7-13 17:23


在项目文件中,找到platform_config.h这个头文件,在这个头文件中找到有关USB_USE_EXTERNAL_PULLUP的说明,按照说明定义。
 楼主| CreatAll 发表于 2011-7-13 21:00 | 显示全部楼层
程序中我一开始初始化的时候就让D+上的电阻接通了3.3V。后来才USB初始化

反了,必须先初始化USB,再使能上拉电阻。或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

D+一上拉,主机就开始枚举设备了,你的U ...
vigia 发表于 2011-7-13 17:06


1:我看大部分的USB的D+上拉电阻是没有额外用开关控制,也就是一上电D+上拉电阻就接通。有人提到过遇到“无法识别的USB设备”,在下载后,拔下USB从新插上就解决了这个问题。我看这个刚好是切合vigia提出的D+一上电就枚举这个原因造成.
2:我现在遇到的问题可能还有其它问题……:L ,迷惑中……
  我想问问是不是用JoyStickMouse这个程序是不是下载后,电脑会自动加载驱动??也就是下载后正常是电脑会自动识别这个USB设备,而不要自己在PC机上做什么工作?
qin123g 发表于 2011-10-13 16:52 | 显示全部楼层
这两天正在做,没有结果,买的开发板示例程序都跑不通!
nicholasldf 发表于 2011-12-1 16:13 | 显示全部楼层
我的也是遇到这个问题,我的是USB虚拟串口,就改了上拉引脚由原来的改到PA8,提示无法识别的USB设备。
nicholasldf 发表于 2011-12-14 22:25 | 显示全部楼层
我的找到原因了,晶振不是8M的,焊成了13M的,官方例程只要根据实际情况改引脚就好了,还要注意USB_Cable_Config函数要根据实际情况修改,我的使能USB逻辑跟官方是相反的。
void USB_Cable_Config (FunctionalState NewState)
{
     if (NewState == DISABLE)//原来的if (NewState != DISABLE)
          GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);
     else
          GPIO_SetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);
}
菜鸟宅男 发表于 2013-8-8 19:58 | 显示全部楼层
学习一下!
hawksabre 发表于 2013-8-8 21:05 | 显示全部楼层
可能是晶振输出频率不匹配  有可能是这个因素
hugo0chen 发表于 2014-2-19 16:51 | 显示全部楼层
我也遇到这个问题了,在线仿真调试时,程序死在startup_stm32f10x_cl.s中的“xxxx  OTG_FS_IRQHandler
     B                       ---停在这了
     ENDP
hugo0chen 发表于 2015-6-11 16:55 | 显示全部楼层
hugo0chen 发表于 2014-2-19 16:51
我也遇到这个问题了,在线仿真调试时,程序死在startup_stm32f10x_cl.s中的“xxxx  OTG_FS_IRQHandler
    ...

去年我自己发的贴子,一年过去了,我又来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

117

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

117

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部