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

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

?? sddriver.c

?? atmel de booloader 內有源代碼 用blb編譯
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************Copyright (c)****************************************************                               Guangzhou ZHIYUAN electronics Co.,LTD.**                                     **                                 http://www.zyinside.com****--------------File Info-------------------------------------------------------------------------------** File Name: 				sddriver.c** Last modified Date: 		2006.01.09** Last Version:			V1.0		** Description: 			API funciton of initializ,read,write SD/MMC卡 **							初始化、讀、寫 SD/MMC卡的 API 函數**------------------------------------------------------------------------------------------------------** Created By: 				MingYuan Zheng 鄭明遠** Created date: 			2006.01.09** Version: 				V1.0** Descriptions:			The original version 初始版本****------------------------------------------------------------------------------------------------------** Modified by:** Modified date:** Version:** Description:**********************************************************************************************************/#include "config.h"/* SD/MMC卡信息結構體變量 the information structure variable of SD/MMC Card */sd_struct sds = {0};			/* 超時時間單位表(單位:0.000000001ns) timeout unit table */const INT32U time_unit[8] = {1000000000,100000000,10000000,							 1000000,100000,10000,1000,100};/* 超時時間表 timeout value table */							 const INT8U time_value[16] = {0,10,12,13,15,20,25,30,                              35,40,45,50,55,60,70,80}; /* 超時時間因數表 timeout factor table */                              const INT8U r2w_fator[6] = {1,2,4,8,16,32};        /* 與中斷相關的全局變量 global variable releated with interrupt */#if SD_INTERRUPT_ENstatic DECLARE_WAIT_QUEUE_HEAD(wq);volatile int reading;           /* 讀卡(1)或寫卡(1)狀態 read card(1) or write card(1) status */INT8U *buffer;                  /* 讀卡或寫卡緩沖區 	the buffer of read or write card */INT32 bufcnt;                   /* 緩沖區計數器 		buffer counter */INT32 datalen;					/* 讀卡或寫卡數據長度   the data length of read or write card */volatile int error;#endif    volatile int card_insert;int card_change = 0; 			/* 卡改變,卡插入開拔出 */        volatile INT16U card_id = 0;		/* card slot identify, added 20060330 */    	/*       	***************************************************************************************************			     用戶API函數:  初始化,讀,寫,擦 SD卡  User API Function: Initialize,read,write,erase SD Card 					***************************************************************************************************	*//*********************************************************************************************************** Function name: SD_Initialize** Descriptions:  initialize SD/MMC card**                初始化SD/MMC卡	** Input: 		  sd_struct *sds: SD卡信息結構體 	sd_struct *sds: the information structure of SD Card** Output: 		  0:   正確    >0:   錯誤碼		  		0:  right		>0:  error code  ** Created by:    MingYuan Zheng 鄭明遠 ** Created Date:  2006-01-09 **-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/INT8U SD_Initialize(sd_struct *sds){	INT8U response[16], ret;	SD_HardWareInit();					    		/* 1. 初始化SD/MMC接口硬件   Initialize the hardware of SD/MMC interface */    ret = SD_ResetSD();   	if (ret!= SD_NO_ERR)							/* 2. 發出CMD0命令復位SD卡   send CMD0 command to reset SD/MMC card */        return ret;									 	 	sds->card_type = Card_Indentify();				/* 3. 判別卡的型號:SD或MMC卡 identify card type: SD or MMC card */					 		ret = SD_ActiveCard(sds);						/* 4. 激活SD/MMC卡			 active SD/MMC card */	if (ret != SD_NO_ERR)		return ret;	  	    	ret = SD_ReadAllCID(16, response);  			/* 5. 請所有卡發送CID寄存器  ask all card send their CID number */  	if (ret != SD_NO_ERR)  		return ret;    	  	if (sds->RCA == 0)  	{  	    card_id++;		  	    sds->RCA = card_id;						/* 給卡分配一個地址  assign a address */ 	}    	  		    ret = SD_GetRCA(sds->card_type, &sds->RCA);						/* 6. 得到卡的RCA  			 get the RCA of the card */   	if (ret != SD_NO_ERR)  		return ret;           ret = SD_GetCardInfo(sds);						/* 7. 讀CSD寄存器,獲取SD卡信息 	  read CSD register, get the information of SD card */    if (ret != SD_NO_ERR)       return ret;           SD_ClkToMax();									/* 8. 設置讀/寫SD/MMC時鐘到最大值 set clock of reading or writing SD/MMC to maximum */        return (SD_SetBlockLen(sds->RCA, SD_BLOCKSIZE));			/* 9. 設置塊的長度: 512Bytes 	  Set the block length: 512Bytes */}/*********************************************************************************************************** Function name: SD_ReadBlock** Descriptions:  read a block from SD/MMC card**                從SD/MMC卡中讀出一個塊** Input: 		  sd_struct *sds  : SD/MMC卡信息結構體 			sd_struct *sds  : the information structure of SD/MMC Card				  INT32U blockaddr: 塊地址          			INT32U blockaddr: the address of the block				  INT8U *recbuf   : 接收緩沖區,長度512Bytes		INT8U *recbuf   : the buffer of receive,length is 512Bytes** Output: 		  1:   成功    > 0:  錯誤碼						1:  sucessfully	 > 0:  error code   ** Created by:    MingYuan Zheng 鄭明遠 ** Created Date:  2006-01-09 **-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/INT8U SD_ReadBlock(sd_struct *sds, INT32U blockaddr, INT8U *recbuf){	INT8U ret,status[4];	INT32U stat = 0;		ret = SD_ReadCard_Status(sds->RCA, 4, status);	/* 讀取卡的狀態  	  	read the status of the card */	if (ret != SD_NO_ERR)		return ret;			ret = SD_SelectCard(sds->RCA);					/* CMD7,進入傳輸狀態  	CMD7, enter tranfer status */    if (ret != SD_NO_ERR)    	return ret;    	  	if (sds->card_type == CARDTYPE_SD)	    {												/* 卡為SD卡           	card is SD card */   		ret = SD_SetBusWidth(sds->RCA, 1);    		/* 設置卡為數據總線方式 set card to wide data bus  */    	if (ret != SD_NO_ERR)    		return ret;     }	#if SD_INTERRUPT_EN 	SDIIMSK = SDIIMSK_TOUT | SDIIMSK_DFIN | SDIIMSK_RX_LAST | SDIIMSK_RX_FULL;	reading = 1;	buffer = recbuf;                    			/* 數據緩沖區指針 	    buffer pointer */	bufcnt = 0;	datalen = SD_BLOCKSIZE;                  		/* 接收數據長度			receive data length */	error = SD_ERR_TIMEOUT_READ;					/* be initialized to error code */#endif 		if (sds->card_type == CARDTYPE_SD)			stat = SDIDCON_RACMD_1 | SDIDCON_BLK | SDIDCON_RX | SDIDCON_WIDE | 1 << 0;		else		stat = SDIDCON_RACMD_1 | SDIDCON_BLK | SDIDCON_RX | 1 << 0;		SDIBSIZE = SD_BLOCKSIZE;						/* 塊數據的長度 		block data length */	SDICON |= SDICON_FRESET;						/* 復位 FIFO			reset FIFO */			SDIDCON = stat;									/* 寫數據控制寄存器		write data control register */		 	ret = SD_ReadSingleBlock(blockaddr);			/* 讀單塊命令 			read single blocks command */						 	if (ret != SD_NO_ERR) 		return ret;#if SD_INTERRUPT_EN 	interruptible_sleep_on(&wq);					/* 進入可被中斷的睡眠狀態, 數據在中斷中自動接收 */		if (!card_insert) {		return SD_ERR_NO_CARD;						/* 卡未插入,返回錯誤 */	}	if (error) 	{												/* there is error, return error code */		return error;	}	ret = SD_NO_ERR;#else												/* 讀出數據 read data from sd card */  	ret = SD_ReadBlockData(SD_BLOCKSIZE, recbuf, sds->timeout_read);	#endif  	  	if (ret != SD_NO_ERR)												  		return ret;  	  	ret = SD_DeSelectCard();						/* CMD7, 退出傳輸狀態 */  		    return SD_NO_ERR;						}/*********************************************************************************************************** Function name: SD_WriteBlock** Descriptions:  write a block to SD/MMC card**                向SD/MMC卡中寫入一個塊	** Input: 		  sd_struct *sds  : SD/MMC卡信息結構體 			sd_struct *sds  : the information structure of SD/MMC Card				  INT32U blockaddr: 塊地址          			INT32U blockaddr: the address of the block				  INT8U *sendbuf  : 發送緩沖區,長度512Bytes	  	  INT8U *sendbuf  : the buffer of send,length is 512Bytes** Output: 		  1:   成功    > 0:  錯誤碼						1:  sucessfully	 > 0:  error code   ** Created by:    MingYuan Zheng 鄭明遠 ** Created Date:  2006-01-09 **-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/INT8U SD_WriteBlock(sd_struct *sds, INT32U blockaddr, INT8U *sendbuf){	INT8U ret,tmp[4];	INT32U stat = 0;		ret = SD_ReadCard_Status(sds->RCA, 4, tmp);		/* 讀取卡的狀態  	  	read the status of the card */	if (ret != SD_NO_ERR)		return ret;	ret = SD_SelectCard(sds->RCA);					/* CMD7,進入傳輸狀態  	CMD7, enter tranfer status */    if (ret != SD_NO_ERR)    	return ret;	  	if (sds->card_type == CARDTYPE_SD)	    {												/* 卡為SD卡           	card is SD card */   		ret = SD_SetBusWidth(sds->RCA, 1);    		/* 設置卡為數據總線方式 set card to wide data bus  */	    	if (ret != SD_NO_ERR)    		return ret;     }		#if SD_INTERRUPT_EN 	SDIIMSK = SDIIMSK_TOUT | SDIIMSK_DFIN | SDIIMSK_TX_EMP; 	reading = 0;	buffer = sendbuf;                    			/* 數據緩沖區指針 	    buffer pointer */	bufcnt = 0;	datalen = SD_BLOCKSIZE;                  		/* 發送數據長度			send data length */	error = SD_ERR_TIMEOUT_WRITE;					/* be initialized to error code */#endif			    if (sds->card_type == CARDTYPE_SD)	    	stat = SDIDCON_TARSP_1 | SDIDCON_BLK | SDIDCON_TX | SDIDCON_WIDE | 1 << 0;    else       	stat = SDIDCON_TARSP_1 | SDIDCON_BLK | SDIDCON_TX | 1 << 0;		SDIBSIZE = SD_BLOCKSIZE;           				/* 塊數據的長度 		block data length */	SDICON |= SDICON_FRESET;            			/* 復位 FIFO			reset FIFO */			SDIDCON = stat;                     			/* 寫數據控制寄存器		write data control register */		ret = SD_WriteSingleBlock(blockaddr);			/* 寫單塊命令 write single block */	if (ret != SD_NO_ERR)			return ret;#if SD_INTERRUPT_EN	interruptible_sleep_on(&wq);					/* 進入可被中斷的睡眠狀態, 數據自動接收 */		if (!card_insert) {		return SD_ERR_NO_CARD;						/* 卡未插入,返回錯誤 */	}	if (error) 	{												/* there is error, return error code */		return error;	}	ret = SD_NO_ERR;#else												/* 寫入數據到SD/MMC card  write data to SD/MMC card */	ret = SD_WriteBlockData(0, SD_BLOCKSIZE, sendbuf, sds->timeout_write);	/*   */#endif 	 	if (ret == SD_NO_ERR)							/* 讀Card Status寄存器, 檢查寫入是否成功 */ 	{												/* read Card Status register to check write wheather sucessfully */ 		ret = SD_ReadCard_Status(sds->RCA, 4, tmp); 		if (ret != SD_NO_ERR)		 			return ret;								/* 讀寄存器失敗 read register fail */ 		

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内成+人亚洲+欧美+综合在线| 国产一区福利在线| 国产欧美一区二区三区鸳鸯浴| 欧美性色欧美a在线播放| 国产精品88av| 日韩二区在线观看| 中文字幕一区二区5566日韩| 日韩三区在线观看| 在线观看欧美黄色| jiyouzz国产精品久久| 久久激情五月婷婷| 亚洲影院理伦片| 自拍偷自拍亚洲精品播放| 26uuu亚洲综合色| 欧美一级日韩不卡播放免费| 欧洲一区在线电影| 9久草视频在线视频精品| 国产又粗又猛又爽又黄91精品| 亚洲午夜久久久久久久久电影院| 国产精品免费观看视频| 久久久久久久综合| 久久综合五月天婷婷伊人| 欧美电影在哪看比较好| 在线精品视频一区二区| 99久久精品免费观看| 国产成人av影院| 国产乱码精品一品二品| 美女视频免费一区| 日本少妇一区二区| 日韩国产在线一| 日韩影院精彩在线| 日韩av高清在线观看| 午夜av一区二区| 亚洲午夜在线观看视频在线| 亚洲高清视频的网址| 一区二区三区影院| 一区二区三区资源| 亚洲男人的天堂av| 亚洲综合色网站| 亚洲图片欧美一区| 日韩激情一区二区| 精品一区二区免费视频| 狠狠色伊人亚洲综合成人| 国产米奇在线777精品观看| 国产一区二区三区电影在线观看| 国产一区二区三区久久悠悠色av| 国产成人精品亚洲777人妖| 国产91色综合久久免费分享| 成人免费的视频| av福利精品导航| 日本道精品一区二区三区| 欧美午夜电影在线播放| 在线播放中文一区| 日韩你懂的在线播放| 欧美精品一区二区久久婷婷| 欧美国产日韩亚洲一区| 日韩美女视频一区二区 | 国产午夜精品美女毛片视频| 国产欧美在线观看一区| 亚洲日本在线a| 亚洲国产美国国产综合一区二区| 香蕉久久夜色精品国产使用方法 | 免费在线观看一区| 韩国一区二区三区| 成人aaaa免费全部观看| 色94色欧美sute亚洲13| 日韩一级黄色大片| 国产日产欧美一区二区三区| 亚洲欧美欧美一区二区三区| 日本三级亚洲精品| 成人午夜激情在线| 欧美日韩一区二区三区四区 | 欧美日韩国产一级| 精品卡一卡二卡三卡四在线| 国产精品欧美极品| 亚洲成精国产精品女| 国产精品一区免费视频| 91免费视频网址| 日韩欧美一区在线| 国产精品亲子乱子伦xxxx裸| 亚洲影视在线观看| 久久97超碰色| 在线免费观看成人短视频| 日韩区在线观看| 亚洲视频在线观看三级| 日韩av不卡在线观看| 波多野结衣的一区二区三区| 欧美绝品在线观看成人午夜影视| 久久综合久色欧美综合狠狠| 亚洲成人综合视频| 成人午夜激情视频| 欧美电影免费观看高清完整版在线观看| 国产精品免费aⅴ片在线观看| 亚洲不卡一区二区三区| 不卡高清视频专区| 欧美v亚洲v综合ⅴ国产v| 1000部国产精品成人观看| 日韩综合在线视频| 91色在线porny| 国产亚洲成aⅴ人片在线观看| 天使萌一区二区三区免费观看| 成人性生交大片免费看中文网站| 欧美一卡2卡三卡4卡5免费| 亚洲视频在线观看三级| 国产激情视频一区二区在线观看 | 久久精品国产99久久6| 99久久国产免费看| 久久婷婷成人综合色| 五月天丁香久久| 色哦色哦哦色天天综合| 久久久精品日韩欧美| 全国精品久久少妇| 欧美无砖专区一中文字| 亚洲精品自拍动漫在线| 国产91综合一区在线观看| 精品sm在线观看| 蜜臀av一区二区| 欧美酷刑日本凌虐凌虐| 亚洲电影视频在线| 972aa.com艺术欧美| 欧美激情资源网| 国产精品99久久久久久似苏梦涵| 精品日韩99亚洲| 久久精品国产亚洲高清剧情介绍| 欧美精品99久久久**| 一区二区三区精品久久久| 97精品久久久午夜一区二区三区| 欧美高清一级片在线观看| 国产呦精品一区二区三区网站| 日韩欧美一级精品久久| 久久精品国产精品青草| 精品国产凹凸成av人导航| 青青草国产精品亚洲专区无| 日本二三区不卡| 亚洲一区二区三区四区在线观看 | 欧美日韩国产美女| 一区二区三区毛片| 欧美三级日韩三级| 亚洲成人免费电影| 在线91免费看| 免费在线视频一区| 欧美成人video| 国产美女精品人人做人人爽| 亚洲国产经典视频| 99久久婷婷国产| 亚洲欧美国产77777| 在线中文字幕一区二区| 日韩在线a电影| 久久综合久久99| 成人丝袜高跟foot| 中文字幕日本不卡| 91精品1区2区| 日本免费新一区视频| 精品福利一区二区三区| 国产成人啪免费观看软件| 国产精品动漫网站| 欧美日韩国产一二三| 久久99久久久久| 国产三级精品视频| 91极品美女在线| 日产国产高清一区二区三区| 精品国产伦一区二区三区观看方式 | 一区二区三区中文字幕电影| 欧美另类高清zo欧美| 麻豆精品在线播放| 国产婷婷色一区二区三区四区| www.av精品| 天天av天天翘天天综合网 | 日本道色综合久久| 青娱乐精品在线视频| 国产欧美精品一区| 欧美亚洲日本国产| 精品亚洲免费视频| 亚洲色图.com| 欧美电影免费观看完整版| 北条麻妃国产九九精品视频| 天天色综合成人网| 日本一区二区三级电影在线观看 | 精品视频资源站| 国产综合成人久久大片91| 亚洲日本va在线观看| 91精品国产色综合久久不卡电影| 国产91丝袜在线播放九色| 午夜国产精品一区| 中文字幕乱码日本亚洲一区二区| 欧美手机在线视频| 国产精品18久久久久| 亚洲国产毛片aaaaa无费看| 国产区在线观看成人精品| 欧洲av一区二区嗯嗯嗯啊| 国产二区国产一区在线观看| 午夜精品福利一区二区蜜股av| 久久久国产精品麻豆| 宅男在线国产精品| eeuss鲁片一区二区三区| 久久国产夜色精品鲁鲁99| 亚洲蜜臀av乱码久久精品| 久久综合色一综合色88| 91麻豆精品国产91久久久久久久久| av亚洲精华国产精华精华|