亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
精品日本一线二线三线不卡| 亚洲欧美日韩人成在线播放| 精品对白一区国产伦| 久久免费电影网| 亚洲免费视频中文字幕| 亚洲丝袜自拍清纯另类| 亚洲久草在线视频| 免费精品99久久国产综合精品| 国产精品自在在线| 色94色欧美sute亚洲13| 欧美在线一二三| 国产色婷婷亚洲99精品小说| 久久一留热品黄| 成人免费小视频| 日本sm残虐另类| 日韩在线卡一卡二| 精品制服美女久久| av电影一区二区| 日韩欧美国产wwwww| 亚洲图片自拍偷拍| av午夜一区麻豆| 欧美r级电影在线观看| 精品福利一二区| 中文字幕在线不卡一区| 一色桃子久久精品亚洲| 国产在线观看免费一区| eeuss影院一区二区三区| 欧美日韩中文字幕一区| 欧美一区二区视频在线观看2020| 国产精品天干天干在线综合| 一区二区三区四区激情| 欧美成人高清电影在线| 99国产精品久久久久久久久久| 国产成人亚洲综合色影视| 日韩视频一区二区三区| 国产亚洲污的网站| 亚洲视频一区二区免费在线观看 | 欧美大白屁股肥臀xxxxxx| 国产精品久久精品日日| 欧美aaa在线| 欧美日韩久久不卡| 久久久蜜桃精品| 国模套图日韩精品一区二区| 91久久精品一区二区三区| 久久久久99精品一区| 亚洲同性gay激情无套| 久久99精品国产.久久久久久| 成人av电影在线| 日本高清免费不卡视频| 国产精品二三区| 成人福利电影精品一区二区在线观看 | 亚洲国产一区在线观看| 色呦呦日韩精品| 欧美成人a∨高清免费观看| 亚洲精品高清在线观看| 国产裸体歌舞团一区二区| 日本久久一区二区| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲成人中文在线| 日本vs亚洲vs韩国一区三区二区| 91社区在线播放| 国产精品二三区| 国产精品一区久久久久| 日韩欧美第一区| 亚洲不卡在线观看| av一区二区三区| 亚洲人成网站色在线观看| 国产精品一线二线三线| 欧美麻豆精品久久久久久| 亚洲国产成人av好男人在线观看| 9l国产精品久久久久麻豆| 国产区在线观看成人精品| 美女视频黄 久久| 久久这里只有精品6| 黄页网站大全一区二区| 欧美电影免费观看高清完整版| 亚洲成人免费电影| 欧美不卡一区二区| 精品卡一卡二卡三卡四在线| 国产午夜精品一区二区三区嫩草 | 久久久综合激的五月天| 国产精品伦一区| 韩国精品主播一区二区在线观看 | 成人黄动漫网站免费app| 欧美一卡二卡在线观看| 亚洲天堂精品在线观看| 色天天综合色天天久久| 亚洲激情在线激情| 日本高清不卡在线观看| 亚洲精品一卡二卡| 成人性色生活片免费看爆迷你毛片| 在线免费不卡视频| 亚洲精品老司机| 99久久久无码国产精品| 国产精品麻豆一区二区| 欧美亚洲综合网| 亚洲精品老司机| 91精品国产综合久久精品| 中文字幕第一区第二区| 成人激情文学综合网| 一个色综合av| 2014亚洲片线观看视频免费| 国产精品伊人色| 精品国产在天天线2019| 一区二区三区在线观看欧美 | 欧美三级视频在线观看| 六月丁香婷婷久久| 国产精品初高中害羞小美女文| 日韩高清一级片| 色88888久久久久久影院野外| 亚洲乱码精品一二三四区日韩在线| 欧美性一区二区| 黑人巨大精品欧美一区| 亚洲一级电影视频| 欧美一级二级在线观看| 国产精品一二三四| 亚洲一区二区在线视频| 欧美日韩一级视频| www.成人网.com| 国产精品一区二区男女羞羞无遮挡| 奇米777欧美一区二区| 亚洲成人av资源| 欧美成人aa大片| 欧美亚男人的天堂| 成人涩涩免费视频| 激情六月婷婷综合| 亚洲精品中文字幕在线观看| 色综合久久久久综合99| 蜜桃视频在线一区| 亚洲国产你懂的| 26uuu国产一区二区三区| 91在线免费看| 伊人开心综合网| 1024亚洲合集| 亚洲丝袜自拍清纯另类| 91麻豆精品国产91久久久更新时间| 99视频在线精品| 国产成人啪免费观看软件| 日韩高清在线观看| 三级久久三级久久久| 亚洲视频狠狠干| 最新热久久免费视频| 亚洲精品一区在线观看| 色综合久久久网| 成人18视频日本| 欧美自拍偷拍午夜视频| 亚洲自拍另类综合| 日韩精品中文字幕在线不卡尤物| 99久久婷婷国产精品综合| 国产一区二区三区观看| 香蕉影视欧美成人| 欧美精品日韩一本| 国产.精品.日韩.另类.中文.在线.播放| 国产女人水真多18毛片18精品视频| 欧美亚洲国产怡红院影院| 欧美系列日韩一区| 调教+趴+乳夹+国产+精品| 亚洲色图欧洲色图| 中文字幕日韩一区二区| 国产精品视频你懂的| 欧美xfplay| 欧美一区二区三区四区在线观看| 91一区在线观看| 麻豆精品视频在线观看视频| 亚洲精品免费在线播放| 亚洲精品一区二区三区影院| 欧美日韩国产三级| 91网站在线播放| 国产传媒久久文化传媒| 国产精品91一区二区| 日韩国产在线观看| 青娱乐精品视频| 久草这里只有精品视频| 美女在线视频一区| 亚洲一区二区三区精品在线| 性久久久久久久久| 麻豆精品国产传媒mv男同| 亚洲精品五月天| 欧美一区二区啪啪| 欧美日韩mp4| 久久亚洲综合色一区二区三区 | 26uuu国产电影一区二区| 91精品国产福利| 欧美不卡一区二区三区| 久久综合中文字幕| 久久人人爽人人爽| 国产精品夫妻自拍| 国产亚洲一本大道中文在线| 欧美国产一区在线| 亚洲国产精品精华液网站| 亚洲激情图片一区| 国产校园另类小说区| 亚洲精品乱码久久久久久黑人| 天天综合日日夜夜精品| 国产成人啪午夜精品网站男同| 国产剧情一区二区| 狠狠久久亚洲欧美| 久久激五月天综合精品| 亚洲gay无套男同| 亚洲成人免费av|