亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tpbulk.c

?? TMS2812實(shí)現(xiàn)U盤FAT文件系統(tǒng)C代碼
?? C
字號:
#include	"DSP28_Device.h"

//////////////////////////////////
extern unsigned char  DBUF[BUFFER_LENGTH];
extern PKG usbstack;
extern SYS_INFO_BLOCK   DeviceInfo;
extern FILE_INFO   ThisFile;
extern unsigned long DirStartCluster32,NowCluster32;
extern 	FLAGS bFlags;

unsigned char   out[0x20];
///////////////////////////////////////////////////////////////////////////
unsigned char EnumMassDev(void)
{
	unsigned int ReservedSectorsNum;
	if(!SPC_Inquiry())
		return FALSE;
	DelayMs(50);	
	if(!SPC_TestUnit())
		return FALSE;
	if(!SPC_LockMedia())
		return FALSE;
	if(!SPC_RequestSense())
		return FALSE;
	if(!SPC_TestUnit())
		return FALSE;
	if(!RBC_ReadCapacity())
		return FALSE;

	DeviceInfo.BPB_BytesPerSec=512; //暫假設(shè)為512
	DelayMs(50);	
	////////////////////////////////////////////////////
	if(!RBC_Read(0x00,1,DBUF))
		return FALSE;
	DBUF[0] = DBUF[0] & 0xFF;	
	//////////////////////////////////
	if(DBUF[0]==0xeb||DBUF[0]==0xe9)
		{
			DeviceInfo.StartSector=0;
		}
	else
		{
			DeviceInfo.StartSector=LSwapINT32(DBUF[454],DBUF[455],DBUF[456],DBUF[457]);
		}
	///////////////////////////////////////////////////////
	DelayMs(50);
	if(!RBC_Read(DeviceInfo.StartSector,1,DBUF))
		return FALSE;
	DeviceInfo.BPB_BytesPerSec=LSwapINT16(DBUF[11],DBUF[12]);
	DeviceInfo.BPB_SecPerClus=DBUF[13];
	ReservedSectorsNum=LSwapINT16(DBUF[14],DBUF[15]);
	DeviceInfo.BPB_NumFATs=DBUF[16];

	if(DBUF[82]=='F'&&DBUF[83]=='A'&&DBUF[84]=='T'&&DBUF[85]=='3'&&DBUF[86]=='2')
		{
		DeviceInfo.BPB_TotSec32=LSwapINT32(DBUF[32],DBUF[33],DBUF[34],DBUF[35]);
		DeviceInfo.BPB_FATSz32=LSwapINT32(DBUF[36],DBUF[37],DBUF[38],DBUF[39]);
		DeviceInfo.RootStartCluster=LSwapINT32(DBUF[44],DBUF[45],DBUF[46],DBUF[47]);
		DeviceInfo.FatStartSector=DeviceInfo.StartSector+ReservedSectorsNum;
		DeviceInfo.FirstDataSector=DeviceInfo.FatStartSector+DeviceInfo.BPB_NumFATs*DeviceInfo.BPB_FATSz32;
		DeviceInfo.TotCluster=(DeviceInfo.BPB_TotSec32-DeviceInfo.FirstDataSector+1)/DeviceInfo.BPB_SecPerClus+1;
		DirStartCluster32=DeviceInfo.RootStartCluster;
		DeviceInfo.FAT=1;	//FAT16=0,FAT32=1;
		}
	else
		{
		DeviceInfo.BPB_RootEntCnt=LSwapINT16(DBUF[17],DBUF[18]);
		DeviceInfo.BPB_RootEntCnt=(DeviceInfo.BPB_RootEntCnt)*32/DeviceInfo.BPB_BytesPerSec;	
		DeviceInfo.BPB_TotSec16=LSwapINT16(DBUF[19],DBUF[20]);	
		DeviceInfo.BPB_FATSz16=LSwapINT16(DBUF[22],DBUF[23]);			
		DeviceInfo.FatStartSector=DeviceInfo.StartSector+ReservedSectorsNum;
		DeviceInfo.RootStartSector=DeviceInfo.StartSector+DeviceInfo.BPB_NumFATs*DeviceInfo.BPB_FATSz16+ReservedSectorsNum;	
		DeviceInfo.FirstDataSector=DeviceInfo.FatStartSector+DeviceInfo.BPB_NumFATs*DeviceInfo.BPB_FATSz16+DeviceInfo.BPB_RootEntCnt;
		DeviceInfo.FAT=0;
		}	
	///////////////////////////////////////////////////////
	ThisFile.bFileOpen=0;	

	///////////////////////////////////////////////////////
	return TRUE;


}


unsigned char SPC_Inquiry(void)
{
	out[0]=0x55;out[1]=0x53;out[2]=0x42;out[3]=0x43;     //表示是CBW包
	out[4]=0x60;out[5]=0xa6;out[6]=0x24;out[7]=0xde;	 //
	out[8]=0x24;out[9]=0x00;out[10]=0x00;out[11]=0x00;	 //本次CBW需要傳輸長度為0X24	 
	out[12]=0x80;										 //傳輸方向
	out[13]=0x00;										 //一般為0,當(dāng)有多個(gè)邏輯單元時(shí)為指定的邏輯單元
	out[14]=06;				 							 //本次要傳輸?shù)腃BW命令的長度
	out[15]=SPC_CMD_INQUIRY;out[16]=0x00;out[17]=0x00;	 //
	out[18]=0x00;out[19]=0x24;out[20]=0x00;	
	////////////////////////////////
	DelayMs(200);
	if(!epBulkSend(out,0x1f))	
		return FALSE;
	DelayMs(50);
	if(!epBulkRcv(DBUF,38))
		return FALSE;
	if(!epBulkRcv(out,13))
		return FALSE;
	////////////////////////////////
	return TRUE;	
}

unsigned char SPC_RequestSense(void)
{
	out[0]=0x55;out[1]=0x53;out[2]=0x42;out[3]=0x43;	
	out[4]=0x60;out[5]=0xa6;out[6]=0x24;out[7]=0xde;
	out[8]=0x0e;out[9]=0x00;out[10]=0x00;out[11]=0x00;
	out[12]=0x80;out[13]=0x00;out[14]=6;
	out[15]=SPC_CMD_REQUESTSENSE;out[16]=0x00;out[17]=0x00;
	out[18]=0x00;out[19]=0x0e;out[20]=0x00;		
	//////////////////////////////////////
	if(!epBulkSend(out,0x1f))	
		return FALSE;
	DelayMs(5);
	if(!epBulkRcv(out,18))
		return FALSE;	
	if(!epBulkRcv(out,13))
		return FALSE;
/////////////////////////////
	return TRUE;
}

unsigned char SPC_TestUnit(void)
{
	out[0]=0x55;out[1]=0x53;out[2]=0x42;out[3]=0x43;	
	out[4]=0x60;out[5]=0xa6;out[6]=0x24;out[7]=0xde;	
	out[8]=0x00;out[9]=0x00;out[10]=0x00;out[11]=0x00;
	out[12]=0x00;out[13]=0x00;out[14]=6;
	/////////////////////////////////////	
	out[15]=SPC_CMD_TESTUNITREADY;
	out[16]=0;out[17]=0;out[18]=0;out[19]=0;out[20]=0;
	//////////////////////////////////////
	if(!epBulkSend(out,0x1f))	
		return FALSE;
	DelayMs(5);
	if(!epBulkRcv(out,13))
		return FALSE;
	return TRUE;
}

unsigned char SPC_LockMedia(void)
{
	out[0]=0x55;out[1]=0x53;out[2]=0x42;out[3]=0x43;
	out[4]=0x60;out[5]=0xa6;out[6]=0x24;out[7]=0xde;	
	out[8]=0x00;out[9]=0x00;out[10]=0x00;out[11]=0x00;
	out[12]=0x00;out[13]=0x00;out[14]=5;
	///////////////////////////////////////////
	out[15]=SPC_CMD_PRVENTALLOWMEDIUMREMOVAL;
	out[16]=0;out[17]=0;out[18]=0;out[19]=1;
	///////////////////////////////////////////
	if(!epBulkSend(out,0x1f))	
		return FALSE;
	DelayMs(5);

	if(!epBulkRcv(out,13))
		return FALSE;

/////////////////////////////
	return TRUE;
}

unsigned char RBC_ReadCapacity(void)
{
	out[0]=0x55;out[1]=0x53;out[2]=0x42;out[3]=0x43;	
	out[4]=0x60;out[5]=0xa6;out[6]=0x24;out[7]=0xde;	
	out[8]=0x08;out[9]=0x00;out[10]=0x00;out[11]=0x00;	
	out[12]=0x80;out[13]=0x00;out[14]=10;
	/////////////////////////////////////
	out[15]=RBC_CMD_READCAPACITY;
	out[16]=0;out[17]=0;out[18]=0;out[19]=0;
	out[20]=0;out[21]=0;out[22]=0;out[23]=0;
	out[24]=0;
	/////////////////////////////////////
	if(!epBulkSend(out,0x1f))	
		return FALSE;
	DelayMs(10);
	if(!epBulkRcv(DBUF,8))
		return FALSE;
	if(!epBulkRcv(out,13))
		return FALSE;
	/////////////////////////////
	return TRUE;
}

unsigned char RBC_Read(unsigned long lba,unsigned char len,unsigned char *pBuffer)
{
	unsigned long lout;	
	out[0]=0x55;out[1]=0x53;out[2]=0x42;out[3]=0x43;	
	out[4]=0x60;out[5]=0xa6;out[6]=0x24;out[7]=0xde;	
	lout=len*DeviceInfo.BPB_BytesPerSec;
	out[8]=(unsigned char)(lout&0xff);
	out[9]=(unsigned char)((lout>>8)&0xff);
	out[10]=(unsigned char)((lout>>16)&0xff);
	out[11]=(unsigned char)((lout>>24)&0xff);	
	out[12]=0x80;out[13]=0x00;out[14]=10;
	/////////////////////////////////////
	out[15]=RBC_CMD_READ10;out[16]=0x00;
	out[17]=(unsigned char)((lba>>24)&0xff);
	out[18]=(unsigned char)((lba>>16)&0xff);
	out[19]=(unsigned char)((lba>>8)&0xff);
	out[20]=(unsigned char)(lba&0xff);	
	out[21]=0x00;
	out[22]=(unsigned char)((len>>8)&0xff);
	out[23]=(unsigned char)(len&0xff);	
	out[24]=0x00;
	//////////////////////////////////////	
	if(!epBulkSend(out,0x1f))	
		return FALSE;
	DelayMs(20); 
	if(!epBulkRcv(pBuffer,len*DeviceInfo.BPB_BytesPerSec))
		return FALSE;
	DelayMs(5);	
	if(!epBulkRcv(out,13))
		return FALSE;		
	/////////////////////////////
	return TRUE;
}

unsigned char RBC_Write(unsigned long lba,unsigned char len,unsigned char *pBuffer)
{
	unsigned long lout;
	out[0]=0x55;out[1]=0x53;out[2]=0x42;out[3]=0x43;
	out[4]=0xb4;out[5]=0xd9;out[6]=0x77;out[7]=0xc1;	
	lout=len*DeviceInfo.BPB_BytesPerSec;
	out[8]=(unsigned char)(lout&0xff);
	out[9]=(unsigned char)((lout>>8)&0xff);
	out[10]=(unsigned char)((lout>>16)&0xff);
	out[11]=(unsigned char)((lout>>24)&0xff);	
	out[12]=0x00;out[13]=0x00;out[14]=10;
	/////////////////////////////////////
	out[15]=RBC_CMD_WRITE10;	
	out[16]=0x00;
	out[17]=(unsigned char)((lba>>24)&0xff);
	out[18]=(unsigned char)((lba>>16)&0xff);
	out[19]=(unsigned char)((lba>>8)&0xff);
	out[20]=(unsigned char)(lba&0xff);
	out[21]=0x00;
	out[22]=(unsigned char)((len>>8)&0xff);
	out[23]=(unsigned char)(len&0xff);	
	out[24]=0x00;
	//////////////////////////////////////
//	DelayMs(200); //200
	if(!epBulkSend(out,0x1f))	
		return FALSE;
	DelayMs(10); //150
	if(!epBulkSend(pBuffer,DeviceInfo.BPB_BytesPerSec))
		return FALSE;
	DelayMs(5);	//100
	if(!epBulkRcv(out,13))
		return FALSE;
	return TRUE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区在线观看乱码| 日本欧美在线看| 盗摄精品av一区二区三区| 韩国成人精品a∨在线观看| 中文成人综合网| 欧美激情一区不卡| 欧美大片在线观看| 亚洲天堂2014| 国产最新精品免费| 9色porny自拍视频一区二区| 欧美视频你懂的| 午夜电影一区二区三区| 日韩中文字幕麻豆| 国产一区二区三区日韩| 国产黄人亚洲片| 91免费观看视频在线| 免费日本视频一区| 高清成人在线观看| 色久优优欧美色久优优| 懂色av中文字幕一区二区三区| 精品日韩一区二区三区| 一区二区三区在线不卡| 麻豆91免费观看| 99热99精品| 欧美人伦禁忌dvd放荡欲情| 欧美一区二区三区视频在线观看| 亚洲一区视频在线观看视频| 风间由美中文字幕在线看视频国产欧美| 北岛玲一区二区三区四区| 日韩一卡二卡三卡四卡| 日韩精品专区在线影院观看| 久久精品亚洲国产奇米99| 免播放器亚洲一区| 成人h精品动漫一区二区三区| 欧美日韩一区二区欧美激情| 日韩欧美国产高清| 一区二区三区久久久| 日韩黄色片在线观看| 欧美电影免费观看完整版 | 极品少妇一区二区| 欧美在线小视频| 欧美精品在线视频| 尤物在线观看一区| 成人午夜免费av| 久久99蜜桃精品| 欧洲一区二区三区免费视频| 在线观看日韩高清av| 色哟哟国产精品| 久久精品欧美一区二区三区不卡| 亚洲丝袜制服诱惑| 欧美aaa在线| 久久久蜜臀国产一区二区| 久久精品视频在线免费观看| 国产一区二区福利视频| 欧美xxxx老人做受| 午夜婷婷国产麻豆精品| 久久综合色一综合色88| 日韩欧美国产综合一区 | 26uuu精品一区二区在线观看| 天天色图综合网| 一级女性全黄久久生活片免费| 国产美女精品人人做人人爽| 欧美电视剧在线看免费| 亚洲私人影院在线观看| 国产成人av一区二区三区在线 | 国产精品国产三级国产| 99riav一区二区三区| 色综合久久88色综合天天免费| 精品欧美一区二区三区精品久久| 亚洲一区在线观看网站| 欧美一区二区三区视频免费| 91精品国产色综合久久不卡蜜臀| 亚洲成av人片| 一本色道亚洲精品aⅴ| 精品国产3级a| 亚洲美女电影在线| 91蜜桃视频在线| 欧美韩国日本不卡| 精品一区二区三区av| 国产成人亚洲精品青草天美| 91精品国产综合久久福利| 日韩一区二区免费视频| 亚洲色欲色欲www| 肉肉av福利一精品导航| 亚洲成av人**亚洲成av**| 国产成人福利片| 成人app在线| 国产精品久久久久久户外露出| 蜜桃91丨九色丨蝌蚪91桃色| 国产激情偷乱视频一区二区三区 | 欧美大片一区二区| 人人超碰91尤物精品国产| 婷婷综合五月天| 九九国产精品视频| 51久久夜色精品国产麻豆| 日韩中文字幕麻豆| 欧美日韩一区视频| 99久久久国产精品免费蜜臀| 国产精品国产三级国产普通话三级| 99re热这里只有精品视频| 樱桃视频在线观看一区| 欧美日本一区二区在线观看| 成人av片在线观看| 久久午夜羞羞影院免费观看| 91视频免费播放| 亚洲高清免费一级二级三级| 久久久久久久av麻豆果冻| 色综合久久久久| 国产精品1区2区3区在线观看| 亚洲欧洲中文日韩久久av乱码| 日韩一区二区免费视频| 欧美影院午夜播放| 理论电影国产精品| 亚洲高清免费视频| 欧美国产精品中文字幕| 亚洲超碰97人人做人人爱| 中文字幕制服丝袜一区二区三区| 欧美日韩激情一区| 在线观看av不卡| 久久国产精品区| 日韩精品久久理论片| 亚洲制服丝袜av| 一区二区三区不卡在线观看| 国产精品国产自产拍高清av王其 | 国产成人av一区二区三区在线观看| 亚洲欧美日韩国产综合| 欧美电影免费观看高清完整版在| 色综合久久天天| 久久久久亚洲综合| 天堂va蜜桃一区二区三区漫画版 | 欧美色图激情小说| 国产欧美精品区一区二区三区| 久久久久久一二三区| 91老司机福利 在线| 国产剧情一区二区三区| 日韩av电影免费观看高清完整版在线观看| 日韩小视频在线观看专区| 欧美羞羞免费网站| 国产乱人伦精品一区二区在线观看| 国产精品久久久久久妇女6080 | 欧美不卡在线视频| 日韩美女主播在线视频一区二区三区 | 风间由美中文字幕在线看视频国产欧美| 奇米影视一区二区三区小说| 国产福利一区二区三区视频在线| 成人激情文学综合网| 成人性生交大合| 99久久免费国产| 亚洲欧洲一区二区在线播放| 欧美日韩精品综合在线| 久久婷婷一区二区三区| 欧美精品一区二区三区一线天视频| 不卡的av在线播放| 精品一区二区免费在线观看| 精品一区二区三区在线播放| 欧美天堂亚洲电影院在线播放| 中国av一区二区三区| 久久久久久亚洲综合影院红桃| 亚洲国产综合人成综合网站| 国产欧美一区二区精品性色超碰 | xnxx国产精品| 美女精品一区二区| 中文字幕欧美国产| 99久久精品免费看国产免费软件| 亚洲黄色av一区| 日韩视频中午一区| 麻豆91在线看| 尤物av一区二区| 亚洲视频在线一区二区| 国产原创一区二区| 欧美精品一区二区在线观看| 国内精品伊人久久久久av影院| 日韩一区二区免费高清| 捆绑调教一区二区三区| 久久狠狠亚洲综合| 国产精品毛片高清在线完整版| 亚洲乱码国产乱码精品精小说| 国产精品成人网| 国产欧美综合色| 亚洲天堂久久久久久久| 欧美军同video69gay| 日韩精品一区二区三区在线| 精品国精品国产尤物美女| 337p粉嫩大胆噜噜噜噜噜91av| 成人免费电影视频| 777欧美精品| av成人动漫在线观看| 95精品视频在线| 亚洲图片有声小说| 日韩免费在线观看| 91免费在线播放| 欧美一区二区啪啪| 日韩欧美成人激情| 国产欧美一区二区三区鸳鸯浴 | 亚洲人成精品久久久久久| 欧洲精品视频在线观看| 久久国产麻豆精品| 一区二区三区日韩精品视频| 亚洲成a人片在线观看中文| 国产一区二区三区国产|