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

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

?? ch375hft.c

?? CH375測試程續
?? C
?? 第 1 頁 / 共 2 頁
字號:
		mStopIfError( i );
		printf( "Current file size is %ld\n", CH375vFileSize );
		mCmdParam.Locate.mSectorOffset = 0xffffffff;  /* 移到文件的尾部,以扇區為單位,所以會忽略文件尾部的零頭數據 */
		i = CH375FileLocate( );  /* 重新回到原文件的尾部,下面如果再寫入數據將覆蓋尾部零頭數據,不過該零頭數據有一份副本保留在緩沖區中,所以請放心 */
		mStopIfError( i );
	}
	else if ( total >= FILE_DATA_BUF_LEN - CH375vSectorSize ) {  /* 緩沖區中的數據快要滿了,所以應該先將緩沖區中的原有數據寫入U盤 */
		mCmdParam.Write.mSectorCount = total / CH375vSectorSize;  /* 將緩沖區中的字節數轉換為扇區數(除以CH375vSectorSize),最后的零頭數據先不管 */
/* 使用CH375FileWriteX()代替CH375FileWrite()可以自行定義數據緩沖區的起始地址,例如
		mCmdParam.WriteX.mDataBuffer = 0x4600;  將4600H開始的緩沖區中的數據寫入
		i = CH375FileWriteX();   將指定緩沖區4600H中的數據寫入到文件中 */
		i = CH375FileWrite( );  /* 以扇區為單位向文件寫入數據,寫入緩沖區中的所有數據,不含最后的零頭 */
		mStopIfError( i );
		memcpy( FILE_DATA_BUF+0, FILE_DATA_BUF+(total & ~ ( CH375vSectorSize - 1 ) ), total & ( CH375vSectorSize - 1 ) );  /* 將剛才未寫入U盤的零頭數據復制到緩沖區的頭部 */
		total &= CH375vSectorSize - 1;  /* 緩沖區中只剩下剛才未寫入U盤的零頭數據 */
/*		mCmdParam.Write.mSectorCount = 0;  如果全局變量CH375LibConfig的位4為0,可以指定寫入0扇區,用于刷新文件的長度
		CH375FileWrite( );  以扇區為單位向文件寫入數據,因為是0扇區寫入,所以只用于更新文件的長度,當階段性寫入數據后,可以用這種辦法更新文件長度 */
	}
}

main( ) {
	UINT8	i, month, date, hour;
	UINT16	year, adc;
	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 ) xQueryInterrupt( );  /* 查詢CH375中斷并更新中斷狀態,等待U盤插入 */
		while ( CH375DiskStatus < DISK_CONNECT ) {  /* 查詢CH375中斷并更新中斷狀態,等待U盤插入 */
			if ( CH375DiskConnect( ) == ERR_SUCCESS ) break;  /* 有設備連接則返回成功,CH375DiskConnect同時會更新全局變量CH375DiskStatus */
			mDelaymS( 100 );
		}
		LED_OUT_ACT( );  /* LED亮 */
		mDelaymS( 200 );  /* 延時,可選操作,有的USB存儲器需要幾十毫秒的延時 */

/* 檢查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 ) 有可能前兩個數據相乘后導致溢出, 所以修改成上式
		LED_RUN_ACT( );  /* 開始操作U盤 */

/* 如果MY_ADC.TXT文件已經存在則添加數據到尾部,如果不存在則新建文件 */
		printf( "Open\n" );
		mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/MY_ADC.TXT" );  /* 文件名,該文件在根目錄下 */
		i = CH375FileOpen( );  /* 打開文件 */
		if ( i == ERR_SUCCESS ) {  /* 文件存在并且已經被打開,移動文件指針到尾部以便添加數據 */
			printf( "File size = %ld\n", CH375vFileSize );  /* V1.5以上子程序庫在成功打開文件后,全局變量CH375vFileSize中是文件當前長度 */
			printf( "Locate tail\n" );
			mCmdParam.Locate.mSectorOffset = 0xffffffff;  /* 移到文件的尾部,CH375子程序庫內部是將文件長度按扇區長度CH375vSectorSize進行取整處理 */
			i = CH375FileLocate( );  /* 以扇區為單位移到文件尾部,如果文件尾部有不足一個扇區的零頭數據則被忽略,如果不做處理那么零頭數據將可能被寫入數據覆蓋 */
			mStopIfError( i );
			total = CH375vFileSize & ( CH375vSectorSize - 1 );  /* 上次保存文件時如果尾部有零頭數據,那么先取得零頭字節數,不滿扇區長度的零碎數據 */
			printf( "Read last tail = %d Bytes\n", total );
			CH375vFileSize += CH375vSectorSize - 1;  /* 人為地將文件長度增加一個扇區減1,以便讀出最后一個扇區中的零頭數據 */
			mCmdParam.Read.mSectorCount = 1;  /* 讀取文件尾部的零頭數據,如果不人為增加文件長度,那么由于文件長度按CH375vSectorSize取整,導致尾部零頭數據無法讀出 */
/* 使用CH375FileReadX()代替CH375FileRead()可以自行定義數據緩沖區的起始地址,例如
			mCmdParam.ReadX.mDataBuffer = 0x2C00;  將讀出的數據放到2C00H開始的緩沖區中
			i = CH375FileReadX();   從文件中讀取扇區到指定緩沖區,起始地址為2C00H */
			i = CH375FileRead( );  /* 從文件讀取尾部零頭數據,如果原尾部沒有零頭數據,那么什么也讀不到,返回時mCmdParam.Read.mSectorCount為實際讀出扇區數 */
			mStopIfError( i );
			CH375vFileSize -= CH375vSectorSize - 1;  /* 恢復真正的文件長度 */
			mCmdParam.Locate.mSectorOffset = 0xffffffff;  /* 移到文件的尾部,以扇區為單位,所以會忽略文件尾部的零頭數據 */
			i = CH375FileLocate( );  /* 重新回到原文件的尾部,下面如果寫入數據將覆蓋原尾部零頭數據,不過原零頭數據剛才已經被讀入內存,所以請放心 */
			mStopIfError( i );
		}
		else if ( i == ERR_MISS_FILE ) {  /* 沒有找到文件,必須新建文件 */
			LED_WR_ACT( );  /* 寫操作 */
			printf( "Create\n" );
//			mCopyCodeStringToIRAM( mCmdParam.Create.mPathName, "/MY_ADC.TXT" );  /* 文件名,該文件在根目錄下,剛才已經提供給CH375FileOpen */
			i = CH375FileCreate( );  /* 新建文件并打開,如果文件已經存在則先刪除后再新建 */
			mStopIfError( i );
			total = 0;  /* 此前沒有零頭數據 */
		}
		else mStopIfError( i );  /* 打開文件時出錯 */
		LED_WR_ACT( );  /* 寫操作 */
		printf( "Write begin\n" );
		total += sprintf( FILE_DATA_BUF + total, "在本次添加數據之前,該文件已有數據的長度是 %ld 字節\xd\xa", CH375vFileSize );  /* 將新數據添加到緩沖區的尾部,累計緩沖區內的數據長度 */
		mFlushBufferToDisk( 0 );  /* 自動刷新緩沖區,檢查緩沖區是否已滿,滿則寫盤 */
		printf( "Write ADC data\n" );
		TR0=1;  /* 用定時器0的計數值代替ADC數據 */
		for ( month = 1; month != 12; month ++ ) {  /* 因為測試板上沒有實時時鐘芯片,所以用循環方式模擬月份 */
			for ( date = 1; date != 30; date ++ ) {  /* 因為測試板上沒有實時時鐘芯片,所以用循環方式模擬日期 */
				year = 2004;  /* 假定為2004年 */
				hour = TL1 & 0x1F;  /* 因為測試板上沒有實時時鐘芯片,所以用定時器1的計數代替進行演示 */
/*				adc = get_adc_data( ); */
				adc = ( (UINT16)TH0 << 8 ) | TL0;  /* 因為測試板上沒有ADC,所以用定時器0的計數代替ADC數據演示 */
				total += sprintf( FILE_DATA_BUF + total, "Year=%04d, Month=%02d, Date=%02d, Hour=%02d, ADC_data=%u\xd\xa", year, (UINT16)month, (UINT16)date, (UINT16)hour, adc );  /* 將二制制數據格式為一行字符串 */
				if ( month == 6 && ( date & 0x0F ) == 0 ) mFlushBufferToDisk( 1 );  /* 強制刷新緩沖區,定期強制刷新緩沖區,這樣在突然斷電后可以減少數據丟失 */
				else mFlushBufferToDisk( 0 );  /* 自動刷新緩沖區,檢查緩沖區是否已滿,滿則寫盤 */
				printf( "Current total is %d\n", total );  /* 用于監控檢查 */
			}
		}
		printf( "Write end\n" );
		total += sprintf( FILE_DATA_BUF + total, " ********************************* " );  /* 將新數據添加到緩沖區的尾部,累計緩沖區內的數據長度 */
		total += sprintf( FILE_DATA_BUF + total, "這次的ADC數據到此結束,程序即將退出\xd\xa" );  /* 將新數據添加到緩沖區的尾部,累計緩沖區內的數據長度 */
		mFlushBufferToDisk( 1 );  /* 強制刷新緩沖區,因為系統要退出了,所以必須強制刷新 */
		printf( "Close\n" );
		mCmdParam.Close.mUpdateLen = 0;  /* 因為強制刷新緩沖區時已經更新了文件長度,所以這里不需要自動更新文件長度 */
		i = CH375FileClose( );  /* 關閉文件 */
		mStopIfError( i );
		LED_WR_INACT( );
		LED_RUN_INACT( );
		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一区二区三区免费野_久草精品视频
欧美日韩国产在线观看| www.亚洲免费av| 久久国产生活片100| 精品在线免费视频| av影院午夜一区| 在线观看欧美黄色| 日韩久久久久久| 欧美激情一区二区三区蜜桃视频 | 亚洲精品你懂的| 亚洲午夜av在线| 国产成人av电影在线播放| 一本大道久久a久久精品综合| 欧美精品一二三四| 欧美激情一区二区三区四区| 亚洲国产婷婷综合在线精品| 久久狠狠亚洲综合| 欧美日韩国产在线播放网站| 欧美极品少妇xxxxⅹ高跟鞋 | 欧美肥胖老妇做爰| 国产欧美精品一区二区色综合| 亚洲一区二区av在线| 国产不卡视频在线观看| 日韩一区二区三区电影| 一区二区三区视频在线看| 国产91富婆露脸刺激对白| 欧美日韩高清一区| 亚洲韩国精品一区| 97精品国产97久久久久久久久久久久| 精品久久人人做人人爱| 日本视频在线一区| 欧美日韩中文国产| 亚洲一区二区三区中文字幕在线| 国产.欧美.日韩| 国产欧美精品国产国产专区| 韩国v欧美v亚洲v日本v| 日韩欧美在线123| 免费在线一区观看| 欧美一级生活片| 久久 天天综合| 国产亚洲自拍一区| 99精品欧美一区| 亚洲精品国产无天堂网2021| 91久久线看在观草草青青| 亚洲午夜久久久| 欧美一区二区精品| 激情久久五月天| 中文子幕无线码一区tr| 色综合色狠狠天天综合色| 亚洲妇熟xx妇色黄| 精品福利av导航| 91在线国产福利| 五月激情综合色| 国产片一区二区| 欧美老肥妇做.爰bbww| 国产精品99久久久| 夜夜嗨av一区二区三区中文字幕| 欧美日韩视频在线第一区| 国产在线精品一区二区夜色| 中文字幕中文字幕一区| 欧美日韩黄视频| 成av人片一区二区| 久久精品国产网站| 亚洲国产精品一区二区尤物区| 26uuu国产在线精品一区二区| 91在线观看免费视频| 久久国产视频网| 日韩国产精品久久| 亚洲美女区一区| 亚洲欧洲国产日韩| 国产偷v国产偷v亚洲高清| 日韩欧美亚洲国产另类| 在线观看日韩av先锋影音电影院| 粉嫩一区二区三区性色av| 日本不卡一二三区黄网| 亚洲国产精品麻豆| 亚洲国产精品久久不卡毛片| 亚洲美女少妇撒尿| 亚洲精品国产一区二区精华液| 中文字幕一区免费在线观看| 久久美女高清视频| 国产欧美日韩另类视频免费观看| 欧美一级欧美一级在线播放| 欧美撒尿777hd撒尿| 色婷婷综合五月| 在线免费观看日本欧美| 91一区二区三区在线观看| 国产一区二区在线免费观看| 免费不卡在线观看| 国产一区二区三区免费看 | 欧美日韩一区二区三区视频| 欧美在线一二三| 欧美日韩夫妻久久| 精品国产伦一区二区三区观看体验| 欧美肥胖老妇做爰| 久久久99久久| 亚洲视频每日更新| 蜜臀久久99精品久久久画质超高清| 日韩 欧美一区二区三区| 久久精品国产成人一区二区三区| 精品一区二区三区欧美| 成人性色生活片免费看爆迷你毛片| 国产不卡免费视频| 欧美日韩久久久| 国产亚洲成av人在线观看导航| 亚洲美女屁股眼交3| 亚洲精品一卡二卡| 国产成人自拍网| 狠狠狠色丁香婷婷综合久久五月| 久久精品久久精品| 欧美日韩色综合| 亚洲欧美日本韩国| 成人激情开心网| 久久婷婷成人综合色| 午夜成人免费电影| 精品sm捆绑视频| 性久久久久久久久久久久| 91在线视频在线| 亚洲人成伊人成综合网小说| 处破女av一区二区| 久久久综合网站| 成人国产一区二区三区精品| 精品福利视频一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 色琪琪一区二区三区亚洲区| 中文字幕中文乱码欧美一区二区| 国产黄人亚洲片| 欧美v国产在线一区二区三区| 免费亚洲电影在线| 日韩一区二区三区免费看| 免费在线一区观看| 精品国产亚洲一区二区三区在线观看| 日本aⅴ免费视频一区二区三区 | 亚洲成人av在线电影| 欧美自拍偷拍午夜视频| 午夜影院久久久| 精品嫩草影院久久| 91一区一区三区| 日韩av高清在线观看| 日韩欧美第一区| 91小宝寻花一区二区三区| 午夜欧美电影在线观看| 国产亚洲精品精华液| 精品乱人伦一区二区三区| 色综合天天狠狠| 免费一级片91| 亚洲一区二区三区四区在线 | 国内精品第一页| 欧美极品少妇xxxxⅹ高跟鞋 | 亚洲成人在线免费| www国产成人| 欧美日产国产精品| 色悠悠亚洲一区二区| 国内久久精品视频| 日韩有码一区二区三区| 欧美激情在线免费观看| 欧美日韩黄色一区二区| 成人av网站在线观看免费| 丝袜a∨在线一区二区三区不卡| 欧美极品美女视频| 欧美大片免费久久精品三p| 欧美三级电影一区| 色婷婷激情一区二区三区| 成人视屏免费看| 国产一区美女在线| 国内成人精品2018免费看| 免费在线欧美视频| 久久草av在线| 男女男精品网站| 久久99久久精品| 日韩av午夜在线观看| 日韩高清国产一区在线| 日韩高清在线一区| 久久99久久久久久久久久久| 老鸭窝一区二区久久精品| 视频一区在线播放| 老司机午夜精品| 国产成人欧美日韩在线电影| 粉嫩欧美一区二区三区高清影视| 粉嫩高潮美女一区二区三区| 91丨porny丨户外露出| 制服丝袜亚洲网站| www欧美成人18+| 亚洲精品视频观看| 日本va欧美va精品发布| 国产精品一区二区免费不卡| 97se亚洲国产综合自在线观| 色婷婷久久综合| 日韩欧美二区三区| 国产精品久久综合| 久久成人免费日本黄色| 91在线丨porny丨国产| 日韩欧美的一区二区| 成人欧美一区二区三区黑人麻豆| 亚洲国产精品久久人人爱| 国产91精品入口| 欧美日韩国产综合一区二区| 国产精品久久久久永久免费观看| 五月婷婷激情综合网| 成人国产精品免费观看| 色综合激情久久|