说起作用,要详细查手册。
OUTPKTEND = 0x82;
// 该语句设置位SKIP=1,位EP1=1(表示EP2端点)
意思是,当REVCTL.0=1时,SKIP=1,跳过EP2的包
再具体的意思还得看手册。有比较详细的解释。通俗的理解是,FX2复位后,如果OUT缓冲区有未被提交的信息包,那么这个残留的信息包不会自动提交给主控制器FX2。为了保证复位后OUT端点缓冲区没有未被提交的信息包,可通过向该缓冲区写入语句OUTPKTEND,并设置位SKIP=1,则FX2固件程序的这部分初始化程序将跳过(放弃)2、3、4个信息包。具体有几个信息包根据FIFO缓冲区的深度来定。
就是说,它在FX2复位后,主机之前过来的信息包扔掉了。再加上之前的FIFORESET语句,就把FIFO复位,并清除内部数据,彻底初始化。
为什么同样的语句要做两次呢?因为该端点的FIFO被设置成2X。假如FIFO设置成4X,那就用四次。
|