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

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

?? ch375hft.c

?? CH375 USB接口協議芯片ARM平臺下的實例程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
			if ( CH375DiskConnect( ) == ERR_SUCCESS ) break;  /* 有設備連接則返回成功,CH375DiskConnect同時會更新全局變量CH375DiskStatus */
			mDelaymS( 100 );
		}
		LED_OUT_ACT( );  /* LED亮 */
		mDelaymS( 200 );  /* 延時,可選操作,有的USB存儲器需要幾十毫秒的延時 */

/* 檢查U盤是否準備好,有些U盤不需要這一步,但是某些U盤必須要執行這一步才能工作 */
		for ( i = 0; i < 5; 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 ) 有可能前兩個數據相乘后導致溢出, 所以修改成上式
*/

/* 讀取原文件 */
		printf( "Open\n" );
		strcpy( (char *)mCmdParam.Open.mPathName, "\\C51\\CH375HFT.C" );  /* 文件名,該文件在C51子目錄下 */
		i = CH375FileOpen( );  /* 打開文件 */
		if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) {  /* 沒有找到文件 */
/* 列出文件 */
			if ( i == ERR_MISS_DIR ) pCodeStr = (UINT8 *)"\\*";  /* C51子目錄不存在則列出根目錄下的文件 */
			else pCodeStr = (UINT8 *)"\\C51\\CH375*";  /* CH375HFT.C文件不存在則列出\C51子目錄下的以CH375開頭的文件 */
			printf( "List file %s\n", pCodeStr );
			for ( c = 0; c < 254; c ++ ) {  /* 最多搜索前254個文件 */
				strcpy( (char *)mCmdParam.Open.mPathName, (char *)pCodeStr );  /* 搜索文件名,*為通配符,適用于所有文件或者子目錄 */
				i = strlen( (char const *)mCmdParam.Open.mPathName );  /* 計算文件名長度,以處理文件名結束符 */
/* 另外一種枚舉方法是,將此處的c置為0xFF,然后將真正的枚舉序號存放于CH375vFileSize中,從而可以搜索大于254個文件,從0到2147483647個 */
				mCmdParam.Open.mPathName[ i ] = c;  /* 根據字符串長度將結束符替換為搜索的序號,從0到254 */
				i = CH375FileOpen( );  /* 打開文件,如果文件名中含有通配符*,則為搜索文件而不打開 */
				if ( i == ERR_MISS_FILE ) break;  /* 再也搜索不到匹配的文件,已經沒有匹配的文件名 */
				if ( i == ERR_FOUND_NAME ) {  /* 搜索到與通配符相匹配的文件名,文件名及其完整路徑在命令緩沖區中 */
					printf( "  match file %03d#: %s\n", (unsigned int)c, mCmdParam.Open.mPathName );  /* 顯示序號和搜索到的匹配文件名或者子目錄名 */
					continue;  /* 繼續搜索下一個匹配的文件名,下次搜索時序號會加1 */
				}
				else {  /* 出錯 */
					mStopIfError( i );
					break;
				}
			}
			pCodeStr = (UINT8 *)"找不到/C51/CH375HFT.C文件\xd\n";
			for ( i = 0; i != 255; i ++ ) {
				if ( ( FILE_DATA_BUF[i] = *pCodeStr ) == 0 ) break;
				pCodeStr++;
			}
			NewSize = i;  /* 新文件的長度 */
			SecCount = 1;  /* (NewSize+CH375vSectorSize-1)/CH375vSectorSize, 計算文件的扇區數,因為讀寫是以扇區為單位的 */
		}
		else {  /* 找到文件或者出錯 */
			mStopIfError( i );
/*			printf( "Query\n" );
			i = CH375FileQuery( );  查詢當前文件的信息
			mStopIfError( i );*/
			printf( "Read\n" );
			if ( CH375vFileSize > FILE_DATA_BUF_LEN ) {  /* 由于演示板用的62256只有32K字節,其中CH375子程序用512字節,所以只讀取不超過63個扇區,也就是不超過32256字節 */
				SecCount = FILE_DATA_BUF_LEN / CH375vSectorSize;  /* 由于演示板用的62256只有32K字節,其中CH375子程序用512字節,所以只讀取不超過63個扇區,也就是不超過32256字節 */
				NewSize = FILE_DATA_BUF_LEN;  /* 由于RAM有限所以限制長度 */
			}
			else {  /* 如果原文件較小,那么使用原長度 */
				SecCount = ( CH375vFileSize + CH375vSectorSize-1 ) / CH375vSectorSize;  /* 計算文件的扇區數,因為讀寫是以扇區為單位的,先加CH375vSectorSize-1是為了讀出文件尾部不足1個扇區的部分 */
				NewSize = (UINT16)CH375vFileSize;  /* 原文件的長度 */
			}
			printf( "Size=%ld, Len=%d, Sec=%d\n", CH375vFileSize, NewSize, (UINT16)SecCount );
			mCmdParam.Read.mSectorCount = SecCount;  /* 讀取全部數據,如果超過60個扇區則只讀取60個扇區 */
/*			current_buffer = & FILE_DATA_BUF[0];  如果文件讀寫的數據的復制方式為"外部子程序",那么需要設置存放數據的緩沖區的起始地址 */
			CH375vFileSize += CH375vSectorSize-1;  /* 默認情況下,以扇區方式讀取數據時,無法讀出文件尾部不足1個扇區的部分,所以必須臨時加大文件長度以讀取尾部零頭 */
			i = CH375FileRead( );  /* 從文件讀取數據 */
			CH375vFileSize -= CH375vSectorSize-1;  /* 恢復原文件長度 */
			mStopIfError( i );
/*
		如果文件比較大,一次讀不完,可以再調用CH375FileRead繼續讀取,文件指針自動向后移動
		while ( 1 ) {
			c = 32;   每次讀取32個扇區
			mCmdParam.Read.mSectorCount = c;   指定讀取的扇區數
			CH375FileRead();   讀完后文件指針自動后移
			處理數據
			if ( mCmdParam.Read.mSectorCount < c ) break;   實際讀出的扇區數較小則說明文件已經結束
		}

	    如果希望從指定位置開始讀寫,可以移動文件指針
		mCmdParam.Locate.mSectorOffset = 3;  跳過文件的前3個扇區開始讀寫
		i = CH375FileLocate( );
		mCmdParam.Read.mSectorCount = 10;
		CH375FileRead();   直接讀取從文件的第(CH375vSectorSize*3)個字節開始的數據,前3個扇區被跳過

	    如果希望將新數據添加到原文件的尾部,可以移動文件指針
		i = CH375FileOpen( );
		mCmdParam.Locate.mSectorOffset = 0xffffffff;  移到文件的尾部,以扇區為單位,如果原文件是3字節,則從CH375vSectorSize字節開始添加
		i = CH375FileLocate( );
		mCmdParam.Write.mSectorCount = 10;
		CH375FileWrite();   在原文件的后面添加數據

使用CH375FileReadX可以自行定義數據緩沖區的起始地址
		mCmdParam.ReadX.mSectorCount = 2;
		mCmdParam.ReadX.mDataBuffer = 0x2000;  將讀出的數據放到2000H開始的緩沖區中
		CH375FileReadX();   從文件中讀取2個扇區到指定緩沖區

使用CH375FileWriteX可以自行定義數據緩沖區的起始地址
		mCmdParam.WiiteX.mSectorCount = 2;
		mCmdParam.WriteX.mDataBuffer = 0x4600;  將4600H開始的緩沖區中的數據寫入
		CH375FileWriteX();   將指定緩沖區中的數據寫入2個扇區到文件中
*/
			printf( "Close\n" );
			i = CH375FileClose( );  /* 關閉文件 */
			mStopIfError( i );

			i = FILE_DATA_BUF[100];
			FILE_DATA_BUF[100] = 0;  /* 置字符串結束標志,最多顯示100個字符 */
			printf( "Line 1: %s\n", FILE_DATA_BUF );
			FILE_DATA_BUF[100] = i;  /* 恢復原字符 */
			for ( count=0; count < NewSize; count ++ ) {  /* 將文件中的小寫字符轉換為大寫 */
				c = FILE_DATA_BUF[ count ];
				if ( c >= 'a' && c <= 'z' ) FILE_DATA_BUF[ count ] = c - ( 'a' - 'A' );
			}
		}

#ifdef EN_DISK_WRITE  /* 子程序庫支持寫操作 */
/* 產生新文件 */
		printf( "Create\n" );
		strcpy( (char *)mCmdParam.Create.mPathName, "\\NEWFILE.TXT" );  /* 新文件名,在根目錄下 */
		i = CH375FileCreate( );  /* 新建文件并打開,如果文件已經存在則先刪除后再新建 */
		mStopIfError( i );
		printf( "Write\n" );
		mCmdParam.Write.mSectorCount = SecCount;  /* 寫入所有扇區的數據 */
/*		current_buffer = & FILE_DATA_BUF[0];  如果文件讀寫的數據的復制方式為"外部子程序",那么需要設置存放數據的緩沖區的起始地址 */
		i = CH375FileWrite( );  /* 向文件寫入數據 */
		mStopIfError( i );
		printf( "Modify\n" );
		mCmdParam.Modify.mFileAttr = 0xff;  /* 輸入參數: 新的文件屬性,為0FFH則不修改 */
		mCmdParam.Modify.mFileTime = 0xffff;  /* 輸入參數: 新的文件時間,為0FFFFH則不修改,使用新建文件產生的默認時間 */
		mCmdParam.Modify.mFileDate = MAKE_FILE_DATE( 2004, 5, 18 );  /* 輸入參數: 新的文件日期: 2004.05.18 */
		mCmdParam.Modify.mFileSize = NewSize;  /* 輸入參數: 如果原文件較小,那么新的文件長度與原文件一樣長,否則被RAM所限,如果文件長度大于64KB,那么NewSize必須為UINT32 */
		i = CH375FileModify( );  /* 修改當前文件的信息,修改日期和長度 */
		mStopIfError( i );
		printf( "Close\n" );
		mCmdParam.Close.mUpdateLen = 0;  /* 不要自動計算文件長度,如果自動計算,那么該長度總是CH375vSectorSize的倍數 */
		i = CH375FileClose( );
		mStopIfError( i );

/* 刪除某文件 */
/*		printf( "Erase\n" );
		strcpy( (char *)mCmdParam.Create.mPathName, "\\OLD" );  將被刪除的文件名,在根目錄下
		i = CH375FileErase( );  刪除文件并關閉
		if ( i != ERR_SUCCESS ) printf( "Error: %02X\n", (UINT16)i );  顯示錯誤
*/

/* 查詢磁盤信息 */
/*		printf( "Disk\n" );
		i = CH375DiskQuery( );
		mStopIfError( i );
		printf( "Fat=%d, Total=%ld, Free=%ld\n", (UINT16)mCmdParam.Query.mDiskFat, mCmdParam.Query.mTotalSector, mCmdParam.Query.mFreeSector );
*/
#endif
		printf( "Take out\n" );
//		while ( CH375DiskStatus != DISK_DISCONNECT ) xQueryInterrupt( );  /* 查詢CH375中斷并更新中斷狀態,等待U盤拔出 */
		while ( CH375DiskStatus >= DISK_CONNECT ) {  /* 查詢CH375中斷并更新中斷狀態,等待U盤拔出 */
			if ( CH375DiskConnect( ) != ERR_SUCCESS ) break;
			mDelaymS( 100 );
		}
		LED_OUT_INACT( );  /* LED滅 */
		mDelaymS( 200 );
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人免费看| 亚洲欧美日韩一区| 欧美色图12p| 91色在线porny| 91污片在线观看| 91麻豆国产福利在线观看| 92精品国产成人观看免费| 成人性生交大片免费看中文网站 | 国产精品亚洲视频| 韩国毛片一区二区三区| 韩国成人精品a∨在线观看| 国产自产v一区二区三区c| 国产一区二区不卡在线| 国产91精品一区二区麻豆网站| 99免费精品视频| 成人av小说网| 色屁屁一区二区| 欧美日韩一区二区三区在线看| 欧美精品久久99久久在免费线| 欧美福利视频一区| 欧美成人r级一区二区三区| 欧美精品一区二区三区很污很色的 | 精久久久久久久久久久| 国产成人自拍在线| 91久久精品一区二区三| 宅男噜噜噜66一区二区66| 精品处破学生在线二十三| 国产欧美日韩视频在线观看| 亚洲视频每日更新| 免费国产亚洲视频| 成人中文字幕电影| 欧美日韩色综合| 久久伊人蜜桃av一区二区| 国产精品不卡一区| 蜜桃一区二区三区在线观看| 成人午夜免费av| 欧美日韩另类一区| 国产欧美视频一区二区三区| 亚洲一区二区三区视频在线播放 | 一本大道久久a久久精品综合| 欧美日韩午夜影院| 国产嫩草影院久久久久| 婷婷国产在线综合| 成人av在线资源| 欧美一级xxx| 夜夜嗨av一区二区三区网页| 精品一区二区在线观看| 2023国产一二三区日本精品2022| 国产精品毛片a∨一区二区三区| 三级不卡在线观看| 91亚洲国产成人精品一区二三| 日韩精品中文字幕在线一区| 亚洲综合色自拍一区| 粉嫩在线一区二区三区视频| 欧美一区二区免费视频| 亚洲一级二级在线| www.66久久| 久久久久久亚洲综合影院红桃 | 精品国精品国产| 亚洲国产美女搞黄色| 丁香激情综合国产| 久久久久久夜精品精品免费| 日本不卡视频在线观看| 欧美自拍偷拍一区| 亚洲精品美国一| 99热99精品| 亚洲欧美一区二区视频| 成人三级伦理片| 国产日韩精品一区二区浪潮av | 国产成人aaaa| 精品国产乱码久久久久久影片| 丝袜美腿高跟呻吟高潮一区| 欧美在线免费视屏| 亚洲国产另类av| 欧美丝袜丝nylons| 亚洲综合偷拍欧美一区色| 色先锋久久av资源部| 亚洲精品国产成人久久av盗摄| 99久久99久久综合| 亚洲国产综合人成综合网站| 在线观看日韩电影| 亚洲成人动漫在线免费观看| 欧美日韩精品免费| 青青草原综合久久大伊人精品优势 | 国产成人午夜精品影院观看视频| 久久精品男人天堂av| 丁香婷婷深情五月亚洲| 中文字幕一区二区三区在线不卡 | 一区二区三区资源| 欧洲精品一区二区三区在线观看| 亚洲自拍偷拍av| 91精品国产综合久久精品| 日韩精品一区第一页| 精品少妇一区二区三区免费观看 | 26uuu久久天堂性欧美| 韩国精品在线观看| 国产精品美女一区二区三区| 99视频超级精品| 亚洲电影一区二区三区| 欧美一级免费大片| 国产精品99久久久久| 亚洲九九爱视频| 日韩视频免费直播| 国产精品一区二区果冻传媒| 亚洲视频在线观看三级| 欧美午夜精品一区二区三区| 蜜桃久久久久久| 国产精品久久久久久久裸模| 欧美亚洲综合网| 国模冰冰炮一区二区| 亚洲精品国久久99热| 91精品国产乱码久久蜜臀| 国产不卡在线一区| 天堂av在线一区| 国产女人18水真多18精品一级做| 欧美亚洲高清一区| 国产尤物一区二区在线| 一区二区三区**美女毛片| 日韩一区二区三区av| 色综合一个色综合亚洲| 麻豆国产91在线播放| 亚洲码国产岛国毛片在线| 欧美电影免费观看高清完整版在线| 高清不卡在线观看av| 蜜臀av一级做a爰片久久| 捆绑变态av一区二区三区| 国产精品久久久久影院| 日韩欧美的一区二区| 91麻豆视频网站| 国产麻豆视频一区二区| 日韩国产精品久久久久久亚洲| 国产精品嫩草久久久久| 精品国产一区二区亚洲人成毛片| 日本电影亚洲天堂一区| 高清免费成人av| 蜜桃av一区二区| 亚洲自拍偷拍av| 亚洲欧美国产高清| 国产精品麻豆网站| 国产日韩精品一区二区三区在线| 日韩欧美中文字幕精品| 欧美日韩综合在线| 日本精品一区二区三区高清 | 欧美日韩精品一区二区三区| 99re在线视频这里只有精品| 高清视频一区二区| 国产麻豆日韩欧美久久| 国产综合色视频| 美女被吸乳得到大胸91| 婷婷夜色潮精品综合在线| 亚洲一卡二卡三卡四卡五卡| 亚洲精品网站在线观看| 国产精品久久夜| 成人欧美一区二区三区黑人麻豆| 国产女人18水真多18精品一级做| 久久久久国产精品麻豆| 国产日韩欧美一区二区三区乱码 | 日韩欧美国产一二三区| 69久久夜色精品国产69蝌蚪网| 欧美日韩一区二区三区四区五区| 欧美综合视频在线观看| 欧美日韩午夜在线视频| 555www色欧美视频| 日韩一区二区高清| 久久午夜免费电影| 国产三级久久久| 国产精品国产a| 亚洲已满18点击进入久久| 亚洲福中文字幕伊人影院| 偷窥少妇高潮呻吟av久久免费| 日本女人一区二区三区| 精品亚洲aⅴ乱码一区二区三区| 国产一区二区主播在线| 不卡一区二区在线| 91久久精品一区二区三区| 欧美人妖巨大在线| 欧美精品一区二区三区蜜桃| 国产女人水真多18毛片18精品视频| 欧美国产精品专区| 一区二区三区影院| 美女视频黄频大全不卡视频在线播放| 六月丁香综合在线视频| 福利一区福利二区| 欧美无砖专区一中文字| 精品国产髙清在线看国产毛片 | 成人免费观看av| 欧美三级电影一区| 久久亚洲综合色| 亚洲女人****多毛耸耸8| 日本欧美加勒比视频| 成人动漫一区二区三区| 8v天堂国产在线一区二区| 欧美国产激情二区三区| 香蕉加勒比综合久久| 国产精品亚洲第一| 欧美日韩免费在线视频| 欧美韩国日本一区| 美女任你摸久久| 色婷婷精品大视频在线蜜桃视频| 日韩一级高清毛片|