欢迎来到天天文库
浏览记录
ID:50831072
大小:37.17 KB
页数:16页
时间:2020-03-15
《USB通用函数API接口代码.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、//直接从.c文件复制黏贴过来的,要用自己再把下面的代码另存份.c的.#defineBYTEunsignedchar//**************************************************//基本定义函数//**************************************************BYTEFIFO_RD_CHECK(BYTEnum){BYTEFIFO_FLAG=0;UCC
2、=num;//选择Endpoint,0,1,2,3,4,MISC&=0xf8;//低3位置0MISC
3、=0X00;//TX位置0;Delay_3us
4、();MISC
5、=0X01;//SetRequestDelay_28us();if(MISC&0X40!=0)FIFO_FLAG=0x0f;//READYif(MISC&0x80!=0)FIF0_FLAG&=0xf0;//Len0DetectedMISC&=0xfe;//clearREQreturnFIFO_FLAG;}BYTEFIFO_WR_CHECK(BYTEnum){BYTEFIFO_FLAG=0;//后4位表示Ready位,前四位表示Len0位的状态是否有被设置UCC
6、=num;//选择Endpoint,0,1,2,3,4,MISC&=0xf8;//低3位置0MISC
7、
8、=0X02;//TX位置0;Delay_3us();MISC
9、=0X01;//SetRequestDelay_28us();if(MISC&0X40!=0)FIFO_FLAG=0x0f;//READYif(MISC&0x80!=0)FIF0_FLAG&=0xf0;//Len0DetectedMISC&=0xfe;//clearREQreturnFIFO_FLAG;}voidRead_FIFO(BYTE*Fifo_Addr,BYTEFifo_Size,BYTE*buffer){inti=0;MISC
10、=0x01;//SetRequestfor(i=0;i11、i++){buffer[i]=Fifo_Addr[0];//从FIFO地址取值Delay_28us();if(MISC&0x40==0)break;//NotReady}MISC^=0X02;//改变TX位状态Delay_3us();MISC&=0XFE;//ClearRequest}voidWrite_FIFO(BYTE*Fifo_Addr,BYTESendLenth,BYTE*buffer){inti=0;MISC12、=0X01;//SetRequestfor(i=0;i13、的Fifo中Delay_28us();if(MISC&0x40==0)break;//NotReady}MISC^=0X02;//改变TX位状态Delay_3us();MISC&=0XFE;//ClearRequest}BOOLCheck_Real_Cmd(){BYTEbFlag_Real_Cmd=FALSE;if(MISC&0X20!=0)bFlag_Real_Cmd=TRUE;if(MISC&0X80!=0)bFlag_Real_Cmd=TRUE;returnbFlag_Real_Cmd;}voidSend_hand(){BOOLIsRealCmd,Status_Flag14、;while(1){IsRealCmd=Check_Real_Cmd();if(IsRealCmd==TRUE)return;else{Status_Flag=FIFO_WR_CHECK(0);if(Status_Flag&0x0f!=0)//Fifo_Readybreak;elsecontinue;}}MISC15、=0x01;//SetRequsetMISC^=0X02;//改变TX位状态Delay_3us();MISC&=0XFE;//ClearRequest}voidcontrol_read(WORD*rom_dataptr,BYTE*buffer)//从中读取数据,{/16、/rom_dataptr是全局的在其他函数中赋值改变BYTEtemp,i=0;if(buffer[7]!=0)//FIFO_WLENGTHHreturn;if(buffer[6]==0)//FIFO_WLENGTHLreturn;if(buffer[6]>data_start[0])//请求的数据超出ROM数据return;data_count=buffer[6];if(MISC&0x40!=0)//是控制指令return;if(data_count==0){Send_Hand_Shake();retu
11、i++){buffer[i]=Fifo_Addr[0];//从FIFO地址取值Delay_28us();if(MISC&0x40==0)break;//NotReady}MISC^=0X02;//改变TX位状态Delay_3us();MISC&=0XFE;//ClearRequest}voidWrite_FIFO(BYTE*Fifo_Addr,BYTESendLenth,BYTE*buffer){inti=0;MISC
12、=0X01;//SetRequestfor(i=0;i13、的Fifo中Delay_28us();if(MISC&0x40==0)break;//NotReady}MISC^=0X02;//改变TX位状态Delay_3us();MISC&=0XFE;//ClearRequest}BOOLCheck_Real_Cmd(){BYTEbFlag_Real_Cmd=FALSE;if(MISC&0X20!=0)bFlag_Real_Cmd=TRUE;if(MISC&0X80!=0)bFlag_Real_Cmd=TRUE;returnbFlag_Real_Cmd;}voidSend_hand(){BOOLIsRealCmd,Status_Flag14、;while(1){IsRealCmd=Check_Real_Cmd();if(IsRealCmd==TRUE)return;else{Status_Flag=FIFO_WR_CHECK(0);if(Status_Flag&0x0f!=0)//Fifo_Readybreak;elsecontinue;}}MISC15、=0x01;//SetRequsetMISC^=0X02;//改变TX位状态Delay_3us();MISC&=0XFE;//ClearRequest}voidcontrol_read(WORD*rom_dataptr,BYTE*buffer)//从中读取数据,{/16、/rom_dataptr是全局的在其他函数中赋值改变BYTEtemp,i=0;if(buffer[7]!=0)//FIFO_WLENGTHHreturn;if(buffer[6]==0)//FIFO_WLENGTHLreturn;if(buffer[6]>data_start[0])//请求的数据超出ROM数据return;data_count=buffer[6];if(MISC&0x40!=0)//是控制指令return;if(data_count==0){Send_Hand_Shake();retu
13、的Fifo中Delay_28us();if(MISC&0x40==0)break;//NotReady}MISC^=0X02;//改变TX位状态Delay_3us();MISC&=0XFE;//ClearRequest}BOOLCheck_Real_Cmd(){BYTEbFlag_Real_Cmd=FALSE;if(MISC&0X20!=0)bFlag_Real_Cmd=TRUE;if(MISC&0X80!=0)bFlag_Real_Cmd=TRUE;returnbFlag_Real_Cmd;}voidSend_hand(){BOOLIsRealCmd,Status_Flag
14、;while(1){IsRealCmd=Check_Real_Cmd();if(IsRealCmd==TRUE)return;else{Status_Flag=FIFO_WR_CHECK(0);if(Status_Flag&0x0f!=0)//Fifo_Readybreak;elsecontinue;}}MISC
15、=0x01;//SetRequsetMISC^=0X02;//改变TX位状态Delay_3us();MISC&=0XFE;//ClearRequest}voidcontrol_read(WORD*rom_dataptr,BYTE*buffer)//从中读取数据,{/
16、/rom_dataptr是全局的在其他函数中赋值改变BYTEtemp,i=0;if(buffer[7]!=0)//FIFO_WLENGTHHreturn;if(buffer[6]==0)//FIFO_WLENGTHLreturn;if(buffer[6]>data_start[0])//请求的数据超出ROM数据return;data_count=buffer[6];if(MISC&0x40!=0)//是控制指令return;if(data_count==0){Send_Hand_Shake();retu
此文档下载收益归作者所有