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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? flash.c

?? 嵌入式系統(tǒng)
?? C
字號(hào):
/************************************************************************* *	$File name  				: flash.C	 					     	 * *	$Create date(YYYY-MM-DD)	: 2002-12-05			                 * *	$Version					: 1.0A		                             * *									                                     * *	$All copyrights reserved by GSL ( 2002 )			                 * *									                                     * *	$Writen by  : Eric wang						                         * *									                                     * *	History: 2002-12-05 addrs for word	                                 * *************************************************************************/#include "flash.h"#ifndef COMPLETE{	#define COMPLETE 0}#ifndef FAIL{	#define FAIL 1}#define FLASH_ROM 0x00800000#define ADDR_UNLOCK0 0x00800555#define ADDR_UNLOCK1 0x008002AA#define COM_UNLOCK0 0x00AA#define COM_UNLOCK1 0x0055#define MBM29LV160TE//#define MBM29LV160BE#ifdef MBM29LV160TE	unsigned long const BlockAddress[] = 	{		0x800000,	//block0		0x808000,	//block1		0x810000,	//block2		0x818000,	//block3		0x820000,	//block4		0x828000,	//block5		0x830000,	//block6		0x838000,	//block7		0x840000,	//block8		0x848000,	//block9		0x850000,	//block10		0x858000,	//block11		0x860000,	//block12		0x868000,	//block13		0x870000,	//block14		0x878000,	//block15		0x880000,	//block16		0x888000,	//block17		0x890000,	//block18		0x898000,	//block19		0x8a0000,	//block20		0x8a8000,	//block21		0x8b0000,	//block22		0x8b8000,	//block23		0x8c0000,	//block24		0x8c8000,	//block25		0x8d0000,	//block26		0x8d8000,	//block27		0x8e0000,	//block28		0x8e8000,	//block29		0x8f0000,	//block30		0x8f8000,	//block31		0x8fc000,	//block32		0x8fd000,	//block33		0x8fe000	//block34			};#endif#ifdef MBM29LV160BE	unsigned long const BlockAddress[] = 	{		0x800000,	//block0		0x802000,	//block1		0x803000,	//block2		0x804000,	//block3		0x808000,	//block4		0x810000,	//block5		0x818000,	//block6		0x820000,	//block7		0x828000,	//block8		0x830000,	//block9		0x838000,	//block10		0x840000,	//block11		0x848000,	//block12		0x850000,	//block13		0x858000,	//block14		0x860000,	//block15		0x868000,	//block16		0x870000,	//block17		0x878000,	//block18		0x880000,	//block19		0x888000,	//block20		0x890000,	//block21		0x898000,	//block22		0x8a0000,	//block23		0x8a8000,	//block24		0x8b0000,	//block25		0x8b8000,	//block26		0x8c0000,	//block27		0x8c8000,	//block28		0x8d0000,	//block29		0x8d8000,	//block30		0x8e0000,	//block31		0x8e8000,	//block32		0x8f0000,	//block33		0x8f8000	//block34	};#endifvoid FlashReset(void){	unsigned short *address;		address = (unsigned short *)FLASH_ROM;	*address = 0x00F0;}/*************************************************************** *Purpose    Read flash identifier code                        * *Prototype  void ReadFlashID(unsigned short *buf)			   * *Parameters buf : buf to save flash memory identifier codes   * *				   as manufacturing code device code,etc.      *   *Remarks                                                      * ***************************************************************/void ReadFlashID(unsigned short *buf){	unsigned short Manu_code = 0;	unsigned short Dev_code = 0;	unsigned short *address;	unsigned short *tmp_buf = buf;	 	// autoselect command	address = (unsigned short *)ADDR_UNLOCK0;	*address = COM_UNLOCK0;	address = (unsigned short *)ADDR_UNLOCK1;	*address = COM_UNLOCK1;	address = (unsigned short *)ADDR_UNLOCK0;	*address = 0x0090;		// get id	address = (unsigned short *)FLASH_ROM;	Manu_code = *address;	address++;	Dev_code = *address;		*tmp_buf++ = Manu_code;	*tmp_buf = Dev_code;		FlashReset ();		}/******************************************************** *Notice:												* *	Parameter: addr : 0x000000 - 0x100000				* *			   size : 8k, 2*4k, 16k, 31 * 32K in word	* *	Return :											* *			   COMPLETE = SUCCESS TO ERASE				* *			   FAIL = FAILED TO ERASE					* ********************************************************/short EraseFlashChip(void){	unsigned short *address;	unsigned char Data = 0; 	// chip erase command	address = (unsigned short *)ADDR_UNLOCK0;	*address = COM_UNLOCK0;	address = (unsigned short *)ADDR_UNLOCK1;	*address = COM_UNLOCK1;	address = (unsigned short *)ADDR_UNLOCK0;	*address = 0x0080;		*address = COM_UNLOCK0;	address = (unsigned short *)ADDR_UNLOCK1;	*address = COM_UNLOCK1;	address = (unsigned short *)ADDR_UNLOCK0;	*address = 0x0010;	// /data polling	address = (unsigned short *)FLASH_ROM;	Data = (unsigned char)(*address);		while ((Data&0x80) != 0x80)				// DQ7 == 1 erase complete	{		if ((Data&0x20) == 0x20)			// DQ5 == 1 erase exceed timing limits		{			Data = (unsigned char)(*address);			if ((Data&0x80) == 0x80)			{				break;			}			else			{				return FAIL;			}		}		Data = (unsigned char)(*address);	}	Data = (unsigned char)(*address);	if (Data == 0xFF)	{		return COMPLETE;	}		else	{		return FAIL;	}}/*********************************************************************Purpose    Erase flash data in block size                    		**Prototype  short EraseFlash(unsigned long addr, unsigned long size)*           **Parameters addr : starting address		                      		**           size : size of data erase from flash in word.			**                  The size should be equal unit size.				**				  (64K in block size in flash memory)		   		**Result     On success operation return 0,else return 1.      		**Remarks                                                      		**********************************************************************/short EraseFlash(unsigned long addr, unsigned long size){	unsigned short *address;	unsigned char Data = 0; 		unsigned long era_addrs[35];	unsigned long end_addr;	unsigned char era_no = 1;	unsigned char i;		for (i=0; i<35; i++)	{		era_addrs[i] = 0;	}	end_addr = addr + size;	// get erase address	era_addrs[0] = addr;	for (i=0; i<35; i++)	{		if (BlockAddress[i] <= addr)		{			continue;		}		if ((BlockAddress[i]>addr) && (BlockAddress[i]<end_addr))		{			era_addrs[era_no] = BlockAddress[i];			era_no++;			continue;				}				if (BlockAddress[i] >= end_addr)		{			break;		}	}	// sectors erase command	address = (unsigned short *)ADDR_UNLOCK0;	*address = COM_UNLOCK0;	address = (unsigned short *)ADDR_UNLOCK1;	*address = COM_UNLOCK1;	address = (unsigned short *)ADDR_UNLOCK0;	*address = 0x0080;		*address = COM_UNLOCK0;	address = (unsigned short *)ADDR_UNLOCK1;	*address = COM_UNLOCK1;		for (i=0; i<era_no; i++)	{		address = (unsigned short *)era_addrs[i];		*address = 0x0030;	}		// /data polling	address = (unsigned short *)addr;	Data = (unsigned char)(*address);		while ((Data&0x80) != 0x80)				// DQ7 == 1 erase complete	{		if ((Data&0x20) == 0x20)			// DQ5 == 1 erase exceed timing limits		{			Data = (unsigned char)(*address);			if ((Data&0x80) == 0x80)			{				break;			}			else			{				return FAIL;			}		}		Data = (unsigned char)(*address);	}	Data = (unsigned char)(*address);	if (Data == 0xFF)	{		return COMPLETE;	}		else	{		return FAIL;	}}/******************************************************************** *Purpose    Read data into flash                              		* *Prototype  void ReadFlash(unsigned long addr, unsigned long size,	* *							unsigned short *buf) 			   		* *Parameters addr : starting address     	                 		* *           size : size of data read from flash in word 	 		* *           buf : buffer to store data read from flash 	 		* *Result     											      		* *Remarks                                                      		* ********************************************************************/void ReadFlash(unsigned long addr, unsigned long size, unsigned short *buf){	unsigned short *address;	unsigned short *tmp_buf = buf;	unsigned long i;	 	// read command	address = (unsigned short *)ADDR_UNLOCK0;	*address = COM_UNLOCK0;	address = (unsigned short *)ADDR_UNLOCK1;	*address = COM_UNLOCK1;	address = (unsigned short *)ADDR_UNLOCK0;	*address = 0x00F0;		// get data	address = (unsigned short *)addr;	for (i=0; i<size; i++)	{		*tmp_buf++ = *address++;	}	}	/**********************************************************************Purpose    Write data into flash                             		 **Prototype  short WriteFlash(unsigned long addr, unsigned long size, *							 unsigned short *buf)					 **Parameters addr : starting address		                      		 **           size : size of buffer write to flash in word 			 **           buf : data to write into flash     		         		 **Result     On success operation return 0, else return 1.      		 **Remarks                                                      		 ***********************************************************************/short WriteFlash(unsigned long addr, unsigned long size, unsigned short *buf){	unsigned short *address;	unsigned short *tmp_buf = buf;	unsigned char Data;	unsigned long i;	 	// set fast mode	address = (unsigned short *)ADDR_UNLOCK0;	*address = COM_UNLOCK0;	address = (unsigned short *)ADDR_UNLOCK1;	*address = COM_UNLOCK1;	address = (unsigned short *)ADDR_UNLOCK0;	*address = 0x0020;		// fast program	address = (unsigned short *)addr;	for (i=0; i<size; i++)	{		*address = 0x00A0;		*address = *tmp_buf;		Data = (unsigned char)(*address);			while (Data != (*tmp_buf))				// DQ7 == data erase complete		{			if ((Data&0x20) == 0x20)			// DQ5 == 1 erase exceed timing limits			{				Data = (unsigned char)(*address);				if (Data == (*tmp_buf))				{					break;				}				else				{					return FAIL;				}			}			Data = (unsigned char)(*address);		}		address++;		tmp_buf++;			}		// reset fast mode	address = (unsigned short *)FLASH_ROM;	*address = 0x0090;	*address = 0x00F0;	return COMPLETE;	}	short WriteFlashCode(unsigned long addr, unsigned short value){	unsigned short *address;	unsigned char Data;	 	// program command	address = (unsigned short *)ADDR_UNLOCK0;	*address = COM_UNLOCK0;	address = (unsigned short *)ADDR_UNLOCK1;	*address = COM_UNLOCK1;	address = (unsigned short *)ADDR_UNLOCK0;	*address = 0x00A0;		// write data	address = (unsigned short *)addr;	*address = value;	// /data polling	Data = (unsigned char)(*address);		while (Data != value)				// DQ7 == data erase complete	{		if ((Data&0x20) == 0x20)			// DQ5 == 1 erase exceed timing limits		{			Data = (unsigned char)(*address);			if (Data == value)			{				break;			}			else			{				return FAIL;			}		}		Data = (unsigned char)(*address);	}	return COMPLETE;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜不卡视频| 亚洲黄色免费电影| 91亚洲国产成人精品一区二三| 亚洲欧美日韩小说| 日韩视频在线你懂得| 99麻豆久久久国产精品免费优播| 秋霞成人午夜伦在线观看| 最新国产成人在线观看| 精品美女一区二区三区| 在线视频欧美区| 成人永久aaa| 久久99深爱久久99精品| 亚洲大片免费看| 亚洲欧洲一区二区三区| 久久亚洲综合色一区二区三区 | 亚洲成av人片在线| 中文字幕一区二区三区精华液 | 日韩毛片高清在线播放| 久久久久久久久久久黄色| 91麻豆精品国产自产在线观看一区 | 亚洲精品免费看| 久久久精品免费免费| 日韩欧美色电影| 欧美精品久久久久久久久老牛影院| 91丝袜美腿高跟国产极品老师| 国产黄色精品网站| 精品制服美女久久| 男男gaygay亚洲| 免费人成精品欧美精品| 丝袜诱惑亚洲看片| 亚洲bdsm女犯bdsm网站| 亚洲国产一区二区三区青草影视| 亚洲视频一二三区| 亚洲色图制服诱惑| 日韩美女啊v在线免费观看| 国产精品青草久久| 国产精品另类一区| 中文字幕亚洲在| **性色生活片久久毛片| 亚洲视频中文字幕| 亚洲欧美日韩国产综合| 亚洲情趣在线观看| 一区二区三区四区乱视频| 亚洲精品伦理在线| 一区二区三区精品视频在线| 一区二区三区中文免费| 亚洲1区2区3区视频| 日韩av中文字幕一区二区| 久久精品国产久精国产| 国产另类ts人妖一区二区| 国产91丝袜在线18| 91精品视频网| 日韩欧美亚洲国产另类 | 国产欧美1区2区3区| 国产精品亲子乱子伦xxxx裸| 亚洲欧洲成人自拍| 一区二区三区在线视频免费观看| 午夜精品在线视频一区| 精品综合久久久久久8888| 国产精品2024| 99国产精品久| 欧美日韩视频在线一区二区 | 7878成人国产在线观看| 日韩欧美国产综合| 欧美极品另类videosde| 亚洲精品高清视频在线观看| 日韩精品一卡二卡三卡四卡无卡| 久久er99热精品一区二区| 成人福利在线看| 欧美日韩高清一区二区| 精品精品欲导航| 国产精品激情偷乱一区二区∴| 亚洲一区二区三区四区的| 蜜乳av一区二区| 高清av一区二区| 欧美日韩中文国产| wwwwxxxxx欧美| 亚洲欧美二区三区| 久久国产夜色精品鲁鲁99| 成人看片黄a免费看在线| 欧美日韩电影一区| 国产午夜一区二区三区| 亚洲老妇xxxxxx| 韩国精品一区二区| 色欧美日韩亚洲| 日韩欧美成人一区| 亚洲精品视频在线观看免费| 麻豆成人久久精品二区三区小说| 成人黄色国产精品网站大全在线免费观看| 欧美在线free| 国产亚洲欧美在线| 午夜视频一区二区| 不卡的av电影在线观看| 欧美一区二区观看视频| 日本亚洲一区二区| 色综合久久久久| 久久久夜色精品亚洲| 亚洲成人1区2区| 9人人澡人人爽人人精品| 欧美精品一区在线观看| 亚洲高清在线视频| 成人动漫一区二区三区| 精品国产乱子伦一区| 欧美日韩久久久一区| 亚洲欧洲综合另类| 麻豆国产精品官网| 欧美日韩激情一区二区| 亚洲女厕所小便bbb| 国产经典欧美精品| 日韩欧美国产一二三区| 亚洲国产日韩综合久久精品| 成人视屏免费看| 欧美韩国日本一区| 成人亚洲一区二区一| 精品国精品国产尤物美女| 免费精品视频最新在线| 欧美视频一二三区| 亚洲成人激情综合网| 欧美日韩三级一区| 日韩av高清在线观看| 欧洲精品一区二区| 激情综合五月婷婷| 日韩欧美色电影| 欧美午夜电影在线播放| 精品一区二区三区av| 久久久精品tv| 色哦色哦哦色天天综合| 免费成人在线观看| 欧美一区二区三区色| 成人综合婷婷国产精品久久蜜臀 | 日韩毛片一二三区| 日韩午夜三级在线| 久久品道一品道久久精品| 在线看一区二区| 中文字幕久久午夜不卡| 国产一区二区不卡老阿姨| 精品久久人人做人人爰| 久草在线在线精品观看| 日韩欧美一区在线观看| 青青草成人在线观看| 日韩一区和二区| 九九精品视频在线看| 久久色在线观看| 国产乱妇无码大片在线观看| 国产婷婷精品av在线| 不卡欧美aaaaa| 亚洲色图色小说| 欧美在线短视频| 日本色综合中文字幕| 精品成人一区二区三区四区| 国产一区二区导航在线播放| 国产日产欧美一区二区三区| 成人免费观看视频| 亚洲综合清纯丝袜自拍| 3d动漫精品啪啪| 国产一区二区免费在线| 中文字幕一区二区三区四区不卡| 色婷婷亚洲一区二区三区| 五月天欧美精品| 久久久久国色av免费看影院| 99精品欧美一区二区蜜桃免费| 亚洲国产一区二区在线播放| 精品噜噜噜噜久久久久久久久试看 | 亚洲电影第三页| 日韩一区二区电影| 国产黄色91视频| 亚洲综合色视频| 精品久久久久久久久久久久久久久久久 | 亚洲高清视频在线| 欧美成人r级一区二区三区| 激情成人综合网| 国产精品免费视频一区| 国产成人aaa| 亚洲成av人片| 欧美色视频一区| 一区二区成人在线| 91精品国产综合久久福利软件| 麻豆精品在线播放| 亚洲免费色视频| 欧美精品久久一区二区三区 | 99久久精品情趣| 看电视剧不卡顿的网站| 国产欧美视频在线观看| 欧美主播一区二区三区| 国产综合色产在线精品| 亚洲综合偷拍欧美一区色| 欧美va亚洲va香蕉在线| 99久久精品国产麻豆演员表| 亚洲国产精品久久不卡毛片| 欧美mv日韩mv| 91小视频免费观看| 婷婷亚洲久悠悠色悠在线播放| 久久九九影视网| 欧美三级三级三级| 国产高清亚洲一区| 一片黄亚洲嫩模| 国产人伦精品一区二区| 日韩一区二区在线观看视频| 成人网在线免费视频| 午夜国产精品影院在线观看|