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

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

?? flash.c

?? 基于AT91SAM7x256的硬件平臺的WEB服務器源碼(A&shy DS版本, ucOS_II+LWIP+自己編寫的DNS查詢工具)
?? C
?? 第 1 頁 / 共 2 頁
字號:
//*------------------------------------------------------------------------------------------------
//* 文件名		   : flash.c
//* 功能描述	   : flash驅動函數
//* 作者    	   : 焦海波
//* 版本		   : 0.2
//* 建立日期、時間 : 2006/06/26 09:30
//* 修改日期、時間 : 2006/06/28 15:03
//* 修改原因	   : 原來的寫入函數在頁面編程完畢后沒有對編程結果進行容錯,這次修改增加了容錯代碼。
//*------------------------------------------------------------------------------------------------
//*------------------------------------------ 頭文件 -----------------------------------------------
#include	"/uCOS_II/os_cpu.h"
#include	"/at91sam7x256/include/AT91SAM7X256.h"
#include	"flash.h"
//*------------------------------------- 常量、變量、宏 --------------------------------------------
#define	FLASG_PAGE_SIZE_MASK	0x000000FF
#define	FLASH_PAGE_SIZE			256
#define	FLASH_PAGE_NB			1024

//* AT91C_IFLASH + FLASH_PAGE_NB * FLASH_PAGE_SIZE		
#define	AT91C_IFLASH_ENDADDR	0x00140000

#define	FLASH_LOCK_REGIONS_NB	16
#define PAGES_PER_LOCK_REGION	64
#define	FSR_LOCK_BIT_OFFSET		16
#define AT91C_MC_CORRECT_KEY  	((unsigned int) 0x5A << 24)

//* 對32位數據進行32位對齊,實際運算結果將得到一個能被4整除的數據
#define ALIGN32(unData)		((unData + 3) & ~3)

//* 等待FLASH指令執行成功
#define	__macDFL_WaitFlashReady(unStatus)	while(!((unStatus = AT91C_BASE_MC->MC_FSR) & AT91C_MC_FRDY))

//* 設置對FLASH進行擦寫操作時的正確的FMCN值。擦寫FLASH時需要將FMCN設置為1.5微妙的主時鐘周期數。
#define	__macDFL_SetFMCNForFlash()			AT91C_BASE_MC->MC_FMR = (AT91C_BASE_MC->MC_FMR & ~AT91C_MC_FMCN) | (72 << 16)

//* 設置對NVM位進行操作時的正確的FMCN值。其值設置為1微妙的主時鐘周期數。
#define	__macDFL_SetFMCNForNVM()			AT91C_BASE_MC->MC_FMR = (AT91C_BASE_MC->MC_FMR & ~AT91C_MC_FMCN) | (48 << 16)

//* 讀取鎖定位狀態
#define	__macDFL_GetLockStatus()			(AT91C_BASE_MC->MC_FSR & ((unsigned int)0xFFFF << 16))

#define	__macDFL_GetNVMStatus(cNVMBit)		(AT91C_BASE_MC->MC_FSR & ((unsigned int)0x01 << (8 + cNVMBit)))

//*------------------------------------- 函數原型聲明 ----------------------------------------------
static unsigned int __DFL_WriteFlash(unsigned int *punFrom, unsigned int unTo, int nSize, char cIsLocked);
static char __DFL_WritePage(short sPageIdx, char cIsLocked, unsigned int *punFrom, unsigned int unLen);
//*================================================================================================
//*                     函 數 區
//*================================================================================================
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : DFL_IsLockedPage
//* 功能描述 : 指定頁面是否已被鎖定
//* 入口參數 : <sPageIdx>[in] 指定要鎖定的頁面,范圍為0-1023
//* 出口參數 : - TRUE : 該頁被鎖定
//*			 : - FALSE: 該頁未被鎖定
//*------------------------------------------------------------------------------------------------
int DFL_IsLockedPage(short sPageIdx)
{
	unsigned int __unLockStatus;
	char		__cBitNum;

	if(sPageIdx < 0 || sPageIdx > 1023)
		return FALSE;
		
	__cBitNum = sPageIdx / PAGES_PER_LOCK_REGION;

	__unLockStatus = __macDFL_GetLockStatus();
	
	return (__unLockStatus & ((unsigned int)(0x01 << (__cBitNum + FSR_LOCK_BIT_OFFSET))));	
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : DFL_PageLock
//* 功能描述 : 將指定的FLASH頁面鎖定以禁止編程
//* 入口參數 : <sPageIdx>[in] 指定要鎖定的頁面,范圍為0-1023
//* 出口參數 : 成功則返回TRUE,否則返回FALSE
//*------------------------------------------------------------------------------------------------
int DFL_PageLock(short sPageIdx)
{
#if OS_CRITICAL_METHOD == 3                     
    OS_CPU_SR  	cpu_sr = 0;
#endif

	unsigned int __unStatus;	
	
	if(sPageIdx < 0 || sPageIdx > 1023)
		return FALSE;
		
	if(DFL_IsLockedPage(sPageIdx))
		return TRUE;
	
	OS_ENTER_CRITICAL()
	{
		__macDFL_SetFMCNForNVM();
	
		AT91C_BASE_MC->MC_FCR = AT91C_MC_CORRECT_KEY | AT91C_MC_FCMD_LOCK | (sPageIdx << 8);
	
		__macDFL_WaitFlashReady(__unStatus);
	}	
	OS_EXIT_CRITICAL()	
		
	return DFL_IsLockedPage(sPageIdx);
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : DFL_PageUnlock
//* 功能描述 : 解鎖指定的FLASH頁面
//* 入口參數 : <sPageIdx>[in] 指定要解鎖的頁面,范圍為0-1023
//* 出口參數 : 成功則返回TRUE,否則返回FALSE
//*------------------------------------------------------------------------------------------------
int DFL_PageUnlock(short sPageIdx)
{
#if OS_CRITICAL_METHOD == 3                     
    OS_CPU_SR  		cpu_sr = 0;
#endif

	unsigned int __unStatus;

	if(sPageIdx < 0 || sPageIdx > 1023)
		return FALSE;
		
	if(!DFL_IsLockedPage(sPageIdx))
		return TRUE;

	OS_ENTER_CRITICAL()		
	{
		__macDFL_SetFMCNForNVM();
	
		AT91C_BASE_MC->MC_FCR = AT91C_MC_CORRECT_KEY | AT91C_MC_FCMD_UNLOCK | (sPageIdx << 8);
	
		__macDFL_WaitFlashReady(__unStatus);
	}
	OS_EXIT_CRITICAL()	
		
	return !DFL_IsLockedPage(sPageIdx);
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : DFL_WriteFlash
//* 功能描述 : 通過調用__DFL_WriteFlash()完成把數據寫入FLASH的工作。
//* 入口參數 : <punFrom>[in] 指向寫入數據的指針
//*          :    <unTo>[in] 要寫入的地址
//*          :   <nSize>[in] 要寫入的數據長度
//* 出口參數 : 參見__DFL_WriteFlash()函數返回值說明
//*------------------------------------------------------------------------------------------------
unsigned int DFL_WriteFlash(unsigned int *punFrom, unsigned int unTo, int nSize)
{
	return __DFL_WriteFlash(punFrom, unTo, nSize, FALSE);
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : DFL_WriteAndLockFlash
//* 功能描述 : 通過調用__DFL_WriteFlash()完成把數據寫入FLASH并鎖定相關頁面的工作,
//* 入口參數 : <punFrom>[in] 指向寫入數據的指針
//*          :    <unTo>[in] 要寫入的地址
//*          :   <nSize>[in] 要寫入的數據長度
//* 出口參數 : 參見__DFL_WriteFlash()函數返回值說明
//*------------------------------------------------------------------------------------------------
unsigned int DFL_WriteAndLockFlash(unsigned int *punFrom, unsigned int unTo, int nSize)
{
	return __DFL_WriteFlash(punFrom, unTo, nSize, TRUE);
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : DFL_EraseAllFlash
//* 功能描述 : 擦除整個FLASH
//* 入口參數 : 無
//* 出口參數 : 指令執行成功返回TRUE,否則返回FLASE
//*------------------------------------------------------------------------------------------------
int DFL_EraseAllFlash(void)
{
#if OS_CRITICAL_METHOD == 3                     
    OS_CPU_SR  	cpu_sr = 0;
#endif

	unsigned int __unStatus;

	OS_ENTER_CRITICAL()
	{
		__macDFL_SetFMCNForFlash();
	
		AT91C_BASE_MC->MC_FCR = AT91C_MC_CORRECT_KEY | AT91C_MC_FCMD_ERASE_ALL;
	
		__macDFL_WaitFlashReady(__unStatus);
	}
	OS_EXIT_CRITICAL()		
	
	return !(__unStatus & (AT91C_MC_PROGE | AT91C_MC_LOCKE));
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : DFL_SetNVM
//* 功能描述 : 設置NVM位
//* 入口參數 : <cNVMBit>[in] 要設置的NVM位(0-2)
//* 出口參數 : 指令執行成功返回TRUE,否則返回FLASE
//*------------------------------------------------------------------------------------------------
int DFL_SetNVM(char cNVMBit)
{
#if OS_CRITICAL_METHOD == 3                     
    OS_CPU_SR  	cpu_sr = 0;
#endif

	unsigned int __unStatus;
	
	if(cNVMBit > 2)
		return FALSE;
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡影院免费观看| 91精品久久久久久久久99蜜臂| 成人动漫在线一区| 欧洲av一区二区嗯嗯嗯啊| 8x福利精品第一导航| 久久免费看少妇高潮| 综合自拍亚洲综合图不卡区| 亚洲成a人v欧美综合天堂 | 日韩不卡一区二区| www.成人网.com| 精品免费国产二区三区| 亚洲欧美日韩小说| 国产精品1区2区3区在线观看| 在线视频观看一区| 中文字幕第一区二区| 一区二区成人在线观看| 欧美亚洲国产bt| 亚洲精品亚洲人成人网在线播放| 亚洲欧美怡红院| 视频一区二区三区在线| 成人黄色a**站在线观看| 日韩一区二区三| 日本一区二区三区dvd视频在线| 国产精品夫妻自拍| 久久草av在线| 亚洲国产精品人人做人人爽| 激情综合色播五月| 欧美xxxx老人做受| 国产成人高清在线| 国产精品久久久久久久久免费樱桃 | 中文字幕在线一区| 国产精品影视网| 国产精品欧美极品| 成人综合婷婷国产精品久久蜜臀| 国产日韩欧美高清在线| 国产成人a级片| 国产欧美日韩在线视频| 中文字幕亚洲一区二区va在线| 91久久精品一区二区三| 国产剧情av麻豆香蕉精品| 国产亲近乱来精品视频 | 亚洲一区二区影院| 欧美一区欧美二区| 不卡一区在线观看| 亚洲愉拍自拍另类高清精品| 欧美三级电影一区| 免费欧美在线视频| 18涩涩午夜精品.www| 欧美日韩国产综合草草| 日韩精品一二三区| 国产精品色婷婷| 欧美乱熟臀69xxxxxx| 国产精品自拍网站| 一区二区在线观看视频 | 美女国产一区二区| 国产婷婷精品av在线| 欧美在线一二三四区| 国产在线观看一区二区| 亚洲精品亚洲人成人网 | 色综合久久综合中文综合网| 国产一区二区福利| 美洲天堂一区二卡三卡四卡视频 | 欧美极品aⅴ影院| 久久久久亚洲蜜桃| 一本色道久久综合亚洲精品按摩| 久久精品久久99精品久久| 亚洲伊人伊色伊影伊综合网| 国产精品乱码人人做人人爱| 久久久国产精品午夜一区ai换脸| 制服丝袜亚洲精品中文字幕| 欧美日韩在线电影| 欧美精品乱码久久久久久| 欧美高清视频不卡网| 欧美一区午夜视频在线观看| 欧美高清hd18日本| 欧美一级黄色片| 久久久国产一区二区三区四区小说| 欧美电视剧在线看免费| 中文字幕佐山爱一区二区免费| 精品国产污污免费网站入口 | 国产经典欧美精品| 国产91精品在线观看| 成人97人人超碰人人99| 成人av在线播放网址| 色一区在线观看| 欧美一级欧美三级| 国产亚洲欧美一级| 亚洲精品免费在线| 日本成人在线电影网| 不卡区在线中文字幕| 欧美影院一区二区| 久久久久一区二区三区四区| 亚洲欧美偷拍三级| 国内精品久久久久影院一蜜桃| 99久久综合色| 日韩视频永久免费| 亚洲人123区| 国产精品一区二区三区乱码| 日本伦理一区二区| 精品国产免费视频| 中文字幕日韩av资源站| 日韩国产一二三区| 99re热视频这里只精品| 亚洲精品在线观看网站| 亚洲电影一级黄| www..com久久爱| 国产亚洲综合在线| 日产国产高清一区二区三区| 在线观看免费视频综合| 国产日产精品1区| 国模冰冰炮一区二区| 91精品国产一区二区| 亚洲国产美女搞黄色| jvid福利写真一区二区三区| 久久日韩粉嫩一区二区三区| 精品一区精品二区高清| 4hu四虎永久在线影院成人| 一区av在线播放| 欧美久久婷婷综合色| 亚洲一二三四久久| 欧美性猛交xxxx乱大交退制版 | 成人黄色片在线观看| 欧美韩日一区二区三区四区| 国v精品久久久网| 国产精品免费网站在线观看| 高清不卡一区二区在线| 国产精品美女www爽爽爽| 丰满少妇在线播放bd日韩电影| 久久新电视剧免费观看| 久久国产欧美日韩精品| 久久只精品国产| 99久久综合色| 日韩精品高清不卡| 国产日产欧产精品推荐色| 色综合色综合色综合色综合色综合 | 成人免费看片app下载| ...中文天堂在线一区| 欧美日韩高清在线播放| 久88久久88久久久| 亚洲视频一区二区在线| 欧美一区二区三区视频在线| 国产成a人亚洲| 午夜电影一区二区| 国产色一区二区| 欧美日韩dvd在线观看| 东方aⅴ免费观看久久av| 亚洲成av人综合在线观看| 久久色成人在线| 欧美精品 国产精品| 91免费视频网址| 国产不卡在线播放| 麻豆久久久久久| 午夜精品久久久久久| 国产精品理论在线观看| 26uuu精品一区二区在线观看| 欧美亚洲高清一区二区三区不卡| 成人午夜视频免费看| 国产一区二区三区观看| 成人中文字幕合集| 秋霞午夜av一区二区三区| 亚洲综合久久久久| 亚洲色图清纯唯美| 国产精品初高中害羞小美女文| 国产日韩精品视频一区| 久久久不卡影院| 国产精品久久久久影院亚瑟| 国产日韩欧美综合在线| 国产日韩三级在线| 中文字幕一区免费在线观看 | 激情综合一区二区三区| 麻豆精品蜜桃视频网站| 狠狠色狠狠色综合日日91app| 精品制服美女丁香| 国产麻豆精品一区二区| 成人视屏免费看| 色婷婷av一区二区三区大白胸| 日本韩国精品一区二区在线观看| 99re6这里只有精品视频在线观看| 色综合视频一区二区三区高清| 7777精品伊人久久久大香线蕉 | 成+人+亚洲+综合天堂| 一本一道综合狠狠老| 欧美一区二区久久| 国产精品视频在线看| 亚洲成av人片在线| 国产黑丝在线一区二区三区| 91网站在线观看视频| 日韩女优电影在线观看| 国产精品成人在线观看| 天天影视涩香欲综合网| 成人免费看黄yyy456| 日韩精品专区在线影院重磅| 国产精品天天看| 青草国产精品久久久久久| 92国产精品观看| 中文字幕乱码亚洲精品一区| 天堂成人国产精品一区| 99精品黄色片免费大全| 国产亚洲综合在线| 久久精品国产在热久久|