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

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

?? iap.c

?? C語言源代碼及相關資料
?? C
字號:

#include "config.h"

/*定義CCLK值大小,單位為KHz*/
#define		IAP_FCCLK	48000

#define 	IAP_ENTER_ADR   0x7FFFFFF1              // IAP入口地址定義

uint32	paramin[8];		                            //IAP入口參數緩沖區
uint32	paramout[8];	                            //IAP出口參數緩沖區

/*********************************************************************************************************
**函數名稱:SelSector
**函數功能:IAP操作緩沖區選擇,代碼為50
**入口參數:sec1	起始扇區
**			sec2	終止扇區
**出口參數:IAP 操作狀態碼
**			IAP返回值(paramout緩沖區)
********************************************************************************************************/
uint32	SelSector(uint8	sec1, uint8	sec2)
{
	paramin[0] = IAP_SELECTOR;	                    //設置命令字
	paramin[1] = sec1;			                    //設置參數
	paramin[2] = sec2;
	(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);	//調用IAP服務程序
	return(paramout[0]);	                        //返回狀態碼
}
/*********************************************************************************************************
**函數名稱:RamToFlash
**函數功能:復制RAM的數據到FLASH,命令代碼51
**入口參數:dst		目標地址,即FLASH起始地址,以256字節為分界
**			src		源地址,即RAM地址,地址必須字對其
**			no		復制字節個數,為256/512/1024/4096
**出口參數:IAP 操作狀態碼
**			IAP返回值(paramout緩沖區)
********************************************************************************************************/
uint32	RamToFlash(uint32 dst, uint32 src, uint32 no)
{
	paramin[0] = IAP_RAMTOFLASH;	                //設置命令字
	paramin[1] = dst;				                //設置參數
	paramin[2] = src;
	paramin[3] = no;
	paramin[4] = IAP_FCCLK;
	(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);	//調用IAP服務程序
	return(paramout[0]);			                //返回狀態碼
}
/*********************************************************************************************************
**函數名稱:EraseSector
**函數功能:擦除扇區,命令代碼52
**入口參數:sec1	起始扇區
**			sec2	終止扇區
**出口參數:IAP 操作狀態碼
**			IAP返回值(paramout緩沖區)
********************************************************************************************************/
uint32	EraseSector(uint32 sec1, uint32 sec2)
{
	paramin[0] = IAP_ERASESECTOR;	                //設置命令字
	paramin[1] = sec1;				                //設置參數
	paramin[2] = sec2;
	paramin[3] = IAP_FCCLK;
	(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);	//調用IAP服務程序
	return(paramout[0]);			                //返回狀態碼
}
/*********************************************************************************************************
**函數名稱:BlankCHK
**函數功能:查空扇區,命令代碼53
**入口參數:sec1	起始扇區
**			sec2	終止扇區
**出口參數:IAP 操作狀態碼
**			IAP返回值(paramout緩沖區)
********************************************************************************************************/
uint32	BlankCHK(uint32	sec1, uint32 sec2)
{
	paramin[0] = IAP_BLANKCHK;	//設置命令字
	paramin[1] = sec1;				                //設置參數
	paramin[2] = sec2;
	paramin[3] = IAP_FCCLK;
	(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);	//調用IAP服務程序
	return(paramout[0]);			                //返回狀態碼
}
/*********************************************************************************************************
**函數名稱:ReadParID
**函數功能:讀器件ID,命令代碼54
**入口參數:器件ID地址指針
**出口參數:IAP 操作狀態碼
**			IAP返回值(paramout緩沖區)
********************************************************************************************************/
uint32	ReadParID(uint32 *Device_ID)
{
	paramin[0] = IAP_READPARTID;	                //設置命令字
	(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);	//調用IAP服務程序
	*Device_ID = paramout[1];
	return(paramout[0]);			                //返回狀態碼
}
/*********************************************************************************************************
**函數名稱:BootCodeID
**函數功能:讀boot代碼ID,命令代碼55
**入口參數:boot代碼ID地址指針
**出口參數:IAP 操作狀態碼
**			IAP返回值(paramout緩沖區)
********************************************************************************************************/
uint32	BootCodeID(uint32 *Boot_ID)	
{
	paramin[0] = IAP_BOOTCODEID;	                //設置命令字
	(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);	//調用IAP服務程序
	*Boot_ID = paramout[1];
	
	return(paramout[0]);			                //返回狀態碼
}
/*********************************************************************************************************
**函數名稱:Compare
**函數功能:校驗數據,命令代碼56
**入口參數:dst		目標地址,即RAM/FLASH起始地址,地址必須字對齊
**			src		源地址,即RAM/RAM地址,地址必須字對齊
**			no		比較字節個數,必須能被4整除
**出口參數:IAP 操作狀態碼
**			IAP返回值(paramout緩沖區)
********************************************************************************************************/
uint32	Compare(uint32	dst,uint32	src,uint32	no)
{
	paramin[0] = IAP_COMPARE;	                        //設置命令字
	paramin[1] = dst;				                    //設置參數
	paramin[2] = src;
	paramin[3] = no;
	(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);	    //調用IAP服務程序
	return(paramout[0]);			                    //返回狀態碼 
}
/*********************************************************************************************************
**函數名稱:Reinvoke_ISP
**函數功能:重新調用ISP,命令代碼57。
**入口參數:無
**出口參數:無
********************************************************************************************************/
void  Reinvoke_ISP(void)
{
	paramin[0] = IAP_REINVOKE_ISP;					    // 設置命令字
	(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);	    // 重新調用ISP
} 
/*********************************************************************************************************
**函數名稱:WriteFlash
**函數功能:向FLASH中寫入數據
**入口參數:dst		目標地址,即FLASH起始地址,地址必須以256字節對齊,即地址的低8位必須為0
**			src		源地址,即RAM地址,地址必須字對齊,即地址的低兩位必須為0
**			no		寫入字節數,必須為256/512/1024/4096
**出口參數:Compare的返回值,操作成功正確返回0
********************************************************************************************************/
uint8	WriteFlash(uint32 dst, uint32 src, uint32 no)
{
	SelSector((dst/0x1000),(dst+no)/0x1000);	        //選擇扇區
	EraseSector((dst/0x1000),(dst+no)/0x1000);	        //擦除扇區
	BlankCHK((dst/0x1000),(dst+no)/0x1000);		        //查空扇區
	
	SelSector((dst/0x1000),(dst+no)/0x1000);	        //選擇扇區
	
	RamToFlash(dst,src,no);			                    //寫數據到FLASH
	return(Compare(dst,src,no));	                    //比較數據
}


/**************************************************************************** 

* 名稱:WrDatatoInChip
* 功能:IAP函數調用,測試。通過觀察IAP出口參數來判斷操作是否成功。 
* 功能:將接收到數據保存到EEPROM
* 入口參數:write_addr 數據需寫入的起始地址的偏移量
*           len   數據長度
* 出口參數:無
* 
****************************************************************************/ 

uint8 WrDatatoInChip(uint8	sec_id,uint8	end_sec_id,uint32 write_addr ,uint8 * strSendMes, uint32 datalen ) 

{ 
	uint32 	i=0;
	uint32  j=0;
	volatile uint8  *ip=NULL;
	uint8 strProtBuff[ByteINSector];  //用來在扇區擦除前保存扇區中的內容
	//準備數據
	ip=GetAddrInChip(0);//(volatile uint16 *)FLASH_ADDR_InChip+0;
	for(i=0;i<ByteINSector;i++)
	   strProtBuff[i] = *ip++;
	for(j=0;j<datalen;j++)
		strProtBuff[write_addr+j] = strSendMes[j];
	
	ip=(volatile uint8 *)SDRAM_ADDR_InChip;
	for(i=0;i<ByteINSector;i++)
	   *ip++=strProtBuff[i];
	
	 OS_ENTER_CRITICAL();
	 //ReadParID(); 
	 //BootCodeID(); 
	 SelSector(sec_id,end_sec_id); // 選擇扇區1 
	 EraseSector(sec_id,end_sec_id); // 擦除扇區1 
	 BlankCHK(sec_id,end_sec_id) ; // 查空扇區1 
	 SelSector(sec_id,end_sec_id); 
	 RamToFlash(FLASH_ADDR_InChip, SDRAM_ADDR_InChip, ByteINSector); // 寫數據到扇區1 
	 BlankCHK(sec_id,end_sec_id) ; 
	 Compare(FLASH_ADDR_InChip, SDRAM_ADDR_InChip, ByteINSector); // 比較數據 
	 
	 OS_EXIT_CRITICAL();
	 
	 return TRUE; 
 
} 
/****************************************************************************
* 名稱:GetDatafromInChip()
* 功能:從扇區中取出相應的數據,保存在字符串strSendMes中
* 入口參數:begin_addr 數據所在的起始地址的偏移量
*           i   數據長度
* 出口參數:無
* 注意:這里只考慮單個查詢的情況
****************************************************************************/

uint8 GetDatafromInChip(uint32 begin_addr ,uint8 * strSendMes, uint32 datalen)
{
	uint32 j=0;
    volatile uint8  *ip=NULL;
    uint32 Addr;
   
    OS_ENTER_CRITICAL();
    Addr = (uint32)begin_addr;
    ip = GetAddrInChip(Addr);
	for(j=0;j<datalen;j++)
	{
	    strSendMes[j] = *ip++;
	}
	OS_EXIT_CRITICAL();	
	
	return TRUE; 
	
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久www免费人成精品| 亚洲一区二区不卡免费| 亚洲欧美日韩国产综合| 首页欧美精品中文字幕| 成人性视频免费网站| 91精品国产综合久久福利软件| 国产精品视频一区二区三区不卡| 日韩va亚洲va欧美va久久| 99精品视频一区| 久久嫩草精品久久久精品一| 天堂久久久久va久久久久| 成人黄色在线看| 久久人人爽人人爽| 日韩成人伦理电影在线观看| 在线看日本不卡| 亚洲人亚洲人成电影网站色| 成人动漫av在线| 久久嫩草精品久久久精品| 蜜桃久久精品一区二区| 国产女主播视频一区二区| 亚洲成av人在线观看| 色94色欧美sute亚洲线路二| 国产精品免费视频观看| 国产精品综合一区二区| 精品美女一区二区三区| 午夜视频在线观看一区二区| 日本丶国产丶欧美色综合| 亚洲三级在线播放| 成人高清免费观看| 日本一区二区三区在线不卡 | 麻豆精品国产91久久久久久| 欧美日本国产视频| 日韩高清欧美激情| 欧美日本一区二区三区四区| 午夜精品123| 欧美精选一区二区| 日韩在线一区二区| 91精品国产综合久久久久久久| 性久久久久久久久| 51精品秘密在线观看| 奇米影视在线99精品| 日韩久久免费av| 国产精品自拍在线| 国产拍揄自揄精品视频麻豆 | 久久精品久久精品| 日韩精品中午字幕| 国产在线看一区| 国产女同性恋一区二区| 91美女蜜桃在线| 婷婷中文字幕一区三区| 欧美一区二区三区在| 麻豆精品精品国产自在97香蕉 | 国产一区二区免费看| 国产日韩精品一区二区三区在线| 99久久99久久综合| 亚洲一区在线观看网站| 日韩欧美精品在线| 成人综合在线网站| 一区二区三区产品免费精品久久75| 欧美中文字幕一区| 韩国v欧美v亚洲v日本v| 国产精品免费av| 欧美日韩一级视频| 国产一区二区三区电影在线观看 | 日韩精品免费专区| 久久久av毛片精品| 97久久精品人人做人人爽| 丝袜美腿亚洲综合| 国产亚洲欧美色| 在线观看精品一区| 国产一区二区三区四区五区入口 | 香蕉影视欧美成人| 久久影视一区二区| 欧亚洲嫩模精品一区三区| 美国毛片一区二区| 亚洲美女电影在线| 久久久久久久久久久久久夜| 日本韩国欧美三级| 国产美女在线精品| 亚洲成人av一区| 国产精品天干天干在线综合| 欧美一区午夜精品| 99热精品国产| 国产美女娇喘av呻吟久久| 亚洲成av人片在线观看无码| 国产精品国产三级国产aⅴ入口| 69堂成人精品免费视频| 色综合久久中文综合久久97| 国产精品99久久久久久宅男| 日韩影院免费视频| 国产精品国模大尺度视频| 精品第一国产综合精品aⅴ| 在线观看国产日韩| 91在线国产福利| 国产成人高清在线| 久久精品久久综合| 日精品一区二区三区| 亚洲精品国产无天堂网2021| 国产视频亚洲色图| 精品国产区一区| 欧美浪妇xxxx高跟鞋交| 一本大道久久a久久综合| 成人av一区二区三区| 极品少妇一区二区三区精品视频 | 最新不卡av在线| 国产欧美日本一区视频| 久久日韩精品一区二区五区| 制服丝袜在线91| 欧美卡1卡2卡| 7777精品伊人久久久大香线蕉的| 欧美三级资源在线| 欧美视频在线观看一区二区| 在线观看av不卡| 欧美性极品少妇| 777a∨成人精品桃花网| 欧美高清视频不卡网| 在线精品视频一区二区三四| 在线观看欧美精品| 欧美日韩一区二区电影| 欧美人伦禁忌dvd放荡欲情| 欧美三区在线观看| 91精品国产色综合久久不卡蜜臀 | aaa欧美色吧激情视频| 粉嫩嫩av羞羞动漫久久久| 国产成人一区二区精品非洲| 丁香五精品蜜臀久久久久99网站| 成人性视频免费网站| 99久久国产综合精品女不卡| 色视频欧美一区二区三区| 91国模大尺度私拍在线视频| 欧美日韩亚州综合| 日韩欧美国产一区二区在线播放 | 欧美精品乱人伦久久久久久| 欧美剧情电影在线观看完整版免费励志电影| 欧美唯美清纯偷拍| 日韩欧美一区二区三区在线| 久久精品亚洲精品国产欧美kt∨| 国产精品国产三级国产有无不卡 | 日韩伦理电影网| 亚洲一区二区三区四区在线观看 | 欧美另类高清zo欧美| 欧美一二三在线| 国产欧美日韩久久| 亚洲伊人色欲综合网| 久久精品噜噜噜成人av农村| 成人在线一区二区三区| 色综合久久99| 精品国精品国产| 国产精品久久久久久久久久久免费看 | 日韩一区二区免费视频| 国产精品私人自拍| 午夜精品视频一区| 国产精品一二三四区| 日本电影欧美片| 2020国产成人综合网| 一区二区三区欧美激情| 麻豆成人av在线| 色婷婷国产精品| 精品久久久久久久久久久院品网 | 国产日韩欧美一区二区三区综合| 一区二区三区在线免费播放| 精品一区二区久久| 在线视频你懂得一区| 欧美成va人片在线观看| 亚洲免费色视频| 激情文学综合丁香| 欧美在线看片a免费观看| 久久久久亚洲蜜桃| 午夜精品一区二区三区三上悠亚| 成人亚洲一区二区一| 日韩欧美成人一区| 亚洲乱码国产乱码精品精的特点| 精品一区在线看| 精品视频一区二区不卡| 国产精品久久久久久久久久久免费看 | 欧美一区二区精品在线| 亚洲视频在线一区| 国产九色精品成人porny| 91精品麻豆日日躁夜夜躁| 亚洲人妖av一区二区| 国产高清不卡一区| 日韩精品专区在线影院重磅| 亚洲成av人片观看| 色婷婷综合激情| 中文字幕亚洲在| 国产伦精品一区二区三区视频青涩| 欧美日韩一区成人| 亚洲高清中文字幕| 91激情在线视频| 亚洲男人的天堂在线观看| 成人手机在线视频| 国产人妖乱国产精品人妖| 国内精品久久久久影院一蜜桃| 日韩视频在线一区二区| 日韩精品电影在线观看| 欧美久久一区二区| 免费人成在线不卡| 日韩免费成人网| 国内外精品视频| 26uuu久久综合|