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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ch375hft.c

?? CH375測試程續
?? C
?? 第 1 頁 / 共 2 頁
字號:
	xWriteCH375Data( iCount );  /* 后續數據的長度 */
	for ( ; iCount != 0; iCount -- ) {  /* 根據長度寫入數據 */
		xWriteCH375Data( *iBuffer );  /* 將數據寫入 */
		iBuffer ++;
	}
}

/* 檢查U盤是否寫保護, 返回USB_INT_SUCCESS說明可以寫,返回0xFF說明只讀/寫保護,返回其它值說明是錯誤代碼 */
/* 其它BulkOnly傳輸協議的命令可以參考這個例子處理,修改前必須了解USB MassStorage和SCSI規范 */
UINT8	IsDiskWriteProtect( void )
{
	UINT8	mIfSubClass, mLength, mDevSpecParam;
	if ( CH375Version2 == 0 ) return( ERR_USB_DISK_ERR );  /* CH375S不支持 */
	CH375IntStatus = 0;  /* 清中斷標志 */
	xWriteCH375Cmd( CMD_GET_DESCR );  /* 獲取描述符的命令 */
	xWriteCH375Data( 2 );  /* 配置描述符 */
	xQueryInterrupt( );  /* 查詢CH375中斷并更新中斷狀態 */
	if ( CH375IntStatus == USB_INT_SUCCESS ) {  /* 操作成功 */
		ReadUsbData( (UINT8 *)&mCmdParam );  /* 讀取描述符,請確保mCmdParam長度MAX_BYTE_IO大于32字節,否則需另選緩沖區 */
		mIfSubClass = mCmdParam.Other.mBuffer[9+6];  /* 子類 USB_CFG_DESCR_LONG.itf_descr.bInterfaceSubClass */
		mCmdParam.BOC.mCBW.mCBW_DataLen = 0x10;  /* 數據傳輸長度 */
		mCmdParam.BOC.mCBW.mCBW_Flag = 0x80;  /* 傳輸方向為輸入 */
		if ( mIfSubClass == 6 ) {  /* 根據子類選擇命令碼 */
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[0] = 0x1A;  /* 命令塊首字節, MODE SENSE(6) */
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[1] = 0x00;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[2] = 0x3F;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[3] = 0x00;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[4] = 0x10;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[5] = 0x00;
		}
		else {
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[0] = 0x5A;  /* 命令塊首字節, MODE SENSE(10) */
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[1] = 0x00;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[2] = 0x3F;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[3] = 0x00;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[4] = 0x00;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[5] = 0x00;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[6] = 0x00;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[7] = 0x00;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[8] = 0x10;
			mCmdParam.BOC.mCBW.mCBW_CB_Buf[9] = 0x00;
		}
		WriteUsbData( (UINT8 *)&mCmdParam, 31 );  /* 向CH375主機端點的發送緩沖區寫入CBW數據塊,剩余部分CH375自動填補 */
		CH375IntStatus = 0;
		xWriteCH375Cmd( CMD_DISK_BOC_CMD );  /* 對USB存儲器執行BulkOnly傳輸協議 */
		xQueryInterrupt( );  /* 查詢CH375中斷并更新中斷狀態 */
		if ( CH375IntStatus == USB_INT_SUCCESS ) {  /* 操作成功 */
			mLength = ReadUsbData( (UINT8 *)&mCmdParam );  /* 從CH375主機端點的接收緩沖區讀取數據塊 */
			if ( mLength > 3 ) {  /* MODE SENSE命令返回數據的長度有效 */
				if ( mIfSubClass == 6 ) mDevSpecParam = mCmdParam.Other.mBuffer[2];  /* MODE SENSE(6), device specific parameter */
				else mDevSpecParam = mCmdParam.Other.mBuffer[3];  /* MODE SENSE(10), device specific parameter */
				if ( mDevSpecParam & 0x80 ) return( 0xFF );  /* U盤寫保護 */
				else return( USB_INT_SUCCESS );  /* U盤沒有寫保護 */
			}
			return( ERR_USB_DISK_ERR );
		}
		mIfSubClass = CH375IntStatus;  /* 暫存 */
		xWriteCH375Cmd( CMD_DISK_R_SENSE );  /* 檢查USB存儲器錯誤 */
		xQueryInterrupt( );  /* 查詢CH375中斷并更新中斷狀態 */
		return( mIfSubClass );
	}
	return( CH375IntStatus );
}

/* 安全移除U盤, 返回USB_INT_SUCCESS說明可以安全移除,否則說明不能安全移除,只能強行移除 */
/* 在操作完U盤準備讓用戶拔出U盤前調用, 防止用戶過早拔出U盤丟失數據 */
UINT8	SafeRemoveDisk( void )
{
	UINT8	i;
	for ( i = 0; i < 10; i ++ ) {  /* 有的U盤總是返回未準備好,不過可以被忽略 */
		mDelaymS( 100 );
		if ( CH375DiskReady( ) == ERR_SUCCESS ) break;  /* 查詢磁盤是否準備好 */
	}
	mDelaymS( 10 );
	xWriteCH375Cmd( CMD_SET_CONFIG );  /* 設置USB配置 */
	xWriteCH375Data( 0 );  /* 取消配置,會導致很多U盤的LED燈滅 */
	xQueryInterrupt( );  /* 查詢CH375中斷并更新中斷狀態 */
	mDelaymS( 10 );
	if ( i < 5 && CH375IntStatus == USB_INT_SUCCESS ) return( USB_INT_SUCCESS );  /* 操作成功 */
	else return( 0xFF );
/* 以下取消SOF包會導致絕大多數U盤的LED燈滅 */
/* 如果此處取消SOF, 那么與此對應, 在檢測到U盤插入后應該再恢復為模式6即恢復SOF包 */
//	xWriteCH375Cmd( CMD_SET_USB_MODE );  /* 設置USB工作模式 */
//	xWriteCH375Data( 5 );  /* 停止發出SOF包,檢測到U盤插入后必須用模式6恢復SOF包發出 */
//	mDelaymS( 1 );
}

main( ) {
	UINT8	i;
	LED_OUT_INIT( );
	LED_OUT_ACT( );  /* 開機后LED亮一下以示工作 */
	mDelaymS( 100 );  /* 延時100毫秒 */
	LED_OUT_INACT( );
	mInitSTDIO( );  /* 為了讓計算機通過串口監控演示過程 */
	printf( "Start\n" );

#if DISK_BASE_BUF_LEN == 0
	pDISK_BASE_BUF = &my_buffer[0];  /* 不在.H文件中定義CH375的專用緩沖區,而是用緩沖區指針指向其它應用程序的緩沖區便于合用以節約RAM */
#endif

	i = CH375LibInit( );  /* 初始化CH375程序庫和CH375芯片,操作成功返回0 */
	mStopIfError( i );
/* 其它電路初始化 */

	while ( 1 ) {
		printf( "Wait Udisk\n" );
		while ( CH375DiskStatus < DISK_CONNECT ) {  /* 查詢CH375中斷并更新中斷狀態,等待U盤插入 */
			CH375DiskConnect( );
			mDelaymS( 100 );
		}
		LED_OUT_ACT( );  /* LED亮 */
		mDelaymS( 200 );  /* 延時,可選操作,有的USB存儲器需要幾十毫秒的延時 */

/* 檢查U盤是否準備好,有些U盤不需要這一步,但是某些U盤必須要執行這一步才能工作 */
		for ( i = 0; i < 3; i ++ ) {  /* 有的U盤總是返回未準備好,不過可以被忽略 */
			mDelaymS( 100 );
			printf( "Ready ?\n" );
			if ( CH375DiskReady( ) == ERR_SUCCESS ) break;  /* 查詢磁盤是否準備好 */
		}
#if DISK_BASE_BUF_LEN
		if ( DISK_BASE_BUF_LEN < CH375vSectorSize ) {  /* 檢查磁盤數據緩沖區是否足夠大,CH375vSectorSize是U盤的實際扇區大小 */
			printf( "Too large sector size\n" );
			while ( CH375DiskConnect( ) == ERR_SUCCESS ) mDelaymS( 100 );
			continue;
		}
#endif
/* 查詢磁盤物理容量 */
/*		printf( "DiskSize\n" );
		i = CH375DiskSize( );  
		mStopIfError( i );
		printf( "TotalSize = %u MB \n", (unsigned int)( mCmdParam.DiskSize.mDiskSizeSec * (CH375vSectorSize/512) / 2048 ) );  // 顯示為以MB為單位的容量
		// 原計算方法 (unsigned int)( mCmdParam.DiskSize.mDiskSizeSec * CH375vSectorSize / 1000000 ) 有可能前兩個數據相乘后導致溢出, 所以修改成上式
*/
		LED_RUN_ACT( );  /* 開始操作U盤 */

		printf( "Check Disk Write Protect ? ...\n" );
		i = IsDiskWriteProtect( );  /* 檢查U盤是否寫保護, 返回USB_INT_SUCCESS說明可以寫,返回0xFF說明只讀/寫保護,返回其它值說明是錯誤代碼 */
		if ( i != USB_INT_SUCCESS && i != 0xFF ) {  /* 操作失敗 */
			printf( "Again ...\n" );
			mDelaymS( 100 );
			i = IsDiskWriteProtect( );  /* 再試一次 */
		}
		if ( i == USB_INT_SUCCESS ) {  /* 可以寫 */
			printf( "... No !\n" );
			LED_WR_ACT( );  /* 寫操作 */
			printf( "Create a File\n" );
			mCopyCodeStringToIRAM( mCmdParam.Create.mPathName, "\\NEWFILE.TXT" );  /* 新文件名,在根目錄下 */
			i = CH375FileCreate( );  /* 新建文件并打開,如果文件已經存在則先刪除后再新建 */
			mStopIfError( i );
			mCmdParam.ByteWrite.mByteBuffer[0] = 'O';
			mCmdParam.ByteWrite.mByteBuffer[1] = 'K';
			mCmdParam.ByteWrite.mByteCount = 2;  /* 寫入數據的字符數,單次讀寫的長度不能超過MAX_BYTE_IO,第二次調用時接著剛才的向后寫 */
			i = CH375ByteWrite( );  /* 向文件寫入數據 */
			mStopIfError( i );
			printf( "Close\n" );
			mCmdParam.Close.mUpdateLen = 0;  /* 不需要自動計算文件長度 */
			i = CH375FileClose( );
			mStopIfError( i );
			LED_WR_INACT( );
			if ( SafeRemoveDisk( ) == USB_INT_SUCCESS ) {  /* 安全移除U盤 */
				printf( "Safe Remove !\n" );
			}
			else {
				printf( "Unsafe Remove !\n" );
			}
		}
		else if ( i == 0xFF ) {  /* 寫保護 */
			printf( "... Yes !\n" );
		}
		else {
			mStopIfError( i );  /* 顯示錯誤代碼 */
		}
		LED_RUN_INACT( );
		printf( "Take out\n" );
		while ( CH375DiskStatus >= DISK_CONNECT ) {  /* 查詢CH375中斷并更新中斷狀態,等待U盤拔出 */
			CH375DiskConnect( );
			mDelaymS( 100 );
		}
		LED_OUT_INACT( );  /* LED滅 */
		mDelaymS( 200 );
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线免费观看| 久久久久久久久久看片| 一区二区三区成人| 成a人片国产精品| 欧美极品aⅴ影院| 国内精品在线播放| 精品免费视频.| 国精品**一区二区三区在线蜜桃| 日韩午夜小视频| 麻豆精品视频在线观看免费| 欧美另类变人与禽xxxxx| 五月天亚洲精品| 欧美精品777| 丝袜亚洲另类欧美综合| 51久久夜色精品国产麻豆| 午夜久久电影网| 这里只有精品免费| 麻豆国产精品官网| 精品av久久707| 国产九九视频一区二区三区| 国产日产欧产精品推荐色| 粉嫩av一区二区三区在线播放| 国产欧美日韩精品在线| 成人一级视频在线观看| 自拍偷拍亚洲欧美日韩| 在线观看欧美日本| 午夜精品久久久久久久蜜桃app| 欧美精选一区二区| 日本免费新一区视频| 精品福利一区二区三区| 国产成人综合精品三级| 国产精品卡一卡二卡三| 日本道在线观看一区二区| 亚洲国产另类av| 日韩女优av电影在线观看| 国产一本一道久久香蕉| 国产精品网曝门| 色综合天天性综合| 亚洲成av人片| 久久综合资源网| 99精品视频一区二区| 亚洲一区二区免费视频| 欧美一区二区三区婷婷月色| 另类小说综合欧美亚洲| 久久尤物电影视频在线观看| 成人激情视频网站| 亚洲一二三四久久| 日韩丝袜情趣美女图片| 风流少妇一区二区| 亚洲女人的天堂| 欧美一区二区三区四区五区| 国产69精品久久久久毛片| 亚洲私人黄色宅男| 9191精品国产综合久久久久久 | 亚洲www啪成人一区二区麻豆| 欧美一区二区精品在线| 国产成人精品一区二区三区网站观看| 亚洲欧洲一区二区三区| 69久久夜色精品国产69蝌蚪网| 国产精品一区二区三区网站| 亚洲欧美日韩小说| 日韩一区二区三区在线| 暴力调教一区二区三区| 日韩精品亚洲一区| 中文字幕第一区综合| 欧美日韩在线综合| 国产精品一线二线三线精华| 一区二区三区四区激情| 日韩精品一区二区三区老鸭窝 | 国产成人99久久亚洲综合精品| 亚洲精品国产高清久久伦理二区| 欧美一区二区私人影院日本| 豆国产96在线|亚洲| 亚洲成人黄色影院| 国产丝袜欧美中文另类| 欧美精品777| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 亚洲同性gay激情无套| 欧美一区二区三区成人| av成人免费在线| 精品制服美女丁香| 曰韩精品一区二区| 国产午夜精品理论片a级大结局 | 91精选在线观看| 成人午夜电影久久影院| 日韩中文字幕亚洲一区二区va在线| 欧美国产日韩精品免费观看| 日韩一级黄色片| 色综合色狠狠天天综合色| 国产精品综合在线视频| 日欧美一区二区| 亚洲乱码中文字幕| 久久综合国产精品| 91精品国产综合久久久蜜臀粉嫩| 91在线云播放| 国产精品一级在线| 日韩福利电影在线观看| 亚洲欧美成人一区二区三区| 欧美激情综合在线| 日韩精品中文字幕在线一区| 在线一区二区三区做爰视频网站| 国产一区二区毛片| 捆绑调教美女网站视频一区| 亚洲高清不卡在线观看| 亚洲欧洲美洲综合色网| 国产亚洲综合色| 欧美mv日韩mv| 欧美一区二区美女| 欧美日韩www| 欧美影视一区在线| 91蜜桃婷婷狠狠久久综合9色| 国产盗摄一区二区三区| 精品一区二区三区免费视频| 偷拍一区二区三区四区| 亚洲成va人在线观看| 亚洲精品福利视频网站| 中文字幕欧美一区| 国产精品美女久久久久久久网站| 国产日本欧美一区二区| 久久综合给合久久狠狠狠97色69| 欧美大片一区二区三区| 欧美一区二区三区免费大片| 欧美日韩久久久久久| 精品视频1区2区3区| 欧美亚洲图片小说| 欧洲人成人精品| 在线观看国产日韩| 在线精品视频小说1| 色国产精品一区在线观看| 91麻豆国产福利精品| 91一区二区在线| 99精品欧美一区| av影院午夜一区| 99视频在线精品| 99国产精品久久久| 91丝袜国产在线播放| 色哟哟一区二区| 色爱区综合激月婷婷| 欧美亚洲国产一区在线观看网站 | 色呦呦一区二区三区| 色婷婷av一区| 在线观看一区二区视频| 欧美三级资源在线| 欧美日韩国产小视频| 7777精品伊人久久久大香线蕉超级流畅| 欧美日韩国产经典色站一区二区三区 | 欧美三区在线视频| 欧美日韩高清一区| 91精品婷婷国产综合久久性色| 7777精品伊人久久久大香线蕉完整版 | 日本一区二区三区久久久久久久久不| 久久夜色精品国产噜噜av| 国产肉丝袜一区二区| 欧美国产视频在线| 亚洲精品视频在线看| 亚洲国产综合人成综合网站| 日韩成人一级片| 久久99精品久久久久久动态图| 国产成人精品在线看| 91视频国产资源| 欧美美女激情18p| 精品动漫一区二区三区在线观看| 国产欧美中文在线| 亚洲欧洲日产国码二区| 香港成人在线视频| 国产真实乱子伦精品视频| www.亚洲精品| 欧美日韩美女一区二区| 精品动漫一区二区三区在线观看| 国产精品久久久久影院亚瑟| 亚洲综合视频在线观看| 日本不卡高清视频| 国产精品996| 欧美综合在线视频| 欧美白人最猛性xxxxx69交| 亚洲国产精品ⅴa在线观看| 亚洲伊人伊色伊影伊综合网| 男女激情视频一区| 成人黄色一级视频| 欧美日本韩国一区二区三区视频| 久久日一线二线三线suv| 国产精品久久久久久久久动漫 | 欧美经典一区二区| 亚洲裸体在线观看| 麻豆成人免费电影| 91一区二区三区在线观看| 91麻豆精品国产91久久久久久| 国产三级欧美三级| 亚洲国产wwwccc36天堂| 国产一二三精品| 欧美三级视频在线| 国产午夜精品久久久久久久| 亚洲国产综合人成综合网站| 国产一区二区网址| 欧美日韩中文国产| 国产偷国产偷精品高清尤物| 亚洲成人激情综合网| 国产成人精品亚洲777人妖| 欧美日韩一区三区| 国产女人18毛片水真多成人如厕|