关于先接入U盘后上电不能正常工作的问题

我后来分析了下,找着了原因,但不知如何解决,是这样的 当我设置好ch375的工作模式为启用主机模式时,它马上检测到U盘的接入,因此 ch375_data_port的返回值为15,即返回了USB设备连接事件中断值,而不是返回操作成功值51,所以不能正常工作。请教这个问题如何解决呢:程序代码如下: ch375_cmd_port=CMD_SET_USB_MODE; delay20us(); ch375_data_port=0x06; delay20us(); statuscode=ch375_data_port;//在此返回的值为15,USB连接设备中断值,不是操作成功值; 我试着改了一下延时程序,结果一样 if(statuscode!=CMD_RET_SUCCESS) { err_code=0x22; err_deal(err_code); return(statuscode); } else return(0);

在设置工作模式前,我已经关闭了中断,它照样能检测到U盘的接入,因为,虽然单片机不能进入中断服务了程序,但ch375_data_port的值还是输出中断值,我想这是因为ch375内部集成了mcu,自动检测到U盘的接入,更改了数据口值的原因,那上述问题怎么解决呢


首先,就是在你U盘接上的时候,你设置模式,你不要判断成功不成功,你只要判断是不是失败就可以了,你可以试下这个程序看下可以不可以: ch375_cmd_port=CMD_SET_USB_MODE; delay20us(); ch375_data_port=0x06; delay20us(); statuscode=ch375_data_port;//在此返回的值为15,USB连接设备中断值,不是操作成功值; printf("%d\n",statuscode); 我试着改了一下延时程序,结果一样 while(statuscode!=CMD_RET_SUCCESS); 再次,你的这个程序可能在读状态的时候可能慢了点,你还没来得及读取状态的时候就产生了375检测到磁盘插上的中断,返回的是0X15,所以说,这是一个正常的情况.


谢谢,和我想的一样,我已经解决此问题,的确是这样,我在设置模式后,加了个判断语句,要么设置成功,要么检测到U盘接入,都往下执行,


只有登录才能回复,可以选择微信账号登录