eeprom.c
#include "eeprom.h"
u8 test_bytedata1=0;
u16 test_intdata1=0;
u32 test_worddata1=0;
float test_floatdata1=0.0;
const FLASH_DATA_typedef FLASH_DATA_SAVE __attribute__((at(d_FLASH_DATA_ADDRESS)));
vu16 R_Flash_i;
u8 R_0xA5=0xA5;
u8 R_0xFF=0xFF;
u8 R_0x5A=0x5A;
u8 *const FLASH_Data[]={
&R_0xA5,
&test_bytedata1,
(u8 *)&test_intdata1,
(u8 *)((u8 *)&test_intdata1+1),
(u8 *)&test_worddata1,
(u8 *)((u8 *)&test_worddata1+1),
(u8 *)((u8 *)&test_worddata1+2),
(u8 *)((u8 *)&test_worddata1+3),
(u8 *)&test_floatdata1,
(u8 *)((u8 *)&test_floatdata1+1),
(u8 *)((u8 *)&test_floatdata1+2),
(u8 *)((u8 *)&test_floatdata1+3),
&R_0x5A,
&R_0x5A,
&R_0x5A,
&R_0x5A,
};
void Erase_Flash_Page(u32 FLASH_DATA_ADDRESS)
{
FLASH_Unlock();
if(FLASH_EOP != FLASH_One_Page_Erase(FLASH_DATA_ADDRESS))
while(1);
FLASH_Lock();
}
void EEPROMData_Check(void)
{
u8 i=0,j=0;
u8 data_error=0;
if((test_bytedata1<10)||(test_bytedata1>250))
data_error=1;
if((test_intdata1<10)||(test_intdata1>250))
data_error=1;
if((test_worddata1<10)||(test_worddata1>250))
data_error=1;
if(data_error)
{
Erase_Flash_Page(d_FLASH_DATA_ADDRESS);
R_Flash_i=0;
test_bytedata1=10;
test_intdata1=11;
test_worddata1=12;
FLASH_Unlock();
for(i=0;i<d_FLASH_Data_maxWord;i++)
{
j=i*4;
FLASH_Word_Prog