好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

USB通用函数API接口代码.docx

16页
  • 卖家[上传人]:自***
  • 文档编号:126240802
  • 上传时间:2020-03-23
  • 文档格式:DOCX
  • 文档大小:37.17KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • //直接从.c文件复制黏贴过来的,要用自己再把下面的代码另存份.c的.#define BYTE unsigned char//**************************************************// 基本定义函数//**************************************************BYTE FIFO_RD_CHECK(BYTE num){ BYTE FIFO_FLAG=0; UCC|=num;//选择Endpoint,0,1,2,3,4, MISC&=0xf8;//低3位置0 MISC|=0X00;//TX位置0; Delay_3us(); MISC|=0X01;//Set Request Delay_28us(); if(MISC&0X40!=0) FIFO_FLAG=0x0f;//READY if(MISC&0x80!=0) FIF0_FLAG&=0xf0;//Len0 Detected MISC&=0xfe;//clear REQ return FIFO_FLAG;}BYTE FIFO_WR_CHECK(BYTE num){ BYTE FIFO_FLAG=0;//后4位表示Ready位,前四位表示Len0位的状态是否有被设置 UCC|=num;//选择Endpoint,0,1,2,3,4, MISC&=0xf8;//低3位置0 MISC|=0X02;//TX位置0; Delay_3us(); MISC|=0X01;//Set Request Delay_28us(); if(MISC&0X40!=0) FIFO_FLAG=0x0f;//READY if(MISC&0x80!=0) FIF0_FLAG&=0xf0;//Len0 Detected MISC&=0xfe;//clear REQ return FIFO_FLAG;}void Read_FIFO(BYTE *Fifo_Addr,BYTE Fifo_Size,BYTE *buffer){ int i=0; MISC|=0x01;//Set Request for(i=0;idata_start[0])//请求的数据超出ROM数据 return; data_count=buffer[6]; if(MISC&0x40!=0)//是控制指令 return; if(data_count==0) { Send_Hand_Shake(); return; } //开始真正的control_read while(1) { if(bFlag_RD_HTable==0)//Read Low Byte { bFlag_RD_HTable=1; buffer[i]=(BYTE )*rom_dataptr;//取其低位 i++; data_count--;//全局变量,要发送的总长度 if(data_count<=1) break; if(i+1==8)//FIFO_size=8 break; } else//Read Hight Byte { bFlag_RD_HTable=0; buffer[i]=(BYTE )(*rom_dataptr)>>8;//取其高位 rom_dataptr++;//将ROM指针前移 if(buffer[i]==0x3f) continue; else { i++; if(data_count<=1) break; if(i+1==8) break; } } }//填充完毕,结束循环,开始向FIFO发送数据 while(1) { if(Check_Real_Cmd()==TRUE) return; if(FIFO_WR_CHECK(0)&0xff==0) continue;//Not Ready } Write_FIFO(Fifo_0_Addr,0x02,buffer); }//**************************************************// SetAddress(): 重新设定Endpoint地址函数//**************************************************void SetAddress(BYTE *buffer){ BYTE Dev_Addr; Dev_Addr=buffer[2]//FIFO_OUT3,FIFO_WVALUEL SIES|=0x01;//主机从设备读操作后将更新在AWR中的地址,否则为0则立即更新 Dev_Addr&=0XFE; USB_AWR=Dev_Addr; Send_Hand_Shake();}//**************************************************// SetConfiguration(): 设置配置函数//**************************************************void SetConfiguration(BYTE *buffer,BYTE *USB_Configuration){ USVC|=0x80; PGA_CTRL|=0x80; *USB_Configuration=buffer[2];//FIFO_WVALUEL STALL&=0x00;//设置好以上的寄存器 Send_Hand_Shake();}//**************************************************// ClearFeature(): 清徐Feature函数//**************************************************void ClearFeature(BYTE *buffer){ BYTE temp; temp=buffer[2];//FIFO_wValueL if(temp=0x01) { Send_Hand_Shake(); } else STALL0|=0x01;//SendStall0();}void ClearFeature_Endpoint(BYTE *buffe。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.