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

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

?? smallflash.c

?? 基于BF561的JS28F128 FLASH驅動
?? C
字號:
#include "SmallFlash.h"

#define OS_EXIT_CRITICAL()   
#define OS_ENTER_CRITICAL() 

#define DQ7    0x80
#define DQ6    0x40
#define DQ54	  0x60


void FlashWriteCell(UDWORD dwOffset,UWORD wdData)
{
	UWORD* pAddr = (UWORD*)FLASH_BASE;

	OS_ENTER_CRITICAL();
	pAddr       += dwOffset;
	*pAddr       = wdData;	
	OS_EXIT_CRITICAL();

	return;
}


void FlashReadCell(UDWORD dwOffset,UWORD* pData)
{
	UWORD* pAddr = (UWORD*)FLASH_BASE;
	pAddr       += dwOffset;
	
	OS_ENTER_CRITICAL();
	*pData       = *pAddr;
	OS_EXIT_CRITICAL();
}

BOOL FlashUnlock(UDWORD dwOffset)
{
	//FlashWriteCell(0x5555, 0xAA);
	//FlashWriteCell(0x2AAA, 0x55);
	//FlashWriteCell(0x5555, 0xA0);
	FlashWriteCell(dwOffset, 0x40);
	
	return TRUE;
}

void FlashReset()
{
	//向任意地址寫0xFF
	FlashWriteCell(0x0000,0xFFFF);
}

BOOL FlashErasePollToggleBit(UDWORD dwOffset)
{
	UWORD  btData0;
	int i,j;	
	
	for(i=0;i<0x1000;i++)
	{
		for(j=0;j<0x10;j++)
			asm("NOP;");
		
		//發送0x70命令
		FlashWriteCell(dwOffset,0x70);
			
		for(j=0;j<0x10;j++)
			asm("NOP;");
			
		//讀狀態
		FlashReadCell(dwOffset,&btData0);
		if(!(btData0 & DQ7))
		{
			continue;				
		}

		//btData0=0x80;
		if(!(btData0 & DQ54))
		{
			//bit5bit4==00成功擦除
			return TRUE;
		}
		
	}
	
	return FALSE;
}


BOOL FlashPollToggleBit(UDWORD dwOffset)
{
	UWORD  btData0;
	int i,j;

	for(i=0;i<0x100;i++)
	{
		for(j=0;j<0x10;j++)
			asm("NOP;");
		
		//發送0x70命令
		FlashWriteCell(dwOffset,0x70);
			
		for(j=0;j<0x10;j++)
			asm("NOP;");
			
		//讀狀態
		FlashReadCell(dwOffset,&btData0);
		
		if(!(btData0 & DQ7))
		{
			continue;				
		}

		//btData0=0x80;
		if(!(btData0 & DQ54))
		{
			//bit5bit4==00成功擦除
			return TRUE;
		}
	}
	return FALSE;
}


/***********************************************
// 函數名稱: FlashEraseChip
// 函數說明: 刪除整個芯片數據
// 返回值  : BOOL  : 
***********************************************/
BOOL FlashEraseChip()
{
	UDWORD i;
	for(i=0;i<FLASH_SIZE / FLASH_BLOCK_SIZE;i++)
	{
		if(!FlashEraseBlock(i))
		{
			return FALSE;
		}
	}
	return TRUE;	
}


/***********************************************
// 函數名稱: FlashEraseBlock
// 函數說明: 刪除指定塊數據
// 返回值  : BOOL  : 
// 參數說明: UDWORD dwBlockNum : 待刪除的塊號,從0開始編號
***********************************************/
BOOL FlashEraseBlock(UDWORD dwBlockNum)
{
	UDWORD dwOffset;
	UDWORD i;
	if(dwBlockNum >= FLASH_SIZE / FLASH_BLOCK_SIZE)
		return FALSE;//非法塊號
		
	dwOffset   = dwBlockNum * FLASH_BLOCK_SIZE;
	dwOffset >>= 1;
	FlashWriteCell(dwOffset, 0x20);
	FlashWriteCell(dwOffset, 0xD0);

	FlashErasePollToggleBit(dwOffset);

	for(i=0;i<0xc00000;i++)
		asm("NOP;");
	FlashReset();

	return TRUE;	
}  


/***********************************************
// 函數名稱: FlashGetID
// 函數說明: 得到FlashID
// 返回值  : UWORD  : 返回設備ID
***********************************************/
UWORD FlashGetID()
{	
	UWORD wdDeviceCode = 0,wdManCode = 0;
		
	//FlashWriteCell(0x5555, 0xaa);
	//FlashWriteCell(0x2AAA, 0x55);
	FlashWriteCell(0x5555, 0x90);	
	
	FlashReadCell(0,&wdManCode);
	FlashReadCell(1,&wdDeviceCode);
	FlashReset();
		
	return (wdDeviceCode|(wdManCode<<8));
}


/***********************************************
// 函數名稱: FlashWriteData
// 函數說明: 向Flash寫入數據
// 返回值  : BOOL  : 
// 參數說明: UDWORD dwOffset    : Flash偏移量,以字節計,且必須是2的整數倍
// 參數說明: UDWORD dwCount     : 寫入的數據個數,以字節計,且必須是2的整數倍
// 參數說明: UDWORD dwStride    : 無效,且只能使用1
// 參數說明: const UWORD *pData : 待寫數據緩沖區
***********************************************/
BOOL FlashWriteData(UDWORD dwOffset,UDWORD dwCount,UDWORD dwStride,void *pData)
{
	UDWORD i,j;	
	UWORD *pwdData = (UWORD*)pData;
	//將字節操作轉換為UWORD操作
	dwOffset >>= 1;
	dwCount  >>= 1;
	dwStride   = 1;
	
	for (i = 0; i < dwCount; i++)
	{	
		FlashWriteCell(dwOffset, 0x40);//準備寫flash
		FlashWriteCell(dwOffset, pwdData[i]);
		if(!FlashPollToggleBit(dwOffset))
		{
			//FlashReset();
			//return FALSE;
		}
		dwOffset += dwStride;
	}
	
	FlashReset();
	return TRUE;
}


/***********************************************
// 函數名稱: FlashReadData
// 函數說明: 從Flash中讀數據
// 返回值  : BOOL  : 
// 參數說明: UDWORD dwOffset : Flash偏移量,以字節計,且必須是2的整數倍
// 參數說明: UDWORD dwCount  : 讀數據個數,以字節計,且必須是2的整數倍
// 參數說明: UDWORD dwStride : 無效,且只能使用1
// 參數說明: void *pData     : 存放所讀數據緩沖區,以節對齊
***********************************************/
BOOL FlashReadData(UDWORD dwOffset,UDWORD dwCount,UDWORD dwStride,void *pData)
{
	UDWORD i,j;	
	UWORD *pwdData = (UWORD*)pData;
	//將字節操作轉換為UWORD操作
	dwOffset >>= 1;
	dwCount  >>= 1;
	dwStride   = 1;


	for (i = 0; i < dwCount; i++)
	{		
		FlashReadCell(dwOffset, &pwdData[i]);		
		dwOffset += dwStride;
	}	
	
	FlashReset();
	
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产suv精品一区二区883| 91.com视频| 美女mm1313爽爽久久久蜜臀| 国产精品免费免费| 精品久久久影院| 在线视频一区二区三| 国产成人午夜精品影院观看视频 | 欧美激情综合网| 欧美区一区二区三区| 9i看片成人免费高清| 国产一区二区视频在线播放| 日本成人在线电影网| 亚洲综合成人在线| 成人免费在线播放视频| 久久精品网站免费观看| 日韩一区二区三区精品视频 | 色婷婷激情综合| 成人国产精品视频| 国内不卡的二区三区中文字幕 | 亚洲精品视频一区| 国产精品人成在线观看免费| 久久亚洲私人国产精品va媚药| 欧美日本国产视频| 欧美性极品少妇| 欧美在线观看视频一区二区| 91亚洲精品一区二区乱码| 国产成人精品亚洲777人妖| 国产一区二区在线视频| 看电影不卡的网站| 男女性色大片免费观看一区二区| 亚洲国产你懂的| 一区二区三区视频在线看| 亚洲男人的天堂av| 一区二区欧美精品| 亚洲午夜三级在线| 亚洲综合一区二区三区| 一区二区三区日韩| 亚洲另类春色国产| 一区二区三区精品| 亚洲影院理伦片| 天天综合天天综合色| 日韩成人免费在线| 久久福利视频一区二区| 久久99久国产精品黄毛片色诱| 另类专区欧美蜜桃臀第一页| 九九精品视频在线看| 国产一区二区不卡在线| 国产成人精品综合在线观看 | 久久久精品欧美丰满| 久久久久九九视频| 亚洲欧美综合在线精品| 亚洲激情网站免费观看| 午夜在线电影亚洲一区| 日韩经典中文字幕一区| 国产在线精品一区二区三区不卡| 国产精品资源网| kk眼镜猥琐国模调教系列一区二区| www.色精品| 欧美视频三区在线播放| 欧美一区二区精品| 久久久午夜精品理论片中文字幕| 国产精品久久夜| 亚洲国产成人tv| 久久www免费人成看片高清| 国产精品亚洲午夜一区二区三区| 成人美女在线视频| 欧美午夜精品免费| 久久免费国产精品| 一区二区三区蜜桃网| 日韩在线a电影| 国产二区国产一区在线观看| 91麻豆产精品久久久久久| 91精品一区二区三区久久久久久| 欧美大度的电影原声| 国产精品视频第一区| 亚洲一区在线视频| 久久se精品一区精品二区| 97精品久久久久中文字幕| 91精品麻豆日日躁夜夜躁| 国产三区在线成人av| 亚洲男人天堂一区| 激情综合色综合久久| 色94色欧美sute亚洲线路一久| 在线播放欧美女士性生活| 亚洲国产精品传媒在线观看| 亚洲第一精品在线| 国产成人午夜精品5599| 欧美福利视频一区| 国产精品久久毛片av大全日韩| 日本成人中文字幕在线视频| 91亚洲国产成人精品一区二区三| 欧美精选一区二区| 椎名由奈av一区二区三区| 久久精品国产精品亚洲精品| 色综合咪咪久久| 久久婷婷国产综合国色天香| 亚洲自拍偷拍av| 国产99久久久精品| 欧美不卡一区二区三区四区| 亚洲一区二区三区视频在线播放 | 99久久免费视频.com| 制服丝袜在线91| 亚洲视频 欧洲视频| 国产在线精品一区二区| 欧美电影一区二区| 一区二区高清视频在线观看| 国产高清精品网站| 日韩欧美卡一卡二| 一区二区久久久久| 99re热这里只有精品免费视频 | 9191精品国产综合久久久久久| 亚洲欧洲精品成人久久奇米网| 精品一区二区三区免费视频| 欧美无砖专区一中文字| 韩国中文字幕2020精品| 欧美午夜片在线观看| 亚洲精品一二三区| 99久久精品免费精品国产| 中文字幕av资源一区| 国产一区二区看久久| 日韩亚洲欧美在线观看| 香蕉久久一区二区不卡无毒影院| 91高清视频免费看| 亚洲卡通动漫在线| 99国产精品久久久久| 国产精品欧美一区二区三区| 国产精品一区在线观看你懂的| 日韩精品中文字幕一区| 免费看黄色91| 欧美不卡一区二区三区四区| 久久99精品国产麻豆婷婷洗澡| 日韩视频中午一区| 麻豆免费精品视频| 精品久久国产97色综合| 国模套图日韩精品一区二区| 精品电影一区二区三区| 麻豆精品一二三| 精品盗摄一区二区三区| 国产在线麻豆精品观看| 久久久噜噜噜久噜久久综合| 国产成人夜色高潮福利影视| 国产欧美日韩综合精品一区二区| 国产河南妇女毛片精品久久久| 国产欧美一区二区在线观看| 成人av网站免费| 亚洲女女做受ⅹxx高潮| 欧美色图激情小说| 水蜜桃久久夜色精品一区的特点| 欧美精品18+| 99国产精品一区| 欧美视频在线不卡| 亚洲成a人片综合在线| 欧美精品一卡两卡| 激情成人午夜视频| 欧美极品美女视频| 91行情网站电视在线观看高清版| 亚洲欧美一区二区三区极速播放| 色婷婷国产精品综合在线观看| 五月婷婷综合激情| 日韩一区二区免费高清| 国产精品一区二区在线观看网站| 中文字幕欧美国产| 欧美午夜宅男影院| 黑人巨大精品欧美一区| 亚洲欧洲av色图| 7777精品伊人久久久大香线蕉完整版 | 97se亚洲国产综合自在线不卡| 亚洲欧美另类图片小说| 欧美伦理电影网| 丰满亚洲少妇av| 亚洲自拍欧美精品| 久久综合999| 日本成人在线不卡视频| 国产嫩草影院久久久久| 欧美在线播放高清精品| 久久99精品视频| 亚洲少妇30p| 日韩三级精品电影久久久 | 欧美久久久影院| 床上的激情91.| 日韩二区三区在线观看| 国产精品免费网站在线观看| 777a∨成人精品桃花网| 99久久99精品久久久久久| 奇米色一区二区三区四区| 国产精品久久二区二区| 欧美一级搡bbbb搡bbbb| 91麻豆国产福利精品| 精品一区二区三区日韩| 亚洲图片一区二区| 国产欧美视频一区二区三区| 欧美精选一区二区| 91网站视频在线观看| 久久国产人妖系列| 午夜在线成人av| 亚洲免费高清视频在线| 国产亚洲欧美中文| 日韩一区二区不卡| 欧美日韩性生活| 一本色道久久综合精品竹菊|