CH375A中断问题

按照你说的,在先插上U盘操作不正常那么你的程序停在什么地方呢????有返回错误代码吗??


每次都是死在: void xQueryInterrupt( void ) /* 查询中断状态,等待硬件中断 */ { while ( CH375IntStatus == 0 ); /* 子程序库调用该子程序之前CH375IntStatus=0,硬件中断后,由中断服务程序置为非0的实际中断状态后返回 */ }

应该没有中断信号了! 所以我不知道贵公司提供的子程序库中是在哪里调用了该函数! 我一直都没有调用该函数!


我知道是停在了这里,关键问题是是哪个库函数停在了这个地方?


ucErr = CH375FileRead();


当热插拔U盘的时候,都会产生一个中断信号! 我想问问: 当我上电前插上U盘,再初始化, 和上电初始化完毕后,再插上U盘! 这两个过程中是不是处理不同? 比如说,初始化完毕后,再插上U盘,会有进入中断,检测到了U盘已经连接后,内部是不是做了什么处理, 而先插上U盘,再上电初始化,则没有做那些相应的处理过程! 才使得两种方式,得到结论不同! 我的中断函数如下: void CH375Interrupt(void) { //INT8U ucErr;

xWriteCH375Cmd( CMD_GET_STATUS ); /* 获取中断状态并取消中断请求 */ CH375IntStatus = xReadCH375Data( ); /* 获取中断状态 */ if ( CH375IntStatus == USB_INT_DISCONNECT ) { CH375DiskStatus = DISK_DISCONNECT; g_ulUDiskCurStatus = DISK_DISCONNECT; } else if ( CH375IntStatus == USB_INT_CONNECT ) { CH375DiskStatus = DISK_CONNECT; g_ulUDiskCurStatus = DISK_CONNECT; } }

我自己没有做什么处理,你们公司的子程序库有没有做什么处理呢? 麻烦贵公司的技术人员,能帮我查查这个问题,非常感谢!


你可以这样试下看可以不可以,就是在初始化我们库的时候,也就是CH375LIBInit()这个函数的时候,将中断关闭掉,当所有的初始化完成之后在将中断打开试下看看


我先看看


还是不行啊! 现在咋整?


void xQueryInterrupt( void ) /* 查询中断状态,等待硬件中断 */ { while ( CH375IntStatus == 0 ); /* 子程序库调用该子程序之前CH375IntStatus=0,硬件中断后,由中断服务程序置为非0的实际中断状态后返回 */ } 你们子程序库是在哪个地方调用的! 为什么总是死在这个位置上?


请问一下: 怎么编写一个函数,该函数的功能为模拟U盘的断开与连接! 我想编写一个这样的函数,看看是不是能解决问题! 还贵公司的技术人员继续帮忙,非常感谢!


有中断的时候才会进这个函数,具体的哪些命令会产生中断的话,那你可以参考CH375DS1和CH375DS2


好,我先查查!

请问一下: 怎么编写一个函数,该函数的功能为模拟U盘的断开与连接! 我想编写一个这样的函数,看看是不是能解决问题! 还贵公司的技术人员继续帮忙,非常感谢!


模拟U盘的插拔你可以将375的模式设置在模式6和模式7之间进行切换。设置为模式6后,U盘在的话可以产生U盘连接的中断USB_INT_CONNECT,也就相当于模拟U盘的插入;但设置模式7模拟U盘拔出,并不能产生U盘断开的中断USB_INT_DISCONNECT。


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