嵌入式开发者社区

标题: usb_dev_bulk 中断不能产生 [打印本页]

作者: silent123    时间: 2015-8-5 17:19
标题: usb_dev_bulk 中断不能产生
硬件平台:c6746
软件平台:starterware(usb_dev_bulk)

我的程序分成两部分bootloader和应用程序,由于我在bootloader里面要使用到usb,所以把starterware里面的usb_dev_bulk代码移植到了bootloader里面,bootloader启动后usb工作正常,在从bootloader跳转到应用程序时我用psc把usb关掉了。在应用程序中我也要使用usb,所以使用usb_dev_bulk中的代码对usb重新进行初始化,这一次usb不知道为什么不能正常工作了,连USB0DeviceIntHandler中断都没有产生。是不是以下注册usb中断的代码不能调用两次???
        IntDSPINTCInit();
        IntRegister(4, USB0DeviceIntHandler);
        IntEventMap(4, SYS_INT_USB0);
        IntEnable(4);
        IntGlobalEnable();

求帮忙。。。。。。。。


作者: 希望缄默    时间: 2015-8-5 17:29
在程序中复位一下 USB 外设~
重复初始化的话 会遇到问题的
作者: silent123    时间: 2015-8-5 21:37
希望缄默 发表于 2015-8-5 17:29
在程序中复位一下 USB 外设~
重复初始化的话 会遇到问题的

很感谢您的回答。您说要复位一下usb外设,请问具体是什么外设呢?本来想重新关闭再打开c6746的中断控制器,但是看了一下datasheet发现psc不支持c6746中断控制器的打开和关闭啊。
作者: silent123    时间: 2015-8-5 21:50
希望缄默 发表于 2015-8-5 17:29
在程序中复位一下 USB 外设~
重复初始化的话 会遇到问题的

我调试发现,如果不重新注册中断的话(就是说usb中断只在第一次初始化usb时注册),那么第二次初始化完usb也是可以正常使用的,如果两次usb初始化都注册中断的话,那第二次初始化完就不能正常工作了。想了很久也想不明白为什么usb的中断函数不能重新注册,我是有把第一次注册的中断unregister掉的。请问您这个问题有办法解决吗?谢谢!
作者: 希望缄默    时间: 2015-8-6 09:18
silent123 发表于 2015-8-5 21:50
我调试发现,如果不重新注册中断的话(就是说usb中断只在第一次初始化usb时注册),那么第二次初始化完us ...

中断应该不存在重复注册的问题的 你能确定到底是哪一句执行会影响 USB 使用呢?




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4