OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2564|回复: 2

请教,USBJoyStickMouse枚举不成功

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-3-6
在线时间
0 小时
发表于 2016-9-3 17:36:46 | 显示全部楼层 |阅读模式
1金钱
各位好,请高手帮忙看下问题出在哪里
F103ZET芯片,在官方USB固件库JoyStickMouse,在枚举过程中添加打印后就枚举不成功,设置地址后,再次获取描述符,之后USB总线就复位了,不知道问题出在哪里,请指教。去除所有打印就可以枚举成功
枚举过程打印信息:
<L70> USB Cable plugged-in!
USB_Init
usb_debug: <L100> usb interrupt: reset
Joystick_Reset..
usb_debug: <L102> ENDP0 SETUP Stoken: EP_RX_SETUP..
usb_debug: <L83> ENDP0 IN Stoken: EP_TX..
usb_debug: <L113> ENDP0 OUT Stoken: EP_RX_OUT..
usb_debug: <L100> usb interrupt: reset
Joystick_Reset..
usb_debug: <L102> ENDP0 SETUP Stoken: EP_RX_SETUP..
usb_debug: <L573> NoData_Setup0, SET_ADDRESS: 0x400
usb_debug: <L665> WAIT_STATUS_IN
usb_debug: <L83> ENDP0 IN Stoken: EP_TX..
usb_debug: <L931> SetDeviceAddress: 0x4
usb_debug: <L209> Joystick_SetDeviceAddress ok
usb_debug: <L102> ENDP0 SETUP Stoken: EP_RX_SETUP..
usb_debug: <L83> ENDP0 IN Stoken: EP_TX..
usb_debug: <L113> ENDP0 OUT Stoken: EP_RX_OUT..
usb_debug: <L100> usb interrupt: reset
Joystick_Reset..
usb_debug: <L102> ENDP0 SETUP Stoken: EP_RX_SETUP..
usb_debug: <L83> ENDP0 IN Stoken: EP_TX..
usb_debug: <L113> ENDP0 OUT Stoken: EP_RX_OUT..
usb_debug: <L100> usb interrupt: reset
Joystick_Reset..
usb_debug: <L102> ENDP0 SETUP Stoken: EP_RX_SETUP..
usb_debug: <L573> NoData_Setup0, SET_ADDRESS: 0x400
usb_debug: <L665> WAIT_STATUS_IN
usb_debug: <L83> ENDP0 IN Stoken: EP_TX..
usb_debug: <L931> SetDeviceAddress: 0x4
usb_debug: <L209> Joystick_SetDeviceAddress ok
usb_debug: <L102> ENDP0 SETUP Stoken: EP_RX_SETUP..
usb_debug: <L83> ENDP0 IN Stoken: EP_TX..
usb_debug: <L113> ENDP0 OUT Stoken: EP_RX_OUT..
usb_debug: <L100> usb interrupt: reset
Joystick_Reset..
usb_debug: <L102> ENDP0 SETUP Stoken: EP_RX_SETUP..
usb_debug: <L83> ENDP0 IN Stoken: EP_TX..
usb_debug: <L113> ENDP0 OUT Stoken: EP_RX_OUT..
usb_debug: <L100> usb interrupt: reset
Joystick_Reset..
usb_debug: <L102> ENDP0 SETUP Stoken: EP_RX_SETUP..
usb_debug: <L573> NoData_Setup0, SET_ADDRESS: 0x400
usb_debug: <L665> WAIT_STATUS_IN
usb_debug: <L83> ENDP0 IN Stoken: EP_TX..
usb_debug: <L931> SetDeviceAddress: 0x4
usb_debug: <L209> Joystick_SetDeviceAddress ok
usb_debug: <L102> ENDP0 SETUP Stoken: EP_RX_SETUP..
usb_debug: <L83> ENDP0 IN Stoken: EP_TX..
usb_debug: <L113> ENDP0 OUT Stoken: EP_RX_OUT..

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-9-3 20:22:40 | 显示全部楼层
回复

使用道具 举报

0

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2014-8-23
在线时间
10 小时
发表于 2016-10-28 10:27:30 | 显示全部楼层
楼主,你的问题跟我之前遇到的很像,接上USB后枚举过程完成不了,
插上USB,
setp 1.板子先是做reset动作,
setp 2.然后是ctr_lp 的 data_setup 上返回 设备 des
setp 3.分配设备地址,再返回新的des
按正常枚举过程,接下来应该是 PC此时会让设备发配置des 的,
但结果log显示,又再次回到了 setp 1. 如此反复几次后,程序不动了。
后来我发现,这是因为我们在 USB_Istr 的打印log 造成的问题,此接口是中断回调函数,中断不能放打印接口,需要去掉,你可以试一下这样弄:

#if (IMR_MSK & ISTR_RESET)
  if (wIstr & ISTR_RESET & wInterrupt_Mask)
  {
//  printf("USB_Istr_reset");//can,t printf in this func
    _SetISTR((u16)CLR_RESET);
    Device_Property.Reset();
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 10:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表