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

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

?? ch374hfm.h

?? CH374 USB-HOST文件系統單片機子程序庫
?? H
?? 第 1 頁 / 共 4 頁
字號:
#endif
#ifndef NO_DEFAULT_CH374_RESET
extern void		CH374Reset( void );			/* 復位CH374 */
#endif
extern void xQueryInterrupt( void );		/* 外部定義的被CH374程序庫調用的子程序,查詢CH374中斷 */
#ifdef EN_DISK_WRITE
extern void xDelayAfterWrite( void );		/* 外部定義的被CH374程序庫調用的子程序,寫操作后延時 */
#endif
extern void xFileNameEnumer( void );		/* 外部定義的被CH374程序庫調用的子程序,文件名枚舉回調子程序 */
extern UINT8 CH374LibInit( void );			/* 初始化CH374程序庫和CH374芯片,操作成功返回0 */

#else

UINT8	CH374_READ_REGISTER( UINT8 mAddr );					/* 外部定義的被CH374程序庫調用的子程序,從指定寄存器讀取數據 */
void	CH374_WRITE_REGISTER( UINT8 mAddr, UINT8 mData );	/* 外部定義的被CH374程序庫調用的子程序,向指定寄存器寫入數據 */
void	CH374_READ_BLOCK( UINT8 mAddr, UINT8 mLen, PUINT8 mBuf );	/* 外部定義的被CH374程序庫調用的子程序,從指定起始地址讀出數據塊 */
void	CH374_WRITE_BLOCK( UINT8 mAddr, UINT8 mLen, PUINT8 mBuf );	/* 外部定義的被CH374程序庫調用的子程序,向指定起始地址寫入數據塊 */
PUINT8	CH374_READ_BLOCK64( UINT8 mAddr, PUINT8 mBuf );	/* 外部定義的被CH374程序庫調用的子程序,從雙緩沖區讀出64字節的數據塊,返回當前地址 */
#ifdef EN_DISK_WRITE
PUINT8	CH374_WRITE_BLOCK64( UINT8 mAddr, PUINT8 mBuf );	/* 外部定義的被CH374程序庫調用的子程序,向雙緩沖區寫入64字節的數據塊,返回當前地址 */
#endif
void	CH374_WRITE_BLOCK_C( UINT8 mLen, PUINT8C mBuf );	/* 外部定義的被CH374程序庫調用的子程序,向RAM_HOST_TRAN寫入常量型數據塊 */

CMD_PARAM_I mCmdParam;					/* 命令參數 */
BULK_ONLY_CMD_X mBOC;					/* BO協議的命令包 */
#if DISK_BASE_BUF_LEN
#pragma SAVE
#pragma PACK(4)
#ifdef DISK_BASE_BUF_ADDR
UINT8  DISK_BASE_BUF[ DISK_BASE_BUF_LEN ] _at_ DISK_BASE_BUF_ADDR;	/* 外部RAM的磁盤數據緩沖區,緩沖區長度為一個扇區的長度,起始地址必須為8字節邊界地址 */
#else
UINT8  DISK_BASE_BUF[ DISK_BASE_BUF_LEN ];	/* 外部RAM的磁盤數據緩沖區,緩沖區長度為一個扇區的長度,起始地址必須為8字節邊界地址 */
#endif
#pragma RESTORE
#endif
#ifdef FILE_DATA_BUF_LEN
#pragma SAVE
#pragma PACK(4)
#ifdef FILE_DATA_BUF_ADDR
UINT8  FILE_DATA_BUF[ FILE_DATA_BUF_LEN ] _at_ FILE_DATA_BUF_ADDR;	/* 外部RAM的文件數據緩沖區,緩沖區長度不小于一次讀寫的數據長度,起始地址必須為8字節邊界地址 */
#else
UINT8  FILE_DATA_BUF[ FILE_DATA_BUF_LEN ];	/* 外部RAM的文件數據緩沖區,緩沖區長度不小于一次讀寫的數據長度,起始地址必須為8字節邊界地址 */
#endif
#pragma RESTORE
UINT8	CH374FileRead( void )		/* 從當前文件讀取數據 */
{
	mCmdParam.ReadX.mDataBuffer = &FILE_DATA_BUF[0];  /* 指向文件數據緩沖區 */
	return( CH374FileReadX( ) );
}
#ifdef EN_DISK_WRITE
UINT8	CH374FileWrite( void )		/* 向當前文件寫入數據 */
{
	mCmdParam.WriteX.mDataBuffer = &FILE_DATA_BUF[0];  /* 指向文件數據緩沖區 */
	return( CH374FileWriteX( ) );
}
#endif
#endif

/* 以下程序可以根據需要修改 */

#ifndef NO_DEFAULT_CH374_F_ENUM			/* 在應用程序中定義NO_DEFAULT_CH374_F_ENUM可以禁止默認的枚舉文件程序,然后用自行編寫的程序代替它 */
UINT8	CH374FileEnumer( void )			/* 枚舉文件 */
{
	UINT8	status;
	status = CH374FileOpen( );
	if ( status == ERR_FOUND_NAME ) status = ERR_SUCCESS;  /* 操作成功 */
	return( status );
}
#endif

#ifndef NO_DEFAULT_CH374_F_QUERY		/* 在應用程序中定義NO_DEFAULT_CH374_F_QUERY可以禁止默認的查詢當前文件的信息程序,然后用自行編寫的程序代替它 */
UINT8	CH374FileQuery( void )			/* 查詢當前文件的信息 */
{
	PUINT8	buf;
	UINT8	count;
	buf = (PUINT8)( & mCmdParam.Modify.mFileSize );
	for ( count = sizeof( mCmdParam.Modify ); count != 0; count -- ) {
		*buf = 0xFF;  /* 輸入參數全部無效,僅查詢不修改 */
		buf ++;
	}
	return( CH374FileModify( ) );
}
#endif

#ifndef NO_DEFAULT_CH374_RESET			/* 在應用程序中定義NO_DEFAULT_CH374_RESET可以禁止默認的CH374復位程序,然后用自行編寫的程序代替它 */
void	CH374Reset( void )				/* 復位CH374 */
{
	CH374_WRITE_REGISTER( REG_SYS_CTRL, CH374_READ_REGISTER( REG_SYS_CTRL ) | BIT_CTRL_RESET_NOW );  /* 芯片軟件復位控制 */
	CH374_WRITE_REGISTER( REG_SYS_CTRL, CH374_READ_REGISTER( REG_SYS_CTRL ) & (UINT8)( ~ BIT_CTRL_RESET_NOW ) );  /* 結束復位 */
	CH374DelaymS( 10 );  /* 延時10毫秒 */
}
#endif

#ifndef NO_DEFAULT_CH374_INT			/* 在應用程序中定義NO_DEFAULT_CH374_INT可以禁止默認的中斷處理程序,然后用自行編寫的程序代替它 */
#if LIB_CFG_INT_EN == 0					/* CH374的INT#引腳連接方式為"查詢方式" */
void xQueryInterrupt( void )			/* 查詢CH374中斷 */
{
#ifdef CH374_INT_WIRE					/* 連接了CH374的中斷引腳 */
	while ( CH374_INT_WIRE );  /* 如果CH374的中斷引腳輸出高電平則等待 */
#else									/* 未連接CH374的中斷引腳 */
	while ( ( CH374_READ_REGISTER( REG_INTER_FLAG ) & ( BIT_IF_DEV_DETECT | BIT_IF_TRANSFER ) ) == 0 );  /* 查詢中斷標志寄存器 */
#endif
}
#else									/* LIB_CFG_INT_EN != 0, CH374的INT#引腳連接方式為"中斷方式" */
void xQueryInterrupt( void )			/* 查詢中斷狀態,等待硬件中斷 */
{
	while ( CH374IntStatus == 0 );  /* 子程序庫調用該子程序之前CH374IntStatus=0,硬件中斷后,由中斷服務程序置為非0的實際中斷狀態后返回 */
}
void	CH374Interrupt( void )	__irq	/* CH374中斷服務程序,使用寄存器組1,由CH374的INT#的低電平或者下降沿觸發單片機中斷 */
{
	CH374IntStatus = 1;  /* 已接收到CH374中斷則置標志 */
#ifdef CLEAR_INT_MARK
	CLEAR_INT_MARK( );  /* 某些單片機需要由軟件清除中斷標志 */
#endif
}
#endif
#endif

#ifdef EN_DISK_WRITE
#ifndef NO_DEFAULT_DELAY_WRITE			/* 在應用程序中定義NO_DEFAULT_DELAY_WRITE可以禁止默認的寫操作后延時程序,然后用自行編寫的程序代替它 */
void xDelayAfterWrite( void )			/* 寫操作后延時 */
{
#if LIB_CFG_NO_DLY == 0					/* 寫后延時 */
	UINT32	count;
	for ( count = 2600; count != 0; count -- );  /* 延時200uS左右,4x20nS@50MHz */
#endif
}
#endif
#endif

#ifndef NO_DEFAULT_FILE_ENUMER			/* 在應用程序中定義NO_DEFAULT_FILE_ENUMER可以禁止默認的文件名枚舉回調程序,然后用自行編寫的程序代替它 */
void xFileNameEnumer( void )			/* 文件名枚舉回調子程序 */
{
/* 如果指定枚舉序號CH374vFileSize為0xFFFFFFFF后調用FileOpen,那么每搜索到一個文件FileOpen都會調用本回調程序,
   回調程序xFileNameEnumer返回后,FileOpen遞減CH374vFileSize并繼續枚舉直到搜索不到文件或者目錄。建議做法是,
   在調用FileOpen之前定義一個全局變量為0,當FileOpen回調本程序后,本程序由CH374vFdtOffset得到結構FAT_DIR_INFO,
   分析結構中的DIR_Attr以及DIR_Name判斷是否為所需文件名或者目錄名,記錄相關信息,并將全局變量計數增量,
   當FileOpen返回后,判斷返回值如果是ERR_MISS_FILE或ERR_FOUND_NAME都視為操作成功,全局變量為搜索到的有效文件數。
   如果在本回調程序xFileNameEnumer中將CH374vFileSize置為1,那么可以通知FileOpen提前結束搜索。以下是回調程序例子 */
#if 0
#ifdef FILE_DATA_BUF_LEN
	UINT8			i;
	UINT16			FileCount;
	P_FAT_DIR_INFO	pFileDir;
	PUINT8			NameBuf;
	pFileDir = (P_FAT_DIR_INFO)( pDISK_BASE_BUF + CH374vFdtOffset );  /* 當前FDT的起始地址 */
	FileCount = (UINT16)( 0xFFFFFFFF - CH374vFileSize );  /* 當前文件名的枚舉序號,CH374vFileSize初值是0xFFFFFFFF,找到文件名后遞減 */
	if ( FileCount < FILE_DATA_BUF_LEN / 12 ) {  /* 檢查緩沖區是否足夠存放,假定每個文件名需占用12個字節存放 */
		NameBuf = & FILE_DATA_BUF[ FileCount * 12 ];  /* 計算保存當前文件名的緩沖區地址 */
		for ( i = 0; i < 11; i ++ ) NameBuf[ i ] = pFileDir -> DIR_Name[ i ];  /* 復制文件名,長度為11個字符,未處理空格 */
		if ( pFileDir -> DIR_Attr & ATTR_DIRECTORY ) NameBuf[ i ] = 1;  /* 判斷是目錄名 */
		NameBuf[ i ] = 0;  /* 文件名結束符 */
	}
#endif
#endif
}
#endif

#ifdef EXT_SEC_INTERFACE
UINT8 xDiskSectorAccess( PUINT32 mLba, UINT8 mMode )	/* 該子程序由CH374的子程序庫調用,用于以扇區為單位存取磁盤 */
{
#if 0
	UINT8	SectCnt;
	UINT8	OpCmd;
	UINT32	StartLba;
	PUINT8	DataBuf;
	StartLba = *mLba;  /* 將讀寫的起始扇區號 */
	switch ( mMode ) {
		case 0:  /* 讀一個扇區到pDISK_BASE_BUF */
			SectCnt = 1;
			DataBuf = pDISK_BASE_BUF;
			OpCmd = CMD_READ_SECTOR;
/* 如果操作失敗必須調用CH374DirtyBuffer( ) */
			break;
		case 1:  /* 從pDISK_BASE_BUF寫一個扇區 */
			SectCnt = 1;
			DataBuf = pDISK_BASE_BUF;
			OpCmd = CMD_WRITE_SECTOR;
/* 如果操作失敗必須調用CH374DirtyBuffer( ) */
			break;
		case 2:  /* 讀mCmdParam.ReadX.mLbaCount個扇區到mCmdParam.ReadX.mDataBuffer */
			SectCnt = mCmdParam.ReadX.mLbaCount;
			DataBuf = mCmdParam.ReadX.mDataBuffer;
			OpCmd = CMD_READ_SECTOR;
/* 必須更新mCmdParam.ReadX.mDataBuffer(累計緩沖區地址)和CH374vCurrentOffset(累計文件指針)和mCmdParam.ReadX.mSectorCount(累計扇區數) */
			break;
		case 3:  /* 從mCmdParam.WriteX.mDataBuffer寫mCmdParam.WriteX.mLbaCount個扇區 */
			SectCnt = mCmdParam.WriteX.mLbaCount;
			DataBuf = mCmdParam.WriteX.mDataBuffer;
			OpCmd = CMD_WRITE_SECTOR;
/* 必須更新mCmdParam.WriteX.mDataBuffer(累計緩沖區地址)和CH374vCurrentOffset(累計文件指針)和mCmdParam.WriteX.mSectorCount(累計扇區數) */
			break;
		default:
			return( ERR_CH374_ERROR );  /* 未知操作 */
	}
/* 以扇區為單位進行讀寫操作,起始扇區號為StartLba,扇區數為SectCnt,緩沖區為DataBuf */
#else
	mLba++;
	mMode++;
#endif
	return( ERR_SUCCESS );
}
#endif

UINT8	CH374LibInit( void )  /* 初始化CH374程序庫和CH374芯片,操作成功返回0 */
{
	if ( CH374GetVer( ) < CH374_LIB_VER ) return( 0xFF );  /* 獲取當前子程序庫的版本號,版本太低則返回錯誤 */
#if DISK_BASE_BUF_LEN
	pDISK_BASE_BUF = & DISK_BASE_BUF[0];  /* 指向外部RAM的磁盤數據緩沖區 */
#endif
	return( CH374Init( ) );  /* 初始化CH374 */
}

#endif

#ifdef __cplusplus
}
#endif

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
7777精品伊人久久久大香线蕉超级流畅 | 欧美一区二区三区免费大片| 国产精品毛片a∨一区二区三区| 波多野结衣中文一区| 免费观看久久久4p| 久久国产尿小便嘘嘘| 亚洲国产一区视频| 亚洲曰韩产成在线| 国产精品久久影院| 欧美一级免费观看| 欧美日韩久久一区二区| 国产成人高清视频| 国产v综合v亚洲欧| 高清在线不卡av| 国产精品一品视频| 成人久久18免费网站麻豆| 国产高清在线精品| 成人黄色在线看| 在线亚洲一区观看| 国产精华液一区二区三区| 国产精品1024久久| 97久久超碰精品国产| 美女mm1313爽爽久久久蜜臀| 国产一区二区三区免费| 国产欧美一区二区精品性色超碰 | 欧美一区二区三区免费大片| 天天av天天翘天天综合网色鬼国产| 欧美三级日韩在线| 日韩国产精品久久久| 精品少妇一区二区三区免费观看 | 久久麻豆一区二区| 久久综合久久99| 亚洲欧美偷拍另类a∨色屁股| 亚洲精品欧美综合四区| 日本成人在线一区| 成人午夜碰碰视频| 制服丝袜成人动漫| 精品免费国产一区二区三区四区| 国产视频在线观看一区二区三区| 亚洲精品水蜜桃| 日韩电影在线观看电影| 国产 日韩 欧美大片| 欧美一区二区免费视频| 一区二区三区影院| 成人美女视频在线看| 欧美日韩免费高清一区色橹橹| 精品99久久久久久| 首页综合国产亚洲丝袜| jizz一区二区| 国产精品天干天干在观线| 另类欧美日韩国产在线| 7777精品伊人久久久大香线蕉的| 精品国产一区二区三区久久影院 | 中文字幕一区二区三区蜜月| 日韩三级电影网址| 中文字幕在线不卡一区二区三区| 美女国产一区二区| 国产亚洲欧美日韩俺去了| 日韩三级精品电影久久久| 尤物在线观看一区| 久久久久久一二三区| 蜜桃av一区二区在线观看| 91精品国产福利| 日韩中文字幕亚洲一区二区va在线| 欧美日韩视频在线第一区 | 蜜桃传媒麻豆第一区在线观看| 日韩精品资源二区在线| 国产精品白丝jk黑袜喷水| 欧美久久久久久蜜桃| 亚洲第一搞黄网站| 一本色道久久综合亚洲91| 亚洲欧美在线观看| 色悠久久久久综合欧美99| 国产精品免费视频观看| 日韩成人精品在线观看| 国产精品国产三级国产aⅴ无密码| 精品国产91九色蝌蚪| 欧美一区日韩一区| 国产成人在线视频网站| 亚洲电影一级黄| 欧美一级黄色片| 粉嫩高潮美女一区二区三区| 亚洲午夜电影在线观看| 欧美tk—视频vk| 欧美一区欧美二区| 国产精品国产三级国产普通话99 | 午夜精品久久久久久久99水蜜桃 | 国产98色在线|日韩| 国内久久婷婷综合| 开心九九激情九九欧美日韩精美视频电影 | 国产精品久久夜| 26uuu精品一区二区在线观看| 这里只有精品99re| 欧美日韩在线三级| 欧美精品丝袜中出| 欧美视频三区在线播放| 欧美日韩一区二区在线观看| 欧美丝袜丝交足nylons图片| 91在线视频官网| 欧美日韩一级二级三级| 日韩美一区二区三区| 国产三级一区二区三区| 国产欧美精品一区二区色综合| 中文字幕制服丝袜一区二区三区| 菠萝蜜视频在线观看一区| 国产黄色成人av| 成人激情视频网站| 一本一本大道香蕉久在线精品 | 国产欧美一区二区三区在线看蜜臀| 欧美日韩精品是欧美日韩精品| 在线观看www91| 欧美日韩精品一区二区在线播放| 3d成人h动漫网站入口| 日韩一区二区免费视频| 日韩欧美国产综合一区| 国产欧美精品国产国产专区| 亚洲成a人片综合在线| 天天射综合影视| 欧美乱熟臀69xxxxxx| 欧美日韩在线综合| 欧美日韩亚洲不卡| 91久久久免费一区二区| 日韩一级二级三级| 亚洲欧美区自拍先锋| 91免费在线视频观看| 久久er99精品| 日本亚洲免费观看| 日韩影视精彩在线| 丰满放荡岳乱妇91ww| 91精品在线观看入口| 国产精品国产自产拍高清av王其| 亚洲国产日韩a在线播放| 国产成都精品91一区二区三| 欧美日韩一区二区三区高清| 中文字幕不卡一区| 琪琪久久久久日韩精品| 欧美最猛性xxxxx直播| 欧美激情综合在线| 久草这里只有精品视频| 欧美日韩一区二区三区在线看 | 欧美电影影音先锋| 日韩欧美一二三区| 裸体歌舞表演一区二区| 91麻豆免费看片| 亚洲欧洲美洲综合色网| 国产成人精品亚洲777人妖 | 老鸭窝一区二区久久精品| 91蝌蚪porny| 亚洲电影一级黄| 欧美福利视频导航| 免费看黄色91| 日韩手机在线导航| 激情久久五月天| 国产精品久久久久久福利一牛影视 | 国产精品系列在线观看| 亚洲私人影院在线观看| 国内成人精品2018免费看| 欧美一区二区三区日韩视频| 精品一区免费av| 欧美精品一区在线观看| 国产一区二区伦理片| 亚洲视频小说图片| 欧美福利一区二区| 欧美理论在线播放| 国产欧美一区二区在线| 亚洲精品国久久99热| 欧美精彩视频一区二区三区| 国产在线播精品第三| 久久综合狠狠综合久久综合88| 国产馆精品极品| 国产亚洲成av人在线观看导航| 国产麻豆精品在线| 亚洲国产成人一区二区三区| 国产成人精品免费| 最新日韩av在线| 色综合网色综合| 亚洲午夜电影在线| 韩国三级电影一区二区| 精品久久久久香蕉网| 麻豆久久一区二区| 久久亚区不卡日本| 国产成人亚洲综合a∨婷婷 | 3d成人h动漫网站入口| 成人免费看视频| 蜜桃av一区二区在线观看| 亚洲精品久久久蜜桃| 国产亚洲自拍一区| 久久网这里都是精品| 日韩一区二区精品| 欧美一区二区三区四区视频| 日本久久电影网| 91麻豆精品一区二区三区| 国产高清视频一区| 麻豆国产欧美日韩综合精品二区| 亚洲特级片在线| 亚洲人妖av一区二区| 日本一二三不卡| 国产精品毛片久久久久久| 欧美激情中文字幕一区二区| 51精品秘密在线观看|