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

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

?? eeprom.h

?? uPSD3200系列MCU的EEPROM的仿真實例
?? H
字號:
/*--------------------------------------------------------------------------
eeprom.h

Header file for eeprom emulation using boot (secondary) flash
11/2002 Ver 0.1 - Initial Version


Copyright (c) 2002 ST Microelectronics
This example demo code is provided as is and has no warranty,
implied or otherwise.  You are free to use/modify any of the provided
code at your own risk in your applications with the expressed limitation
of liability (see below) so long as your product using the code contains
at least one uPSD products (device).

LIMITATION OF LIABILITY:   NEITHER STMicroelectronics NOR ITS VENDORS OR 
AGENTS SHALL BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, LOSS OF DATA,
INTERRUPTION OF BUSINESS, NOR FOR INDIRECT, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES OF ANY KIND WHETHER UNDER THIS AGREEMENT OR
OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
--------------------------------------------------------------------------*/


//#define PSD_REG_BASE (unsigned int) 0x0000	// base address of PSD8XXFX control registers. This area is
                                               // 256 bytes.

// Data type definitions
#define BYTE unsigned char
#define WORD unsigned int

// EEPROM Initialization Data
// Modify these values for your application.

// 								***** NOTE *****
// 						EEPROM Sector size is 8192 bytes
// 		EEPROM_RECORD_SIZE and max_records (entered by application programmer)
// 							must be defined such that
// 		(max_records * EEPROM_RECORD_SIZE) + header size (7 bytes) <= 8192/2
// 								***** NOTE *****

#define EEPROM_RECORD_SIZE 0x0080 	// size in bytes of each record (128 Bytes)

#define SECTOR_SIZE	0x2000	        // number of bytes per sector


// Addresses to use to invoke embedded algorithm in FLASH memory. Modify for your memory map.	
#define	BOOT_FLASH_SECTOR_0_XAAA (volatile unsigned char xdata *) 0x8AAA
#define	BOOT_FLASH_SECTOR_1_XAAA (volatile unsigned char xdata *) 0xAAAA 
#define	BOOT_FLASH_SECTOR_2_XAAA (volatile unsigned char xdata *) 0xCAAA
#define	BOOT_FLASH_SECTOR_3_XAAA (volatile unsigned char xdata *) 0xEAAA

#define	BOOT_FLASH_SECTOR_0_X555 (volatile unsigned char xdata *) 0x8555 
#define	BOOT_FLASH_SECTOR_1_X555 (volatile unsigned char xdata *) 0xA555 
#define	BOOT_FLASH_SECTOR_2_X555 (volatile unsigned char xdata *) 0xC555 
#define	BOOT_FLASH_SECTOR_3_X555 (volatile unsigned char xdata *) 0xE555 

// Sector base addresses. Modify for your memory map.
#define SECTOR_0_BASE_ADDRESS 0x8000
#define SECTOR_1_BASE_ADDRESS 0xA000
#define SECTOR_2_BASE_ADDRESS 0xC000
#define SECTOR_3_BASE_ADDRESS 0xE000


// Sector status definitions
#define ERASED				0xFF
#define RECEIVE_DATA 		0xFE
#define	VALID__SECTOR		0xFC
#define TRANSFER_COMPLETE	0xF8

// Record status definitions
#define UNINITIALIZED	0xFF
#define VALID_DATA		0xFE
#define UPDATE_DATA		0xFC
#define SUPERSEDED		0xF8

// Secondary flash sector definitions
#define SECTOR_0	0x00
#define SECTOR_1	0x01
#define SECTOR_2	0x02
#define SECTOR_3	0x03

// EEPROM error codes
#define SECTOR_FULL				0x80
#define FORMAT_FAILED			0x81
#define ILLEGAL_RECORD_NUMBER	0x82
#define INVALID_COMMAND			0x83
#define INVALID_STATUS			0x84
#define SECTOR_ID_ERROR			0x85
#define EEPROM_INIT_FAILED		0x86
#define SECTOR_ERASE_ERROR		0x87
#define FLASH_WRITE_ERROR		0x88
#define ADDRESS_ERROR			0x89
#define INVALID_SECTOR_STATE	0x8A
#define FLASH_ACCESS_ERROR		0x8B

// Flash parameters
#define NVM_DATA_POLL     0x80		// flash status "data poll" bit at DQ7   
#define NVM_DATA_TOGGLE   0x40		// flash status "toggle poll" bit at DQ6
#define NVM_ERROR         0x20 		// flash status "error" bit at DQ5   

// Direction indicators for sector swap
#define F_READ	0x00
#define F_WRITE  0x01

// Miscellaneous definitions
#ifndef TRUE
  #define TRUE 0x01
#endif 
#ifndef FALSE
  #define FALSE 0x00
#endif 

// Data Structures for EEPROM Emulation

struct record_entry
{
	BYTE status;
	BYTE record_data[EEPROM_RECORD_SIZE];	// data record byte
	struct record_entry xdata *last_record_update;	// Pointer to next update. If 0xFFFF, this is the valid record.
};

// The parameter table holds the data record information for the active sector.
// Only one sector can be active at a time.
struct sector_header 	
{
	BYTE sector_status;		// see sector status definitions for usage of this byte
							// this must be the first byte in the sector to facilitate erase checking
	BYTE sector;			// sector number
	BYTE sector_checksum;	// complement of sector - used to verify block is not corrupted
	WORD max_records;		// set by application programmer when calling Init.
	WORD rec_length;		// number of data bytes in each record (set to EEPROM_RECORD_SIZE in Init)
};


// ******** User API Function Prototypes ********//

/***** EEPROM_Format *****/
// Formats sectors 0 and 1 to accept record data
// Accepts maximum number of records allowed.
// Returns 0 on success. If error, returns 1.
// ********** WARNING ********** // 
// This function erases any existing data in both sectors
// ********** WARNING ********** // 
BYTE EEPROM_Format(WORD max_records);

/***** Eeprom_Init *****/
// Polls secondary flash for valid sector status byte and 
// Initializes boot flash sector containing data records after power up.
// Restores any incomplete operations to last known good status.
// Returns 0 on success. If error, returns 1.
BYTE Eeprom_Init(void);

/***** Update_Record *****/
// Update record in EEPROM.
// Accepts record id and new record data.
// Returns 0 on success. If error, returns 1.
// Will swap parameters to new sector when full.
BYTE Update_Record(WORD id, BYTE xdata *buf);

/***** Read_Record_Data *****/
// Reads record data into a buffer.
// Accepts record id number and buffer pointer.
// Returns 0 on success. If error, returns 1.
BYTE Read_Record(WORD id_number, BYTE* buffer);



// ******** Low Level Function Prototypes ********//


// Flash write routines

/***** Write_Record *****/
// Update record in EEPROM.
// Accepts record id and new record data.
// Returns 0 on success. If error, returns 1.
BYTE Write_Record(WORD id, BYTE xdata *buffer);

/***** Boot_Flash_Write *****/
// Writes data to secondary flash.
// Accepts address in flash to write, data byte.
// Returns 0 for successful write. If error, returns 1. 
BYTE Boot_Flash_Write(WORD address, BYTE data_byte);

//Flash read routines

/***** Read_Record_Data_Structure *****/
// Reads an entire record structure from memory.
// Accepts record id number.
// Returns 0 on valid read. If error, returns 1.
WORD Read_Record_Data_Structure(WORD id_number, BYTE* buffer);

/***** Boot_Flash_Read *****/
// Reads data from secondary flash.
// Accepts flash address to read from.
// Returns data. 
BYTE Boot_Flash_Read(WORD address);

// Flash erase routines

/***** Eeprom_Sector_Erase *****/
// Erases one boot flash sector.
// Accepts sector number (0-3).
// Returns 0 for successful erasure. If error, returns 1. 
BYTE Eeprom_Sector_Erase(BYTE sector);

/***** Eeprom_Sector_Erase_Start*****/
// Start Erases one boot flash sector.
// Accepts sector number (0-3).
// Returns 0 for successful erasure. If error, returns 1. 
BYTE Eeprom_Sector_Erase_Start(BYTE sector);

/***** Eeprom_Sector_Erase_Suspend*****/
// Susupend Erases one boot flash sector.
// Accepts sector number (0-3).
// Returns 0 for success. If error, returns 1. 
BYTE Eeprom_Sector_Erase_Suspend(BYTE sector);

/***** Eeprom_Sector_Erase Resume*****/
// Resume Erases one boot flash sector.
// Accepts sector number (0-3).
// Returns 0 for successful erasure. If error, returns 1. 
BYTE Eeprom_Sector_Erase_Resume(BYTE sector);

/***** Eeprom_Sector_Erase_Status *****/
// Gets status of sector erase.
// Accepts sector number (0-3).
// Returns 1 for erase in progress. If OK, returns 0. 
BYTE Eeprom_Sector_Erase_Status(BYTE sector);

// Database management routines

/***** Find_Next_Address *****/
// Finds next available address for data record.
// Returns address. If error, returns error code. 
WORD Find_Next_Address(void);

/***** Find_Active_Sector *****/
// Finds active sector.
// Returns sector number. 
// If error, returns error code. 
BYTE Find_Active_Sector(BYTE io);

/***** Eeprom_Sector_Swap *****/
// Transfers data from full sector to empty one. 
BYTE Eeprom_Sector_Swap(WORD inn, BYTE xdata *buf);

/***** ERASE and FORMAT SECTOR *****/
// Update record in EEPROM.
// Accepts sector id, command, and max record size.
// If error, returns error code.
BYTE E_andF_Sector(BYTE sector, WORD max_rec);

/***** Get_Sector_Status *****/
// Returns sector status.
// If error, returns INVALID_STATUS. 
BYTE Get_Sector_Status(BYTE sector);



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产91久久久久久久久 | 亚洲精品久久嫩草网站秘色| 久久青草国产手机看片福利盒子| 欧美一区二区在线免费观看| 欧美精品乱码久久久久久| 在线欧美小视频| 婷婷国产v国产偷v亚洲高清| 国产欧美日韩在线看| 欧美三级电影在线观看| 国产剧情一区二区| 全国精品久久少妇| 久久99热狠狠色一区二区| 91精品国产综合久久久蜜臀粉嫩 | 国产精品亚洲综合一区在线观看| 日韩精品一区二区三区视频播放| 欧美一级久久久久久久大片| 中文字幕免费一区| 亚洲激情成人在线| 国产亚洲成年网址在线观看| 日本伦理一区二区| 精品亚洲国内自在自线福利| 亚洲免费观看视频| 2023国产精品| 精品免费国产一区二区三区四区| 91在线丨porny丨国产| 国产真实乱对白精彩久久| 亚洲成人手机在线| 国产酒店精品激情| 在线免费观看日韩欧美| 中文字幕日韩一区| 激情都市一区二区| 色综合夜色一区| 欧美精品亚洲一区二区在线播放| 欧美精品自拍偷拍| 国产性天天综合网| 午夜精品一区二区三区免费视频 | 91黄色免费看| 日韩欧美在线一区二区三区| 久久亚洲综合色| 最新久久zyz资源站| 午夜精品福利一区二区三区av| 亚洲一区二区免费视频| 亚洲色图都市小说| 国产精品视频一区二区三区不卡| 337p日本欧洲亚洲大胆色噜噜| 日韩片之四级片| 欧美日韩黄色影视| 日韩精品最新网址| 91麻豆精品国产自产在线观看一区| 日韩视频免费观看高清完整版 | 亚洲人123区| 日韩av在线免费观看不卡| 成人av在线网| 99国产精品久久| 欧美日韩国产成人在线91| 亚洲裸体xxx| 午夜精品福利在线| 免费看黄色91| 99精品国产视频| 精品国产一区二区三区不卡| 亚洲欧美综合另类在线卡通| 久久97超碰色| 欧美日韩的一区二区| 国产精品久久久爽爽爽麻豆色哟哟 | 日日夜夜精品视频天天综合网| 国产成人小视频| 欧美日本在线播放| 国产精品网站导航| 麻豆精品一区二区三区| 91黄色在线观看| 国产精品黄色在线观看| 久久国产精品99久久久久久老狼| 欧美亚洲一区三区| 国产精品乱码久久久久久 | 日韩一区二区三区高清免费看看| 自拍偷拍国产精品| 国产成人在线网站| 欧美v日韩v国产v| 香蕉av福利精品导航| 91在线国产福利| 久久久久久久久岛国免费| 日本欧美肥老太交大片| 在线看国产一区二区| 中文字幕在线观看一区| 国产伦理精品不卡| 精品区一区二区| 三级不卡在线观看| 欧美综合天天夜夜久久| 《视频一区视频二区| 国产成人精品三级| 久久嫩草精品久久久久| 免费观看在线综合| 欧美一区二区三区公司| 日本中文字幕一区二区视频 | ●精品国产综合乱码久久久久| 国产又粗又猛又爽又黄91精品| 日韩一区二区三区在线| 天天综合天天做天天综合| 欧美视频完全免费看| 亚洲成人免费观看| 欧美色手机在线观看| 亚洲午夜久久久久| 欧美日韩大陆一区二区| 亚洲成av人综合在线观看| 欧美男女性生活在线直播观看| 午夜精品久久久久久久久久| 欧美日韩综合在线免费观看| 亚洲午夜免费福利视频| 在线成人免费视频| 日本不卡视频在线| www激情久久| 高清不卡一区二区| 亚洲欧洲性图库| 色综合天天综合狠狠| 一区二区三区精密机械公司| 欧美日韩在线电影| 视频在线在亚洲| 日韩精品中文字幕一区| 韩国女主播成人在线观看| 久久综合久久鬼色中文字| 国产美女一区二区三区| 国产精品欧美一区喷水| av在线不卡免费看| 一区二区三区国产精华| 欧美一区二区三区色| 精品午夜久久福利影院| 久久―日本道色综合久久| proumb性欧美在线观看| 亚洲在线成人精品| 欧美一区二区成人6969| 国产一区二区剧情av在线| 国产精品人妖ts系列视频| 色菇凉天天综合网| 日本最新不卡在线| 亚洲国产高清aⅴ视频| 色综合天天综合在线视频| 日韩激情一二三区| 国产无一区二区| 色婷婷国产精品综合在线观看| 亚洲v中文字幕| 精品国产免费久久| 99精品国产热久久91蜜凸| 青青青爽久久午夜综合久久午夜 | 美女一区二区三区| 中文字幕免费观看一区| 欧美日韩一区二区三区四区| 国产剧情一区在线| 亚洲高清免费视频| 国产日产欧美一区二区视频| 欧美伊人久久久久久久久影院| 麻豆91在线播放免费| 亚洲女同一区二区| 精品乱人伦小说| 一本大道久久精品懂色aⅴ | 日韩一级二级三级| gogo大胆日本视频一区| 青青草一区二区三区| 亚洲欧洲日本在线| 日韩欧美一二三| 色一区在线观看| 国产精品 欧美精品| 亚洲成精国产精品女| 欧美国产欧美综合| 欧美一区二区三区影视| 91视频在线观看免费| 激情文学综合插| 亚洲国产综合视频在线观看| 久久精品这里都是精品| 777色狠狠一区二区三区| 91视频www| 国产激情一区二区三区桃花岛亚洲| 亚洲一区二区三区四区不卡| 国产拍揄自揄精品视频麻豆| 欧美一区二区视频网站| 在线国产亚洲欧美| 成人免费毛片aaaaa**| 老司机免费视频一区二区三区| 亚洲午夜精品一区二区三区他趣| 中文字幕不卡三区| 精品第一国产综合精品aⅴ| 欧洲国产伦久久久久久久| www.久久精品| 成人性视频网站| 国产一区激情在线| 免费观看日韩av| 午夜精品一区二区三区三上悠亚| 亚洲精品少妇30p| 亚洲欧洲美洲综合色网| 亚洲国产精品99久久久久久久久| 精品日韩在线一区| 日韩一二在线观看| 欧美一区2区视频在线观看| 在线国产电影不卡| 91福利社在线观看| 99re热视频精品| 成人h动漫精品| 99在线热播精品免费| 不卡视频一二三| 成人美女视频在线看| 成人免费福利片|