我把程序换成中断方式,低电平触发,跟踪的时候发现程序无法相应上位机发出的get device了,调试跟踪的时候,发现连else if ( s & BIT_IF_TRANSFER ) { }...都进不去,只是进入了复位,然后再也无法进入中断了,不知道原因在什么地方。开始怀疑是相关标志位没清零,相关寄存器位未使能,后来都对了一遍,官方的例程是都做了这些处理的,不知道为题出现在何处?
我把程序换成中断方式,低电平触发,跟踪的时候发现程序无法响应上位机发出的get device了,调试跟踪的时候,发现连else if ( s & BIT_IF_TRANSFER ) { }...都进不去,只是进入了复位,然后再也无法进入中断了,不知道原因在什么地方。开始怀疑是相关标志位没清零,相关寄存器位未使能,后来都对了一遍,官方的例程是都做了这些处理的,不知道为题出现在何处?
实际上中断和查询方式是一样的。这个你需要跟踪下你的软件。估计是你进了外部中断之后某些中断标志位未清除导致无法在进中断。
谢谢 我搞出来了 官方例程中else if ( s & BIT_IF_USB_SUSPEND ) { // USB总线挂起 Write374Byte( REG_INTER_FLAG, BIT_IF_USB_PAUSE | BIT_IF_USB_SUSPEND ); // 清中断标志 Write374Byte( REG_SYS_CTRL, Read374Byte( REG_SYS_CTRL ) | BIT_CTRL_OSCIL_OFF ); // 时钟振荡器停止振荡,进入睡眠状态 }
我把Write374Byte( REG_SYS_CTRL, Read374Byte( REG_SYS_CTRL ) | BIT_CTRL_OSCIL_OFF );注释掉就可以了 请问为什么例程里在这个位置加这一句?还有就是我这种做法正确么
加这个的目的是在采用外供电的时候,USB从计算机上拔出之后可以进入睡眠状态。
好的,总之问题是解决了。感谢贵公司技术耐心讲解