亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
男女视频一区二区| 国产精品中文欧美| 精品一二三四区| 国产欧美视频一区二区| 国产欧美一区二区精品秋霞影院| 精品视频1区2区| 亚洲高清在线精品| 欧美军同video69gay| 青青国产91久久久久久 | 美女视频黄 久久| 日韩欧美久久一区| 丰满岳乱妇一区二区三区| 亚洲国产成人自拍| 欧日韩精品视频| 久久99国产精品麻豆| 国产欧美日韩综合精品一区二区| 91丨九色丨黑人外教| 亚洲五月六月丁香激情| 日韩精品一区二区三区视频播放| 国产精品一线二线三线| 日韩码欧中文字| 欧美精品tushy高清| 国产精品99久久久久久宅男| 国产sm精品调教视频网站| 国产精品无码永久免费888| 日本电影欧美片| 男女男精品网站| 国产精品久久久久久久午夜片| 在线亚洲一区观看| 精品午夜久久福利影院| 亚洲视频香蕉人妖| 欧美变态tickle挠乳网站| 91美女在线观看| 国产麻豆91精品| 午夜精品一区在线观看| 中文子幕无线码一区tr| 91麻豆精品国产91久久久久久| 丁香六月综合激情| 秋霞av亚洲一区二区三| 亚洲黄一区二区三区| 久久一区二区三区四区| 欧美日韩一区高清| 成人a免费在线看| 激情成人午夜视频| 亚洲国产综合在线| 中文字幕一区二区三区不卡| 欧美精品一区在线观看| 欧美日韩精品免费观看视频| av欧美精品.com| 国产酒店精品激情| 日本午夜一本久久久综合| 亚洲精品五月天| 国产欧美日韩久久| 欧美xxxxxxxx| 7777精品伊人久久久大香线蕉经典版下载 | 2021久久国产精品不只是精品| 色就色 综合激情| 成人高清免费观看| 久久精品国产一区二区三区免费看| 一二三区精品视频| 国产精品久久毛片av大全日韩| 欧美电影免费观看高清完整版在| 欧美羞羞免费网站| 在线视频综合导航| 色婷婷精品久久二区二区蜜臀av | 欧美日韩精品一区二区| 91视视频在线直接观看在线看网页在线看| 久久99久久99小草精品免视看| 亚洲h在线观看| 亚洲电影一级片| 亚洲与欧洲av电影| 一个色在线综合| 色老汉一区二区三区| 不卡在线观看av| 成人黄色在线看| 成人毛片老司机大片| 高清成人在线观看| av中文一区二区三区| 国产成人免费在线| 成人天堂资源www在线| 国产成人在线网站| 成人免费精品视频| aa级大片欧美| 一本一本久久a久久精品综合麻豆| av中文字幕不卡| 欧美影院一区二区三区| 欧美日韩一级片在线观看| 欧美午夜片在线观看| 精品视频一区 二区 三区| 欧美男女性生活在线直播观看| 欧美剧在线免费观看网站 | 亚洲免费观看在线视频| 亚洲午夜羞羞片| 日韩福利视频网| 韩国av一区二区三区在线观看| 国模娜娜一区二区三区| 国产一区二区三区不卡在线观看 | 天天av天天翘天天综合网色鬼国产 | 亚洲高清免费在线| 日韩精品91亚洲二区在线观看| 日韩高清不卡一区二区| 国产麻豆午夜三级精品| 成人app网站| 欧美日韩国产高清一区二区| 精品国产乱码久久久久久图片| 国产欧美va欧美不卡在线| 亚洲日本护士毛茸茸| 日韩精品亚洲一区二区三区免费| 国产自产视频一区二区三区 | 91蜜桃网址入口| 欧美二区三区的天堂| 久久久亚洲高清| 亚洲精品成人在线| 久久超碰97人人做人人爱| 不卡av电影在线播放| 欧美日韩大陆在线| 国产欧美综合色| 亚洲图片欧美色图| 国产福利精品一区| 欧美日韩一级二级三级| 国产日韩欧美高清在线| 丝袜国产日韩另类美女| av一区二区三区黑人| 91精品福利在线一区二区三区| 欧美国产1区2区| 首页亚洲欧美制服丝腿| www.在线欧美| 日韩三级中文字幕| 亚洲精品伦理在线| 国产精品小仙女| 91精品国产综合久久久久久久久久| 中文字幕一区二区在线观看 | 国产精品中文欧美| 91精品啪在线观看国产60岁| 国产精品成人在线观看| 久久av中文字幕片| 欧美日韩国产片| 亚洲欧美偷拍卡通变态| 欧美一区二区视频免费观看| 国产精品乱码人人做人人爱| 免费高清视频精品| 欧美亚洲免费在线一区| 国产精品久线观看视频| 国产在线精品一区在线观看麻豆| 欧美日韩视频不卡| 亚洲视频在线一区| 国产激情一区二区三区四区| 91麻豆精品国产91久久久久久久久| 中文字幕综合网| 国产 日韩 欧美大片| 欧美变态tickle挠乳网站| 午夜精品爽啪视频| 在线亚洲欧美专区二区| 亚洲色图欧洲色图| 成人ar影院免费观看视频| 国产亚洲婷婷免费| 韩国女主播一区二区三区| 欧美一区二区三区啪啪| 亚洲欧美偷拍卡通变态| 99久久综合国产精品| 国产精品久久久久久久久久免费看| 欧美bbbbb| 91精品国产综合久久久久| 天天综合色天天综合| 欧美在线观看视频一区二区三区| 亚洲欧洲日韩综合一区二区| 成人av免费在线观看| 国产精品毛片久久久久久| 99这里都是精品| 亚洲女爱视频在线| 色菇凉天天综合网| 一区二区三区日本| 欧美在线一区二区三区| 天堂一区二区在线| 日韩亚洲欧美中文三级| 国精产品一区一区三区mba桃花| 日韩精品久久理论片| 日韩一级精品视频在线观看| 久久99这里只有精品| 精品国产凹凸成av人网站| 国产黄人亚洲片| 国产精品美女www爽爽爽| 91麻豆精品秘密| 亚洲午夜久久久| 日韩欧美国产麻豆| 国产精品白丝av| 亚洲欧洲中文日韩久久av乱码| 欧美日韩一区成人| 免费视频最近日韩| 久久久久9999亚洲精品| 不卡的电视剧免费网站有什么| 亚洲精品午夜久久久| 日韩一区二区三区三四区视频在线观看 | 麻豆精品在线播放| 久久久国产一区二区三区四区小说| 成人av网站在线观看免费| 亚洲综合丝袜美腿| 精品福利视频一区二区三区| 波多野结衣中文字幕一区| 亚洲小少妇裸体bbw|