库函数中提供有判断是否有设备插拔的函数,但是如果同时插两个的usb设备,如何通过这个函数来判断是哪一个被拔掉了?
一个USB芯片怎么插两个设备呢?除非带HUB口的.这个是以中断方式告诉MCU,然后判断寄存器的值就可以了,如果是带HUB功能的USB芯片如:CH374U,要在外部自己写函数判断了.
我使用的pc做上位机,下位机是用ch375做的两个设备,调用的提供的c库函数里的判断设备插拔的函数
如果是两个设备的话,需要为每个设备号调用一次CH375SetDeviceNotify,如果某一个设备被拔掉的话,就会调用之前相对应的中断服务程序.
下面是我使用的部分代码: VOID CALLBACK CH375NOTIFYROUTINE( ULONG iEventStatus ); // 设备事件和当前状态: 0=设备拔出事件, 3=设备插入事件 VOID CALLBACK CH375NOTIFYROUTINE1( ULONG iEventStatus ); // 设备事件和当前状态: 0=设备拔出事件, 3=设备插入事件 CH375SetDeviceNotify(0,NULL,CH375NOTIFYROUTINE);//启动指定序号设备插拔监视 CH375SetDeviceNotify(1,NULL,CH375NOTIFYROUTINE1);//启动指定序号设备插拔监视
VOID CALLBACK CH375NOTIFYROUTINE(ULONG iEventStatus ){ //设备事件和当前状态: 0=设备拔出事件, 3=设备插入事件 return; } VOID CALLBACK CH375NOTIFYROUTINE1(ULONG iEventStatus ){ //设备事件和当前状态: 0=设备拔出事件, 3=设备插入事件 return; } 结果当插拔任一个设备时,两个中断函数都调用
你的设备的pid是不一样的吗?如果你的两个设备的pid,一个是pid1,一个是pid2的话 CH375SetDeviceNotify(0,PID1,CH375NOTIFYROUTINE); CH375SetDeviceNotify(0,PID2,CH375NOTIFYROUTINE);
谢谢了,已经调通了