void toggle_recv( ) { CH375_WR_CMD_PORT( CMD_SET_ENDP6 ); CH375_WR_DAT_PORT( endp6_mode ); endp6_mode ^= 0x40; // 初始值均为80H, 每执行一次成功事务后将位6取反 delay2us( ); } 这里并没有判断事务执行成功就把endp6_mode的位6取反了,这是为什么呢? 还有endp6_mode的初值并不是均为80H,我看到有一段程序在调用函数toggle_recv()之前, endp6_mode被赋值为C0H,这是什么原因?
void clr_stall6() { CH375_WR_CMD_PORT( CMD_CLR_STALL ); CH375_WR_DAT_PORT( 2 | 0x80 ); // 如果设备端不是CH37X芯片,那么需要修改端点号 endp6_mode = 0x80; status = 0xff; } 这段程序最后给status赋值0XFF,是什么意思呢