// 注意寫入地址空間的范圍以及最大值
// 想向eeprom中寫入數(shù)據(jù),必須先解鎖eeprom空間
// 讀取數(shù)據(jù)時不需要解鎖,直接讀取即可
// 解鎖函數(shù)
void EEPROM_UnLock(void)
{
while(!FLASH_IAPSR_DUL) // 解鎖成功標志
{
// 數(shù)據(jù)手冊上是讓先寫 0x56, 0xae ,
// 但事實密鑰順序是按照這個 0xae , 0x56,
FLASH_DUKR = 0xAE;
FLASH_DUKR = 0x56;
}
}
// 上鎖函數(shù) -- 只是不能再向其中寫入數(shù)據(jù),讀取數(shù)據(jù)可以在任何狀態(tài)下讀取
void EEPROM_Lock(void)
{
FLASH_IAPSR &= ~MASK_FLASH_IAPSR_DUL;
}
// 向指定地址寫入數(shù)據(jù)
// address_temp -- 寫入到第幾號地址空間
// data_temp -- 數(shù)據(jù)內(nèi)容
void EEPROM_Write_Address_Dat(unsigned int address_temp,unsigned char data_temp)
{
*(unsigned char *)(0x4000 + address_temp) = data_temp;
}
// 讀指定地址的數(shù)據(jù)
// address_temp -- 讀取的第幾號地址空間
// 返回值就是讀取數(shù)值
unsigned char EEPROM_Read_Address_Dat(unsigned int address_temp)
{
unsigned char data_temp = 0;
data_temp = *(unsigned char *)(0x4000 + address_temp);
return data_temp;
}