首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

有用过JB8/JB16做USB的吗?我的程序只产生复位中断啊。

有用过JB8/JB16做USB的吗?我的程序只产生复位中断啊。

我的程序是网上公开的JB16 BDM程序,但硬件做好后接上USB线,USB中断服务程序只产生SUSPEND/RESUM中断和复位中断,没有EP0接收中断或SETUP中断。
我现在不知道是硬件问题还是软件问题,是不是在接收除复位中断外其它中断前先要在PC上装好驱动?
初学USB,还望大虾们多多指教。多谢啦!!!
这是USB初始化代码。
void usb_init(void) {
usb_ep0_dcntT=0xff; /* special meaning - means no transmission in progress */
usb_ep0_dcntR=0; /* no data to receive */
usb_ep2_dcntT=0; /* no data to transmit */
usb_ep2_dcntR=0; /* no data to receive */
led_timer=0;
led_state=LED_ON;
LED_INIT; /* usb interrupt drives the LED, so make sure it is initialised */
UADDR = UADDR_USBEN_MASK; /* enable the USB module, assign address to the default value (0) */
UIR0 = UIR0_RXD2IE_MASK | UIR0_RXD0IE_MASK | UIR0_TXD2IE_MASK | UIR0_TXD0IE_MASK | UIR0_EOPIE_MASK; /* enable Rx&Tx interupts on EP0 & EP2, enable end of frame interrupt */
UCR0 = 0; /* reset EP0 */
UCR1 = 0; /* reset EP1 */
UCR2 = 0; /* reset EP2 */
UCR4 = 0; /* normal operation */
UCR3 = UCR3_TX1STR_MASK | UCR3_PULLEN_MASK; /* clear TX1ST & enable internal pull-up */
USB_State = US_POWERED; /* must be powered when running this code... */
}
没有人遇到过这个问题么,好几天都郁闷ing。
中断产生和PC端软件没有关系。你的初始化没有什么大的问题,但是连接了USB以后,产生复位中断后的程序是怎么写的?有没有把EP0放开?在你的初始化里面EP0没有使能。
另外,USB所有中断是共用一个中断向量的,在中断后要记得标志位及时清零
谢谢斑主,问题解决啦。
返回列表