我用ch372,底层单片机控制CH372使用端点1发送数据, 上层用CH375SetIntRoutine设置为中断服务,可以进中断,但是每次用CH375ReadInter读数据都会死机, 用端点2读写的话,都是正常的,请问这是什么情况啊
我们不建议这样使用。CH375SetIntRoutine在内部会创建一个线程来循环读中断端点,如果有读到数据上来就会调用你的中断服务,如果这时你在调用CH375ReadInter这个函数,它会继续再发送请求读中断端点,但这时中断端点的数据已经被之前的线程读取走了,所以会函数会一直等待到下一次中断端点有数据,造成死机的情况。 同时我们也不建议使用CH375SetIntRoutine这个函数。
根据你的说法,“但这时中断端点的数据已经被之前的线程读取走了”,
然后我找到了2009年1月7号的一个帖子,链接如下/bbs/View.asp?S=101&I=31521 ,其中zyw 用户回复了“mInterruptEvent(ByRef mBuffer As INT_PARA) 函数调用结束后那8个字节的数据就没有了,实际上已经被中断读走了,mBuffer里就是指向的那8个数据”,
我是否可以理解为,在调用回调函数的时候,数据已经读走了,那我怎样才能拿到这个被读走的数据呢
typedef VOID ( CALLBACK * mPCH375_INT_ROUTINE ) ( PUCHAR iBuffer ); 其中iBuffer指向一个缓冲区,提供当前的中断特征数据,也就是你要的数据,就是说你提供的中断服务程序在被调用时,函数的参数传给你的值就是中断数据数组的指针,8个字节